aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader <[email protected]>2005-03-30 08:14:32 +0000
committerMiles Bader <[email protected]>2005-03-30 08:14:32 +0000
commit10ace8ea53395cc0ca656080cc3e828febc39b34 (patch)
tree76c630eeaaeb80f46baa34c8af29ff0b41abfd4b
parent96a29ab7a8e391db9078d1ffc0c76faffb470a1b (diff)
Revision: [email protected]/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 <[email protected]> * etc/gnus-refcard.tex, etc/gnus-logo.eps: New files. 2005-03-25 Katsumi Yamaoka <[email protected]> * 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 <[email protected]>; 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 <[email protected]>; 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 <[email protected]> * 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 <[email protected]> * lisp/gnus/rfc2047.el (rfc2047-encoded-word-regexp): Support RFC 2231 language tags; remove unnecessary '+'. Reported by Stefan Wiens <[email protected]>. (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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * man/emacs-mime.texi (Display Customization): Markup fixes. (rfc2047): Update. 2005-03-23 Reiner Steib <[email protected]> * 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 5632e1aaf1..4272d50cf2 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,7 @@
+2005-03-29 Reiner Steib <[email protected]>
+
+ * gnus-refcard.tex, gnus-logo.eps: New files.
+
2005-03-23 David Ponce <[email protected]>
* NEWS: Mention recentf-keep.
diff --git a/etc/gnus-logo.eps b/etc/gnus-logo.eps
new file mode 100644
index 0000000000..95408ba9af
--- /dev/null
+++ b/etc/gnus-logo.eps
@@ -0,0 +1,1055 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: gnuslogo1.ps
+%%Creator: XV Version 3.00 Rev: 3/30/93 - by John Bradley
+%%BoundingBox: 0 0 493 505
+%%Pages: 1
+%%DocumentFonts:
+%%EndComments
+%%EndProlog
+
+%%Page: 1 1
+
+% remember original state
+/origstate save def
+
+% build a temporary dictionary
+20 dict begin
+
+% define string to hold a scanline's worth of data
+/pix 62 string def
+
+% lower left corner
+0 0 translate
+
+% size of image (on paper, in 1/72inch coords)
+493.0 505.0 scale
+
+% dimensions of data
+493 505 1
+
+% mapping matrix
+[493 0 0 -505 0 505]
+
+{currentfile pix readhexstring pop}
+image
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff01fffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff8003ffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff0000ffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff8000007ffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff0000003ffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffe0000000ffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff000000003fff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff000000000fff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffc0000000007ff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff80000000003ff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff00000000001ff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffe00000000000ff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffc00000000000ff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff8000000000007f8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff0000000000003f8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffff0000000000003f8
+fffffffffffffffffffffffffff800ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffe0000000000001f8
+fffffffffffffffffffffffffff0001fffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffc0000000000000f8
+ffffffffffffffffffffffffffc00007ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffc0000000000000f8
+ffffffffffffffffffffffffff000001ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff8000000000000078
+fffffffffffffffffffffffffe0000003ffffffffffff0001fffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff0000000000000038
+fffffffffffffffffffffffffc0000001fffffffffffe00007ffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffe0000000000000038
+fffffffffffffffffffffffff800000007ffffffffff800001ffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffe0000000000000038
+fffffffffffffffffffffffff000000003fffffffffe0000003fffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffc0000000000000018
+ffffffffffffffffffffffffe000000001fffffffff80000000fffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffc0000000000000018
+ffffffffffffffffffffffffc000000000ffffffffe000000003ffffffffffffffffffff
+fffffffffffffffffffffffffffffffffff80000000000000018
+ffffffffffffffffffffffff80000000007fffffff8000000000ffffffffffffffffffff
+fffffffffffffffffffffffffffffffffff80000000000000008
+ffffffffffffffffffffffff00000000003fffffff00000000007fffffffffffffffffff
+fffffffffffffffffffffffffffffffffff00000000000000008
+fffffffffffffffffffffffe00000000001ffffffe00000000001fffffffffffffffffff
+fffffffffffffffffffffffffffffffffff00000000000000008
+fffffffffffffffffffffffc00000000000ffffff8000000000007ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffe00000000000000008
+fffffffffffffffffffffff8000000000007fffff0000000000007ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffe00000000000000008
+fffffffffffffffffffffff0000000000001ffffe0000000000000ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc00000000000000000
+ffffffffffffffffffffffe0000000000000ffffc00000000000007fffffffffffffffff
+ffffffffffffffffffffffffffffffffffc00000000000000000
+ffffffffffffffffffffffc00000000000007fff800000000000001fffffffffffffffff
+ffffffffffffffffffffffffffffffffff800000000000000000
+ffffffffffffffffffffff800000000000003fff000000000000000fffffffffffffffff
+ffffffffffffffffffffffffffffffffff800000000000000000
+ffffffffffffffffffffff000000000000003fff0000000000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffff000040000000000000
+fffffffffffffffffffffe000000000000000ffe0000000000000001ffffffffffffffff
+ffffffffffffffffffffffffffffffffff0007ffc00000000000
+fffffffffffffffffffffc000000000000000ffc0000000000000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffe001ffffc0000000000
+fffffffffffffffffffffc0000000000000007fc00000000000000007fffffffffffffff
+fffffffffffffffffffffffffffffffffc003ffffe0000000000
+fffffffffffffffffffff80000000000000007f800000000000000003fffffffffffffff
+fffffffffffffffffffffffffffffffffc007fffffc000000000
+fffffffffffffffffffff00000000000000001f000000000000000001fffffffffffffff
+fffffffffffffffffffffffffffffffff800fffffff000000000
+ffffffffffffffffffffe00000000000000001f000000000000000000fffffffffffffff
+fffffffffffffffffffffffffffffffff801fffffff800000000
+ffffffffffffffffffffc00000000000000000e0000000000000000007ffffffffffffff
+fffffffffffffffffffffffffffffffff003ffffffff00000000
+ffffffffffffffffffff800000000000000000c0000000000000000003ffffffffffffff
+fffffffffffffffffffffffffffffffff007ffffffff00000000
+ffffffffffffffffffff00000000000000000000000000000000000000ffffffffffffff
+ffffffffffffffffffffffffffffffffe00fffffffff80000000
+fffffffffffffffffffe00000000000000000000000000000000000000ffffffffffffff
+ffffffffffffffffffffffffffffffffe01fffffffffc0000008
+fffffffffffffffffffc000000000000000000000000000000000000007fffffffffffff
+ffffffffffffffffffffffffffffffffc03fffffffffc0000008
+fffffffffffffffffff8000000000000000000000000000000000000001fffffffffffff
+ffffffffffffffffffffffffffffffffc07ffffffffff0000000
+fff9fffffffffffffff800000fe00000000000000000000000000000001fffffffffffff
+ffffffffffffffffffffffffffffffff807ffffffffff0000000
+fff9fffffffffffffff000001ff80000000000000000000000000000000fffffffffffff
+ffffffffffffffffffffffffffffffff80fffffffffff0000008
+fff0ffffffffffffffc000007ffc00000000000000000000000000000007ffffffffffff
+ffffffffffffffffffffffffffffffff81fffffffffff8000008
+fff0ffffffffffffffc00000fffc00000000000000000000000000000003ffffffffffff
+ffffffffffffffffffffffffffffffff01fffffffffff8000008
+ffe07fffffffffffff800001ffff00000000000000000000000000000001ffffffffffff
+ffffffffffffffffffffffffffffffff03fffffffffffc000008
+ffe07fffffffffffff00000fffffc0000000000000000000000000000000ffffffffffff
+fffffffffffffffffffffffffffffffe03fffffffffffc000008
+ffe03ffffffffffffc00001fffffe00000000000000000000000000000007fffffffffff
+fffffffffffffffffffffffffffffffe07fffffffffffe000008
+ffe03ffffffffffff800003ffffff00000000000000000000000000000003fffffffffff
+fffffffffffffffffffffffffffffffe07fffffffffffe000008
+ffc03ffffffffffff000007ffffff80000000000000f80000000000000003fffffffffff
+fffffffffffffffffffffffffffffffe0ffffffffffffe000008
+ffc01fffffffffffe00001fffffffe000000000000fffe000000000000001fffffffffff
+fffffffffffffffffffffffffffffffc0ffffffffffffe000008
+ffc00fffffffffffc00003ffffffff000000000001ffff800000000000000fffffffffff
+fffffffffffffffffffffffffffffffc1fffffffffffff000008
+ff800fffffffffff800003ffffffff800000000007ffffc000000000000007ffffffffff
+fffffffffffffffffffffffffffffffc3fffffffffffff000008
+ff8007fffffffffe00000fffffffffc0000000001ffffffc00000000000003ffffffffff
+fffffffffffffffffffffffffffffff87fffffffffffff000008
+ff8007fffffffffc00000fffffffffe0000000005ffffffe00000000000001ffffffffff
+fffffffffffffffffffffffffffffff87fffffffffffff000008
+ff8003fffffffff800001ffffffffff000000000ffffffffc0000000000000ffffffffff
+fffffffffffffffffffffffffffffff87fffffffffffff000008
+ff0001fffffffff000003ffffffffffc00000007fffffffff80000000000007fffffffff
+fffffffffffffffffffffffffffffff8ffffffffffffff000008
+ff0000ffffffffe000003ffffffffffc0000000ffffffffffc0000000000007fffffffff
+fffffffffffffffffffffffffffffffcffffffffffffff000008
+fe00007fffffff800000ffffffffffff0000001ffffffffffe0000000000001fffffffff
+ffffffffffffffffffffffffffffe7fdffffffffffffff000008
+fe00007fffffff000001ffffffffffff8000003fffffffffff0000000000001fffffffff
+ffffffffffffffffffffffffffffe7fdffffffffffffff000008
+fc00001ffffffc000003ffffffffffffc000007fffffffffffe0000000000007ffffffff
+ffffffffffffffffffffffffffffc7ffffffffffffffff000008
+fc00001ffffff0000003ffffffffffffe00000fffffffffffff0000000000007ffffffff
+fffffffffeffffffffffffffffff87ffffffffffffffff000008
+f800000fffffe0000007fffffffffffff00000fffffffffffff8000000000003ffffffff
+fffffffffcffffffffffffffffff87ffffffffffffffff000008
+f8000003ffff0000000ffffffffffffff80001fffffffffffffc000000000001ffffffff
+fffffffff8ffffffffffffffffff07ffffffffffffffff000008
+f8000001fffe0000001ffffffffffffff80001ffffffffffffff000000000000ffffffff
+fffffffff8fffffffffffffffffe0fffffffffffffffff000008
+f0000000fff00000003ffffffffffffffc0001ffffffffffffff8000000000007fffffff
+fffffffff0fffffffffffffffffe0fffffffffffffffff000018
+e00000001a000000007ffffffffffffffe0003ffffffffffffffc000000000003fffffff
+fffffffff0fffffffffffffffffc0fffffffffffffffff000018
+e000000000000000007fffffffffffffff0003ffffffffffffffc000000000003fffffff
+ffffffffe0fffffffffffffffffc1fffffffffffffffff000018
+c00000000000000000ffffffffffffffff0007ffffffffffffffe000000000001fffffff
+ffffffffe0fffffffffffffffff81fffffffffffffffff000018
+c00000000000000001ffffffffffffffff0007fffffffffffffff0000000000007ffffff
+ffffffffc0fffffffffffffffff83fffffffffffffffff000018
+800000000000000007ffffffffffffffff800ffffffffffffffffc000000000003ffffff
+ffffffff01fffffffffffffffff03fffffffffffffffff000038
+800000000000000007ffffffffffffffff800ffffffffffffffffe000000000001ffffff
+ffffffff01fffffffffffffffff03fffffffffffffffff800038
+00000000000000000fffffffffffffffffc00fffffffffffffffff000000000000ffffff
+fffffffe03ffffffffffffffffe07fffffffffffffffff800038
+00000000000000001fffffffffffffffffc01fffffffffffffffff8000000000007fffff
+fffffffc03ffffffffffffffffe07fffffffffffffffff800038
+00000000000000003fffffffffffffffffe03fffffffffffffffffc000000000003fffff
+fffffff803ffffffffffffffffc07fffffffffffffffff800038
+00000000000000007ffffffffffffffffff03fffffffffffffffffe000000000000fffff
+fffffff007ffffffffffffffffc0ffffffffffffffffff800038
+0000000000000000fffffffffffffffffff07ffffffffffffffffff000000000000fffff
+fffffff007ffffffffffffffff80ffffffffffffffffff800078
+0000000000000003ffffffffffffffff8ff87ffffffffffffffffff8000000000001ffff
+ffffffc00fffffffffffffffff81ffffffffffffffffff800078
+8000000000000007ffffffffffffffff0ff8fffffffffffffffffffc000000000000ffff
+ffffffc00fffffffffffffffff01ffffffffffffffffff8000f8
+8000000000000007fffffffffffffffe0ffffffffffffffffffffffe0000000000007fff
+ffffff801fffffffffffffffff03ffffffffffffffffff8000f8
+c00000000000001ffffffffffffffffc0fffffffffffffffffffffff0000000000001fff
+fffffe001ffffffffffffffffe07ffffffffffffffffff8000f8
+e00000000000007ffffffffffffffff83fffffffffffffffffffffffc0000000000007ff
+fffff8003ffffffffffffffffc07ffffffffffffffffff8000f8
+f00000000000007ffffffffffffffff03fffffffffffffffffffffffc0000000000001ff
+fffff0003ffffffffffffffff80fffffffffffffffffff8000f8
+f0000000000000fffffffffffffffff07fffffffffffffffffffffffe0000000000000ff
+ffffe0003ffffffffffffffff00fffffffffffffffffff8001f8
+f8000000000003ffffffffffffffffe07ffffffffffffffffffffffff00000000000000f
+ffff00007fffffffffffffffe01fffffffffffffffffff0001f8
+fc000000000007ffffffffffffffffc07ffffffffffffffffffffffff800000000000007
+fffc00007fffffffffffffffc01fffffffffffffffffff0001f8
+fc000000000007ffffffffffffffffc0fffffffffffffffffffffffff800000000000000
+ffe000007ffffbffffffffff801fffffffffffffffffff0001f8
+fe00000000001fffffffffffffffff03fffffffffffffffffffffffffe00000000000000
+00000000fffff3ffffffffff003fffffffffffffffffff0001f8
+fe00000000003fffffffffffffffff03ffffffffffffffffffffffffff00000000000000
+00000001fffff1fffffffffe003fffffffffffffffffff0003f8
+ff00000000007ffffffffffffffffe03ffffffffffffffffffffffffff00000000000000
+00000001ffffe1fffffffffc007fffffffffffffffffff0003f8
+ff8000000001fffffffffffffffffc07ffffffffffffffffffffffffff80000000000000
+00000003ffffe0fffffffff0007fffffffffffffffffff0003f8
+ffc000000003fffffffffffffffffc0fffffffffffffffffffffffffffc0000000000000
+00000003ffffc0ffffffffe0007fffffffffffffffffff0003f8
+ffe00000000ffffffffffffffffff81fffffffffffffffffffffffffffe0000000000000
+00000007ffffc07fffffff8000ffffffffffffffffffff0003f8
+fff00000003ffffffffffffffffff01ffffffffffffffffffffffffffff0000000000000
+00000007ffff803fffffff0000fffffffffffffffffffe0007f8
+fff8000000ffffffffffffffffffe03ffffffffffffffffffffffffffff8000000000000
+00000007ffff801ffffffc0001fffffffffffffffffffe0007f8
+fffc000001ffffffffffffffffffe07ffffffffffffffffffffffffffffc000000000000
+0000000fffff000ffffff80003fffffffffffffffffffe0007f8
+fffe00000fffffffffffffffffffc07ffffffffffffffffffffffffffffc000000000000
+0000000fffff0007ffffe00003fffffffffffffffffffe0007f8
+ffff80007fffffffffffffffffff80fffffffffffffffffffffffffffffe000000000000
+0000001ffffe0001ffff800007fffffffffffffffffffe000ff8
+ffffe007ffffffffffffffffffff80ffffffffffffffffffffffffffffff000000000000
+0000001ffffe0000fffc000007fffffffffffffffffffe000ff8
+ffffffffffffffffffffffffffff01ffffffffffffffffffffffffffffff800000000000
+0000003ffffe0000000000000ffffffffffffffffffffe000ff8
+fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffc00000000000
+0000003ffffc0000000000000ffffffffffffffffffffe000ff8
+fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffe00000000000
+0000007ffff80000000000001ffffffffffffffffffffe001ff8
+fffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffff00000000000
+0000007ffff80000000000001ffffffffffffffffffffe001ff8
+fffffffffffffffffffffffffff807fffffffffffffffffffffffffffffff80000000000
+000000fffff80000000000003ffffffffffffffffffffc001ff8
+fffffffffffffffffffffffffff80ffffffffffffffffffffffffffffffffc0000000000
+000003fffff00000000000007ffffffffffffffffffffc001ff8
+fffffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffe0000000000
+000007ffffe00000000000007ffffffffffffffffffffe003ff8
+fffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffff0000000000
+000007ffffe0000000000000fffffffffffffffffffffc003ff8
+ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffff8000000000
+00001fffffc0000000000001fffffffffffffffffffffc003ff8
+ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffffe000000000
+00001fffffc0000000000003fffffffffffffffffffffc003ff8
+ffffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffff000000000
+00003fffff80000000000003fffffffffffffffffffffc007ff8
+ffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffffff800000000
+00007fffff80000000000007fffffffffffffffffffffc007ff8
+ffffffffffffffffffffffffff03fffffffffffffffffffffffffffffffffffc00000000
+0000ffffff0000000000000ffffffffffffffffffffffc007ff8
+fffffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffc00000000
+0001ffffff0000000000001ffffffffffffffffffffffc007ff8
+fffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffff00000000
+0003fffffe0000000000001ffffffffffffffffffffff800fff8
+fffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffff80000000
+0007fffffe0000000000003ffffffffffffffffffffff800fff8
+fffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffff0000000
+001ffffffc0000000000007ffffffffffffffffffffff800fff8
+fffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffff8000000
+003ffffffc000000000000fffffffffffffffffffffff800fff8
+ffffffffffffffffffffffffe07ffffffffffffffffffffffffffffffffffffffe000000
+00fffffff8000000000003fffffffffffffffffffffff001fff8
+ffffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffff800000
+03fffffff8000000000003fffffffffffffffffffffff001fff8
+ffffffffffffffffffffffffc0ffffffffffffffffffffffffffffffffffffffffc00000
+07fffffff0000000000007fffffffffffffffffffffff001fff8
+ffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffc0000
+3ffffffff000000000000ffffffffffffffffffffffff003fff8
+ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffe03f
+fffffffff000000000003ffffffffffffffffffffffff003fff8
+ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffff800000000007ffffffffffffffffffffffff003fff8
+fffffffffffffffffffffffe03ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffff80000000000ffffffffffffffffffffffffe003fff8
+fffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffc0000000003ffffffffffffffffffffffffe007fff8
+fffffffffffffffffffffffc0fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffe0000000007ffffffffffffffffffffffffe007fff8
+fffffffffffffffffffffff81fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffe000000000fffffffffffffffffffffffffe00ffff8
+fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff000000001fffffffffffffffffffffffffe00ffff8
+ffffffffffffffffffffffe03ffffffffffffffffffffffffbffffffffffffffffffffff
+ffffffffff800000007fffffffffffffffffffffffffc00ffff8
+ffffffffffffffffffffffe07ffffffffffffffffffdfffff1ffffffffffffffffffffff
+ffffffffffc0000000ffffffffffffffffffffffffffc00ffff8
+ffffffffffffffffffffffe07ffffffffffffffffff9fffff07fffffffffffffffffffff
+ffffffffffe0000001ffffffffffffffffffffffffffc00ffff8
+ffffffffffffffffffffffc0ffffffffffffffffffe3ffffe03fffffffffffffffffffff
+fffffffffff800001fffffffffffffffffffffffffffc01ffff8
+ffffffffffffffffffffff81ffffffffffffffffffc7ffffc00fffffffffffffffffffff
+fffffffffffe00007fffffffffffffffffffffffffffc01ffff8
+ffffffffffffffffffffff81ffffffffffffffffff87ffffc007ffffffffffffffffffff
+ffffffffffff8003ffffffffffffffffffffffffffff801ffff8
+ffffffffffffffffffffff03ffffffffffffffffff0fffff8007ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff803ffff8
+fffffffffffffffffffffe07fffffffffffffffffe0fffff8001ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff803ffff8
+fffffffffffffffffffffe07fffffffffffffffffc1fffff0000ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff803ffff8
+fffffffffffffffffffffc0ffffffffffffffffff83ffffe00007fffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff007ffff8
+fffffffffffffffffffff81fffffffffffffffffe03ffffe00007fffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff007ffff8
+fffffffffffffffffffff83fffffffffffffffffc07ffffc00003fffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff007ffff8
+fffffffffffffffffffff03fffffffffffffffff80fffff800001fffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffe00fffff8
+ffffffffffffffffffffe07fffffffffffffffff00fffff800000fffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffe00fffff8
+ffffffffffffffffffffe0fffffffffffffffffe01fffff0000007ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffe00fffff8
+ffffffffffffffffffffc0fffffffffffffffffc01ffffe0000003ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffe00fffff8
+ffffffffffffffffffff81fffffffffffffffff803ffffe0000003ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffe01fffff8
+ffffffffffffffffffff81ffffffffffffffffe007ffffc0000003ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffc01fffff8
+ffffffffffffffffffff83ffffffffffffffffe007ffffc0000001ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffc01fffff8
+ffffffffffffffffffff07ffffffffffffffff800fffff80000000ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffc01fffff8
+fffffffffffffffffffe07ffffffffffffffff800fffff00000000ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffc03fffff8
+fffffffffffffffffffc0ffffffffffffffffe001fffff00000000ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff803fffff8
+fffffffffffffffffffc0ffffffffffffffffc003ffffe000000007fffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff803fffff8
+fffffffffffffffffff81ffffffffffffffff0003ffffc000000007fffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff007fffff8
+fffffffffffffffffff01fffffffffffffffe0007ffffc000000003fffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff007fffff8
+fffffffffffffffffff03fffffffffffffffe000fffff8000000001fffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffff007fffff8
+ffffffffffffffffffe07fffffffffffffff8000fffff0000000001fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
+ffffffffffffffffffc07fffffffffffffff0001fffff0000000001fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
+ffffffffffffffffffc0fffffffffffffffe0001ffffe0000000000fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
+ffffffffffffffffff80fffffffffffffff80003ffffe0000000000fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffe01ffffff8
+ffffffffffffffffff81fffffffffffffff00007ffffc0000000000fffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffc01ffffff8
+ffffffffffffffffff81ffffffffffffffe00007ffffc00000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffc01ffffff8
+ffffffffffffffffff03ffffffffffffffc0000fffffc00000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffc03ffffff8
+fffffffffffffffffe03ffffffffffffff00000fffffe00000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff803ffffff8
+fffffffffffffffffc07fffffffffffffe00001ffffff00000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff803ffffff8
+fffffffffffffffffc07fffffffffffffc00007ffffffc0000000007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff807ffffff8
+fffffffffffffffff807fffffffffffff00001fffffffe0000000003ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff807ffffff8
+fffffffffffffffff807ffffffffffffe00003ffffffff0000000003ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff007ffffff8
+fffffffffffffffff00fffffffffffff800007ffffffff8000000003ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00fffffff8
+fffffffffffffffff00fffffffffffff00000fffffffffc000000001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00fffffff8
+ffffffffffffffffe00ffffffffffffc00003fffffffffe000000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe01fffffff8
+ffffffffffffffffe00ffffffffffff800007ffffffffff000000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe01fffffff8
+ffffffffffffffffc00ffffffffffff00000fffffffffff800000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe01fffffff8
+ffffffffffffffff800fffffffffffc00001fffffffffffc00000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe03fffffff8
+ffffffffffffffff800fffffffffff000007fffffffffffe00000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffe03fffffff8
+ffffffffffffffff001ffffffffffe00000fffffffffffff00000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffc07fffffff8
+ffffffffffffffff001ffffffffffc00001fffffffffffff80000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffc07fffffff8
+fffffffffffffffe000fffffffffe000003fffffffffffff80000001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff807fffffff8
+fffffffffffffffe000fffffffffc000007fffffffffffffc0000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff807fffffff8
+fffffffffffffffc000fffffffff800000ffffffffffffffe0000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff80ffffffff8
+fffffffffffffffc0007fffffffe000001fffffffffffffff0000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff80ffffffff8
+fffffffffffffffc0003fffffffc000003fffffffffffffff0000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff01ffffffff8
+fffffffffffffff80001fffffff8000007fffffffffffffff8000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff01ffffffff8
+fffffffffffffff80000ffffffc000001ffffffffffffffff8000000ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffff01ffffffff8
+fffffffffffffff800003fffff0000003ffffffffffffffffc000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffe01ffffffff8
+fffffffffffffff000000000000000007ffffffffffffffffc000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffe03ffffffff8
+ffffffffffffffe00000000000000000fffffffffffffffffe000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffe03ffffffff8
+ffffffffffffffe00000000000000001fffffffffffffffffe000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
+ffffffffffffffc00000000000000003fffffffffffffffffe000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
+ffffffffffffffc00000000000000007ffffffffffffffffff000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
+ffffffffffffffc0000000000000000fffffffffffffffffff000000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffc0fffffffff8
+ffffffffffffff80000000000000003fffffffffffffffffff800000ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffc0fffffffff8
+ffffffffffffff80000000000000007fffffffffffffffffff800001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff80fffffffff8
+ffffffffffffff8000000000000001ffffffffffffffffffff800001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff81fffffffff8
+ffffffffffffff8000000000000001ffffffffffffffffffffc00001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff81fffffffff8
+ffffffffffffff8000000000000003ffffffffffffffffffffe00001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff01fffffffff8
+ffffffffffffff000000000000000fffffffffffffffffffffe00001ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff03fffffffff8
+ffffffffffffff000000000000001ffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffe03fffffffff8
+fffffffffffffe000000000000003ffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffe03fffffffff8
+fffffffffffffe000000000000007ffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffe03fffffffff8
+fffffffffffffc00000000000001fffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffe07fffffffff8
+fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffc07fffffffff8
+fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffc07fffffffff8
+fffffffffffffc0000000000003ffffffffffffffffffffffff80003ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffc0ffffffffff8
+fffffffffffffc0000000000007ffffffffffffffffffffffff80003ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffc0ffffffffff8
+fffffffffffffc000000000000fffffffffffffffffffffffff80003ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff80ffffffffff8
+fffffffffffffc000000000003fffffffffffffffffffffffff80003ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff80ffffffffff8
+fffffffffffffc000000000007fffffffffffffffffffffffff80003ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff00ffffffffff8
+fffffffffffffc00000000001ffffffffffffffffffffffffff80007ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff01ffffffffff8
+fffffffffffffe00000000001ffffffffffffffffffffffffff80007ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffff01ffffffffff8
+fffffffffffffe0000000000fffffffffffffffffffffffffff80007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffe01ffffffffff8
+ffffffffffffff0000000001fffffffffffffffffffffffffff80007ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffe03ffffffffff8
+ffffffffffffff000000000ffffffffffffffffffffffffffff80007ffffffffffffffff
+fffffffffffffffffffdffffffffffffffffffe03ffffffffff8
+ffffffffffffff800000003ffffffffffffffffffffffffffff80007ffffffffffffffff
+fffffffffffffffffff9ffffffffffffffffffc03ffffffffff8
+ffffffffffffffe0000001fffffffffffffffffffffffffffff80007ffffffffffffffff
+fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
+fffffffffffffff0000001fffffffffffffffffffffffffffff8000fffffffffffffffff
+fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
+fffffffffffffff800000ffffffffffffffffffffffffffffffc000fffffffffffffffff
+fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
+fffffffffffffffe0003fffffffffffffffffffffffffffffffc000fffffffffffffffff
+ffffffffffffffffffe1ffffffffffffffffff807ffffffffff8
+ffffffffffffffff4007fffffffffffffffffffffffffffffffc001fffffffffffffffff
+ffffffffffffffffffc1ffffffffffffffffff00fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
+ffffffffffffffffff83ffffffffffffffffff00fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
+ffffffffffffffffff83ffffffffffffffffff00fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
+ffffffffffffffffff03ffffffffffffffffff00fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
+ffffffffffffffffff03ffffffffffffffffff01fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
+ffffffffffffffffff07ffffffffffffffffff01fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
+fffffffffffffffffe07fffffffffffffffffe01fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
+fffffffffffffffffc07fffffffffffffffffe03fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff
+fffffffffffffffffc07fffffffffffffffffc03fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff
+fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff
+fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff
+fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff
+fffffffffffffffff03ffffffffffffffffff807fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff
+ffffffffffffffffe01ffffffffffffffffff807fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff
+ffffffffffffffffe03ffffffffffffffffff807fffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff
+ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff
+ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff
+ffffffffffffffff80fffffffffffffffffff00ffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffffffff
+ffffffffffffffff80fffffffffffffffffff00ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff
+ffffffffffffffff00ffffffffffffffffffe01ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff
+fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff
+fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff
+fffffffffffffffc01ffffffffffffffffffc01ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffffffffff
+fffffffffffffffc03ffffffffffffffffffc01ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffff
+fffffffffffffffc03ffffffffffffffffffc03ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff
+fffffffffffffff807ffffffffffffffffffc03ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffff807ffffffffffffffffff803ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffff00fffffffffffffffffff803ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffff00fffffffffffffffffff807ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffe01fffffffffffffffffff807ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffe03fffffffffffffffffff807ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc03fffffffffffffffffff807ffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff807fffffffffffffffffff00fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff807fffffffffffffffffff00fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00ffffffffffffffffffff00fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00fffffffffffffffffffe00fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffe01fffffffffffffffffffe01fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffe03fffffffffffffffffffe01fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffc03fffffffffffffffffffc01fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffc07fffffffffffffffffffc01fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff807fffffffffffffffffffc03fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff00ffffffffffffffffffffc03fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffff00ffffffffffffffffffff803fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffe01ffffffffffffffffffff803fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffe01ffffffffffffffffffff803fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffc03ffffffffffffffffffff807fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffc03ffffffffffffffffffff007fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff807ffffffffffffffffffff007fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff807ffffffffffffffffffff007fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00fffffffffffffffffffff007fffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffe00ffffffffffffffffffffe00ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffe01ffffffffffffffffffffe00ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffff
+fffffffffffc01ffffffffffffffffffffe00ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff
+fffffffffffc03ffffffffffffffffffffe00ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff
+fffffffffff803ffffffffffffffffffffc00ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffffffffff
+fffffffffff807ffffffffffffffffffffc00ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1fffffffffffff
+fffffffffff00fffffffffffffffffffffc01ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3fffffffffffff
+fffffffffff00fffffffffffffffffffffc01ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffff83fffffffffffff
+ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
+ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
+ffffffffff801fffffffffffffffffffff801ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
+ffffffffff803fffffffffffffffffffff801ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffff
+ffffffffff003fffffffffffffffffffff803ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ffffffffffffff
+fffffffffe007fffffffffffffffffffff803ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1ffffffffffffff
+fffffffffc007fffffffffffffffffffff003ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff81ffffffffffffff
+fffffffffc00ffffffffffffffffffffff003ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff
+fffffffff800ffffffffffffffffffffff003ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff
+fffffffff801ffffffffffffffffffffff003ffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffff
+fffffffff803ffffffffffffffffffffff007ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffff
+fffffffff003fffffffffffffffffffffe007ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffc07ffffffffffffff
+ffffffffe007fffffffffffffffffffffe007ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff807ffffffffffffff
+ffffffffc007fffffffffffffffffffffe007ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff007ffffffffffffff
+ffffffffc007fffffffffffffffffffffe007ffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff
+ffffffff800ffffffffffffffffffffffe00fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff
+ffffffff000ffffffffffffffffffffffe00fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffe00fffffffffffffff
+fffffffe001ffffffffffffffffffffffe00fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff
+fffffffc003ffffffffffffffffffffffe00fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff
+9ffffffc003ffffffffffffffffffffffe00fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff803fffffffffffffff
+0ffffff8003ffffffffffffffffffffffc01fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe
+07fffff0007ffffffffffffffffffffffc01fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe
+07ffffe000fffffffffffffffffffffffc01fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff8
+03ffffc000fffffffffffffffffffffffc01fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff0
+03ffff8001fffffffffffffffffffffff801fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffffc007ffffffffffffff0
+01ffff0003fffffffffffffffffffffff803fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0
+00fffe0003fffffffffffffffffffffff803fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0
+00fffe0003fffffffffffffffffffffff803fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffff001ffffffffffffffc0
+003ffc0007fffffffffffffffffffffff003fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff80
+001fe0001ffffffffffffffffffffffff003fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff00
+000fc0001ffffffffffffffffffffffff007fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe00
+000000001ffffffffffffffffffffffff007fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff8007fffffffffffffe00
+000000003ffffffffffffffffffffffff007fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffc00
+000000003ffffffffffffffffffffffff007fffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffff800
+000000007fffffffffffffffffffffffe007fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff800
+000000007fffffffffffffffffffffffe007fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff000
+00000001ffffffffffffffffffffffffe007fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff000
+00000001ffffffffffffffffffffffffe007fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe000
+00000001ffffffffffffffffffffffffe007fffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffc000
+00000003ffffffffffffffffffffffffc00ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffc000
+00000003ffffffffffffffffffffffffc00ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff8000
+00000007ffffffffffffffffffffffffc00ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff0000
+0000000fffffffffffffffffffffffffc01ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff0000
+0000001fffffffffffffffffffffffffc01ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffff8003fffffffffffffe0000
+0000001fffffffffffffffffffffffffc01ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffe0000
+0000003fffffffffffffffffffffffffc01ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffc0000
+0000007fffffffffffffffffffffffff801ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff80000
+0000007fffffffffffffffffffffffff801ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff80000
+000000ffffffffffffffffffffffffff801ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff00000
+000001ffffffffffffffffffffffffff801ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000
+000001ffffffffffffffffffffffffff801ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000
+000003ffffffffffffffffffffffffff801ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe00000
+000003ffffffffffffffffffffffffff801ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffe00000
+000007ffffffffffffffffffffffffff803ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffc00000
+00000fffffffffffffffffffffffffff003ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff800000
+00000fffffffffffffffffffffffffff803ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff800000
+00001fffffffffffffffffffffffffff803ffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffff0007ffffffffffffff000200
+00003fffffffffffffffffffffffffff007ffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe000700
+00007fffffffffffffffffffffffffff00fffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe001f80
+0000ffffffffffffffffffffffffffff00fffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe001f80
+0001ffffffffffffffffffffffffffff00fffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffc003fc0
+0001ffffffffffffffffffffffffffff00fffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffff8007fe0
+0003ffffffffffffffffffffffffffff01fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff0007fe0
+0007ffffffffffffffffffffffffffff01fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffe0007ffffffffffffff000fff0
+0007ffffffffffffffffffffffffffff01fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe003fff8
+001fffffffffffffffffffffffffffff07fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffc
+007fffffffffffffffffffffffffffff07fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffe
+00ffffffffffffffffffffffffffffff07fffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffffc007ffff
+dfffffffffffffffffffffffffffffff0ffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff800fffff
+fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff800fffff
+fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff001fffff
+fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff003fffff
+fffffffffffffffffffffffffffffffe3ffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffe003fffff
+ffffffffffffffffffffffffffffffff3ffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffc007fffff
+ffffffffffffffffffffffffffffffff3ffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffffc007fffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffffc00ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff800ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff801ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffe0000fffffffffffffff001ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff003ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffe007ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffff80007ffffffffffffffe007ffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffe0001fffffffffffffffc00fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff801fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffffc0003fffffffffffffff801fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffff80003fffffffffffffff003fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff007fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffff007fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc007fffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc00ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffc01ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff801ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffff801ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff803ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffff803ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffe007ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffff80007fffffffffffffffe007ffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffe00fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffc00fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff801fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff803fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff003fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff003fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffe007fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffc007fffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffffc00ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffff80007ffffffffffffffffc00ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffe0000fffffffffffffffff003ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffffc0001fffffffffffffffff003ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffe00007ffffffffffffffffc00fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffff80001fffffffffffffffff801fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffff00003fffffffffffffffff801fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffff00007fffffffffffffffff003fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffe00007fffffffffffffffff007fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffc0000ffffffffffffffffff007fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffffc0001fffffffffffffffffc007fffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffff80003fffffffffffffffffc00ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffff80007fffffffffffffffffc01ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffff00007fffffffffffffffff801ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffff0000ffffffffffffffffff801ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffffc0001ffffffffffffffffff803ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffff80003ffffffffffffffffff803ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffe0000ffffffffffffffffffe00fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffc0000ffffffffffffffffffe00fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffffc0001ffffffffffffffffffe01fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffff80003ffffffffffffffffffc03fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffff00007ffffffffffffffffffc03fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc03fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc07fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffffc0001fffffffffffffffffff807fffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffff00007fffffffffffffffffff81ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffe0000ffffffffffffffffffff01ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffe0001ffffffffffffffffffff03ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffffc0003ffffffffffffffffffff03ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffff80003fffffffffffffffffffe07ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffff00007fffffffffffffffffffe07ffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffe00007fffffffffffffffffffe0fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc0fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc1fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffffc0001ffffffffffffffffffffc1fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffff80007ffffffffffffffffffff83fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffff00007ffffffffffffffffffff83fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffe00007ffffffffffffffffffff83fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffe0000fffffffffffffffffffff87fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffc0001fffffffffffffffffffff87fffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffffc0001fffffffffffffffffffff0ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffff80003fffffffffffffffffffff0ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffff00007fffffffffffffffffffff0ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffff0000ffffffffffffffffffffff1ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffe0000fffffffffffffffffffffe1ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffffc0001fffffffffffffffffffffe3ffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffff80003fffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffff00007fffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffc0003ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffffc0007ffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffe0001fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffffc0007fffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffff8000ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffff8001ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffff0001ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffe0007ffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffffc000fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff8003fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffff0007fffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffe000ffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffc001ffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffc007ffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffc00fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffffc01fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffe00ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffe01ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff83ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff87ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+ffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffff8
+
+
+showpage
+
+% stop using temporary dictionary
+end
+
+% restore original state
+origstate restore
+
+%%Trailer
diff --git a/etc/gnus-refcard.tex b/etc/gnus-refcard.tex
new file mode 100644
index 0000000000..343de2d6f6
--- /dev/null
+++ b/etc/gnus-refcard.tex
@@ -0,0 +1,1427 @@
+\documentclass{article}
+
+% Previously we had five input LaTeX files (booklet.tex bk-lt.tex bk-a4.tex
+% refcard.tex gnusref.tex) and two logo files (gnuslogo-refcard.eps and
+% gnuslogo-booklet.eps).
+%
+% From this LaTeX file (gnus-refcard.tex) plus a single logo (gnus-logo.eps),
+% we can generate the refcard and the booklet version. Appropriate Makefile
+% rules were added. This simplifies to distribute the refcard with Emacs.
+%
+% (Reiner Steib, March 2005)
+
+\usepackage{ifthen}
+\ifthenelse{\isundefined{\booklettrue}}{
+ \typeout{Creating reference card...}
+}{
+ \typeout{Creating reference booklet...}}
+
+\usepackage{supertabular}
+
+\newlength{\logowidth} \setlength{\logowidth} {6.861in}
+\newlength{\logoheight} \setlength{\logoheight}{7.013in}
+
+\usepackage{graphicx}
+
+\usepackage{geometry}
+
+\ifthenelse{\isundefined{\booklettrue}}{% ifcard %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Reference Card
+
+ \def\Guide{Card}\def\guide{card}
+ \def\logoscale{0.25}
+
+ % Page setup for the refcard:
+
+ % \setlength{\textwidth}{7.26in} \setlength{\textheight}{10in}
+ % \setlength{\topmargin}{-1.0in}
+ % % the same settings work for A4, although there is a bit of space at the
+ % % top and bottom of the page.
+ % \setlength{\oddsidemargin}{-0.5in} \setlength{\evensidemargin}{-0.5in}
+
+ \ifthenelse{\isundefined{\letterpapertrue}}{
+ \geometry{a4paper,hmargin=10mm,tmargin=10mm,bmargin=35mm}
+ }{
+ \geometry{hmargin=20mm,tmargin=10mm,bmargin=12mm}
+ }
+
+}{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Reference Booklet
+
+ \def\Guide{Booklet}\def\guide{booklet}
+ \def\logoscale{0.5}% FIXME: too large for 2up printing? --rsteib
+
+ % FIXME: Use geometry package. --rsteib
+% \ifthenelse{\isundefined{\letterpapertrue}}{
+% \textwidth 4.9in \textheight 7.35in \topmargin -1.0in
+% }{
+% \textwidth 4.5in \textheight 7.5in \topmargin -1.0in
+% }
+% \oddsidemargin -0.5in \evensidemargin -0.5in
+ \ifthenelse{\isundefined{\letterpapertrue}}{
+ \geometry{a5paper,hmargin=10mm,tmargin=10mm,bmargin=4mm}
+ }{
+ % FIXME: Use geometry package. --rsteib
+ \geometry{a5paper,hmargin=20mm,tmargin=10mm,bmargin=4mm}
+ }
+
+ \def\sec{\section}
+ \def\subsec{\subsection}
+ \def\subsubsec{\subsubsection}
+ \def\blankpage{\vspace*{\fill}\par
+ %\centerline{(This page intentionally left blank.)}
+ \par\vspace*{\fill}\pagebreak}
+}%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% \input{gnusref} % % % % % % % % % % % % % % % % % % % % % % % % % %
+%% include file for the Gnus refcard and booklet
+
+\def\progver{5.10}\def\refver{5.10-2} % program and refcard versions
+\def\date{Mar, 2005}
+\def\author{Gnus Bugfixing Girls + Boys $<[email protected]$>$}
+
+%%
+\newlength{\keycolwidth}
+\newenvironment{keys}[1]% #1 is the widest key
+{\nopagebreak%\noindent%
+ \settowidth{\keycolwidth}{#1}%
+ \addtolength{\keycolwidth}{\tabcolsep}%
+ \addtolength{\keycolwidth}{-\columnwidth}%
+ \begin{supertabular}{@{}l@{\hspace{\tabcolsep}}p{-\keycolwidth}@{}}}%
+ {\end{supertabular}\\}
+
+%% uncomment the first definition if you do not want pagebreaks in maps
+%%\newcommand{\esamepage}{\samepage}
+\newcommand{\esamepage}{}
+
+\newcommand*{\B}[1]{{\bf#1})} % bold l)etter
+
+\newcommand{\Title}{%
+ \begin{center}
+ {\bf\LARGE Gnus \progver\ Reference \Guide\\}
+ %{\normalsize \Guide\ version \refver}
+ \end{center}
+ }
+
+% \newcommand*{\LogoOLD}[1]{\centerline{%
+% \makebox[\logoscale\logowidth][l]{\vbox to \logoscale\logoheight
+% {\vfill\epsfig{figure=gnuslogo-#1}}\vspace{-\baselineskip}}}}
+
+\newcommand*{\Logo}[1]{\centerline{%
+ \includegraphics[width=\logoscale\logowidth]{gnus-logo}}}
+
+\newcommand{\Copyright}{%
+ \begin{center}
+ Copyright \copyright\ 1995 Free Software Foundation, Inc.\\*
+ Copyright \copyright\ 1995 Vladimir Alexiev
+ Copyright \copyright\ 2000 Felix Natter $<[email protected]$>$.\\*
+ Copyright \copyright\ 2001, 2002, 2003, 2005 \author.\\*
+ Created from the Gnus manual Copyright \copyright\ 1994 Lars Magne
+ Ingebrigtsen.\\*
+ and the Emacs Help Bindings feature (C-h b).\\*
+ Gnus logo copyright \copyright\ 1995 Luis Fernandes.\\*
+ \end{center}
+
+ Permission is granted to make and distribute copies of this reference
+ \guide{} provided the copyright notice and this permission are preserved on
+ all copies. Please send corrections, additions and suggestions to the
+ current maintainer's email address. \Guide{} last edited on \date.
+ }
+
+\newcommand{\Notes}{%
+ \subsection*{Notes}
+ {\esamepage
+ Gnus is complex. Currently it has some 876 interactive (user-callable)
+ functions. Of these 618 are in the two major modes (Group and
+ Summary/Article). Many of these functions have more than one binding, some
+ have 3 or even 4 bindings. The total number of keybindings is 677. So in
+ order to save 40\% space, every function is listed only once on this
+ \guide, under the ``more logical'' binding. Alternative bindings are given
+ in parentheses in the beginning of the description.
+
+ Many Gnus commands are affected by the numeric prefix. Normally you enter a
+ prefix by holding the Meta key and typing a number, but in most Gnus modes
+ you don't need to use Meta since the digits are not self-inserting. The
+ prefixed behavior of commands is given in [brackets]. Often the prefix is
+ used to specify:
+
+ \quad [distance] How many objects to move the point over.
+
+ \quad [scope] How many objects to operate on (including the current one).
+
+ \quad [p/p] The ``Process/Prefix Convention'': If a prefix is given then it
+ determines how many objects to operate on. Else if there are some objects
+ marked with the process mark \#, these are operated on. Else only the
+ current object is affected.
+
+ \quad [level] A group subscribedness level. Only groups with a lower or
+ equal level will be affected by the operation. If no prefix is given,
+ `gnus-group-default-list-level' is used. If
+ `gnus-group-use-permanent-levels', then a prefix to the `g' and `l'
+ commands will also set the default level.
+
+ \quad [score] An article score. If no prefix is given,
+ `gnus-summary-default-score' is used. \\*[\baselineskip]
+ % some keys
+ Gnus startup-commands:\\*
+ \begin{keys}{M-x gnus-unplugged}
+ M-x gnus & start Gnus. \\
+ M-x gnus-no-server & start Gnus without connecting to server
+ (i.e. to read mail). \\
+ \end{keys}
+ Additionally, there are the two commands \texttt{gnus-plugged} and
+ \texttt{gnus-unplugged}, which are only used if you want to download
+ news and/or read previously downloaded news offline (see C-c C-i g Gnus
+ Unplugged RET). Note: \texttt{gnus-no-server} ignores the stuff in
+ \texttt{gnus-agent-directory}, and thus does not allow you to use Gnus
+ Unplugged.
+ %
+ \begin{keys}{C-c C-i}
+ C-c C-i & Go to the Gnus online {\bf info}.\\
+ C-c C-b & Send a Gnus {\bf bug} report.\\
+ \end{keys}
+ }}
+
+\newcommand{\GroupLevels}{%
+ The table below assumes that you use the default Gnus levels.
+ Fill your user-specific levels in the blank cells.\\[1\baselineskip]
+ \begin{tabular}{|c|l|l|}
+ \hline
+ Level & Groups & Status \\
+ \hline
+ 1 & draft/mail groups & \\
+ 2 & mail groups & \\
+ 3 & & subscribed \\
+ 4 & & \\
+ 5 & default list level & \\
+ \hline
+ 6 & & unsubscribed \\
+ 7 & & \\
+ \hline
+ 8 & & zombies \\
+ \hline
+ 9 & & killed \\
+ \hline
+ \end{tabular}}
+
+\newcommand{\MarkCharacters}{%
+ {\esamepage If a command directly sets a mark, it is shown in parentheses.\\*
+ \newlength{\markcolwidth}
+ \settowidth{\markcolwidth}{` '}% widest character
+ \addtolength{\markcolwidth}{4\tabcolsep}
+ \addtolength{\markcolwidth}{-\columnwidth}
+ \newlength{\markdblcolwidth}
+ \setlength{\markdblcolwidth}{\columnwidth}
+ \addtolength{\markdblcolwidth}{-2\tabcolsep}
+ \begin{tabular}{|c|p{-\markcolwidth}|}
+ \hline
+ \multicolumn{2}{|p{\markdblcolwidth}|}{{\bf ``Read'' Marks.}
+ All these marks appear in the first column of the summary line, and so
+ are mutually exclusive.}\\
+ \hline
+ ` ' & (M-u, M SPC, M c) Not read.\\
+ ! & (!, M !, M t) Ticked (interesting).\\
+ ? & (?, M ?) Dormant (only followups are interesting).\\
+ E & (E, M e, M x) {\bf Expirable}. Only has effect in mail groups.\\
+ G & (C, B DEL) Canceled article (or deleted in mailgroups).\\
+ \$ & (M-d, M s x, S x). Marked as spam.\\
+ \hline\hline
+ \multicolumn{2}{|p{\markdblcolwidth}|}
+ {The marks below mean that the article
+ is read (killed, uninteresting), and have more or less the same effect.
+ Some commands however explicitly differentiate between them (e.g.\ M
+ M-C-r, adaptive scoring).}\\
+ \hline
+ r & (d, M d, M r) Deleted (marked as {\bf read}).\\
+ C & (M C; M C-c; M H; c, Z c; Z n; Z C) Killed by {\bf catch-up}.\\
+ F & SOUPed article. See the manual.\\
+ O & {\bf Old} (read in a previous session).\\
+ K & (k, M k; C-k, M K) {\bf Killed}.\\
+ M & Article marked as read by duplicate suppression.\\
+ Q & Article is part of a sparse thread (see ``Threading''
+ in the manual).\\
+ R & {\bf Read} (viewed in actuality).\\
+ X & Killed by a kill file.\\
+ Y & Killed due to low score.\\
+ \hline\multicolumn{2}{c}{\vspace{1ex}}\\\hline
+ \multicolumn{2}{|p{\markdblcolwidth}|}
+ {{\bf Marks not affecting visibility}}\\
+ \hline
+ \# & (\#, M \#, M P p) Processable (will be affected by the next operation).
+ [2]\\
+ A & {\bf Answered} (followed-up or replied). [2]\\
+ F & Forwarded. [2]\\
+ $\ast$ & Cached. [2]\\
+ S & Saved. [2]\\
+ N & Recently arrived. [2]\\
+ . & Unseen. [2]\\
+ + & Over default score. [3]\\
+ $-$ & Under default score. [3]\\
+ $=$ & Has children (thread underneath it). Add `\%e' to
+ `gnus-summary-line-format'. [3]\\
+ \hline
+ \end{tabular}
+ }}
+
+\newcommand{\GroupModeGeneral}{%
+ \begin{keys}{C-c M-C-x}
+ RET & (=) Enter this group. [Prefix: how many (read) articles to fetch.
+ Positive: newest articles, negative: oldest ones; non-numerical:
+ view all articles, not just unread]\\
+ M-RET & Enter group quickly.\\
+ M-SPC & Same as RET but does not expunge and hide dormants.\\
+ M-C-RET & Enter group without any processing, changes will not be permanent.\\
+ SPC & Select this group and display the first (unread) article. [Same
+ prefix as above.]\\
+ ? & Give a very short help message.\\
+ $<$ & Go to the beginning of the Group buffer.\\
+ $>$ & Go to the end of the Group buffer.\\
+ , & Jump to the lowest-level group with unread articles.\\
+ . & Jump to the first group with unread articles.\\
+ \^{} & Enter the Server buffer mode.\\
+ a & Post an {\bf article} to a group
+ [Prefix: use group under point to find posting-style].\\
+ b & Find {\bf bogus} groups and delete them.\\
+ c & Mark all unticked articles in this group as read ({\bf catch-up}).
+ [p/p]\\
+ g & Check the server for new articles ({\bf get}). [level]\\
+ M-g & Check the server for new articles in this group ({\bf get}). [p/p]\\
+ j & {\bf Jump} to a group.\\
+ m & {\bf Mail} a message to someone
+ [Prefix: use group under point to find posting-style].\\
+ n & Go to the {\bf next} group with unread articles. [distance]\\
+ M-n & Go to the {\bf next} group on the same or lower level.
+ [distance]\\
+ p & (DEL) Go to the {\bf previous} group with unread articles.
+ [distance]\\
+ M-p & Go to the {\bf previous} group on the same or lower level. [distance]\\
+ q & {\bf Quit} Gnus.\\
+ r & Re-read the init file ({\bf reset}).\\
+ s & {\bf Save} the `.newsrc.eld' file (and `.newsrc' if
+ `gnus-save-newsrc-file').\\
+ z & Suspend (kill all buffers of) Gnus.\\
+ B & {\bf Browse} a foreign server.\\
+ C & Mark all articles in this group as read ({\bf Catch-up}). [p/p]\\
+ F & {\bf Find} new groups and process them.\\
+ N & Go to the {\bf next} group. [distance]\\
+ P & Go to the {\bf previous} group. [distance]\\
+ Q & {\bf Quit} Gnus without saving any startup (.newsrc) files.\\
+ R & {\bf Restart} Gnus.\\
+ Z & Clear the dribble buffer.\\
+ M-c & Clear data from group (marks and list of read articles). \\
+ C-c C-s & {\bf Sort} the groups by name, number of unread articles, or level
+ (depending on `gnus-group-sort-function').\\
+ C-c C-x & Run all expirable articles in this group through the {\bf expiry}
+ process.\\
+ C-c M-C-x & Run all articles in all groups through the {\bf expiry} process.\\
+ C-c M-g & Activate all {\bf groups}.\\
+ C-c C-i & Gnus online-manual ({\bf info}).\\
+ C-x C-t & {\bf Transpose} two groups.\\
+ H f & Fetch this group's {\bf FAQ} (using ange-ftp).\\
+ H c & Display this group's {\bf charter}. [Prefix: query for group]\\
+ H C & Display this group's {\bf control message} (using
+ ange-ftp). [Prefix: query for group]\\
+ H v & (V) Display the Gnus {\bf version} number.\\
+ H d & (C-c C-d) Show the {\bf description} of this group
+ [Prefix: re-read from server].\\
+ M-d & {\bf Describe} all groups. [Prefix: re-read from server]\\
+ D g & Regenerate a Sieve script from group parameters.\\
+ D u & Regenerate Sieve script and {\bf upload} to server.\\
+ \end{keys}
+ }
+
+\newcommand{\ListGroups}{%
+ {\esamepage
+ \begin{keys}{A M}
+ A d & (C-c C-M-a) List all groups whose names or {\bf descriptions} match a regexp.\\
+ A k & (C-c C-l) List all {\bf killed} groups.
+ [Prefix: look at active-file from server]\\
+ A l & List all groups on a specific level.
+ [Prefix: also list groups with no unread articles]\\
+ A a & (C-c C-a) List all groups whose names match a regexp
+ ({\bf apropos}).\\
+ A A & List the server's active-file.\\
+ A M & List groups that {\bf match} a regexp.\\
+ A m & List groups that {\bf match} a regexp and have unread articles.
+ [level]\\
+ A s & (l) List all {\bf subscribed} groups with unread articles.
+ [level; 5 and lower is the default]\\
+ A u & (L) List all groups (including read and {\bf unsubscribed}).
+ [level; 7 and lower is the default]\\
+ A z & List all {\bf zombie} groups.\\
+ A c & List all groups with cached articles. [level]\\
+ A ? & List all groups with dormant articles. [level]\\
+ \end{keys}
+ }
+
+ \newcommand{\CreateEditGroups}{%
+ {\esamepage
+ The select methods are indicated in parentheses.\\*
+ \begin{keys}{G DEL}
+ G a & Make the Gnus list {\bf archive} group. (nndir over ange-ftp)\\
+ G c & {\bf Customize} this group's parameters.\\
+ G d & Make a {\bf directory} group (every file must be a posting and files
+ must have numeric names). (nndir)\\
+ G D & Enter a {\bf directory} as a (temporary) group.
+ (nneething without recording articles read)\\
+ G e & (M-e) {\bf Edit} this group's select method.\\
+ G E & {\bf Edit} this group's info (select method, articles read, etc).\\
+ G f & Make a group based on a {\bf file}. (nndoc)\\
+ G h & Make the Gnus {\bf help} (documentation) group. (nndoc)\\
+ G k & Make a {\bf kiboze} group. (nnkiboze)\\
+ G m & {\bf Make} a new group.\\
+ G p & Edit this group's {\bf parameters}.\\
+ G r & Rename this group (does not work with read-only groups!).\\
+ G u & Create one of the groups mentioned in gnus-{\bf useful}-groups.\\
+ G v & Add this group to a {\bf virtual} group. [p/p]\\
+ G V & Make a new empty {\bf virtual} group. (nnvirtual)\\
+ G w & Create ephemeral group based on web-search. [Prefix: make solid group
+ instead]\\
+ G R & Make an {\bf RSS} group.\\
+ G DEL & {\bf Delete} group [Prefix: delete all articles as well].\\
+ G x & Expunge all deleted articles in an nnimap mailbox.\\
+ G l & Edit ACL (Access Control {\bf List}) for an nnimap mailbox.\\
+ \end{keys}
+ You can also create mail-groups and read your mail with Gnus (very useful
+ if you are subscribed to mailing lists), using one of the methods
+ nnmbox, nnbabyl, nnml, nnmh, or nnfolder. Read about it in the online info
+ (C-c C-i g Reading Mail RET).
+ }}
+
+ % TODO:
+ \newcommand{\SoupCommands}{%
+ \begin{keys}{G s w}
+ G s b & gnus-group-brew-soup: not documented.\\
+ G s p & gnus-soup-pack-packet: not documented.\\
+ G s r & nnsoup-pack-replies: not documented.\\
+ G s s & gnus-soup-send-replies: not documented.\\
+ G s w & gnus-soup-save-areas: not documented.\\
+ \end{keys}}
+
+ \newcommand{\MarkGroups}{%
+ \begin{keys}{M m}
+ M m & (\#) Set the process {\bf mark} on this group. [scope]\\
+ M r & Mark all groups matching regular expression.\\
+ M u & (M-\#) Remove the process mark from this group ({\bf unmark}).
+ [scope]\\
+ M U & Remove the process mark from all groups (\textbf{umark all}).\\
+ M w & Mark all groups in the current region. [prefix: unmark]\\
+ M b & Mark all groups in the {\bf buffer}. [prefix: unmark]\\
+ \end{keys}}
+
+ \newcommand{\GroupTopicsGeneral}{%
+ {\esamepage
+ Topics are ``categories'' for groups. Press t in the group-buffer to
+ toggle gnus-topic-mode (C-c C-i g Group Topics RET).\\*
+ \begin{keys}{C-c C-x}
+ T n & Prompt for topic {\bf name} and create it.\\
+ T m & {\bf Move} the current group to some other topic [p/p].\\
+ T j & {\bf Jump} to a topic.\\
+ T c & {\bf Copy} the current group to some other topic [p/p].\\
+ T D & Remove (not delete) the current group [p/p].\\
+ T M & {\bf Move} all groups matching a regexp to a topic.\\
+ T C & {\bf Copy} all groups matching a regexp to a topic.\\
+ T H & Toggle {\bf hiding} of empty topics.\\
+ T r & {\bf Rename} a topic.\\
+ T DEL & Delete an empty topic.\\
+ T \# & Mark all groups in the current topic with the process-mark.\\
+ T M-\# & Remove the process-mark from all groups in the current topic.\\
+ T TAB & (TAB) Indent current topic [Prefix: unindent].\\
+ M-TAB & Unindent the current topic.\\
+ RET & (SPC) Either unfold topic or enter group [level].\\
+ T s & {\bf Show} the current topic. [Prefix: show permanently]\\
+ T h & {\bf Hide} the current topic. [Prefix: hide permanently]\\
+ C-c C-x & Expire all articles in current group or topic.\\
+ C-k & {\bf Kill} a group or topic.\\
+ C-y & {\bf Yank} a group or topic.\\
+ A T & List active-file using {\bf topics}.\\
+ G p & Edit topic-{\bf parameters}.\\
+ T M-n & Go to {\bf next} topic. [distance]\\
+ T M-p & Go to {\bf previous} topic. [distance]\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\TopicSorting}{%
+ {\esamepage
+ \begin{keys}{T S m}
+ T S a & Sort {\bf alphabetically}.\\
+ T S u & Sort by number of {\bf unread} articles.\\
+ T S l & Sort by group {\bf level}.\\
+ T S v & Sort by group score ({\bf value}).\\
+ T S r & Sort by group {\bf rank}.\\
+ T S m & Sort by {\bf method}.\\
+ T S e & Sort by {\bf server} name.\\
+ T S s & Sort according to `gnus-group-sort-function'.\\
+ \end{keys}
+ With a prefix these commands will sort in reverse order.
+ }
+ }
+
+ \newcommand{\SubscribeKillYankGroups}{%
+ {\esamepage
+ \begin{keys}{S C-k}
+ S k & (C-k) {\bf Kill} this group.\\
+ S l & Set the {\bf level} of this group. [p/p]\\
+ S s & (U) Prompt for a group and toggle its {\bf subscription}.\\
+ S t & (u) {\bf Toggle} subscription to this group. [p/p]\\
+ S w & (C-w) Kill all groups in the region.\\
+ S y & (C-y) {\bf Yank} the last killed group.\\
+ S z & Kill all {\bf zombie} groups.\\
+ S C-k & Kill all groups on a certain level.\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\SummaryModeGeneral}{%
+ {\esamepage
+ \begin{keys}{M-RET}
+ SPC & (A SPC, A n) Select an article, scroll it one page, move to the
+ next one.\\
+ DEL & (A DEL, A p, b) Scroll this article one page back. [distance]\\
+ RET & (A RET) Scroll this article one line forward. [distance]\\
+ M-RET & (A M-RET) Scroll this article one line backward. [distance]\\
+ = & Expand the Summary window (fullsize).
+ [Prefix: shrink to display article window]\\
+ %
+ \& & Execute a command on all articles whose header matches a regexp.
+ [Prefix: move backwards]\\
+ M-\& & Execute a command on all articles having the process mark.\\
+ %
+ M-n & (G M-n) Go to the {\bf next} summary line of an unread article.
+ [distance]\\
+ M-p & (G M-p) Go to the {\bf previous} summary line of an unread article.
+ [distance]\\
+ M-s & {\bf Search} through all subsequent articles for a regexp.\\
+ M-r & Search through all previous articles for a regexp.\\
+ %
+ A P & {\bf Postscript}-print current buffer.\\
+ %
+ M-k & Edit this group's {\bf kill} file.\\
+ M-K & Edit the general {\bf kill} file.\\
+ %
+ C-t & Toggle {\bf truncation} of summary lines.\\
+ Y g & Regenerate the summary-buffer.\\
+ Y c & Insert all cached articles into the summary-buffer.\\
+ %
+ M-C-e & {\bf Edit} the group-parameters.\\
+ M-C-a & Customize the group-parameters.\\
+ %
+ % article handling
+ %
+ A $<$ & ($<$, A b) Scroll to the beginning of this article.\\
+ A $>$ & ($>$, A e) Scroll to the end of this article.\\
+ A s & (s) Perform an i{\bf search} in the article buffer.\\
+ %
+ A D & (C-d) Un{\bf digestify} this article into a separate group.
+ [Prefix: force digest]\\
+ M-C-d & Like C-d, but open several documents in nndoc-groups, wrapped
+ in an nnvirtual group [p/p]\\
+ %
+ A g & (g) (Re)fetch this article ({\bf get}). [Prefix: get raw version]\\
+ A r & (\^{}, A \^{}) Fetch the parent(s) of this article.
+ [Prefix: if positive fetch \textit{n} ancestors;
+ negative: fetch only the \textit{n}th ancestor]\\
+ A t & {\bf Translate} this article.\\
+ A R & Fetch all articles mentioned in the {\bf References}-header.\\
+ A T & Fetch full \textbf{thread} in which the current article appears.\\
+ M-\^{} & Fetch the article with a given Message-ID.\\
+ S y & {\bf Yank} the current article into an existing message-buffer.
+ [p/p]\\
+ A M & Setup group parameters for {\bf mailing} lists from
+ headers. [Prefix: replace old settings]\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\MIMESummary}{%
+ {\esamepage
+ For the commands operating on one MIME part (a subset of gnus-article-*), a
+ prefix selects which part to operate on. If the point is placed over a
+ MIME button in the article buffer, use the corresponding bindings for the
+ article buffer instead.
+
+ \begin{keys}{W M w}
+ K v & (b, W M b) {\bf View} the MIME-part.\\
+ K o & {\bf Save} the MIME part.\\
+ K c & {\bf Copy} the MIME part.\\
+ K e & View the MIME part {\bf externally}.\\
+ K i & View the MIME part {\bf internally}.\\
+ K $\mid$ & Pipe the MIME part to an external command.\\
+ K b & Make all the MIME parts have buttons in front of them.\\
+ K m & Try to repair {\bf multipart-headers}.\\
+ K C & View the MIME part using a different {\bf charset}.\\
+ X m & Save all parts matching a MIME type to a directory. [p/p]\\
+ M-t & Toggle the buttonized display of the article buffer.\\
+ W M w & Decode RFC2047-encoded words in the article headers.\\
+ W M c & Decode encoded article bodies. [Prefix: prompt for charset]\\
+ W M v & View all MIME parts in the current article.\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\SortSummary}{%
+ {\esamepage
+ \begin{keys}{C-c C-s C-a}
+ C-c C-s C-a & Sort the summary-buffer by {\bf author}.\\
+ % C-c C-s C-t & Sort the summary-buffer by {\bf recipient}.\\ % No Gnus
+ C-c C-s C-d & Sort the summary-buffer by {\bf date}.\\
+ C-c C-s C-i & Sort the summary-buffer by article score.\\
+ C-c C-s C-l & Sort the summary-buffer by amount of {\bf lines}.\\
+ C-c C-s C-c & Sort the summary-buffer by length.\\
+ C-c C-s C-n & Sort the summary-buffer by article {\bf number}.\\
+ C-c C-s C-s & Sort the summary-buffer by {\bf subject}.\\
+ C-c C-s C-r & Sort the summary-buffer {\bf randomly}.\\
+ C-c C-s C-o & Sort the summary-buffer using the default method.\\
+ \end{keys}
+ With a prefix these functions sort in reverse order.
+ }
+ }
+
+ \newcommand{\MailGroups}{% formerly \Bsubmap
+ {\esamepage
+ These commands (except `B c') are only valid in a mail group.\\*
+ \begin{keys}{B M-C-e}
+ B DEL & (B backspace, B delete) {\bf Delete} the mail article from disk (!).
+ [p/p]\\
+ B B & Crosspost this article to another group.\\
+ B c & {\bf Copy} this article from any group to a mail group. [p/p]\\
+ B e & {\bf Expire} all expirable articles in this group. [p/p]\\
+ B i & {\bf Import} a random file into this group.\\
+ B I & Create an empty article in this group.\\
+ B m & {\bf Move} the article from one mail group to another. [p/p]\\
+ B p & Query whether the article was {\bf posted} as well.\\
+ B q & {\bf Query} where the article will end up after fancy splitting\\
+ B r & {\bf Respool} this mail article. [p/p]\\
+ B t & {\bf Trace} the fancy splitting patterns applied to this article.\\
+ B w & (e) Edit this article.\\
+ B M-C-e & {\bf Expunge} (delete from disk) all expirable articles in this group
+ (!). [p/p]\\
+ K E & {\bf Encrypt} article body. [p/p]\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\DraftGroup}{% formerly \Dsubmap
+ {\esamepage
+ The ``drafts''-group contains messages that have been saved but not sent
+ and rejected articles. \\*
+ \begin{keys}{B DEL}
+ D e & \textbf{edit} message.\\
+ D s & \textbf{Send} message. [p/p]\\
+ D S & \textbf{Send} all messages.\\
+ D t & \textbf{Toggle} sending (mark as unsendable).\\
+ B DEL & \textbf{Delete} message (like in mailgroup).\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\SelectArticles}{% formerly \Gsubmap
+ {\esamepage
+ These commands select the target article. They do not understand the prefix.\\*
+ \begin{keys}{G C-n}
+ h & Enter article-buffer.\\
+ G b & (,) Go to the {\bf best} article (the one with highest score).\\
+ G f & (.) Go to the {\bf first} unread article.\\
+ G n & (n) Go to the {\bf next} unread article.\\
+ G p & (p) Go to the {\bf previous} unread article.\\
+ %
+ G N & (N) Go to {\bf the} next article.\\
+ G P & (P) Go to the {\bf previous} article.\\
+ %
+ G C-n & (M-C-n) Go to the {\bf next} article with the same subject.\\
+ G C-p & (M-C-p) Go to the {\bf previous} article with the same subject.\\
+ %
+ G l & (l) Go to the previously read article ({\bf last-read-article}).\\
+ G o & Pop an article off the summary history and go to it.\\
+ %
+ G g & Search an article via subject.\\
+ G j & (j) Search an article via Message-Id or subject.\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\ArticleModeGeneral}{%
+ {\esamepage
+ The normal navigation keys work in Article mode. Some additional keys are:\\
+ \begin{keys}{C-c RET}
+ C-c \^{} & Get the article with the Message-ID near point.\\
+ C-c RET & Send reply to address near point.\\
+ h & Go to the \textbf{header}-line of the article in the
+ summary-buffer.\\
+ s & Go to \textbf{summary}-buffer.\\
+ RET & (middle mouse button) Activate the button at point to follow
+ an URL or Message-ID.\\
+ TAB & Move the point to the next button.\\
+ M-TAB & Move point to previous button.\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\WashArticle}{% formerly \Wsubmap
+ {\esamepage
+ \begin{keys}{W W H}
+ W 6 & Translate a base64 article.\\
+ W a & Strip certain {\bf headers} from body.\\
+ W b & Make Message-IDs and URLs in the article mouse-clickable
+ {\bf buttons}.\\
+ W c & Translate CRLF-pairs to LF and then the remaining CR's to LF's.\\
+ W d & Treat {\bf dumbquotes}.\\
+ W e & Treat {\bf emphasized} text.\\
+ W h & Treat {\bf HTML}.\\
+ W l & (w) Remove page breaks ({\bf\^{}L}) from the article.\\
+ W m & {\bf Morse} decode article.\\
+ W o & Treat {\bf overstrike} or underline (\^{}H\_) in the article.\\
+ W p & Verify X-{\bf PGP}-Sig header.\\
+ W q & Treat {\bf quoted}-printable in the article.\\
+ W r & (C-c C-r) Do a Caesar {\bf rotate} (rot13) on the article.\\
+ W s & Verify (and decrypt) a {\bf signed} message.\\
+ W t & (t) {\bf Toggle} display of all headers.\\
+ W u & {\bf Unsplit} broken URLs.\\
+ W v & (v) Toggle permanent {\bf verbose} displaying of all headers.\\
+ W w & Do word {\bf wrap} in the article.\\
+ W B & Add clickable {\bf buttons} to the article headers.\\
+ W C & {\bf Capitalize} first word in each sentence.\\
+ W Q & Fill long lines.\\
+ W Z & Translate a HZ-encoded article.\\
+ %
+ W G u & {\bf Unfold} folded header lines.\\
+ W G f & {\bf Fold} all header lines.\\
+ W G n & Unfold {\bf Newsgroups:} and Follow-Up-To:.\\
+ %
+ W Y c & Repair broken {\bf citations}.\\
+ W Y a & Repair broken {\bf attribution} lines.\\
+ W Y u & {\bf Unwrap} broken citation lines.\\
+ W Y f & Do a {\bf full} deuglification (W Y c, W Y a, W Y u).\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\BlankAndWhitespace}{%
+ {\esamepage
+ \begin{keys}{W E w}
+ W E l & Strip blank {\bf lines} from the beginning of the article.\\
+ W E m & Replace blank lines with empty lines and remove {\bf multiple}
+ blank lines.\\
+ W E t & Remove {\bf trailing} blank lines.\\
+ W E a & Strip blank lines at the beginning and the end
+ (W E l, W E m and W E t).\\
+ W E A & Strip {\bf all} blank lines.\\
+ W E s & Strip leading blank lines from the article body.\\
+ W E e & Strip trailing blank lines from the article body.\\
+ W E w & Remove leading {\bf whitespace} from all headers.\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\Picons}{%
+ {\esamepage
+ \begin{keys}{W D D}
+ W D s & (W g) Display {\bf smilies}.\\
+ W D x & (W f) Look for and display any X-{\bf Face} headers.\\
+ W D d & Display any Face headers.\\
+ W D n & Toggle picons in {\bf Newsgroups} and Followup-To.\\
+ W D m & Toggle picons in {\bf mail} headers (To and Cc).\\
+ W D f & Toggle picons in {\bf From}.\\
+ W D D & Remove all images from the article buffer.\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\TimeAndDate}{%
+ {\esamepage
+ \begin{keys}{W T u}
+ W T u & (W T z) Display the article timestamp in GMT ({\bf UT, ZULU}).\\
+ W T i & Display the article timestamp in {\bf ISO} 8601.\\
+ W T l & Display the article timestamp in the {\bf local} timezone.\\
+ W T s & Display according to `gnus-article-time-format'.\\
+ W T e & Display the time {\bf elapsed} since it was sent.\\
+ W T o & Display the {\bf original} timestamp.\\
+ W T p & Display the date in format that's {\bf
+ pronounceable} in English.\\
+ \end{keys}
+ }
+ }
+
+ \newcommand{\HideHighlightArticle}{%
+ {\esamepage
+ \begin{keys}{W W C-c}
+ W W a & Hide {\bf all} unwanted parts. Calls W W h, W W s, W W C-c.\\
+ W W h & Hide article {\bf headers}.\\
+ W W b & Hide {\bf boring} headers.\\
+ W W s & Hide {\bf signature}.\\
+ W W l & Hide {\bf list} identifiers in subject-header.\\
+ W W P & Hide {\bf PEM} (privacy enhanced messages).\\
+ W W B & Hide banner specified by group parameter.\\
+ W W c & Hide {\bf citation}.\\
+ W W C-c & Hide {\bf citation} using a more intelligent algorithm.\\
+ W W C & Hide cited text in articles that aren't roots.\\
+ W H a & Highlight {\bf all} parts. Calls W b, W H c, W H h, W H s.\\
+ W H c & Highlight article {\bf citations}.\\
+ W H h & Highlight article {\bf headers}.\\
+ W H s & Highlight article {\bf signature}.\\
+ \end{keys}
+ For all hiding-commands: A positive prefix always hides, and a negative
+ prefix will show what was previously hidden.
+ }}
+
+ \newcommand{\MIMEArticleMode}{%
+ {\esamepage
+ \begin{keys}{RET}
+ RET & (BUTTON-2) Toggle display of the MIME object.\\
+ v & Prompt for a method and then view object using this method.\\
+ o & Prompt for a filename and save the MIME object.\\
+ C-o & Prompt for a filename to save the MIME object to and remove it.\\
+ d & {\bf Delete} the MIME object.\\
+ c & {\bf Copy} the MIME object to a new buffer and display this buffer.\\
+ i & Display the MIME object in this buffer.\\
+ C & Copy the MIME object to a new buffer and display this buffer using {\bf Charset} \\
+ E & View internally. \\
+ e & View {\bf externally}. \\
+ t & View the MIME object as a different {\bf type}.\\
+ p & {\bf Print} the MIME object.\\
+ $\mid$ & Pipe the MIME object to a process.\\
+ . & Take action on the MIME object.\\
+ \end{keys}
+ }
+ }
+
+ %% end of article mode for reading ..........................................
+
+ \newcommand{\MarkArticlesGeneral}{% formerly \Msubmap
+ {\esamepage
+ \begin{keys}{M M-C-r}
+ d & (M d, M r) Mark this article as read and move to the next one.
+ [scope]\\
+ D & Mark this article as read and move to the previous one. [scope]\\
+ ! & (u, M !, M t) Tick this article (mark it as interesting) and move
+ to the next one. [scope]\\
+ U & Tick this article and move to the previous one. [scope]\\
+ M ? & (?) Mark this article as dormant (only followups are
+ interesting). [scope]\\
+ M D & Show all {\bf dormant} articles (normally they are hidden unless they
+ have any followups).\\
+ M M-D & Hide all {\bf dormant} articles.\\
+ C-w & Mark all articles between point and mark as read.\\
+ M-u & (M SPC, M c) Clear all marks from this article and move to the next
+ one. [scope]\\
+ M-U & Clear all marks from this article and move to the previous one.
+ [scope]\\
+ %
+ M e & (E, M x) Mark this article as {\bf expirable}. [scope]\\
+ %
+ M k & (k) {\bf Kill} all articles with the same subject then select the
+ next unread one.\\
+ M K & (C-k) {\bf Kill} all articles with the same subject as this one.\\
+ %
+ M C & {\bf Catch-up} the articles that are not ticked and not dormant.\\
+ M C-c & {\bf Catch-up} all articles in this group.\\
+ M H & {\bf Catch-up} (mark read) this group to point (to-{\bf here}).\\
+ %
+ M b & Set a {\bf bookmark} in this article.\\
+ M B & Remove the {\bf bookmark} from this article.\\
+ %
+ M M-r & (x) Expunge all {\bf read} articles from this group.\\
+ M M-C-r & Expunge all articles having a given mark.\\
+ M S & (C-c M-C-s) {\bf Show} all expunged articles.\\
+ M M C-h & Displays some more keys doing ticking slightly differently.\\
+ \end{keys}
+ The variable `gnus-summary-goto-unread' controls what happens after a mark
+ has been set (C-x C-i g Setting Marks RET)
+ }}
+
+ \newcommand{\MarkByScore}{%
+ \begin{keys}{M V m}
+ M V c & {\bf Clear} all marks from all high-scored articles. [score]\\
+ M V k & {\bf Kill} all low-scored articles. [score]\\
+ M V m & Mark all high-scored articles with a given {\bf mark}. [score]\\
+ M V u & Mark all high-scored articles as interesting (tick them). [score]\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\ProcessMark}{%
+ {\esamepage
+ These commands set and remove the process mark (\#). You only need to use
+ it if the set of articles you want to operate on is non-contiguous. Else
+ use a numeric prefix.\\*
+ \begin{keys}{M P R}
+ M P p & (\#, M \#) Mark this article.\\
+ M P u & (M-\#, M M-\#) \textbf{unmark} this article.\\
+ M P b & Mark all articles in {\bf buffer}.\\
+ M P r & Mark all articles in the {\bf region}.\\
+ M P g & Unmark all articles in the region.\\
+ M P R & Mark all articles matching a {\bf regexp}.\\
+ M P G & Unmark all articles matching a regexp.\\
+ M P t & Mark all articles in this (sub){\bf thread}.\\
+ M P T & Unmark all articles in this (sub){\bf thread}.\\
+ M P s & Mark all articles in the current {\bf series}.\\
+ M P S & Mark all {\bf series} that already contain a marked article.\\
+ M P a & Mark {\bf all} articles (in series order).\\
+ M P U & \textbf{unmark} all articles.\\
+ M P i & {\bf Invert} the list of process-marked articles.\\
+ M P k & Push the current process-mark set onto stack and unmark
+ all articles.\\
+ M P y & Pop process-mark set from stack and restore it.\\
+ M P w & Push process-mark set on the stack.\\
+ M P v & Mark all articles with score over the default score. [Prefix: score]\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\Limiting}{%
+ {\esamepage
+ \begin{keys}{/M}
+ // & (/s) Limit the summary-buffer to articles matching {\bf subject}.\\
+ /a & Limit the summary-buffer to articles matching {\bf author}.\\
+ /x & Limit depending on ``extra'' headers.\\
+ /u & (x) Limit to {\bf unread} articles.
+ [Prefix: also exclude ticked and dormant articles]\\
+ /. & Limit to unseen articles.\\
+ /m & Limit to articles marked with specified {\bf mark}.\\
+ /t & Ask for a number and exclude articles younger than that many days.
+ [Prefix: exclude older articles]\\
+ /n & Limit to current article. [p/p]\\
+ /w & Pop the previous limit off the stack and restore it.
+ [Prefix: pop all limits]\\
+ /v & Limit to score. [score]\\
+ /E & (M S) Include all expunged articles in the limit.\\
+ /D & Include all dormant articles in the limit.\\
+ /* & Limit to cached articles.\\
+ Y C & Include all cached articles in the limit.\\
+ /d & Exclude all dormant articles from the limit.\\
+ /M & Exclude all marked articles.\\
+ /T & Include all articles from the current thread in the limit.\\
+ /c & Exclude all dormant articles that have no children from the limit.\\
+ /C & Mark all excluded unread articles as read.
+ [Prefix: also mark ticked and dormant articles]\\
+ /o & Insert all {\bf old} articles. [Prefix: how many]\\
+ /N & Insert all {\bf new} articles.\\
+ /p & Limit to articles {\bf predicated} in the `display' group parameter.\\
+ % /r & Limit to {\bf replied} articles. [Prefix: unreplied]\\ % No Gnus
+ \end{keys}
+ }
+ }
+
+\newcommand{\OutputArticles}{% formerly \Osubmap
+ {\esamepage
+ \begin{keys}{O m}
+ O o & (o, C-o) Save this article using the default article saver. [p/p]\\
+ O b & Save this article's {\bf body} in plain file format [p/p]\\
+ O f & Save this article in plain {\bf file} format. [p/p]\\
+ O F & like O f, but overwrite file's contents. [p/p]\\
+ O h & Save this article in {\bf mh} folder format. [p/p]\\
+ O m & Save this article in {\bf mail} format. [p/p]\\
+ O r & Save this article in {\bf rmail} format. [p/p]\\
+ O v & Save this article in {\bf vm} format. [p/p]\\
+ O p & ($\mid$) {\bf Pipe} this article to a shell command. [p/p]\\
+ O P & \textbf{Print} this article using Muttprint. [p/p]\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\PostReplyetc}{% formerly \Ssubmap
+ {\esamepage
+ These commands put you in a separate news or mail buffer. See the section
+ about composing messages for more information.\\*
+ %After
+ %editing the article, send it by pressing C-c C-c. If you are in a
+ %foreign group and want to post the article using the foreign server, give
+ %a prefix to C-c C-c.\\*
+ \begin{keys}{S O m}
+ S p & (a) {\bf Post} an article to this group.\\
+ S f & (f) Post a {\bf followup} to this article.\\
+ S F & (F) Post a {\bf followup} and include the original. [p/p]\\
+ S o p & Forward this article as a {\bf post} to a newsgroup.\\
+ S M-c & Send a complaint about excessive crossposting to the author of this
+ article. [p/p]\\
+ %
+ S m & (m) Send a {\bf mail} to some other person.\\
+ S r & (r) Mail a {\bf reply} to the author of this article.\\
+ S R & (R) Mail a {\bf reply} and include the original. [p/p]\\
+ S B r & Like S r but ignore the Reply-To: header.\\
+ S B R & Like S R but ignore the Reply-To: header.\\
+ S w & Mail a {\bf wide} reply to this article.\\
+ S W & Mail a {\bf wide} reply to this article and include
+ the original.\\
+ S v & Mail a {\bf very} wide reply to this article.\\
+ S V & Mail a {\bf very} wide reply to this article and include the original.\\
+ S o m & (C-c C-f) Forward this article by {\bf mail} to a person.\\
+ S D b & Resend {\bf bounced} mail.\\
+ S D r & {\bf Resend} mail to a different person.\\
+ S D e & {\bf Edit} and resend.\\
+ %
+ S n & Post a followup via {\bf news} even if you got the message
+ through mail.\\
+ S N & Post a followup via {\bf news} and include the original mail.
+ [p/p]\\
+ %
+ S c & (C) {\bf Cancel} this article (only works if it is
+ your own). [p/p]\\
+ S s & {\bf Supersede} this article with a new one (only for own
+ articles).\\
+ %
+ S O m & Digest these series and forward by {\bf mail}. [p/p]\\
+ S O p & Digest these series and forward as a {\bf post} to a newsgroup.
+ [p/p]\\
+ %
+ S u & {\bf Uuencode} a file and post it as a series.\\
+ \end{keys}
+ If you want to cancel or supersede an article you just posted (before it
+ has appeared on the server), go to the *post-news* buffer, change
+ `Message-ID' to `Cancel' or `Supersedes' and send it again with C-c C-c.
+ }}
+
+\newcommand{\Threading}{% formerly \Tsubmap
+ {\esamepage
+ \begin{keys}{T M-\#}
+ T \# & Mark this thread with the process mark.\\
+ T M-\# & Remove process-marks from this thread.\\
+ %
+ T t & Re-{\bf thread} the current article's thread.\\
+ T \^{} & Make the current article child of the marked (or previous) article.\\
+ % movement
+ T n & (M-C-f, M-down) Go to the {\bf next} thread. [distance]\\
+ T p & (M-C-b, M-up) Go to the {\bf previous} thread. [distance]\\
+ T d & {\bf Descend} this thread. [distance]\\
+ T u & Ascend this thread ({\bf up}-thread). [distance]\\
+ T o & Go to the top of this thread.\\
+ %
+ T s & {\bf Show} the thread hidden under this article.\\
+ T h & {\bf Hide} this (sub)thread.\\
+ %
+ T i & {\bf Increase} the score of this thread.\\
+ T l & (M-C-l) {\bf Lower} the score of this thread.\\
+ %
+ T k & (M-C-k) {\bf Kill} the current (sub)thread. [Negative prefix:
+ tick it, positive prefix: unmark it.]\\
+ %
+ T H & {\bf Hide} all threads.\\
+ T S & {\bf Show} all hidden threads.\\
+ T T & (M-C-t) {\bf Toggle} threading.\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\Scoring}{% formerly \Vsubmap
+ {\esamepage
+ Read about Adaptive Scoring in the online info.\\*
+ \begin{keys}{\bf A p m l}
+ V a & {\bf Add} a new score entry, specifying all elements.\\
+ V c & Specify a new score file as {\bf current}.\\
+ V e & {\bf Edit} the current score alist.\\
+ V f & Edit a score {\bf file} and make it the current one.\\
+ V m & {\bf Mark} all articles below a given score as read.\\
+ V s & Set the {\bf score} of this article.\\
+ V t & Display all score rules applied to this article ({\bf track}).\\
+ W w & List {\bf words} used in scoring.\\
+ V x & {\bf Expunge} all low-scored articles. [score]\\
+ V C & {\bf Customize} the current score file through a user-friendly
+ interface.\\
+ V F & {\bf Flush} the cache of score files.\\
+ V R & {\bf Re-score} the summary buffer.\\
+ V S & Display the {\bf score} of this article.\\
+ \bf A p m l& Make a scoring entry based on this article.\\
+ \end{keys}
+ The four letters stand for:\\*
+ \quad \B{A}ction: I)ncrease, L)ower;\\*
+ \quad \B{p}art: a)uthor (from), s)ubject, x)refs (cross-posting), d)ate, l)ines,
+ message-i)d, t)references (parent), f)ollowup, b)ody, h)ead (all headers);\\*
+ \quad \B{m}atch type:\\*
+ \qquad string: s)ubstring, e)xact, r)egexp, f)uzzy,\\*
+ \qquad date: b)efore, a)t, n)this,\\*
+ \qquad number: $<$, =, $>$;\\*
+ \quad \B{l}ifetime: t)emporary, p)ermanent, i)mmediate.
+
+ If you type the second letter in uppercase, the remaining two are assumed
+ to be s)ubstring and t)emporary.
+ If you type the third letter in uppercase, the last one is assumed to be
+ t)emporary.
+
+ \quad Extra keys for manual editing of a score file:\\*
+ \begin{keys}{C-c C-c}
+ C-c C-c & Finish editing the score file.\\
+ C-c C-d & Insert the current {\bf date} as number of days.\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\ExtractSeries}{% formerly \Xsubmap
+ {\esamepage
+ Gnus recognizes if the current article is part of a series (multipart
+ posting whose parts are identified by numbers in their subjects, e.g.{}
+ 1/10\dots10/10) and processes the series accordingly. You can mark and
+ process more than one series at a time. If the posting contains any
+ archives, they are expanded and gathered in a new group.\\*
+ \begin{keys}{X p}
+ X b & Un-{\bf binhex} these series. [p/p]\\
+ X o & Simply {\bf output} these series (no decoding). [p/p]\\
+ X p & Unpack these {\bf postscript} series. [p/p]\\
+ X s & Un-{\bf shar} these series. [p/p]\\
+ X u & {\bf Uudecode} these series. [p/p]\\
+ \end{keys}
+
+ Each one of these commands has four variants:\\*
+ \begin{keys}{X v \bf Z}
+ X \bf z & Decode these series. [p/p]\\
+ X \bf Z & Decode and save these series. [p/p]\\
+ X v \bf z & Decode and view these series. [p/p]\\
+ X v \bf Z & Decode, save and view these series. [p/p]\\
+ \end{keys}
+ where {\bf z} or {\bf Z} identifies the decoding method (b, o, p, s, u).
+
+ An alternative binding for the most-often used of these commands is\\*
+ \begin{keys}{C-c C-v C-v}
+ C-c C-v C-v & (X v u) Uudecode and view these series. [p/p]\\
+ \end{keys}
+ }}
+
+\newcommand{\ExitSummary}{% formerly \Zsubmap
+ {\esamepage
+ \begin{keys}{Z G}
+ Z Z & (q, Z Q) Exit this group.\\
+ Z E & (Q) {\bf Exit} without updating the group information.\\
+ %
+ Z c & (c) Mark all unticked articles as read ({\bf catch-up}) and exit.\\
+ Z C & Mark all articles as read ({\bf catch-up}) and exit.\\
+ %
+ Z n & Mark all articles as read and go to the {\bf next} group.\\
+ Z N & Exit and go to {\bf the} next group.\\
+ Z P & Exit and go to the {\bf previous} group.\\
+ %
+ Z G & (M-g) Check for new articles in this group ({\bf get}).\\
+ Z R & (C-x C-s) Exit this group, and then enter it again ({\bf reenter}).
+ [Prefix: select all articles, read and unread.]\\
+ Z s & Update and save the dribble buffer. [Prefix: save .newsrc* as well]\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\MsgCompositionGeneral}{%
+ Press C-c ? in the composition-buffer to get this information.\\*
+ {\esamepage
+ \begin{keys}{C-c C-m}
+ % sending
+ C-c C-c & Send message and exit. [Prefix: send via foreign server]\\
+ C-c C-s & Send message. [Prefix: send via foreign server]\\
+ C-c C-d & Don't send message (save as \textbf{draft}).\\
+ C-c C-k & \textbf{Kill} message-buffer.\\
+ C-c C-m & {\bf Mail} reply to the address near point.
+ [Prefix: include the original]\\
+ % modify headers/body
+ C-c C-o & Sort headers.\\
+ C-c C-e & \textbf{Elide} region.\\
+ C-c C-v & Kill everything outside region.\\
+ C-c C-r & Do a \textbf{Rot-13} on the body.\\
+ C-c C-w & Insert signature (from `message-signature-file').\\
+ C-c C-z & Kill everything up to signature.\\
+ C-c C-y & \textbf{Yank} original message.\\
+ C-c C-q & Fill the yanked message.\\
+ C-c M-C-y & \textbf{Yank} a buffer and quote it.\\
+ M-RET & Insert four newlines and format quoted text. [Prefix:
+ justify as well]\\
+ C-c M-r & \textbf{Rename} message buffer. [Prefix: ask for new name]\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\MsgCompositionMovementArticle}{%
+ The following functions create the header-field if necessary.\\*
+ {\esamepage
+ \begin{keys}{C-c C-f C-u}
+ C-c TAB & Move to \textbf{signature}.\\
+ C-c C-b & Move to \textbf{body}.\\
+ C-c C-f C-t & (C-c C-t) Move to \textbf{To:}.\\
+ C-c C-f C-c & Move to \textbf{Cc:}.\\
+ C-c C-f C-b & Move to \textbf{Bcc:}.\\
+ C-c C-f C-w & Move to \textbf{Fcc:}.\\
+ C-c C-f C-s & Move to \textbf{Subject:}.\\
+ C-c C-f C-r & Move to \textbf{Reply-To:}.\\
+ C-c C-f C-f & Move to \textbf{Followup-To:}.\\
+ C-c C-f C-n & (C-c C-n) Move to \textbf{Newsgroups:}.\\
+ C-c C-f C-u & Move to \textbf{Summary:}.\\
+ C-c C-f C-k & Move to \textbf{Keywords:}.\\
+ C-c C-f C-d & Move to \textbf{Distribution:}.\\
+ C-c C-f C-m & Move to \textbf{Mail-Followup-To:}.\\
+ C-c C-f C-o & Move to \textbf{From:}.\\
+ C-c C-f C-a & Insert a reasonable \textbf{Mail-Followup-To:} for
+ an unsubscribed list. [Prefix: include addresses in \textbf{Cc:}]\\
+ C-c C-f TAB & (C-c C-u) Move to \textbf{Importance:}.\\
+ C-c M-n & Insert \textbf{Disposition-Notification-To:}
+ (request receipt).\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\MsgCompositionMML}{%
+ {\esamepage
+ \begin{keys}{C-c C-m P}
+ C-c C-m f & (C-c C-a) Attach \textbf{file}.\\
+ C-c C-m b & Attach contents of \textbf{buffer}.\\
+ C-c C-m e & Attach \textbf{external} file (ftp..).\\
+ C-c C-m P & Create MIME-\textbf{preview} (new
+ buffer). [Prefix: show raw MIME preview]\\
+ C-c C-m v & \textbf{Validate} article.\\
+ C-c C-m p & Insert \textbf{part}.\\
+ C-c C-m m & Insert \textbf{multi}-part.\\
+ C-c C-m q & \textbf{Quote} region.\\
+ C-c C-m c s & Encrypt message using \textbf{S/MIME}.\\
+ C-c C-m c o & Encrypt message using PGP.\\
+ C-c C-m c p & Encrypt message using \textbf{PGP/MIME}.\\
+ C-c C-m s s & Sign message using \textbf{S/MIME}.\\
+ C-c C-m s o & Sign message using PGP.\\
+ C-c C-m s p & Sign message using \textbf{PGP/MIME}.\\
+ C-c C-m C-n & Remove security related MML tags from message.\\
+ % TODO: narrow headers (C-c C-m n) ?
+ \end{keys}
+ }
+ }
+
+%% TODO:
+\newcommand{\ServerMode}{%
+ {\esamepage
+ To enter this mode, press \^{} while in Group mode.\\*
+ \begin{keys}{SPC}
+ SPC & (RET) Browse this server.\\
+ a & {\bf Add} a new server.\\
+ c & {\bf Copy} this server.\\
+ e & {\bf Edit} a server.\\
+ k & {\bf Kill} this server. [scope]\\
+ l & {\bf List} all servers.\\
+ q & Return to the group buffer ({\bf quit}).\\
+ s & Request that the server scan its sources for new articles.\\
+ g & Request that the server regenerate its data.\\
+ y & {\bf Yank} the previously killed server.\\
+ O & Try to {\bf open} a connection to this server.\\
+ C & {\bf Close} connection to this server.\\
+ D & Mark this server as unreachable ({\bf deny}).\\
+ M-o & {\bf Open} the connection to all servers.\\
+ M-c & {\bf Close} the connection to all servers.\\
+ R & Make all denied servers into closed servers.\\
+ L & Set server status to offline.\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\BrowseServer}{%
+ {\esamepage
+ To enter this mode, press `B' while in Group mode.\\*
+ \begin{keys}{RET}
+ RET & Enter the current group.\\
+ SPC & Enter the current group and display the first article.\\
+ ? & Give a very short help message.\\
+ n & Go to the {\bf next} group. [distance]\\
+ p & Go to the {\bf previous} group. [distance]\\
+ q & (l) {\bf Quit} browse mode.\\
+ u & Subscribe to the current group. [scope]\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\GroupUnplugged}{%
+ {\esamepage
+ \begin{keys}{J S}
+ J j & Toggle plugged-state.\\
+ J s & Fetch articles from all groups for offline-reading.\\
+ J u & Fetch all eligible articles from this group.\\
+ J S & \textbf{Send} all sendable messages in the drafts group.\\
+ %
+ J c & Enter \textbf{category} buffer.\\
+ J a & \textbf{Add} this group to an Agent category [p/p].\\
+ J r & \textbf{Remove} this group from its Agent category [p/p].\\
+ J Y & Synchronize flags changed while unplugged with remote server.\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\SummaryUnplugged}{%
+ {\esamepage
+ \begin{keys}{J M-\#}
+ J \# & \textbf{Mark} the article for downloading.\\
+ J M-\# & \textbf{Unmark} the article for downloading.\\
+ @ & \textbf{Toggle} whether to download the article.\\
+ J c & Mark all undownloaded articles as read (\textbf{catch-up}).\\
+ J u & Download all downloadable articles from group.\\
+ \end{keys}
+ }
+ }
+
+\newcommand{\ServerUnplugged}{%
+ {\esamepage
+ \begin{keys}{J a}
+ J a & \textbf{Add} the current server to the list of servers covered
+ by the agent.\\
+ J r & \textbf{Remove} the current server from the list of servers covered
+ by the agent.\\
+ \end{keys}
+ }
+ }
+
+% end {gnusref} % % % % % % % % % % % % % % % % % % % % % % % % % %
+
+
+% o some things might not be updated: scoring and server modes, maybe more
+% o Gnus Unplugged category-buffer commands need to be written
+
+\begin{document}
+
+\def\progver{5.10}\def\refver{5.10-1} % program and refcard versions
+\def\date{Jan 10th, 2004}
+\def\author{Gnus Bugfixing Girls + Boys $<[email protected]$>$}
+
+\ifthenelse{\isundefined{\booklettrue}}{ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \raggedbottom\raggedright
+ \twocolumn
+ % use \tiny to shrink it to 4 pages (needs a high-resolution printer though)
+ % \tiny
+ \scriptsize
+ \pagestyle{plain}
+ \Title
+ \par
+ \Logo{refcard}
+}{
+ \setcounter{page}{0}
+ \thispagestyle{empty}
+ \vspace*{\fill}
+ \Title
+ \vspace{0.4in}
+ \Logo{booklet}
+ \vspace*{\fill}
+ \pagebreak
+}%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% TODO: how does this work ?
+%\tableofcontents
+
+\Notes
+%
+
+\section*{Group-Mode}
+\GroupModeGeneral
+ \subsection*{Group Subscribedness-Levels}
+ \GroupLevels
+ \subsection*{List Groups}
+ \ListGroups
+ \subsection*{Create/Edit Foreign Groups}
+ \CreateEditGroups
+ \subsection*{Unsubscribe, Kill and Yank Groups}
+ \SubscribeKillYankGroups
+ \subsection*{Mark Groups}
+ \MarkGroups
+ \subsection*{Group-Unplugged}
+ \GroupUnplugged
+% topics in group-mode
+ \subsection*{Group Topics}
+ \GroupTopicsGeneral
+ \subsubsection*{Topic Sorting}
+ \TopicSorting
+
+% \ifthenelse{\isundefined{\booklettrue}}{}{\pagebreak}
+
+% summary-mode
+\section*{Summary Mode}
+\SummaryModeGeneral
+ \subsection*{Select Articles}
+ \SelectArticles
+%
+ \subsection*{Threading}
+ \Threading
+%
+ \subsection*{Limiting}
+ \Limiting
+ \subsection*{Sort the Summary-Buffer}
+ \SortSummary
+ \subsection*{Score (Value) Commands}
+ \Scoring
+
+\ifthenelse{\isundefined{\booklettrue}}{% ifcard %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \subsection*{Output Articles}
+ \OutputArticles
+ \subsection*{Extract Series (Uudecode etc)}
+ \ExtractSeries
+}{}%ifcard% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \subsection*{MIME operations from the Summary-Buffer}
+ \MIMESummary
+
+\ifthenelse{\isundefined{\booklettrue}}{}{% ifbooklet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \subsection*{Extract Series (Uudecode etc)}
+ \ExtractSeries
+ \subsection*{Output Articles}
+ \OutputArticles
+}%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%
+ \subsection*{Post, Followup, Reply, Forward, Cancel}
+ \PostReplyetc
+
+\ifthenelse{\isundefined{\booklettrue}}{\newpage}{}% newpage ifcard
+
+ \subsection*{Message Composition}
+
+ \MsgCompositionGeneral
+ \subsubsection*{Jumping in message-buffer}
+ \MsgCompositionMovementArticle
+ \subsubsection*{Attachments/MML}
+ \MsgCompositionMML
+% marking articles
+ \subsection*{Mark Articles}
+ \MarkArticlesGeneral
+ \subsubsection*{Mark Based on Score}
+ \MarkByScore
+ \subsubsection*{The Process Mark}
+ \ProcessMark
+ \subsubsection*{Mark Indication-Characters}
+ \MarkCharacters
+%
+\ifthenelse{\isundefined{\booklettrue}}{\newpage}{}%
+
+ \subsection*{Summary-Unplugged}
+ \SummaryUnplugged
+ \subsection*{Mail-Group Commands}
+ \MailGroups
+ \subsection*{Draft-Group Commands}
+ \DraftGroup
+% exiting
+ \subsection*{Exit the Summary-Buffer}
+ \ExitSummary
+%
+%
+\section*{Article Mode (reading)}
+\ArticleModeGeneral
+ \subsection*{Wash the Article-Buffer}
+ \WashArticle
+ \subsubsection*{Blank Lines and Whitespace}
+ \BlankAndWhitespace
+ \subsubsection*{Picons, X-faces, Smileys}
+ \Picons
+ \subsubsection*{Time and Date}
+ \TimeAndDate
+ \subsection*{Hide/Highlight Parts of the Article}
+ \HideHighlightArticle
+ \subsection*{MIME operations from the Article-Buffer (reading)}
+ \MIMEArticleMode
+%
+%
+\section*{Server Mode}
+\ServerMode
+ \subsection*{Unplugged-Server}
+ \ServerUnplugged
+%
+%
+\section*{Browse Server Mode}
+\BrowseServer
+
+%\pagebreak
+\vspace*{\fill}
+\Copyright
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
+
+% arch-tag: be438b0e-6832-4afb-8c56-5f84743e5cd1
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 3c7c3d3d5c..fe2fcab664 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,94 @@
+2005-03-25 Katsumi Yamaoka <[email protected]>
+
+ * message.el (message-resend): Bind rfc2047-encode-encoded-words.
+
+ * 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.
+
+ * 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
+ <[email protected]>; 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 <[email protected]>; 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * rfc2047.el (rfc2047-encoded-word-regexp): Support RFC 2231
+ language tags; remove unnecessary '+'. Reported by Stefan Wiens
+ (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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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'.
+
+ * gnus-group.el (gnus-group-read-ephemeral-group): Add NUMBER
+ argument and pass it to `gnus-group-read-group'.
+
+2005-03-19 Aidan Kehoe <[email protected]>
+
+ * 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 Werner Lemberg <[email protected]>
* nnmaildir.el: Replace `illegal' with `invalid'.
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 767bdacb78..6d38626998 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -1984,7 +1984,8 @@ confirmation is required."
(defun gnus-group-read-ephemeral-group (group method &optional activate
quit-config request-only
select-articles
- parameters)
+ parameters
+ number)
"Read GROUP from METHOD as an ephemeral group.
If ACTIVATE, request the group first.
If QUIT-CONFIG, use that window configuration when exiting from the
@@ -1992,6 +1993,7 @@ ephemeral group.
If REQUEST-ONLY, don't actually read the group; just request it.
If SELECT-ARTICLES, only select those articles.
If PARAMETERS, use those as the group parameters.
+If NUMBER, fetch this number of articles.
Return the name of the group if selection was successful."
(interactive
@@ -2039,7 +2041,7 @@ Return the name of the group if selection was successful."
(when (let ((gnus-large-newsgroup gnus-large-ephemeral-newsgroup)
(gnus-fetch-old-headers
gnus-fetch-old-ephemeral-headers))
- (gnus-group-read-group t t group select-articles))
+ (gnus-group-read-group (or number t) t group select-articles))
group)
;;(error nil)
(quit
diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el
index e8c7d35414..7b3c033fdd 100644
--- a/lisp/gnus/gnus-srvr.el
+++ b/lisp/gnus/gnus-srvr.el
@@ -851,23 +851,26 @@ buffer.
(setq buffer-read-only t)
(gnus-run-hooks 'gnus-browse-mode-hook))
-(defun gnus-browse-read-group (&optional no-article)
- "Enter the group at the current line."
- (interactive)
+(defun gnus-browse-read-group (&optional no-article number)
+ "Enter the group at the current line.
+If NUMBER, fetch this number of articles."
+ (interactive "P")
(let ((group (gnus-browse-group-name)))
(if (or (not (gnus-get-info group))
(gnus-ephemeral-group-p group))
(unless (gnus-group-read-ephemeral-group
group gnus-browse-current-method nil
- (cons (current-buffer) 'browse))
+ (cons (current-buffer) 'browse)
+ nil nil nil number)
(error "Couldn't enter %s" group))
(unless (gnus-group-read-group nil no-article group)
(error "Couldn't enter %s" group)))))
-(defun gnus-browse-select-group ()
- "Select the current group."
- (interactive)
- (gnus-browse-read-group 'no))
+(defun gnus-browse-select-group (&optional number)
+ "Select the current group.
+If NUMBER, fetch this number of articles."
+ (interactive "P")
+ (gnus-browse-read-group 'no number))
(defun gnus-browse-next-group (n)
"Go to the next group."
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index de56fe2be9..9edbce2620 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -6364,7 +6364,8 @@ Optional DIGEST will use digest to forward."
(replace-match "X-From-Line: "))
;; Send it.
(let ((message-inhibit-body-encoding t)
- message-required-mail-headers)
+ message-required-mail-headers
+ rfc2047-encode-encoded-words)
(message-send-mail))
(kill-buffer (current-buffer)))
(message "Resending message to %s...done" address)))
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index 5b4200d6d5..3be6444f18 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -86,6 +86,32 @@
(multibyte-char-to-unibyte . identity))))
(eval-and-compile
+ (cond
+ ((fboundp 'replace-in-string)
+ (defalias 'mm-replace-in-string 'replace-in-string))
+ ((fboundp 'replace-regexp-in-string)
+ (defun mm-replace-in-string (string regexp newtext &optional literal)
+ "Replace all matches for REGEXP with NEWTEXT in STRING.
+If LITERAL is non-nil, insert NEWTEXT literally. Return a new
+string containing the replacements.
+
+This is a compatibility function for different Emacsen."
+ (replace-regexp-in-string regexp newtext string nil literal)))
+ (t
+ (defun mm-replace-in-string (string regexp newtext &optional literal)
+ "Replace all matches for REGEXP with NEWTEXT in STRING.
+If LITERAL is non-nil, insert NEWTEXT literally. Return a new
+string containing the replacements.
+
+This is a compatibility function for different Emacsen."
+ (let ((start 0) tail)
+ (while (string-match regexp string start)
+ (setq tail (- (length string) (match-end 0)))
+ (setq string (replace-match newtext nil literal string))
+ (setq start (- (length string) tail))))
+ string))))
+
+(eval-and-compile
(defalias 'mm-char-or-char-int-p
(cond
((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."
;; Load the Latin Unity library, if available.
(when (and (not (featurep 'latin-unity)) (locate-library "latin-unity"))
- (require 'latin-unity))
+ (ignore-errors (require 'latin-unity)))
;; Now, can we use it?
(if (featurep 'latin-unity)
@@ -651,7 +677,7 @@ But this is very much a corner case, so don't worry about it."
(defmacro mm-xemacs-find-mime-charset (begin end)
(when (featurep 'xemacs)
- `(mm-xemacs-find-mime-charset-1 ,begin ,end)))
+ `(and (featurep 'mule) (mm-xemacs-find-mime-charset-1 ,begin ,end))))
(defun mm-find-mime-charset-region (b e &optional hack-charsets)
"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 6086f422ab..538e22e0f8 100644
--- a/lisp/gnus/rfc2047.el
+++ b/lisp/gnus/rfc2047.el
@@ -119,12 +119,15 @@ The values can be:
Valid encodings are nil, `Q' and `B'. These indicate binary (no) encoding,
quoted-printable and base64 respectively.")
-(defvar rfc2047-encoding-function-alist
- '((Q . rfc2047-q-encode-region)
- (B . rfc2047-b-encode-region)
- (nil . ignore))
+(defvar rfc2047-encode-function-alist
+ '((Q . rfc2047-q-encode-string)
+ (B . rfc2047-b-encode-string)
+ (nil . identity))
"Alist of RFC2047 encodings to encoding functions.")
+(defvar rfc2047-encode-encoded-words t
+ "Whether encoded words should be encoded again.")
+
;;;
;;; Functions for encoding RFC2047 messages
;;;
@@ -166,7 +169,7 @@ This is either `base64' or `quoted-printable'."
(save-restriction
(rfc2047-narrow-to-field)
(re-search-forward ":[ \t\n]*" nil t)
- (buffer-substring (point) (point-max)))))
+ (buffer-substring-no-properties (point) (point-max)))))
(defvar rfc2047-encoding-type 'address-mime
"The type of encoding done by `rfc2047-encode-region'.
@@ -186,24 +189,25 @@ Should be called narrowed to the head of the message."
(rfc2047-narrow-to-field)
(if (not (rfc2047-encodable-p))
(prog1
- (if (and (eq (mm-body-7-or-8) '8bit)
- (mm-multibyte-p)
- (mm-coding-system-p
- (car message-posting-charset)))
- ;; 8 bit must be decoded.
- (mm-encode-coding-region
- (point-min) (point-max)
- (mm-charset-to-coding-system
- (car message-posting-charset))))
+ (if (and (eq (mm-body-7-or-8) '8bit)
+ (mm-multibyte-p)
+ (mm-coding-system-p
+ (car message-posting-charset)))
+ ;; 8 bit must be decoded.
+ (mm-encode-coding-region
+ (point-min) (point-max)
+ (mm-charset-to-coding-system
+ (car message-posting-charset))))
;; No encoding necessary, but folding is nice
- (rfc2047-fold-region
- (save-excursion
- (goto-char (point-min))
- (skip-chars-forward "^:")
- (when (looking-at ": ")
- (forward-char 2))
- (point))
- (point-max)))
+ (when nil
+ (rfc2047-fold-region
+ (save-excursion
+ (goto-char (point-min))
+ (skip-chars-forward "^:")
+ (when (looking-at ": ")
+ (forward-char 2))
+ (point))
+ (point-max))))
;; We found something that may perhaps be encoded.
(setq method nil
alist rfc2047-header-encoding-alist)
@@ -213,7 +217,6 @@ Should be called narrowed to the head of the message."
(eq (car elem) t))
(setq alist nil
method (cdr elem))))
- (goto-char (point-min))
(re-search-forward "^[^:]+: *" nil t)
(cond
((eq method 'address-mime)
@@ -267,8 +270,13 @@ The buffer may be narrowed."
(require 'message) ; for message-posting-charset
(let ((charsets
(mm-find-mime-charset-region (point-min) (point-max))))
- (and charsets
- (not (equal charsets (list (car message-posting-charset)))))))
+ (goto-char (point-min))
+ (or (and rfc2047-encode-encoded-words
+ (prog1
+ (search-forward "=?" nil t)
+ (goto-char (point-min))))
+ (and charsets
+ (not (equal charsets (list (car message-posting-charset))))))))
;; Use this syntax table when parsing into regions that may need
;; encoding. Double quotes are string delimiters, backslash is
@@ -292,8 +300,8 @@ The buffer may be narrowed."
table))))
(modify-syntax-entry ?\\ "\\" table)
(modify-syntax-entry ?\" "\"" table)
- (modify-syntax-entry ?\( "." table)
- (modify-syntax-entry ?\) "." table)
+ (modify-syntax-entry ?\( "(" table)
+ (modify-syntax-entry ?\) ")" table)
(modify-syntax-entry ?\< "." table)
(modify-syntax-entry ?\> "." table)
(modify-syntax-entry ?\[ "." table)
@@ -310,183 +318,341 @@ By default, the region is treated as containing RFC2822 addresses.
Dynamically bind `rfc2047-encoding-type' to change that."
(save-restriction
(narrow-to-region b e)
- (if (eq 'mime rfc2047-encoding-type)
- ;; Simple case. Treat as single word after any initial ASCII
- ;; part and before any tailing ASCII part. The leading ASCII
- ;; is relevant for instance in Subject headers with `Re:' for
- ;; interoperability with non-MIME clients, and we might as
- ;; well avoid the tail too.
- (progn
- (goto-char (point-min))
- ;; Does it need encoding?
- (skip-chars-forward "\000-\177")
- (unless (eobp)
- (skip-chars-backward "^ \n") ; beginning of space-delimited word
- (rfc2047-encode (point) (progn
- (goto-char e)
- (skip-chars-backward "\000-\177")
- (skip-chars-forward "^ \n")
- ;; end of space-delimited word
- (point)))))
- ;; `address-mime' case -- take care of quoted words, comments.
- (with-syntax-table rfc2047-syntax-table
- (let ((start) ; start of current token
- end ; end of current token
- ;; Whether there's an encoded word before the current
- ;; token, either immediately or separated by space.
- last-encoded)
+ (let ((encodable-regexp (if rfc2047-encode-encoded-words
+ "[^\000-\177]+\\|=\\?"
+ "[^\000-\177]+"))
+ start ; start of current token
+ end begin csyntax
+ ;; Whether there's an encoded word before the current token,
+ ;; either immediately or separated by space.
+ last-encoded
+ (orig-text (buffer-substring-no-properties b e)))
+ (if (eq 'mime rfc2047-encoding-type)
+ ;; Simple case. Continuous words in which all those contain
+ ;; non-ASCII characters are encoded collectively. Encoding
+ ;; ASCII words, including `Re:' used in Subject headers, is
+ ;; avoided for interoperability with non-MIME clients and
+ ;; for making it easy to find keywords.
+ (progn
+ (goto-char (point-min))
+ (while (progn (skip-chars-forward " \t\n")
+ (not (eobp)))
+ (setq start (point))
+ (while (and (looking-at "[ \t\n]*\\([^ \t\n]+\\)")
+ (progn
+ (setq end (match-end 0))
+ (re-search-forward encodable-regexp end t)))
+ (goto-char end))
+ (if (> (point) start)
+ (rfc2047-encode start (point))
+ (goto-char end))))
+ ;; `address-mime' case -- take care of quoted words, comments.
+ (with-syntax-table rfc2047-syntax-table
(goto-char (point-min))
- (condition-case nil ; in case of unbalanced quotes
+ (condition-case err ; in case of unbalanced quotes
;; Look for rfc2822-style: sequences of atoms, quoted
;; strings, specials, whitespace. (Specials mustn't be
;; encoded.)
(while (not (eobp))
- (setq start (point))
;; Skip whitespace.
- (unless (= 0 (skip-chars-forward " \t\n"))
- (setq start (point)))
+ (skip-chars-forward " \t\n")
+ (setq start (point))
(cond
((not (char-after))) ; eob
;; else token start
- ((eq ?\" (char-syntax (char-after)))
+ ((eq ?\" (setq csyntax (char-syntax (char-after))))
;; Quoted word.
(forward-sexp)
(setq end (point))
;; Does it need encoding?
(goto-char start)
- (skip-chars-forward "\000-\177" end)
- (if (= end (point))
- (setq last-encoded nil)
- ;; It needs encoding. Strip the quotes first,
- ;; since encoded words can't occur in quotes.
- (goto-char end)
- (delete-backward-char 1)
- (goto-char start)
- (delete-char 1)
- (when last-encoded
- ;; There was a preceding quoted word. We need
- ;; to include any separating whitespace in this
- ;; word to avoid it getting lost.
- (skip-chars-backward " \t")
- ;; A space is needed between the encoded words.
- (insert ? )
- (setq start (point)
- end (1+ end)))
- ;; Adjust the end position for the deleted quotes.
- (rfc2047-encode start (- end 2))
- (setq last-encoded t))) ; record that it was encoded
- ((eq ?. (char-syntax (char-after)))
+ (if (re-search-forward encodable-regexp end 'move)
+ ;; It needs encoding. Strip the quotes first,
+ ;; since encoded words can't occur in quotes.
+ (progn
+ (goto-char end)
+ (delete-backward-char 1)
+ (goto-char start)
+ (delete-char 1)
+ (when last-encoded
+ ;; There was a preceding quoted word. We need
+ ;; to include any separating whitespace in this
+ ;; word to avoid it getting lost.
+ (skip-chars-backward " \t")
+ ;; A space is needed between the encoded words.
+ (insert ? )
+ (setq start (point)
+ end (1+ end)))
+ ;; Adjust the end position for the deleted quotes.
+ (rfc2047-encode start (- end 2))
+ (setq last-encoded t)) ; record that it was encoded
+ (setq last-encoded nil)))
+ ((eq ?. csyntax)
;; Skip other delimiters, but record that they've
;; potentially separated quoted words.
(forward-char)
(setq last-encoded nil))
+ ((eq ?\) csyntax)
+ (error "Unbalanced parentheses"))
+ ((eq ?\( csyntax)
+ ;; Look for the end of parentheses.
+ (forward-list)
+ ;; Encode text as an unstructured field.
+ (let ((rfc2047-encoding-type 'mime))
+ (rfc2047-encode-region (1+ start) (1- (point))))
+ (skip-chars-forward ")"))
(t ; normal token/whitespace sequence
;; Find the end.
- (forward-word 1)
- (skip-chars-backward " \t")
+ ;; Skip one ASCII word, or encode continuous words
+ ;; in which all those contain non-ASCII characters.
+ (setq end nil)
+ (while (not (or end (eobp)))
+ (when (looking-at "[\000-\177]+")
+ (setq begin (point)
+ end (match-end 0))
+ (when (progn
+ (while (and (or (re-search-forward
+ "[ \t\n]\\|\\Sw" end 'move)
+ (setq end nil))
+ (eq ?\\ (char-syntax (char-before))))
+ ;; Skip backslash-quoted characters.
+ (forward-char))
+ end)
+ (setq end (match-beginning 0))
+ (if rfc2047-encode-encoded-words
+ (progn
+ (goto-char begin)
+ (when (search-forward "=?" end 'move)
+ (goto-char (match-beginning 0))
+ (setq end nil)))
+ (goto-char end))))
+ ;; Where the value nil of `end' means there may be
+ ;; text to have to be encoded following the point.
+ ;; Otherwise, the point reached to the end of ASCII
+ ;; words separated by whitespace or a special char.
+ (unless end
+ (when (looking-at encodable-regexp)
+ (goto-char (setq begin (match-end 0)))
+ (while (and (looking-at "[ \t\n]+\\([^ \t\n]+\\)")
+ (setq end (match-end 0))
+ (progn
+ (while (re-search-forward
+ encodable-regexp end t))
+ (< begin (point)))
+ (goto-char begin)
+ (or (not (re-search-forward "\\Sw" end t))
+ (progn
+ (goto-char (match-beginning 0))
+ nil)))
+ (goto-char end))
+ (when (looking-at "[^ \t\n]+")
+ (setq end (match-end 0))
+ (if (re-search-forward "\\Sw+" end t)
+ ;; There are special characters better
+ ;; to be encoded so that MTAs may parse
+ ;; them safely.
+ (cond ((= end (point)))
+ ((looking-at (concat "\\sw*\\("
+ encodable-regexp
+ "\\)"))
+ (setq end nil))
+ (t
+ (goto-char (1- (match-end 0)))
+ (unless (= (point) (match-beginning 0))
+ ;; Separate encodable text and
+ ;; delimiter.
+ (insert " "))))
+ (goto-char end)
+ (skip-chars-forward " \t\n")
+ (if (and (looking-at "[^ \t\n]+")
+ (string-match encodable-regexp
+ (match-string 0)))
+ (setq end nil)
+ (goto-char end)))))))
+ (skip-chars-backward " \t\n")
(setq end (point))
- ;; Deal with encoding and leading space as for
- ;; quoted words.
(goto-char start)
- (skip-chars-forward "\000-\177" end)
- (if (= end (point))
- (setq last-encoded nil)
- (when last-encoded
- (goto-char start)
- (skip-chars-backward " \t")
- (insert ? )
- (setq start (point)
- end (1+ end)))
- (rfc2047-encode start end)
- (setq last-encoded t)))))
+ (if (re-search-forward encodable-regexp end 'move)
+ (progn
+ (unless (memq (char-before start) '(nil ?\t ? ))
+ (if (progn
+ (goto-char start)
+ (skip-chars-backward "^ \t\n")
+ (and (looking-at "\\Sw+")
+ (= (match-end 0) start)))
+ ;; Also encode bogus delimiters.
+ (setq start (point))
+ ;; Separate encodable text and delimiter.
+ (goto-char start)
+ (insert " ")
+ (setq start (1+ start)
+ end (1+ end))))
+ (rfc2047-encode start end)
+ (setq last-encoded t))
+ (setq last-encoded nil)))))
(error
- (error "Invalid data for rfc2047 encoding: %s"
- (buffer-substring b e)))))))
- (rfc2047-fold-region b (point))))
+ (if (or debug-on-quit debug-on-error)
+ (signal (car err) (cdr err))
+ (error "Invalid data for rfc2047 encoding: %s"
+ (mm-replace-in-string orig-text "[ \t\n]+" " "))))))))
+ (rfc2047-fold-region b (point))
+ (goto-char (point-max))))
(defun rfc2047-encode-string (string)
"Encode words in STRING.
By default, the string is treated as containing addresses (see
`rfc2047-encoding-type')."
- (with-temp-buffer
+ (mm-with-multibyte-buffer
(insert string)
(rfc2047-encode-region (point-min) (point-max))
(buffer-string)))
+(defvar rfc2047-encode-max-chars 76
+ "Maximum characters of each header line that contain encoded-words.
+If it is nil, encoded-words will not be folded. Too small value may
+cause an error. Don't change this for no particular reason.")
+
+(defun rfc2047-encode-1 (column string cs encoder start crest tail
+ &optional eword)
+ "Subroutine used by `rfc2047-encode'."
+ (cond ((string-equal string "")
+ (or eword ""))
+ ((not rfc2047-encode-max-chars)
+ (concat start
+ (funcall encoder (if cs
+ (mm-encode-coding-string string cs)
+ string))
+ "?="))
+ ((>= column rfc2047-encode-max-chars)
+ (when eword
+ (cond ((string-match "\n[ \t]+\\'" eword)
+ ;; Reomove a superfluous empty line.
+ (setq eword (substring eword 0 (match-beginning 0))))
+ ((string-match "(+\\'" eword)
+ ;; Break the line before the open parenthesis.
+ (setq crest (concat crest (match-string 0 eword))
+ eword (substring eword 0 (match-beginning 0))))))
+ (rfc2047-encode-1 (length crest) string cs encoder start " " tail
+ (concat eword "\n" crest)))
+ (t
+ (let ((index 0)
+ (limit (1- (length string)))
+ (prev "")
+ next len)
+ (while (and prev
+ (<= index limit))
+ (setq next (concat start
+ (funcall encoder
+ (if cs
+ (mm-encode-coding-string
+ (substring string 0 (1+ index))
+ cs)
+ (substring string 0 (1+ index))))
+ "?=")
+ len (+ column (length next)))
+ (if (> len rfc2047-encode-max-chars)
+ (setq next prev
+ prev nil)
+ (if (or (< index limit)
+ (<= (+ len (or (string-match "\n" tail)
+ (length tail)))
+ rfc2047-encode-max-chars))
+ (setq prev next
+ index (1+ index))
+ (if (string-match "\\`)+" tail)
+ ;; Break the line after the close parenthesis.
+ (setq tail (concat (substring tail 0 (match-end 0))
+ "\n "
+ (substring tail (match-end 0)))
+ prev next
+ index (1+ index))
+ (setq next prev
+ prev nil)))))
+ (if (> index limit)
+ (concat eword next tail)
+ (if (= 0 index)
+ (if (and eword
+ (string-match "(+\\'" eword))
+ (setq crest (concat crest (match-string 0 eword))
+ eword (substring eword 0 (match-beginning 0)))
+ (setq eword (concat eword next)))
+ (setq crest " "
+ eword (concat eword next)))
+ (when (string-match "\n[ \t]+\\'" eword)
+ ;; Reomove a superfluous empty line.
+ (setq eword (substring eword 0 (match-beginning 0))))
+ (rfc2047-encode-1 (length crest) (substring string index)
+ cs encoder start " " tail
+ (concat eword "\n" crest)))))))
+
(defun rfc2047-encode (b e)
"Encode the word(s) in the region B to E.
-By default, the region is treated as containing addresses (see
-`rfc2047-encoding-type')."
- (let* ((mime-charset (mm-find-mime-charset-region b e))
- (cs (if (> (length mime-charset) 1)
- ;; Fixme: Instead of this, try to break region into
- ;; parts that can be encoded separately.
- (error "Can't rfc2047-encode `%s'"
- (buffer-substring b e))
- (setq mime-charset (car mime-charset))
- (mm-charset-to-coding-system mime-charset)))
- ;; Fixme: Better, calculate the number of non-ASCII
- ;; characters, at least for 8-bit charsets.
- (encoding (or (cdr (assq mime-charset
+Point moves to the end of the region."
+ (let ((mime-charset (or (mm-find-mime-charset-region b e) (list 'us-ascii)))
+ cs encoding tail crest eword)
+ (cond ((> (length mime-charset) 1)
+ (error "Can't rfc2047-encode `%s'"
+ (buffer-substring-no-properties b e)))
+ ((= (length mime-charset) 1)
+ (setq mime-charset (car mime-charset)
+ cs (mm-charset-to-coding-system mime-charset))
+ (unless (and (mm-multibyte-p)
+ (mm-coding-system-p cs))
+ (setq cs nil))
+ (save-restriction
+ (narrow-to-region b e)
+ (setq encoding
+ (or (cdr (assq mime-charset
rfc2047-charset-encoding-alist))
;; For the charsets that don't have a preferred
;; encoding, choose the one that's shorter.
- (save-restriction
- (narrow-to-region b e)
- (if (eq (rfc2047-qp-or-base64) 'base64)
- 'B
- 'Q))))
- (start (concat
- "=?" (downcase (symbol-name mime-charset)) "?"
- (downcase (symbol-name encoding)) "?"))
- (factor (case mime-charset
- ((iso-8859-5 iso-8859-7 iso-8859-8 koi8-r) 1)
- ((big5 gb2312 euc-kr) 2)
- (utf-8 4)
- (t 8)))
- (pre (- b (save-restriction
- (widen)
- (rfc2047-point-at-bol))))
- ;; encoded-words must not be longer than 75 characters,
- ;; including charset, encoding etc. This leaves us with
- ;; 75 - (length start) - 2 - 2 characters. The last 2 is for
- ;; possible base64 padding. In the worst case (iso-2022-*)
- ;; each character expands to 8 bytes which is expanded by a
- ;; factor of 4/3 by base64 encoding.
- (length (floor (- 75 (length start) 4) (* factor (/ 4.0 3.0))))
- ;; Limit line length to 76 characters.
- (length1 (max 1 (floor (- 76 (length start) 4 pre)
- (* factor (/ 4.0 3.0)))))
- (first t))
- (if mime-charset
- (save-restriction
- (narrow-to-region b e)
- (when (eq encoding 'B)
- ;; break into lines before encoding
- (goto-char (point-min))
- (while (not (eobp))
- (if first
- (progn
- (goto-char (min (point-max) (+ length1 (point))))
- (setq first nil))
- (goto-char (min (point-max) (+ length (point)))))
- (unless (eobp)
- (insert ?\n)))
- (setq first t))
- (if (and (mm-multibyte-p)
- (mm-coding-system-p cs))
- (mm-encode-coding-region (point-min) (point-max) cs))
- (funcall (cdr (assq encoding rfc2047-encoding-function-alist))
- (point-min) (point-max))
- (goto-char (point-min))
- (while (not (eobp))
- (unless first
- (insert ? ))
- (setq first nil)
- (insert start)
- (end-of-line)
- (insert "?=")
- (forward-line 1))))))
+ (if (eq (rfc2047-qp-or-base64) 'base64)
+ 'B
+ 'Q)))
+ (widen)
+ (goto-char e)
+ (skip-chars-forward "^ \t\n")
+ ;; `tail' may contain a close parenthesis.
+ (setq tail (buffer-substring-no-properties e (point)))
+ (goto-char b)
+ (setq b (point-marker)
+ e (set-marker (make-marker) e))
+ (rfc2047-fold-region (rfc2047-point-at-bol) b)
+ (goto-char b)
+ (skip-chars-backward "^ \t\n")
+ (unless (= 0 (skip-chars-backward " \t"))
+ ;; `crest' may contain whitespace and an open parenthesis.
+ (setq crest (buffer-substring-no-properties (point) b)))
+ (setq eword (rfc2047-encode-1
+ (- b (rfc2047-point-at-bol))
+ (mm-replace-in-string
+ (buffer-substring-no-properties b e)
+ "\n\\([ \t]?\\)" "\\1")
+ cs
+ (or (cdr (assq encoding
+ rfc2047-encode-function-alist))
+ 'identity)
+ (concat "=?" (downcase (symbol-name mime-charset))
+ "?" (upcase (symbol-name encoding)) "?")
+ (or crest " ")
+ tail))
+ (delete-region (if (eq (aref eword 0) ?\n)
+ (if (bolp)
+ ;; The line was folded before encoding.
+ (1- (point))
+ (point))
+ (goto-char b))
+ (+ e (length tail)))
+ ;; `eword' contains `crest' and `tail'.
+ (insert eword)
+ (set-marker b nil)
+ (set-marker e nil)
+ (unless (or (/= 0 (length tail))
+ (eobp)
+ (looking-at "[ \t\n)]"))
+ (insert " "))))
+ (t
+ (goto-char e)))))
(defun rfc2047-fold-field ()
"Fold the current header field."
@@ -512,6 +678,7 @@ By default, the region is treated as containing addresses (see
(goto-char (or break qword-break))
(setq break nil
qword-break nil)
+ (skip-chars-backward " \t")
(if (looking-at "[ \t]")
(insert ?\n)
(insert "\n "))
@@ -533,10 +700,8 @@ By default, the region is treated as containing addresses (see
(forward-char 1))
((memq (char-after) '(? ?\t))
(skip-chars-forward " \t")
- (if first
- ;; Don't break just after the header name.
- (setq first nil)
- (setq break (1- (point)))))
+ (unless first ;; Don't break just after the header name.
+ (setq break (point))))
((not break)
(if (not (looking-at "=\\?[^=]"))
(if (eq (char-after) ?=)
@@ -547,15 +712,17 @@ By default, the region is treated as containing addresses (see
(setq qword-break (point)))
(skip-chars-forward "^ \t\n\r")))
(t
- (skip-chars-forward "^ \t\n\r"))))
+ (skip-chars-forward "^ \t\n\r")))
+ (setq first nil))
(when (and (or break qword-break)
(> (- (point) bol) 76))
(goto-char (or break qword-break))
(setq break nil
qword-break nil)
- (if (looking-at "[ \t]")
- (insert ?\n)
- (insert "\n "))
+ (if (or (> 0 (skip-chars-backward " \t"))
+ (looking-at "[ \t]"))
+ (insert ?\n)
+ (insert "\n "))
(setq bol (1- (point)))
;; Don't break before the first non-LWSP characters.
(skip-chars-forward " \t")
@@ -590,48 +757,48 @@ By default, the region is treated as containing addresses (see
(setq eol (rfc2047-point-at-eol))
(forward-line 1)))))
-(defun rfc2047-b-encode-region (b e)
- "Base64-encode the header contained in region B to E."
- (save-restriction
- (narrow-to-region (goto-char b) e)
- (while (not (eobp))
- (base64-encode-region (point) (progn (end-of-line) (point)) t)
- (if (and (bolp) (eolp))
- (delete-backward-char 1))
- (forward-line))))
-
-(defun rfc2047-q-encode-region (b e)
- "Quoted-printable-encode the header in region B to E."
- (save-excursion
- (save-restriction
- (narrow-to-region (goto-char b) e)
- (let ((bol (save-restriction
- (widen)
- (rfc2047-point-at-bol))))
- (quoted-printable-encode-region
- b e nil
- ;; = (\075), _ (\137), ? (\077) are used in the encoded word.
- ;; Avoid using 8bit characters.
- ;; This list excludes `especials' (see the RFC2047 syntax),
- ;; meaning that some characters in non-structured fields will
- ;; get encoded when they con't need to be. The following is
- ;; what it used to be.
-;;; ;; Equivalent to "^\000-\007\011\013\015-\037\200-\377=_?"
-;;; "\010\012\014\040-\074\076\100-\136\140-\177")
- "-\b\n\f !#-'*+0-9A-Z\\^`-~\d")
- (subst-char-in-region (point-min) (point-max) ? ?_)
- ;; The size of QP encapsulation is about 20, so set limit to
- ;; 56=76-20.
- (unless (< (- (point-max) (point-min)) 56)
- ;; Don't break if it could fit in one line.
- ;; Let rfc2047-encode-region break it later.
- (goto-char (1+ (point-min)))
- (while (and (not (bobp)) (not (eobp)))
- (goto-char (min (point-max) (+ 56 bol)))
- (search-backward "=" (- (point) 2) t)
- (unless (or (bobp) (eobp))
- (insert ?\n)
- (setq bol (point)))))))))
+(defun rfc2047-b-encode-string (string)
+ "Base64-encode the header contained in STRING."
+ (base64-encode-string string t))
+
+(defun rfc2047-q-encode-string (string)
+ "Quoted-printable-encode the header in STRING."
+ (mm-with-unibyte-buffer
+ (insert string)
+ (quoted-printable-encode-region
+ (point-min) (point-max) nil
+ ;; = (\075), _ (\137), ? (\077) are used in the encoded word.
+ ;; Avoid using 8bit characters.
+ ;; This list excludes `especials' (see the RFC2047 syntax),
+ ;; meaning that some characters in non-structured fields will
+ ;; get encoded when they con't need to be. The following is
+ ;; what it used to be.
+ ;;; ;; Equivalent to "^\000-\007\011\013\015-\037\200-\377=_?"
+ ;;; "\010\012\014\040-\074\076\100-\136\140-\177")
+ "-\b\n\f !#-'*+0-9A-Z\\^`-~\d")
+ (subst-char-in-region (point-min) (point-max) ? ?_)
+ (buffer-string)))
+
+(defun rfc2047-encode-parameter (param value)
+ "Return and PARAM=VALUE string encoded in the RFC2047-like style.
+This is a replacement for the `rfc2231-encode-string' function.
+
+When attaching files as MIME parts, we should use the RFC2231 encoding
+to specify the file names containing non-ASCII characters. However,
+many mail softwares don't support it in practice and recipients won't
+be able to extract files with correct names. Instead, the RFC2047-like
+encoding is acceptable generally. This function provides the very
+RFC2047-like encoding, resigning to such a regrettable trend. To use
+it, put the following line in your ~/.gnus.el file:
+
+\(defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter)
+"
+ (let* ((rfc2047-encoding-type 'mime)
+ (rfc2047-encode-max-chars nil)
+ (string (rfc2047-encode-string value)))
+ (if (string-match (concat "[" ietf-drums-tspecials "]") string)
+ (format "%s=%S" param string)
+ (concat param "=" string))))
;;;
;;; Functions for decoding RFC2047 messages
@@ -639,8 +806,8 @@ By default, the region is treated as containing addresses (see
(eval-and-compile
(defconst rfc2047-encoded-word-regexp
- "=\\?\\([^][\000-\040()<>@,\;:\\\"/?.=]+\\)\\?\\(B\\|Q\\)\
-\\?\\([!->@-~ +]*\\)\\?="))
+ "=\\?\\([^][\000-\040()<>@,\;:*\\\"/?.=]+\\)\\(\\*[^?]+\\)?\
+\\?\\(B\\|Q\\)\\?\\([!->@-~ ]*\\)\\?="))
(defvar rfc2047-quote-decoded-words-containing-tspecials nil
"If non-nil, quote decoded words containing special characters.")
@@ -671,7 +838,7 @@ By default, the region is treated as containing addresses (see
"\\(\n?[ \t]\\)+"
"\\(" rfc2047-encoded-word-regexp "\\)"))
nil t)
- (delete-region (goto-char (match-end 1)) (match-beginning 6)))
+ (delete-region (goto-char (match-end 1)) (match-beginning 7)))
;; Decode the encoded words.
(setq b (goto-char (point-min)))
(while (re-search-forward rfc2047-encoded-word-regexp nil t)
@@ -774,7 +941,20 @@ By default, the region is treated as containing addresses (see
mail-parse-charset
(not (eq mail-parse-charset 'us-ascii))
(not (eq mail-parse-charset 'gnus-decoded)))
- (mm-decode-coding-string string mail-parse-charset)
+ ;; `decode-coding-string' in Emacs offers a third optional
+ ;; arg NOCOPY to avoid consing a new string if the decoding
+ ;; is "trivial". Unfortunately it currently doesn't
+ ;; consider anything else than a `nil' coding system
+ ;; trivial.
+ ;; `rfc2047-decode-string' is called multiple times for each
+ ;; article during summary buffer generation, and we really
+ ;; want to avoid unnecessary consing. So we bypass
+ ;; `decode-coding-string' if the string is purely ASCII.
+ (if (and (fboundp 'detect-coding-string)
+ ;; string is purely ASCII
+ (eq (detect-coding-string string t) 'undecided))
+ string
+ (mm-decode-coding-string string mail-parse-charset))
(mm-string-as-multibyte string)))))
(defun rfc2047-parse-and-decode (word)
@@ -787,8 +967,8 @@ decodable."
(condition-case nil
(rfc2047-decode
(match-string 1 word)
- (upcase (match-string 2 word))
- (match-string 3 word))
+ (string-to-char (match-string 3 word))
+ (match-string 4 word))
(error word))
word))) ; un-decodable
@@ -809,7 +989,7 @@ decodable."
(defun rfc2047-decode (charset encoding string)
"Decode STRING from the given MIME CHARSET in the given ENCODING.
-Valid ENCODINGs are \"B\" and \"Q\".
+Valid ENCODINGs are the characters \"B\" and \"Q\".
If your Emacs implementation can't decode CHARSET, return nil."
(if (stringp charset)
(setq charset (intern (downcase charset))))
@@ -824,18 +1004,17 @@ If your Emacs implementation can't decode CHARSET, return nil."
(memq 'gnus-unknown mail-parse-ignored-charsets))
(setq cs (mm-charset-to-coding-system mail-parse-charset)))
(when cs
- (when (and (eq cs 'ascii)
- mail-parse-charset)
- (setq cs mail-parse-charset))
+ (when (eq cs 'ascii)
+ (setq cs (or mail-parse-charset 'raw-text)))
(mm-decode-coding-string
(cond
- ((equal "B" encoding)
+ ((char-equal ?B encoding)
(base64-decode-string
(rfc2047-pad-base64 string)))
- ((equal "Q" encoding)
+ ((char-equal ?Q encoding)
(quoted-printable-decode-string
- (mm-replace-chars-in-string string ?_ ? )))
- (t (error "Invalid encoding: %s" encoding)))
+ (mm-subst-char-in-string ?_ ? string t)))
+ (t (error "Invalid encoding: %c" encoding)))
cs))))
(provide 'rfc2047)
diff --git a/man/ChangeLog b/man/ChangeLog
index 6da44c9a8e..8efe377595 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,12 @@
+2005-03-25 Katsumi Yamaoka <[email protected]>
+
+ * emacs-mime.texi (Display Customization): Markup fixes.
+ (rfc2047): Update.
+
+2005-03-23 Reiner Steib <[email protected]>
+
+ * gnus-faq.texi: Replaced with auto-generated version.
+
2005-03-29 Richard M. Stallman <[email protected]>
* 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 c128ed096c..11a07df536 100644
--- a/man/emacs-mime.texi
+++ b/man/emacs-mime.texi
@@ -387,15 +387,15 @@ The program used to start an external terminal.
@item mm-enable-external
@vindex mm-enable-external
-Indicate whether external MIME handlers should be used.
+Indicate whether external @acronym{MIME} handlers should be used.
-If @code{t}, all defined external MIME handlers are used. If
+If @code{t}, all defined external @acronym{MIME} handlers are used. If
@code{nil}, files are saved to disk (@code{mailcap-save-binary-file}).
If it is the symbol @code{ask}, you are prompted before the external
@acronym{MIME} handler is invoked.
When you launch an attachment through mailcap (@pxref{mailcap}) an
-attempt is made to use a safe viewer with the safest options--this isn't
+attempt is made to use a safe viewer with the safest options---this isn't
the case if you save it to disk and launch it in a different way
(command line or double-clicking). Anyhow, if you want to be sure not
to launch any external programs, set this variable to @code{nil} or
@@ -1327,8 +1327,8 @@ RFC2047 specifies two forms of encoding---@code{Q} (a
Quoted-Printable-like encoding) and @code{B} (base64). This alist
specifies which charset should use which encoding.
-@item rfc2047-encoding-function-alist
-@vindex rfc2047-encoding-function-alist
+@item rfc2047-encode-function-alist
+@vindex rfc2047-encode-function-alist
This is an alist of encoding / function pairs. The encodings are
@code{Q}, @code{B} and @code{nil}.
@@ -1336,6 +1336,11 @@ This is an alist of encoding / function pairs. The encodings are
@vindex rfc2047-encoded-word-regexp
When decoding words, this library looks for matches to this regexp.
+@item rfc2047-encode-encoded-words
+@vindex rfc2047-encode-encoded-words
+The boolean variable specifies whether encoded words
+(e.g. @samp{=?hello?=}) should be encoded again.
+
@end table
Those were the variables, and these are this functions:
@@ -1366,6 +1371,24 @@ Decode the encoded words in the region.
@findex rfc2047-decode-string
Decode a string and return the results.
+@item rfc2047-encode-parameter
+@findex rfc2047-encode-parameter
+Encode a parameter in the RFC2047-like style. This is a replacement for
+the @code{rfc2231-encode-string} function. @xref{rfc2231}.
+
+When attaching files as @acronym{MIME} parts, we should use the RFC2231
+encoding to specify the file names containing non-@acronym{ASCII}
+characters. However, many mail softwares don't support it in practice
+and recipients won't be able to extract files with correct names.
+Instead, the RFC2047-like encoding is acceptable generally. This
+function provides the very RFC2047-like encoding, resigning to such a
+regrettable trend. To use it, put the following line in your
+@file{~/.gnus.el} file:
+
+@lisp
+(defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter)
+@end lisp
+
@end table
diff --git a/man/gnus-faq.texi b/man/gnus-faq.texi
index 42266aa464..742227b64f 100644
--- a/man/gnus-faq.texi
+++ b/man/gnus-faq.texi
@@ -1,210 +1,203 @@
-@c Insert "\input texinfo" at 1st line before texing this file alone.
-@c -*-texinfo-*-
-@c Copyright (C) 1995, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
+@c \input texinfo @c -*-texinfo-*-
+@c Uncomment 1st line before texing this file alone.
+@c %**start of header
+@c Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+@c
+@c Do not modify this file, it was generated from gnus-faq.xml, available from
+@c <URL:http://my.gnus.org/FAQ/>.
+@c
@setfilename gnus-faq.info
-
-@c Frequently Asked Questions, FAQ - Introduction, Emacs for Heathens, Top
+@settitle Frequently Asked Questions
+@c %**end of header
+@c
@node Frequently Asked Questions
-@comment node-name, next, previous, up
-
-@c @chapter Frequently Asked Questions
@section Frequently Asked Questions
-@cindex FAQ
-@cindex Frequently Asked Questions
-
-@c - Uncomment @chapter, comment @section
-@c - run (texinfo-every-node-update)
-@c - revert it.
@menu
-* FAQ - Introduction:: About Gnus and this FAQ.
-* FAQ 1 - Installation:: Installation of Gnus.
-* FAQ 2 - Startup / Group buffer:: Start up questions and the first
- buffer Gnus shows you.
-* FAQ 3 - Getting messages:: Making Gnus read your mail and news.
-* FAQ 4 - Reading messages:: How to efficiently read messages.
-* FAQ 5 - Composing messages:: Composing mails or Usenet postings.
-* FAQ 6 - Old messages:: Importing, archiving, searching
- and deleting messages.
-* FAQ 7 - Gnus in a dial-up environment:: Reading mail and news while offline.
-* FAQ 8 - Getting help:: When this FAQ isn't enough.
-* FAQ 9 - Tuning Gnus:: How to make Gnus faster.
-* FAQ - Glossary:: Terms used in the FAQ explained.
+* FAQ - Changes::
+* FAQ - Introduction:: About Gnus and this FAQ.
+* FAQ 1 - Installation FAQ:: Installation of Gnus.
+* FAQ 2 - Startup / Group buffer:: Start up questions and the
+ first buffer Gnus shows you.
+* FAQ 3 - Getting Messages:: Making Gnus read your mail
+ and news.
+* FAQ 4 - Reading messages:: How to efficiently read
+ messages.
+* FAQ 5 - Composing messages:: Composing mails or Usenet
+ postings.
+* FAQ 6 - Old messages:: Importing, archiving,
+ searching and deleting messages.
+* FAQ 7 - Gnus in a dial-up environment:: Reading mail and news while
+ offline.
+* FAQ 8 - Getting help:: When this FAQ isn't enough.
+* FAQ 9 - Tuning Gnus:: How to make Gnus faster.
+* FAQ - Glossary:: Terms used in the FAQ
+ explained.
@end menu
-
@subheading Abstract
- This is the new Gnus Frequently Asked Questions list. If you have a
-Web browser, the official hypertext version is at
-@uref{http://my.gnus.org/FAQ/}, the Docbook source is available from
-@uref{http://sourceforge.net/projects/gnus/}.
-
+This is the new Gnus Frequently Asked Questions list.
+If you have a Web browser, the official hypertext version is at
+@uref{http://my.gnus.org/FAQ/},
+the Docbook source is available from
+@uref{http://sourceforge.net/projects/gnus/, http://sourceforge.net}.
- Please submit features and suggestions to the
- @email{faq-discuss@@my.gnus.org,FAQ discussion list}.
- The list is protected against junk mail with
- @uref{http://smarden.org/qconfirm/index.html,qconfirm, qconfirm}. As
- a subscriber, your submissions will automatically pass. You can
- also subscribe to the list by sending a blank email to
- @email{faq-discuss-subscribe@@my.gnus.org}
- and
- @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss,browse
- the archive, browse the archive}.
-
-@node FAQ - Introduction, FAQ 1 - Installation, Frequently Asked Questions, Frequently Asked Questions
-@comment node-name, next, previous, up
-@heading Introduction
+Please submit features and suggestions to the
+@email{faq-discuss@@my.gnus.org, FAQ discussion list}.
+The list is protected against junk mail with
+@uref{http://smarden.org/qconfirm/index.html, qconfirm}. As
+a subscriber, your submissions will automatically pass. You can
+also subscribe to the list by sending a blank email to
+@email{faq-discuss-subscribe@@my.gnus.org, faq-discuss-subscribe@@my.gnus.org}
+and @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss, browse
+the archive}.
-This is the Gnus Frequently Asked Questions list.
+@node FAQ - Changes
+@subheading Changes
-Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented
- as a part of Emacs. It's been around in some form for almost a decade
- now, and has been distributed as a standard part of Emacs for much of
- that time. Gnus 5 is the latest (and greatest) incarnation. The
- original version was called GNUS, and was written by Masanobu UMEDA.
- When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and
- decided to rewrite Gnus.
-
- Its biggest strength is the fact that it is extremely
- customizable. It is somewhat intimidating at first glance, but
- most of the complexity can be ignored until you're ready to take
- advantage of it. If you receive a reasonable volume of e-mail
- (you're on various mailing lists), or you would like to read
- high-volume mailing lists but cannot keep up with them, or read
- high volume newsgroups or are just bored, then Gnus is what you
- want.
-
- This FAQ was maintained by Justin Sheehy until March 2002. He
- would like to thank Steve Baur and Per Abrahamsen for doing a wonderful
- job with this FAQ before him. We would like to do the same - thanks,
- Justin!
-
- If you have a Web browser, the official hypertext version is at:@*
- @uref{http://my.gnus.org/FAQ/}.
- This version is much nicer than the unofficial hypertext
- versions that are archived at Utrecht, Oxford, Smart Pages, Ohio
- State, and other FAQ archives. See the resources question below
- if you want information on obtaining it in another format.
-
- The information contained here was compiled with the assistance
- of the Gnus development mailing list, and any errors or
- misprints are the my.gnus.org team's fault, sorry.
+@itemize @bullet
+
+@item
+Updated FAQ to reflect release of Gnus 5.10 and start of
+No Gnus development.
+@end itemize
+@node FAQ - Introduction
+@subheading Introduction
+
+This is the Gnus Frequently Asked Questions list.
-@ifnottex
-@node FAQ 1 - Installation, FAQ 2 - Startup / Group buffer, FAQ - Introduction, Frequently Asked Questions
-@end ifnottex
-@subsection Installation
+Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented
+as a part of Emacs. It's been around in some form for almost a decade
+now, and has been distributed as a standard part of Emacs for much of
+that time. Gnus 5 is the latest (and greatest) incarnation. The
+original version was called GNUS, and was written by Masanobu UMEDA.
+When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and
+decided to rewrite Gnus.
+
+Its biggest strength is the fact that it is extremely
+customizable. It is somewhat intimidating at first glance, but
+most of the complexity can be ignored until you're ready to take
+advantage of it. If you receive a reasonable volume of e-mail
+(you're on various mailing lists), or you would like to read
+high-volume mailing lists but cannot keep up with them, or read
+high volume newsgroups or are just bored, then Gnus is what you
+want.
+
+This FAQ was maintained by Justin Sheehy until March 2002. He
+would like to thank Steve Baur and Per Abrahamsen for doing a wonderful
+job with this FAQ before him. We would like to do the same - thanks,
+Justin!
+
+If you have a Web browser, the official hypertext version is at:
+@uref{http://my.gnus.org/FAQ/}.
+This version is much nicer than the unofficial hypertext
+versions that are archived at Utrecht, Oxford, Smart Pages, Ohio
+State, and other FAQ archives. See the resources question below
+if you want information on obtaining it in another format.
+
+The information contained here was compiled with the assistance
+of the Gnus development mailing list, and any errors or
+misprints are the my.gnus.org team's fault, sorry.
+
+@node FAQ 1 - Installation FAQ
+@subsection Installation FAQ
@menu
-* [1.1]:: What is the latest version of Gnus?
-* [1.2]:: What's new in 5.10?
-* [1.3]:: Where and how to get Gnus?
-* [1.4]:: What to do with the tarball now?
-* [1.5]:: Which version of Emacs do I need?
-* [1.6]:: How do I run Gnus on both Emacs and XEmacs?
+* [1.1]:: What is the latest version of Gnus?
+* [1.2]:: What's new in 5.10?
+* [1.3]:: Where and how to get Gnus?
+* [1.4]:: What to do with the tarball now?
+* [1.5]:: I sometimes read references to No Gnus and Oort Gnus, what
+ are those?
+* [1.6]:: Which version of Emacs do I need?
+* [1.7]:: How do I run Gnus on both Emacs and XEmacs?
@end menu
-
-@ifnottex
-@node [1.1], [1.2], FAQ 1 - Installation, FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.1:
+@node [1.1]
+@subsubheading Question 1.1
What is the latest version of Gnus?
-Answer:
+@subsubheading Answer
- Jingle please: Gnus 5.10 is released, get it while it's
- hot! As well as the step in version number is rather
- small, Gnus 5.10 has tons of new features which you
- shouldn't miss, however if you are cautious, you might
- prefer to stay with 5.8.8 respectively 5.9 (they are
- basically the same) until some bugfix releases are out.
-
-@ifnottex
-@node [1.2], [1.3], [1.1], FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.2:
+Jingle please: Gnus 5.10 is released, get it while it's
+hot! As well as the step in version number is rather
+small, Gnus 5.10 has tons of new features which you
+shouldn't miss. The current release (5.10.6) should be at
+least as stable as the latest release of the 5.8 series.
-What's new in 5.10?
+@node [1.2]
+@subsubheading Question 1.2
-Answer:
+What's new in 5.10?
- First of all, you should have a look into the file
- GNUS-NEWS in the toplevel directory of the Gnus tarball,
- there the most important changes are listed. Here's a
- short list of the changes I find especially
- important/interesting:
-
+@subsubheading Answer
-
+First of all, you should have a look into the file
+GNUS-NEWS in the toplevel directory of the Gnus tarball,
+there the most important changes are listed. Here's a
+short list of the changes I find especially
+important/interesting:
-@itemize @bullet{}
+@itemize @bullet
@item
- Major rewrite of the Gnus agent, Gnus agent is now
- active by default.
-
+Major rewrite of the Gnus agent, Gnus agent is now
+active by default.
+
@item
- Many new article washing functions for dealing with
- ugly formatted articles.
-
+Many new article washing functions for dealing with
+ugly formatted articles.
+
@item
- Anti Spam features.
-
+Anti Spam features.
+
@item
- message-utils now included in Gnus.
-
+Message-utils now included in Gnus.
+
@item
- New format specifiers for summary lines, e.g. %B for
- a complex trn-style thread tree.
-
+New format specifiers for summary lines, e.g. %B for
+a complex trn-style thread tree.
@end itemize
-
-@ifnottex
-@node [1.3], [1.4], [1.2], FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.3:
+
+@node [1.3]
+@subsubheading Question 1.3
Where and how to get Gnus?
-Answer:
+@subsubheading Answer
- The latest released version of Gnus isn't included in
- Emacs 21 and until now it also isn't available through the
- package system of XEmacs 21.4, therefor you should get the
- Gnus tarball from
- @uref{http://www.gnus.org/dist/gnus.tar.gz}
- or via anonymous FTP from
- @uref{ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz}.
-
-@ifnottex
-@node [1.4], [1.5], [1.3], FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.4:
+The latest released version of Gnus isn't included in
+Emacs 21, therefor you should get the Gnus tarball from
+@uref{http://www.gnus.org/dist/gnus.tar.gz}
+or via anonymous FTP from
+@uref{ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz}.
+If you use XEmacs instead of Emacs you can use XEmacs'
+package system instead.
- What to do with the tarball now?
-
+@node [1.4]
+@subsubheading Question 1.4
-Answer:
-
- Untar it via @samp{tar xvzf gnus.tar.gz} and do the common
- @samp{./configure; make; make install} circle.
- (under MS-Windows either get the Cygwin environment from
- @uref{http://www.cygwin.com}
- which allows you to do what's described above or unpack the
- tarball with some packer (e.g. Winace from
- @uref{http://www.winace.com})
- and use the batch-file make.bat included in the tarball to install
- Gnus. If you don't want to (or aren't allowed to) install Gnus
- system-wide, you can install it in your home directory and add the
- following lines to your ~/.xemacs/init.el or ~/.emacs:
-
+What to do with the tarball now?
+
+@subsubheading Answer
+
+Untar it via @samp{tar xvzf gnus.tar.gz} and do the common
+@samp{./configure; make; make install} circle.
+(under MS-Windows either get the Cygwin environment from
+@uref{http://www.cygwin.com}
+which allows you to do what's described above or unpack the
+tarball with some packer (e.g. Winace from
+@uref{http://www.winace.com})
+and use the batch-file make.bat included in the tarball to install
+Gnus.) If you don't want to (or aren't allowed to) install Gnus
+system-wide, you can install it in your home directory and add the
+following lines to your ~/.xemacs/init.el or ~/.emacs:
@example
(add-to-list 'load-path "/path/to/gnus/lisp")
@@ -212,436 +205,395 @@ Answer:
(add-to-list 'Info-directory-list "/path/to/gnus/texi/")
(add-to-list 'Info-default-directory-list "/path/to/gnus/texi/"))
@end example
-
@noindent
- Make sure that you don't have any Gnus related stuff
- before this line, on MS Windows use something like
- "C:/path/to/lisp" (yes, "/").
-
-@ifnottex
-@node [1.5], [1.6], [1.4], FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.5:
+
+Make sure that you don't have any Gnus related stuff
+before this line, on MS Windows use something like
+"C:/path/to/lisp" (yes, "/").
+
+@node [1.5]
+@subsubheading Question 1.5
+
+I sometimes read references to No Gnus and Oort Gnus,
+what are those?
+
+@subsubheading Answer
+
+Oort Gnus was the name of the development version of
+Gnus, which became Gnus 5.10 in autumn 2003. No Gnus is
+the name of the current development version which will
+once become Gnus 5.12 or Gnus 6. (If you're wondering why
+not 5.11, the odd version numbers are normally used for
+the Gnus versions bundled with Emacs)
+
+@node [1.6]
+@subsubheading Question 1.6
Which version of Emacs do I need?
-Answer:
+@subsubheading Answer
- Gnus 5.10 requires an Emacs version that is greater
- than or equal to Emacs 20.7 or XEmacs 21.1.
-
-@ifnottex
-@node [1.6], , [1.5], FAQ 1 - Installation
-@end ifnottex
-@subsubheading Question 1.6:
+Gnus 5.10 requires an Emacs version that is greater
+than or equal to Emacs 20.7 or XEmacs 21.1. The
+development versions of Gnus (aka No Gnus) require Emacs
+21 or XEmacs 21.4.
+
+@node [1.7]
+@subsubheading Question 1.7
How do I run Gnus on both Emacs and XEmacs?
-Answer:
+@subsubheading Answer
- You can't use the same copy of Gnus in both as the Lisp
- files are byte-compiled to a format which is different
- depending on which Emacs did the compilation. Get one copy
- of Gnus for Emacs and one for XEmacs.
-
-@ifnottex
-@node FAQ 2 - Startup / Group buffer, FAQ 3 - Getting messages, FAQ 1 - Installation, Frequently Asked Questions
-@end ifnottex
+You can't use the same copy of Gnus in both as the Lisp
+files are byte-compiled to a format which is different
+depending on which Emacs did the compilation. Get one copy
+of Gnus for Emacs and one for XEmacs.
+
+@node FAQ 2 - Startup / Group buffer
@subsection Startup / Group buffer
@menu
-* [2.1]:: Every time I start Gnus I get a message
- "Gnus auto-save file exists. Do you want to read it?",
- what does this mean and how to prevent it?
-* [2.2]:: Gnus doesn't remember which groups I'm subscribed to, what's this?
-* [2.3]:: How to change the format of the lines in Group buffer?
-* [2.4]:: My group buffer becomes a bit crowded, is there a way to sort my
- groups into categories so I can easier browse through them?
-* [2.5]:: How to manually sort the groups in Group buffer? How to sort the
- groups in a topic?
+* [2.1]:: Every time I start Gnus I get a message "Gnus auto-save
+ file exists. Do you want to read it?", what does this mean and
+ how to prevent it?
+* [2.2]:: Gnus doesn't remember which groups I'm subscribed to,
+ what's this?
+* [2.3]:: How to change the format of the lines in Group buffer?
+* [2.4]:: My group buffer becomes a bit crowded, is there a way to
+ sort my groups into categories so I can easier browse through
+ them?
+* [2.5]:: How to manually sort the groups in Group buffer? How to
+ sort the groups in a topic?
@end menu
-@ifnottex
-@node [2.1], [2.2], FAQ 2 - Startup / Group buffer, FAQ 2 - Startup / Group buffer
-@end ifnottex
-@subsubheading Question 2.1:
+@node [2.1]
+@subsubheading Question 2.1
- Every time I start Gnus I get a message "Gnus auto-save
- file exists. Do you want to read it?", what does this mean
- and how to prevent it?
-
+Every time I start Gnus I get a message "Gnus auto-save
+file exists. Do you want to read it?", what does this mean
+and how to prevent it?
-Answer:
+@subsubheading Answer
- This message means that the last time you used Gnus, it
- wasn't properly exited and therefor couldn't write its
- informations to disk (e.g. which messages you read), you
- are now asked if you want to restore those informations
- from the auto-save file.
-
+This message means that the last time you used Gnus, it
+wasn't properly exited and therefor couldn't write its
+informations to disk (e.g. which messages you read), you
+are now asked if you want to restore those informations
+from the auto-save file.
- To prevent this message make sure you exit Gnus
- via @samp{q} in group buffer instead of
- just killing Emacs.
-
-@ifnottex
-@node [2.2], [2.3], [2.1], FAQ 2 - Startup / Group buffer
-@end ifnottex
-@subsubheading Question: 2.2
+To prevent this message make sure you exit Gnus
+via @samp{q} in group buffer instead of
+just killing Emacs.
- Gnus doesn't remember which groups I'm subscribed to,
- what's this?
-
+@node [2.2]
+@subsubheading Question 2.2
-Answer:
+Gnus doesn't remember which groups I'm subscribed to,
+what's this?
- You get the message described in the q/a pair above while
- starting Gnus, right? It's an other symptom for the same
- problem, so read the answer above.
-
-@ifnottex
-@node [2.3], [2.4], [2.2], FAQ 2 - Startup / Group buffer
-@end ifnottex
-@subsubheading Question 2.3:
+@subsubheading Answer
- How to change the format of the lines in Group buffer?
-
+You get the message described in the q/a pair above while
+starting Gnus, right? It's an other symptom for the same
+problem, so read the answer above.
-Answer:
+@node [2.3]
+@subsubheading Question 2.3
- You've got to tweak the value of the variable
- gnus-group-line-format. See the manual node "Group Line
- Specification" for information on how to do this. An
- example for this (guess from whose .gnus :-)):
-
+How to change the format of the lines in Group buffer?
-@example
+@subsubheading Answer
+You've got to tweak the value of the variable
+gnus-group-line-format. See the manual node "Group Line
+Specification" for information on how to do this. An
+example for this (guess from whose .gnus :-)):
+
+@example
(setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n")
-
@end example
-
-@ifnottex
-@node [2.4], [2.5], [2.3], FAQ 2 - Startup / Group buffer
-@end ifnottex
-@subsubheading Question 2.4:
-
- My group buffer becomes a bit crowded, is there a way to
- sort my groups into categories so I can easier browse
- through them?
-
+@noindent
-Answer:
+@node [2.4]
+@subsubheading Question 2.4
- Gnus offers the topic mode, it allows you to sort your
- groups in, well, topics, e.g. all groups dealing with
- Linux under the topic linux, all dealing with music under
- the topic music and all dealing with scottish music under
- the topic scottish which is a subtopic of music.
-
+My group buffer becomes a bit crowded, is there a way to
+sort my groups into categories so I can easier browse
+through them?
- To enter topic mode, just hit t while in Group buffer. Now
- you can use @samp{T n} to create a topic
- at point and @samp{T m} to move a group to
- a specific topic. For more commands see the manual or the
- menu. You might want to include the %P specifier at the
- beginning of your gnus-group-line-format variable to have
- the groups nicely indented.
-
-@ifnottex
-@node [2.5], , [2.4], FAQ 2 - Startup / Group buffer
-@end ifnottex
-@subsubheading Question 2.5:
+@subsubheading Answer
- How to manually sort the groups in Group buffer? How to
- sort the groups in a topic?
-
+Gnus offers the topic mode, it allows you to sort your
+groups in, well, topics, e.g. all groups dealing with
+Linux under the topic linux, all dealing with music under
+the topic music and all dealing with scottish music under
+the topic scottish which is a subtopic of music.
-Answer:
+To enter topic mode, just hit t while in Group buffer. Now
+you can use @samp{T n} to create a topic
+at point and @samp{T m} to move a group to
+a specific topic. For more commands see the manual or the
+menu. You might want to include the %P specifier at the
+beginning of your gnus-group-line-format variable to have
+the groups nicely indented.
- Move point over the group you want to move and
- hit @samp{C-k}, now move point to the
- place where you want the group to be and
- hit @samp{C-y}.
-
-@ifnottex
-@node FAQ 3 - Getting messages, FAQ 4 - Reading messages, FAQ 2 - Startup / Group buffer, Frequently Asked Questions
-@end ifnottex
-@subsection Getting messages
+@node [2.5]
+@subsubheading Question 2.5
+
+How to manually sort the groups in Group buffer? How to
+sort the groups in a topic?
+
+@subsubheading Answer
+
+Move point over the group you want to move and
+hit @samp{C-k}, now move point to the
+place where you want the group to be and
+hit @samp{C-y}.
+
+@node FAQ 3 - Getting Messages
+@subsection Getting Messages
@menu
-* [3.1]:: I just installed Gnus, started it via M-x gnus but it only says
- "nntp (news) open error", what to do?
-* [3.2]:: I'm working under Windows and have no idea what ~/.gnus means.
-* [3.3]:: My news server requires authentication, how to store user name
- and password on disk?
-* [3.4]:: Gnus seems to start up OK, but I can't find out how to
- subscribe to a group.
-* [3.5]:: Gnus doesn't show all groups / Gnus says I'm not allowed to
- post on this server as well as I am, what's that?
-* [3.6]:: I want Gnus to fetch news from several servers, is this possible?
-* [3.7]:: And how about local spool files?
-* [3.8]:: OK, reading news works now, but I want to be able to read my mail
- with Gnus, too. How to do it?
-* [3.9]:: And what about IMAP?
-* [3.10]:: At the office we use one of those MS Exchange servers,
- can I use Gnus to read my mail from it?
-* [3.11]:: Can I tell Gnus not to delete the mails on the server
- it retrieves via POP3?
+* [3.1]:: I just installed Gnus, started it via @samp{M-x gnus}
+ but it only says "nntp (news) open error", what to do?
+* [3.2]:: I'm working under Windows and have no idea what ~/.gnus.el
+ means.
+* [3.3]:: My news server requires authentication, how to store user
+ name and password on disk?
+* [3.4]:: Gnus seems to start up OK, but I can't find out how to
+ subscribe to a group.
+* [3.5]:: Gnus doesn't show all groups / Gnus says I'm not allowed
+ to post on this server as well as I am, what's that?
+* [3.6]:: I want Gnus to fetch news from several servers, is this
+ possible?
+* [3.7]:: And how about local spool files?
+* [3.8]:: OK, reading news works now, but I want to be able to read
+ my mail with Gnus, too. How to do it?
+* [3.9]:: And what about IMAP?
+* [3.10]:: At the office we use one of those MS Exchange servers, can
+ I use Gnus to read my mail from it?
+* [3.11]:: Can I tell Gnus not to delete the mails on the server it
+ retrieves via POP3?
@end menu
-@ifnottex
-@node [3.1], [3.2], FAQ 3 - Getting messages, FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.1:
+@node [3.1]
+@subsubheading Question 3.1
- I just installed Gnus, started it via
- @samp{M-x gnus}
- but it only says "nntp (news) open error", what to do?
-
+I just installed Gnus, started it via
+@samp{M-x gnus}
+but it only says "nntp (news) open error", what to do?
-Answer:
+@subsubheading Answer
- You've got to tell Gnus where to fetch the news from. Read
- the documentation for information on how to do this. As a
- first start, put those lines in ~/.gnus:
-
+You've got to tell Gnus where to fetch the news from. Read
+the documentation for information on how to do this. As a
+first start, put those lines in ~/.gnus.el:
@example
(setq gnus-select-method '(nntp "news.yourprovider.net"))
(setq user-mail-address "you@@yourprovider.net")
(setq user-full-name "Your Name")
@end example
-
-@ifnottex
-@node [3.2], [3.3], [3.1], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.2:
-
- I'm working under Windows and have no idea what ~/.gnus means.
-
+@noindent
-Answer:
-
- The ~/ means the home directory where Gnus and Emacs look for the
-configuration files. However, you don't really need to know what this
-means, it suffices that Emacs knows what it means :-) You can type
-@samp{C-x C-f ~/.gnus RET } (yes, with the forward slash, even on
-Windows), and Emacs will open the right file for you. (It will most
-likely be new, and thus empty.) However, I'd discourage you from
-doing so, since the directory Emacs chooses will most certainly not be
-what you want, so let's do it the correct way. The first thing you've
-got to do is to create a suitable directory (no blanks in directory
-name please) e.g. @file{c:\myhome}. Then you must set the environment
-variable HOME to this directory. To do this under Win9x or Me include
-the line
-
+@node [3.2]
+@subsubheading Question 3.2
+
+I'm working under Windows and have no idea what ~/.gnus.el means.
+
+@subsubheading Answer
+
+The ~/ means the home directory where Gnus and Emacs look
+for the configuration files. However, you don't really
+need to know what this means, it suffices that Emacs knows
+what it means :-) You can type
+@samp{C-x C-f ~/.gnus.el RET }
+(yes, with the forward slash, even on Windows), and
+Emacs will open the right file for you. (It will most
+likely be new, and thus empty.)
+However, I'd discourage you from doing so, since the
+directory Emacs chooses will most certainly not be what
+you want, so let's do it the correct way.
+The first thing you've got to do is to
+create a suitable directory (no blanks in directory name
+please) e.g. c:\myhome. Then you must set the environment
+variable HOME to this directory. To do this under Win9x
+or Me include the line
@example
-
SET HOME=C:\myhome
-
@end example
-
@noindent
- in your autoexec.bat and reboot. Under NT, 2000 and XP,
- hit Winkey+Pause/Break to enter system options (if it
- doesn't work, go to Control Panel -> System). There you'll
- find the possibility to set environment variables, create
- a new one with name HOME and value @file{c:\myhome}, a reboot is
- not necessary.
-
- Now to create ~/.gnus, say
- @samp{C-x C-f ~/.gnus RET C-x C-s}.
- in Emacs.
-
-@ifnottex
-@node [3.3], [3.4], [3.2], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.3:
+in your autoexec.bat and reboot. Under NT, 2000 and XP,
+hit Winkey+Pause/Break to enter system options (if it
+doesn't work, go to Control Panel -> System). There you'll
+find the possibility to set environment variables, create
+a new one with name HOME and value C:\myhome, a reboot is
+not necessary.
- My news server requires authentication, how to store
- user name and password on disk?
-
+Now to create ~/.gnus.el, say
+@samp{C-x C-f ~/.gnus.el RET C-x C-s}.
+in Emacs.
-Answer:
+@node [3.3]
+@subsubheading Question 3.3
- Create a file ~/.authinfo which includes for each server a line like this
-
+My news server requires authentication, how to store
+user name and password on disk?
+
+@subsubheading Answer
+
+Create a file ~/.authinfo which includes for each server a line like this
@example
machine news.yourprovider.net login YourUserName password YourPassword
@end example
-
@noindent
.
- Make sure that the file isn't readable to others if you
- work on a OS which is capable of doing so. (Under Unix
- say
-
+Make sure that the file isn't readable to others if you
+work on a OS which is capable of doing so. (Under Unix
+say
@example
chmod 600 ~/.authinfo
@end example
-
@noindent
- in a shell.)
-
-@ifnottex
-@node [3.4], [3.5], [3.3], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.4:
- Gnus seems to start up OK, but I can't find out how to
- subscribe to a group.
-
+in a shell.)
-Answer:
+@node [3.4]
+@subsubheading Question 3.4
- If you know the name of the group say @samp{U
- name.of.group RET} in group buffer (use the
- tab-completion Luke). Otherwise hit ^ in group buffer,
- this brings you to the server buffer. Now place point (the
- cursor) over the server which carries the group you want,
- hit @samp{RET}, move point to the group
- you want to subscribe to and say @samp{u}
- to subscribe to it.
-
-@ifnottex
-@node [3.5], [3.6], [3.4], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.5:
+Gnus seems to start up OK, but I can't find out how to
+subscribe to a group.
- Gnus doesn't show all groups / Gnus says I'm not allowed to
- post on this server as well as I am, what's that?
-
+@subsubheading Answer
-Answer:
+If you know the name of the group say @samp{U
+name.of.group RET} in group buffer (use the
+tab-completion Luke). Otherwise hit ^ in group buffer,
+this brings you to the server buffer. Now place point (the
+cursor) over the server which carries the group you want,
+hit @samp{RET}, move point to the group
+you want to subscribe to and say @samp{u}
+to subscribe to it.
- Some providers allow restricted anonymous access and full
- access only after authorization. To make Gnus send authinfo
- to those servers append
-
+@node [3.5]
+@subsubheading Question 3.5
+
+Gnus doesn't show all groups / Gnus says I'm not allowed to
+post on this server as well as I am, what's that?
+
+@subsubheading Answer
+
+Some providers allow restricted anonymous access and full
+access only after authorization. To make Gnus send authinfo
+to those servers append
@example
force yes
@end example
-
-
@noindent
- to the line for those servers in ~/.authinfo.
-@ifnottex
-@node [3.6], [3.7], [3.5], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.6:
+to the line for those servers in ~/.authinfo.
- I want Gnus to fetch news from several servers, is this possible?
-
+@node [3.6]
+@subsubheading Question 3.6
-Answer:
+I want Gnus to fetch news from several servers, is this possible?
- Of course. You can specify more sources for articles in the
- variable gnus-secondary-select-methods. Add something like
- this in ~/.gnus:
-
+@subsubheading Answer
+
+Of course. You can specify more sources for articles in the
+variable gnus-secondary-select-methods. Add something like
+this in ~/.gnus.el:
@example
-(add-to-list 'gnus-secondary-select-methods
+(add-to-list 'gnus-secondary-select-methods
'(nntp "news.yourSecondProvider.net"))
-(add-to-list 'gnus-secondary-select-methods
- '(nntp "news.yourThirdProvider.net"))
+(add-to-list 'gnus-secondary-select-methods
+ '(nntp "news.yourThirdProvider.net"))
@end example
-
-@ifnottex
-@node [3.7], [3.8], [3.6], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.7:
+@noindent
- And how about local spool files?
-
+@node [3.7]
+@subsubheading Question 3.7
-Answer:
+And how about local spool files?
- No problem, this is just one more select method called
- nnspool, so you want this:
-
+@subsubheading Answer
+
+No problem, this is just one more select method called
+nnspool, so you want this:
@example
(add-to-list 'gnus-secondary-select-methods '(nnspool ""))
@end example
-
@noindent
- Or this if you don't want an NNTP Server as primary news source:
-
+
+Or this if you don't want an NNTP Server as primary news source:
@example
(setq gnus-select-method '(nnspool ""))
@end example
-
@noindent
- Gnus will look for the spool file in /usr/spool/news, if you
- want something different, change the line above to something like this:
-
+
+Gnus will look for the spool file in /usr/spool/news, if you
+want something different, change the line above to something like this:
@example
(add-to-list 'gnus-secondary-select-methods
- '(nnspool "" (nnspool-directory "/usr/local/myspoolddir")))
+ '(nnspool ""
+ (nnspool-directory "/usr/local/myspoolddir")))
@end example
-
@noindent
- This sets the spool directory for this server only.
- You might have to specify more stuff like the program used
- to post articles, see the Gnus manual on how to do this.
-
-@ifnottex
-@node [3.8], [3.9], [3.7], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.8:
- OK, reading news works now, but I want to be able to read my mail
- with Gnus, too. How to do it?
-
-
-Answer:
-
- That's a bit harder since there are many possible sources
- for mail, many possible ways for storing mail and many
- different ways for sending mail. The most common cases are
- these: 1: You want to read your mail from a pop3 server and
- send them directly to a SMTP Server 2: Some program like
- fetchmail retrieves your mail and stores it on disk from
- where Gnus shall read it. Outgoing mail is sent by
- Sendmail, Postfix or some other MTA. Sometimes, you even
- need a combination of the above cases.
-
-
- However, the first thing to do is to tell Gnus in which way
- it should store the mail, in Gnus terminology which back end
- to use. Gnus supports many different back ends, the most
- commonly used one is nnml. It stores every mail in one file
- and is therefor quite fast. However you might prefer a one
- file per group approach if your file system has problems with
- many small files, the nnfolder back end is then probably the
- choice for you. To use nnml add the following to ~/.gnus:
-
+This sets the spool directory for this server only.
+You might have to specify more stuff like the program used
+to post articles, see the Gnus manual on how to do this.
+
+@node [3.8]
+@subsubheading Question 3.8
+
+OK, reading news works now, but I want to be able to read my mail
+with Gnus, too. How to do it?
+
+@subsubheading Answer
+
+That's a bit harder since there are many possible sources
+for mail, many possible ways for storing mail and many
+different ways for sending mail. The most common cases are
+these: 1: You want to read your mail from a pop3 server and
+send them directly to a SMTP Server 2: Some program like
+fetchmail retrieves your mail and stores it on disk from
+where Gnus shall read it. Outgoing mail is sent by
+Sendmail, Postfix or some other MTA. Sometimes, you even
+need a combination of the above cases.
+
+However, the first thing to do is to tell Gnus in which way
+it should store the mail, in Gnus terminology which back end
+to use. Gnus supports many different back ends, the most
+commonly used one is nnml. It stores every mail in one file
+and is therefor quite fast. However you might prefer a one
+file per group approach if your file system has problems with
+many small files, the nnfolder back end is then probably the
+choice for you. To use nnml add the following to ~/.gnus.el:
@example
(add-to-list 'gnus-secondary-select-methods '(nnml ""))
@end example
-
@noindent
- As you might have guessed, if you want nnfolder, it's
-
+
+As you might have guessed, if you want nnfolder, it's
@example
(add-to-list 'gnus-secondary-select-methods '(nnfolder ""))
@end example
-
+@noindent
- Now we need to tell Gnus, where to get it's mail from. If
- it's a POP3 server, then you need something like this:
-
+Now we need to tell Gnus, where to get it's mail from. If
+it's a POP3 server, then you need something like this:
@example
(eval-after-load "mail-source"
@@ -649,75 +601,68 @@ Answer:
:user "yourUserName"
:password "yourPassword")))
@end example
-
@noindent
- Make sure ~/.gnus isn't readable to others if you store
- your password there. If you want to read your mail from a
- traditional spool file on your local machine, it's
-
+
+Make sure ~/.gnus.el isn't readable to others if you store
+your password there. If you want to read your mail from a
+traditional spool file on your local machine, it's
@example
(eval-after-load "mail-source"
- '(add-to-list 'mail-sources '(file :path "/path/to/spool/file")))
+ '(add-to-list 'mail-sources '(file :path "/path/to/spool/file"))
@end example
-
@noindent
- If it's a Maildir, with one file per message as used by
- postfix, Qmail and (optionally) fetchmail it's
-
+
+If it's a Maildir, with one file per message as used by
+postfix, Qmail and (optionally) fetchmail it's
@example
(eval-after-load "mail-source"
'(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/"
:subdirs ("cur" "new")))
@end example
-
@noindent
- And finally if you want to read your mail from several files
- in one directory, for example because procmail already split your
- mail, it's
-
+
+And finally if you want to read your mail from several files
+in one directory, for example because procmail already split your
+mail, it's
@example
(eval-after-load "mail-source"
- '(add-to-list 'mail-sources '(directory :path "/path/to/procmail-dir/"
- :suffix ".prcml"))
+ '(add-to-list 'mail-sources
+ '(directory :path "/path/to/procmail-dir/"
+ :suffix ".prcml")))
@end example
-
@noindent
- Where :suffix ".prcml" tells Gnus only to use files with the
- suffix .prcml.
-
- OK, now you only need to tell Gnus how to send mail. If you
- want to send mail via sendmail (or whichever MTA is playing
- the role of sendmail on your system), you don't need to do
- anything. However, if you want to send your mail to an
- SMTP Server you need the following in your ~/.gnus
-
+Where :suffix ".prcml" tells Gnus only to use files with the
+suffix .prcml.
+
+OK, now you only need to tell Gnus how to send mail. If you
+want to send mail via sendmail (or whichever MTA is playing
+the role of sendmail on your system), you don't need to do
+anything. However, if you want to send your mail to an
+SMTP Server you need the following in your ~/.gnus.el
@example
(setq send-mail-function 'smtpmail-send-it)
(setq message-send-mail-function 'smtpmail-send-it)
(setq smtpmail-default-smtp-server "smtp.yourProvider.net")
@end example
-
-@ifnottex
-@node [3.9], [3.10], [3.8], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.9:
+@noindent
- And what about IMAP?
-
+@node [3.9]
+@subsubheading Question 3.9
-Answer:
+And what about IMAP?
- There are two ways of using IMAP with Gnus. The first one is
- to use IMAP like POP3, that means Gnus fetches the mail from
- the IMAP server and stores it on disk. If you want to do
- this (you don't really want to do this) add the following to
- ~/.gnus
-
+@subsubheading Answer
+
+There are two ways of using IMAP with Gnus. The first one is
+to use IMAP like POP3, that means Gnus fetches the mail from
+the IMAP server and stores it on disk. If you want to do
+this (you don't really want to do this) add the following to
+~/.gnus.el
@example
(add-to-list 'mail-sources '(imap :server "mail.mycorp.com"
@@ -728,249 +673,215 @@ Answer:
:mailbox "INBOX"
:fetchflag "\\Seen"))
@end example
-
@noindent
- You might have to tweak the values for stream and/or
- authentification, see the Gnus manual node "Mail Source
- Specifiers" for possible values.
-
- If you want to use IMAP the way it's intended, you've got to
- follow a different approach. You've got to add the nnimap
- back end to your select method and give the information
- about the server there.
-
+You might have to tweak the values for stream and/or
+authentification, see the Gnus manual node "Mail Source
+Specifiers" for possible values.
+
+If you want to use IMAP the way it's intended, you've got to
+follow a different approach. You've got to add the nnimap
+back end to your select method and give the information
+about the server there.
@example
-(add-to-list
- 'gnus-secondary-select-methods
- '(nnimap "Give the baby a name"
- (nnimap-address "imap.yourProvider.net")
- (nnimap-port 143)
- (nnimap-list-pattern "archive.*")))
+(add-to-list 'gnus-secondary-select-methods
+ '(nnimap "Give the baby a name"
+ (nnimap-address "imap.yourProvider.net")
+ (nnimap-port 143)
+ (nnimap-list-pattern "archive.*")))
@end example
-
@noindent
- Again, you might have to specify how to authenticate to the
- server if Gnus can't guess the correct way, see the Manual
- Node "IMAP" for detailed information.
-
-@ifnottex
-@node [3.10], [3.11], [3.9], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.10:
-
- At the office we use one of those MS Exchange servers, can I use
- Gnus to read my mail from it?
-
-
-Answer:
- Offer your administrator a pair of new running shoes for
- activating IMAP on the server and follow the instructions
- above.
-
-@ifnottex
-@node [3.11], , [3.10], FAQ 3 - Getting messages
-@end ifnottex
-@subsubheading Question 3.11:
-
- Can I tell Gnus not to delete the mails on the server it
- retrieves via POP3?
-
-
-Answer:
-
- First of all, that's not the way POP3 is intended to work,
- if you have the possibility, you should use the IMAP
- Protocol if you want your messages to stay on the
- server. Nevertheless there might be situations where you
- need the feature, but sadly Gnus itself has no predefined
- functionality to do so.
-
-
- However this is Gnus county so there are possibilities to
- achieve what you want. The easiest way is to get an external
- program which retrieves copies of the mail and stores them
- on disk, so Gnus can read it from there. On Unix systems you
- could use e.g. fetchmail for this, on MS Windows you can use
- Hamster, an excellent local news and mail server.
-
-
- The other solution would be, to replace the method Gnus
- uses to get mail from POP3 servers by one which is capable
- of leaving the mail on the server. If you use XEmacs, get
- the package mail-lib, it includes an enhanced pop3.el,
- look in the file, there's documentation on how to tell
- Gnus to use it and not to delete the retrieved mail. For
- GNU Emacs look for the file epop3.el which can do the same
- (If you know the home of this file, please send me an
- e-mail). You can also tell Gnus to use an external program
- (e.g. fetchmail) to fetch your mail, see the info node
- "Mail Source Specifiers" in the Gnus manual on how to do
- it.
-
-
-@ifnottex
-@node FAQ 4 - Reading messages, FAQ 5 - Composing messages, FAQ 3 - Getting messages, Frequently Asked Questions
-@end ifnottex
+Again, you might have to specify how to authenticate to the
+server if Gnus can't guess the correct way, see the Manual
+Node "IMAP" for detailed information.
+
+@node [3.10]
+@subsubheading Question 3.10
+
+At the office we use one of those MS Exchange servers, can I use
+Gnus to read my mail from it?
+
+@subsubheading Answer
+
+Offer your administrator a pair of new running shoes for
+activating IMAP on the server and follow the instructions
+above.
+
+@node [3.11]
+@subsubheading Question 3.11
+
+Can I tell Gnus not to delete the mails on the server it
+retrieves via POP3?
+
+@subsubheading Answer
+
+First of all, that's not the way POP3 is intended to work,
+if you have the possibility, you should use the IMAP
+Protocol if you want your messages to stay on the
+server. Nevertheless there might be situations where you
+need the feature, but sadly Gnus itself has no predefined
+functionality to do so.
+
+However this is Gnus county so there are possibilities to
+achieve what you want. The easiest way is to get an external
+program which retrieves copies of the mail and stores them
+on disk, so Gnus can read it from there. On Unix systems you
+could use e.g. fetchmail for this, on MS Windows you can use
+Hamster, an excellent local news and mail server.
+
+The other solution would be, to replace the method Gnus
+uses to get mail from POP3 servers by one which is capable
+of leaving the mail on the server. If you use XEmacs, get
+the package mail-lib, it includes an enhanced pop3.el,
+look in the file, there's documentation on how to tell
+Gnus to use it and not to delete the retrieved mail. For
+GNU Emacs look for the file epop3.el which can do the same
+(If you know the home of this file, please send me an
+e-mail). You can also tell Gnus to use an external program
+(e.g. fetchmail) to fetch your mail, see the info node
+"Mail Source Specifiers" in the Gnus manual on how to do
+it.
+
+@node FAQ 4 - Reading messages
@subsection Reading messages
@menu
-* [4.1]:: When I enter a group, all read messages are gone.
- How to view them again?
-* [4.2]:: How to tell Gnus to show an important message every time
- I enter a group, even when it's read?
-* [4.3]:: How to view the headers of a message?
-* [4.4]:: How to view the raw unformatted message?
-* [4.5]:: How can I change the headers Gnus displays by default at the
- top of the article buffer?
-* [4.6]:: I'd like Gnus NOT to render HTML-mails but show me the
- text part if it's available. How to do it?
-* [4.7]:: Can I use some other browser than w3 to render my HTML-mails?
-* [4.8]:: Is there anything I can do to make poorly formatted mails
- more readable?
-* [4.9]:: Is there a way to automatically ignore posts by specific authors
- or with specific words in the subject? And can I highlight more
- interesting ones in some way?
-* [4.10]:: How can I disable threading in some (e.g. mail-) groups, or set
- other variables specific for some groups?
-* [4.11]:: Can I highlight messages written by me and follow-ups to those?
-* [4.12]:: The number of total messages in a group which Gnus displays in
- group buffer is by far to high, especially in mail groups.
- Is this a bug?
-* [4.13]:: I don't like the layout of summary and article buffer,
- how to change it? Perhaps even a three pane display?
-* [4.14]:: I don't like the way the Summary buffer looks, how to tweak it?
-* [4.15]:: How to split incoming mails in several groups?
+* [4.1]:: When I enter a group, all read messages are gone. How to
+ view them again?
+* [4.2]:: How to tell Gnus to show an important message every time I
+ enter a group, even when it's read?
+* [4.3]:: How to view the headers of a message?
+* [4.4]:: How to view the raw unformatted message?
+* [4.5]:: How can I change the headers Gnus displays by default at
+ the top of the article buffer?
+* [4.6]:: I'd like Gnus NOT to render HTML-mails but show me the
+ text part if it's available. How to do it?
+* [4.7]:: Can I use some other browser than w3 to render my
+ HTML-mails?
+* [4.8]:: Is there anything I can do to make poorly formatted mails
+ more readable?
+* [4.9]:: Is there a way to automatically ignore posts by specific
+ authors or with specific words in the subject? And can I highlight
+ more interesting ones in some way?
+* [4.10]:: How can I disable threading in some (e.g. mail-) groups,
+ or set other variables specific for some groups?
+* [4.11]:: Can I highlight messages written by me and follow-ups to
+ those?
+* [4.12]:: The number of total messages in a group which Gnus
+ displays in group buffer is by far to high, especially in mail
+ groups. Is this a bug?
+* [4.13]:: I don't like the layout of summary and article buffer, how
+ to change it? Perhaps even a three pane display?
+* [4.14]:: I don't like the way the Summary buffer looks, how to
+ tweak it?
+* [4.15]:: How to split incoming mails in several groups?
@end menu
-@ifnottex
-@node [4.1], [4.2], FAQ 4 - Reading messages, FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.1:
+@node [4.1]
+@subsubheading Question 4.1
- When I enter a group, all read messages are gone. How to view them again?
-
+When I enter a group, all read messages are gone. How to view them again?
-Answer:
+@subsubheading Answer
- If you enter the group by saying
- @samp{RET}
- in group buffer with point over the group, only unread and ticked messages are loaded. Say
- @samp{C-u RET}
- instead to load all available messages. If you want only the e.g. 300 newest say
- @samp{C-u 300 RET}
-
+If you enter the group by saying
+@samp{RET}
+in group buffer with point over the group, only unread and ticked messages are loaded. Say
+@samp{C-u RET}
+instead to load all available messages. If you want only the e.g. 300 newest say
+@samp{C-u 300 RET}
- Loading only unread messages can be annoying if you have threaded view enabled, say
-
+Loading only unread messages can be annoying if you have threaded view enabled, say
@example
(setq gnus-fetch-old-headers 'some)
@end example
-
-
@noindent
- in ~/.gnus to load enough old articles to prevent teared threads, replace 'some with t to load
- all articles (Warning: Both settings enlarge the amount of data which is
- fetched when you enter a group and slow down the process of entering a group).
+in ~/.gnus.el to load enough old articles to prevent teared threads, replace 'some with t to load
+all articles (Warning: Both settings enlarge the amount of data which is
+fetched when you enter a group and slow down the process of entering a group).
- If you already use Gnus 5.10, you can say
- @samp{/o N}
- In summary buffer to load the last N messages, this feature is not available in 5.8.8
-
+If you already use Gnus 5.10, you can say
+@samp{/o N}
+In summary buffer to load the last N messages, this feature is not available in 5.8.8
- If you don't want all old messages, but the parent of the message you're just reading,
- you can say @samp{^}, if you want to retrieve the whole thread
- the message you're just reading belongs to, @samp{A T} is your friend.
-
-@ifnottex
-@node [4.2], [4.3], [4.1], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.2:
+If you don't want all old messages, but the parent of the message you're just reading,
+you can say @samp{^}, if you want to retrieve the whole thread
+the message you're just reading belongs to, @samp{A T} is your friend.
- How to tell Gnus to show an important message every time I
- enter a group, even when it's read?
-
+@node [4.2]
+@subsubheading Question 4.2
-Answer:
+How to tell Gnus to show an important message every time I
+enter a group, even when it's read?
- You can tick important messages. To do this hit
- @samp{u} while point is in summary buffer
- over the message. When you want to remove the mark, hit
- either @samp{d} (this deletes the tick
- mark and set's unread mark) or @samp{M c}
- (which deletes all marks for the message).
-
-@ifnottex
-@node [4.3], [4.4], [4.2], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.3:
+@subsubheading Answer
- How to view the headers of a message?
-
+You can tick important messages. To do this hit
+@samp{u} while point is in summary buffer
+over the message. When you want to remove the mark, hit
+either @samp{d} (this deletes the tick
+mark and set's unread mark) or @samp{M c}
+(which deletes all marks for the message).
-Answer:
+@node [4.3]
+@subsubheading Question 4.3
- Say @samp{t}
- to show all headers, one more
- @samp{t}
- hides them again.
-
-@ifnottex
-@node [4.4], [4.5], [4.3], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.4:
+How to view the headers of a message?
- How to view the raw unformatted message?
-
+@subsubheading Answer
-Answer:
+Say @samp{t}
+to show all headers, one more
+@samp{t}
+hides them again.
- Say
- @samp{C-u g}
- to show the raw message
- @samp{g}
- returns to normal view.
-
-@ifnottex
-@node [4.5], [4.6], [4.4], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.5:
+@node [4.4]
+@subsubheading Question 4.4
- How can I change the headers Gnus displays by default at
- the top of the article buffer?
-
+How to view the raw unformatted message?
-Answer:
+@subsubheading Answer
+
+Say
+@samp{C-u g}
+to show the raw message
+@samp{g}
+returns to normal view.
+
+@node [4.5]
+@subsubheading Question 4.5
+
+How can I change the headers Gnus displays by default at
+the top of the article buffer?
+
+@subsubheading Answer
+
+The variable gnus-visible-headers controls which headers
+are shown, its value is a regular expression, header lines
+which match it are shown. So if you want author, subject,
+date, and if the header exists, Followup-To and MUA / NUA
+say this in ~/.gnus.el:
- The variable gnus-visible-headers controls which headers
- are shown, its value is a regular expression, header lines
- which match it are shown. So if you want author, subject,
- date, and if the header exists, Followup-To and MUA / NUA
- say this in ~/.gnus:
-
@example
-(setq gnus-visible-headers
- "^\\(From:\\|Subject:\\|Date:\\|Followup-To:\
-\\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)")
+(setq gnus-visible-headers
+ '("^From" "^Subject" "^Date" "^Newsgroups" "^Followup-To"
+ "^User-Agent" "^X-Newsreader" "^X-Mailer"))
@end example
-
-@ifnottex
-@node [4.6], [4.7], [4.5], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.6:
+@noindent
- I'd like Gnus NOT to render HTML-mails but show me the
- text part if it's available. How to do it?
-
+@node [4.6]
+@subsubheading Question 4.6
-Answer:
+I'd like Gnus NOT to render HTML-mails but show me the
+text part if it's available. How to do it?
- Say
-
+@subsubheading Answer
+
+Say
@example
(eval-after-load "mm-decode"
@@ -978,240 +889,206 @@ Answer:
(add-to-list 'mm-discouraged-alternatives "text/html")
(add-to-list 'mm-discouraged-alternatives "text/richtext")))
@end example
-
@noindent
- in ~/.gnus. If you don't want HTML rendered, even if there's no text alternative add
-
+
+in ~/.gnus.el. If you don't want HTML rendered, even if there's no text alternative add
@example
(setq mm-automatic-display (remove "text/html" mm-automatic-display))
@end example
-
@noindent
- too.
-
-@ifnottex
-@node [4.7], [4.8], [4.6], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.7:
- Can I use some other browser than w3 to render my HTML-mails?
-
+too.
-Answer:
+@node [4.7]
+@subsubheading Question 4.7
- Only if you use Gnus 5.10 or younger. In this case you've got the
- choice between w3, w3m, links, lynx and html2text, which
- one is used can be specified in the variable
- mm-text-html-renderer, so if you want links to render your
- mail say
-
+Can I use some other browser than w3 to render my HTML-mails?
+
+@subsubheading Answer
+
+Only if you use Gnus 5.10 or younger. In this case you've got the
+choice between w3, w3m, links, lynx and html2text, which
+one is used can be specified in the variable
+mm-text-html-renderer, so if you want links to render your
+mail say
@example
(setq mm-text-html-renderer 'links)
@end example
-
-@ifnottex
-@node [4.8], [4.9], [4.7], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.8:
-
- Is there anything I can do to make poorly formatted mails
- more readable?
-
-
-Answer:
-
- Gnus offers you several functions to "wash" incoming mail,
- you can find them if you browse through the menu, item Article->Washing. The most
- interesting ones are probably "Wrap long lines" (
- @samp{W w}
- ), "Decode ROT13" (
- @samp{W r}
- ) and "Outlook Deuglify" which repairs the dumb quoting used
- by many users of Microsoft products (
- @samp{W Y f} gives you full deuglify.
- See @samp{W Y C-h} or
- have a look at the menus for other deuglifications).
- Outlook deuglify is only available since Gnus 5.10.
-
-@ifnottex
-@node [4.9], [4.10], [4.8], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.9:
-
- Is there a way to automatically ignore posts by specific
- authors or with specific words in the subject? And can I
- highlight more interesting ones in some way?
-
-
-Answer:
-
- You want Scoring. Scoring means, that you define rules
- which assign each message an integer value. Depending on
- the value the message is highlighted in summary buffer (if
- it's high, say +2000) or automatically marked read (if the
- value is low, say -800) or some other action happens.
-
-
- There are basically three ways of setting up rules which assign
- the scoring-value to messages. The first and easiest way is to set
- up rules based on the article you are just reading. Say you're
- reading a message by a guy who always writes nonsense and you want
- to ignore his messages in the future. Hit
- @samp{L}, to set up a rule which lowers the score.
- Now Gnus asks you which the criteria for lowering the Score shall
- be. Hit @samp{?} twice to see all possibilities,
- we want @samp{a} which means the author (the from
- header). Now Gnus wants to know which kind of matching we want.
- Hit either @samp{e} for an exact match or
- @samp{s} for substring-match and delete afterwards
- everything but the name to score down all authors with the given
- name no matter which email address is used. Now you need to tell
- Gnus when to apply the rule and how long it should last, hit e.g.
- @samp{p} to apply the rule now and let it last
- forever. If you want to raise the score instead of lowering it say
- @samp{I} instead of @samp{L}.
-
+@noindent
- You can also set up rules by hand. To do this say @samp{V
- f} in summary buffer. Then you are asked for the name
- of the score file, it's name.of.group.SCORE for rules valid in
- only one group or all.Score for rules valid in all groups. See the
- Gnus manual for the exact syntax, basically it's one big list
- whose elements are lists again. the first element of those lists
- is the header to score on, then one more list with what to match,
- which score to assign, when to expire the rule and how to do the
- matching. If you find me very interesting, you could e.g. add the
- following to your all.Score:
-
+@node [4.8]
+@subsubheading Question 4.8
+
+Is there anything I can do to make poorly formatted mails
+more readable?
+
+@subsubheading Answer
+
+Gnus offers you several functions to "wash" incoming mail, you can
+find them if you browse through the menu, item
+Article->Washing. The most interesting ones are probably "Wrap
+long lines" (@samp{W w}), "Decode ROT13"
+(@samp{W r}) and "Outlook Deuglify" which repairs
+the dumb quoting used by many users of Microsoft products
+(@samp{W Y f} gives you full deuglify.
+See @samp{W Y C-h} or have a look at the menus for
+other deuglifications). Outlook deuglify is only available since
+Gnus 5.10.
+
+@node [4.9]
+@subsubheading Question 4.9
+
+Is there a way to automatically ignore posts by specific
+authors or with specific words in the subject? And can I
+highlight more interesting ones in some way?
+
+@subsubheading Answer
+
+You want Scoring. Scoring means, that you define rules
+which assign each message an integer value. Depending on
+the value the message is highlighted in summary buffer (if
+it's high, say +2000) or automatically marked read (if the
+value is low, say -800) or some other action happens.
+
+There are basically three ways of setting up rules which assign
+the scoring-value to messages. The first and easiest way is to set
+up rules based on the article you are just reading. Say you're
+reading a message by a guy who always writes nonsense and you want
+to ignore his messages in the future. Hit
+@samp{L}, to set up a rule which lowers the score.
+Now Gnus asks you which the criteria for lowering the Score shall
+be. Hit @samp{?} twice to see all possibilities,
+we want @samp{a} which means the author (the from
+header). Now Gnus wants to know which kind of matching we want.
+Hit either @samp{e} for an exact match or
+@samp{s} for substring-match and delete afterwards
+everything but the name to score down all authors with the given
+name no matter which email address is used. Now you need to tell
+Gnus when to apply the rule and how long it should last, hit e.g.
+@samp{p} to apply the rule now and let it last
+forever. If you want to raise the score instead of lowering it say
+@samp{I} instead of @samp{L}.
+
+You can also set up rules by hand. To do this say @samp{V
+f} in summary buffer. Then you are asked for the name
+of the score file, it's name.of.group.SCORE for rules valid in
+only one group or all.Score for rules valid in all groups. See the
+Gnus manual for the exact syntax, basically it's one big list
+whose elements are lists again. the first element of those lists
+is the header to score on, then one more list with what to match,
+which score to assign, when to expire the rule and how to do the
+matching. If you find me very interesting, you could e.g. add the
+following to your all.Score:
@example
(("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s))
("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s)))
@end example
-
@noindent
- This would add 999 to the score of messages written by me
- and 500 to the score of messages which are a (possibly
- indirect) answer to a message written by me. Of course
- nobody with a sane mind would do this :-)
-
- The third alternative is adaptive scoring. This means Gnus
- watches you and tries to find out what you find
- interesting and what annoying and sets up rules
- which reflect this. Adaptive scoring can be a huge help
- when reading high traffic groups. If you want to activate
- adaptive scoring say
-
+This would add 999 to the score of messages written by me
+and 500 to the score of messages which are a (possibly
+indirect) answer to a message written by me. Of course
+nobody with a sane mind would do this :-)
+
+The third alternative is adaptive scoring. This means Gnus
+watches you and tries to find out what you find
+interesting and what annoying and sets up rules
+which reflect this. Adaptive scoring can be a huge help
+when reading high traffic groups. If you want to activate
+adaptive scoring say
@example
(setq gnus-use-adaptive-scoring t)
@end example
-
@noindent
- in ~/.gnus.
-
-@ifnottex
-@node [4.10], [4.11], [4.9], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.10:
- How can I disable threading in some (e.g. mail-) groups, or
- set other variables specific for some groups?
-
+in ~/.gnus.el.
-Answer:
+@node [4.10]
+@subsubheading Question 4.10
- While in group buffer move point over the group and hit
- @samp{G c}, this opens a buffer where you
- can set options for the group. At the bottom of the buffer
- you'll find an item that allows you to set variables
- locally for the group. To disable threading enter
- gnus-show-threads as name of variable and nil as
- value. Hit button done at the top of the buffer when
- you're ready.
-
-@ifnottex
-@node [4.11], [4.12], [4.10], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.11:
+How can I disable threading in some (e.g. mail-) groups, or
+set other variables specific for some groups?
- Can I highlight messages written by me and follow-ups to
- those?
-
+@subsubheading Answer
-Answer:
+While in group buffer move point over the group and hit
+@samp{G c}, this opens a buffer where you
+can set options for the group. At the bottom of the buffer
+you'll find an item that allows you to set variables
+locally for the group. To disable threading enter
+gnus-show-threads as name of variable and nil as
+value. Hit button done at the top of the buffer when
+you're ready.
- Stop those "Can I ..." questions, the answer is always yes
- in Gnus Country :-). It's a three step process: First we
- make faces (specifications of how summary-line shall look
- like) for those postings, then we'll give them some
- special score and finally we'll tell Gnus to use the new
- faces. You can find detailed instructions on how to do it on
- @uref{http://my.gnus.org/Members/dzimmerm/HowTo%2C2002-07-25%2C1027619165012198456/view,my.gnus.org}
-
-@ifnottex
-@node [4.12], [4.13], [4.11], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.12:
-
- The number of total messages in a group which Gnus
- displays in group buffer is by far to high, especially in
- mail groups. Is this a bug?
-
+@node [4.11]
+@subsubheading Question 4.11
-Answer:
-
- No, that's a matter of design of Gnus, fixing this would
- mean reimplementation of major parts of Gnus'
- back ends. Gnus thinks "highest-article-number -
- lowest-article-number = total-number-of-articles". This
- works OK for Usenet groups, but if you delete and move
- many messages in mail groups, this fails. To cure the
- symptom, enter the group via @samp{C-u RET}
- (this makes Gnus get all messages), then
- hit @samp{M P b} to mark all messages and
- then say @samp{B m name.of.group} to move
- all messages to the group they have been in before, they
- get new message numbers in this process and the count is
- right again (until you delete and move your mail to other
- groups again).
-
-@ifnottex
-@node [4.13], [4.14], [4.12], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.13:
+Can I highlight messages written by me and follow-ups to
+those?
- I don't like the layout of summary and article buffer, how
- to change it? Perhaps even a three pane display?
-
+@subsubheading Answer
-Answer:
+Stop those "Can I ..." questions, the answer is always yes
+in Gnus Country :-). It's a three step process: First we
+make faces (specifications of how summary-line shall look
+like) for those postings, then we'll give them some
+special score and finally we'll tell Gnus to use the new
+faces. You can find detailed instructions on how to do it on
+@uref{http://my.gnus.org/node/view/224, my.gnus.org}
- You can control the windows configuration by calling the
- function gnus-add-configuration. The syntax is a bit
- complicated but explained very well in the manual node
- "Window Layout". Some popular examples:
-
+@node [4.12]
+@subsubheading Question 4.12
- Instead 25% summary 75% article buffer 35% summary and 65%
- article (the 1.0 for article means "take the remaining
- space"):
-
+The number of total messages in a group which Gnus
+displays in group buffer is by far to high, especially in
+mail groups. Is this a bug?
+
+@subsubheading Answer
+
+No, that's a matter of design of Gnus, fixing this would
+mean reimplementation of major parts of Gnus'
+back ends. Gnus thinks "highest-article-number -
+lowest-article-number = total-number-of-articles". This
+works OK for Usenet groups, but if you delete and move
+many messages in mail groups, this fails. To cure the
+symptom, enter the group via @samp{C-u RET}
+(this makes Gnus get all messages), then
+hit @samp{M P b} to mark all messages and
+then say @samp{B m name.of.group} to move
+all messages to the group they have been in before, they
+get new message numbers in this process and the count is
+right again (until you delete and move your mail to other
+groups again).
+
+@node [4.13]
+@subsubheading Question 4.13
+
+I don't like the layout of summary and article buffer, how
+to change it? Perhaps even a three pane display?
+
+@subsubheading Answer
+
+You can control the windows configuration by calling the
+function gnus-add-configuration. The syntax is a bit
+complicated but explained very well in the manual node
+"Window Layout". Some popular examples:
+
+Instead 25% summary 75% article buffer 35% summary and 65%
+article (the 1.0 for article means "take the remaining
+space"):
@example
-(gnus-add-configuration
- '(article (vertical 1.0
- (summary .35 point)
- (article 1.0))))
+(gnus-add-configuration
+ '(article (vertical 1.0 (summary .35 point) (article 1.0))))
@end example
-
+@noindent
- A three pane layout, Group buffer on the left, summary
- buffer top-right, article buffer bottom-right:
-
+A three pane layout, Group buffer on the left, summary
+buffer top-right, article buffer bottom-right:
@example
(gnus-add-configuration
@@ -1228,46 +1105,40 @@ Answer:
(vertical 25
(group 1.0))
(vertical 1.0
- (summary 1.0 point)))))
+ (summary 1.0 point)))))
@end example
-
-@ifnottex
-@node [4.14], [4.15], [4.13], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.14:
+@noindent
- I don't like the way the Summary buffer looks, how to tweak it?
-
+@node [4.14]
+@subsubheading Question 4.14
-Answer:
-
- You've got to play around with the variable
- gnus-summary-line-format. It's value is a string of
- symbols which stand for things like author, date, subject
- etc. A list of the available specifiers can be found in the
- manual node "Summary Buffer Lines" and the often forgotten
- node "Formatting Variables" and it's sub-nodes. There
- you'll find useful things like positioning the cursor and
- tabulators which allow you a summary in table form, but
- sadly hard tabulators are broken in 5.8.8.
-
+I don't like the way the Summary buffer looks, how to tweak it?
- Since 5.10, Gnus offers you some very nice new specifiers,
- e.g. %B which draws a thread-tree and %&user-date which
- gives you a date where the details are dependent of the
- articles age. Here's an example which uses both:
-
+@subsubheading Answer
+
+You've got to play around with the variable
+gnus-summary-line-format. It's value is a string of
+symbols which stand for things like author, date, subject
+etc. A list of the available specifiers can be found in the
+manual node "Summary Buffer Lines" and the often forgotten
+node "Formatting Variables" and it's sub-nodes. There
+you'll find useful things like positioning the cursor and
+tabulators which allow you a summary in table form, but
+sadly hard tabulators are broken in 5.8.8.
+
+Since 5.10, Gnus offers you some very nice new specifiers,
+e.g. %B which draws a thread-tree and %&user-date which
+gives you a date where the details are dependent of the
+articles age. Here's an example which uses both:
@example
-(setq gnus-summary-line-format
- ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n")
+(setq gnus-summary-line-format ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n")
@end example
-
@noindent
- resulting in:
-
-@smallexample
+resulting in:
+
+@example
:O Re: [Richard Stallman] rfc2047.el | 13 |Lars Magne Ingebrigt |Sat 23:06
:O Re: Revival of the ding-patches list | 13 |Lars Magne Ingebrigt |Sat 23:12
:R > Re: Find correct list of articles for a gro| 25 |Lars Magne Ingebrigt |Sat 23:16
@@ -1280,54 +1151,48 @@ Answer:
:R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57
:O \-> ... | 18 |Kai Grossjohann | 0:35
:O \-> ... | 13 |Lars Magne Ingebrigt | 0:56
-@end smallexample
-
-@ifnottex
-@node [4.15], , [4.14], FAQ 4 - Reading messages
-@end ifnottex
-@subsubheading Question 4.15:
+@end example
+@noindent
- How to split incoming mails in several groups?
-
+@node [4.15]
+@subsubheading Question 4.15
-Answer:
+How to split incoming mails in several groups?
- Gnus offers two possibilities for splitting mail, the easy
- nnmail-split-methods and the more powerful Fancy Mail
- Splitting. I'll only talk about the first one, refer to
- the manual, node "Fancy Mail Splitting" for the latter.
-
+@subsubheading Answer
- The value of nnmail-split-methods is a list, each element
- is a list which stands for a splitting rule. Each rule has
- the form "group where matching articles should go to",
- "regular expression which has to be matched", the first
- rule which matches wins. The last rule must always be a
- general rule (regular expression .*) which denotes where
- articles should go which don't match any other rule. If
- the folder doesn't exist yet, it will be created as soon
- as an article lands there. By default the mail will be
- send to all groups whose rules match. If you
- don't want that (you probably don't want), say
-
+Gnus offers two possibilities for splitting mail, the easy
+nnmail-split-methods and the more powerful Fancy Mail
+Splitting. I'll only talk about the first one, refer to
+the manual, node "Fancy Mail Splitting" for the latter.
+
+The value of nnmail-split-methods is a list, each element
+is a list which stands for a splitting rule. Each rule has
+the form "group where matching articles should go to",
+"regular expression which has to be matched", the first
+rule which matches wins. The last rule must always be a
+general rule (regular expression .*) which denotes where
+articles should go which don't match any other rule. If
+the folder doesn't exist yet, it will be created as soon
+as an article lands there. By default the mail will be
+send to all groups whose rules match. If you
+don't want that (you probably don't want), say
@example
(setq nnmail-crosspost nil)
@end example
-
@noindent
- in ~/.gnus.
-
- An example might be better than thousand words, so here's
- my nnmail-split-methods. Note that I send duplicates in a
- special group and that the default group is spam, since I
- filter all mails out which are from some list I'm
- subscribed to or which are addressed directly to me
- before. Those rules kill about 80% of the Spam which
- reaches me (Email addresses are changed to prevent spammers
- from using them):
-
+in ~/.gnus.el.
+
+An example might be better than thousand words, so here's
+my nnmail-split-methods. Note that I send duplicates in a
+special group and that the default group is spam, since I
+filter all mails out which are from some list I'm
+subscribed to or which are addressed directly to me
+before. Those rules kill about 80% of the Spam which
+reaches me (Email addresses are changed to prevent spammers
+from using them):
@example
(setq nnmail-split-methods
@@ -1336,133 +1201,114 @@ Answer:
("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@@socha.bla.*")
("tcsh" "^\\(To:\\|CC:\\).*localpart@@mx.gw.bla.*")
("BAfH" "^\\(To:\\|CC:\\).*localpart@@.*uni-muenchen.bla.*")
- ("Hamster-src"
- "^\\(CC:\\|To:\\).*hamster-sourcen@@yahoogroups.\\(de\\|com\\).*")
+ ("Hamster-src" "^\\(CC:\\|To:\\).*hamster-sourcen@@yahoogroups.\\(de\\|com\\).*")
("Tagesschau" "^From: tagesschau <localpart@@www.tagesschau.bla>$")
("Replies" "^\\(CC:\\|To:\\).*localpart@@Frank-Schmitt.bla.*")
- ("EK"
- "^From:.*\\(localpart@@privateprovider.bla\\|localpart@@workplace.bla\\).*")
- ("Spam"
- "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*")
- ("Spam"
- "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*")
- ("Spam"
- "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*")
+ ("EK" "^From:.*\\(localpart@@privateprovider.bla\\|localpart@@workplace.bla\\).*")
+ ("Spam" "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*")
+ ("Spam" "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*")
+ ("Spam" "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*")
("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)")
- ("Spam"
- "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)")
- ("Spam"
- "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*")
+ ("Spam" "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)")
+ ("Spam" "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*")
("Spam" "^Delivered-To: GMX delivery to spamtrap@@gmx.bla$")
("Spam" "^Received: from link2buy.com")
("Spam" "^CC: .*azzrael@@t-online.bla")
("Spam" "^X-Mailer-Version: 1.50 BETA")
("Uni" "^\\(CC:\\|To:\\).*localpart@@uni-koblenz.bla.*")
- ("Inbox"
- "^\\(CC:\\|To:\\).*\\(my\ name\\|address@@one.bla\\|adress@@two.bla\\)")
+ ("Inbox" "^\\(CC:\\|To:\\).*\\(my\ name\\|address@@one.bla\\|adress@@two.bla\\)")
("Spam" "")))
@end example
-
+@noindent
-@ifnottex
-@node FAQ 5 - Composing messages, FAQ 6 - Old messages, FAQ 4 - Reading messages, Frequently Asked Questions
-@end ifnottex
+@node FAQ 5 - Composing messages
@subsection Composing messages
@menu
-* [5.1]:: What are the basic commands I need to know for sending mail and
- postings?
-* [5.2]:: How to enable automatic word-wrap when composing messages?
-* [5.3]:: How to set stuff like From, Organization, Reply-To, signature...?
-* [5.4]:: Can I set things like From, Signature etc group based on the
- group I post too?
-* [5.5]:: Is there a spell-checker? Perhaps even on-the-fly spell-checking?
-* [5.6]:: Can I set the dictionary based on the group I'm posting to?
-* [5.7]:: Is there some kind of address-book, so I needn't remember all
- those email addresses?
-* [5.8]:: Sometimes I see little images at the top of article buffer.
- What's that and how can I send one with my postings, too?
-* [5.9]:: Sometimes I accidentally hit r instead of f in newsgroups.
- Can Gnus warn me, when I'm replying by mail in newsgroups?
-* [5.10]:: How to tell Gnus not to generate a sender header?
-* [5.11]:: I want Gnus to locally store copies of my send mail and news,
- how to do it?
-* [5.12]:: People tell me my Message-IDs are not correct,
- why aren't they and how to fix it?
+* [5.1]:: What are the basic commands I need to know for sending
+ mail and postings?
+* [5.2]:: How to enable automatic word-wrap when composing messages?
+* [5.3]:: How to set stuff like From, Organization, Reply-To,
+ signature...?
+* [5.4]:: Can I set things like From, Signature etc group based on
+ the group I post too?
+* [5.5]:: Is there a spell-checker? Perhaps even on-the-fly
+ spell-checking?
+* [5.6]:: Can I set the dictionary based on the group I'm posting
+ to?
+* [5.7]:: Is there some kind of address-book, so I needn't remember
+ all those email addresses?
+* [5.8]:: Sometimes I see little images at the top of article
+ buffer. What's that and how can I send one with my postings, too?
+* [5.9]:: Sometimes I accidentally hit r instead of f in newsgroups.
+ Can Gnus warn me, when I'm replying by mail in newsgroups?
+* [5.10]:: How to tell Gnus not to generate a sender header?
+* [5.11]:: I want Gnus to locally store copies of my send mail and
+ news, how to do it?
+* [5.12]:: People tell me my Message-IDs are not correct, why aren't
+ they and how to fix it?
@end menu
-@ifnottex
-@node [5.1], [5.2], FAQ 5 - Composing messages, FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.1:
+@node [5.1]
+@subsubheading Question 5.1
- What are the basic commands I need to know for sending mail and postings?
-
+What are the basic commands I need to know for sending mail and postings?
-Answer:
-
- To start composing a new mail hit @samp{m}
- either in Group or Summary buffer, for a posting, it's
- either @samp{a} in Group buffer and
- filling the Newsgroups header manually
- or @samp{a} in the Summary buffer of the
- group where the posting shall be send to. Replying by mail
- is
- @samp{r} if you don't want to cite the
- author, or import the cited text manually and
- @samp{R} to cite the text of the original
- message. For a follow up to a newsgroup, it's
- @samp{f} and @samp{F}
- (analog to @samp{r} and
- @samp{R}).
-
+@subsubheading Answer
- Enter new headers above the line saying "--text follows
- this line--", enter the text below the line. When ready
- hit @samp{C-c C-c}, to send the message,
- if you want to finish it later hit @samp{C-c
- C-d} to save it in the drafts group, where you
- can start editing it again by saying @samp{D
- e}.
-
-@ifnottex
-@node [5.2], [5.3], [5.1], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.2:
+To start composing a new mail hit @samp{m}
+either in Group or Summary buffer, for a posting, it's
+either @samp{a} in Group buffer and
+filling the Newsgroups header manually
+or @samp{a} in the Summary buffer of the
+group where the posting shall be send to. Replying by mail
+is
+@samp{r} if you don't want to cite the
+author, or import the cited text manually and
+@samp{R} to cite the text of the original
+message. For a follow up to a newsgroup, it's
+@samp{f} and @samp{F}
+(analogously to @samp{r} and
+@samp{R}).
- How to enable automatic word-wrap when composing messages?
-
+Enter new headers above the line saying "--text follows
+this line--", enter the text below the line. When ready
+hit @samp{C-c C-c}, to send the message,
+if you want to finish it later hit @samp{C-c
+C-d} to save it in the drafts group, where you
+can start editing it again by saying @samp{D
+e}.
-Answer:
+@node [5.2]
+@subsubheading Question 5.2
- Say
-
+How to enable automatic word-wrap when composing messages?
+
+@subsubheading Answer
+
+Say
@example
(add-hook 'message-mode-hook
- (lambda ()
- (setq fill-column 72)
- (turn-on-auto-fill)))
+ (lambda ()
+ (setq fill-column 72)
+ (turn-on-auto-fill)))
@end example
-
@noindent
- in ~/.gnus. You can reformat a paragraph by hitting
- @samp{M-q} (as usual)
-
-@ifnottex
-@node [5.3], [5.4], [5.2], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.3:
- How to set stuff like From, Organization, Reply-To, signature...?
-
+in ~/.gnus.el. You can reformat a paragraph by hitting
+@samp{M-q} (as usual)
-Answer:
+@node [5.3]
+@subsubheading Question 5.3
- There are other ways, but you should use posting styles
- for this. (See below why).
- This example should make the syntax clear:
-
+How to set stuff like From, Organization, Reply-To, signature...?
+
+@subsubheading Answer
+
+There are other ways, but you should use posting styles
+for this. (See below why).
+This example should make the syntax clear:
@example
(setq gnus-posting-styles
@@ -1474,146 +1320,121 @@ Answer:
("X-SampleHeader" "foobar")
(eval (setq some-variable "Foo bar")))))
@end example
-
@noindent
- The ".*" means that this settings are the default ones
- (see below), valid values for the first element of the
- following lists are signature, signature-file,
- organization, address, name or body. The attribute name
- can also be a string. In that case, this will be used as
- a header name, and the value will be inserted in the
- headers of the article; if the value is `nil', the header
- name will be removed. You can also say (eval (foo bar)),
- then the function foo will be evaluated with argument bar
- and the result will be thrown away.
-
-@ifnottex
-@node [5.4], [5.5], [5.3], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.4:
-
- Can I set things like From, Signature etc group based on the group I post too?
-
-Answer:
-
- That's the strength of posting styles. Before, we used ".*"
- to set the default for all groups. You can use a regexp
- like "^gmane" and the following settings are only applied
- to postings you send to the gmane hierarchy, use
- ".*binaries" instead and they will be applied to postings
- send to groups containing the string binaries in their
- name etc.
-
-
- You can instead of specifying a regexp specify a function
- which is evaluated, only if it returns true, the
- corresponding settings take effect. Two interesting
- candidates for this are message-news-p which returns t if
- the current Group is a newsgroup and the corresponding
- message-mail-p.
-
-
- Note that all forms that match are applied, that means in
- the example below, when I post to
- gmane.mail.spam.spamassassin.general, the settings under
- ".*" are applied and the settings under message-news-p and
- those under "^gmane" and those under
- "^gmane\\.mail\\.spam\\.spamassassin\\.general$". Because
- of this put general settings at the top and specific ones
- at the bottom.
-
+The ".*" means that this settings are the default ones
+(see below), valid values for the first element of the
+following lists are signature, signature-file,
+organization, address, name or body. The attribute name
+can also be a string. In that case, this will be used as
+a header name, and the value will be inserted in the
+headers of the article; if the value is `nil', the header
+name will be removed. You can also say (eval (foo bar)),
+then the function foo will be evaluated with argument bar
+and the result will be thrown away.
+
+@node [5.4]
+@subsubheading Question 5.4
+
+Can I set things like From, Signature etc group based on the group I post too?
+
+@subsubheading Answer
+
+That's the strength of posting styles. Before, we used ".*"
+to set the default for all groups. You can use a regexp
+like "^gmane" and the following settings are only applied
+to postings you send to the gmane hierarchy, use
+".*binaries" instead and they will be applied to postings
+send to groups containing the string binaries in their
+name etc.
+
+You can instead of specifying a regexp specify a function
+which is evaluated, only if it returns true, the
+corresponding settings take effect. Two interesting
+candidates for this are message-news-p which returns t if
+the current Group is a newsgroup and the corresponding
+message-mail-p.
+
+Note that all forms that match are applied, that means in
+the example below, when I post to
+gmane.mail.spam.spamassassin.general, the settings under
+".*" are applied and the settings under message-news-p and
+those under "^gmane" and those under
+"^gmane\\.mail\\.spam\\.spamassassin\\.general$". Because
+of this put general settings at the top and specific ones
+at the bottom.
@example
(setq gnus-posting-styles
'((".*" ;;default
(name "Frank Schmitt")
(organization "Hamme net, kren mer och nimmi")
- (signature-file "~/.signature"))
+ (signature-file "~/.signature") )
((message-news-p) ;;Usenet news?
(address "mySpamTrap@@Frank-Schmitt.bla")
- ("Reply-To" "hereRealRepliesOnlyPlease@@Frank-Schmitt.bla"))
+ ("Reply-To" "hereRealRepliesOnlyPlease@@Frank-Schmitt.bla") )
((message-mail-p) ;;mail?
- (address "usedForMails@@Frank-Schmitt.bla"))
+ (address "usedForMails@@Frank-Schmitt.bla") )
("^gmane" ;;this is mail, too in fact
(address "usedForMails@@Frank-Schmitt.net")
- ("Reply-To" nil))
+ ("Reply-To" nil) )
("^gmane.mail.spam.spamassassin.general$"
(eval (setq mail-envelope-from "Azzrael@@rz-online.de"))
- (address "Azzrael@@rz-online.de"))))
+ (address "Azzrael@@rz-online.de")) ))
@end example
-
-@ifnottex
-@node [5.5], [5.6], [5.4], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.5:
+@noindent
- Is there a spell-checker? Perhaps even on-the-fly spell-checking?
-
+@node [5.5]
+@subsubheading Question 5.5
-Answer:
+Is there a spell-checker? Perhaps even on-the-fly spell-checking?
-You can use ispell.el to spell-check stuff in Emacs. So the first
-thing to do is to make sure that you've got either
-@itemize @bullet
-@item
-@uref{http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html,ispell}
-or
-@item
-@uref{http://aspell.sourceforge.net/,aspell}
-@end itemize
-@noindent
-installed and in your Path.
-
-Then you need
-@uref{http://www.kdstevens.com/~stevens/ispell-page.html,ispell.el,ispell.el}
-and for on-the-fly spell-checking
-@uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html,flyspell.el,flyspell.el}.
-Ispell.el is shipped with Gnus Emacs and available through the Emacs
-package system, flyspell.el is shipped with Emacs and part of XEmacs
-text-modes package which is available through the package system, so
-there should be no need to install them manually.
-
+@subsubheading Answer
- Ispell.el assumes you use ispell, if you choose aspell say
-
+You can use ispell.el to spell-check stuff in Emacs. So the
+first thing to do is to make sure that you've got either
+@uref{http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html, ispell}
+or @uref{http://aspell.sourceforge.net/, aspell}
+installed and in your Path. Then you need
+@uref{http://www.kdstevens.com/~stevens/ispell-page.html, ispell.el}
+and for on-the-fly spell-checking
+@uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html, flyspell.el}.
+Ispell.el is shipped with Emacs and available through the XEmacs package system,
+flyspell.el is shipped with Emacs and part of XEmacs text-modes package which is
+available through the package system, so there should be no need to install them
+manually.
+
+Ispell.el assumes you use ispell, if you choose aspell say
@example
(setq ispell-program-name "aspell")
@end example
-
-
@noindent
- in your Emacs configuration file.
+in your Emacs configuration file.
- If you want your outgoing messages to be spell-checked, say
-
+If you want your outgoing messages to be spell-checked, say
@example
(add-hook 'message-send-hook 'ispell-message)
@end example
-
@noindent
- In your ~/.gnus, if you prefer on-the-fly spell-checking say
-
+
+In your ~/.gnus.el, if you prefer on-the-fly spell-checking say
@example
(add-hook 'message-mode-hook (lambda () (flyspell-mode 1)))
@end example
-
-@ifnottex
-@node [5.6], [5.7], [5.5], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.6:
+@noindent
- Can I set the dictionary based on the group I'm posting to?
-
+@node [5.6]
+@subsubheading Question 5.6
-Answer:
+Can I set the dictionary based on the group I'm posting to?
- Yes, say something like
-
+@subsubheading Answer
+
+Yes, say something like
@example
(add-hook 'gnus-select-group-hook
@@ -1625,55 +1446,47 @@ Answer:
(t
(ispell-change-dictionary "english")))))
@end example
-
-
@noindent
- in ~/.gnus. Change "^de\\." and "deutsch8" to something
- that suits your needs.
-@ifnottex
-@node [5.7], [5.8], [5.6], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.7:
+in ~/.gnus.el. Change "^de\\." and "deutsch8" to something
+that suits your needs.
- Is there some kind of address-book, so I needn't remember
- all those email addresses?
-
+@node [5.7]
+@subsubheading Question 5.7
-Answer:
+Is there some kind of address-book, so I needn't remember
+all those email addresses?
- There's an very basic solution for this, mail aliases.
- You can store your mail addresses in a ~/.mailrc file using a simple
- alias syntax:
-
+@subsubheading Answer
+
+There's an very basic solution for this, mail aliases.
+You can store your mail addresses in a ~/.mailrc file using a simple
+alias syntax:
@example
alias al "Al <al@@english-heritage.bla>"
@end example
-
@noindent
- Then typing your alias (followed by a space or punctuation
- character) on a To: or Cc: line in the message buffer will
- cause Gnus to insert the full address for you. See the
- node "Mail Aliases" in Message (not Gnus) manual for
- details.
-
- However, what you really want is the Insidious Big Brother
- Database bbdb. Get it through the XEmacs package system or from
- @uref{http://bbdb.sourceforge.net/,bbdb's homepage}.
- Now place the following in ~/.gnus, to activate bbdb for Gnus:
-
+Then typing your alias (followed by a space or punctuation
+character) on a To: or Cc: line in the message buffer will
+cause Gnus to insert the full address for you. See the
+node "Mail Aliases" in Message (not Gnus) manual for
+details.
+
+However, what you really want is the Insidious Big Brother
+Database bbdb. Get it through the XEmacs package system or from
+@uref{http://bbdb.sourceforge.net/, bbdb's homepage}.
+Now place the following in ~/.gnus.el, to activate bbdb for Gnus:
@example
(require 'bbdb)
(bbdb-initialize 'gnus 'message)
@end example
-
@noindent
- Now you probably want some general bbdb configuration,
- place them in ~/.emacs:
-
+
+Now you probably want some general bbdb configuration,
+place them in ~/.emacs:
@example
(require 'bbdb)
@@ -1689,56 +1502,50 @@ alias al "Al <al@@english-heritage.bla>"
;;No popup-buffers
(setq bbdb-use-pop-up nil)
@end example
-
@noindent
- Now you should be ready to go. Say @samp{M-x bbdb RET
- RET} to open a bbdb buffer showing all
- entries. Say @samp{c} to create a new
- entry, @samp{b} to search your BBDB and
- @samp{C-o} to add a new field to an
- entry. If you want to add a sender to the BBDB you can
- also just hit `:' on the posting in the summary buffer and
- you are done. When you now compose a new mail,
- hit @samp{TAB} to cycle through know
- recipients.
-
-@ifnottex
-@node [5.8], [5.9], [5.7], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.8:
-
- Sometimes I see little images at the top of article
- buffer. What's that and how can I send one with my
- postings, too?
-
-Answer:
-
- Those images are called X-Faces. They are 48*48 pixel b/w
- pictures, encoded in a header line. If you want to include
- one in your posts, you've got to convert some image to a
- X-Face. So fire up some image manipulation program (say
- Gimp), open the image you want to include, cut out the
- relevant part, reduce color depth to 1 bit, resize to
- 48*48 and save as bitmap. Now you should get the compface
- package from
- @uref{ftp://ftp.cs.indiana.edu:/pub/faces/,this site}.
- and create the actual X-face by saying
-
+Now you should be ready to go. Say @samp{M-x bbdb RET
+RET} to open a bbdb buffer showing all
+entries. Say @samp{c} to create a new
+entry, @samp{b} to search your BBDB and
+@samp{C-o} to add a new field to an
+entry. If you want to add a sender to the BBDB you can
+also just hit `:' on the posting in the summary buffer and
+you are done. When you now compose a new mail,
+hit @samp{TAB} to cycle through know
+recipients.
+
+@node [5.8]
+@subsubheading Question 5.8
+
+Sometimes I see little images at the top of article
+buffer. What's that and how can I send one with my
+postings, too?
+
+@subsubheading Answer
+
+Those images are called X-Faces. They are 48*48 pixel b/w
+pictures, encoded in a header line. If you want to include
+one in your posts, you've got to convert some image to a
+X-Face. So fire up some image manipulation program (say
+Gimp), open the image you want to include, cut out the
+relevant part, reduce color depth to 1 bit, resize to
+48*48 and save as bitmap. Now you should get the compface
+package from
+@uref{ftp://ftp.cs.indiana.edu:/pub/faces/, this site}.
+and create the actual X-face by saying
@example
-cat file.xbm | xbm2ikon |compface > file.face
-cat ./file.face | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g' > ./file.face.quoted
+cat file.xbm | xbm2ikon | compface > file.face
+cat file.face | sed 's/\\/\\\\/g;s/\"/\\\"/g;' > file.face.quoted
@end example
-
@noindent
-If you can't use compface, there's an online X-face converter at@*
-@uref{http://www.dairiki.org/xface/}. If you use MS Windows, you
-could also use the WinFace program from
-@uref{http://www.xs4all.nl/~walterln/winface/}.
-Now you only have to tell Gnus to include the X-face in your postings
-by saying
+If you can't use compface, there's an online X-face converter at
+@uref{http://www.dairiki.org/xface/}.
+If you use MS Windows, you could also use the WinFace program from
+@uref{http://www.xs4all.nl/~walterln/winface/}.
+Now you only have to tell Gnus to include the X-face in your postings by saying
@example
(setq message-default-headers
@@ -1747,33 +1554,28 @@ by saying
(insert-file-contents "~/.xemacs/xface")
(buffer-string)))
@end example
-
@noindent
- in ~/.gnus.
-
-@ifnottex
-@node [5.9], [5.10], [5.8], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.9:
-
- Sometimes I accidentally hit r instead of f in
- newsgroups. Can Gnus warn me, when I'm replying by mail in
- newsgroups?
-
-Answer:
+in ~/.gnus.el.
- Put this in ~/.gnus:
-
+@node [5.9]
+@subsubheading Question 5.9
+
+Sometimes I accidentally hit r instead of f in
+newsgroups. Can Gnus warn me, when I'm replying by mail in
+newsgroups?
+
+@subsubheading Answer
+
+Put this in ~/.gnus.el:
@example
(setq gnus-confirm-mail-reply-to-news t)
@end example
-
@noindent
- if you already use Gnus 5.10, if you still use 5.8.8 or
- 5.9 try this instead:
-
+
+if you already use Gnus 5.10, if you still use 5.8.8 or
+5.9 try this instead:
@example
(eval-after-load "gnus-msg"
@@ -1785,44 +1587,37 @@ Answer:
(y-or-n-p "Really reply by mail to article author? "))
ad-do-it))))
@end example
-
-@ifnottex
-@node [5.10], [5.11], [5.9], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.10:
+@noindent
- How to tell Gnus not to generate a sender header?
-
+@node [5.10]
+@subsubheading Question 5.10
-Answer:
+How to tell Gnus not to generate a sender header?
- Since 5.10 Gnus doesn't generate a sender header by
- default. For older Gnus' try this in ~/.gnus:
-
+@subsubheading Answer
+
+Since 5.10 Gnus doesn't generate a sender header by
+default. For older Gnus' try this in ~/.gnus.el:
@example
(eval-after-load "message"
'(add-to-list 'message-syntax-checks '(sender . disabled)))
@end example
-
-
-@ifnottex
-@node [5.11], [5.12], [5.10], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.11:
+@noindent
- I want gnus to locally store copies of my send mail and
- news, how to do it?
-
+@node [5.11]
+@subsubheading Question 5.11
-Answer:
+I want Gnus to locally store copies of my send mail and
+news, how to do it?
- You must set the variable gnus-message-archive-group to do
- this. You can set it to a string giving the name of the
- group where the copies shall go or like in the example
- below use a function which is evaluated and which returns
- the group to use.
-
+@subsubheading Answer
+
+You must set the variable gnus-message-archive-group to do
+this. You can set it to a string giving the name of the
+group where the copies shall go or like in the example
+below use a function which is evaluated and which returns
+the group to use.
@example
(setq gnus-message-archive-group
@@ -1830,31 +1625,31 @@ Answer:
"nnml:Send-News"
"nnml:Send-Mail")))
@end example
-
-
-@ifnottex
-@node [5.12], , [5.11], FAQ 5 - Composing messages
-@end ifnottex
-@subsubheading Question 5.12:
+@noindent
- People tell me my Message-IDs are not correct, why
- aren't they and how to fix it?
-
+@node [5.12]
+@subsubheading Question 5.12
+
+People tell me my Message-IDs are not correct, why
+aren't they and how to fix it?
-Answer:
+@subsubheading Answer
+
+The message-ID is an unique identifier for messages you
+send. To make it unique, Gnus need to know which machine
+name to put after the "@@". If the name of the machine
+where Gnus is running isn't suitable (it probably isn't
+at most private machines) you can tell Gnus what to use
+by saying:
- The message-ID is an unique identifier for messages you
- send. To make it unique, Gnus need to know which machine
- name to put after the "@@". If the name of the machine
- where Gnus is running isn't suitable (it probably isn't
- at most private machines) you can tell Gnus what to use
- by saying
@example
(setq message-user-fqdn "yourmachine.yourdomain.tld")
@end example
@noindent
- in ~/.gnus. If you use Gnus 5.9 or ealier, you can use this
-instead (works for newer versions a well):
+
+in ~/.gnus.el. If you use Gnus 5.9 or ealier, you can use this
+instead (works for newer versions a well):
+
@example
(eval-after-load "message"
'(let ((fqdn "yourmachine.yourdomain.tld"));; <-- Edit this!
@@ -1865,110 +1660,97 @@ instead (works for newer versions a well):
"Return user's fully qualified domain name."
fqdn))))
@end example
+@noindent
- If you have no idea what to insert for
- "yourmachine.yourdomain.tld", you've got several
- choices. You can either ask your provider if he allows
- you to use something like
- yourUserName.userfqdn.provider.net, or you can use
- somethingUnique.yourdomain.tld if you own the domain
- yourdomain.tld, or you can register at a service which
- gives private users a FQDN for free, e.g.
- @uref{http://www.stura.tu-freiberg.de/~dlx/addfqdn.html}.
- (Sorry but this website is in German, if you know of an
- English one offering the same, drop me a note).
-
-
- Finally you can tell Gnus not to generate a Message-ID
- for News at all (and letting the server do the job) by saying
-
+If you have no idea what to insert for
+"yourmachine.yourdomain.tld", you've got several
+choices. You can either ask your provider if he allows
+you to use something like
+yourUserName.userfqdn.provider.net, or you can use
+somethingUnique.yourdomain.tld if you own the domain
+yourdomain.tld, or you can register at a service which
+gives private users a FQDN for free, e.g.
+@uref{http://www.stura.tu-freiberg.de/~dlx/addfqdn.html}.
+(Sorry but this website is in German, if you know of an
+English one offering the same, drop me a note).
+
+Finally you can tell Gnus not to generate a Message-ID
+for News at all (and letting the server do the job) by saying
@example
(setq message-required-news-headers
(remove' Message-ID message-required-news-headers))
@end example
-
@noindent
- you can also tell Gnus not to generate Message-IDs for mail by saying
-
+
+you can also tell Gnus not to generate Message-IDs for mail by saying
@example
(setq message-required-mail-headers
(remove' Message-ID message-required-mail-headers))
@end example
-
@noindent
- , however some mail servers don't generate proper
- Message-IDs, too, so test if your Mail Server behaves
- correctly by sending yourself a Mail and looking at the Message-ID.
-
-@ifnottex
-@node FAQ 6 - Old messages, FAQ 7 - Gnus in a dial-up environment, FAQ 5 - Composing messages, Frequently Asked Questions
-@end ifnottex
+, however some mail servers don't generate proper
+Message-IDs, too, so test if your Mail Server behaves
+correctly by sending yourself a Mail and looking at the Message-ID.
+
+@node FAQ 6 - Old messages
@subsection Old messages
@menu
-* [6.1]:: How to import my old mail into Gnus?
-* [6.2]:: How to archive interesting messages?
-* [6.3]:: How to search for a specific message?
-* [6.4]:: How to get rid of old unwanted mail?
-* [6.5]:: I want that all read messages are expired (at least in some
- groups). How to do it?
-* [6.6]:: I don't want expiration to delete my mails but to move them
- to another group.
+* [6.1]:: How to import my old mail into Gnus?
+* [6.2]:: How to archive interesting messages?
+* [6.3]:: How to search for a specific message?
+* [6.4]:: How to get rid of old unwanted mail?
+* [6.5]:: I want that all read messages are expired (at least in some
+ groups). How to do it?
+* [6.6]:: I don't want expiration to delete my mails but to move them
+ to another group.
@end menu
-@ifnottex
-@node [6.1], [6.2], FAQ 6 - Old messages, FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.1:
-
- How to import my old mail into Gnus?
-
-
-Answer:
-
- The easiest way is to tell your old mail program to
- export the messages in mbox format. Most Unix mailers
- are able to do this, if you come from the MS Windows
- world, you may find tools at
- @uref{http://mbx2mbox.sourceforge.net/}.
-
-
- Now you've got to import this mbox file into Gnus. To do
- this, create a nndoc group based on the mbox file by
- saying @samp{G f /path/file.mbox RET} in
- Group buffer. You now have read-only access to your
- mail. If you want to import the messages to your normal
- Gnus mail groups hierarchy, enter the nndoc group you've
- just created by saying @samp{C-u RET}
- (thus making sure all messages are retrieved), mark all
- messages by saying @samp{M P b} and
- either copy them to the desired group by saying
- @samp{B c name.of.group RET} or send them
- through nnmail-split-methods (respool them) by saying
- @samp{B r}.
-
-@ifnottex
-@node [6.2], [6.3], [6.1], FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.2:
-
- How to archive interesting messages?
-
-
-Answer:
-
- If you stumble across an interesting message, say in
- gnu.emacs.gnus and want to archive it there are several
- solutions. The first and easiest is to save it to a file
- by saying @samp{O f}. However, wouldn't
- it be much more convenient to have more direct access to
- the archived message from Gnus? If you say yes, put this
- snippet by Frank Haun <pille3003@@fhaun.de> in
- ~/.gnus:
-
+@node [6.1]
+@subsubheading Question 6.1
+
+How to import my old mail into Gnus?
+
+@subsubheading Answer
+
+The easiest way is to tell your old mail program to
+export the messages in mbox format. Most Unix mailers
+are able to do this, if you come from the MS Windows
+world, you may find tools at
+@uref{http://mbx2mbox.sourceforge.net/}.
+
+Now you've got to import this mbox file into Gnus. To do
+this, create a nndoc group based on the mbox file by
+saying @samp{G f /path/file.mbox RET} in
+Group buffer. You now have read-only access to your
+mail. If you want to import the messages to your normal
+Gnus mail groups hierarchy, enter the nndoc group you've
+just created by saying @samp{C-u RET}
+(thus making sure all messages are retrieved), mark all
+messages by saying @samp{M P b} and
+either copy them to the desired group by saying
+@samp{B c name.of.group RET} or send them
+through nnmail-split-methods (respool them) by saying
+@samp{B r}.
+
+@node [6.2]
+@subsubheading Question 6.2
+
+How to archive interesting messages?
+
+@subsubheading Answer
+
+If you stumble across an interesting message, say in
+gnu.emacs.gnus and want to archive it there are several
+solutions. The first and easiest is to save it to a file
+by saying @samp{O f}. However, wouldn't
+it be much more convenient to have more direct access to
+the archived message from Gnus? If you say yes, put this
+snippet by Frank Haun <pille3003@@fhaun.de> in
+~/.gnus.el:
@example
(defun my-archive-article (&optional n)
@@ -1987,624 +1769,531 @@ more then one article."
(replace-regexp-in-string "^.*:" "" gnus-newsgroup-name)))))
(gnus-summary-copy-article n archive-name)))
@end example
-
@noindent
- You can now say @samp{M-x
- my-archive-article} in summary buffer to
- archive the article under the cursor in a nnml
- group. (Change nnml to your preferred back end)
-
- Of course you can also make sure the cache is enabled by saying
-
+You can now say @samp{M-x
+my-archive-article} in summary buffer to
+archive the article under the cursor in a nnml
+group. (Change nnml to your preferred back end)
+
+Of course you can also make sure the cache is enabled by saying
@example
(setq gnus-use-cache t)
@end example
-
@noindent
- then you only have to set either the tick or the dormant
- mark for articles you want to keep, setting the read
- mark will remove them from cache.
-
-@ifnottex
-@node [6.3], [6.4], [6.2], FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.3:
-
- How to search for a specific message?
-
-
-Answer:
-
- There are several ways for this, too. For a posting from
- a Usenet group the easiest solution is probably to ask
- @uref{http://groups.google.com,groups.google.com},
- if you found the posting there, tell Google to display
- the raw message, look for the message-id, and say
- @samp{M-^ the@@message.id RET} in a
- summary buffer.
- Since Gnus 5.10 there's also a Gnus interface for
- groups.google.com which you can call with
- @samp{G W}) in group buffer.
-
-
- Another idea which works for both mail and news groups
- is to enter the group where the message you are
- searching is and use the standard Emacs search
- @samp{C-s}, it's smart enough to look at
- articles in collapsed threads, too. If you want to
- search bodies, too try @samp{M-s}
- instead. Further on there are the
- gnus-summary-limit-to-foo functions, which can help you,
- too.
-
- Of course you can also use grep to search through your
- local mail, but this is both slow for big archives and
- inconvenient since you are not displaying the found mail
- in Gnus. Here comes nnir into action. Nnir is a front end
- to search engines like swish-e or swish++ and
- others. You index your mail with one of those search
- engines and with the help of nnir you can search trough
- the indexed mail and generate a temporary group with all
- messages which met your search criteria. If this sound
- cool to you get nnir.el from the contrib directory of the Gnus
- distribution or
- @uref{http://quimby.gnus.org/cgi-bin/cvsweb.cgi/~checkout~/gnus/contrib/nnir.el?rev=HEAD&content-type=text/plain}
- Instructions on how to use it are at the top of the file.
-
-@ifnottex
-@node [6.4], [6.5], [6.3], FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.4:
-
- How to get rid of old unwanted mail?
-
-
-Answer:
-
- You can of course just mark the mail you don't need
- anymore by saying @samp{#} with point
- over the mail and then say @samp{B DEL}
- to get rid of them forever. You could also instead of
- actually deleting them, send them to a junk-group by
- saying @samp{B m nnml:trash-bin} which
- you clear from time to time, but both are not the intended
- way in Gnus.
-
-
- In Gnus, we let mail expire like news expires on a news
- server. That means you tell Gnus the message is
- expirable (you tell Gnus "I don't need this mail
- anymore") by saying @samp{E} with point
- over the mail in summary buffer. Now when you leave the
- group, Gnus looks at all messages which you marked as
- expirable before and if they are old enough (default is
- older than a week) they are deleted.
-
-@ifnottex
-@node [6.5], [6.6], [6.4], FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.5:
-
- I want that all read messages are expired (at least in
- some groups). How to do it?
-
-
-Answer:
-
- If you want all read messages to be expired (e.g. in
- mailing lists where there's an online archive), you've
- got two choices: auto-expire and
- total-expire. Auto-expire means, that every article
- which has no marks set and is selected for reading is
- marked as expirable, Gnus hits @samp{E}
- for you every time you read a message. Total-expire
- follows a slightly different approach, here all article
- where the read mark is set are expirable.
-
-
- To activate auto-expire, include auto-expire in the
- Group parameters for the group. (Hit @samp{G
- c} in summary buffer with point over the
- group to change group parameters). For total-expire add
- total-expire to the group-parameters.
-
-
- Which method you choose is merely a matter of taste:
- Auto-expire is faster, but it doesn't play together with
- Adaptive Scoring, so if you want to use this feature,
- you should use total-expire.
-
-
- If you want a message to be excluded from expiration in
- a group where total or auto expire is active, set either
- tick (hit @samp{u}) or dormant mark (hit
- @samp{u}), when you use auto-expire, you
- can also set the read mark (hit
- @samp{d}).
-
-@ifnottex
-@node [6.6], , [6.5], FAQ 6 - Old messages
-@end ifnottex
-@subsubheading Question 6.6:
-
- I don't want expiration to delete my mails but to move them
- to another group.
-
-
-Answer:
-
- Say something like this in ~/.gnus:
-
+then you only have to set either the tick or the dormant
+mark for articles you want to keep, setting the read
+mark will remove them from cache.
+
+@node [6.3]
+@subsubheading Question 6.3
+
+How to search for a specific message?
+
+@subsubheading Answer
+
+There are several ways for this, too. For a posting from
+a Usenet group the easiest solution is probably to ask
+@uref{http://groups.google.com, groups.google.com},
+if you found the posting there, tell Google to display
+the raw message, look for the message-id, and say
+@samp{M-^ the@@message.id RET} in a
+summary buffer.
+Since Gnus 5.10 there's also a Gnus interface for
+groups.google.com which you can call with
+@samp{G W}) in group buffer.
+
+Another idea which works for both mail and news groups
+is to enter the group where the message you are
+searching is and use the standard Emacs search
+@samp{C-s}, it's smart enough to look at
+articles in collapsed threads, too. If you want to
+search bodies, too try @samp{M-s}
+instead. Further on there are the
+gnus-summary-limit-to-foo functions, which can help you,
+too.
+
+Of course you can also use grep to search through your
+local mail, but this is both slow for big archives and
+inconvenient since you are not displaying the found mail
+in Gnus. Here comes nnir into action. Nnir is a front end
+to search engines like swish-e or swish++ and
+others. You index your mail with one of those search
+engines and with the help of nnir you can search trough
+the indexed mail and generate a temporary group with all
+messages which met your search criteria. If this sound
+cool to you get nnir.el from
+@uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/}
+or @uref{ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/}.
+Instructions on how to use it are at the top of the file.
+
+@node [6.4]
+@subsubheading Question 6.4
+
+How to get rid of old unwanted mail?
+
+@subsubheading Answer
+
+You can of course just mark the mail you don't need
+anymore by saying @samp{#} with point
+over the mail and then say @samp{B DEL}
+to get rid of them forever. You could also instead of
+actually deleting them, send them to a junk-group by
+saying @samp{B m nnml:trash-bin} which
+you clear from time to time, but both are not the intended
+way in Gnus.
+
+In Gnus, we let mail expire like news expires on a news
+server. That means you tell Gnus the message is
+expirable (you tell Gnus "I don't need this mail
+anymore") by saying @samp{E} with point
+over the mail in summary buffer. Now when you leave the
+group, Gnus looks at all messages which you marked as
+expirable before and if they are old enough (default is
+older than a week) they are deleted.
+
+@node [6.5]
+@subsubheading Question 6.5
+
+I want that all read messages are expired (at least in
+some groups). How to do it?
+
+@subsubheading Answer
+
+If you want all read messages to be expired (e.g. in
+mailing lists where there's an online archive), you've
+got two choices: auto-expire and
+total-expire. Auto-expire means, that every article
+which has no marks set and is selected for reading is
+marked as expirable, Gnus hits @samp{E}
+for you every time you read a message. Total-expire
+follows a slightly different approach, here all article
+where the read mark is set are expirable.
+
+To activate auto-expire, include auto-expire in the
+Group parameters for the group. (Hit @samp{G
+c} in summary buffer with point over the
+group to change group parameters). For total-expire add
+total-expire to the group-parameters.
+
+Which method you choose is merely a matter of taste:
+Auto-expire is faster, but it doesn't play together with
+Adaptive Scoring, so if you want to use this feature,
+you should use total-expire.
+
+If you want a message to be excluded from expiration in
+a group where total or auto expire is active, set either
+tick (hit @samp{u}) or dormant mark (hit
+@samp{u}), when you use auto-expire, you
+can also set the read mark (hit
+@samp{d}).
+
+@node [6.6]
+@subsubheading Question 6.6
+
+I don't want expiration to delete my mails but to move them
+to another group.
+
+@subsubheading Answer
+
+Say something like this in ~/.gnus.el:
@example
(setq nnmail-expiry-target "nnml:expired")
@end example
-
@noindent
- (If you want to change the value of nnmail-expiry-target
- on a per group basis see the question "How can I disable
- threading in some (e.g. mail-) groups, or set other
- variables specific for some groups?")
-
-@ifnottex
-@node FAQ 7 - Gnus in a dial-up environment, FAQ 8 - Getting help, FAQ 6 - Old messages, Frequently Asked Questions
-@end ifnottex
+(If you want to change the value of nnmail-expiry-target
+on a per group basis see the question "How can I disable
+threading in some (e.g. mail-) groups, or set other
+variables specific for some groups?")
+
+@node FAQ 7 - Gnus in a dial-up environment
@subsection Gnus in a dial-up environment
@menu
-* [7.1]:: I don't have a permanent connection to the net, how can I
- minimize the time I've got to be connected?
-* [7.2]:: So what was this thing about the Agent?
-* [7.3]:: I want to store article bodies on disk, too. How to do it?
-* [7.4]:: How to tell Gnus not to try to send mails / postings while
- I'm offline?
+* [7.1]:: I don't have a permanent connection to the net, how can I
+ minimize the time I've got to be connected?
+* [7.2]:: So what was this thing about the Agent?
+* [7.3]:: I want to store article bodies on disk, too. How to do it?
+* [7.4]:: How to tell Gnus not to try to send mails / postings while
+ I'm offline?
@end menu
-
-@ifnottex
-@node [7.1], [7.2], FAQ 7 - Gnus in a dial-up environment, FAQ 7 - Gnus in a dial-up environment
-@end ifnottex
-@subsubheading Question 7.1:
-
- I don't have a permanent connection to the net, how can
- I minimize the time I've got to be connected?
-
-
-Answer:
-
- You've got basically two options: Either you use the
- Gnus Agent (see below) for this, or you can install
- programs which fetch your news and mail to your local
- disk and Gnus reads the stuff from your local
- machine.
-
-
- If you want to follow the second approach, you need a
- program which fetches news and offers them to Gnus, a
- program which does the same for mail and a program which
- receives the mail you write from Gnus and sends them
- when you're online.
-
-
-Let's talk about Unix systems first: For the news part, the easiest
-solution is a small nntp server like
-@uref{http://www.leafnode.org/,Leafnode} or
-@uref{http://infa.abo.fi/~patrik/sn/,sn}, of course you can also
-install a full featured news server like
-@uref{http://www.isc.org/products/INN/,inn}.
-
-Then you want to fetch your Mail, popular choices are
-@itemize @bullet
-@item
-@uref{http://www.catb.org/~esr/fetchmail/,fetchmail} and
-@item
-@uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/,getmail}.
-@end itemize
-You should tell those to write the mail to your disk and Gnus to read
-it from there. Last but not least the mail sending part: This can be
-done with every MTA like @uref{http://www.sendmail.org/,sendmail},
-@uref{http://www.qmail.org/,postfix}, @uref{http://www.exim.org/,exim}
-or @uref{http://www.qmail.org/,qmail}.
-
-
- On windows boxes I'd vote for
- @uref{http://www.tglsoft.de/,Hamster},
- it's a small freeware, open-source program which fetches
- your mail and news from remote servers and offers them
- to Gnus (or any other mail and/or news reader) via nntp
- respectively POP3 or IMAP. It also includes a smtp
- server for receiving mails from Gnus.
-
-@ifnottex
-@node [7.2], [7.3], [7.1], FAQ 7 - Gnus in a dial-up environment
-@end ifnottex
-@subsubheading Question 7.2:
-
- So what was this thing about the Agent?
-
-
-Answer:
-
- The Gnus agent is part of Gnus, it allows you to fetch
- mail and news and store them on disk for reading them
- later when you're offline. It kind of mimics offline
- newsreaders like e.g. Forte Agent. If you want to use
- the Agent place the following in ~/.gnus if you are
- still using 5.8.8 or 5.9 (it's the default since 5.10):
-
+@node [7.1]
+@subsubheading Question 7.1
+
+I don't have a permanent connection to the net, how can
+I minimize the time I've got to be connected?
+
+@subsubheading Answer
+
+You've got basically two options: Either you use the
+Gnus Agent (see below) for this, or you can install
+programs which fetch your news and mail to your local
+disk and Gnus reads the stuff from your local
+machine.
+
+If you want to follow the second approach, you need a
+program which fetches news and offers them to Gnus, a
+program which does the same for mail and a program which
+receives the mail you write from Gnus and sends them
+when you're online.
+
+Let's talk about Unix systems first: For the news part,
+the easiest solution is a small nntp server like
+@uref{http://www.leafnode.org/, Leafnode} or
+@uref{http://infa.abo.fi/~patrik/sn/, sn},
+of course you can also install a full featured news
+server like
+@uref{http://www.isc.org/products/INN/, inn}.
+Then you want to fetch your Mail, popular choices
+are @uref{http://www.catb.org/~esr/fetchmail/, fetchmail}
+and @uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/, getmail}.
+You should tell those to write the mail to your disk and
+Gnus to read it from there. Last but not least the mail
+sending part: This can be done with every MTA like
+@uref{http://www.sendmail.org/, sendmail},
+@uref{http://www.qmail.org/, postfix},
+@uref{http://www.exim.org/, exim} or
+@uref{http://www.qmail.org/, qmail}.
+
+On windows boxes I'd vote for
+@uref{http://www.tglsoft.de/, Hamster},
+it's a small freeware, open-source program which fetches
+your mail and news from remote servers and offers them
+to Gnus (or any other mail and/or news reader) via nntp
+respectively POP3 or IMAP. It also includes a smtp
+server for receiving mails from Gnus.
+
+@node [7.2]
+@subsubheading Question 7.2
+
+So what was this thing about the Agent?
+
+@subsubheading Answer
+
+The Gnus agent is part of Gnus, it allows you to fetch
+mail and news and store them on disk for reading them
+later when you're offline. It kind of mimics offline
+newsreaders like e.g. Forte Agent. If you want to use
+the Agent place the following in ~/.gnus.el if you are
+still using 5.8.8 or 5.9 (it's the default since 5.10):
@example
(setq gnus-agent t)
@end example
-
+@noindent
- Now you've got to select the servers whose groups can be
- stored locally. To do this, open the server buffer
- (that is press @samp{^} while in the
- group buffer). Now select a server by moving point to
- the line naming that server. Finally, agentize the
- server by typing @samp{J a}. If you
- make a mistake, or change your mind, you can undo this
- action by typing @samp{J r}. When
- you're done, type 'q' to return to the group buffer.
- Now the next time you enter a group on a agentized
- server, the headers will be stored on disk and read from
- there the next time you enter the group.
-
-@ifnottex
-@node [7.3], [7.4], [7.2], FAQ 7 - Gnus in a dial-up environment
-@end ifnottex
-@subsubheading Question 7.3:
+Now you've got to select the servers whose groups can be
+stored locally. To do this, open the server buffer
+(that is press @samp{^} while in the
+group buffer). Now select a server by moving point to
+the line naming that server. Finally, agentize the
+server by typing @samp{J a}. If you
+make a mistake, or change your mind, you can undo this
+action by typing @samp{J r}. When
+you're done, type 'q' to return to the group buffer.
+Now the next time you enter a group on a agentized
+server, the headers will be stored on disk and read from
+there the next time you enter the group.
+
+@node [7.3]
+@subsubheading Question 7.3
+
+I want to store article bodies on disk, too. How to do it?
+
+@subsubheading Answer
+
+You can tell the agent to automatically fetch the bodies
+of articles which fulfill certain predicates, this is
+done in a special buffer which can be reached by
+saying @samp{J c} in group
+buffer. Please refer to the documentation for
+information which predicates are possible and how
+exactly to do it.
+
+Further on you can tell the agent manually which
+articles to store on disk. There are two ways to do
+this: Number one: In the summary buffer, process mark a
+set of articles that shall be stored in the agent by
+saying @samp{#} with point over the
+article and then type @samp{J s}. The
+other possibility is to set, again in the summary
+buffer, downloadable (%) marks for the articles you
+want by typing @samp{@@} with point over
+the article and then typing @samp{J u}.
+What's the difference? Well, process marks are erased as
+soon as you exit the summary buffer while downloadable
+marks are permanent. You can actually set downloadable
+marks in several groups then use fetch session ('J s' in
+the GROUP buffer) to fetch all of those articles. The
+only downside is that fetch session also fetches all of
+the headers for every selected group on an agentized
+server. Depending on the volume of headers, the initial
+fetch session could take hours.
+
+@node [7.4]
+@subsubheading Question 7.4
+
+How to tell Gnus not to try to send mails / postings
+while I'm offline?
+
+@subsubheading Answer
+
+All you've got to do is to tell Gnus when you are online
+(plugged) and when you are offline (unplugged), the rest
+works automatically. You can toggle plugged/unplugged
+state by saying @samp{J j} in group
+buffer. To start Gnus unplugged say @samp{M-x
+gnus-unplugged} instead of
+@samp{M-x gnus}. Note that for this to
+work, the agent must be active.
+
+@node FAQ 8 - Getting help
+@subsection Getting help
- I want to store article bodies on disk, too. How to do it?
-
+@menu
+* [8.1]:: How to find information and help inside Emacs?
+* [8.2]:: I can't find anything in the Gnus manual about X (e.g.
+ attachments, PGP, MIME...), is it not documented?
+* [8.3]:: Which websites should I know?
+* [8.4]:: Which mailing lists and newsgroups are there?
+* [8.5]:: Where to report bugs?
+* [8.6]:: I need real-time help, where to find it?
+@end menu
-Answer:
+@node [8.1]
+@subsubheading Question 8.1
- You can tell the agent to automatically fetch the bodies
- of articles which fulfill certain predicates, this is
- done in a special buffer which can be reached by
- saying @samp{J c} in group
- buffer. Please refer to the documentation for
- information which predicates are possible and how
- exactly to do it.
-
+How to find information and help inside Emacs?
- Further on you can tell the agent manually which
- articles to store on disk. There are two ways to do
- this: Number one: In the summary buffer, process mark a
- set of articles that shall be stored in the agent by
- saying @samp{#} with point over the
- article and then type @samp{J s}. The
- other possibility is to set, again in the summary
- buffer, downloadable (%) marks for the articles you
- want by typing @samp{@@} with point over
- the article and then typing @samp{J u}.
- What's the difference? Well, process marks are erased as
- soon as you exit the summary buffer while downloadable
- marks are permanent. You can actually set downloadable
- marks in several groups then use fetch session ('J s' in
- the GROUP buffer) to fetch all of those articles. The
- only downside is that fetch session also fetches all of
- the headers for every selected group on an agentized
- server. Depending on the volume of headers, the initial
- fetch session could take hours.
-
-@ifnottex
-@node [7.4], , [7.3], FAQ 7 - Gnus in a dial-up environment
-@end ifnottex
-@subsubheading Question 7.4:
+@subsubheading Answer
- How to tell Gnus not to try to send mails / postings
- while I'm offline?
-
+The first stop should be the Gnus manual (Say
+@samp{C-h i d m Gnus RET} to start the
+Gnus manual, then walk through the menus or do a
+full-text search with @samp{s}). Then
+there are the general Emacs help commands starting with
+C-h, type @samp{C-h ? ?} to get a list
+of all available help commands and their meaning. Finally
+@samp{M-x apropos-command} lets you
+search through all available functions and @samp{M-x
+apropos} searches the bound variables.
-Answer:
+@node [8.2]
+@subsubheading Question 8.2
- All you've got to do is to tell Gnus when you are online
- (plugged) and when you are offline (unplugged), the rest
- works automatically. You can toggle plugged/unplugged
- state by saying @samp{J j} in group
- buffer. To start Gnus unplugged say @samp{M-x
- gnus-unplugged} instead of
- @samp{M-x gnus}. Note that for this to
- work, the agent must be active.
-
+I can't find anything in the Gnus manual about X
+(e.g. attachments, PGP, MIME...), is it not documented?
-@ifnottex
-@node FAQ 8 - Getting help, FAQ 9 - Tuning Gnus, FAQ 7 - Gnus in a dial-up environment, Frequently Asked Questions
-@end ifnottex
-@subsection Getting help
+@subsubheading Answer
-@menu
-* [8.1]:: How to find information and help inside Emacs?
-* [8.2]:: I can't find anything in the Gnus manual about X
- (e.g. attachments, PGP, MIME...), is it not documented?
-* [8.3]:: Which websites should I know?
-* [8.4]:: Which mailing lists and newsgroups are there?
-* [8.5]:: Where to report bugs?
-* [8.6]:: I need real-time help, where to find it?
-@end menu
+There's not only the Gnus manual but also the manuals
+for message, emacs-mime, sieve and pgg. Those packages
+are distributed with Gnus and used by Gnus but aren't
+really part of core Gnus, so they are documented in
+different info files, you should have a look in those
+manuals, too.
-@ifnottex
-@node [8.1], [8.2], FAQ 8 - Getting help, FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.1:
+@node [8.3]
+@subsubheading Question 8.3
- How to find information and help inside Emacs?
-
+Which websites should I know?
-Answer:
-
- The first stop should be the Gnus manual (Say
- @samp{C-h i d m Gnus RET} to start the
- Gnus manual, then walk through the menus or do a
- full-text search with @samp{s}). Then
- there are the general Emacs help commands starting with
- C-h, type @samp{C-h ? ?} to get a list
- of all available help commands and their meaning. Finally
- @samp{M-x apropos-command} lets you
- search through all available functions and @samp{M-x
- apropos} searches the bound variables.
-
-@ifnottex
-@node [8.2], [8.3], [8.1], FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.2:
+@subsubheading Answer
- I can't find anything in the Gnus manual about X
- (e.g. attachments, PGP, MIME...), is it not documented?
-
+The two most important ones are the
+@uref{http://www.gnus.org, official Gnus website}.
+and it's sister site
+@uref{http://my.gnus.org, my.gnus.org (MGO)},
+hosting an archive of lisp snippets, howtos, a (not
+really finished) tutorial and this FAQ.
-Answer:
+Tell me about other sites which are interesting.
- There's not only the Gnus manual but also the manuals
- for message, emacs-mime, sieve and pgg. Those packages
- are distributed with Gnus and used by Gnus but aren't
- really part of core Gnus, so they are documented in
- different info files, you should have a look in those
- manuals, too.
-
-@ifnottex
-@node [8.3], [8.4], [8.2], FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.3:
+@node [8.4]
+@subsubheading Question 8.4
- Which websites should I know?
-
+Which mailing lists and newsgroups are there?
-Answer:
+@subsubheading Answer
- The two most important ones are the
- @uref{http://www.gnus.org,official Gnus website}.
- and it's sister site
- @uref{http://my.gnus.org,my.gnus.org (MGO)},
- hosting an archive of lisp snippets, howtos, a (not
- really finished) tutorial and this FAQ.
-
+There's the newsgroup gnu.emacs.gnus (pull it from
+e.g. news.gnus.org) which deals with general questions and the
+ding mailing list (ding@@gnus.org) dealing with development of
+Gnus. You can read the ding list via NNTP, too under the name
+gmane.emacs.gnus.general from news.gmane.org.
- Tell me about other sites which are interesting.
-
-@ifnottex
-@node [8.4], [8.5], [8.3], FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.4:
+If you want to stay in the big8,
+news.software.newssreaders is also read by some Gnus
+users (but chances for qualified help are much better in
+the above groups) and if you speak German, there's
+de.comm.software.gnus.
- Which mailing lists and newsgroups are there?
-
+@node [8.5]
+@subsubheading Question 8.5
-Answer:
+Where to report bugs?
- There's the newsgroup gnu.emacs.gnus (pull it from
- e.g. news.gnus.org) which deals with general questions
- and the ding mailing list (ding@@gnus.org) dealing with
- development of Gnus. You can read the ding list via
- NNTP, too under the name gnus.ding from news.gnus.org.
-
+@subsubheading Answer
- If you want to stay in the big8,
- news.software.newssreaders is also read by some Gnus
- users (but chances for qualified help are much better in
- the above groups) and if you speak German, there's
- de.comm.software.gnus.
-
-@ifnottex
-@node [8.5], [8.6], [8.4], FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.5:
+Say @samp{M-x gnus-bug}, this will start
+a message to the
+@email{bugs@@gnus.org, gnus bug mailing list}
+including information about your environment which make
+it easier to help you.
- Where to report bugs?
-
+@node [8.6]
+@subsubheading Question 8.6
-Answer:
+I need real-time help, where to find it?
-Say @samp{M-x gnus-bug}, this will start a message to the
-@email{bugs@@gnus.org,gnus bug mailing list} including information
-about your environment which make it easier to help you.
-
-@ifnottex
-@node [8.6], , [8.5], FAQ 8 - Getting help
-@end ifnottex
-@subsubheading Question 8.6:
+@subsubheading Answer
- I need real-time help, where to find it?
-
-
-Answer:
-
- Point your IRC client to irc.my.gnus.org channel
- #mygnus. Don't be afraid if people there speak German,
- they are willing and capable of switching to
- English when people from outside Germany enter.
-
+Point your IRC client to irc.my.gnus.org channel
+#mygnus. Don't be afraid if people there speak German,
+they are willing and capable of switching to
+English when people from outside Germany enter.
-@ifnottex
-@node FAQ 9 - Tuning Gnus, FAQ - Glossary, FAQ 8 - Getting help, Frequently Asked Questions
-@end ifnottex
+@node FAQ 9 - Tuning Gnus
@subsection Tuning Gnus
@menu
-* [9.1]:: Starting Gnus is really slow, how to speed it up?
-* [9.2]:: How to speed up the process of entering a group?
-* [9.3]:: Sending mail becomes slower and slower, what's up?
+* [9.1]:: Starting Gnus is really slow, how to speed it up?
+* [9.2]:: How to speed up the process of entering a group?
+* [9.3]:: Sending mail becomes slower and slower, what's up?
@end menu
-@ifnottex
-@node [9.1], [9.2], FAQ 9 - Tuning Gnus, FAQ 9 - Tuning Gnus
-@end ifnottex
-@subsubheading Question 9.1:
+@node [9.1]
+@subsubheading Question 9.1
- Starting Gnus is really slow, how to speed it up?
-
+Starting Gnus is really slow, how to speed it up?
-Answer:
-
- The reason for this could be the way Gnus reads it's
- active file, see the node "The Active File" in the Gnus
- manual for things you might try to speed the process up.
- An other idea would be to byte compile your ~/.gnus (say
- @samp{M-x byte-compile-file RET ~/.gnus
- RET} to do it). Finally, if you have require
- statements in your .gnus, you could replace them with
- eval-after-load, which loads the stuff not at startup
- time, but when it's needed. Say you've got this in your
- ~/.gnus:
-
+@subsubheading Answer
+
+The reason for this could be the way Gnus reads it's
+active file, see the node "The Active File" in the Gnus
+manual for things you might try to speed the process up.
+An other idea would be to byte compile your ~/.gnus.el (say
+@samp{M-x byte-compile-file RET ~/.gnus.el
+RET} to do it). Finally, if you have require
+statements in your .gnus, you could replace them with
+eval-after-load, which loads the stuff not at startup
+time, but when it's needed. Say you've got this in your
+~/.gnus.el:
@example
(require 'message)
(add-to-list 'message-syntax-checks '(sender . disabled))
@end example
-
@noindent
- then as soon as you start Gnus, message.el is loaded. If
- you replace it with
-
+
+then as soon as you start Gnus, message.el is loaded. If
+you replace it with
@example
(eval-after-load "message"
'(add-to-list 'message-syntax-checks '(sender . disabled)))
@end example
-
@noindent
- it's loaded when it's needed.
-
-@ifnottex
-@node [9.2], [9.3], [9.1], FAQ 9 - Tuning Gnus
-@end ifnottex
-@subsubheading Question 9.2:
- How to speed up the process of entering a group?
-
+it's loaded when it's needed.
-Answer:
+@node [9.2]
+@subsubheading Question 9.2
- A speed killer is setting the variable
- gnus-fetch-old-headers to anything different from nil,
- so don't do this if speed is an issue. To speed up
- building of summary say
-
+How to speed up the process of entering a group?
+
+@subsubheading Answer
+
+A speed killer is setting the variable
+gnus-fetch-old-headers to anything different from nil,
+so don't do this if speed is an issue. To speed up
+building of summary say
@example
(gnus-compile)
@end example
-
@noindent
- at the bottom of your ~/.gnus, this will make gnus
- byte-compile things like
- gnus-summary-line-format.
- then you could increase the value of gc-cons-threshold
- by saying something like
-
+
+at the bottom of your ~/.gnus.el, this will make gnus
+byte-compile things like
+gnus-summary-line-format.
+then you could increase the value of gc-cons-threshold
+by saying something like
@example
(setq gc-cons-threshold 3500000)
@end example
-
@noindent
- in ~/.emacs. If you don't care about width of CJK
- characters or use Gnus 5.10 or younger together with a
- recent GNU Emacs, you should say
-
+
+in ~/.emacs. If you don't care about width of CJK
+characters or use Gnus 5.10 or younger together with a
+recent GNU Emacs, you should say
@example
-(setq gnus-use-correct-string-widths nil)
+(setq gnus-use-correct-string-widths nil)
@end example
-
-
@noindent
- in ~/.gnus (thanks to Jesper harder for the last
- two suggestions). Finally if you are still using 5.8.8
- or 5.9 and experience speed problems with summary
- buffer generation, you definitely should update to
- 5.10 since there quite some work on improving it has
- been done.
-@ifnottex
-@node [9.3], , [9.2], FAQ 9 - Tuning Gnus
-@end ifnottex
-@subsubheading Question 9.3:
+in ~/.gnus.el (thanks to Jesper harder for the last
+two suggestions). Finally if you are still using 5.8.8
+or 5.9 and experience speed problems with summary
+buffer generation, you definitely should update to
+5.10 since there quite some work on improving it has
+been done.
- Sending mail becomes slower and slower, what's up?
-
+@node [9.3]
+@subsubheading Question 9.3
-Answer:
+Sending mail becomes slower and slower, what's up?
- The reason could be that you told Gnus to archive the
- messages you wrote by setting
- gnus-message-archive-group. Try to use a nnml group
- instead of an archive group, this should bring you back
- to normal speed.
-
+@subsubheading Answer
-@ifnottex
-@node FAQ - Glossary, , FAQ 9 - Tuning Gnus, Frequently Asked Questions
-@end ifnottex
+The reason could be that you told Gnus to archive the
+messages you wrote by setting
+gnus-message-archive-group. Try to use a nnml group
+instead of an archive group, this should bring you back
+to normal speed.
+
+@node FAQ - Glossary
@subsection Glossary
@table @dfn
-@item ~/.gnus
- When the term ~/.gnus is used it just means your Gnus
- configuration file. You might as well call it ~/.gnus.el or
- specify another name.
-
+@item ~/.gnus.el
+When the term ~/.gnus.el is used it just means your Gnus
+configuration file. You might as well call it ~/.gnus or
+specify another name.
@item Back End
- In Gnus terminology a back end is a virtual server, a layer
- between core Gnus and the real NNTP-, POP3-, IMAP- or
- whatever-server which offers Gnus a standardized interface
- to functions like "get message", "get Headers" etc.
-
+In Gnus terminology a back end is a virtual server, a layer
+between core Gnus and the real NNTP-, POP3-, IMAP- or
+whatever-server which offers Gnus a standardized interface
+to functions like "get message", "get Headers" etc.
@item Emacs
- When the term Emacs is used in this FAQ, it means either GNU
- Emacs or XEmacs.
-
+When the term Emacs is used in this FAQ, it means either GNU
+Emacs or XEmacs.
@item Message
- In this FAQ message means a either a mail or a posting to a
- Usenet Newsgroup or to some other fancy back end, no matter
- of which kind it is.
-
+In this FAQ message means a either a mail or a posting to a
+Usenet Newsgroup or to some other fancy back end, no matter
+of which kind it is.
@item MUA
- MUA is an acronym for Mail User Agent, it's the program you
- use to read and write e-mails.
-
+MUA is an acronym for Mail User Agent, it's the program you
+use to read and write e-mails.
@item NUA
- NUA is an acronym for News User Agent, it's the program you
- use to read and write Usenet news.
-
-@end table
+NUA is an acronym for News User Agent, it's the program you
+use to read and write Usenet news.
-@c @bye
+@end table
@ignore
- arch-tag: 64dc5692-edb4-4848-a965-7aa0181acbb8
+arch-tag: 64dc5692-edb4-4848-a965-7aa0181acbb8
@end ignore
diff --git a/man/message.texi b/man/message.texi
index 5e488b0e7c..8a10ea2445 100644
--- a/man/message.texi
+++ b/man/message.texi
@@ -8,7 +8,7 @@
@copying
This file documents Message, the Emacs message composition mode.
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
@quotation