From: yamaoka Date: Fri, 12 Jan 2001 13:31:56 +0000 (+0000) Subject: T-gnus 6.14.6; synch up with Gnus v5.8.8. X-Git-Tag: t-gnus-6_14_6-00 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08ee2f3ea941c7a0fdd3b67a4c518847435c823c;p=elisp%2Fgnus.git- T-gnus 6.14.6; synch up with Gnus v5.8.8. --- diff --git a/ChangeLog b/ChangeLog index 82f970d..ba5d337 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2001-01-12 Katsumi Yamaoka + + * lisp/gnus-vers.el (T-gnus): Update to 6.14.6. + (gnus-revision-number): Clear to 00. + + * Sync up with Gnus v5.8.8. + 2001-01-11 Katsumi Yamaoka * lisp/gnus-msg.el (gnus-copy-article-buffer): Remove smiley @@ -5,8 +12,6 @@ 2001-01-10 Katsumi Yamaoka - * lisp/gnus-vers.el (gnus-revision-number): Increment to 09. - * lisp/gnus.el: Don't autoload "smiley" for `smiley-toggle-buffer'; don't autoload "gnus-bitmap" or "x-face-mule" when Emacs 21 is running. @@ -14,11 +19,30 @@ * lisp/gnus-art.el (TopLevel): Autoload "gnus-bitmap" for `smiley-toggle-buffer' when compiling. (gnus-treatment-function-alist): Use `gnus-smiley-display' for - `gnus-treat-display-smileys' by default when XEmacs is running. + `gnus-treat-display-smileys' by default when XEmacs or Emacs 21 is + running. (gnus-treat-display-smileys): Check for `smiley-mule' instead of `gnus-bitmap'. (gnus-article-x-face-command): Don't check for xbm for x-face-e21. +2000-12-22 Katsumi Yamaoka + + * lisp/gnus-msg.el (gnus-debug): Use `sit-for' in the inside of + `save-excursion'. + (gnus-bug): Pop up the sending buffer first. + + * lisp/dgnushack.el + (byte-compile-file-form-custom-declare-variable): Use `defvar' + instead of `custom-declare-variable' to make the variable + uncustomizable if the arguments has the keyword `:version'. + +2000-12-21 Katsumi Yamaoka + + * lisp/dgnushack.el (TopLevel): Byte-optimize + `custom-declare-variable', `custom-declare-group, and + `custom-declare-face' to omit unsupported keywords when Mule is + running. + 2000-12-06 Katsumi Yamaoka * lisp/nnshimbun.el (TopLevel): Defalias `coding-system-category' @@ -34,11 +58,22 @@ (nnshimbun-meta-content-type-charset-regexp): New constant. (nnshimbun-meta-charset-content-type-regexp): Ditto. +2000-12-03 Tetsuo Tsukamoto + + * texi/gnus-ja.texi: Fixes for the last modification. + +2000-12-02 Tetsuo Tsukamoto + + * texi/gnus-ja.texi: Translate description about + `nnmail-split-fancy-with-parent'. + + * texi/message-ja.texi: Use two lines for direntry. + 2000-12-01 Katsumi Yamaoka - * lisp/lpath.el: Attempt to add another FLIM path to `load-path' if - the module `mel' does not found. This procedure may be needed when - recent FLIM 1.14 is used under old Emacsen. + * lisp/dgnushack.el: Attempt to add another FLIM path to `load-path' + if the module `mel' does not found. This procedure may be needed + when recent FLIM 1.14 is used under old Emacsen. 2000-11-27 Katsumi Yamaoka @@ -47,17 +82,6 @@ * lisp/message.el (message-send-mail-with-smtp): Leave the error handling in `smtp-send-buffer's own care. -2000-11-26 Tatsuya Ichikawa - - * lisp/message.el: Undo changes. - -2000-11-26 Tatsuya Ichikawa - - * lisp/message.el (message-send-mail-with-smtp): Change error - handling 'cause delete-process will return nil on most platform, - then message-send-mail-with-smtp seems fail to send message even - sending message success. - 2000-11-22 Katsumi Yamaoka * lisp/gnus-vers.el (gnus-revision-number): Increment to 07. @@ -71,20 +95,132 @@ `x-face-decode-message-header' when Emacs 21 is running and x-face-e21 is installed. -2000-11-21 KANEMATSU Daiji - - * lisp/gnus-art.el (gnus-treat-display-xface): Default to `head' - when Emacs 21 is running and uncompface command is available. - 2000-11-21 Katsumi Yamaoka * lisp/message.el (message-send-mail-with-smtp): Use `smtp-send-buffer' if it exists instead of `smtp-via-smtp'. + * lisp/dgnushack.el (describe-key-briefly): New compiler macro for + old Emacsen. + +2000-11-17 Akihiro Arisawa + + * lisp/nnheader.el (nnheader-header-value): Save point. + 2000-11-16 Katsuhiro Hermit Endo * texi/gnus-ja.texi (Drafts): Fix typo. +2000-11-14 Katsumi Yamaoka + + * lisp/gnus-art.el (article-verify-x-pgp-sig): Autoload "mm-uu". + (gnus-treat-x-pgp-sig): Default to nil. + +2000-11-10 Katsumi Yamaoka + + * Mule23@1934.en, Mule23@1934.ja, sample.lpath.el: Upgrade. + + * configure: Regenerate. + * aclocal.m4 (AC_PATH_PACKAGEDIR): No need to quote a string for + `AC_MSG_RESULT'. + (AC_CHECK_W3): Ignore cache; no need to quote a string for + `AC_MSG_RESULT'. + (AC_CHECK_EMACS_FLAVOR): Ignore cache. + (AC_CHECK_EMACS): Ignore cache. + (AC_DEFINE_GNUS_PRODUCT_NAME): Cache. + +2000-11-09 Katsumi Yamaoka + + * configure: Regenerate. + + * aclocal.m4 (AC_CHECK_W3): Substitute `W3' with empty string + instead of "no" if it is not acceptable. + + * lisp/dgnushack.el: Load dgnuspath.el and ~/.lpath.el just before + path-util is loaded. + (dgnushack-compile): Show `load-path'. + (dgnushack-w3-dir): Ignore the env var W3DIR if it is empty. + + * lisp/lpath.el: Move out `load-path' modification for APEL, FLIM + and SEMI to dgnushack.el. + * lisp/dgnushack.el: Move here. + + * lisp/lpath.el (md5): Don't bind. + (url-insert-file-contents): Fbind for FSF Emacsen. + +2000-11-08 Katsumi Yamaoka + + * texi/Makefile.in (install-ja-info): Specify `EMACS' and + `infodir'. + (install-info): Ditto. + (install-ja): Ditto. + + * lisp/lpath.el (md5): Fbind using `maybe-fbind'. + + * lisp/dgnushack.el (dgnushack-compose-package): Remove function. + (dgnushack-install-package-info-ja): Remove function. + (dgnushack-install-package-info): Remove function. + (dgnushack-install-package-lick): Remove function. + (dgnushack-install-package-pkginfo): Remove function. + (dgnushack-install-package-info-files): Remove function. + (dgnushack-install-package-manifest): New function. + (dgnushack-remove-extra-files-in-package): New function. + (dgnushack-gnus-product-name): Remove function. + (dgnushack-examine-package-dir): Remove function. + (dgnushack-exporting-files): Rename from `dgnushack-exported-files'. + (dgnushack-unexporting-files): Rename from + `dgnushack-unexported-files'; attempt to fix `load-path' for W3 and + retry to load `w3-forms' if it is failed. + (dgnushack-w3-dir): New variable. + + * lisp/Makefile.in (remove-extra-files-in-package): New target. + (install-package-manifest): New target. + (install-package-info-ja): Remove target. + (install-package-info): Remove target. + (install-package-lick): Remove target. + (install-lisp): New target detached from `install'. + (install): Call `clever' and `install-lisp'. + (EXPORTING_FILES, GNUS_PRODUCT_NAME): New variables. + + * configure: Regenerate. + + * aclocal.m4 (AC_PATH_PACKAGEDIR): Examine `PACKAGEDIR' if it is + not specified under XEmacs. + (AC_EXAMINE_PACKAGEDIR): New function. + (AC_PATH_LISPDIR): Don't say annotations about install-package if + FSFmacs is used. + (AC_DEFINE_GNUS_PRODUCT_NAME): Add substitution for + `GNUS_PRODUCT_NAME'. + + * Makefile.in (remove-extra-files-in-package): New target. + (install-package-manifest): New target. + (install-package-info-ja): Examine `PACKAGEDIR' if it is not + specified; call install-ja-info in texi/Makefile. + (install-package-info): Examine `PACKAGEDIR' if it is not + specified; call install-info in texi/Makefile. + (install-package-lisp): Rename from `install-package-lick'; examine + `PACKAGEDIR' if it is not specified; call `install-lisp' in + lisp/Makefile. + (install-package-ja): Call `xlick', `compose-package', + `remove-extra-files-in-package', `install-package-lisp', + `install-package-info', `install-package-info-ja' and + `install-package-manifest'. + (install-package): Call `xlick', `compose-package', + `remove-extra-files-in-package', `install-package-lisp', + `install-package-info' and `install-package-manifest'. + (install-info-ja, install-info): Specify `infodir'. + (EXAMINE_PACKAGEDIR, GNUS_PRODUCT_NAME, infodir): New variables. + +2000-11-07 Tetsuo Tsukamoto + + * texi/gnus-ja.texi: Do not use characters other than ascii ones + for direntries. + * texi/message-ja.texi: Ditto. + +2000-11-06 Katsumi Yamaoka + + * lisp/Makefile.in (install): Don't check for the file names. + 2000-11-04 Katsuhiro Hermit Endo * lisp/gnus-topic.el (gnus-group-topic-map): Define "T" prefix @@ -95,11 +231,69 @@ * lisp/gnus-topic.el (gnus-topic-rename): Use current topic as initial value for read-string. +2000-11-06 Katsumi Yamaoka + + * lisp/Makefile.in (install): Use the lisp function + `dgnushack-exported-files'. + + * lisp/nnmail.el (nnmail-pathname-coding-system): Default to + `binary'. + * lisp/nnheader.el (nnheader-pathname-coding-system): Ditto. + + * lisp/message.el (message-get-reply-headers): Remove useless + `concat'. + + * lisp/md5.el: Restore the file. + + * lisp/dgnushack.el (dgnushack-compile): Refer to the constant + `dgnushack-exported-files'. + (dgnushack-exported-files): New function. + (dgnushack-exported-files): New constant. + (dgnushack-unexported-files): Add some files. + (dgnushack-tool-files): Remove, merge it into + `dgnushack-unexported-files'. + + * lisp/base64.el: New file -- base64 encoding functions using MEL. + 2000-11-05 Tetsuo Tsukamoto * lisp/smiley.el (smiley-deformed-regexp-alist): Modify regexp for the winking face. +2000-11-02 Katsumi Yamaoka + + * lisp/dgnushack.el (dgnushack-make-manifest): Fix info directory. + +2000-11-02 Katsumi Yamaoka + + * Makefile.in (install-package-ja): Compile and install lisp files + first. + (install-package): Ditto. + (compose-package, install-package-info-ja, install-package-info, + install-package-lick): New sub targets. + + * lisp/Makefile.in (install-package-info-ja, install-package-info, + install-package-lick): New targets. + (compose-package): Rename from `package'. + (install-package): Remove. + + * lisp/dgnushack.el (dgnushack-install-package-info-ja, + dgnushack-install-package-info, dgnushack-install-package-lick, + dgnushack-install-package-pkginfo, + dgnushack-install-package-info-files, dgnushack-make-manifest, + dgnushack-gnus-product-name, dgnushack-examine-package-dir, + dgnushack-make-autoloads): New functions. + (dgnushack-install-package): Remove. + (dgnushack-compose-package): Rename from `dgnushack-make-package'. + (dgnushack-info-file-regexp-ja, dgnushack-info-file-regexp-en): + Split from `dgnushack-info-file-regexp'. + (dgnushack-texi-file-regexp): Remove. + +2000-11-01 Katsumi Yamaoka + + * lisp/dgnushack.el (dgnushack-texi-format): Remove @ignore'd areas + before processing. + 2000-11-01 Katsumi Yamaoka * lisp/gnus-vers.el (gnus-revision-number): Increment to 06. @@ -111,10 +305,36 @@ 2000-10-31 Katsumi Yamaoka + * lisp/dgnushack.el: Bind `:key-type' and `:value-type' for old + Emacsen. + +2000-10-31 TAKAHASHI Kaoru + + * lisp/ptexinfmt.el (texinfo-format-direntry): Fixed broken + direntry generate probrem. + (Advised by Tetsuo Tsukamoto ) + +2000-10-31 Katsumi Yamaoka + * lisp/gnus-sum.el (gnus-summary-insert-line): Work with quoted double-quote characters. (gnus-summary-prepare-threads): Ditto. +2000-10-30 TAKAHASHI Kaoru + + * lisp/ptexinfmt.el (ptexinfmt-disable-broken-notice-flag): Renamed + from `ptexinfmt-disable-broken-notice'. + +2000-10-27 TAKAHASHI Kaoru + + * lisp/ptexinfmt.el (texinfo-format-printindex): Mule for Windows + detection fixed. + +2000-10-26 Katsumi Yamaoka + + * lisp/gnus.el (gnus-group-startup-message): Rewrite for Emacs 21. + * lisp/lpath.el: Fbind `propertize'. + 2000-10-22 Katsuhiro Hermit Endo * texi/gnus-ja.texi (Changing Servers): Fix typo. @@ -124,6 +344,23 @@ * lisp/nnshimbun.el (nnshimbun-netbsd-get-headers): Fix regular expression to extract xover urls. +2000-10-12 Jesper Harder + + * make.bat: Makes it possible to generate the Info files on + windows again. + +2000-10-11 Katsumi Yamaoka + + * Makefile.in (info-ja, xinfo-ja): No need to use `MAKEINFO=no'. + (install-info-ja, install-info, install-lisp, install-ja): New + targets (possibly for FSF Emacsen). + + * texi/Makefile.in (install-ja-info, install-info, install-ja, + %-ja.info, %-ja): New targets. + + * texi/message-ja.texi (direntry): Replace "message" with + "message-ja". + 2000-10-08 TSUCHIYA Masatoshi * lisp/nnshimbun.el (nnshimbun-type-definition): Fix regular @@ -139,6 +376,9 @@ `gnus-point-at-eol'. * lisp/gnus.el (gnus-group-startup-message): Ditto. + * lisp/gnus-ems.el (gnus-ems-redefine): Revive annulling of + `gnus-summary-set-display-table'. + 2000-10-04 Akihiro Arisawa * lisp/gnus-sum.el (gnus-build-sparse-threads): Use @@ -158,14 +398,22 @@ * lisp/gnus-art.el (gnus-article-add-button): Quote `:button-keymap' for Mule 2.3 but it won't work. - * lisp/dgnushack.el: (dgnushack-compile): Don't compile - dgnushack.el nor lpath.el. - 2000-09-29 Katsumi Yamaoka * lisp/message.el (message-ignored-supersedes-headers): Synch with Gnus. +2000-09-27 TAKAHASHI Kaoru + + * list/ptexinfmt.el (texinfo-multitable-widths): Fix + broken-facility probrem when use multitable unsupported + texinfmt.el. + +2000-09-26 TAKAHASHI Kaoru + + * lisp/ptexinfmt.el (texinfo-format-printindex): Use (featurep + 'meadow) instead of `texinfmt-version'. + 2000-09-25 Katsumi Yamaoka * lisp/gnus-vers.el (gnus-revision-number): Increment to 05. @@ -174,6 +422,12 @@ README: Replace "" with "". +2000-09-22 TAKAHASHI Kaoru + + * lisp/ptexinfmt.el (texinfo-format-printindex): Add + broken-facility check, for Mule for Windows. + (texinfo-format-printindex): New function. + 2000-09-19 Katsumi Yamaoka * lisp/gnus-msg.el (gnus-copy-article-buffer): Encode bitmap @@ -191,10 +445,18 @@ 2000-09-14 Katsumi Yamaoka + * lisp/dgnushack.el (dgnushack-compile): Don't compile gnus-ml.el + when FSFmacs is running. + + * lisp/gnus-ml.el: Bind some undeclared variables. + * lisp/gnus-art.el (gnus-article-add-button): Add widget button. (gnus-article-display-mime-message): Don't set `mime-button-mother-dispatcher'. + * lisp/message.el: Require `reporter' for the function + `define-mail-user-agent' when Mule 2.3 is running. + 2000-09-07 Tadashi Watanabe * lisp/smiley.el (smiley-buffer, smiley-create-glyph): Work with @@ -229,6 +491,17 @@ * lisp/pop3.el (pop3-ssl-program-name): New variable. +2000-08-31 TAKAHASHI Kaoru + + * lisp/ptexinfmt.el (texinfo-multitable-widths, + texinfo-multitable-item): Apply char-width probrem fix patch + (by KOIE Hidetaka ). + Newsgroups: fj.editor.emacs + Message-ID: <5dzom3nxq7.fsf@skipjack.koie.org> + + * lisp/ptexinfmt.el (ptexinfmt-disable-broken-notice): New + variable. + 2000-08-29 TSUCHIYA Masatoshi * lisp/nnshimbun.el (nnshimbun-zdnet-get-headers): Follow changes @@ -254,6 +527,12 @@ * lisp/gnus-group.el (gnus-group-rename-group): Inhibit renaming of zombie or killed groups. +2000-08-21 Katsumi Yamaoka + + * lisp/nnheader.el (nnheader-replace-chars-in-string): Use + `static-if'. + * lisp/message.el (message-replace-chars-in-string): Ditto. + 2000-08-19 TSUCHIYA Masatoshi * lisp/nnshimbun.el (nnshimbun-type-definition): Follow changes of @@ -266,6 +545,22 @@ * lisp/nnshimbun.el: Add `mew' and `xemacs' support. +2000-08-17 Katsumi Yamaoka + + * lisp/dgnushack.el (dgnushack-texi-format): Require `ptexinfmt' + instead of `texinfmt'. + (dgnushack-install-package): Don't install ptexinfmt.el. + (dgnushack-make-package): Don't include ptexinfmt.el in MANIFEST. + (dgnushack-compile): Don't compile dgnushack.el nor ptexinfmt.el. + (dgnushack-unexported-files, dgnushack-tool-files): New constants. + + * lisp/Makefile.in (install-package): No need to remove + dgnushack.elc. + (install): Don't install ptexinfmt.el; no need to remove + dgnushack.elc. + + * lisp/ptexinfmt.el: New file imported from Wanderlust. + 2000-08-09 Katsumi Yamaoka * lisp/nntp.el (nntp-open-telnet): Wait for the telnet prompt @@ -292,6 +587,8 @@ AC_CHECK_EMACS, AC_DEFINE_GNUS_PRODUCT_NAME): New macros. (AC_PATH_LISPDIR): Set `lispdir' to ".../site-lisp/t-gnus" by default. + (AC_CHECK_EMACS_FLAVOR): Rename from `AC_XEMACS_P'; check for + `MULE' as well. (AM_PATH_LISPDIR): Remove. * acinclude.m4: Remove. @@ -299,6 +596,10 @@ * lisp/dgnushack.el: Don't add "/usr/share/emacs/site-lisp" to `load-path'. + * lisp/gnus-ems.el (gnus-ems-redefine): Defalias + `gnus-summary-set-display-table' to `(lambda ())' instead of + `ignore' (don't synch. with Gnus). + 2000-07-21 Daiki Ueno * lisp/gnus-bbdb.el (gnus-bbdb/update-record): Use @@ -335,6 +636,28 @@ * lisp/imap.el (imap-open): Set process buffer as unibyte. +2000-07-13 10:09:52 Katsumi Yamaoka + + * acinclude.m4 (AC_CHECK_W3): Fix typo. + +2000-07-13 Katsumi Yamaoka + + * configure: Regenerate with autoconf v2.14.1. + * aclocal.m4: Regenerate with aclocal v1.4. + + * configure.in: Don't call `AC_CHECK_PROG' for `EMACS'. + + * acinclude.m4: Merge ShengHuo's changes. + (AC_CHECK_W3): Use `quote' instead of '. + (AC_XEMACS_P): Don't modify the value of `XEMACS'. + (AC_EMACS_LISP): Safely quote the elisp form. + +2000-07-12 15:47:06 ShengHuo ZHU + + * aclocal.m4: Stolen macros from w3. + * configure.in: Use them. + * configure: Generate it. + 2000-07-03 Katsumi Yamaoka * lisp/gnus-vers.el (T-gnus): Update to 6.14.5. diff --git a/Makefile.in b/Makefile.in index 0dbddc4..7bbcdfd 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,5 +1,6 @@ prefix = @prefix@ datadir = @datadir@ +infodir = @infodir@ lispdir = @lispdir@ srcdir = @srcdir@ @@ -7,6 +8,24 @@ srcdir = @srcdir@ EMACS = @EMACS@ XEMACS = @XEMACS@ PACKAGEDIR = @PACKAGEDIR@ +GNUS_PRODUCT_NAME = @GNUS_PRODUCT_NAME@ + +# It will be used to look for the XEmacs package path if this file is +# mis-configured (e.g. configured for FSFmacs). +EXAMINE_PACKAGEDIR = $(XEMACS) -batch -q -no-site-file -eval \ + "(let (package-dir) \ + (if (boundp (quote early-packages)) \ + (let ((dirs (delq nil (append (if early-package-load-path \ + early-packages) \ + (if late-package-load-path \ + late-packages) \ + (if last-package-load-path \ + last-packages))))) \ + (while (and dirs (not package-dir)) \ + (if (file-directory-p (car dirs)) \ + (setq package-dir (car dirs) \ + dirs (cdr dirs)))))) \ + (princ (or package-dir \"\")))" 2>/dev/null all: lick info @@ -15,24 +34,94 @@ all-ja: lick info info-ja lick: cd lisp && $(MAKE) EMACS="$(EMACS)" lispdir="$(lispdir)" all -install: - cd lisp && $(MAKE) EMACS="$(EMACS)" lispdir="$(lispdir)" install - cd texi && $(MAKE) EMACS="$(EMACS)" install - -# Rule for XEmacs package. -package: xlick xinfo - cd lisp && $(MAKE) EMACS="$(XEMACS)" package +install: install-lisp install-info -install-package: xinfo - cd lisp && $(MAKE) EMACS="$(XEMACS)" PACKAGEDIR="$(PACKAGEDIR)" \ - install-package +install-ja: install install-info-ja -package-ja: xlick xinfo xinfo-ja - cd lisp && $(MAKE) EMACS="$(XEMACS)" package +install-lisp: + cd lisp && $(MAKE) EMACS="$(EMACS)" lispdir="$(lispdir)" install -install-package-ja: xinfo xinfo-ja - cd lisp && $(MAKE) EMACS="$(XEMACS)" PACKAGEDIR="$(PACKAGEDIR)" \ - install-package +install-info: + cd texi && $(MAKE) EMACS="$(EMACS)" infodir="$(infodir)" install + +install-info-ja: + cd texi && $(MAKE) EMACS="$(EMACS)" infodir="$(infodir)" install-ja + +## Rule for XEmacs package. +install-package: xlick compose-package remove-extra-files-in-package \ + install-package-lisp \ + install-package-info install-package-manifest + +install-package-ja: xlick compose-package remove-extra-files-in-package \ + install-package-lisp \ + install-package-info install-package-info-ja \ + install-package-manifest + +package: xlick xinfo compose-package + +package-ja: xlick xinfo xinfo-ja compose-package + +# Sub-rule for XEmacs package. +install-package-lisp: + @if test x$(PACKAGEDIR) = x; then \ + package_dir=`$(EXAMINE_PACKAGEDIR)`; \ + else \ + package_dir="$(PACKAGEDIR)"; \ + fi; \ + echo "cd lisp && $(MAKE)" \ + "lispdir=$$package_dir""/lisp/$(GNUS_PRODUCT_NAME)" \ + "install-lisp"; \ + cd lisp && $(MAKE) \ + lispdir="$$package_dir""/lisp/$(GNUS_PRODUCT_NAME)" \ + install-lisp + +install-package-info: + @if test x$(PACKAGEDIR) = x; then \ + package_dir=`$(EXAMINE_PACKAGEDIR)`; \ + else \ + package_dir="$(PACKAGEDIR)"; \ + fi; \ + echo "cd texi && $(MAKE) EMACS=$(XEMACS)" \ + "infodir=$$package_dir""/info install-info"; \ + cd texi && $(MAKE) EMACS="$(XEMACS)" \ + infodir="$$package_dir""/info" install-info + +install-package-info-ja: + @if test x$(PACKAGEDIR) = x; then \ + package_dir=`$(EXAMINE_PACKAGEDIR)`; \ + else \ + package_dir="$(PACKAGEDIR)"; \ + fi; \ + echo "cd texi && $(MAKE) EMACS=$(XEMACS)" \ + "infodir=$$package_dir""/info install-ja-info"; \ + cd texi && $(MAKE) EMACS="$(XEMACS)" \ + infodir="$$package_dir""/info" install-ja-info + +install-package-manifest: + @if test x$(PACKAGEDIR) = x; then \ + package_dir=`$(EXAMINE_PACKAGEDIR)`; \ + else \ + package_dir="$(PACKAGEDIR)"; \ + fi; \ + echo "cd lisp && $(MAKE) EMACS=$(XEMACS) PACKAGEDIR=$$package_dir" \ + "install-package-manifest"; \ + cd lisp && $(MAKE) EMACS="$(XEMACS)" PACKAGEDIR=$$package_dir \ + install-package-manifest + +remove-extra-files-in-package: + @if test x$(PACKAGEDIR) = x; then \ + package_dir=`$(EXAMINE_PACKAGEDIR)`; \ + else \ + package_dir="$(PACKAGEDIR)"; \ + fi; \ + echo "cd lisp && $(MAKE) EMACS=$(XEMACS) PACKAGEDIR=$$package_dir" \ + "remove-extra-files-in-package"; \ + cd lisp && $(MAKE) EMACS="$(XEMACS)" PACKAGEDIR=$$package_dir \ + remove-extra-files-in-package + +compose-package: + cd lisp && $(MAKE) EMACS="$(XEMACS)" compose-package +## xlick: cd lisp && $(MAKE) EMACS="$(XEMACS)" lispdir="$(lispdir)" all @@ -41,7 +130,7 @@ xinfo: cd texi && $(MAKE) EMACS="$(XEMACS)" all-info xinfo-ja: - cd texi && $(MAKE) EMACS="$(XEMACS)" MAKEINFO=no ja-info + cd texi && $(MAKE) EMACS="$(XEMACS)" ja-info # Rule for Lars and nobody else. some: @@ -53,30 +142,27 @@ info: cd texi && $(MAKE) EMACS="$(EMACS)" all info-ja: - cd texi && $(MAKE) EMACS=$(EMACS) MAKEINFO=no ja + cd texi && $(MAKE) EMACS=$(EMACS) ja clean: rm -f */*.orig */*.rej *.orig *.rej rm -f MANIFEST.* for i in lisp texi; do (cd $$i; $(MAKE) clean); done -xsome: - cd lisp && $(MAKE) EMACS="$(XEMACS)" some - elclean: cd lisp && rm -f *.elc auto-autoloads.el custom-load.el x: $(MAKE) EMACS="$(XEMACS)" +xsome: + $(MAKE) EMACS="$(XEMACS)" some + distclean: clean rm -rf *~ for i in lisp texi; do (cd $$i; $(MAKE) distclean); done rm -f config.log config.status config.cache Makefile -osome: - $(MAKE) EMACS="$(XEMACS)" some - config.status: $(srcdir)/configure $(SHELL) ./config.status --recheck $(srcdir)/configure: $(srcdir)/configure.in diff --git a/Mule23@1934.en b/Mule23@1934.en index 3f764d3..7a45479 100644 --- a/Mule23@1934.en +++ b/Mule23@1934.en @@ -1,30 +1,38 @@ How to build T-gnus with Mule 2.3 based on Emacs 19.34. -FIX loaddefs.el -=============== +FIXING loaddefs.el +================== Unfortunately, some variables for `message' are predefined in lisp/ loaddefs.el which is dumped in Mule executable file. It is uninvited, moreover, it has a bad influence. So you should remove these definitions from lisp/loaddefs.el and rebuild Mule. However, if you -don't want to rebuild Mule, put the following lines in the beginning -of .emacs file instead. - -(mapcar - (lambda (symbol) - (makunbound (intern (format "message-%s" symbol)))) - '(citation-line-function - cite-function courtesy-message default-headers default-mail-headers - default-news-headers deletable-headers fcc-handler-function - followup-to-function from-style generate-headers-first generate-new-buffers - ignored-bounced-headers ignored-cited-headers ignored-mail-headers - ignored-news-headers ignored-resent-headers ignored-supersedes-headers - included-forward-headers indent-citation-function interactive - kill-buffer-on-exit post-method reply-to-function required-mail-headers - required-news-headers send-mail-function send-news-function - signature signature-before-forwarded-message signature-file - signature-separator syntax-checks use-followup-to user-organization-file - wide-reply-to-function yank-prefix)) +don't want to rebuild Mule, you may put the following lines in the +beginning of .emacs file instead of rebuilding Mule. + +(let ((symbols '(citation-line-function + cite-function courtesy-message default-headers + default-mail-headers default-news-headers + deletable-headers fcc-handler-function + followup-to-function from-style + generate-headers-first generate-new-buffers + ignored-bounced-headers ignored-cited-headers + ignored-mail-headers ignored-news-headers + ignored-resent-headers ignored-supersedes-headers + included-forward-headers indent-citation-function + interactive kill-buffer-on-exit post-method + reply-to-function required-mail-headers + required-news-headers send-mail-function + send-news-function signature + signature-before-forwarded-message signature-file + signature-separator syntax-checks use-followup-to + user-organization-file wide-reply-to-function + yank-prefix)) + symbol) + (while symbols + (setq symbol (car symbols) + symbols (cdr symbol)) + (makunbound (intern (format "message-%s" symbol))))) INSTALL CUSTOM, APEL, FLIM, SEMI/WEMI @@ -57,20 +65,83 @@ ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz INSTALL T-gnus ============== -There are two ways of making T-gnus with Mule 2.3 based on Emacs 19.34. +There are three ways of making T-gnus with Mule 2.3 based on Emacs 19.34. - 1. Use the configure option `--with-addpath=' to specify the colon - separated directory names where EMU, APEL or CUSTOM packages have - already installed. For example: +1. If you have installed EMU, APEL, FLIM and SEMI or WEMI packages + under the standard load-path, for instance: - % configure --with-emacs=mule\ - --with-addpath=~/elisp/emu:~/elisp/apel:~elisp/custom - % make install + EMU: /usr/local/share/mule/19.34/site-lisp/ + APEL: /usr/local/share/mule/site-lisp/apel/ + FLIM: /usr/local/share/mule/site-lisp/flim/ + SEMI: /usr/local/share/mule/site-lisp/semi/ - 2. Copy `sample.lpath.el' to `~/.lpath.el' and modify it suitably for - your environment. Then type as following: + What is more, if you have been replaced old CUSTOM with new CUSTOM + or if you have installed new CUSTOM directly under the standard + load-path as such as /usr/local/share/mule/19.34/site-lisp/, you + may have nothing to be done; type the following commands right now. - % configure - % make EMACS=mule + % ./configure --with-emacs=mule + % make install - In this case, you shuold install manually. + However, if you have installed new CUSTOM in the subdirectory under + the standard load-path, use the configure option `--with-addpath=' + as follows: + + % ./configure --with-emacs=mule\ + --with-addpath=/usr/local/share/mule/site-lisp/custom/ + % make install + + or you can use the file subdirs.el under the parent directory of + the subdirectory of CUSTOM to add it into load-path which contain + the following contents: + + (normal-top-level-add-to-load-path + '("custom/" "and the other subdirectories.../")) + + and then just type: + + % ./configure --with-emacs=mule + % make install + +2. If you have installed EMU, APEL, FLIM and SEMI or WEMI packages in + the non-standard load-path, use the configure option + `--with-addpath=' with the colon separated directory names where + EMU, APEL or CUSTOM packages are installed. For example: + + % ./configure --with-emacs=mule\ + --with-addpath=~/elisp/emu/:~/elisp/apel/:~/elisp/custom/ + % make install + + In this case, you have no need to add paths of FLIM, SEMI or WEMI + if they are installed under the directory which is same as the + parent directory of APEL. + +3. This is another way to install T-gnus when you have installed EMU, + APEL, FLIM and SEMI or WEMI packages in the non-standard load-path. + Copy the file `sample.lpath.el' which is included in the + distribution to `~/.lpath.el' and modify it suitably for your + environment. And then type the following command. + + % ./configure --with-emacs=mule + % make install + + +USING Emacs W3 +============== + +;; By the way, it is the point, does anyone know where do we find +;; Emacs W3 package fitting with Mule 2.3 based on Emacs 19.34? :-p + +Some modules of T-gnus (e.g. nnshimbun) requires Emacs W3. You can +build T-gnus to be abel to use them, if you already have Emacs W3 +installed. For that, you should specify the path where Emacs W3 is +installed using the configure option `--with-w3=' or editing the file +`~/.lpath.el'. Here is an example for using the configure option: + + % ./configure --with-emacs=mule\ + --with-w3=/usr/local/share/mule/site-lisp/w3/ + % make install + +Don't mind if configure says "W3... not found". It is currently +malfunction when the configure option `--with-w3=' is not used even if +the path of Emacs W3 is specified in the file `~/.lpath.el'. diff --git a/Mule23@1934.ja b/Mule23@1934.ja index d759e64..5f79393 100644 --- a/Mule23@1934.ja +++ b/Mule23@1934.ja @@ -1,30 +1,39 @@ Emacs 19.34 $B$r%Y!<%9$K$7$?(B Mule 2.3 $B$G(B T-gnus $B$r:n$kJ}K!!#(B -FIX loaddefs.el -=============== +FIXING loaddefs.el +================== $B;DG0$J$3$H$K$$$/$D$+$N(B `message' $B$G;H$&JQ?t$,(B lisp/loaddefs.el $B$GDj5A(B $B$5$l$F$$$F(B Mule $B$N7W(B $B$J$*@$OC$@$7!"$7$+$b0-1F6A$,$"$j$^$9!#$=$3$G$"$J$?$O$=$l$i$NDj5A$r(B lisp/loaddefs.el $B$+$i:o=|$7$F!"(BMule $B$r:n$jD>$5$J$1$l$P$J$j$^$;$s!#(B $B$7$+$7!"$b$7$"$J$?$,(B Mule $B$r:n$jD>$9$3$H$rK>$^$J$$$J$i$P!"(B.emacs $B%U%!(B -$B%$%k$N@hF,$K0J2<$N3F9T$r=q$-9~$`$3$H$GBeMQ$9$k$3$H$,$G$-$^$9!#(B - -(mapcar - (lambda (symbol) - (makunbound (intern (format "message-%s" symbol)))) - '(citation-line-function - cite-function courtesy-message default-headers default-mail-headers - default-news-headers deletable-headers fcc-handler-function - followup-to-function from-style generate-headers-first generate-new-buffers - ignored-bounced-headers ignored-cited-headers ignored-mail-headers - ignored-news-headers ignored-resent-headers ignored-supersedes-headers - included-forward-headers indent-citation-function interactive - kill-buffer-on-exit post-method reply-to-function required-mail-headers - required-news-headers send-mail-function send-news-function - signature signature-before-forwarded-message signature-file - signature-separator syntax-checks use-followup-to user-organization-file - wide-reply-to-function yank-prefix)) +$B%$%k$N@hF,$K0J2<$N3F9T$r=q$-9~$`$3$H$G!"(BMule $B$r:n$jD>$9Be$o$j$K$9$k$3(B +$B$H$,$G$-$^$9!#(B + +(let ((symbols '(citation-line-function + cite-function courtesy-message default-headers + default-mail-headers default-news-headers + deletable-headers fcc-handler-function + followup-to-function from-style + generate-headers-first generate-new-buffers + ignored-bounced-headers ignored-cited-headers + ignored-mail-headers ignored-news-headers + ignored-resent-headers ignored-supersedes-headers + included-forward-headers indent-citation-function + interactive kill-buffer-on-exit post-method + reply-to-function required-mail-headers + required-news-headers send-mail-function + send-news-function signature + signature-before-forwarded-message signature-file + signature-separator syntax-checks use-followup-to + user-organization-file wide-reply-to-function + yank-prefix)) + symbol) + (while symbols + (setq symbol (car symbols) + symbols (cdr symbol)) + (makunbound (intern (format "message-%s" symbol))))) INSTALL CUSTOM, APEL, FLIM, SEMI @@ -57,20 +66,87 @@ ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz INSTALL T-gnus ============== -Mule 2.3 based on Emacs 19.34 $B$G(B gnus $B$r:n$k$K$OFs$D$NJ}K!$,$"$j$^$9!#(B +Emacs 19.34 $B$r%Y!<%9$K$7$?(B Mule 2.3 $B$G(B gnus $B$r:n$k$K$O;0$D$NJ}K!$,$"$j(B +$B$^$9!#(B - 1. configure $B%*%W%7%g%s$N(B `--with-addpath=' $B$r;H$C$F(B EMU, APEL $B$*$h$S(B - CUSTOM $B$N3F%Q%C%1!<%8$,%$%s%9%H!<%k$5$l$F$$$k>l=j$r;XDj$7$F2<$5$$!#(B - $BNc$($P(B +1. $B$b$7$"$J$?$,(B EMU, APEL, FLIM $B$*$h$S(B SEMI $B$^$?$O(B WEMI $B$N3F%Q%C%1!<(B + $B%8$rI8=`$N(B load-path $B$N2<$K%$%s%9%H!<%k$7$F$$$k$H$7$^$9!#Nc$($P$3$&!#(B - % configure --with-emacs=mule\ - --with-addpath=~/elisp/emu:~/elisp/apel:~elisp/custom - % make + EMU: /usr/local/share/mule/19.34/site-lisp/ + APEL: /usr/local/share/mule/site-lisp/apel/ + FLIM: /usr/local/share/mule/site-lisp/flim/ + SEMI: /usr/local/share/mule/site-lisp/semi/ - 2. `sample.lpath.el' $B$r(B `~/.lpath.el' $B$K%3%T!<$7$F!"$"$J$?$N4D6-$K(B - $B9g$&$h$&$K=q$-49$($F2<$5$$!#$=$7$F2<$K%$%s%9%H!<%k$7$F$$$k$J$i$P!"$"$J$?$O2?$b$9(B + $B$kI,MW$,$"$j$^$;$s!#:#$9$0$K0J2<$N%3%^%s%I$r%?%$%W$7$F2<$5$$!#(B - % configure - % make EMACS=mule + % ./configure --with-emacs=mule + % make install - $B$3$N>l9g(B install $B$O$H(B configure $B%*%W%7%g%s$N(B `--with-addpath=' $B$r;H$C$F2<$5$$!#(B + $BNc$($P(B + + % ./configure --with-emacs=mule\ + --with-addpath=~/elisp/emu/:~/elisp/apel/:~/elisp/custom/ + % make + + $B$3$N>l9g!"$b$7(B FLIM, SEMI $B$^$?$O(B WEMI $B$,(B APEL $B$N?F%G%#%l%/%H%j$HF1(B + $B$8%G%#%l%/%H%j$N2<$K%$%s%9%H!<%k$5$l$F$$$k$J$i$P!"$=$l$i$N(B path $B$r(B + $BDI2C$9$kI,MW$O$"$j$^$;$s!#(B + +3. $B$3$l$O!"(BEMU, APEL, FLIM $B$*$h$S(B SEMI $B$^$?$O(B WEMI $B$N3F%Q%C%1!<%8$rI8(B + $B=`$G$O$J$$(B load-path $B$K%$%s%9%H!<%k$7$F$$$k>l9g$N!"JL$NJ}K!$G$9!#(B + $BG[I[$K4^$^$l$F$$$k%U%!%$%k(B `sample.lpath.el' $B$r(B `~/.lpath.el' $B$K%3(B + $B%T!<$7$F!"$"$J$?$N4D6-$K9g$&$h$&$K=q$-49$($F2<$5$$!#$=$7$Fo$KF/$-(B +$B$^$;$s$N$G!#(B diff --git a/README b/README index b5cefcd..81e1586 100644 --- a/README +++ b/README @@ -21,9 +21,18 @@ in your .emacs file, or wherever you keep such things. To enable reading the Gnus manual, you could say something like: + (require 'info) (setq Info-default-directory-list (cons "~/gnus-5.6.53/texi" Info-default-directory-list)) +or + + (require 'info) + (setq Info-directory-list + (cons "~/gnus-5.6.53/texi" Info-directory-list)) + +depending on which version of Emacs or XEmacs you're using. + Note that Gnus and GNUS can't coexist in a single Emacs. They both use the same function and variable names. If you have been running GNUS in your Emacs, you should probably exit that Emacs and start a new one diff --git a/README.T-gnus b/README.T-gnus index d7a41fb..b32db68 100644 --- a/README.T-gnus +++ b/README.T-gnus @@ -33,6 +33,6 @@ NEWS: * T-gnus 6.14 - this is based on Pterodactyl Gnus. - The latest T-gnus is T-gnus 6.14.5 (Based on Gnus 5.8.7). It requires + The latest T-gnus is T-gnus 6.14.6 (Based on Gnus 5.8.8). It requires SEMI/WEMI (1.13.5 or later), FLIM (1.13.1 or later), and APEL (10.0 or later). diff --git a/README.branch b/README.branch index 43eecc5..4b7700d 100644 --- a/README.branch +++ b/README.branch @@ -1,7 +1,7 @@ README.branch --- description of branches and tags. (DRAFT) ======================================================================== -Semi-gnus revision tree (1999-08-04) +Semi-gnus revision tree (2000-12-21) vendor personal main trunk public branch branches branches @@ -31,12 +31,22 @@ qGnus 0.?? ------> Semi-gnus 6.0.0 : : : : : : t-gnus-6_10-last- t-gnus-6_13-last- : : | feedback | - : akr <-- 6.2.3 +<------------- + - : shuhei-k <-- 6.3.1 : | -Gnus 5.6.11 ------> 6.3.3 t-gnus-6_14 - : 6.4.0 (for SEMI 1.5) (for FLIM 1.13, - : (6.4.?)------> for SEMI 1.5 develop) - : | \ : + : : +<--------------+ + : : | | + : ------------<---------------+ t-gnus-6_14 + : Oort Gnus / : | (for FLIM 1.13, + : | | : : develop) + : V V : | + : t-gnus-6_15-quimby<---<-----(t-gnus-6_14-quimby)<-----+ + : | : | + : : : : + : : + : akr <-- 6.2.3 + : shuhei-k <-- 6.3.1 +Gnus 5.6.11 ------> 6.3.3 + : 6.4.0 (for SEMI 1.5) + : (6.4.?)------> for SEMI 1.5 + : | \ : | \ (Synch with original Gnus | ---> for SEMI 1.6 was done many times, but (6.4.?)------> 6.5 (for SEMI 1.7) @@ -123,6 +133,7 @@ Public Branches t-gnus-6_12 T-gnus for SEMI 1.12/1.13, FLIM 1.12 API (stable) t-gnus-6_13 T-gnus for SEMI 1.13, FLIM 1.13 API (develop) t-gnus-6_14 T-gnus for SEMI 1.13, FLIM 1.13 API (develop) + t-gnus-6_15-quimby T-gnus for SEMI 1.13, FLIM 1.13 API (develop) Personal Branches diff --git a/README.branch.ja b/README.branch.ja index 0399a16..3b69df8 100644 --- a/README.branch.ja +++ b/README.branch.ja @@ -1,7 +1,7 @@ README.branch.ja --- branch $B$H(B tag $B$N@bL@(B ($BAp9F(B) ======================================================================== -Semi-gnus revision tree (1999-08-04) +Semi-gnus revision tree (2000-12-21) vendor personal main trunk public branch branches branches @@ -31,12 +31,22 @@ qGnus 0.?? ------> Semi-gnus 6.0.0 : : : : : : t-gnus-6_10-last- t-gnus-6_13-last- : : | feedback | - : akr <-- 6.2.3 +<------------- + - : shuhei-k <-- 6.3.1 : | -Gnus 5.6.11 ------> 6.3.3 t-gnus-6_14 - : 6.4.0 (for SEMI 1.5) (for FLIM 1.13, - : (6.4.?)------> for SEMI 1.5 develop) - : | \ : + : : +<--------------+ + : : | | + : ------------<---------------+ t-gnus-6_14 + : Oort Gnus / : | (for FLIM 1.13, + : | | : : develop) + : V V : | + : t-gnus-6_15-quimby<---<-----(t-gnus-6_14-quimby)<-----+ + : | : | + : : : : + : : + : akr <-- 6.2.3 + : shuhei-k <-- 6.3.1 +Gnus 5.6.11 ------> 6.3.3 + : 6.4.0 (for SEMI 1.5) + : (6.4.?)------> for SEMI 1.5 + : | \ : | \ ($B85$N(B Gnus $B$H$N(B Sync $B$O2?EY(B | ---> for SEMI 1.6 $B$b$J$5$l$F$$$^$9$,!"$3$3$K(B (6.4.?)------> 6.5 (for SEMI 1.7) @@ -123,6 +133,7 @@ Public Branches t-gnus-6_12 T-gnus for SEMI 1.12/1.13, FLIM 1.12 API (stable) t-gnus-6_13 T-gnus for SEMI 1.13, FLIM 1.13 API (develop) t-gnus-6_14 T-gnus for SEMI 1.13, FLIM 1.13 API (develop) + t-gnus-6_15-quimby T-gnus for SEMI 1.13, FLIM 1.13 API (develop) Personal Branches diff --git a/README.semi b/README.semi index 1c46eb6..c4376f1 100644 --- a/README.semi +++ b/README.semi @@ -45,7 +45,8 @@ How to get? (via CVS) Major tags are following: - t-gnus-6_12 Assigned to the latest stable version of T-gnus. + t-gnus-6_15-quimby Assigned to the latest version of T-gnus for + developing and synchronizing with Oort Gnus. t-gnus-6_14 Assigned to the latest development version of T-gnus. diff --git a/README.semi.ja b/README.semi.ja index 96f7204..791bebe 100644 --- a/README.semi.ja +++ b/README.semi.ja @@ -47,7 +47,8 @@ ftp://ftp.m17n.org/pub/mule/semi/semi-1.13-for-flim-1.13/ $B& AC_FD_CC 2>&1 + eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& AC_FD_CC 2>&1 + retval=`cat ${OUTPUT}` + echo "=> ${retval}" >& AC_FD_CC 2>&1 + rm -f ${OUTPUT} + EMACS_cv_SYS_$1=$retval +]) +$1=${EMACS_cv_SYS_$1} +if test -z "$3"; then + AC_MSG_RESULT($$1) +fi +]) + +AC_DEFUN(AC_CHECK_EMACS_FLAVOR, + [AC_MSG_CHECKING([what a flavor does $EMACS have]) + + dnl Ignore cache. + unset EMACS_cv_SYS_flavor; + + AC_EMACS_LISP(flavor, + (cond ((featurep (quote xemacs)) \"XEmacs\")\ + ((boundp (quote MULE)) \"MULE\")\ + (t \"FSF Emacs\")), + "noecho") + case $EMACS_cv_SYS_flavor in + XEmacs) + EMACS_FLAVOR=xemacs;; + MULE) + EMACS_FLAVOR=mule;; + *) + EMACS_FLAVOR=emacs;; + esac + AC_MSG_RESULT($EMACS_cv_SYS_flavor)]) + +AC_DEFUN(AC_PATH_LISPDIR, [ + AC_CHECK_EMACS_FLAVOR + if test "$prefix" = "NONE"; then + AC_MSG_CHECKING([prefix for your Emacs]) + AC_EMACS_LISP(prefix,(expand-file-name \"..\" invocation-directory),"noecho") + prefix=${EMACS_cv_SYS_prefix} + AC_MSG_RESULT($prefix) + fi AC_ARG_WITH(lispdir, - [ --with-lispdir=DIR Where to install lisp files + [ --with-lispdir=DIR Where to install lisp files (for XEmacs package, use --with-packagedir instead)], - lispdir=$withval, - [emacsdir=$datadir/emacs - test x$prefix = xNONE && prefix=$ac_default_prefix - case `echo x$EMACS | sed -e 's/x//' -e 's/^.*\///'` in - emacs|emacs-*) - if test -d $prefix/share/emacs; then - emacsdir=$prefix/share/emacs - elif test -d $prefix/lib/emacs; then - emacsdir=$prefix/lib/emacs - fi;; - xemacs|xemacs-*) - if test -d $prefix/lib/xemacs; then - emacsdir=$prefix/lib/xemacs - elif test -d $prefix/share/xemacs; then - emacsdir=$prefix/share/xemacs - fi;; - mule|mule-*) - if test -d $prefix/share/mule; then - emacsdir=$prefix/share/mule - elif test -d $prefix/lib/mule; then - emacsdir=$prefix/lib/mule - elif test -d $prefix/share/emacs; then - emacsdir=$prefix/share/emacs - elif test -d $prefix/lib/emacs; then - emacsdir=$prefix/lib/emacs - fi;; - esac - lispdir=$emacsdir/site-lisp/$GNUS_PRODUCT_NAME]) - AC_MSG_RESULT([$lispdir + lispdir=${withval}) + AC_MSG_CHECKING([where lisp files should go]) + if test -z "$lispdir"; then + dnl Set default value + theprefix=$prefix + if test "x$theprefix" = "xNONE"; then + theprefix=$ac_default_prefix + fi + lispdir="\$(datadir)/${EMACS_FLAVOR}/site-lisp/${GNUS_PRODUCT_NAME}" + for thedir in share lib; do + potential= + if test -d ${theprefix}/${thedir}/${EMACS_FLAVOR}/site-lisp; then + lispdir="\$(prefix)/${thedir}/${EMACS_FLAVOR}/site-lisp/${GNUS_PRODUCT_NAME}" + break + fi + done + fi + if test ${EMACS_FLAVOR} = xemacs; then + AC_MSG_RESULT([$lispdir (it will be ignored when \"make install-package[[-ja]]\" is done)]) - AC_SUBST(lispdir)]) + else + AC_MSG_RESULT([$lispdir]) + fi + AC_SUBST(lispdir) +]) + +dnl +dnl Check whether a function exists in a library +dnl All '_' characters in the first argument are converted to '-' +dnl +AC_DEFUN(AC_EMACS_CHECK_LIB, [ +if test -z "$3"; then + AC_MSG_CHECKING(for $2 in $1) +fi +library=`echo $1 | tr _ -` +AC_EMACS_LISP($1,(progn (fmakunbound (quote $2)) (condition-case nil (progn (require (quote $library)) (fboundp (quote $2))) (error (prog1 nil (message \"$library not found\"))))),"noecho") +if test "${EMACS_cv_SYS_$1}" = "nil"; then + EMACS_cv_SYS_$1=no +fi +if test "${EMACS_cv_SYS_$1}" = "t"; then + EMACS_cv_SYS_$1=yes +fi +HAVE_$1=${EMACS_cv_SYS_$1} +AC_SUBST(HAVE_$1) +if test -z "$3"; then + AC_MSG_RESULT($HAVE_$1) +fi +]) + +dnl +dnl Perform sanity checking and try to locate the W3 package +dnl +AC_DEFUN(AC_CHECK_W3, [ +AC_MSG_CHECKING(for acceptable W3 version) + +dnl Ignore cache. +unset EMACS_cv_ACCEPTABLE_W3; +unset EMACS_cv_SYS_w3_dir; +unset EMACS_cv_SYS_w3_forms; + +AC_CACHE_VAL(EMACS_cv_ACCEPTABLE_W3,[ +AC_EMACS_CHECK_LIB(w3_forms, w3-form-encode-xwfu,"noecho") +if test "${HAVE_w3_forms}" = "yes"; then + EMACS_cv_ACCEPTABLE_W3=yes +else + EMACS_cv_ACCEPTABLE_W3= +fi + +if test "x${EMACS_cv_ACCEPTABLE_W3}" = "xyes"; then + AC_EMACS_LISP(w3_dir,(file-name-directory (locate-library \"w3-forms\")),"noecho") + EMACS_cv_ACCEPTABLE_W3=$EMACS_cv_SYS_w3_dir +fi +]) + AC_ARG_WITH(w3,[ --with-w3=DIR Specify where to find the w3 package], [ EMACS_cv_ACCEPTABLE_W3=`( cd $withval && pwd || echo "$withval" ) 2> /dev/null` ]) + W3=${EMACS_cv_ACCEPTABLE_W3} + AC_SUBST(W3) + if test "x${EMACS_cv_ACCEPTABLE_W3}" = "x"; then + AC_MSG_RESULT(not found) + else + AC_MSG_RESULT(${W3}) + fi +]) + +AC_DEFUN(AC_EXAMINE_PACKAGEDIR, + [dnl Examine PACKAGEDIR. + AC_EMACS_LISP(PACKAGEDIR, + (let (package-dir)\ + (if (boundp (quote early-packages))\ + (let ((dirs (delq nil (append (if early-package-load-path\ + early-packages)\ + (if late-package-load-path\ + late-packages)\ + (if last-package-load-path\ + last-packages)))))\ + (while (and dirs (not package-dir))\ + (if (file-directory-p (car dirs))\ + (setq package-dir (car dirs)\ + dirs (cdr dirs))))))\ + (or package-dir \"\")), + "noecho")]) AC_DEFUN(AC_PATH_PACKAGEDIR, [dnl Check for PACKAGEDIR. - AC_ARG_WITH(packagedir, - [ --with-packagedir=DIR package DIR for XEmacs], - [if test x$withval != xyes -a x$withval != x; then - AC_MSG_CHECKING([where the package should go]) - PACKAGEDIR=$withval + if test ${EMACS_FLAVOR} = xemacs; then + AC_MSG_CHECKING([where the XEmacs package is]) + AC_ARG_WITH(packagedir, + [ --with-packagedir=DIR package DIR for XEmacs], + [if test x$withval != xyes -a x$withval != x; then + PACKAGEDIR=$withval + else + AC_EXAMINE_PACKAGEDIR + fi], + AC_EXAMINE_PACKAGEDIR) + if test x$PACKAGEDIR = x; then + AC_MSG_RESULT(not found) + else AC_MSG_RESULT($PACKAGEDIR) - fi], - PACKAGEDIR=) + fi + else + PACKAGEDIR= + fi AC_SUBST(PACKAGEDIR)]) AC_DEFUN(AC_ADD_LOAD_PATH, diff --git a/configure b/configure index 5d7aaab..6cc8412 100755 --- a/configure +++ b/configure @@ -19,6 +19,8 @@ ac_help="$ac_help --with-lispdir=DIR Where to install lisp files (for XEmacs package, use --with-packagedir instead)" ac_help="$ac_help + --with-w3=DIR Specify where to find the w3 package" +ac_help="$ac_help --with-packagedir=DIR package DIR for XEmacs" ac_help="$ac_help --with-addpath=PATH search Emacs-Lisp libraries with PATH @@ -533,9 +535,18 @@ else fi - GNUS_PRODUCT_NAME=t-gnus +echo $ac_n "defining gnus product name... $ac_c" + if eval "test \"\${EMACS_cv_GNUS_PRODUCT_NAME+set}\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + EMACS_cv_GNUS_PRODUCT_NAME=t-gnus +fi + + GNUS_PRODUCT_NAME=${EMACS_cv_GNUS_PRODUCT_NAME} + echo "$ac_t""${GNUS_PRODUCT_NAME}" 1>&6 + echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:539: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:550: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -592,7 +603,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:596: checking for a BSD compatible install" >&5 +echo "configure:607: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"\${ac_cv_path_install+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -651,7 +662,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Extract the first word of "makeinfo", so it can be a program name with args. set dummy makeinfo; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:655: checking for $ac_word" >&5 +echo "configure:666: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_MAKEINFO+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -681,6 +692,8 @@ fi test x$EMACS = xt && EMACS= + unset ac_cv_prog_EMACS; unset ac_cv_prog_XEMACS; + # Check whether --with-emacs or --without-emacs was given. if test "${with_emacs+set}" = set; then withval="$with_emacs" @@ -690,7 +703,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:694: checking for $ac_word" >&5 +echo "configure:707: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_EMACS+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -724,7 +737,7 @@ test -n "$EMACS" || EMACS="emacs" # Extract the first word of "$withval", so it can be a program name with args. set dummy $withval; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:728: checking for $ac_word" >&5 +echo "configure:741: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_EMACS+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -761,7 +774,7 @@ if test "${with_xemacs+set}" = set; then # Extract the first word of "xemacs", so it can be a program name with args. set dummy xemacs; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:765: checking for $ac_word" >&5 +echo "configure:778: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_XEMACS+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -792,7 +805,7 @@ fi # Extract the first word of "$withval", so it can be a program name with args. set dummy $withval; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:796: checking for $ac_word" >&5 +echo "configure:809: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_XEMACS+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -829,7 +842,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:833: checking for $ac_word" >&5 +echo "configure:846: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_EMACS+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -863,65 +876,317 @@ fi - echo $ac_n "checking where lisp files should go""... $ac_c" 1>&6 -echo "configure:868: checking where lisp files should go" >&5 + + echo $ac_n "checking what a flavor does $EMACS have""... $ac_c" 1>&6 +echo "configure:882: checking what a flavor does $EMACS have" >&5 + + unset EMACS_cv_SYS_flavor; + + +elisp="(cond ((featurep (quote xemacs)) \"XEmacs\")\ + ((boundp (quote MULE)) \"MULE\")\ + (t \"FSF Emacs\"))" +if test -z ""noecho""; then + echo $ac_n "checking for flavor""... $ac_c" 1>&6 +echo "configure:892: checking for flavor" >&5 +fi +if eval "test \"\${EMACS_cv_SYS_flavor+set}\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + OUTPUT=./conftest-$$ + echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + retval=`cat ${OUTPUT}` + echo "=> ${retval}" >& 5 2>&1 + rm -f ${OUTPUT} + EMACS_cv_SYS_flavor=$retval + +fi + +flavor=${EMACS_cv_SYS_flavor} +if test -z ""noecho""; then + echo "$ac_t""$flavor" 1>&6 +fi + + case $EMACS_cv_SYS_flavor in + XEmacs) + EMACS_FLAVOR=xemacs;; + MULE) + EMACS_FLAVOR=mule;; + *) + EMACS_FLAVOR=emacs;; + esac + echo "$ac_t""$EMACS_cv_SYS_flavor" 1>&6 + if test "$prefix" = "NONE"; then + echo $ac_n "checking prefix for your Emacs""... $ac_c" 1>&6 +echo "configure:924: checking prefix for your Emacs" >&5 + +elisp="(expand-file-name \"..\" invocation-directory)" +if test -z ""noecho""; then + echo $ac_n "checking for prefix""... $ac_c" 1>&6 +echo "configure:929: checking for prefix" >&5 +fi +if eval "test \"\${EMACS_cv_SYS_prefix+set}\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + OUTPUT=./conftest-$$ + echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + retval=`cat ${OUTPUT}` + echo "=> ${retval}" >& 5 2>&1 + rm -f ${OUTPUT} + EMACS_cv_SYS_prefix=$retval + +fi + +prefix=${EMACS_cv_SYS_prefix} +if test -z ""noecho""; then + echo "$ac_t""$prefix" 1>&6 +fi + + prefix=${EMACS_cv_SYS_prefix} + echo "$ac_t""$prefix" 1>&6 + fi # Check whether --with-lispdir or --without-lispdir was given. if test "${with_lispdir+set}" = set; then withval="$with_lispdir" - lispdir=$withval -else - emacsdir=$datadir/emacs - test x$prefix = xNONE && prefix=$ac_default_prefix - case `echo x$EMACS | sed -e 's/x//' -e 's/^.*\///'` in - emacs|emacs-*) - if test -d $prefix/share/emacs; then - emacsdir=$prefix/share/emacs - elif test -d $prefix/lib/emacs; then - emacsdir=$prefix/lib/emacs - fi;; - xemacs|xemacs-*) - if test -d $prefix/lib/xemacs; then - emacsdir=$prefix/lib/xemacs - elif test -d $prefix/share/xemacs; then - emacsdir=$prefix/share/xemacs - fi;; - mule|mule-*) - if test -d $prefix/share/mule; then - emacsdir=$prefix/share/mule - elif test -d $prefix/lib/mule; then - emacsdir=$prefix/lib/mule - elif test -d $prefix/share/emacs; then - emacsdir=$prefix/share/emacs - elif test -d $prefix/lib/emacs; then - emacsdir=$prefix/lib/emacs - fi;; - esac - lispdir=$emacsdir/site-lisp/$GNUS_PRODUCT_NAME + lispdir=${withval} fi - echo "$ac_t""$lispdir + echo $ac_n "checking where lisp files should go""... $ac_c" 1>&6 +echo "configure:960: checking where lisp files should go" >&5 + if test -z "$lispdir"; then + theprefix=$prefix + if test "x$theprefix" = "xNONE"; then + theprefix=$ac_default_prefix + fi + lispdir="\$(datadir)/${EMACS_FLAVOR}/site-lisp/${GNUS_PRODUCT_NAME}" + for thedir in share lib; do + potential= + if test -d ${theprefix}/${thedir}/${EMACS_FLAVOR}/site-lisp; then + lispdir="\$(prefix)/${thedir}/${EMACS_FLAVOR}/site-lisp/${GNUS_PRODUCT_NAME}" + break + fi + done + fi + if test ${EMACS_FLAVOR} = xemacs; then + echo "$ac_t""$lispdir (it will be ignored when \"make install-package[-ja]\" is done)" 1>&6 + else + echo "$ac_t""$lispdir" 1>&6 + fi + + + +echo $ac_n "checking for acceptable W3 version""... $ac_c" 1>&6 +echo "configure:985: checking for acceptable W3 version" >&5 + +unset EMACS_cv_ACCEPTABLE_W3; +unset EMACS_cv_SYS_w3_dir; +unset EMACS_cv_SYS_w3_forms; + +if eval "test \"\${EMACS_cv_ACCEPTABLE_W3+set}\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + +if test -z ""noecho""; then + echo $ac_n "checking for w3-form-encode-xwfu in w3_forms""... $ac_c" 1>&6 +echo "configure:998: checking for w3-form-encode-xwfu in w3_forms" >&5 +fi +library=`echo w3_forms | tr _ -` + +elisp="(progn (fmakunbound (quote w3-form-encode-xwfu)) (condition-case nil (progn (require (quote $library)) (fboundp (quote w3-form-encode-xwfu))) (error (prog1 nil (message \"$library not found\")))))" +if test -z ""noecho""; then + echo $ac_n "checking for w3_forms""... $ac_c" 1>&6 +echo "configure:1005: checking for w3_forms" >&5 +fi +if eval "test \"\${EMACS_cv_SYS_w3_forms+set}\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else - # Check whether --with-packagedir or --without-packagedir was given. + OUTPUT=./conftest-$$ + echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + retval=`cat ${OUTPUT}` + echo "=> ${retval}" >& 5 2>&1 + rm -f ${OUTPUT} + EMACS_cv_SYS_w3_forms=$retval + +fi + +w3_forms=${EMACS_cv_SYS_w3_forms} +if test -z ""noecho""; then + echo "$ac_t""$w3_forms" 1>&6 +fi + +if test "${EMACS_cv_SYS_w3_forms}" = "nil"; then + EMACS_cv_SYS_w3_forms=no +fi +if test "${EMACS_cv_SYS_w3_forms}" = "t"; then + EMACS_cv_SYS_w3_forms=yes +fi +HAVE_w3_forms=${EMACS_cv_SYS_w3_forms} + +if test -z ""noecho""; then + echo "$ac_t""$HAVE_w3_forms" 1>&6 +fi + +if test "${HAVE_w3_forms}" = "yes"; then + EMACS_cv_ACCEPTABLE_W3=yes +else + EMACS_cv_ACCEPTABLE_W3= +fi + +if test "x${EMACS_cv_ACCEPTABLE_W3}" = "xyes"; then + +elisp="(file-name-directory (locate-library \"w3-forms\"))" +if test -z ""noecho""; then + echo $ac_n "checking for w3_dir""... $ac_c" 1>&6 +echo "configure:1049: checking for w3_dir" >&5 +fi +if eval "test \"\${EMACS_cv_SYS_w3_dir+set}\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + OUTPUT=./conftest-$$ + echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + retval=`cat ${OUTPUT}` + echo "=> ${retval}" >& 5 2>&1 + rm -f ${OUTPUT} + EMACS_cv_SYS_w3_dir=$retval + +fi + +w3_dir=${EMACS_cv_SYS_w3_dir} +if test -z ""noecho""; then + echo "$ac_t""$w3_dir" 1>&6 +fi + + EMACS_cv_ACCEPTABLE_W3=$EMACS_cv_SYS_w3_dir +fi + +fi + + # Check whether --with-w3 or --without-w3 was given. +if test "${with_w3+set}" = set; then + withval="$with_w3" + EMACS_cv_ACCEPTABLE_W3=`( cd $withval && pwd || echo "$withval" ) 2> /dev/null` +fi + + W3=${EMACS_cv_ACCEPTABLE_W3} + + if test "x${EMACS_cv_ACCEPTABLE_W3}" = "x"; then + echo "$ac_t""not found" 1>&6 + else + echo "$ac_t""${W3}" 1>&6 + fi + + if test ${EMACS_FLAVOR} = xemacs; then + echo $ac_n "checking where the XEmacs package is""... $ac_c" 1>&6 +echo "configure:1091: checking where the XEmacs package is" >&5 + # Check whether --with-packagedir or --without-packagedir was given. if test "${with_packagedir+set}" = set; then withval="$with_packagedir" if test x$withval != xyes -a x$withval != x; then - echo $ac_n "checking where the package should go""... $ac_c" 1>&6 -echo "configure:911: checking where the package should go" >&5 - PACKAGEDIR=$withval - echo "$ac_t""$PACKAGEDIR" 1>&6 - fi + PACKAGEDIR=$withval + else + +elisp="(let (package-dir)\ + (if (boundp (quote early-packages))\ + (let ((dirs (delq nil (append (if early-package-load-path\ + early-packages)\ + (if late-package-load-path\ + late-packages)\ + (if last-package-load-path\ + last-packages)))))\ + (while (and dirs (not package-dir))\ + (if (file-directory-p (car dirs))\ + (setq package-dir (car dirs)\ + dirs (cdr dirs))))))\ + (or package-dir \"\"))" +if test -z ""noecho""; then + echo $ac_n "checking for PACKAGEDIR""... $ac_c" 1>&6 +echo "configure:1114: checking for PACKAGEDIR" >&5 +fi +if eval "test \"\${EMACS_cv_SYS_PACKAGEDIR+set}\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - PACKAGEDIR= + + OUTPUT=./conftest-$$ + echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + retval=`cat ${OUTPUT}` + echo "=> ${retval}" >& 5 2>&1 + rm -f ${OUTPUT} + EMACS_cv_SYS_PACKAGEDIR=$retval + +fi + +PACKAGEDIR=${EMACS_cv_SYS_PACKAGEDIR} +if test -z ""noecho""; then + echo "$ac_t""$PACKAGEDIR" 1>&6 fi + fi +else + +elisp="(let (package-dir)\ + (if (boundp (quote early-packages))\ + (let ((dirs (delq nil (append (if early-package-load-path\ + early-packages)\ + (if late-package-load-path\ + late-packages)\ + (if last-package-load-path\ + last-packages)))))\ + (while (and dirs (not package-dir))\ + (if (file-directory-p (car dirs))\ + (setq package-dir (car dirs)\ + dirs (cdr dirs))))))\ + (or package-dir \"\"))" +if test -z ""noecho""; then + echo $ac_n "checking for PACKAGEDIR""... $ac_c" 1>&6 +echo "configure:1153: checking for PACKAGEDIR" >&5 +fi +if eval "test \"\${EMACS_cv_SYS_PACKAGEDIR+set}\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + OUTPUT=./conftest-$$ + echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 + retval=`cat ${OUTPUT}` + echo "=> ${retval}" >& 5 2>&1 + rm -f ${OUTPUT} + EMACS_cv_SYS_PACKAGEDIR=$retval + +fi + +PACKAGEDIR=${EMACS_cv_SYS_PACKAGEDIR} +if test -z ""noecho""; then + echo "$ac_t""$PACKAGEDIR" 1>&6 +fi + +fi + + if test x$PACKAGEDIR = x; then + echo "$ac_t""not found" 1>&6 + else + echo "$ac_t""$PACKAGEDIR" 1>&6 + fi + else + PACKAGEDIR= + fi # Check whether --with-addpath or --without-addpath was given. if test "${with_addpath+set}" = set; then withval="$with_addpath" if test x$withval != xyes -a x$withval != x; then echo $ac_n "checking where to find the additional elisp libraries""... $ac_c" 1>&6 -echo "configure:925: checking where to find the additional elisp libraries" >&5 +echo "configure:1190: checking where to find the additional elisp libraries" >&5 ADDITIONAL_LOAD_PATH=$withval echo "$ac_t""$ADDITIONAL_LOAD_PATH" 1>&6 fi @@ -1075,6 +1340,7 @@ s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g +s%@GNUS_PRODUCT_NAME@%$GNUS_PRODUCT_NAME%g s%@SET_MAKE@%$SET_MAKE%g s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g @@ -1083,6 +1349,8 @@ s%@MAKEINFO@%$MAKEINFO%g s%@EMACS@%$EMACS%g s%@XEMACS@%$XEMACS%g s%@lispdir@%$lispdir%g +s%@HAVE_w3_forms@%$HAVE_w3_forms%g +s%@W3@%$W3%g s%@PACKAGEDIR@%$PACKAGEDIR%g s%@ADDITIONAL_LOAD_PATH@%$ADDITIONAL_LOAD_PATH%g diff --git a/configure.in b/configure.in index 80829f0..e648a4e 100644 --- a/configure.in +++ b/configure.in @@ -5,6 +5,7 @@ AC_PROG_INSTALL AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, no) AC_CHECK_EMACS AC_PATH_LISPDIR +AC_CHECK_W3 AC_PATH_PACKAGEDIR AC_ADD_LOAD_PATH AC_OUTPUT(Makefile lisp/Makefile lisp/dgnuspath.el texi/Makefile) diff --git a/contrib/mml-smime.el b/contrib/mml-smime.el new file mode 100644 index 0000000..a216fe8 --- /dev/null +++ b/contrib/mml-smime.el @@ -0,0 +1,80 @@ +;;; mml-smime.el --- S/MIME support for MML +;; Copyright (c) 2000 Free Software Foundation, Inc. + +;; Author: Simon Josefsson +;; Keywords: Gnus, MIME, SMIME, MML + +;; This file is a part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 2, or (at your +;; option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; This support creation of S/MIME parts in MML. + +;; Usage: +;; (mml-smime-setup) +;; +;; Insert an attribute, postprocess=smime-sign (or smime-encrypt), into +;; the mml tag to be signed (or encrypted). +;; +;; It is based on rfc2015.el by Shenghuo Zhu. + +;;; Code: + +(require 'smime) + +(defun mml-smime-sign (cont) + ;; FIXME: You have to input the sender. + (when (null smime-keys) + (error "Please use M-x customize RET smime RET to configure SMIME")) + (smime-sign-buffer) + (goto-char (point-min)) + (when (looking-at "^MIME-Version: 1.0") + (forward-line 1) + (delete-region (point-min) (point))) + (goto-char (point-max))) + +(defun mml-smime-encrypt (cont) + ;; FIXME: You have to input the receiptant. + ;; FIXME: Should encrypt to myself so I can read it?? + (smime-encrypt-buffer) + (goto-char (point-min)) + (when (looking-at "^MIME-Version: 1.0") + (forward-line 1) + (delete-region (point-min) (point))) + (goto-char (point-max))) + +;; The following code might be moved into mml.el or gnus-art.el. + +(defvar mml-postprocess-alist + '(("smime-sign" . mml-smime-sign) + ("smime-encrypt" . mml-smime-encrypt)) + "Alist of postprocess functions.") + +(defun mml-postprocess (cont) + (let ((pp (cdr (or (assq 'postprocess cont) + (assq 'pp cont)))) + item) + (if (and pp (setq item (assoc pp mml-postprocess-alist))) + (funcall (cdr item) cont)))) + +(defun mml-smime-setup () + (setq mml-generate-mime-postprocess-function 'mml-postprocess)) + +(provide 'mml-smime) + +;;; mml-smime.el ends here diff --git a/contrib/rfc2015.el b/contrib/rfc2015.el index 065d07d..d182bbb 100644 --- a/contrib/rfc2015.el +++ b/contrib/rfc2015.el @@ -1,17 +1,18 @@ ;;; rfc2015.el --- MIME Security with Pretty Good Privacy (PGP) -;; Copyright (c) 2000 Free Software Foundation, Inc. +;; Copyright (c) 2000 Shenghuo Zhu ;; Author: Shenghuo Zhu ;; Keywords: PGP MIME -;; This file is a part of GNU Emacs. +;; This file is not (yet) a part of GNU Emacs. Hope it +;; will be a part of oGnus distribution, then GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published ;; by the Free Software Foundation; either version 2, or (at your ;; option) any later version. -;; GNU Emacs is distributed in the hope that it will be useful, but +;; This file is distributed in the hope that it will be useful, but ;; WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. @@ -23,8 +24,12 @@ ;;; Commentary: -;; Usage: +;; Installation: put the following statements in ~/.gnus: +;; (require 'rfc2015) +;; (require 'gnus-art) ;; (rfc2015-setup) +;; You may have to make sure that the directory where this file lives +;; is mentioned in `load-path'. ;; ;; Insert an attribute, postprocess=pgp-sign (or pgp-encrypt), into ;; the mml tag to be signed (or encrypted). diff --git a/contrib/smime.el b/contrib/smime.el new file mode 100644 index 0000000..fb76337 --- /dev/null +++ b/contrib/smime.el @@ -0,0 +1,279 @@ +;;; smime.el --- S/MIME support library +;; Copyright (c) 2000 Free Software Foundation, Inc. + +;; Author: Simon Josefsson +;; Keywords: SMIME X.509 PEM OpenSSL + +;; This file is not a part of GNU Emacs, but the same permissions apply. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 2, or (at your +;; option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; This library perform S/MIME operations from within Emacs. +;; +;; Functions for fetching certificates from public repositories are +;; NOT provided (yet). +;; +;; It uses OpenSSL (tested with version 0.9.5a) for signing, +;; encryption and decryption. +;; +;; Some general knowledge of S/MIME, X.509, PKCS#12, PEM etc is +;; probably required to use this library in any useful way. +;; Especially, don't expect this library to buy security for you. If +;; you don't understand what you are doing, you're as likely to lose +;; security than gain any by using this library. + +;;; Quick introduction: + +;; Get your S/MIME certificate from VeriSign or someplace. I used +;; Netscape to generate the key and certificate request and stuff, and +;; Netscape can export the key into PKCS#12 format. +;; +;; Enter OpenSSL. To be able to use this library, it need to have the +;; SMIME key readable in PEM format. OpenSSL is used to convert the +;; key: +;; +;; $ openssl pkcs12 -in mykey.p12 -clcerts -nodes > mykey.pem +;; ... +;; +;; Now, use M-x customize-variable smime-keys and add mykey.pem as +;; a key. +;; +;; Now you should be able to sign messages! Create a buffer and write +;; something and run M-x smime-sign-buffer RET RET and you should see +;; your message MIME armoured and a signature. Encryption, M-x +;; smime-encrypt-buffer, should also work. +;; +;; To be able to verify messages you need to build up trust with +;; someone. Perhaps you trust the CA that issued your certificate, at +;; least I did, so I export it's certificates from my PKCS#12 +;; certificate with: +;; +;; $ openssl pkcs12 -in mykey.p12 -cacerts -nodes > cacert.pem +;; ... +;; +;; Now, use M-x customize-variable smime-CAs and add cacert.pem as a +;; CA certificate. +;; +;; You should now be able to sign messages, and even verify messages +;; sent by others that use the same CA as you. + +;; Bugs: +;; +;; Don't complain that this package doesn't do encrypted PEM files, +;; submit a patch instead. I store my keys in a safe place, so I +;; didn't need the encryption. Also, programming this was made a lot +;; easier by that decision. One might think that this even influenced +;; were I store my keys, and one would probably be right. :-) +;; +;; Suggestions and comments are appreciated, mail me at simon@josefsson.org. + +;; +;; +;; I would include pointers to introductory text on concepts used in +;; this library here, but the material I've read are so horrible I +;; don't want to recomend them. +;; +;; Why can't someone write a simple introduction to all this stuff? +;; Until then, much of this resemble security by obscurity. +;; +;; Also, I'm not going to mention anything about the wonders of +;; cryptopolitics. Oops, I just did. +;; +;; + +;;; Revision history: + +;; version 0 not released + +;;; Code: + +(defgroup smime nil + "S/MIME configuration.") + +(defcustom smime-keys nil + "Map your mail addresses to a file with your certified key. +The file is assumed to be in PEM format and not encrypted." + :type '(repeat (list (string :tag "Mail address") + (file :tag "File name"))) + :group 'smime) + +(defcustom smime-CAs nil + "List of directories/files containing certificates for CAs you trust. +Files should be in PEM format. +Directories should contain files (in PEM format) named to the X.509 +hash of the certificate." + :type '(repeat (radio (directory :tag "Trusted CA directory") + (file :tag "Trusted CA file"))) + :group 'smime) + +(defcustom smime-certificate-directory "~/Mail/certs/" + "Directory containing other people's certificates. +It should contain files named to the X.509 hash of the certificate, +and the files themself should be in PEM format. +The S/MIME library provide simple functionality for fetching +certificates into this directory, so there is no need to populate it +manually." + :type 'directory + :group 'smime) + +(defcustom smime-openssl-program "openssl" + "Name of OpenSSL binary." + :type 'string + :group 'smime) + +;; OpenSSL wrappers. + +(defun smime-call-openssl-region (b e buf &rest args) + (case (apply 'call-process-region b e smime-openssl-program nil buf nil args) + (0 t) + (1 (error "OpenSSL: An error occurred parsing the command options.")) + (2 (error "OpenSSL: One of the input files could not be read.")) + (3 (error "OpenSSL: an error occurred creating the PKCS#7 file or when reading the MIME message.")) + (4 (error "OpenSSL: an error occurred decrypting or verifying the message.")) + (t (error "Unknown OpenSSL exitcode %s" exitcode)))) + +(defun smime-sign-region (b e keyfile) + "Sign region with certified key in KEYFILE. +If signing fails, the buffer is not modified. Region is assumed to +have proper MIME tags. KEYFILE is expected to contain a PEM encoded +private key and certificate." + (let* ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))) + (when (smime-call-openssl-region b e buffer "smime" "-sign" + "-signer" (expand-file-name keyfile)) + (delete-region b e) + (insert-buffer buffer) + (kill-buffer buffer) + t))) + +(defun smime-encrypt-region (b e certfiles) + "Encrypt region for recipients specified in CERTFILES. +If encryption fails, the buffer is not modified. Region is assumed to +have proper MIME tags. CERTFILES is a list of filenames, each file +is expected to contain of a PEM encoded certificate." + (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))) + (when (apply 'smime-call-openssl-region b e buffer "smime" "-encrypt" + (mapcar 'expand-file-name certfiles)) + (delete-region b e) + (insert-buffer buffer) + (kill-buffer buffer) + t))) + +(defun smime-sign-buffer (&optional keyfile buffer) + "S/MIME sign BUFFER with key in KEYFILE. +KEYFILE should contain a PEM encoded key and certificate." + (interactive) + (with-current-buffer (or buffer (current-buffer)) + (smime-sign-region + (point-min) (point-max) + (or keyfile + (smime-get-key-by-email + (completing-read "Sign using which signature? " smime-keys nil nil + (and (listp (car-safe smime-keys)) (caar smime-keys)))))))) + +(defun smime-encrypt-buffer (&optional certfiles buffer) + "S/MIME encrypt BUFFER for recipients specified in CERTFILES. +CERTFILES is a list of filenames, each file is expected to consist of +a PEM encoded key and certificate. Uses current buffer if BUFFER is +nil." + (interactive) + (with-current-buffer (or buffer (current-buffer)) + (smime-encrypt-region + (point-min) (point-max) + (or certfiles + (list (read-file-name "Recipient's S/MIME certificate: " + smime-certificate-directory nil)))))) + +;; User interface. + +(defvar smime-buffer "*SMIME*") + +(defvar smime-mode-map nil) +(put 'smime-mode 'mode-class 'special) + +(unless smime-mode-map + (setq smime-mode-map (make-sparse-keymap)) + (suppress-keymap smime-mode-map) + + (define-key smime-mode-map "q" 'smime-exit) + (define-key smime-mode-map "f" 'smime-certificate-info)) + +(defun smime-mode () + "Major mode for browsing, viewing and fetching certificates. + +All normal editing commands are switched off. +\\ + +The following commands are available: + +\\{smime-mode-map}" + (interactive) + (kill-all-local-variables) + (setq major-mode 'smime-mode) + (setq mode-name "SMIME") + (setq mode-line-process nil) + (use-local-map smime-mode-map) + (buffer-disable-undo) + (setq truncate-lines t) + (setq buffer-read-only t)) + +(defun smime-certificate-info (certfile) + (interactive "fCertificate file: ") + (let ((buffer (get-buffer-create (format "*certificate %s*" certfile)))) + (switch-to-buffer buffer) + (erase-buffer) + (call-process smime-openssl-program nil buffer 'display + "x509" "-in" (expand-file-name certfile) "-text") + (fundamental-mode) + (set-buffer-modified-p nil) + (toggle-read-only t) + (goto-char (point-min)))) + +(defun smime-draw-buffer () + (with-current-buffer smime-buffer + (let (buffer-read-only) + (erase-buffer) + (insert "\nYour keys:\n") + (dolist (key smime-keys) + (insert + (format "\t\t%s: %s\n" (car key) (cadr key)))) + (insert "\nTrusted Certificate Authoritys:\n") + (insert "\nKnown Certificates:\n")))) + +(defun smime () + "Go to the SMIME buffer." + (interactive) + (unless (get-buffer smime-buffer) + (save-excursion + (set-buffer (get-buffer-create smime-buffer)) + (smime-mode))) + (smime-draw-buffer) + (switch-to-buffer smime-buffer)) + +(defun smime-exit () + "Quit the S/MIME buffer." + (interactive) + (kill-buffer (current-buffer))) + +;; Other functions + +(defun smime-get-key-by-email (email) + (cadr (assoc email smime-keys))) + +(provide 'smime) + +;;; smime.el ends here diff --git a/contrib/vcard.el b/contrib/vcard.el index 000da5e..0d4c0f6 100644 --- a/contrib/vcard.el +++ b/contrib/vcard.el @@ -7,6 +7,8 @@ ;; Keywords: extensions ;; Created: 1997-09-27 +;; $Id: vcard.el,v 1.1.4.3 2001-01-12 13:31:01 yamaoka Exp $ + ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) diff --git a/etc/gnus-tut.txt b/etc/gnus-tut.txt index 94e9500..50f90f8 100644 --- a/etc/gnus-tut.txt +++ b/etc/gnus-tut.txt @@ -1,5 +1,5 @@ From lars Thu Feb 23 23:20:38 1995 -From: larsi@ifi.uio.no (ding) +From: larsi@gnus.org (ding) Date: Fri Feb 24 13:40:45 1995 Subject: So you want to use the new Gnus Message-ID: @@ -47,7 +47,7 @@ heart's delight at . ;; Boston, MA 02111-1307, USA. From lars Thu Feb 23 23:20:38 1995 -From: larsi@ifi.uio.no (ding) +From: larsi@gnus.org (ding) Date: Fri Feb 24 13:40:45 1995 Subject: Starting up Message-ID: @@ -76,7 +76,7 @@ the "Foreign groups" article for that. From lars Thu Feb 23 23:20:38 1995 -From: larsi@ifi.uio.no (ding) +From: larsi@gnus.org (ding) Date: Fri Feb 24 13:40:45 1995 Subject: Where are all the groups, then? Message-ID: @@ -109,7 +109,7 @@ prompted for groups to subscribe to.) From lars Thu Feb 23 23:20:38 1995 -From: larsi@ifi.uio.no (ding) +From: larsi@gnus.org (ding) Date: Fri Feb 24 13:40:45 1995 Subject: I want to read my mail! Message-ID: @@ -147,7 +147,7 @@ these variables and re-start Gnus. From lars Thu Feb 23 23:20:38 1995 -From: larsi@ifi.uio.no (ding) +From: larsi@gnus.org (ding) Date: Fri Feb 24 13:40:45 1995 Subject: Foreign newsgroups Message-ID: @@ -170,7 +170,7 @@ the info pages to find out more. From lars Thu Feb 23 23:20:38 1995 -From: larsi@ifi.uio.no (ding) +From: larsi@gnus.org (ding) Date: Fri Feb 24 13:40:45 1995 Subject: Low level changes in GNUS, or, Wrong type argument: stringp, nil Message-ID: @@ -198,7 +198,7 @@ with Emacs 18. It won't even work on Emacsen older than Emacs From lars Thu Feb 23 23:20:38 1995 -From: larsi@ifi.uio.no (ding) +From: larsi@gnus.org (ding) Date: Fri Feb 24 13:40:45 1995 Subject: How do I re-scan my mail groups? Message-ID: @@ -212,7 +212,7 @@ You can also re-scan all the mail groups by putting them on level 1 From lars Thu Feb 23 23:20:38 1995 -From: larsi@ifi.uio.no (ding) +From: larsi@gnus.org (ding) Date: Fri Feb 24 13:40:45 1995 Subject: How do I set up virtual newsgroups? Message-ID: @@ -266,7 +266,7 @@ the lines of: From lars Thu Feb 23 23:20:38 1995 -From: larsi@ifi.uio.no (ding) +From: larsi@gnus.org (ding) Date: Fri Feb 24 13:40:45 1995 Subject: Bugs & stuff Message-ID: @@ -286,9 +286,9 @@ report. If I am not able to reproduce the bug, I won't be able to fix it. I would, of course, prefer that you locate the bug, fix it, and mail -me the patches, but one can't have everything. +me the patches, but one can't have everything. -If you have any questions on usage, the "ding@ifi.uio.no" mailing list +If you have any questions on usage, the "ding@gnus.org" mailing list is where to post the questions. diff --git a/etc/gnus/bar.xbm b/etc/gnus/bar.xbm new file mode 100644 index 0000000..e61300a --- /dev/null +++ b/etc/gnus/bar.xbm @@ -0,0 +1,7 @@ +#define noname_width 6 +#define noname_height 48 +static char noname_bits[] = { + 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, + 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, + 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, + 0x0c,0x0c,0x0c}; diff --git a/etc/gnus/bar.xpm b/etc/gnus/bar.xpm new file mode 100644 index 0000000..2985065 --- /dev/null +++ b/etc/gnus/bar.xpm @@ -0,0 +1,54 @@ +/* XPM */ +static char * picon-bar_xpm[] = { +"6 48 2 1", +" c white s background", +". c black", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. "}; diff --git a/etc/gnus/gnus-group-catchup-current-up.xbm b/etc/gnus/gnus-group-catchup-current-up.xbm new file mode 100644 index 0000000..f801fea --- /dev/null +++ b/etc/gnus/gnus-group-catchup-current-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x20,0x40,0x10,0x20,0x0a,0x15,0x85,0x0a,0x20,0x20,0x28,0x50,0x8a,0x8a,0x02, + 0x05,0x10,0x5e,0x54,0xa8,0xa5,0x35,0x01,0x7a,0x00,0x33,0x54,0x95,0xaa,0xaa, + 0x02,0xcc,0xfe,0x17,0xa8,0xd8,0x01,0xac,0xfa,0x4f,0x3d,0xf8,0x05,0x30,0x22, + 0x80,0xf6,0x60,0x2b,0xfc,0x8f,0x20,0x11,0x82,0xca,0x60,0x1a,0x2a,0x6e,0x28, + 0x08,0x85,0x42,0x68,0xfa,0x11,0x28,0xc8,0x04,0x8b,0xe2,0xb7,0x06,0x21,0x14, + 0xd4,0x1a,0x11,0x31,0x04,0x31,0x56,0x6d,0xdc,0x58,0xea,0xc7,0x28,0x64,0x66, + 0x60,0xa9,0x57,0x72,0x90,0x49,0xc8,0xec,0x5f,0x99,0xa6,0x7f,0x95,0x52,0xaa, + 0x64,0x22,0xbf,0x49,0x2a,0xa9,0x7e,0x92,0x52,0x55,0x55,0x54,0x49,0x4a,0xa4, + 0x49,0xaa,0xa4,0x4a,0x2a,0x49,0x2a,0x25}; diff --git a/etc/gnus/gnus-group-catchup-current-up.xpm b/etc/gnus/gnus-group-catchup-current-up.xpm new file mode 100644 index 0000000..0504f9d --- /dev/null +++ b/etc/gnus/gnus-group-catchup-current-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-catchup_xpm[] = { +"32 32 4 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #999999999999", +"o c #FFFFFFFFFFFF", +" ", +" ", +" ", +" ", +" .... ", +" .XXXX. .... ", +" .XXXX. .XXXX.", +" .XXX. .XXXX.", +" .........XX. .XXX.", +".ooooooooo.. .........XX. ", +".o....ooooo...... .ooooooooo.. ", +"X. .ooooooooo.X..o....ooooo. ", +"X. .oooo........X. .ooooo. ", +". .oooo. .X. .ooooo. ", +" .oooo. .. .oooo.o. ", +" .oooo. .oooo.o. ", +" ...... .ooooo.oo..", +" .ooooo. ...... ..X.", +" .ooooo. .ooooo. ..", +" .o..ooo. ..oooo. ", +".ooo..ooo.XXXXXXXXX.o..ooo.XXXXX", +"ooo.XX.oo.XXX......ooo..ooo.XXXX", +"oo.XXX.oo.XXX..oooooo.XX.oo.XXXX", +"..XXXX.oo.XXX..ooooo.XXX.oo.XXXX", +"XXXXXXX.oo.XX.......XXX .oo.XXXX", +"XXXXXXX.....X..XXXXXXXXXX.oo.XXX", +"XXXXXXXXXXXXX.XXXXXXXXXXX.....XX", +"XXXXXXXXXXXXXXXXXXXXXXXXX......X", +"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}; diff --git a/etc/gnus/gnus-group-catchup-current.xbm b/etc/gnus/gnus-group-catchup-current.xbm new file mode 100644 index 0000000..2218640 --- /dev/null +++ b/etc/gnus/gnus-group-catchup-current.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x84,0x20,0x00,0x04,0x21,0x88,0x54,0x51,0x84,0x22,0x02,0x04,0x51,0x88,0xa0, + 0x42,0x04,0x1f,0x0a,0x28,0x51,0x75,0xa1,0x7a,0x04,0x23,0x04,0xcc,0xa1,0x76, + 0xa9,0xa6,0xfe,0x1b,0x00,0xd8,0x01,0x0c,0xfd,0x5f,0x3d,0xf8,0x05,0x30,0x26, + 0x80,0xf7,0x60,0x33,0xfc,0xdb,0x20,0x11,0x22,0x8e,0x20,0x14,0x8a,0x66,0x68, + 0x09,0x45,0x48,0x28,0xfc,0x11,0x21,0xc8,0x04,0x45,0xf4,0xf7,0x06,0x89,0x10, + 0xc4,0x1a,0x23,0x35,0x2c,0x31,0xaa,0x6c,0x54,0x58,0xea,0xc7,0x48,0x64,0x66, + 0xa0,0x99,0x57,0x72,0x50,0x59,0xc8,0xec,0x2f,0x49,0xa6,0x7f,0xaa,0x52,0xaa, + 0x64,0x49,0xbf,0x49,0x2a,0xa5,0x7e,0x92,0xa4,0x14,0x55,0xa9,0x52,0xaa,0x92, + 0x4a,0xa5,0x24,0x25,0xa5,0x94,0xaa,0xa8}; diff --git a/etc/gnus/gnus-group-catchup-current.xpm b/etc/gnus/gnus-group-catchup-current.xpm new file mode 100644 index 0000000..bea4643 --- /dev/null +++ b/etc/gnus/gnus-group-catchup-current.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-catchup_xpm[] = { +"32 32 4 1", +" c #BFBFBFBFBFBF", +". c #000000000000", +"X c #999999999999", +"o c #FFFFFFFFFFFF", +" ", +" ", +" ", +" ", +" .... ", +" .XXXX. .... ", +" .XXXX. .XXXX.", +" .XXX. .XXXX.", +" .........XX. .XXX.", +".ooooooooo.. .........XX. ", +".o....ooooo...... .ooooooooo.. ", +"X. .ooooooooo.X..o....ooooo. ", +"X. .oooo........X. .ooooo. ", +". .oooo. .X. .ooooo. ", +" .oooo. .. .oooo.o. ", +" .oooo. .oooo.o. ", +" ...... .ooooo.oo..", +" .ooooo. ...... ..X.", +" .ooooo. .ooooo. ..", +" .o..ooo. ..oooo. ", +".ooo..ooo.XXXXXXXXX.o..ooo.XXXXX", +"ooo.XX.oo.XXX......ooo..ooo.XXXX", +"oo.XXX.oo.XXX..oooooo.XX.oo.XXXX", +"..XXXX.oo.XXX..ooooo.XXX.oo.XXXX", +"XXXXXXX.oo.XX.......XXX .oo.XXXX", +"XXXXXXX.....X..XXXXXXXXXX.oo.XXX", +"XXXXXXXXXXXXX.XXXXXXXXXXX.....XX", +"XXXXXXXXXXXXXXXXXXXXXXXXX......X", +"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}; diff --git a/etc/gnus/gnus-group-describe-group-up.xbm b/etc/gnus/gnus-group-describe-group-up.xbm new file mode 100644 index 0000000..0054d63 --- /dev/null +++ b/etc/gnus/gnus-group-describe-group-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x55,0xb5,0x55,0xb5,0xaa,0x12,0xa9,0x12,0x12,0x55,0x12,0x65,0xa9,0xa4,0x4a, + 0x10,0x55,0x9b,0x15,0xc1,0x55,0x51,0x09,0x00,0x92,0x4a,0x02,0x00,0xa9,0x24, + 0x01,0x00,0x55,0x5b,0x11,0x11,0x92,0xa4,0x00,0x00,0x2a,0x49,0x00,0x00,0x49, + 0x55,0x00,0x00,0x35,0x55,0x11,0x11,0xaa,0xaa,0x00,0x00,0x92,0x44,0x00,0x00, + 0xa5,0x32,0x00,0x00,0x55,0x55,0x11,0x11,0x29,0x55,0x01,0x00,0xaa,0x24,0x01, + 0x00,0x92,0x97,0x00,0x00,0x75,0xba,0x13,0x11,0x2a,0x51,0x04,0x00,0xb2,0xaa, + 0x0a,0x40,0x59,0x75,0x25,0x40,0xb5,0x3d,0x59,0xb5,0xfa,0x77,0xa5,0x2a,0xae, + 0x9a,0x2a,0x49,0xd6,0x5f,0x49,0xa5,0xf7,0x57,0x35,0x55,0x7d,0x29,0x95,0x2a, + 0x7e,0x55,0xa9,0x54,0x5f,0x92,0x94,0x92}; diff --git a/etc/gnus/gnus-group-describe-group-up.xpm b/etc/gnus/gnus-group-describe-group-up.xpm new file mode 100644 index 0000000..e0ffde7 --- /dev/null +++ b/etc/gnus/gnus-group-describe-group-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-describe-group_xpm[] = { +"32 32 4 1", +" c #000000000000", +". c #999999999999 s backgroundToolBarColor", +"X c #FFFFFFFFFFFF", +"o c #BFBFBFBFBFBF", +" ... ... ... ... ... ... ... ...", +"................................", +"................................", +".......................XXXXX....", +" ... ... ... ... ... XXX XXXXX..", +"....................XXXXXXXXXXX.", +"...................XXXXXXXXXXXXX", +"..................XXXXXXXXXXXXXX", +" ... ... ... ... XXX XXX XXX XXX", +"................XXXXXXXXXXXXXXXX", +"................XXXXXXXXXXXXXXXX", +"................XXXXXXXXXXXXXXXX", +" ... ... ... ... XXX XXX XXX XXX", +"................XXXXXXXXXXXXXXXX", +"................XXXXXXXXXXXXXXXX", +"................XXXXXXXXXXXXXXXX", +" ... ... ... ... XXX XXX XXX XXX", +".................XXXXXXXXXXXXXXX", +".................XXXXXXXXXXXXXXX", +"....... .......XXXXXXXXXXXXXX", +" ... . oooo ... ..X XXX XXX XXX", +"..... o...oo .......XXXXXXXXXXX.", +".... .o....o. .......XXXXXXXXX..", +".... o . ... .........XXXXX....", +" ... o .. . .. ... ... ... ...", +"... o . . ..................", +".. X . . . ...................", +". o . . ....................", +" o . ... ... ... ... ...", +" o .........................", +"o . ...o......................", +" ..........................."}; diff --git a/etc/gnus/gnus-group-exit-up.xbm b/etc/gnus/gnus-group-exit-up.xbm new file mode 100644 index 0000000..c03e1fa --- /dev/null +++ b/etc/gnus/gnus-group-exit-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x00,0x00,0x40,0x00,0x00,0x30,0x30,0x00,0x00,0x68,0x38,0x00,0x38,0x60,0x48, + 0x00,0xd4,0x91,0xde,0x07,0x68,0xcf,0xb7,0x1a,0x80,0xb4,0x6e,0x05,0x00,0xe2, + 0x07,0x00,0x00,0xde,0x1d,0x00,0xe0,0xfd,0x77,0x00,0xb0,0x6a,0xf3,0x00,0x20, + 0x9c,0xa5,0x03,0x00,0xaa,0x86,0x02,0x00,0x65,0x06,0x02,0xab,0x6f,0xaf,0x59, + 0x80,0x62,0x0c,0x00,0xaa,0xab,0xba,0x4a,0x40,0x21,0x10,0x10,0xea,0x45,0x4a, + 0x42,0x40,0x89,0x90,0x28,0xd2,0x21,0x02,0x82,0xa4,0x8a,0x44,0x20,0xf0,0x10, + 0x10,0x85,0xa4,0x04,0x4a,0x20,0xe2,0x22,0x80,0x80,0xbc,0x4b,0x09,0x2a,0xee, + 0x8e,0x32,0x80,0xeb,0x73,0x85,0x28,0x56,0xaa,0xb5,0x02,0xff,0xff,0x85,0x48, + 0x08,0x94,0x11,0x01,0x42,0x02,0x48,0x54}; diff --git a/etc/gnus/gnus-group-exit-up.xpm b/etc/gnus/gnus-group-exit-up.xpm new file mode 100644 index 0000000..1b8982f --- /dev/null +++ b/etc/gnus/gnus-group-exit-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-exit-gnus_xpm[] = { +"32 32 4 1", +" c #FFFFFFFFFFFF s backgroundToolBarColor", +". c #000000000000", +"X c #999999999999", +"o c #BFBFBFBFBFBF", +" . ", +" .. .. ", +" . .. ... ", +" ... .. . . ", +" . . ... . . .... ..... ", +" . .. .... ..... .. . . .. ", +" . . .. . ... .. . . ", +" . ...... ", +" .... ... ... ", +" .... ......... ... ", +" .. . . .X.. .. .... ", +" . .X. .. . . ... ", +" .X. . . .. . . ", +" .X. .. .. . ", +".. . . ..X.. .. .... . .. .. . ", +"ooooooo.X.ooo..ooo..oo ooooooooo", +"oooo oo.X.ooo.ooooo..oooooooo oo", +"o oooo.X.ooooooo ooo.ooooooooooo", +"oooooo.X.ooooooooooooooo ooooooo", +"ooo oo.X.ooo ooooooooooooooooooo", +"oooooo.X.oooooooooo oooooo ooo", +"ooooo.X.ooooooooooooooo ooooooo", +"o ooo.X.oooooo ooooooooooooooooo", +"ooooo.X.oooo o ooooooooo ooooo", +"ooooo.X.ooooooooooo oooo o ooo", +"oo....X...ooooooo o oooooooooo", +"o..XX...XX..ooo.o.oo.oo oooooooo", +".XX.XX..X.XX...ooo.oo o oooooo", +"X.XX.XXXXXXXXXX..oooo.o.oooooo o", +".................o.o oo.oooo o ", +"oooooo ooo.oo oo.o . ooooooooo", +"oooo o oo o oooooooooooooooo"}; diff --git a/etc/gnus/gnus-group-get-new-news-this-group-up.xbm b/etc/gnus/gnus-group-get-new-news-this-group-up.xbm new file mode 100644 index 0000000..2f354f4 --- /dev/null +++ b/etc/gnus/gnus-group-get-new-news-this-group-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x20,0x00,0x40,0x88,0xff,0x57,0x15,0x22,0x02,0x0c,0xa0,0x88,0x02,0xa4,0x0a, + 0x22,0x02,0x04,0xf0,0x84,0x03,0x54,0xdd,0x21,0x02,0x1e,0x14,0x97,0x02,0x66, + 0xcd,0x02,0x02,0x7c,0x14,0x2b,0x03,0x9c,0xad,0x41,0x02,0x54,0xb1,0x0a,0x02, + 0x2c,0xff,0x47,0x02,0xe4,0x14,0x2d,0xff,0x4f,0xa5,0x0a,0x48,0xa0,0x4a,0xb4, + 0x12,0x0a,0x51,0x1b,0x40,0xa1,0x96,0x36,0x2a,0x10,0x4a,0x56,0x80,0x4a,0x57, + 0x1b,0x55,0x00,0x92,0x52,0x00,0x55,0x26,0x17,0xa9,0x00,0xab,0x5a,0x04,0x2a, + 0xfe,0x1f,0x41,0x41,0xcb,0x48,0x14,0x14,0x95,0x2f,0x82,0x42,0x53,0x09,0x28, + 0x08,0xa5,0xaf,0x84,0xa2,0x75,0x06,0x12,0x04,0xd3,0x54,0x40,0x51,0xdf,0x0f, + 0x0a,0x82,0xae,0x23,0xa0,0x28,0x8a,0x4a}; diff --git a/etc/gnus/gnus-group-get-new-news-this-group-up.xpm b/etc/gnus/gnus-group-get-new-news-this-group-up.xpm new file mode 100644 index 0000000..918fd2e --- /dev/null +++ b/etc/gnus/gnus-group-get-new-news-this-group-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-get-new-news-this-group_xpm[] = { +"32 32 4 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +" ", +" .......... ", +" .XXXXXXXX. ", +" .XXXXXXXX. ", +" .XXXXXXXX. .... ", +" .XXXXXXXX. .oooo. ", +" .XXXXXXX.... .oooooo. ", +" .XXXXXXX.. . .oooooo. ", +" .XXXXXXXX...o. .oooooo. ", +" .XXXXXXXX..ooo. .oooo. ", +" .XXXXXXXX. .ooo. .oo. ", +" .XXXXXXXX. .ooo.....o.... ", +" .XXXXXXXX. .oooooooooooo. ", +" .......... .oooooooooooo. ", +" .oooooooooooo. ", +" .oooooooo.oo. ", +" .ooooooo.oo. ", +" .ooooooo.oo. ", +" .ooooooo.oo. ", +" .ooooooo.oo. ", +" .ooooooo.oo. ", +" .ooooooo.oo. ", +" ............ ", +" .oooooo. . ", +" .ooooooo.. . ", +" .ooooooo. . ", +" .oooo.oo... ", +" .oooo.oooo. ", +" .ooo. .ooo. ", +" ..... ..... ", +" .o. .o. ", +" .o. .o. "}; diff --git a/etc/gnus/gnus-group-get-new-news-up.xbm b/etc/gnus/gnus-group-get-new-news-up.xbm new file mode 100644 index 0000000..bea7a56 --- /dev/null +++ b/etc/gnus/gnus-group-get-new-news-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x00,0x81,0x00,0x08,0xff,0x2b,0xa8,0x42,0x01,0x42,0x05,0x14,0x01,0x16,0x50, + 0x41,0x01,0xa2,0x7a,0x0a,0x01,0x0a,0xcc,0x40,0x01,0xaf,0x92,0x15,0x01,0x13, + 0x56,0x43,0x01,0xbe,0x2a,0x09,0x01,0x6e,0xcc,0x52,0x01,0xca,0x69,0x80,0x01, + 0x32,0xdf,0x2b,0x01,0x66,0x55,0x85,0xff,0x33,0xa9,0x2e,0x24,0xc9,0x92,0x88, + 0x09,0x82,0x4a,0x2e,0xa0,0x28,0xfd,0xf9,0x14,0x42,0x07,0x8d,0x42,0x08,0x85, + 0x8d,0x20,0x52,0x87,0x85,0x8a,0x80,0x45,0x86,0x20,0x2a,0xc7,0x82,0x8a,0x00, + 0xe7,0x82,0x41,0xd4,0x15,0x81,0x14,0x81,0xe6,0x81,0x81,0xa8,0x3d,0xff,0x14, + 0x82,0xfa,0x02,0x42,0xd1,0x52,0x57,0x08,0x8a,0xad,0x82,0xa2,0xa0,0xef,0x2b, + 0x04,0x05,0x55,0x81,0x51,0x50,0xc7,0x2b}; diff --git a/etc/gnus/gnus-group-get-new-news-up.xpm b/etc/gnus/gnus-group-get-new-news-up.xpm new file mode 100644 index 0000000..d324784 --- /dev/null +++ b/etc/gnus/gnus-group-get-new-news-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-get-new-news_xpm[] = { +"32 32 4 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +" ", +".......... ", +".XXXXXXXX. ", +".XXXXXXXX. ", +".XXXXXXXX. .... ", +".XXXXXXXX. .oooo. ", +".XXXXXXX.... .oooooo. ", +".XXXXXXX.. . .oooooo. ", +".XXXXXXXX...o. .oooooo. ", +".XXXXXXXX..ooo. .oooo. ", +".XXXXXXXX. .ooo. .oo. ", +".XXXXXXXX. .ooo.....o.... ", +".XXXXXXXX. .oooooooooooo. ", +".......... .oooooooooooo. ", +" .oooooooooooo. ", +" .ooooooooooo. ", +" .o.......oo.....", +" .o.XXXXX.oo.XXX.", +" .o.XXXX.ooo.XXX.", +" .o.XXXX.oo.XXXX.", +" .o.XXX.ooo.XXXX.", +" .o.XXX.oo.XXXXX.", +" ...XX...o.XXXXX.", +" .oo.X. .XXXXXX.", +" .oo.XX.. .XXXXXX.", +" .oo.... ........", +" .oooo.o..o. ", +" .oooo.oooo. ", +" .ooo. .ooo. ", +" ..... ..... ", +" .o. .o. ", +" .o. .o. "}; diff --git a/etc/gnus/gnus-group-kill-group-up.xbm b/etc/gnus/gnus-group-kill-group-up.xbm new file mode 100644 index 0000000..8c3526d --- /dev/null +++ b/etc/gnus/gnus-group-kill-group-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x00,0x04,0x20,0x20,0x54,0xa1,0x0a,0x4a,0x02,0x0a,0x50,0x01,0xa0,0x40,0x05, + 0x54,0xca,0xff,0x7f,0x00,0x50,0x00,0x60,0x55,0x42,0x00,0xa0,0x80,0x68,0xc0, + 0x21,0x2b,0x42,0xe0,0xe3,0x83,0x50,0xb0,0x06,0x2a,0x4a,0xf0,0x07,0x42,0x60, + 0x70,0x07,0x16,0x42,0xe0,0x03,0x42,0x68,0x40,0x01,0x2a,0x42,0x40,0x01,0x82, + 0x50,0xc8,0x05,0x2a,0x4a,0x0c,0x0c,0x82,0x60,0x30,0x03,0x2a,0x4a,0xc0,0x00, + 0x82,0x40,0xc0,0x00,0x2a,0x6a,0x30,0x03,0x42,0x41,0x0c,0x0c,0x16,0x54,0x08, + 0x04,0x22,0x41,0x00,0x00,0x4a,0x54,0x00,0x00,0x02,0x41,0x00,0x00,0x56,0x54, + 0x00,0x00,0x02,0x42,0x00,0x00,0x52,0xe8,0xff,0xff,0x0b,0x04,0x84,0x00,0x42, + 0x52,0x11,0xaa,0x28,0x00,0xa4,0x04,0x04}; diff --git a/etc/gnus/gnus-group-kill-group-up.xpm b/etc/gnus/gnus-group-kill-group-up.xpm new file mode 100644 index 0000000..e728bf5 --- /dev/null +++ b/etc/gnus/gnus-group-kill-group-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-killfile_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" ", +" ", +" ", +" ................ ", +" .XXXXXXXXXXXXXX.. ", +" .XXXXXXXXXXXXXX.X. ", +" .XXXXXXX...XXXX.XX. ", +" .XXXXXX.....XXX..... ", +" .XXXXX..X.X..XXXXXX. ", +" .XXXXX.......XXXXXX. ", +" .XXXXX...X...XXXXXX. ", +" .XXXXXX.....XXXXXXX. ", +" .XXXXXXX.X.XXXXXXXX. ", +" .XXXXXXX.X.XXXXXXXX. ", +" .XXXX.XX...X.XXXXXX. ", +" .XXX..XXXXXX..XXXXX. ", +" .XXXXX..XX..XXXXXXX. ", +" .XXXXXXX..XXXXXXXXX. ", +" .XXXXXXX..XXXXXXXXX. ", +" .XXXXX..XX..XXXXXXX. ", +" .XXX..XXXXXX..XXXXX. ", +" .XXXX.XXXXXX.XXXXXX. ", +" .XXXXXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXXXXX. ", +" .................... ", +" ", +" ", +" "}; diff --git a/etc/gnus/gnus-group-subscribe-up.xbm b/etc/gnus/gnus-group-subscribe-up.xbm new file mode 100644 index 0000000..98819e5 --- /dev/null +++ b/etc/gnus/gnus-group-subscribe-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x08,0x04,0x00,0x40,0x22,0x51,0x55,0x15,0x88,0x04,0x00,0x20,0x22,0xa0,0xaa, + 0x4a,0xc4,0xff,0x3f,0x00,0x61,0x80,0x60,0x55,0x54,0x8a,0xa0,0x80,0x42,0x84, + 0x20,0x2b,0x68,0x8a,0xe0,0x83,0x42,0x80,0x00,0x2a,0xd4,0xff,0x00,0x42,0x41, + 0x80,0x00,0x16,0x54,0x8a,0x00,0x42,0x41,0x84,0x00,0x2a,0x54,0x8a,0x00,0x82, + 0x41,0x80,0x00,0x2a,0xd4,0xff,0x00,0x82,0x42,0x80,0x00,0x2a,0x68,0x8a,0x00, + 0x82,0x44,0x84,0x00,0x2a,0x52,0x8a,0x00,0x42,0x40,0x80,0x00,0x16,0xea,0xff, + 0x00,0x22,0x40,0x80,0x00,0x4a,0x4a,0x80,0x00,0x02,0x61,0x80,0x00,0x56,0x44, + 0x80,0x00,0x02,0x51,0x80,0x00,0x52,0xc4,0xff,0xff,0x0b,0xa1,0x04,0x00,0x42, + 0x14,0xa8,0xaa,0x88,0x82,0x02,0x00,0x22}; diff --git a/etc/gnus/gnus-group-subscribe-up.xpm b/etc/gnus/gnus-group-subscribe-up.xpm new file mode 100644 index 0000000..15f7d43 --- /dev/null +++ b/etc/gnus/gnus-group-subscribe-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-unsubscribe_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" ", +" ", +" ", +" ................ ", +" .XXXXXXXX.XXXXX.. ", +" .XX.X.XXX.XXXXX.X. ", +" .XXX.XXXX.XXXXX.XX. ", +" .XX.X.XXX.XXXXX..... ", +" .XXXXXXXX.XXXXXXXXX. ", +" ..........XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XX.X.XXX.XXXXXXXXX. ", +" .XXX.XXXX.XXXXXXXXX. ", +" .XX.X.XXX.XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" ..........XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XX.X.XXX.XXXXXXXXX. ", +" .XXX.XXXX.XXXXXXXXX. ", +" .XX.X.XXX.XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" ..........XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .................... ", +" ", +" ", +" "}; diff --git a/etc/gnus/gnus-group-unsubscribe-up.xbm b/etc/gnus/gnus-group-unsubscribe-up.xbm new file mode 100644 index 0000000..9edc6b8 --- /dev/null +++ b/etc/gnus/gnus-group-unsubscribe-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x08,0x04,0x00,0x40,0x22,0x51,0x55,0x15,0x88,0x04,0x00,0x20,0x22,0xa0,0xaa, + 0x4a,0xc4,0xff,0x3f,0x00,0x61,0x80,0x60,0x55,0x54,0xa0,0xa0,0x80,0x42,0x90, + 0x20,0x2b,0x68,0x8a,0xe0,0x83,0x42,0x84,0x00,0x2a,0xd4,0xff,0x00,0x42,0x41, + 0x80,0x00,0x16,0x54,0xa0,0x00,0x42,0x41,0x90,0x00,0x2a,0x54,0x8a,0x00,0x82, + 0x41,0x84,0x00,0x2a,0xd4,0xff,0x00,0x82,0x42,0x80,0x00,0x2a,0x68,0xa0,0x00, + 0x82,0x44,0x90,0x00,0x2a,0x52,0x8a,0x00,0x42,0x40,0x84,0x00,0x16,0xea,0xff, + 0x00,0x22,0x40,0x80,0x00,0x4a,0x4a,0x80,0x00,0x02,0x61,0x80,0x00,0x56,0x44, + 0x80,0x00,0x02,0x51,0x80,0x00,0x52,0xc4,0xff,0xff,0x0b,0xa1,0x04,0x00,0x42, + 0x14,0xa8,0xaa,0x88,0x82,0x02,0x00,0x22}; diff --git a/etc/gnus/gnus-group-unsubscribe-up.xpm b/etc/gnus/gnus-group-unsubscribe-up.xpm new file mode 100644 index 0000000..7c7ce5b --- /dev/null +++ b/etc/gnus/gnus-group-unsubscribe-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-subscribe_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" ", +" ", +" ", +" ................ ", +" .XXXXXXXX.XXXXX.. ", +" .XXXXXX.X.XXXXX.X. ", +" .XXXXX.XX.XXXXX.XX. ", +" .XX.X.XXX.XXXXX..... ", +" .XXX.XXXX.XXXXXXXXX. ", +" ..........XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XXXXXX.X.XXXXXXXXX. ", +" .XXXXX.XX.XXXXXXXXX. ", +" .XX.X.XXX.XXXXXXXXX. ", +" .XXX.XXXX.XXXXXXXXX. ", +" ..........XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XXXXXX.X.XXXXXXXXX. ", +" .XXXXX.XX.XXXXXXXXX. ", +" .XX.X.XXX.XXXXXXXXX. ", +" .XXX.XXXX.XXXXXXXXX. ", +" ..........XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .XXXXXXXX.XXXXXXXXX. ", +" .................... ", +" ", +" ", +" "}; diff --git a/etc/gnus/gnus-pointer.xbm b/etc/gnus/gnus-pointer.xbm new file mode 100644 index 0000000..94e9154 --- /dev/null +++ b/etc/gnus/gnus-pointer.xbm @@ -0,0 +1,6 @@ +#define noname_width 18 +#define noname_height 13 +static char noname_bits[] = { + 0x00,0x00,0x00,0xc0,0x0c,0x00,0xe0,0x1f,0x00,0x92,0x39,0x00,0x0e,0x71,0x02, + 0x46,0xe0,0x03,0x20,0xc0,0x01,0x00,0x08,0x00,0x10,0x0d,0x00,0xc4,0x08,0x00, + 0x78,0x08,0x00,0x18,0x89,0x00,0x00,0x08,0x00}; diff --git a/etc/gnus/gnus-pointer.xpm b/etc/gnus/gnus-pointer.xpm new file mode 100644 index 0000000..c47443d --- /dev/null +++ b/etc/gnus/gnus-pointer.xpm @@ -0,0 +1,22 @@ +/* XPM */ +static char *gnus-pointer[] = { +/* width height num_colors chars_per_pixel */ +" 18 13 2 1", +/* colors */ +". c #0000ff", +"# c None s None", +/* pixels */ +"##################", +"######..##..######", +"#####........#####", +"#.##.##..##...####", +"#...####.###...##.", +"#..###.######.....", +"#####.########...#", +"###########.######", +"####.###.#..######", +"######..###.######", +"###....####.######", +"###..######.######", +"###########.######" +}; \ No newline at end of file diff --git a/etc/gnus/gnus-summary-caesar-message-up.xbm b/etc/gnus/gnus-summary-caesar-message-up.xbm new file mode 100644 index 0000000..0de8759 --- /dev/null +++ b/etc/gnus/gnus-summary-caesar-message-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x40,0x40,0x10,0x01,0x15,0x15,0x45,0x50,0x40,0x40,0x08,0x05,0x14,0x14,0xa2, + 0x50,0xe2,0xff,0x3f,0x82,0x48,0x00,0xe0,0x28,0x62,0xe6,0xb8,0x82,0x48,0x29, + 0x25,0x29,0x62,0xa9,0xe4,0x83,0x48,0x2f,0x05,0x2a,0x42,0xe9,0x38,0x42,0x60, + 0x00,0x00,0x16,0x4a,0x82,0x10,0x22,0x50,0x00,0x00,0x4a,0x42,0xcb,0x1c,0x02, + 0x68,0x2b,0x25,0x56,0x42,0x2d,0x1d,0x02,0x50,0x2d,0x05,0x52,0x4a,0xc9,0x04, + 0x0a,0x40,0x00,0x00,0x42,0x6a,0x18,0x00,0x16,0x41,0x3c,0x00,0x42,0x54,0xe6, + 0x3f,0x0a,0x41,0xe6,0x3f,0x52,0x54,0x3c,0x2a,0x06,0x42,0x18,0x2a,0x42,0x68, + 0x00,0x08,0x2a,0x44,0x00,0x00,0x06,0xd2,0xff,0xff,0x53,0x20,0x84,0x20,0x04, + 0x8a,0x10,0x8a,0xa8,0x20,0x4a,0x21,0x02}; diff --git a/etc/gnus/gnus-summary-caesar-message-up.xpm b/etc/gnus/gnus-summary-caesar-message-up.xpm new file mode 100644 index 0000000..6f56aa9 --- /dev/null +++ b/etc/gnus/gnus-summary-caesar-message-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-rot13_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" ", +" ", +" ", +" ................ ", +" .XXXXXXXXXXXXXX.. ", +" .XX..XX...XXX...X. ", +" .X.XX.X.XX.X.XX.XX. ", +" .X.XX.X.X.XX.XX..... ", +" .X....X.XX.X.XXXXXX. ", +" .X.XX.X...XXX...XXX. ", +" .XXXXXXXXXXXXXXXXXX. ", +" .XX.XXXXX.XXXX.XXXX. ", +" .XXXXXXXXXXXXXXXXXX. ", +" .X..X.XX..XX...XXXX. ", +" .X..X.X.XX.X.XX.XXX. ", +" .X.X..X.XX.X...XXXX. ", +" .X.X..X.XX.X.XXXXXX. ", +" .X.XX.XX..XX.XXXXXX. ", +" .XXXXXXXXXXXXXXXXXX. ", +" .XXXX..XXXXXXXXXXXX. ", +" .XXX....XXXXXXXXXXX. ", +" .XX..XX.........XXX. ", +" .XX..XX.........XXX. ", +" .XXX....XXX.X.X.XXX. ", +" .XXXX..XXXX.X.X.XXX. ", +" .XXXXXXXXXXXX.XXXXX. ", +" .XXXXXXXXXXXXXXXXXX. ", +" .................... ", +" ", +" ", +" "}; diff --git a/etc/gnus/gnus-summary-cancel-article-up.xbm b/etc/gnus/gnus-summary-cancel-article-up.xbm new file mode 100644 index 0000000..e8d8d68 --- /dev/null +++ b/etc/gnus/gnus-summary-cancel-article-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x11,0x11,0x01,0x11,0x54,0x4a,0xa9,0x52,0x82,0x10,0x04,0x08,0x28,0x24,0xa1, + 0x42,0x91,0x91,0x0f,0x19,0x25,0xaa,0xa9,0x44,0x88,0x60,0x18,0x11,0x42,0x1c, + 0x56,0x44,0x19,0x07,0x97,0x31,0x44,0x01,0x23,0x0a,0x12,0x81,0x60,0x50,0x80, + 0x02,0x42,0x05,0x3b,0x05,0x78,0x59,0x00,0x0a,0x56,0x12,0xaa,0xf4,0x05,0x41, + 0x00,0x54,0x51,0x10,0x5b,0x51,0x95,0x55,0x10,0x15,0x00,0x11,0x42,0x40,0x55, + 0x44,0x10,0x2a,0x00,0x21,0x5b,0x91,0x5b,0x95,0x80,0x24,0x00,0x21,0x12,0x92, + 0x2a,0x14,0x44,0x01,0x80,0x42,0x11,0xb5,0x35,0x19,0x54,0x11,0x08,0x42,0x02, + 0x44,0xa1,0x08,0xa8,0x22,0x14,0x52,0x11,0x99,0x51,0x11,0x4a,0x22,0x14,0x4a, + 0x20,0x89,0x42,0x10,0x15,0x40,0x20,0x45}; diff --git a/etc/gnus/gnus-summary-cancel-article-up.xpm b/etc/gnus/gnus-summary-cancel-article-up.xpm new file mode 100644 index 0000000..fa7c639 --- /dev/null +++ b/etc/gnus/gnus-summary-cancel-article-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-cancel-post_xpm[] = { +"32 32 4 1", +" c #000000000000", +". c #BFBFBFBFBFBF s backgroundToolBarColor", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +" ... ... ... ... ....... ... ...", +"................................", +"................................", +"................................", +" ... ... ... ... .... ... ...", +"............... XX ............", +"............. XXXX ...........", +"........... XXXX X ...........", +" ... .... XXXXX X ... ... ...", +"........ XXXXXXX XXX ..........", +"........ XXXXXX oXXXX ..........", +"........o XXXXXXXoXXXX .........", +" ... ...oo XXXXXXXX . ... ...", +".........oo XXXXX oooo.........", +"..........oo o..............", +"..........ooooooo...............", +" ... ... ... oo. ... ... ... ...", +"................................", +"................................", +"................................", +" ... ... ... ... ... ... ... ...", +"................................", +"................................", +"................................", +" ... ... ... ... ... ... ... ...", +"................................", +"................................", +"................................", +" ... ... ... ... ... ... ... ...", +"................................", +"................................", +"................................"}; diff --git a/etc/gnus/gnus-summary-catchup-and-exit-up.xbm b/etc/gnus/gnus-summary-catchup-and-exit-up.xbm new file mode 100644 index 0000000..4adec42 --- /dev/null +++ b/etc/gnus/gnus-summary-catchup-and-exit-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x08,0x81,0x00,0x04,0x42,0x28,0x52,0x51,0x14,0x85,0x08,0x04,0x81,0x20,0x42, + 0x49,0x14,0x8a,0x08,0x20,0x41,0x21,0x52,0x15,0x14,0x44,0x00,0x40,0x41,0x91, + 0xbf,0x2a,0x14,0xda,0x10,0x80,0x81,0x94,0x90,0x2a,0x14,0x73,0xf0,0x80,0xe1, + 0x60,0x90,0x2b,0xc4,0x60,0x08,0x43,0xa2,0xf0,0x0f,0x15,0x88,0x11,0xfc,0x21, + 0xd2,0x11,0x8c,0x4a,0x80,0x12,0x84,0x00,0xd5,0x13,0x84,0x55,0x00,0x17,0x74, + 0x80,0x54,0xfb,0xcf,0x2a,0x02,0x9a,0x24,0x40,0x54,0x9f,0xbc,0x36,0xa9,0xf4, + 0x77,0x49,0x94,0x96,0x94,0xa4,0x25,0x95,0x35,0x15,0xa9,0xfe,0xbf,0xa4,0x92, + 0xdc,0x5c,0x29,0x4a,0x9e,0x3d,0x95,0xaa,0xfe,0x4f,0x52,0x24,0xf9,0xaf,0x4a, + 0xa9,0x52,0x91,0x94,0x25,0x29,0x55,0x52}; diff --git a/etc/gnus/gnus-summary-catchup-and-exit-up.xpm b/etc/gnus/gnus-summary-catchup-and-exit-up.xpm new file mode 100644 index 0000000..a5d8ba6 --- /dev/null +++ b/etc/gnus/gnus-summary-catchup-and-exit-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-catchup_xpm[] = { +"32 32 4 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ...... ", +" .. .XXXX. ", +" .X. .XXXX. ", +" ..XX...XXXXX.... ", +" ..XXXXX..XXXXX.XX... ", +" ..XXXXX..XXXX.XXXX.. ", +" .XXXX........XXXX. ", +" ..XXX.XXXXX....... ", +" ..XXX.XXXXX..XXX. ", +" .X.XX.XXXXX.XXXX. ", +" ...XX.XXXXX.XXXX. ", +" ...X.XXXXX.X... ", +" .X.........XX. ", +" . .XX.XX.XX. ", +"ooooooooo....XX.XX....oooooooooo", +"oooooooooo. ....... .oooooooooo", +"oooooooooo.X.XX.X .X.ooooooooooo", +"oooooooooo. .X . . .ooooooooooo", +"oooooooooo...........ooooooooooo", +"oooooooooo...X..XX...ooooooooooo", +"oooooooooo...X ..X...ooooooooooo", +"oooooooooo..........oooooooooooo", +"oooooooooooo.......ooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo"}; diff --git a/etc/gnus/gnus-summary-catchup-up.xbm b/etc/gnus/gnus-summary-catchup-up.xbm new file mode 100644 index 0000000..ca093e1 --- /dev/null +++ b/etc/gnus/gnus-summary-catchup-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x11,0x91,0x11,0x95,0x54,0x25,0x54,0x21,0x02,0x90,0x00,0x84,0xa0,0x0a,0x54, + 0x29,0x1b,0xb1,0x11,0x91,0x40,0x0a,0x4a,0x25,0x8a,0xa0,0x20,0x88,0x20,0x14, + 0x0e,0x22,0x9b,0x51,0xb7,0x99,0x20,0x14,0x0b,0x02,0x42,0xc1,0x22,0x28,0x14, + 0x92,0x48,0x45,0x51,0x19,0x11,0x11,0x14,0x42,0xaa,0x54,0x42,0x88,0x00,0x02, + 0x90,0x72,0xaa,0x56,0x15,0x71,0x11,0x17,0x42,0x3a,0x49,0x4b,0x28,0x49,0xa4, + 0x22,0x04,0x30,0x02,0x09,0xb1,0xdb,0x59,0xb5,0x15,0xa0,0xd3,0xff,0x40,0x05, + 0xbf,0x02,0x2a,0xd3,0x08,0x54,0x91,0x53,0x77,0x7f,0xc8,0xa9,0xd4,0x8a,0x62, + 0x22,0x86,0x35,0xc8,0x5b,0x4b,0x67,0x93,0xfd,0x91,0x39,0x24,0x18,0xff,0x7a, + 0x90,0x46,0xc5,0xcf,0x25,0x94,0x21,0xf1}; diff --git a/etc/gnus/gnus-summary-catchup-up.xpm b/etc/gnus/gnus-summary-catchup-up.xpm new file mode 100644 index 0000000..9de9baf --- /dev/null +++ b/etc/gnus/gnus-summary-catchup-up.xpm @@ -0,0 +1,37 @@ +/* XPM */ +static char * icon-catchup2_xpm[] = { +"32 32 2 1", +" c #000000000000", +". c #BFBFBFBFBFBF s backgroundToolBarColor", +" ... ... ... ... ... ... ... ...", +"................................", +"................................", +"................................", +" ... ... ... ... ... ... ... ...", +"................................", +"................................", +"................. .............", +" ... ... ... ... . ... ... ...", +"................ ..............", +"............... ................", +"................................", +" ... ... ... ... ... ... ... ...", +"................................", +"................................", +"............. .......... .....", +" ... ... ... . ... ... . ...", +"............ .......... ......", +"........... ........... ........", +"............ .......... .......", +" ... ... ... . . ... ... ... ...", +"............... ..... ", +"................ ... ......", +"........ ..... ... ...... .....", +" ... .. .. . . . . .. . .", +"....... .... .... ... .. . ... ", +"...... ...... ... ..... ... ...", +"...... .. .... ...... .. ..", +" ... ... . ... .. .. ..", +"........... .... . .... .", +".......... ..... ..... .. .", +".......... ..... ....... ... "}; diff --git a/etc/gnus/gnus-summary-exit-up.xbm b/etc/gnus/gnus-summary-exit-up.xbm new file mode 100644 index 0000000..4d55755 --- /dev/null +++ b/etc/gnus/gnus-summary-exit-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x19,0x51,0x91,0x11,0x82,0x14,0x2a,0x48,0x28,0x42,0x40,0x25,0x82,0x10,0x15, + 0x00,0x59,0xfa,0xff,0x5b,0x12,0x4b,0xfe,0x21,0x40,0x21,0xf1,0x93,0x2a,0x0b, + 0xf8,0x05,0x91,0xb5,0xf2,0x31,0x24,0x01,0xf1,0x4b,0x12,0x54,0xfa,0x01,0x80, + 0x83,0xf0,0x55,0x5b,0x35,0xf2,0x11,0x00,0x8b,0xfe,0x4b,0x2a,0x21,0xf7,0x21, + 0x80,0x0b,0xf6,0x13,0x5b,0xb5,0xf4,0x59,0x10,0x03,0xf1,0x01,0x42,0x2b,0xf4, + 0x55,0x90,0x40,0xf3,0x03,0x13,0x1a,0xf8,0x59,0xa8,0x83,0xf2,0x11,0x02,0x2b, + 0x5c,0x43,0x50,0xe3,0xee,0x10,0x93,0xfc,0x55,0x5b,0x48,0x92,0x92,0x00,0x22, + 0x49,0x48,0xaa,0x08,0x00,0x84,0x00,0xb5,0xbb,0x31,0x5b,0x01,0x00,0x0a,0x00, + 0x54,0x25,0x51,0x55,0x01,0x48,0x04,0x00}; diff --git a/etc/gnus/gnus-summary-exit-up.xpm b/etc/gnus/gnus-summary-exit-up.xpm new file mode 100644 index 0000000..d1ab26a --- /dev/null +++ b/etc/gnus/gnus-summary-exit-up.xpm @@ -0,0 +1,37 @@ +/* XPM */ +static char * icon-exit-summary_xpm[] = { +"32 32 2 1", +" c #000000000000", +". c #BFBFBFBFBFBF s backgroundToolBarColor", +" ... ... ... ... ... ... ... ...", +"................................", +"................................", +"................................", +" ... ...... ... ...", +"........ ....... .......", +"........ ........... .......", +"........ .......... .......", +" ... ... ... ....... ... ...", +"................ ... .......", +".................... .......", +"........ .......... .......", +" ... ... ... ....... ... ...", +"........ ....... . .......", +"........ ....... . .......", +"........ ....... . .......", +" ... ... ... ....... ... ...", +"........ .......... .......", +"........ ........... .......", +"................ ... .......", +" ... ....... ....... ... ...", +"........ .......... .......", +"........ ........ . . .......", +"........ .... . . . . ........", +" ... .. .. . . . . ... ...", +"................................", +"................................", +"................................", +" ... ... ... ... ... ... ... ...", +"................................", +"................................", +"................................"}; diff --git a/etc/gnus/gnus-summary-followup-up.xbm b/etc/gnus/gnus-summary-followup-up.xbm new file mode 100644 index 0000000..c6ba686 --- /dev/null +++ b/etc/gnus/gnus-summary-followup-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x00,0x00,0x40,0x08,0xb6,0x76,0x37,0x63,0x20,0x02,0x00,0x04,0x8a,0x48,0x55, + 0x51,0x10,0x22,0x0e,0x82,0xa6,0xaa,0xa9,0x36,0x12,0x62,0x38,0x20,0xa0,0x18, + 0x96,0x4a,0x0a,0x07,0x17,0x00,0xa2,0x01,0xa3,0x76,0x6a,0x80,0x60,0x00,0x60, + 0x00,0x40,0x55,0x52,0x00,0x40,0x00,0xa6,0x00,0x80,0x6b,0x90,0xe1,0x80,0x04, + 0x24,0x9a,0x00,0x51,0x82,0x86,0x01,0x85,0xaa,0x61,0x01,0x32,0x60,0x70,0x01, + 0x42,0x1d,0x30,0x02,0x14,0x04,0x08,0x02,0x4c,0x06,0x00,0x02,0x28,0x06,0x00, + 0x04,0xac,0x08,0x00,0x08,0x0b,0x0a,0x00,0xc8,0x22,0x12,0x00,0x70,0x6a,0x1a, + 0x00,0x10,0x01,0x20,0x00,0x60,0x52,0x32,0x00,0x20,0x08,0x46,0x00,0x40,0x63, + 0x50,0x00,0x40,0x04,0x85,0x00,0x80,0x52}; diff --git a/etc/gnus/gnus-summary-followup-up.xpm b/etc/gnus/gnus-summary-followup-up.xpm new file mode 100644 index 0000000..3cee12e --- /dev/null +++ b/etc/gnus/gnus-summary-followup-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-followup_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" . . . . . . . . ", +" ", +" ", +" ... ", +" . . . . ..XX. . . . ", +" ..XXXX.. ", +" ..XXXX..X. ", +" ..XXXXX...X. ", +" . . ..XXXXXXX..XXX. . . ", +" ..XXXXXXXX.XXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" . . .XXXXXXXXXXXXXXX. . . ", +" .XXXX...XXXXXXX. ", +" .X..XX.XXXXXXXX. ", +" ..XXXX..XXXXXXX. ", +" . ..XXXX..X.XXXXXXXX. . ", +" ..XXXXX...X.XXXXXXXX. ", +" ..XXXXXXX..XXX.XXXXXXXX. ", +" .XXXXXXXX.XXXXX.XXXXXXXX. ", +" ..XXXXXXXXXXXXXX.XXXXXXXXX. . ", +" .XXXXXXXXXXXXXXX.XXXXXXX.. ", +" .XXXXXXXXXXXXXXX.XXXX.. ", +" .XXXXXXXXXXXXXXX.XX.. ", +" . .XXXXXXXXXXXXXXX.. . . ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" . .XXXXXXXXXXXXXXX. . . ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. "}; diff --git a/etc/gnus/gnus-summary-followup-with-original-up.xbm b/etc/gnus/gnus-summary-followup-with-original-up.xbm new file mode 100644 index 0000000..a0e6dfe --- /dev/null +++ b/etc/gnus/gnus-summary-followup-with-original-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x04,0x40,0x10,0x00,0xa3,0x36,0xa6,0x76,0x54,0x40,0x11,0x02,0x01,0x2a,0x88, + 0x48,0x54,0x81,0x22,0x22,0x22,0x6a,0xaa,0x2a,0x4a,0x02,0x21,0xa0,0x90,0x50, + 0x8e,0x0a,0x02,0x0a,0x27,0x50,0xb2,0xa2,0xab,0x26,0x42,0xaa,0x00,0x92,0x94, + 0x00,0xaa,0x20,0x00,0xaa,0x00,0x85,0xb6,0x22,0x76,0x32,0x20,0xea,0x80,0x44, + 0x8a,0x98,0x2a,0x11,0x10,0x87,0x00,0x44,0xa6,0x71,0x6b,0x33,0x60,0xcc,0x22, + 0x44,0x1d,0xe3,0x0a,0x11,0xc8,0xe0,0x24,0x44,0x3e,0x90,0x6c,0x2b,0x08,0x00, + 0x09,0xa0,0x06,0x00,0x49,0x0a,0x04,0x00,0x92,0x50,0x0b,0x00,0x32,0x26,0x0c, + 0x00,0xa4,0x90,0x11,0x00,0x24,0x24,0x14,0x00,0xc8,0x82,0x22,0x00,0x48,0x32, + 0x2a,0x00,0x90,0x42,0x50,0x00,0x90,0x28}; diff --git a/etc/gnus/gnus-summary-followup-with-original-up.xpm b/etc/gnus/gnus-summary-followup-with-original-up.xpm new file mode 100644 index 0000000..baffb6b --- /dev/null +++ b/etc/gnus/gnus-summary-followup-with-original-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-followup-w-orig_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" . . . . . . . . ", +" ", +" ", +" ", +" . . . . . . . . ", +" ", +" .. ", +" ... ", +" . . . . .. . . . ", +" . ", +" ", +" ", +" . . . . . . . . ", +" .. ", +" ..XX. ", +" ..XXXX. ", +" . ..XXX...X. . . . ", +" ..XXX..XX..X. ", +" ..XXX..XXX...X. ", +" .XX..XXXXX...XX. ", +" . ...XXXXXX.XX.XX. . . . ", +" .XXXXXXXXXXXX.XX. ", +" .XXXXXXXXXXXXX.XX. ", +" .XXXXXXXXXXXXXX.XX. ", +" . .XXXXXXXXXXXXX.XX. . . ", +" .XXXXXXXXXXXXXX.XX. ", +" .XXXXXXXXXXXXX.XX. ", +" .XXXXXXXXXXXXXX.XX. ", +" . .XXXXXXXXXXXXX.XX. . . ", +" .XXXXXXXXXXXXXX.XX. ", +" .XXXXXXXXXXXXX.XX. "}; diff --git a/etc/gnus/gnus-summary-mail-copy-up.xbm b/etc/gnus/gnus-summary-mail-copy-up.xbm new file mode 100644 index 0000000..a1eea6b --- /dev/null +++ b/etc/gnus/gnus-summary-mail-copy-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x00,0x20,0x20,0x40,0xaa,0x8a,0x0a,0x15,0xfe,0xff,0xff,0x27,0x0e,0x00,0x80, + 0x4d,0x32,0x00,0x60,0x04,0xc2,0x00,0x18,0x54,0x02,0x03,0x06,0x04,0x03,0x8c, + 0x01,0x54,0x02,0x74,0x02,0x04,0x02,0x03,0x0c,0x54,0x82,0x00,0x10,0x84,0xf2, + 0xff,0xff,0x3f,0x52,0x00,0x00,0x6c,0x9b,0x01,0x00,0x23,0x16,0x06,0xc0,0x60, + 0x1e,0x18,0x30,0x20,0x14,0x60,0x0c,0xa0,0x11,0xa0,0x0b,0x20,0x14,0x10,0x30, + 0x60,0x11,0x0c,0x40,0x20,0x14,0x02,0x80,0xa0,0x12,0x01,0x00,0x23,0xd8,0x00, + 0x00,0x64,0x32,0x00,0x00,0x38,0xf8,0xff,0xff,0xbf,0x02,0x00,0x40,0x24,0x54, + 0x55,0x15,0x11,0x01,0x00,0x40,0x44,0x54,0x55,0x15,0x11,0x01,0x00,0x40,0x44, + 0x54,0x55,0x05,0x11,0x02,0x00,0x50,0x44}; diff --git a/etc/gnus/gnus-summary-mail-copy-up.xpm b/etc/gnus/gnus-summary-mail-copy-up.xpm new file mode 100644 index 0000000..e73e6d5 --- /dev/null +++ b/etc/gnus/gnus-summary-mail-copy-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-mail-copy_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" ", +" .......................... ", +" ...XXXXXXXXXXXXXXXXXXX..X. ", +" .XX..XXXXXXXXXXXXXXX..XXX. ", +" .XXXX..XXXXXXXXXXX..XXXXX. ", +" .XXXXXX..XXXXXXX..XXXXXXX. ", +" .XXXXXXXX..XXX..XXXXXXXXX. ", +" .XXXXXXXX.X...XX.XXXXXXXX. ", +" .XXXXXX..XXXXXXXX..XXXXXX. ", +" .XXXXX.XXXXXXXXXXXX.XXXXX. ", +" .XX.......................... ", +" .XX.X.XXXXXXXXXXXXXXXXXXX..X. ", +" .X..XX..XXXXXXXXXXXXXXX..XXX. ", +" ..X.XXXX..XXXXXXXXXXX..XXXXX. ", +" ....XXXXXX..XXXXXXX..XXXXXXX. ", +" .XXXXXXXX..XXX..XXXXXXXXX. ", +" .XXXXXXXX.X...X.XXXXXXXXX. ", +" .XXXXXXX.XXXXXXX..XXXXXXX. ", +" .XXXXX..XXXXXXXXXX.XXXXXX. ", +" .XXXX.XXXXXXXXXXXXX.XXXXX. ", +" .XXX.XXXXXXXXXXXXXXX..XXX. ", +" .X..XXXXXXXXXXXXXXXXXX.XX. ", +" ..XXXXXXXXXXXXXXXXXXXXX... ", +" .......................... ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/etc/gnus/gnus-summary-mail-delete-up.xbm b/etc/gnus/gnus-summary-mail-delete-up.xbm new file mode 100644 index 0000000..9d1c637 --- /dev/null +++ b/etc/gnus/gnus-summary-mail-delete-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x08,0x00,0x80,0x00,0xa2,0xaa,0x2a,0x54,0x08,0x00,0x40,0x81,0xf2,0xab,0x2a, + 0x28,0x5c,0x03,0x80,0x82,0x2d,0x56,0xf5,0x28,0x84,0x06,0x98,0x8b,0x5d,0x5e, + 0xe7,0x2c,0x1c,0x1f,0x1f,0xba,0xf1,0xf3,0xa7,0xc9,0x44,0xa8,0x90,0x88,0xf1, + 0xf3,0x8b,0x08,0x1c,0x5f,0x7f,0x09,0xad,0x1e,0xff,0x08,0x04,0x46,0x08,0x04, + 0xae,0x26,0x06,0x04,0x18,0x8b,0x02,0x06,0xfa,0x23,0xc1,0x01,0x20,0x88,0x38, + 0x00,0x95,0x62,0x07,0x80,0x40,0xe4,0x00,0x40,0x14,0xd1,0x00,0x20,0x42,0x44, + 0x03,0x60,0x10,0x11,0x05,0x10,0x4a,0x44,0x1c,0xa8,0x00,0x11,0x61,0x0c,0x2a, + 0x42,0xa4,0x25,0x81,0x14,0x09,0x42,0x14,0x20,0x50,0x15,0xa1,0x4a,0x05,0x40, + 0x04,0x00,0xa8,0x0a,0x51,0x55,0x05,0x50}; diff --git a/etc/gnus/gnus-summary-mail-delete-up.xpm b/etc/gnus/gnus-summary-mail-delete-up.xpm new file mode 100644 index 0000000..932d8f2 --- /dev/null +++ b/etc/gnus/gnus-summary-mail-delete-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-mail-delete_xpm[] = { +"32 32 4 1", +" c #BEBEBEBEBEBE s backgroundToolBarColor", +"X c #000000000000", +"o c #E7E7E7E7E7E7", +"O c #FFFFFFFFFFFF", +" ", +" ", +" ", +" XXXXX ", +" XX XX ", +" XX XX XXX ", +" X X XXooXX X ", +" XX XXX XXooXX XX ", +" XX XXXXX XXXXX XOXXX ", +" XXXXX XXXXXX XOOXOOXX", +" XOX XOOOXOOOX", +" XXXXX XXXXXX XOOOXOOOO", +" XX XXXXX XXXXXX XOOXOOOO", +" XX XXX XXXXXXXOOOXOOOO", +" X X XOOOOOOXOOOOO", +" XX XX XOOOOOOOXOOOOO", +" XX XX XOOOOOOOXXOOOOO", +" XXXXX XOOOOOXXXOOOOOOO", +" XOOOXXXOOOOOOOOOO", +" XOXXXOOOOOOOOOOOOX", +" XXXOOOOOOOOOOOOOOX ", +" XXOOOOOOOOOOOOOX ", +" XXOOOOOOOOOOOX ", +" XOOOOOOOOOX ", +" XXOOOOOOX ", +" XXOOOX ", +" XXOX ", +" X ", +" ", +" ", +" ", +" "}; diff --git a/etc/gnus/gnus-summary-mail-forward-up.xbm b/etc/gnus/gnus-summary-mail-forward-up.xbm new file mode 100644 index 0000000..1b66f5b --- /dev/null +++ b/etc/gnus/gnus-summary-mail-forward-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x10,0x42,0x80,0x20,0x84,0x10,0x2a,0x14,0x3a,0xa5,0x40,0x41,0x64,0x08,0x14, + 0x28,0xd6,0xa0,0x62,0x85,0x80,0x15,0xe8,0x20,0xca,0x41,0x39,0x8b,0xb0,0x2a, + 0x24,0x22,0xd2,0x86,0x12,0x86,0x58,0x24,0x11,0x2c,0xd2,0x8c,0x08,0x98,0x34, + 0x75,0x08,0x10,0x30,0x14,0x08,0x60,0x8a,0x0e,0x04,0x20,0x10,0x05,0xfc,0x7f, + 0x45,0x02,0x02,0x60,0x10,0x01,0x03,0x18,0xca,0xe0,0x01,0x44,0x20,0x3e,0x00, + 0x0a,0xf4,0x21,0x00,0x53,0x32,0x20,0x80,0x80,0x10,0x10,0x40,0x2a,0x2a,0x10, + 0xb0,0x80,0x60,0x10,0x28,0x2a,0xea,0x10,0x84,0x40,0x81,0x10,0x2a,0x14,0x94, + 0x11,0x41,0x21,0x21,0xca,0x2a,0x48,0x84,0xac,0x80,0x02,0x21,0x3d,0x54,0x50, + 0x14,0x84,0x00,0x05,0x42,0x21,0xaa,0x50}; diff --git a/etc/gnus/gnus-summary-mail-forward-up.xpm b/etc/gnus/gnus-summary-mail-forward-up.xpm new file mode 100644 index 0000000..19db803 --- /dev/null +++ b/etc/gnus/gnus-summary-mail-forward-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-mail-forward_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" ", +" ... ", +" . . ", +" . . . ", +" . ... ", +" ... ...XX. ", +" . . . .XX.XXX. ", +" . . . .XX.XXXX.. ", +" . . . .XXX.XXXXX.. ", +" . . . .XXX.XXXXXXX. ", +" .. . ..XXXX.XXXXXXXX. ", +" . . .XXXXXX.XXXXXXXXX. ", +" . .XXXXXX.XXXXXXXXXX. ", +" .XXXXXXX............. ", +" .XXXXXXX.XXXXXXXXXXX. ", +" .XXXXXXX..XXXXXXXXX.. ", +" ..XXXXX....XXXXXXXXX. ", +" .XXX.....XXXXXXXXXXX. ", +" ....XXXX.XXXXXXXXXX. ", +" ..XXXXXXX.XXXXXXXXX. ", +" .XXXXXXX.XXXXXXXXX. ", +" .XXXXXX.XXXXXXX.. ", +" ..XXXXX.XXXXXX. ", +" ..XXXX.XXXXX. ", +" .XXXX.XXXX. ", +" .XXX.XXX. ", +" .X.XX.. ", +" ..X. ", +" ... ", +" ", +" "}; diff --git a/etc/gnus/gnus-summary-mail-get-up.xbm b/etc/gnus/gnus-summary-mail-get-up.xbm new file mode 100644 index 0000000..0d0e212 --- /dev/null +++ b/etc/gnus/gnus-summary-mail-get-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x48,0x00,0x11,0x02,0x12,0x54,0x84,0x50,0x40,0x81,0x50,0x82,0x2a,0x28,0x0a, + 0x28,0x80,0x42,0xa0,0x82,0xaa,0x13,0x3d,0x28,0x40,0x46,0xd4,0x42,0xb5,0x28, + 0x86,0x10,0x50,0xda,0x51,0x47,0x99,0xb0,0x09,0x13,0x14,0x50,0x01,0x45,0x21, + 0x18,0x82,0x21,0x74,0x4c,0xc7,0x94,0x81,0x13,0x78,0x02,0x94,0x44,0x05,0x29, + 0xf1,0xff,0xff,0x7f,0x74,0x00,0x00,0x2c,0x91,0x01,0x00,0x23,0x14,0x06,0xc0, + 0xa0,0x11,0x18,0x30,0x20,0x14,0x60,0x0c,0x60,0x12,0x90,0x0b,0x20,0x18,0x0c, + 0x30,0xa0,0x12,0x02,0x40,0x20,0x18,0x01,0x80,0xa0,0xd2,0x00,0x00,0x23,0x38, + 0x00,0x00,0x64,0x12,0x00,0x00,0x38,0xf8,0xff,0xff,0xbf,0x02,0x00,0x00,0x20, + 0xa8,0xaa,0xaa,0x8a,0x05,0x00,0x40,0x20}; diff --git a/etc/gnus/gnus-summary-mail-get-up.xpm b/etc/gnus/gnus-summary-mail-get-up.xpm new file mode 100644 index 0000000..ffdb84c --- /dev/null +++ b/etc/gnus/gnus-summary-mail-get-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-mail-get_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" ", +" ", +" ", +" ", +" ... ... ", +" . . . . ", +" . . . . ", +" . . . . .. ", +" . .. .. .. ", +" .XXXXXXX. .XXXXXXX. ", +" .XXXXX. .XXXXX. ", +" ..XXX.. ..XXX.. ", +" ... ... ", +" ", +" .......................... ", +" ...XXXXXXXXXXXXXXXXXXX..X. ", +" .XX..XXXXXXXXXXXXXXX..XXX. ", +" .XXXX..XXXXXXXXXXX..XXXXX. ", +" .XXXXXX..XXXXXXX..XXXXXXX. ", +" .XXXXXXXX..XXX..XXXXXXXXX. ", +" .XXXXXXX.XX...X.XXXXXXXXX. ", +" .XXXXX..XXXXXXXX..XXXXXXX. ", +" .XXXX.XXXXXXXXXXXX.XXXXXX. ", +" .XXX.XXXXXXXXXXXXXX.XXXXX. ", +" .X..XXXXXXXXXXXXXXXX..XXX. ", +" ..XXXXXXXXXXXXXXXXXXXX.XX. ", +" .XXXXXXXXXXXXXXXXXXXXXX... ", +" .......................... ", +" ", +" ", +" "}; diff --git a/etc/gnus/gnus-summary-mail-originate-up.xbm b/etc/gnus/gnus-summary-mail-originate-up.xbm new file mode 100644 index 0000000..6d25e12 --- /dev/null +++ b/etc/gnus/gnus-summary-mail-originate-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x04,0x42,0x08,0x10,0xa1,0x10,0x42,0x05,0x14,0xa2,0xff,0xaf,0x01,0x89,0x00, + 0x14,0x54,0xa4,0x00,0x64,0x02,0xc1,0x00,0x3c,0xf8,0xff,0x1f,0xa0,0x6d,0x10, + 0x68,0x20,0xf8,0xff,0x1f,0x60,0x12,0x84,0x00,0x20,0x48,0xd1,0x00,0xa0,0x02, + 0x88,0xfc,0x21,0xfc,0xff,0x00,0x60,0x1e,0x80,0x6c,0x21,0x64,0x80,0x00,0xa0, + 0x86,0x81,0x00,0x20,0x04,0x86,0x00,0x60,0x05,0x98,0x00,0x20,0x04,0xe4,0x00, + 0xa0,0x06,0x83,0x80,0x25,0x84,0x80,0x00,0x60,0x46,0x80,0x00,0x20,0x34,0x80, + 0x00,0xa0,0x0d,0x80,0xff,0x3f,0x04,0x00,0x00,0x2e,0xfe,0xff,0xff,0x4f,0x48, + 0x92,0x44,0x12,0x92,0x08,0x11,0x44,0x00,0x21,0x44,0x11,0x55,0x48,0x21,0x44, + 0x80,0x02,0x8a,0x10,0x2a,0xa8,0x40,0x44}; diff --git a/etc/gnus/gnus-summary-mail-originate-up.xpm b/etc/gnus/gnus-summary-mail-originate-up.xpm new file mode 100644 index 0000000..8ba8bc2 --- /dev/null +++ b/etc/gnus/gnus-summary-mail-originate-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-mail-originate_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" ", +" ............. ", +" .XXXXXXXXXX.X. ", +" .XXXXXXXXXX.XX. ", +" .XXXXXXXXXX.... ", +" ..................XXXXXXXX. ", +" .X. X X X X X X .X..XXXXXX. ", +" ..................XXXXXXXX. ", +" .XXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXX. ", +" .XX.......XXXX. ", +" ..............XXXXXXXXXXXXX. ", +" ...XXXXXXXXXX.XX..X..X.XXXX. ", +" .XX..XXXXXXXX.XXXXXXXXXXXXX. ", +" .XXXX..XXXXXX.XXXXXXXXXXXXX. ", +" .XXXXXX..XXXX.XXXXXXXXXXXXX. ", +" .XXXXXXXX..XX.XXXXXXXXXXXXX. ", +" .XXXXXXX.XX...XXXXXXXXXXXXX. ", +" .XXXXX..XXXXX.XXXXXXX..X.XX. ", +" .XXXX.XXXXXXX.XXXXXXXXXXXXX. ", +" .XXX.XXXXXXXX.XXXXXXXXXXXXX. ", +" .X..XXXXXXXXX.XXXXXXXXXXXXX. ", +" ..XXXXXXXXXXX............... ", +" .XXXXXXXXXXXXXXXXXXXXXX... ", +" .......................... ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/etc/gnus/gnus-summary-mail-reply-up.xbm b/etc/gnus/gnus-summary-mail-reply-up.xbm new file mode 100644 index 0000000..e16ec66 --- /dev/null +++ b/etc/gnus/gnus-summary-mail-reply-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x00,0x40,0x40,0x20,0xaa,0x2a,0x7a,0x0a,0x00,0x80,0x88,0x51,0xaa,0x2a,0x06, + 0x06,0x00,0xc0,0x05,0x58,0xaa,0x3a,0x12,0x08,0x00,0x0c,0x11,0x2c,0xaa,0x03, + 0x09,0x42,0xc0,0x80,0x04,0x06,0x35,0x40,0x04,0x57,0x98,0x49,0x80,0x18,0x3a, + 0x20,0x41,0x56,0xc8,0x10,0xc1,0x11,0x0c,0x93,0x60,0x50,0x0a,0x1c,0x18,0x90, + 0x08,0x30,0x06,0x30,0x0a,0xc8,0x05,0x90,0x08,0x06,0x18,0x30,0x0a,0x01,0x20, + 0x10,0x88,0x00,0x40,0x50,0x6a,0x00,0x80,0x11,0x19,0x00,0x00,0x52,0x0c,0x00, + 0x00,0x1c,0xf9,0xff,0xff,0x5f,0x44,0x44,0x44,0x24,0x11,0x11,0x11,0x09,0x44, + 0x44,0x44,0xa0,0x11,0x11,0x11,0x15,0x44,0x44,0x44,0x40,0x11,0x11,0x91,0x14, + 0x44,0x44,0x04,0xa2,0x11,0x22,0xa2,0x08}; diff --git a/etc/gnus/gnus-summary-mail-reply-up.xpm b/etc/gnus/gnus-summary-mail-reply-up.xpm new file mode 100644 index 0000000..20fe672 --- /dev/null +++ b/etc/gnus/gnus-summary-mail-reply-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-mail-reply_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" ... ", +" .XXX.. ", +" .XXXXXX.. ", +" ... .XXXXXXXX. ", +" ..XXX.XX.XXXXXX. ", +" ..XXXX.XXX.XXXXX. ", +" ..XXXXXX.XX.XXXXX. ", +" ..XXXXXXX.XX.XXXXXX. ", +" .XXXXXXXX.XXX.XXXXX... ", +" ..XX..XX.XX.XXXXXXXX.XXX.. ", +" ...XXXXXXX.XX.XXXXX.XX..X. ", +" .XX..XXXX.XXX.XXXXX...XXX. ", +" .XXXX..XX.XX.XXXXX..XXXXX. ", +" .XXXXXX...XXXXXX..XXXXXXX. ", +" .XXXXXXXX..XXX..XXXXXXXXX. ", +" .XXXXXXX.XX...X.XXXXXXXXX. ", +" .XXXXX..XXXXXXXX..XXXXXXX. ", +" .XXXX.XXXXXXXXXXXX.XXXXXX. ", +" .XXX.XXXXXXXXXXXXXX.XXXXX. ", +" .X..XXXXXXXXXXXXXXXX..XXX. ", +" ..XXXXXXXXXXXXXXXXXXXX.XX. ", +" .XXXXXXXXXXXXXXXXXXXXXX... ", +" .......................... ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/etc/gnus/gnus-summary-mail-save-up.xbm b/etc/gnus/gnus-summary-mail-save-up.xbm new file mode 100644 index 0000000..0601dfb --- /dev/null +++ b/etc/gnus/gnus-summary-mail-save-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x00,0x10,0x10,0x00,0x55,0x45,0x45,0x55,0x00,0x10,0x08,0x00,0xd4,0xff,0xff, + 0x7f,0x82,0x03,0x00,0xf0,0xd0,0x0c,0x00,0x4c,0x82,0x30,0x00,0x43,0xd4,0xc0, + 0xc0,0x40,0x80,0x80,0x33,0xc0,0xaa,0x60,0xcc,0x40,0xc0,0x10,0x00,0x41,0x95, + 0x08,0x00,0x46,0xc0,0x06,0x00,0xd8,0xfe,0xff,0x0f,0x60,0x2c,0x00,0x0b,0x40, + 0x35,0x10,0xfd,0x7f,0x2c,0x02,0x2b,0x49,0x35,0x40,0x4d,0x12,0xac,0x00,0x0b, + 0xa0,0x35,0x00,0xad,0x0a,0x2c,0x24,0x09,0x90,0x2d,0x00,0x5d,0x25,0xf4,0xff, + 0x0b,0x80,0xa6,0x55,0xad,0x2a,0x4c,0xaa,0x08,0x40,0xf5,0xff,0x5d,0x15,0x6c, + 0x35,0x0b,0x20,0x66,0x37,0xab,0x4a,0x6c,0x2d,0x0d,0x00,0xb9,0x35,0x4b,0x55, + 0xf4,0xff,0x1f,0x80,0x01,0x40,0x80,0x2a}; diff --git a/etc/gnus/gnus-summary-mail-save-up.xpm b/etc/gnus/gnus-summary-mail-save-up.xpm new file mode 100644 index 0000000..fd4824b --- /dev/null +++ b/etc/gnus/gnus-summary-mail-save-up.xpm @@ -0,0 +1,41 @@ +/* XPM */ +static char * icon-save-mail_xpm[] = { +"32 32 6 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +"O c #E5E5E5E5E5E5", +"+ c #666666666666", +" ", +" ", +" ", +" ........................ ", +" ...XXXXXXXXXXXXXXXXXX... ", +" .XX..XXXXXXXXXXXXXX..XX. ", +" .XXXX..XXXXXXXXXX..XXXX. ", +" .XXXXXX..XXXXXX..XXXXXX. ", +" .XXXXXXX...XX..XXXXXXXX. ", +" .XXXXX..XXX..XX..XXXXXX. ", +" .XXXX.XXXXXXXXXXX.XXXXX. ", +" .XXX.XXXXXXXXXXXXX..XXX. ", +" .X..XXXXXXXXXXXXXXXX..X. ", +" ..................XXXXXXXXX.. ", +" .oo.OOOOOOOOOO.oo.XXXXXXXXXX. ", +" .oo.OOOOOOOOOO.oo............ ", +" .oo.OOOOOOOOOO.oo. ", +" .oo.OOOOOOOOOO.oo. ", +" .oo.OOOOOOOOOO.oo. ", +" .oo.OOOOOOOOOO.oo. ", +" .oo.OOOOOOOOOO.oo. ", +" .oo.OOOOOOOOOO.oo. ", +" .oo............oo. ", +" .oooooooooooooooo. ", +" .oooooooooooooooo. ", +" .oo............oo. ", +" .oo.+++++++.OO.oo. ", +" .oo.+++++++.OO.oo. ", +" .oo.+++++++.OO.oo. ", +" .o.+++++++.OO.oo. ", +" ................ ", +" "}; diff --git a/etc/gnus/gnus-summary-next-unread-up.xbm b/etc/gnus/gnus-summary-next-unread-up.xbm new file mode 100644 index 0000000..a6c17a9 --- /dev/null +++ b/etc/gnus/gnus-summary-next-unread-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x08,0x10,0x20,0x00,0xa3,0x66,0xab,0x76,0x14,0x11,0x04,0x02,0x41,0x04,0xa1, + 0x48,0x14,0x51,0x1e,0x22,0x62,0xa6,0xa9,0x2a,0x0a,0x71,0x18,0xa0,0x40,0x18, + 0xb6,0x0a,0x8a,0x06,0x17,0x50,0xb2,0x01,0x63,0x27,0x62,0x80,0x20,0x90,0x50, + 0x00,0x40,0x25,0x4a,0x00,0x40,0x80,0xe2,0x00,0x80,0x36,0x12,0xe1,0x80,0x41, + 0x84,0x9a,0x00,0x29,0x10,0x87,0x01,0x85,0xa6,0x61,0x01,0x32,0x62,0x70,0x01, + 0x42,0x18,0x30,0x02,0x14,0x06,0x08,0x02,0x4c,0x06,0x00,0x02,0x28,0x04,0x00, + 0x04,0xac,0xca,0x07,0x7c,0x0b,0x68,0x0d,0xea,0x20,0x1b,0x12,0x93,0x6b,0xb4, + 0x54,0x29,0x03,0x91,0xba,0x95,0x51,0x74,0x19,0x53,0x0b,0x6a,0x0a,0xd6,0x62, + 0xe0,0x07,0x7c,0x09,0x8a,0x00,0x80,0x42}; diff --git a/etc/gnus/gnus-summary-next-unread-up.xpm b/etc/gnus/gnus-summary-next-unread-up.xpm new file mode 100644 index 0000000..e525816 --- /dev/null +++ b/etc/gnus/gnus-summary-next-unread-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-next-unread_xpm[] = { +"32 32 4 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +" ", +" . . . . . . . . ", +" ", +" ", +" ... ", +" . . . . ..XX. . . . ", +" ..XXXX.. ", +" ..XXXX..X. ", +" ..XXXXX...X. ", +" . . ..XXXXXXX..XXX. . . ", +" ..XXXXXXXX.XXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" . . .XXXXXXXXXXXXXXX. . . ", +" .XXXX...XXXXXXX. ", +" .X..XX.XXXXXXXX. ", +" ..XXXX..XXXXXXX. ", +" . ..XXXX..X.XXXXXXXX. . ", +" ..XXXXX...X.XXXXXXXX. ", +" ..XXXXXXX..XXX.XXXXXXXX. ", +" .XXXXXXXX.XXXXX.XXXXXXXX. ", +" ..XXXXXXXXXXXXXX.XXXXXXXXX. . ", +" .XXXXXXXXXXXXXXX.XXXXXXX.. ", +" .XX.....XXXXXXX.....X.. ", +" .X.ooooo.XXXXX.oooo.. ", +" . .oXooooo.XXX.oXooooo.. . ", +" .ooooooo.X.X.ooooooo. ", +" .ooooooo..X..ooooooo. ", +" ..oooooo.XXX.ooooooo. ", +" . ..oooo.XXXXX.oooo.. . . ", +" .....XXXXXXX..... ", +" .XXXXXXXXXXXXXXX. "}; diff --git a/etc/gnus/gnus-summary-post-news-up.xbm b/etc/gnus/gnus-summary-post-news-up.xbm new file mode 100644 index 0000000..8eb4c33 --- /dev/null +++ b/etc/gnus/gnus-summary-post-news-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x00,0x10,0x10,0x01,0x6b,0xa7,0x66,0x72,0x04,0x10,0x02,0x05,0xa1,0x8a,0x50, + 0x48,0x04,0x20,0x8f,0x20,0x72,0xab,0x39,0x2b,0x02,0x64,0x58,0xa4,0x50,0x19, + 0x16,0x01,0x0a,0x06,0x57,0x54,0xe2,0x01,0x23,0x23,0x72,0x80,0x20,0x94,0x44, + 0x00,0x40,0x01,0x50,0x00,0xc0,0x54,0xa6,0x00,0x80,0x22,0x92,0x00,0x80,0x4a, + 0x40,0x01,0x00,0x11,0x8a,0x01,0x00,0x45,0x32,0x02,0x00,0x2a,0x42,0x02,0x00, + 0xa2,0x10,0x05,0x00,0x0c,0x4a,0x06,0x00,0x24,0x22,0x0a,0x00,0x68,0xaa,0x0c, + 0x00,0x0c,0x00,0x11,0x80,0x53,0x2a,0x14,0x40,0x05,0x22,0x23,0x70,0x62,0x92, + 0x34,0x0e,0x09,0x24,0xc0,0x4b,0x52,0x80,0x0a,0x21,0x80,0x6b,0x62,0xaa,0x36, + 0x04,0x15,0x01,0x42,0x51,0x80,0xa8,0x28}; diff --git a/etc/gnus/gnus-summary-post-news-up.xpm b/etc/gnus/gnus-summary-post-news-up.xpm new file mode 100644 index 0000000..46be7c1 --- /dev/null +++ b/etc/gnus/gnus-summary-post-news-up.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * icon-post_xpm[] = { +"32 32 3 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +" ", +" . . . . . . . . ", +" ", +" ", +" ... ", +" . . . . ..XX. . . . ", +" ..XXXX.. ", +" ..XXXX..X. ", +" ..XXXXX...X. ", +" . . ..XXXXXXX..XXX. . . ", +" ..XXXXXXXX.XXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" . . .XXXXXXXXXXXXXXX. . . ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" . . .XXXXXXXXXXXXXXX. . ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" . . . .XXXXXXXXXXXXXXX. . ", +" .XXXXXXXXXXXXXX.. ", +" .XXXXXXXXXX... ", +" .XXXXXXXXX. ", +" . . . .XXXXXX.. . . ", +" .XXX... ", +" .... ", +" ", +" . . . . . . . . ", +" ", +" "}; diff --git a/etc/gnus/gnus-summary-prev-unread-up.xbm b/etc/gnus/gnus-summary-prev-unread-up.xbm new file mode 100644 index 0000000..6cf240e --- /dev/null +++ b/etc/gnus/gnus-summary-prev-unread-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x08,0x08,0x40,0x20,0x23,0x63,0x2b,0x2b,0x54,0x14,0x24,0xa4,0x01,0x02,0x09, + 0x01,0x54,0xa9,0x2e,0x2a,0x22,0xa2,0xa9,0x62,0x4a,0x6a,0x18,0x12,0x90,0x18, + 0xb6,0x04,0x02,0x06,0x17,0x50,0xea,0x01,0x63,0x2b,0x64,0x80,0x20,0x44,0x51, + 0x00,0x40,0x21,0x44,0x00,0x40,0x8a,0xe2,0x00,0xc0,0x22,0x0a,0xe1,0xc0,0x2f, + 0xd0,0x9f,0x20,0x4d,0x42,0x87,0xb1,0x1a,0xea,0x61,0x15,0x72,0x60,0x70,0xbb, + 0x14,0x1d,0x30,0xb1,0x5a,0x04,0x08,0x22,0x0d,0x06,0x00,0xc2,0x6f,0x06,0x00, + 0x84,0x20,0x08,0x00,0x64,0x0a,0x0a,0x00,0x58,0x50,0x12,0x00,0x10,0x27,0x1a, + 0x00,0x50,0x90,0x20,0x00,0xa0,0x24,0x32,0x00,0x20,0x82,0x26,0x00,0xc0,0x32, + 0x40,0x00,0x40,0x44,0xaa,0x00,0x80,0x11}; diff --git a/etc/gnus/gnus-summary-prev-unread-up.xpm b/etc/gnus/gnus-summary-prev-unread-up.xpm new file mode 100644 index 0000000..b2088fb --- /dev/null +++ b/etc/gnus/gnus-summary-prev-unread-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-prev-unread_xpm[] = { +"32 32 4 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +" ", +" . . . . . . . . ", +" ", +" ", +" ... ", +" . . . . ..XX. . . . ", +" ..XXXX.. ", +" ..XXXX..X. ", +" ..XXXXX...X. ", +" . . ..XXXXXXX..XXX. . . ", +" ..XXXXXXXX.XXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" . . .XXXXXXXXXXXXXX. . . ", +" .XXXX...XXXXXX..... ", +" ...o..XX.XXXXX.oooo.. ", +" .oo..XXXX..XXX.oXooooo. ", +" . .o..XXXX..X.X.X.ooooooo.. ", +" ..XXXXX...X..X..ooooooo. ", +" ..XXXXXXX..XX.XXX.ooooooo. ", +" .XXXXXXXX.XXXXX.XXX.oooo.. ", +" ..XXXXXXXXXXXXXX.XXXX..... . ", +" .XXXXXXXXXXXXXXX.XXXX. ", +" .XXXXXXXXXXXXXX.XX.. ", +" .XXXXXXXXXXXXXXX.. ", +" . .XXXXXXXXXXXXXXX. . . ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. ", +" . .XXXXXXXXXXXXXXXX. . . ", +" .XXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXX. "}; diff --git a/etc/gnus/gnus-summary-reply-up.xbm b/etc/gnus/gnus-summary-reply-up.xbm new file mode 100644 index 0000000..61dad9a --- /dev/null +++ b/etc/gnus/gnus-summary-reply-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x10,0x00,0x11,0x88,0x45,0x55,0x84,0x22,0x08,0x80,0x10,0x88,0x42,0x55,0xa4, + 0x22,0x28,0x00,0x01,0x84,0x05,0x55,0x5a,0x21,0x50,0x00,0x35,0x8a,0x09,0xf5, + 0xc2,0x20,0x24,0x18,0x81,0x85,0x01,0x87,0x00,0x2a,0xd4,0x41,0x00,0x43,0x61, + 0x40,0x80,0x17,0x1c,0x20,0x80,0x58,0xb5,0x1a,0xc0,0x3f,0x0c,0x08,0x60,0xb0, + 0x75,0x08,0xb0,0x2e,0x84,0x04,0xb8,0xa1,0x06,0x03,0x4c,0x20,0x04,0x0c,0x36, + 0x60,0x06,0x10,0x0f,0x20,0x06,0x70,0x07,0x60,0x05,0xc8,0x09,0xa0,0x04,0x04, + 0x10,0xa0,0x06,0x02,0x20,0x60,0x85,0x01,0xc0,0xa0,0x44,0x00,0x00,0x61,0x25, + 0x00,0x00,0x22,0x1e,0x00,0x00,0xbc,0x0e,0x00,0x00,0x70,0xfd,0xff,0xff,0x3f, + 0x94,0x52,0x55,0x55,0x4a,0x29,0x22,0xa2}; diff --git a/etc/gnus/gnus-summary-reply-up.xpm b/etc/gnus/gnus-summary-reply-up.xpm new file mode 100644 index 0000000..255f7a1 --- /dev/null +++ b/etc/gnus/gnus-summary-reply-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-follow-up_xpm[] = { +"32 32 4 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +" ", +" ", +" ", +" ", +" ", +" . ", +" .X.. ", +" ... .XXXX. ", +" ..XXX.XXXXXX.. ", +" ..XXXX.XXXXXXXXX. ", +" ..XXXXX.XXXXXXXXX.. ", +" ..XXXXXXX.XXXXXXXX.... ", +" ..XXXXXXXX.XXXXXXXXX.oXX.. ", +" .X..X.X.X..XXXXXXXXX..o...o. ", +" ..XXXXXXX.XXXXXXXXX..ooXXX.. ", +" .X...XXXX.XXXXXXXX..ooX...X. ", +" .XXXX.XX.XXXXXXXX..oX..XXXX. ", +" .XXXXX..XXXXXXXX..oX.XXXXXX. ", +" .XXXXXXX..XXXXX..X..XXXXXXX. ", +"oo.XXXXXXXXX.XXX....XXXXXXXXX.oo", +"oo.XXXXXXXXX...X...XXXXXXXXXX.oo", +"oo.XXXXXXXX.XX...XX.XXXXXXXXX.oo", +"oo.XXXXXXX.XXXXXXXXX.XXXXXXXX.oo", +"oo.XXXXXX.XXXXXXXXXXX.XXXXXXX.oo", +"oo.XXXX..XXXXXXXXXXXXX..XXXXX.oo", +"oo.XXX.XXXXXXXXXXXXXXXXX.XXXX.oo", +"oo.XX.XXXXXXXXXXXXXXXXXXX.XXX.oo", +"oo...XXXXXXXXXXXXXXXXXXXXX....oo", +"oo..XXXXXXXXXXXXXXXXXXXXXXXX..oo", +"oo............................oo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo"}; diff --git a/etc/gnus/gnus-summary-reply-with-original-up.xbm b/etc/gnus/gnus-summary-reply-with-original-up.xbm new file mode 100644 index 0000000..37b0d73 --- /dev/null +++ b/etc/gnus/gnus-summary-reply-with-original-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x00,0x08,0x00,0x20,0xaa,0x82,0xaa,0x4a,0x00,0x54,0x00,0x00,0xaa,0x02,0x54, + 0x55,0x00,0xa8,0x07,0x00,0x54,0x85,0x5a,0x55,0x02,0x50,0x32,0x80,0x50,0x25, + 0xc2,0x2a,0x02,0x18,0x81,0x41,0x54,0x17,0x01,0x17,0x80,0x09,0xc1,0x23,0x75, + 0x04,0x3d,0x4f,0x18,0xc3,0x83,0x18,0x85,0x40,0xc0,0x61,0x4c,0x7c,0x60,0x30, + 0xf6,0x23,0xb0,0x6e,0x84,0x20,0x98,0x21,0x05,0x13,0x5c,0x20,0x04,0x1c,0x36, + 0x60,0x06,0x30,0x0f,0x60,0x06,0x70,0x07,0xa0,0x05,0xc8,0x09,0x20,0x06,0x04, + 0x10,0x60,0x04,0x02,0x20,0xa0,0x85,0x01,0xc0,0x20,0x46,0x00,0x00,0xa1,0x24, + 0x00,0x00,0x62,0x1e,0x00,0x00,0x7c,0x0d,0x00,0x00,0xb0,0xfc,0xff,0xff,0x3f, + 0x55,0x55,0x4a,0x55,0x24,0x89,0x52,0xa2}; diff --git a/etc/gnus/gnus-summary-reply-with-original-up.xpm b/etc/gnus/gnus-summary-reply-with-original-up.xpm new file mode 100644 index 0000000..1135bfa --- /dev/null +++ b/etc/gnus/gnus-summary-reply-with-original-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-follow-up-incl_xpm[] = { +"32 32 4 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +" ", +" ", +" ", +" ", +" ... ", +" .X.X. ", +" .XX.XX.. ", +" .XXX.XXXX. ", +" ..XXX.XXXXXX.. ", +" ..X.XXX.XXXXXXX.. ", +" ..XX.XXXX.XXXXX.... ", +" ..XXX.XXXXX.X....XX... ", +" ..XXX..XXXX....XXXXX.oXX.. ", +" .XXXX.XXXXXX.XXXXXXX..oXXXo. ", +" ..XX.XXX.....XXXXXX..ooXXX.. ", +" .X......XXX.XXXXXX..ooX...X. ", +" .XXXX.XXXXX.XXXXX..oX..XXXX. ", +" .XXXXX..XX.XXXXX..oX.XXXXXX. ", +" .XXXXXXX...XXXX..X..XXXXXXX. ", +"oo.XXXXXXXXX..XX....XXXXXXXXX.oo", +"oo.XXXXXXXXX...X...XXXXXXXXXX.oo", +"oo.XXXXXXXX.XX...XX.XXXXXXXXX.oo", +"oo.XXXXXXX.XXXXXXXXX.XXXXXXXX.oo", +"oo.XXXXXX.XXXXXXXXXXX.XXXXXXX.oo", +"oo.XXXX..XXXXXXXXXXXXX..XXXXX.oo", +"oo.XXX.XXXXXXXXXXXXXXXXX.XXXX.oo", +"oo.XX.XXXXXXXXXXXXXXXXXXX.XXX.oo", +"oo...XXXXXXXXXXXXXXXXXXXXX....oo", +"oo..XXXXXXXXXXXXXXXXXXXXXXXX..oo", +"oo............................oo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo"}; diff --git a/etc/gnus/gnus-summary-save-article-file-up.xbm b/etc/gnus/gnus-summary-save-article-file-up.xbm new file mode 100644 index 0000000..a14e003 --- /dev/null +++ b/etc/gnus/gnus-summary-save-article-file-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x20,0x08,0x08,0x82,0x8a,0x82,0xa2,0x20,0x20,0x14,0x04,0x15,0x14,0xfd,0xff, + 0x43,0x42,0x04,0x00,0x0d,0x10,0x05,0x00,0x49,0x22,0x06,0x00,0x31,0x88,0x04, + 0x00,0x1f,0x22,0x06,0x00,0x50,0x88,0x04,0x00,0x10,0x22,0x04,0x00,0xb0,0x88, + 0x06,0x00,0x10,0x22,0x04,0x00,0x50,0xfc,0xff,0x0f,0x10,0x36,0x00,0x0b,0xb0, + 0x2c,0x02,0x0d,0x10,0x34,0x10,0x0b,0x50,0x2d,0x00,0x0b,0x10,0x34,0x41,0x0d, + 0xb0,0x2d,0x08,0x09,0x10,0x34,0x00,0x0b,0x50,0x2d,0x01,0x0d,0x10,0xf4,0xff, + 0x0b,0xb0,0xad,0xda,0x0a,0x10,0x44,0x22,0x0d,0x50,0xf6,0xff,0xf9,0x1f,0x6c, + 0x3b,0x4b,0x52,0xb5,0x2d,0x1d,0x08,0x6c,0x35,0x4b,0xa1,0x6a,0x3b,0x29,0x14, + 0xf8,0xff,0x8f,0x40,0x02,0x40,0x2a,0x15}; diff --git a/etc/gnus/gnus-summary-save-article-file-up.xpm b/etc/gnus/gnus-summary-save-article-file-up.xpm new file mode 100644 index 0000000..ea30122 --- /dev/null +++ b/etc/gnus/gnus-summary-save-article-file-up.xpm @@ -0,0 +1,41 @@ +/* XPM */ +static char * icon-save-text_xpm[] = { +"32 32 6 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +"O c #E5E5E5E5E5E5", +"+ c #666666666666", +" ", +" ", +" ", +" ................ ", +" .XXXXXXXXXXXXX.X. ", +" .XXXXXXXXXXXXX.XX. ", +" .XXXXXXXXXXXXX.XXX. ", +" .XXXXXXXXXXXXX..... ", +" .XXXXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXXXX. ", +" ..................XXXXXXXX. ", +" .oo.OOOOOOOOOO.oo.XXXXXXXX. ", +" .oo.OOOOOOOOOO.oo.XXXXXXXX. ", +" .oo.OOOOOOOOOO.oo.XXXXXXXX. ", +" .oo.OOOOOOOOOO.oo.XXXXXXXX. ", +" .oo.OOOOOOOOOO.oo.XXXXXXXX. ", +" .oo.OOOOOOOOOO.oo.XXXXXXXX. ", +" .oo.OOOOOOOOOO.oo.XXXXXXXX. ", +" .oo.OOOOOOOOOO.oo.XXXXXXXX. ", +" .oo............oo.XXXXXXXX. ", +" .oooooooooooooooo.XXXXXXXX. ", +" .oooooooooooooooo.XXXXXXXX. ", +" .oo............oo.......... ", +" .oo.+++++++.OO.oo. ", +" .oo.+++++++.OO.oo. ", +" .oo.+++++++.OO.oo. ", +" .o.+++++++.OO.oo. ", +" ................ ", +" "}; diff --git a/etc/gnus/gnus-summary-save-article-up.xbm b/etc/gnus/gnus-summary-save-article-up.xbm new file mode 100644 index 0000000..94e51d1 --- /dev/null +++ b/etc/gnus/gnus-summary-save-article-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x10,0x81,0x04,0x01,0x45,0x28,0x40,0x50,0x88,0x42,0x15,0x05,0xa2,0xff,0xff, + 0x7f,0x88,0x03,0x00,0xf0,0xa2,0x0c,0x00,0x4c,0x88,0x30,0x00,0x43,0xc5,0xc0, + 0xc0,0x40,0x90,0x80,0x33,0xc0,0xa4,0x60,0xcc,0x40,0x82,0x10,0x00,0x41,0xd0, + 0x08,0x00,0x46,0x82,0x06,0x00,0xd8,0xfc,0xff,0x0f,0x60,0x2e,0x00,0x0d,0x40, + 0x34,0x02,0xfb,0x7f,0x36,0x10,0x0d,0x91,0xac,0x00,0x4b,0x24,0x34,0x00,0x2d, + 0x81,0x2d,0x48,0x4b,0x28,0x34,0x02,0x0d,0x85,0x2d,0x00,0xab,0x20,0xf4,0xff, + 0x0d,0x8a,0xa6,0xaa,0xaa,0x20,0x4c,0x55,0x0a,0x85,0xf5,0xff,0x5b,0x20,0x6c, + 0x35,0x8d,0x8a,0xad,0x36,0x2b,0x20,0xf4,0x2a,0x89,0x8a,0x6a,0x3b,0x5d,0x20, + 0xf8,0xff,0x0f,0x85,0x02,0x40,0xa2,0x20}; diff --git a/etc/gnus/gnus-summary-save-article-up.xpm b/etc/gnus/gnus-summary-save-article-up.xpm new file mode 100644 index 0000000..fd4824b --- /dev/null +++ b/etc/gnus/gnus-summary-save-article-up.xpm @@ -0,0 +1,41 @@ +/* XPM */ +static char * icon-save-mail_xpm[] = { +"32 32 6 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +"O c #E5E5E5E5E5E5", +"+ c #666666666666", +" ", +" ", +" ", +" ........................ ", +" ...XXXXXXXXXXXXXXXXXX... ", +" .XX..XXXXXXXXXXXXXX..XX. ", +" .XXXX..XXXXXXXXXX..XXXX. ", +" .XXXXXX..XXXXXX..XXXXXX. ", +" .XXXXXXX...XX..XXXXXXXX. ", +" .XXXXX..XXX..XX..XXXXXX. ", +" .XXXX.XXXXXXXXXXX.XXXXX. ", +" .XXX.XXXXXXXXXXXXX..XXX. ", +" .X..XXXXXXXXXXXXXXXX..X. ", +" ..................XXXXXXXXX.. ", +" .oo.OOOOOOOOOO.oo.XXXXXXXXXX. ", +" .oo.OOOOOOOOOO.oo............ ", +" .oo.OOOOOOOOOO.oo. ", +" .oo.OOOOOOOOOO.oo. ", +" .oo.OOOOOOOOOO.oo. ", +" .oo.OOOOOOOOOO.oo. ", +" .oo.OOOOOOOOOO.oo. ", +" .oo.OOOOOOOOOO.oo. ", +" .oo............oo. ", +" .oooooooooooooooo. ", +" .oooooooooooooooo. ", +" .oo............oo. ", +" .oo.+++++++.OO.oo. ", +" .oo.+++++++.OO.oo. ", +" .oo.+++++++.OO.oo. ", +" .o.+++++++.OO.oo. ", +" ................ ", +" "}; diff --git a/etc/gnus/gnus-uu-decode-uu-up.xbm b/etc/gnus/gnus-uu-decode-uu-up.xbm new file mode 100644 index 0000000..705eb76 --- /dev/null +++ b/etc/gnus/gnus-uu-decode-uu-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x00,0x08,0x10,0x01,0xaa,0x42,0x45,0x54,0x00,0x14,0x10,0x01,0x55,0x41,0x45, + 0x50,0x00,0x0a,0x88,0x0a,0xaa,0xa0,0x22,0x40,0x80,0xff,0xff,0x17,0xaa,0x95, + 0x54,0x43,0x80,0x2a,0xa5,0x0a,0xaa,0xfd,0x7f,0x53,0xc0,0x06,0x40,0x06,0x94, + 0x04,0x40,0x43,0xc2,0x05,0xc0,0x2a,0x90,0x86,0xc0,0x06,0xa2,0x64,0x4b,0x53, + 0x88,0x96,0x44,0x06,0xd2,0x45,0xc0,0x52,0x84,0x25,0xc1,0x06,0x90,0xe6,0x41, + 0x53,0x8a,0x05,0x42,0x06,0xa0,0x06,0xc4,0x52,0x95,0x04,0xc0,0x06,0xc0,0x05, + 0x40,0x53,0x94,0x06,0x40,0x06,0xa2,0x05,0xc0,0x52,0x88,0xfc,0xff,0x06,0xa2, + 0x95,0x12,0x53,0x88,0x4a,0xa9,0x06,0xa2,0xff,0xff,0x53,0x90,0x10,0x00,0x04, + 0x42,0x42,0x55,0x50,0x14,0x28,0x80,0x0a}; diff --git a/etc/gnus/gnus-uu-decode-uu-up.xpm b/etc/gnus/gnus-uu-decode-uu-up.xpm new file mode 100644 index 0000000..568315c --- /dev/null +++ b/etc/gnus/gnus-uu-decode-uu-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-decode-view_xpm[] = { +"32 32 4 1", +" c #BFBFBFBFBFBF s backgroundToolBarColor", +". c #000000000000", +"X c #999999999999", +"o c #FFFFFFFFFFFF", +" ", +" ", +" ", +" ", +" ", +" ", +" ................... ", +" .XXXXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXXXX. ", +" .XX.............XX. ", +" .XX.ooooooooooo.XX. ", +" .XX.ooooooooooo.XX. ", +" .XX.ooooooooooo.XX. ", +" .XX.oooo.oooooo.XX. ", +" .XX.oo..o..o.oo.XX. ", +" .XX.o.oo.oo.ooo.XX. ", +" .XX.ooo.ooooooo.XX. ", +" .XX.oo.oo.ooooo.XX. ", +" .XX.oo....ooooo.XX. ", +" .XX.oooooo.oooo.XX. ", +" .XX.ooooooo.ooo.XX. ", +" .XX.ooooooooooo.XX. ", +" .XX.ooooooooooo.XX. ", +" .XX.ooooooooooo.XX. ", +" .XX.ooooooooooo.XX. ", +" .XX.............XX. ", +" .XXXXXXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXXXXXX. ", +" ................... ", +" ", +" ", +" "}; diff --git a/etc/gnus/gnus-uu-post-news-up.xbm b/etc/gnus/gnus-uu-post-news-up.xbm new file mode 100644 index 0000000..e0528e9 --- /dev/null +++ b/etc/gnus/gnus-uu-post-news-up.xbm @@ -0,0 +1,12 @@ +#define noname_width 32 +#define noname_height 32 +static char noname_bits[] = { + 0x11,0x11,0x19,0x51,0x4a,0x95,0x82,0x14,0x20,0x40,0x29,0x42,0x0a,0xd5,0x86, + 0x10,0x31,0x31,0x3b,0x53,0x08,0x9d,0xe8,0x10,0xa2,0x43,0x82,0x4b,0x88,0xff, + 0xff,0x03,0xb3,0xaa,0x54,0xbb,0x88,0x55,0xaa,0x02,0xa2,0xfc,0x7f,0x4b,0x88, + 0x06,0xc0,0x12,0xb1,0x05,0x40,0x56,0x8a,0x05,0x40,0x03,0xd0,0x86,0xc0,0xaa, + 0x85,0x64,0x4b,0x06,0xb1,0x95,0xc4,0x32,0x8a,0x46,0x40,0x4b,0xd0,0x24,0x41, + 0x03,0x84,0xe6,0xc1,0x56,0xd9,0x05,0x42,0x12,0x82,0x04,0x44,0x4b,0x94,0x07, + 0xc0,0x22,0xc1,0x04,0x40,0x16,0x95,0x05,0xc0,0x52,0xa0,0x06,0x40,0x13,0x8a, + 0xfd,0xff,0x46,0xd0,0x94,0x52,0x12,0x93,0x29,0xa5,0x5a,0xa4,0xff,0xff,0x03, + 0x10,0x02,0x08,0x55,0x85,0xa8,0xa2,0x00}; diff --git a/etc/gnus/gnus-uu-post-news-up.xpm b/etc/gnus/gnus-uu-post-news-up.xpm new file mode 100644 index 0000000..f4a7e3a --- /dev/null +++ b/etc/gnus/gnus-uu-post-news-up.xpm @@ -0,0 +1,39 @@ +/* XPM */ +static char * icon-post-pic_xpm[] = { +"32 32 4 1", +" c #000000000000", +". c #BFBFBFBFBFBF s backgroundToolBarColor", +"X c #999999999999", +"o c #FFFFFFFFFFFF", +" ... ... ... ... ... ... ... ...", +"................................", +"................ ...............", +".............. . .............", +" ... ... ... .. .. ... ... ...", +".......... ......... .........", +"........ ............. .......", +"....... ......", +" ... .. XXXXXXXXXXXXXXXXX .. ...", +"....... XXXXXXXXXXXXXXXXX ......", +"....... XX XX ......", +"....... XX ooooooooooo XX ......", +" ... .. XX ooooooooooo XX .. ...", +"....... XX ooooooooooo XX ......", +"....... XX oooo oooooo XX ......", +"....... XX oo o o oo XX ......", +" ... .. XX o oo oo ooo XX .. ...", +"....... XX ooo ooooooo XX ......", +"....... XX oo oo ooooo XX ......", +"....... XX oo ooooo XX ......", +" ... .. XX oooooo oooo XX .. ...", +"....... XX ooooooo ooo XX ......", +"....... XX ooooooooooo XX ......", +"....... XX ooooooooooo XX ......", +" ... .. XX ooooooooooo XX .. ...", +"....... XX ooooooooooo XX ......", +"....... XX XX ......", +"....... XXXXXXXXXXXXXXXXX ......", +" ... .. XXXXXXXXXXXXXXXXX .. ...", +"....... ......", +"................................", +"................................"}; diff --git a/etc/gnus/gnus.xbm b/etc/gnus/gnus.xbm new file mode 100644 index 0000000..58d1ac8 --- /dev/null +++ b/etc/gnus/gnus.xbm @@ -0,0 +1,622 @@ +#define noname_width 271 +#define noname_height 273 +static char noname_bits[] = { + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x49,0xe0,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x97,0xaa,0x8a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x57,0x2a,0x41,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0x52,0x16,0xfe,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0x49,0x05, + 0xf9,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0x95,0xaa,0x58,0xf4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xa5,0x54,0x26,0xe1,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x54,0x49,0x49,0xe4,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x2a,0xa5, + 0x2a,0xd1,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xaf,0x52,0x95,0x54,0xc4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab, + 0x24,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x57,0x29,0xa9,0x92,0x11,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x57,0xd5,0xfa,0xff,0xff,0xab,0xea,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x4a,0x55,0x2a,0x41,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x25,0x29,0xe5,0xff,0xff,0x95,0xa4,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0xa4, + 0x24,0xa5,0x14,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0xa5,0xd4,0xff, + 0x3f,0x52,0xa9,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x29,0x55,0x55,0x55,0x41,0x7e,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xa9,0x54,0xea,0xff,0xdf,0x2a,0x55,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x4a,0x49,0x12,0x7e,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0x55,0xa5,0x92,0xff,0x23,0xa5,0x4a,0xd6,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5,0xa4,0x94,0xaa,0x42, + 0x7d,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0x2a,0xa9,0xff,0xad,0x92,0x24, + 0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a, + 0x95,0x52,0x52,0x29,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x52,0x49,0x55, + 0xfe,0x91,0x54,0x55,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0x49,0x29,0x55,0x25,0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff, + 0x4f,0x95,0xaa,0x92,0x7e,0x55,0x55,0xa9,0x4a,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a,0x50,0x95,0xaa,0x24,0x7e,0xff,0xff, + 0xff,0xff,0xff,0xff,0x57,0x2a,0x95,0x54,0x79,0x95,0x92,0x92,0x94,0xfc,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb9,0x62,0x29,0x49, + 0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x49,0x49,0x95,0xba,0xa4,0x54, + 0xaa,0x52,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf, + 0x1a,0xf8,0xa7,0xaa,0x22,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x52, + 0x2a,0x75,0x55,0xa5,0x24,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xbf,0x5a,0xfd,0x57,0x92,0x94,0x7e,0xff,0xff,0xff,0xff,0xff, + 0xff,0x4a,0x4a,0x55,0x49,0x89,0x92,0x94,0xaa,0x94,0xf4,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xfc,0x2f,0x55,0x05,0x7c,0xff, + 0xff,0xff,0xff,0xff,0xff,0x55,0xa9,0x4a,0x55,0x2a,0x55,0x55,0x55,0x55,0xe5, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x4e,0xfd,0x5f, + 0x29,0xa5,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0xa4,0x54,0x52,0x4a,0x55,0xa9, + 0xa4,0x24,0xa5,0x94,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x2f,0x1d,0xfe,0x3f,0x95,0x04,0x7c,0xff,0xfd,0xff,0xff,0xff,0x3f,0x49,0xa5, + 0x54,0xa9,0xa4,0x92,0x4a,0x49,0x4a,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xaf,0x44,0xfe,0x5f,0xa9,0x52,0x7d,0xff,0xe5,0xff,0xff, + 0xff,0x5f,0x55,0x92,0x2a,0x95,0x52,0x4a,0x52,0xaa,0x52,0x4a,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x16,0xff,0xbf,0x4a,0x05,0x7c, + 0xff,0xd9,0xff,0xff,0xff,0x5f,0x95,0x42,0xa5,0x52,0x95,0xaa,0xaa,0xaa,0x94, + 0x54,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x43,0xfe, + 0xbf,0x54,0x52,0x7d,0x7f,0x25,0xff,0xff,0xff,0xa7,0xa4,0x28,0x92,0x54,0x4a, + 0xa5,0x4a,0x92,0xaa,0x4a,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xab,0x12,0xfe,0x7f,0xa5,0x02,0x7c,0x7f,0x55,0xfd,0xff,0xff,0x95,0x2a, + 0x82,0x54,0xa5,0x54,0x2a,0xa9,0x2a,0xa5,0x52,0xf5,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x27,0x4b,0xff,0xff,0x4a,0x29,0x7d,0xff,0x92,0xfe, + 0xff,0xff,0x55,0x92,0x20,0xa8,0x94,0x2a,0xa5,0x94,0x52,0x29,0xa9,0xf4,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x01,0xff,0x7f,0x52,0x42, + 0x7c,0xff,0x25,0xf9,0xff,0x7f,0xaa,0x02,0x8a,0x40,0x29,0x49,0x09,0x41,0x4a, + 0x55,0x25,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57, + 0xff,0xff,0x95,0x12,0x7d,0xff,0xa9,0xfa,0xff,0x7f,0x25,0xa9,0x20,0x2a,0xa5, + 0xaa,0x42,0x92,0x54,0x92,0x54,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xaf,0x83,0xff,0xff,0xa9,0x42,0x7e,0xff,0xaa,0xf4,0xff,0xaf,0x54, + 0x01,0x82,0x80,0xaa,0x54,0x14,0x08,0xa2,0xaa,0x4a,0xd2,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xef,0xcf,0xd7,0xff,0xff,0x52,0x12,0x7f,0xff,0x4a, + 0xea,0xff,0x57,0x92,0xaa,0x28,0x24,0x29,0x25,0x81,0x82,0x08,0x49,0x52,0x55, + 0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xdf,0xef,0xe7,0xff,0xff,0x2a, + 0x05,0x7e,0xff,0x55,0xd5,0xff,0xa5,0x2a,0x00,0x8e,0x10,0x4a,0x89,0x24,0x28, + 0xa0,0xaa,0x2a,0x49,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xe7,0xff, + 0xef,0xff,0xff,0xa5,0x50,0x7e,0xff,0x25,0xe5,0xff,0x2a,0xa5,0x52,0x7f,0x85, + 0x54,0x35,0x08,0x82,0x0a,0x55,0x95,0xaa,0xfc,0xff,0xff,0xff,0xcf,0xff,0xff, + 0xff,0xff,0xd7,0xff,0xff,0xff,0x7f,0x52,0x85,0x7e,0xff,0xab,0x94,0x1e,0x55, + 0x2a,0xc8,0xff,0x10,0x90,0x92,0xa0,0x08,0x20,0x24,0x52,0x25,0xfd,0xff,0xff, + 0xff,0xef,0xff,0xff,0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0x94,0x10,0x7e,0xff, + 0x93,0xaa,0x6a,0x49,0x49,0xf2,0xff,0x85,0x52,0x09,0x0a,0xa2,0x4a,0x92,0x29, + 0xa9,0xf2,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0x7f, + 0x55,0x25,0x7f,0xff,0x55,0x49,0x49,0x95,0x0a,0xf9,0xff,0x17,0x48,0x26,0x50, + 0x08,0x00,0xa9,0x4a,0x95,0xfa,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xf2, + 0xff,0xff,0xff,0xff,0x92,0x80,0x7e,0xff,0xa7,0x54,0xaa,0xa4,0x52,0xfc,0xff, + 0xaf,0x42,0x89,0xfa,0xbf,0x54,0x20,0xa9,0xa4,0xd4,0xff,0xff,0xff,0xcb,0xff, + 0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,0x54,0x29,0x7f,0xff,0x4b,0xa5,0x92, + 0x2a,0x01,0xff,0xff,0x1f,0xa8,0x22,0xff,0xff,0x01,0xa5,0x2a,0x55,0xa9,0xff, + 0xff,0xff,0xd4,0xff,0xff,0xff,0x7f,0xfa,0xff,0xff,0xff,0x7f,0xa5,0x04,0x7f, + 0xff,0x57,0x2a,0x55,0xa9,0x54,0xfe,0xff,0x3f,0x05,0x89,0xff,0xff,0x5f,0x48, + 0x92,0x2a,0x95,0xff,0xff,0xff,0xea,0xff,0xff,0xff,0xff,0xd2,0xff,0xff,0xff, + 0x7f,0x2a,0x91,0x7f,0xff,0xa9,0x54,0x4a,0x52,0x02,0xff,0xff,0xff,0x50,0xd1, + 0xff,0xff,0x1f,0x81,0xaa,0xa4,0x52,0xfe,0xff,0x3f,0xe9,0xff,0xff,0xff,0x7f, + 0x1d,0xff,0xff,0xff,0xff,0x54,0x41,0x7f,0xff,0x93,0x92,0x52,0x95,0xc8,0xff, + 0xff,0xff,0x8b,0xc4,0xff,0xff,0x7f,0x24,0xa5,0x2a,0x49,0xf9,0xff,0x7f,0xd5, + 0xff,0xff,0xff,0xbf,0x4a,0xff,0xff,0xff,0xff,0x4a,0x14,0x7f,0xff,0x28,0xa5, + 0x94,0x2a,0xa0,0xff,0xff,0x7f,0x22,0xf0,0xff,0xff,0x7f,0x12,0x94,0xa4,0xaa, + 0xea,0xff,0xaf,0xea,0xff,0xff,0xff,0x5f,0x8e,0xff,0xff,0xff,0x7f,0xa9,0x40, + 0x7f,0xff,0x48,0x55,0x55,0x12,0xca,0xff,0xff,0xff,0x0a,0xf5,0xff,0xff,0xff, + 0x80,0x52,0x95,0x54,0xaa,0xfe,0x55,0xc4,0xff,0xff,0xff,0x5f,0xa5,0xff,0xff, + 0xff,0xff,0x94,0x14,0x7f,0xff,0x52,0x2a,0xa9,0x4a,0xe1,0xff,0xff,0xbf,0x24, + 0xf0,0xff,0xff,0xff,0x0b,0x28,0xa9,0x92,0x24,0x55,0x49,0xe5,0xd7,0xff,0xff, + 0xa7,0x8a,0xff,0xff,0xff,0x7f,0xa5,0xc0,0x7f,0xff,0x50,0x49,0x95,0x04,0xf8, + 0xff,0xff,0x5f,0x1f,0xfd,0xff,0xff,0xff,0x47,0x45,0x55,0xaa,0xaa,0x4a,0xaa, + 0xea,0xaf,0xff,0xff,0x2b,0xc3,0xff,0xff,0xff,0x7f,0x55,0x94,0x7f,0x7f,0x4a, + 0x55,0x52,0x51,0xfe,0xff,0xff,0x5f,0x4e,0xf8,0xff,0xff,0xff,0x1f,0x50,0x92, + 0x52,0x49,0xa9,0x92,0xe4,0xd3,0xff,0xff,0x4b,0xd5,0xff,0xff,0xff,0xff,0x94, + 0xc0,0x7f,0x3f,0xa0,0xa4,0xaa,0x04,0xfe,0xff,0xff,0xa7,0x1d,0xfd,0xff,0xff, + 0xff,0x9f,0x84,0xaa,0x4a,0xaa,0x24,0x55,0xf2,0x2b,0xff,0x7f,0xa9,0xc1,0xff, + 0xff,0xff,0x7f,0x4a,0x95,0x7f,0xbf,0x2a,0x95,0x24,0x50,0xff,0xff,0xff,0x97, + 0x5e,0xfe,0xff,0xff,0xff,0x3f,0x92,0x24,0x95,0x92,0xaa,0xa4,0xf2,0xcb,0xff, + 0x5f,0xd5,0xe5,0xff,0xff,0xff,0xff,0x52,0x80,0x7f,0x3f,0xa0,0x52,0x15,0x85, + 0xff,0xff,0xff,0xd7,0x38,0xfe,0xff,0xff,0xff,0xff,0x20,0xaa,0x52,0x55,0x55, + 0x55,0xf9,0x29,0xfd,0xab,0xa4,0xf0,0xff,0xff,0xff,0x7f,0x29,0xa9,0x7f,0xff, + 0x42,0x25,0x49,0xe8,0xff,0xff,0xff,0x69,0x7a,0xff,0xff,0xff,0xff,0xff,0x82, + 0x52,0xaa,0x24,0x89,0x4a,0xf8,0x55,0x2a,0x49,0x95,0xf5,0xff,0xff,0xff,0xbf, + 0x2a,0xc4,0x7f,0x7f,0x90,0x54,0x15,0xe2,0xff,0xff,0xff,0x25,0xbc,0xff,0xff, + 0xff,0xff,0xff,0x29,0x48,0x49,0xaa,0xaa,0xa4,0xfa,0x95,0x92,0x54,0x52,0xf0, + 0xff,0xff,0xff,0xbf,0x4a,0xd1,0x7f,0xff,0x05,0xaa,0x40,0xf8,0xff,0xff,0x7f, + 0xaa,0xfc,0xff,0xff,0xff,0xff,0xff,0x43,0xa9,0xaa,0x4a,0x52,0xa9,0xf8,0xa4, + 0xaa,0x52,0x95,0xfc,0xff,0xff,0xff,0x7f,0x52,0xc0,0x7f,0xff,0xa1,0x00,0x24, + 0xfa,0xff,0xff,0xff,0x0a,0xfe,0xff,0xff,0xff,0xff,0xff,0x17,0x92,0x24,0xa5, + 0x2a,0x55,0xfe,0xaa,0xa4,0x2a,0x29,0xf9,0xff,0xff,0xff,0xbf,0x2a,0xea,0x7f, + 0xff,0x05,0x92,0x90,0xfc,0xff,0xff,0xbf,0xa4,0xff,0xff,0xff,0xff,0xff,0xff, + 0x4f,0xa0,0xaa,0x54,0x49,0x25,0x7c,0x49,0x95,0xa4,0x12,0xfc,0xff,0xff,0xff, + 0x7f,0x8a,0xe0,0x7f,0xff,0xa3,0x04,0x05,0xfe,0xff,0xff,0xbf,0x06,0xff,0xff, + 0xff,0xff,0xff,0xff,0x1f,0x49,0x95,0x52,0xaa,0x12,0x7f,0x55,0x52,0x55,0x0a, + 0xfd,0xff,0xff,0xff,0x3f,0x29,0xe8,0x7f,0xff,0x0f,0x50,0x50,0xff,0xff,0xff, + 0x5f,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x04,0xa9,0x4a,0x25,0x45,0x3e, + 0xa9,0x2a,0xa9,0xa2,0xfc,0xff,0xff,0xff,0x7f,0x55,0xe1,0x7f,0xff,0x27,0x05, + 0xc4,0xff,0xff,0xff,0x9f,0x91,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x41,0x4a, + 0x29,0xa9,0x12,0x5e,0x95,0x94,0x4a,0x0a,0xfe,0xff,0xff,0xff,0xbf,0x12,0xf4, + 0x7f,0xff,0x8f,0x50,0xf1,0xff,0xff,0xff,0xa7,0xc2,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x14,0x92,0xaa,0x4a,0xa2,0xbf,0xa4,0x52,0x95,0x22,0xff,0xff,0xff, + 0xff,0x3f,0x45,0xf2,0x7f,0xff,0x3f,0x04,0xf4,0xff,0xff,0xff,0xd7,0xe8,0xff, + 0xff,0xff,0xff,0x5f,0xff,0xff,0x83,0xa8,0x94,0x54,0x09,0x2f,0x55,0x4a,0x52, + 0x49,0xff,0xff,0xff,0xff,0x5f,0x99,0xf0,0x7f,0xff,0x7f,0x51,0xfc,0xff,0xff, + 0xff,0x6b,0xf1,0xff,0xff,0xff,0xff,0x5f,0xfd,0xff,0x2b,0x2a,0xa9,0x12,0x20, + 0x5f,0xa9,0xaa,0x54,0x00,0xff,0xff,0xff,0xff,0x5f,0x15,0xf2,0x7f,0xff,0xff, + 0x8f,0xff,0xff,0xff,0xff,0x2b,0xfc,0xff,0xff,0xff,0xff,0x2f,0xfd,0xff,0x87, + 0xa0,0x4a,0xaa,0x8a,0x9f,0x4a,0x52,0x15,0xa9,0xff,0xff,0xff,0xff,0x5f,0x8a, + 0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xf8,0xff,0xff,0xff,0xff, + 0x57,0xf2,0xff,0x2f,0x82,0x52,0x05,0xd0,0x2f,0x95,0x4a,0x49,0x84,0xff,0xff, + 0xff,0xff,0xbf,0x24,0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x12,0xfd, + 0xff,0xff,0xff,0xff,0x4b,0xd5,0xff,0x9f,0x28,0x54,0x48,0xc5,0xbf,0x52,0x55, + 0x0a,0xe1,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfa,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x1a,0xfe,0xff,0xff,0xff,0xff,0x57,0xa9,0xff,0x3f,0x82,0x00,0x21, + 0xf0,0x5f,0x2a,0x49,0x21,0xc4,0xff,0xff,0xff,0xff,0xaf,0x1a,0xfd,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0x3f,0x85,0xff,0xff,0xff,0xff,0xff,0x29,0xa5,0xff, + 0xff,0x24,0x52,0x88,0xfc,0xbf,0x92,0x2a,0x09,0xf1,0xff,0xff,0xff,0xff,0x9f, + 0x4c,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x15,0xff,0xff,0xff,0x7f, + 0xff,0xa5,0x4a,0xff,0xff,0x90,0x08,0x01,0xfe,0x3f,0x55,0x52,0x24,0xf4,0xff, + 0xff,0xff,0xff,0xaf,0x02,0xfd,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xc6, + 0xff,0xff,0xff,0xbf,0xfe,0x95,0x54,0xff,0xff,0x05,0x42,0xa8,0xfe,0xbf,0xa4, + 0x2a,0x41,0xf9,0xff,0xff,0xff,0xff,0x5f,0x55,0xfc,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0x4f,0xd0,0xff,0xff,0xff,0xbf,0x7c,0xaa,0x92,0xfc,0xff,0x53,0x08, + 0x01,0xff,0x1f,0x4a,0x01,0x04,0xfc,0xff,0xff,0xff,0xff,0x27,0x05,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xc5,0xff,0xff,0xff,0x4f,0xbf,0x52,0xaa, + 0xfe,0xff,0x07,0x42,0xea,0xff,0xbf,0x50,0x54,0x51,0xff,0xff,0xff,0xff,0xff, + 0x97,0x56,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xf0,0xff,0xff,0xff, + 0x2f,0x7f,0xa5,0x54,0xfd,0xff,0x3f,0x09,0xe0,0xff,0x1f,0x02,0x01,0x04,0xff, + 0xff,0xff,0xff,0xff,0xaf,0x02,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x4b, + 0xf5,0xff,0xff,0xff,0xab,0x9f,0x94,0x92,0xfc,0xff,0xff,0x40,0xfd,0xff,0x9f, + 0x48,0x48,0xa1,0xff,0xff,0xff,0xff,0xff,0xa7,0x56,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0x6b,0xf8,0xff,0xff,0xff,0xa4,0x5f,0xa9,0x2a,0xfd,0xff,0xff, + 0xff,0xff,0xff,0x3f,0x22,0x21,0xc4,0xff,0xff,0xff,0xff,0xff,0x2f,0x03,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0xfa,0xff,0xff,0x7f,0xd5,0x2f,0xa5, + 0xa4,0xfa,0xff,0xff,0xff,0xff,0xff,0xbf,0x08,0x08,0xf9,0xff,0xff,0xff,0xff, + 0xff,0x97,0x4a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xfc,0xff,0xff, + 0x7f,0x69,0xac,0x2a,0x55,0xf9,0xff,0xff,0xff,0xff,0xff,0x7f,0xa2,0x22,0xf8, + 0xff,0xff,0xff,0xff,0xff,0x53,0x21,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0x15,0xfe,0xff,0xff,0x9f,0x2a,0x95,0x94,0x92,0xf4,0xff,0xff,0xff,0xff,0xff, + 0xff,0x08,0x88,0xfe,0xff,0xff,0xff,0xff,0xff,0x57,0x8b,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xa9,0xfe,0xff,0xff,0x5f,0x52,0xbc,0x52,0x55,0xf5,0xff, + 0xff,0xff,0xff,0xff,0xff,0x21,0x21,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xa1, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x7f,0x0d,0xff,0xff,0xff,0x57,0x15,0x3f, + 0x55,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xc8,0xff,0xff,0xff,0xff, + 0xff,0xff,0xd7,0x89,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xbf,0xd6,0xff,0xff, + 0xff,0x4b,0x45,0x3f,0x49,0xaa,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf9, + 0xff,0xff,0xff,0xff,0xff,0xff,0xc9,0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0x3f,0x81,0xff,0xff,0xff,0x29,0x11,0x5f,0x28,0x55,0xf5,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xc8,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0x5f,0xd6,0xff,0xff,0x7f,0xaa,0xc2,0x0f,0x55,0x49,0xea, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5, + 0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x9f,0xe1,0xff,0xff,0xbf,0x4a,0xd1, + 0x5f,0x48,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xe9,0xe0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x27,0xf4,0xff, + 0xff,0xbf,0x94,0xc4,0x07,0x91,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xea,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xaf,0xf1,0xff,0xff,0x9f,0x52,0xe0,0x4b,0x44,0x52,0xe9,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6a,0xe0,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xab,0x2a,0xf5,0x0f,0x51,0xa5, + 0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0x69,0xe5,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x55,0xf8,0xff,0xff,0x95,0x14, + 0xf0,0x5f,0x84,0x54,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0x75,0xf0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x13,0xfd, + 0xff,0xff,0xa5,0x42,0xf9,0x7f,0x91,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb2,0xfa,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0x54,0xfe,0xff,0x7f,0x52,0x12,0xfa,0xff,0x20,0xa5,0xe4,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x34,0xf8,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0x25,0xff,0xff,0xaf,0xaa,0x48,0xfc,0xff,0x0b, + 0x29,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xb5,0xf8,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x52,0xff,0xff,0x2f,0x49, + 0x02,0xfe,0xff,0x43,0xaa,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x3f,0x3a,0xfa,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x4a, + 0xff,0xff,0xa5,0x2a,0xa9,0xff,0xff,0x17,0x25,0xe9,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x9a,0xfc,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0x2a,0xff,0x7f,0x95,0x54,0x80,0xff,0xff,0x07,0xa9,0xea,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1d,0xfc, + 0xff,0x7f,0xff,0xff,0xff,0xff,0x3f,0xa9,0xfe,0x7f,0xa9,0x12,0xe5,0xff,0xff, + 0x5f,0x4a,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x5f,0xad,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x95,0xea,0x97,0x54, + 0x4a,0xf0,0xff,0xff,0x1f,0xa8,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x5f,0x0e,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f, + 0x52,0x55,0xa9,0x92,0x02,0xfd,0xff,0xff,0x5f,0x53,0xf5,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x5e,0xfe,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xbf,0x2a,0x49,0x4a,0x55,0x49,0xfc,0xff,0xff,0x3f,0x94,0xf8, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x0f, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f,0xa5,0xaa,0x92,0xa4,0x20,0xff,0xff, + 0xff,0xbf,0xa4,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x5f,0x57,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x52,0x52,0xaa, + 0x2a,0x0a,0xff,0xff,0xff,0x7f,0x54,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0x07,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xa7,0x94,0x4a,0x55,0x4a,0xa0,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0x2f,0x55,0xa9,0x92,0x12,0xe9,0xff,0xff,0xff,0x7f,0x24, + 0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf, + 0x87,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0xa5,0x4a,0xaa,0x44,0xf4,0xff, + 0xff,0xff,0xff,0x55,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xa7,0xab,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xab,0x94,0xa4, + 0x92,0x12,0xf9,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xab,0x83,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0x47,0xa9,0x2a,0x55,0x40,0xfc,0xff,0xff,0xff,0xff,0x25,0xf5,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xd7,0x97,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0x33,0x55,0xa9,0x24,0x15,0xfe,0xff,0xff,0xff,0xff, + 0x95,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff, + 0x93,0xc3,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x25,0xa5,0x2a,0x40,0xff, + 0xff,0xff,0xff,0xff,0xa9,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff, + 0xff,0xff,0xff,0xff,0xe7,0xd5,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4b,0x92, + 0x54,0x92,0xd4,0xff,0xff,0xff,0xff,0xff,0x55,0xf5,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0xff,0xd5,0xc1,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0x97,0xaa,0x4a,0x05,0xe2,0xff,0xff,0xff,0xff,0xff,0x25,0xf1,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xfd,0xff,0xff,0xff,0xff,0xd5,0xea,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x55,0x25,0xa1,0xf0,0xff,0xff,0xff,0xff, + 0xff,0x95,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe8,0xfa,0xff,0xff,0xff, + 0xff,0xea,0xe0,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xa7,0x24,0x59,0x04,0xfa, + 0xff,0xff,0xff,0xff,0xff,0xa9,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe2, + 0xfd,0xff,0xff,0xff,0xff,0xc9,0xe9,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f, + 0x52,0x05,0xa1,0xfc,0xff,0xff,0xff,0xff,0xff,0xa5,0xfa,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x70,0xf9,0xff,0xff,0xff,0xff,0x74,0xe2,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0x47,0x95,0x92,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0xf8, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xe2,0xfa,0xff,0xff,0xff,0xff,0x72,0xe8, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x97,0xaa,0x20,0xd0,0xff,0xff,0xff,0xff, + 0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb8,0xfc,0xff,0xff, + 0xff,0xff,0xea,0xe2,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x07,0x04,0x82,0xc2, + 0xff,0xff,0xff,0xff,0xff,0xff,0x29,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0x71,0xfd,0xff,0xff,0xff,0x7f,0x2a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0x4f,0x91,0x28,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xff, + 0xff,0xff,0xff,0x1f,0x54,0xfe,0xff,0xff,0xff,0x7f,0x75,0xf2,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0x27,0x44,0x82,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x29, + 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xb8,0xfc,0xff,0xff,0xff,0xbf,0x14, + 0xf1,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x0f,0x11,0x20,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x9a,0xfe,0xff, + 0xff,0xff,0x7f,0x5a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x40,0x85, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x4f,0x2d,0xfd,0xff,0xff,0xff,0x9f,0x12,0xf9,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0x3f,0x14,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfe,0xff,0xff, + 0xff,0xff,0xff,0xff,0x07,0xa6,0xfe,0xff,0xff,0xff,0x5f,0x4d,0xfa,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0x40,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x4b,0xfe,0xff,0xff,0xff,0xbf, + 0x2c,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x43,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x57,0xff, + 0xff,0xff,0xff,0x5f,0x0a,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xd5,0xa9,0xff,0xff,0xff,0xff,0xaf,0x5a,0xfc,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa3,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x81,0x95,0xff,0xff,0xff,0xff,0x9f,0x06,0xfd,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xa5,0xff,0xff,0xff,0xff, + 0x2f,0x95,0xfc,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0xea, + 0xff,0xff,0xff,0xff,0xaf,0x26,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xf5,0xf4,0xff,0xff,0xff,0xff,0xaf,0x86,0xfe,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0x70,0xe5,0xff,0xff,0xff,0xff,0x4f,0x2e,0xfe, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xb2,0xfa,0xff,0xff,0xff, + 0xff,0x57,0x83,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x78, + 0xf2,0xff,0xff,0xff,0xff,0xa7,0x22,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x5f,0x5d,0xfd,0xff,0xff,0xff,0xff,0x97,0x87,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x3c,0xfd,0xff,0xff,0xff,0xff,0x53,0xa3, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xac,0xfe,0xff,0xff, + 0xff,0xff,0x57,0x95,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, + 0x9e,0xfe,0xff,0xff,0xff,0xff,0x97,0x81,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xa7,0x57,0xfe,0xff,0xff,0xff,0xff,0xa9,0xa5,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xaf,0xff,0xff,0xff,0xff,0xff,0x4b, + 0x89,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0x93,0xff,0xff, + 0xff,0xff,0xff,0x95,0xa2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x83,0xab,0xff,0xff,0xff,0xff,0xff,0xd3,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff, + 0xff,0xff,0xff,0xff,0xe9,0xa5,0xff,0xff,0xff,0xff,0xff,0xa5,0xe1,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xd5,0xff,0xff,0xff,0xff,0xff, + 0xd5,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xea,0xea,0xff, + 0xff,0xff,0xff,0xff,0x14,0xc1,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff, + 0xff,0xe0,0xe4,0xff,0xff,0xff,0xff,0xff,0x65,0xe8,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf, + 0xff,0xff,0xff,0xff,0x3f,0x72,0xe9,0xff,0xff,0xff,0xff,0xff,0x6a,0xe1,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xbf,0xb8,0xfa,0xff,0xff,0xff,0xff, + 0xff,0x52,0xea,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0x1f,0x7a,0xf5, + 0xff,0xff,0xff,0xff,0x7f,0x2a,0xe0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff, + 0xff,0x8f,0x58,0xfa,0xff,0xff,0xff,0xff,0x7f,0x25,0xf5,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xb5,0xff,0xff,0xdf,0xff,0x57,0x5e,0xfd,0xff,0xff,0xff,0xff,0xff,0x34,0xe0, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xca,0xff,0xff,0x8f,0xff,0x07,0xac,0xfc,0xff,0xff,0xff, + 0xff,0x7f,0x2a,0xf5,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd4,0xff,0xff,0x57,0xff,0x2b,0x2d, + 0xfd,0xff,0xff,0xff,0xff,0xff,0xb2,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd2,0xff,0xff, + 0x07,0xff,0x43,0x4a,0xff,0xff,0xff,0xff,0xff,0xbf,0x2a,0xf8,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x3f,0xc5,0xff,0xff,0x2b,0xfe,0x08,0xab,0xfe,0xff,0xff,0xff,0xff,0x7f,0xaa, + 0xf2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xbf,0xea,0xff,0xff,0x83,0x36,0x20,0x55,0xff,0xff,0xff, + 0xff,0xff,0x3f,0x15,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xc2,0xff,0xff,0x48,0x4a,0x85, + 0x49,0xff,0xff,0xff,0xff,0xff,0x7f,0x59,0xfa,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xf5,0xff, + 0x7f,0x10,0x29,0x50,0xa5,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xf9,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x97,0xe4,0xff,0x7f,0x05,0x95,0x42,0xd5,0xff,0xff,0xff,0xff,0xff,0x7f, + 0x35,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xab,0xea,0xff,0xbf,0xa0,0x24,0xa8,0xd4,0xff,0xff, + 0xff,0xff,0xff,0x7f,0x19,0xf9,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x27,0xe5,0xff,0x3f,0x92,0xaa, + 0x50,0xe9,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0xe2, + 0xff,0x9f,0xa0,0xaa,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xf9,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x95,0xf8,0xff,0x5f,0x4a,0x92,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff, + 0xbf,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xf2,0xff,0x1f,0x20,0x49,0xa5,0xfa,0xff, + 0xff,0xff,0xff,0xff,0x5f,0x1a,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaa,0xf8,0xff,0x47,0xa9, + 0x2a,0x29,0xf9,0xff,0xff,0xff,0xff,0xff,0xbf,0x0a,0xfc,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49, + 0xf2,0xff,0x17,0x92,0xaa,0xaa,0xfe,0xff,0xff,0xff,0xff,0xff,0x9f,0xac,0xfe, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x9f,0x2a,0xf8,0xff,0x43,0xa8,0x24,0x25,0xff,0xff,0xff,0xff,0xff, + 0xff,0xaf,0x0a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xfa,0xff,0x91,0x54,0xaa,0x52,0xff, + 0xff,0xff,0xff,0xff,0xff,0x2f,0x4d,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x45,0xfc,0xff,0x03, + 0x92,0x52,0xaa,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x06,0xfc,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf, + 0x12,0xfe,0xff,0x50,0xaa,0x2a,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xa5, + 0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xa7,0x44,0xff,0xff,0x0a,0x25,0xa5,0xa4,0xff,0xff,0xff,0xff, + 0xff,0xff,0x97,0x06,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x15,0xff,0xff,0x40,0xa9,0x92,0xea, + 0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x55,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xa1,0xff,0x7f, + 0x92,0x4a,0xaa,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x06,0xfc,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x95,0x8a,0xff,0x3f,0x84,0x54,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0x2f, + 0x25,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x52,0xe0,0xff,0xbf,0x50,0xa9,0x4a,0xf2,0xff,0xff,0xff, + 0xff,0xff,0xff,0xa7,0x8e,0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa9,0xea,0xff,0x3f,0x24,0x95,0x54, + 0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x23,0xfe,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x4a,0xf0,0xff, + 0x9f,0x50,0x69,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x8b,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xa5,0xf4,0xff,0x0f,0x2d,0x75,0xaa,0xfa,0xff,0xff,0xff,0xff,0xff,0xff, + 0xaf,0x03,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x9f,0x14,0xfa,0xff,0x2f,0xa8,0xfa,0x25,0xfd,0xff,0xff, + 0xff,0xff,0xff,0xff,0x97,0xd7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xaa,0xfc,0xff,0x0f,0x4d,0xfd, + 0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0x83,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x12,0xfc, + 0xff,0x27,0x92,0xfe,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xd7,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x97,0x0a,0xff,0xff,0x83,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xef,0xc7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xab,0x24,0xff,0xff,0x2b,0xaa,0xfe,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xe7,0xef,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0x05,0x95, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x82, + 0xff,0xff,0x51,0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xa9,0xe8,0xff,0xff,0x85,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xc1,0xff,0xff,0x90,0xd5,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x4d,0xe8,0xff,0xff,0xa5, + 0xe4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x51, + 0xf2,0xff,0x7f,0x40,0xd5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x3f,0x95,0xf8,0xff,0x7f,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x15,0xfa,0xff,0x3f,0xa4,0xf4,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xa4,0xfc,0xff,0x7f, + 0x71,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f, + 0x15,0xfe,0xff,0x3f,0x94,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xa7,0x0a,0xff,0xff,0x1f,0x79,0xf2,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xa4,0xff,0xff,0x5f,0x8c,0xfa,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x82,0xff,0xff, + 0x1f,0x5c,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xa4,0x92,0xff,0xff,0xbf,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x9a,0xc4,0xff,0xff,0x0f,0x2e,0xfd,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa2,0xf0,0xff,0xff,0xaf,0xa7,0xfe, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x55,0xe4,0xff, + 0xff,0x0f,0x57,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xbf,0x54,0xf2,0xff,0xff,0x9f,0x4b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x9f,0x92,0xf8,0xff,0xff,0xc7,0xab,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x15,0xfe,0xff,0xff,0x97,0xd7, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0x94,0xfc, + 0xff,0xff,0xc7,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x2f,0x05,0xfe,0xff,0xff,0xcf,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x53,0xa9,0xff,0xff,0xff,0xd3,0xeb,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x05,0xff,0xff,0xff,0xe3, + 0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0xc2, + 0xff,0xff,0xff,0xeb,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x95,0xc8,0xff,0xff,0xff,0xf3,0xfa,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xd2,0xff,0xff,0xff,0xff,0xf5,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xaa,0xe0,0xff,0xff,0xff, + 0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49, + 0xf8,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x9f,0x2a,0xf5,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x4a,0xf8,0xff,0xff,0xff,0xff,0xfc,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x14,0xfd,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97, + 0x4a,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xab,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x52,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x85,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x54,0xa2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x4a,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xe0,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xe4,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x5f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xbf,0x12,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x54,0xfa,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x0a,0xfc, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x53,0x45,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x97,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0x82, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x4a,0xe9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x52,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x55,0xe8,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24, + 0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24,0xf9,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xfe,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f, + 0x49,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x2f,0x95,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x01,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x57,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x97,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xe0,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x93,0xf4,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x57,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x2b,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xfc,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfc, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x05,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x49,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x22,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x89, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xe9,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0x9f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf9,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0x6f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f}; diff --git a/etc/gnus/gnus.xpm b/etc/gnus/gnus.xpm new file mode 100644 index 0000000..8783781 --- /dev/null +++ b/etc/gnus/gnus.xpm @@ -0,0 +1,284 @@ +/* XPM */ +static char *gnus[] = { +/* width height num_colors chars_per_pixel */ +" 271 273 3 1", +/* colors */ +". s thing c #bf9900", +"# s shadow c #ffcc00", +"a s background c None", +/* pixels */ +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........######aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............#######aaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................######aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................######aaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................#######aaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................#######aaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........................#######aaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........................######aaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........................######aaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................#######aaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............................#######aaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................aaaaaaaaaaaaaaaaaaaaaa...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............................#######aaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................aaaaaaaaaaaaaaaaaaa...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............................#######aaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................aaaaaaaaaaaaaaaa....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................########aaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......................aaaaaaaaaaaaaa........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................................#######aaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........................aaaaaaaaaaa............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................................########aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........................aaaaaaaaa..............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................aaaaaaa................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............................aaaaa..................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......######.......................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................aaaa...................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#######aa....................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................................aa.....................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaa.................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................a......................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaa................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaa...............#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaa...............#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaa..............#######aaaaa", +"aaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaa..............#######aaaaa", +"aaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaa.............#######aaaaa", +"aaaaaaaa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............####....................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaa............########aaaaa", +"aaaaaaa.........aaaaaaaaaaaaaaaaaaaaaaaaaaa.............########...................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaa...........########aaaaa", +"aaaaaaa...........aaaaaaaaaaaaaaaaaaaaaaa.............############..................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaa...........########aaaaa", +"aaaaaaaa..........aaaaaaaaaaaaaaaaaaaaaa.............##############..................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaa...........########aaaaa", +"aaaaaaaa...........aaaaaaaaaaaaaaaaaaaa............##################.......................##########................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaa..........########aaaaa", +"aaaaaaaa............aaaaaaaaaaaaaaaaaa............####################....................###############..............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaa..........#######aaaaaa", +"aaaaaaaa............aaaaaaaaaaaaaaaa..............#####################.................#####################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaa..aaaaa###aaaaaaaaaaaaaaaaaa..........#######aaaaaa", +"aaaaaaaa.............aaaaaaaaaaaaaa..............#######################...............#######################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaa..aaaaa##aaaaaaaaaaaaaaaaaaa..........#######aaaaaa", +"aaaaaaaaa.............aaaaaaaaaaa...............##########aa#############.............#########################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaa..........#######aaaaaa", +"aaaaaaaaa.............aaaaaaaaa................#########aaaaaaa###########............##########################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", +"aaaaaaaaa................aaaa..................#######aaaaaaaaaa###########..........############################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", +"aaaaaaaaa.....................................######aaaaaaaaaaaaa###########.........#############################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", +"aaaaaaaaa....................................######aaaaaaaaaaaaaaaa#########........###############################.........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", +"aaaaaaaaaa.................................#######aaaaaaaaaaaaaaaaaa#########.......#######aaaaaaaaaaa##############..........................aaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", +"aaaaaaaaaa................................#######aaaaaaaaaaaaaaaaaaaa########......#####aaaaaaaaaaaaaaaaa############..........................aaaaaaaaaaaaaaaaaaaaaaaaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", +"aaaaaaaaaa...............................########aaaaaaaaaaaaaaaaaaaaa########....#####aaaaaaaaaaaaaaaaaaaaa##########..........................aaaaaaaaaaaaaaaaaaaaaaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", +"aaaaaaaaa#..............................########aaaaaaaaaaaaaaaaaaaaaaaa#.####...#####aaaaaaaaaaaaaaaaaaaaaaa##########...........................aaaaaaaaaaaaaaaaaaaa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", +"aaaaaaaaa#.............................########aaaaaaaaaaaaaaaaaaaaaaaaa...###..######aaaaaaaaaaaaaaaaaaaaaaaa##########...........................aaaaaaaaaaaaaaaaaaa......a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........########aaaaaaa", +"aaaaaaaa###...........................#########aaaaaaaaaaaaaaaaaaaaaaaa....##########aaaaaaaaaaaaaaaaaaaaaaaaaa##########............................aaaaaaaaaaaaaaa........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........########aaaaaaa", +"aaaaaaaa###..........................#########aaaaaaaaaaaaaaaaaaaaaaaaa....#########aaaaaaaaaaaaaaaaaaaaaaaaaaaa##########...............................aaaaaaaa...........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........########aaaaaaa", +"aaaaaaaa###.........................#########aaaaaaaaaaaaaaaaaaaaaaaaa....a#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaa##########................................................##aaaaaa...aaaaaaaaaaaaaaaaaaaaa......a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", +"aaaaaaa####........................#########aaaaaaaaaaaaaaaaaaaaaaaaa....aaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...............................................##aaaaaa....aaaaaaaaaaaaaaaaaaa.......a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", +"aaaaaaa####.......................########aaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########..............................................##aaaaa.....aaaaaaaaaaaaaaaaaa.......a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", +"aaaaaa######....................#########aaaaaaaaaaaaaaaaaaaaaaaaaa.....a#aaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########............................................##aaaaaa......aaaaaaaaaaaaaaa.........a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", +"aaaaaa######...................#########aaaaaaaaaaaaaaaaaaaaaaaaaa......##aaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...........................................##aaaaa.......aaaaaaaaaaaaa..........aa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", +"aaaaaa#######.................#########aaaaaaaaaaaaaaaaaaaaaaaaaaa.....a###aaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.........................................###aaaaa.........aaaaaaa..............a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........########aaaaaaaa", +"aaaaaaa#######...............#########aaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########........................................##aaaaa...............................a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaaa", +"aaaaaaa########............##########aaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.......................................##aaaaa...............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaaa", +"aaaaaaaa##########.......###########aaaaaaaaaaaaaaaaaaaaaaaaaaa......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.....................................###aaaaa..............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaaa", +"aaaaaaaaa##########################aaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########....................................##aaaaa...............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........########aaaaaaaaa", +"aaaaaaaaa#########################aaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########..................................###aaaaa..............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaa", +"aaaaaaaaaa#######################aaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...............................####aaaaa..............................######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaa", +"aaaaaaaaaaa#####################aaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.............................#####aaaaa.............................#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaa", +"aaaaaaaaaaa###################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...........................######aaaa..............................######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......########aaaaaaaaaa", +"aaaaaaaaaaaa#################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.........................######aaaaa.............................#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaaa", +"aaaaaaaaaaaaa###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaa#########.......................#######aaaa.............................#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaaa", +"aaaaaaaaaaaaaaa###########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aaaaaaaaaaaaaaaa#########....................#########aaaa............................########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaaaaaaaaaaaaa#########..................#########aaaaa..........................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........aaaaaaaaaaaaaaa###########.............###########aaaaa.........................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............aaaaaaaaaaaaaaa##############....###############aaaaaaa.......................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............aaaaaaaaaaaaaaa##############################aaaaaaaaa.....................############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............aaaaaaaaaaaaaaa############################aaaaaaaaaaa...................############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaa................aaaaaaaaaaaaaaaa##########################aaaaaaaaaaaa#................#############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaa.................aaaaaaaaaaaaaaaa########################aaaaaaaaaaaaa##..............#############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaa...................aaaaaaaaaaaaaaaa######################aaaaaaaaaaaaa#####.........###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaa....................aaaaaaaaaaaaaaaaa###################aaaaaaaaaaaaaaa########..##################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaa....................aaaaaaaaaaaaaaaaaaa################aaaaaaaaaaaaaaaa###########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaa......................aaaaaaaaaaaaaaaaaaaaa###########aaaaaaaaaaaaaaaaaa##########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaa.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaaa.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa........a###a.........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaaaaa........a####a.........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaa........a#####aaa.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaa#.....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaa##....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaa..........######aaaaa#####..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaa...........#####aaaaa#######..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaaaa...........#####aaaaaa#######..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaaaa...........######aaaaa#########.................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaaa...........######aaaaa###########................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaa............#######aaaaaaa##########...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......####aaaaaaaaaaaaaaaaaaaaaa............#######aaaaaaaaa#########...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaa............#######aaaaaaaaaaaa########..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......###aaaaaaaaaaaaaaaaaaaaa............#########aaaaaaaaaaaaa#######..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......###aaaaaaaaaaaaaaaaaaa.............#########aaaaaaaaaaaaaaa#######.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaaaaaa.............#########aaaaaaaaaaaaaaaaa######.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaaaa..............#########aaaaaaaaaaaaaaaaaaa#####.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaa...............#########aaaaaaaaaaaaaaaaaaaa#####.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........aaaaaaaaaaaaa...............#########aaaaaaaaaaaaaaaaaaaaaa#####............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............aaaaa..................########aaaaaaaaaaaaaaaaaaaaaaaaa####............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................................########aaaaaaaaaaaaaaaaaaaaaaaaaa####...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....................................########aaaaaaaaaaaaaaaaaaaaaaaaaaaa###...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa####aaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaa####..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa####aaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa####aaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................###########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#...................############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##................#############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.......##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###............##############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#......###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####.........###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#......###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######..###################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######a.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#....####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######a......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#...####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##..####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#aaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaa#######aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#aaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaa#######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#aaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaa########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#aaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaa########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#aaaaaaaaaaaaaaaaaaaa#######aaaaaaa#########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......##aaaaaaaaaaaaaaaaaaa########a..aa##########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........##aaaaaaaaaaaaaaaaaa#########....##########a........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaaaaa#########......#########........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#aaaaaaaaaaaaaaaaaa#########......########a........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........##aaaaaaaaaaaaaaaaa#########.......#######.........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........##aaaaaaaaaaaaaaaaa########.........#####.........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........###aaaaaaaaaaaaaaaa########........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........###aaaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........###aaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........####aaaaaaaaaaaaaaa#########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaa#########......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaa#########......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa#########......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa#######........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaa#######.........a..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa#######a........aaa............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaa#######........aaaaa..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaa#######a.......aaaaaaa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaa######a........aaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaa#######........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaa#######.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaa#######a......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaa#######.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaa#######.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaa#####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaa####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaa#####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaa####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaa####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaa###aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaa####aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaa####aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaa###aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaa###aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaa####aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaa###aaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaa###aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +}; +SIMPLE = T BITPIX = 8 NAXIS = 2 NAXIS1 = 271 NAXIS2 = 273 HISTORY Written by XV 3.10a END ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëŽëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëŽë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎뽽½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎뽽½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Ž½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Ž½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Ž½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Ž½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëë½ëëëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½ëëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ëëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½ëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëë½½½ëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëëë½½½½ëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëë½½½½ëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëë½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëë½½½½ë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëë½½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëë½½½½½ë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëë½½½½ë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëë½½½½½ë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëë½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëë½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëë½½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëë½½½½½½½ŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëë½½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëë½½½½½½½ŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëë½½½½½½½ëŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëë½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëë½½½½½½½ŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëë½½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëŽëëëëëë½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëë½½½½½½½ŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ëëëëëë½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëë½½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëë½½½½½½ëŽŽŽŽŽŽŽŽëëëëëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëë½½½½½½½ëŽŽŽŽŽŽŽëëëëëë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëë½½½½½½½ŽŽŽŽŽŽŽŽëëëë뎎ŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëë½½½½½½½ëŽŽŽŽŽŽŽŽëë뎎ŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëë½½½½½½½ŽŽŽŽŽŽŽŽŽëŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëë½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½ëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½ëëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½ëëëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½ëëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½ëëëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽ½½½½½ŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½ëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽ½½½½½½½ŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½ëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽ½½½½½½½½ëŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½ëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽ½½½½½½½½½ŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½ëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽ½½½½½½½½½½ëŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½ëëëëëëëëëëëëëëëëëëë½½½½½½½½ëŽŽëë½½½½½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½ëëëëëëëëëëëëëëëëëëëë½½½½½½½ëëëëëëë½½½½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽ½ëëëëëëëëëëëëëëëëëëëëë½½½½½ëëëëëëëëë½½½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽ½ëëëëëëëëëëëëëëëëëëëëë½½½½½ëëëëëëëëëë½½½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½ëëëëëëëëëëëëëëëëëëëëëë½½½ëëëëëëëëëëëë½½½½½½½ë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½ëëëëëëëëëëëëëëëëëëëëëë½ëëëëëëëëëëëëë½½½½½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½ë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½ŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽ½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ëŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½ëŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽ½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽ½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½ëŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ŽŽ½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽ½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½ŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽŽ½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽŽ½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽŽŽ½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½ë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽŽŽŽ½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëë뎎Žëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽŽŽŽ½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½ëë뎎Žëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽŽŽŽ½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½ëëë뎎ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽŽŽŽŽ½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽŽŽŽŽ½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽŽŽŽŽ½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뽎ŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½ŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½ŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½ŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½ŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëë½½½½ŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëë½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½ëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëë½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½ëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëë½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½ëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëë½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽ½½½ëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëë½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽ½½½ëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëë½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëë½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽ½½½½½½ëëëëë½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽ½½½½½½ëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½ëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽ½½½½½ëëëëëë½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½ëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽ½½½½½ëëëëë½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½ëëëëë½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½ëëëëëë½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½ëëëë뽎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽë½½½½½ëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽë½½½½ëŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽë½½½ëŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½ëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëë½½½½½½½½ŽŽ½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëë½½½½½ŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëë½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëŽëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëë뽎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëë½½½½½½½½½½½½½½ŽŽŽŽ½½½½½½½½½½½½½½½ëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëë½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½ëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½ëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½ëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½ëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëë½½½½½½½½½½½½½½½½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½ëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëë½½½½½½½½½½ŽŽŽŽŽŽŽ½½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½ëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽë½½½½ëëëë½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½ëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëë½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽë½½½½ëëë½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½ëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëë½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽë½½½ëëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½ëëëë뎎ŽŽŽŽŽŽŽëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëë½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽ½½ëëë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½ëëëë뎎ŽŽŽŽŽëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽëë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëë½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽë½ëëë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½ëëëëë뎎ŽŽŽŽëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëë½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½ëëëë뎎ŽŽŽëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëë½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëë½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½ëëëëë뎎ŽŽëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëë½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽë½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½ëëëëë뎎Žëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëë½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëë뎎ŽŽŽŽŽŽŽŽŽ½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëë½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽ½½½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽ½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëë뽎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëë뎎Ž½½½ŽŽ½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽë½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëë뽎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëë뽎½½½½ŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëë½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëëëëëë½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽë½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëë½½½½½½½½ŽŽŽŽŽŽ½½½½½ëëëëëëëëëëëëëëëëë½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëë½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ëëëëëëëëëëëëëëëë½½½½½½½½½ŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ëëëëëëëëëëëëë½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëë½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½ëëëëëëë½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ëë½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëëëëëëëëëë½½ëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ëëëëë뎎ëëëëë½½ëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ëëëëë뎎ëëëëë½½½ëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽëëë½½½½½ëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëë½½½½½½ëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëë뎎ŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½½ëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëë뎎ŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽ½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½½ëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëë뎎ŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëë뎎ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽë½½½½½½ëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½ëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½½ëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽë½½½½½½ëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½ëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëë½½½½½½ëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽëë½½½½½½½ë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽ½½½½½½ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽŽŽŽ½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽŽŽŽ½½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎ŽŽŽŽŽŽŽŽ½½½½½½ëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë뎎Žëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë \ No newline at end of file diff --git a/etc/smilies/frown.pbm b/etc/smilies/frown.pbm new file mode 100644 index 0000000..f51ea4f Binary files /dev/null and b/etc/smilies/frown.pbm differ diff --git a/etc/smilies/smile.pbm b/etc/smilies/smile.pbm new file mode 100644 index 0000000..f64e883 Binary files /dev/null and b/etc/smilies/smile.pbm differ diff --git a/etc/smilies/wry.pbm b/etc/smilies/wry.pbm new file mode 100644 index 0000000..5fa5e9f Binary files /dev/null and b/etc/smilies/wry.pbm differ diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 27e082d..9033a5f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,1929 @@ +2000-12-31 11:00:00 ShengHuo ZHU + + * qp.el (quoted-printable-decode-region): Don't backward-char. + +2000-12-25 00:00:00 ShengHuo ZHU + + * dgnushack.el (dgnushack-compile): elc is in the current directory. + + * qp.el (quoted-printable-encode-region): Don't check multibyte in + XEmacs. + +2000-12-25 Simon Josefsson + + * starttls.el: Sync with Emacs 21. + +2000-12-22 12:00:00 ShengHuo ZHU + + * gnus-vm.el (gnus-summary-save-article-vm): Require gnus-art + before binding gnus-default-article-saver. + + * gnus-sum.el (gnus-summary-save-article): + (gnus-summary-pipe-output): + (gnus-summary-save-article-mail): + (gnus-summary-save-article-rmail): + (gnus-summary-save-article-file): + (gnus-summary-write-article-file): + (gnus-summary-save-article-body-file): Ditto. + + * gnus-mh.el (gnus-summary-save-article-folder): Ditto. + +2000-12-22 09:00:00 ShengHuo ZHU + + * messagexmas.el (message-xmas-redefine): New function. + + * message.el: Use it. + + * gnus-art.el (gnus-article-check-hidden-text): Return t. + + * gnus-util.el (gnus-remove-text-properties-when): Return t. + +2000-12-22 02:00:00 ShengHuo ZHU + + * Makefile.in (install-el): New. + +2000-12-21 Katsumi Yamaoka + + * gnus-art.el (article-treat-dumbquotes): Quote \. + +2000-12-21 22:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-treat-emphasize): Don't treat emphasis if + Emacs 20 runs on a terminal. + +2000-12-21 14:00:00 ShengHuo ZHU + + * mml.el (gnus-add-minor-mode): Autoload. + + * message.el (message-forward): Save-restriction. + +2000-12-21 Kai Gro,A_(Bjohann + + * gnus-art.el (article-treat-dumbquotes): More doc, provided by + Paul Stevenson + +2000-12-21 10:00:00 ShengHuo ZHU + + * gnus-ml.el (gnus-mailing-list-mode-map): Use C-c C-n prefix. + + * gnus.el (gnus-decode-rfc1522): Removed. + (gnus-set-text-properties): Define. + +2000-12-21 09:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-mime-*): handle may be nil. + + * gnus-sum.el (gnus-summary-mode): Turn on gnus-mailing-list-mode. + + * gnus.el (gnus-group-remove-excess-properties): Not defined + in gnus-xmas. + +2000-12-20 21:00:00 ShengHuo ZHU + + * message.el (message-mail-user-agent): Add :version. + +2000-12-21 Miles Bader + + * message.el (message-mode): Set `comment-start' to the yank prefix. + +2000-12-20 17:00:00 ShengHuo ZHU + + * message.el (message-mail-user-agent): New variable. + (message-setup): Renamed to message-setup-1. Support + mail-user-agent. + (message-mail-user-agent): New function. + (message-mail): Use it. + (message-reply): Use it. + (message-resend): Use it. + (message-mail-other-window): Use it. + (message-mail-other-frame): Use it. + +2000-12-20 15:00:00 ShengHuo ZHU + + * message.el (message-tool-bar-map): Simplify. + (message-narrow-to-head-1): New function. + (message-narrow-to-head): Use it. + (message-reply): Ditto. + (message-cancel-news): Ditto. + (message-supersede): Ditto. + (message-make-forward-subject): Ditto. + (message-bounce): Ditto. + +2000-12-20 11:00:00 ShengHuo ZHU + + * uudecode.el (uudecode-decode-region-external): make-temp-file + may not be defined. + + * binhex.el (defalias): eval-and-compile. + + * message.el (message-tool-bar-map): New function. + (message-mode): Use it. + +2000-12-20 09:00:00 ShengHuo ZHU + + * nntp.el (nntp-find-connection): Remove the entry. + (nntp-retrieve-groups): (gnus-buffer-live-p buf). + +2000-12-20 04:00:00 ShengHuo ZHU + + * message.el (message-make-forward-subject): Don't widen. Decode. + (message-forward): Don't decode subject. + +2000-12-20 Christoph Conrad + + * qp.el (quoted-printable-encode-region): Upcase QP. + +2000-12-20 02:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-insert-mime-button): Simplify. + (gnus-mime-display-alternative): Ditto. + (gnus-insert-mime-security-button): Ditto. + +2000-12-20 01:00:00 ShengHuo ZHU + + * gnus-util.el (gnus-add-text-properties-when): In XEmacs, + text-property-not-all doesn't return nil when start=mark(end). + (gnus-remove-text-properties-when): Ditto. + +2000-12-19 22:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-insert-mime-button): Emacs20 needs local-map. + (gnus-mime-display-alternative): Ditto. + (gnus-insert-mime-security-button): Ditto. + +2000-12-19 19:00:00 ShengHuo ZHU + + * nnmbox.el (nnmbox-file-coding-system): Use binary. + (nnmbox-active-file-coding-system): Ditto. + +2000-12-19 18:00:00 ShengHuo ZHU + + * gnus.el (gnus-version): + (gnus-version-number): Set to Oort Gnus 0.01. + + * gnus-art.el (gnus-mime-security-button-map): + (gnus-insert-mime-security-button): Fix for Emacs21. + +2000-12-19 Raymond Scholz + + * gnus-art.el (gnus-article-dumbquotes-map): Add EUR symbol. + +2000-12-15 10:00:00 ShengHuo ZHU + + * pop3.el (pop3-movemail): Use binary. + (pop3-movemail-file-coding-system): Removed. + +2000-12-14 13:00:00 ShengHuo ZHU + + * mm-util.el (mm-charset-synonym-alist): Add cn-gb. + +2000-12-13 13:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-post-method): Use backend name when the + address is "". + +2000-12-04 22:00:00 ShengHuo ZHU + + * gnus-win.el (gnus-configure-frame): Save selected window. + +2000-12-04 14:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if + succeed. + +2000-12-04 13:00:00 ShengHuo ZHU + + * gnus-win.el (gnus-configure-windows): Make sure + nntp-server-buffer is live. + (gnus-remove-some-windows): switch-to-buffer -> set-buffer. + +2000-11-21 Stefan Monnier + + * gnus-win.el (gnus-configure-windows): switch-to-buffer -> set-buffer. + +2000-12-04 Andreas Jaeger + + * gnus-msg.el (gnus-summary-mail-forward): Fix typos in description. + +2000-12-01 Christopher Splinter + + * gnus-sum.el (gnus-summary-limit-to-age): Fix typo. + +2000-11-30 19:00:00 ShengHuo ZHU + + * gnus-util.el (gnus-add-text-properties-when): New function. + (gnus-remove-text-properties-when): Ditto. + + * gnus-cite.el (gnus-article-hide-citation): Use them. + (gnus-article-toggle-cited-text): Use them. + + * gnus-art.el (gnus-signature-toggle): Use them. + (gnus-article-show-hidden-text): Ditto. + (gnus-article-hide-text): Ditto. + +2000-11-30 14:00:00 ShengHuo ZHU + + * mm-util.el (mm-find-charset-region): Remove eight-bit-*. + +2000-11-29 21:00:00 ShengHuo ZHU + + * nndraft.el (nndraft-request-restore-buffer): Remove Date field. + +2000-11-29 00:00:00 ShengHuo ZHU + + * nnmail.el (nnmail-cache-accepted-message-ids): Add doc. + +2000-11-28 17:00:00 ShengHuo ZHU + + * message.el (message-shoot-gnksa-feet): New variable. + (message-gnksa-enable-p): New function. + (message-send): Use it. + (message-check-news-body-syntax): Ditto. + +2000-11-28 Katsumi Yamaoka + + * message.el (message-make-message-id): Remove the redundancy. + +2000-11-22 14:00:00 ShengHuo ZHU + + * gnus-ml.el (gnus-mailing-list-insinuate): New function. + +2000-11-22 13:00:00 ShengHuo ZHU + + * gnus-ml.el (gnus-mailing-list-archive): Find the real url. + +2000-11-22 11:00:00 ShengHuo ZHU + + * message.el (message-send-mail): Use buffer-substring-no-properties. + (message-send-news): Ditto. + +2000-11-22 David Edmondson + + * imap.el (imap-wait-for-tag): Message read info. + +2000-11-20 18:00:00 ShengHuo ZHU + + * gnus-ml.el (gnus-mailing-list-archive): Use browse-url. + +2000-11-20 17:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-article-make-menu-bar): Use easy-menu-add. + +2000-11-20 16:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-article-describe-key): Use prompt. + (gnus-article-describe-key-briefly): Ditto. + +2000-11-20 15:00:00 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-expire): Ignore corrupted history. + +2000-11-20 10:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-article-describe-key): New function. + (gnus-article-describe-key-briefly): New function. + +2000-11-19 23:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-article-read-summary-keys): lookup-key may + return a number. + +2000-11-17 Per Abrahamsen + + * gnus-msg.el (gnus-group-posting-charset-alist): No longer allow + raw 8-bit in headers in dk.* newsgroups. + +2000-11-16 23:31 ShengHuo ZHU + + * mml.el (mml-generate-mime-1): Ignore ascii. + +2000-11-16 Justin Sheehy + + * gnus-sum.el (gnus-summary-make-menu-bar): Fix menu items. + +2000-11-14 10:32:42 ShengHuo ZHU + + * mailcap.el (mailcap-possible-viewers): Match the entire string. + +2000-11-14 00:48:52 ShengHuo ZHU + + * gnus-bcklg.el (gnus-backlog-enter-article): Don't enter + nnvirtual articles. + (gnus-backlog-request-article): Don't request nnvirtual articles. + +2000-11-13 09:50:29 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-repair-multipart): Fix Mime-Version + anyway. + +2000-11-12 21:35:04 ShengHuo ZHU + + * rfc2231.el (rfc2231-encode-string): Insert semi-colon and + leading space. + +2000-11-12 19:48:30 ShengHuo ZHU + + * gnus-sum.el (gnus-select-newsgroup): Change the error message. + +2000-11-12 11:53:18 ShengHuo ZHU + + * gnus-art.el (gnus-mime-button-menu): Use select-window. + +2000-11-12 09:47:54 ShengHuo ZHU + + * gnus-art.el (gnus-mime-display-part): Display multipart/related + as multipart/mixed. + +2000-11-11 15:55:35 ShengHuo ZHU + + * mm-uu.el (mm-uu-type-alist): Stricter shar regexp. + +2000-11-10 09:01:25 ShengHuo ZHU + + * gnus-art.el (gnus-mime-display-alternative): Show button if no + preferred part. + +2000-11-07 Kai Gro,A_(Bjohann + + * gnus-sum.el (gnus-move-split-methods): Say that + `gnus-split-methods' uses file names, whereas this uses group + names. (Report from Nevin Kapur) + +2000-11-10 01:23:20 ShengHuo ZHU + + * mm-partial.el (mm-inline-partial): Insert MIME-Version. + +2000-11-09 17:02:50 ShengHuo ZHU + + * nnheader.el (nnheader-directory-files-is-safe): New variable. + (nnheader-directory-articles): Use it. + (nnheader-article-to-file-alist): Ditto. + +2000-11-09 16:20:37 ShengHuo ZHU + + * rfc2047.el (rfc2047-pad-base64): New function. + (rfc2047-decode): Use it. + +2000-11-08 16:37:02 ShengHuo ZHU + + * gnus-cache.el (gnus-cache-generate-nov-databases): Reopen cache. + +2000-11-08 08:38:30 ShengHuo ZHU + + * pop3.el (pop3-munge-message-separator): A message may have an + empty body. + +2000-11-07 08:49:36 ShengHuo ZHU + + * mm-decode.el (mm-display-parts): New function. + * gnus-art.el (gnus-mime-view-all-parts): Use it. Remove parts first. + +2000-02-02 Alexandre Oliva + + * gnus-mlspl.el: Documentation tweaks. + +2000-11-06 19:10:14 ShengHuo ZHU + + * rfc2231.el (rfc2231-encode-string): Use us-ascii if charset is nil. + +2000-11-05 15:06:05 ShengHuo ZHU + + * nnvirtual.el (nnvirtual-request-expire-articles): Uncompress range. + +2000-11-04 20:38:50 ShengHuo ZHU + + * mm-view.el (mm-inline-text): Move point to the end of inserted text. + +2000-11-04 10:34:29 ShengHuo ZHU + + * nnheader.el (nnheader-pathname-coding-system): Default iso-8859-1. + * nnmail.el (nnmail-pathname-coding-system): Ditto. + +2000-09-29 David Edmondson + + * message.el (message-newline-and-reformat): Typo. + +2000-11-04 10:11:05 ShengHuo ZHU + + * rfc2231.el (rfc2231-decode-encoded-string): Test mm-multibyte-p. + +2000-11-04 09:53:42 ShengHuo ZHU + + * nntp.el (nntp-decode-text): Delete bogus status lines. + +2000-11-03 Stefan Monnier + + * message.el (message-font-lock-keywords): Match a final newline + to help font-lock's multiline support. + +2000-11-04 Simon Josefsson + + * nnimap.el (nnimap-split-inbox): Typo. + +2000-11-03 10:46:44 ShengHuo ZHU + + * gnus-msg.el (gnus-msg-mail): Move it backwards. + +2000-11-03 Simon Josefsson + + * rfc2231.el (rfc2231-parse-qp-string): New function. + (require): rfc2047. + + * mail-parse.el (mail-header-parse-content-type): + (mail-header-parse-content-disposition): Support invalid QP + encoded strings, by using `rfc2231-parse-qp-string'. + +2000-11-03 08:58:08 ShengHuo ZHU + + * rfc2231.el (rfc2231-parse-string): Decode when there is no number. + (rfc2231-decode-encoded-string): Typo "> X 1". + (rfc2231-encode-string): Insert the name of charset. + * mail-parse.el (mail-header-encode-parameter): Use RFC2231. + +2000-11-02 13:27:56 ShengHuo ZHU + + * gnus-uu.el (gnus-uu-post-news): Comment out the redundancy. + * gnus-art.el (gnus-article-edit-done): + * gnus-sum.el (gnus-summary-edit-article-done): Move line + counting code here. + * gnus-msg.el (gnus-setup-message): Remove a hack. + +2000-11-02 Hrvoje Niksic + + * rfc2047.el (rfc2047-encoded-word-regexp): Allow empty encoded + word. + +2000-11-01 08:54:11 ShengHuo ZHU + + * mml.el (mml-read-tag): Remove spaces and LF. + +2000-11-01 01:12:29 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-create-mapping): Use nreverse. + +2000-10-31 23:45:31 Lars Magne Ingebrigtsen + + * nnwfm.el: New file. + + * nnweb.el (nnweb-replace-in-string): New function. + +2000-10-31 11:44:29 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-show-article): Fix the summary line. + +2000-10-31 Katsumi Yamaoka + + * gnus-sum.el (gnus-summary-insert-line): Work with quoted + double-quote charcters. + (gnus-summary-prepare-threads): Ditto. + +2000-10-31 08:36:03 ShengHuo ZHU + + * gnus-art.el (gnus-mime-display-single): Forward line -1. + * mml.el (mml-read-tag): Don't skip the leading space. + +2000-10-16 11:36:52 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-forum-table-p): Be a bit more + restrictive. + (nnultimate-table-regexp): New variable. + (nnultimate-forum-table-p): Use it. + +2000-10-30 Ed L Cashin + + * gnus-sum.el (gnus-summary-expire-articles): Save point. + +2000-10-28 03:38:39 ShengHuo ZHU + + * rfc2047.el (rfc2047-encode-message-header): Make sure no + unencoded stuff in the header. + +2000-10-27 Jason Rumney + + * gnus-art.el (gnus-signature-face): Use italic on any frame that + supports it. + +2000-10-27 14:19:53 ShengHuo ZHU + + * gnus-mlspl.el: Require cl when compiling. + * messagexmas.el: Ditto. + * mm-util.el: Ditto. + * rfc2047.el: Ditto. + * rfc2231.el: Ditto. + * smiley-ems.el: Ditto. + * uudecode.el: Ditto. + + * smiley-ems.el (smiley-region): Use mapcar. + +2000-10-27 Stefan Monnier + + * ietf-drums.el: Require cl when compiling. + +2000-10-27 Dave Love + + * mm-decode.el (mm-valid-and-fit-image-p): Don't test + window-system here. + + * gnus-art.el (gnus-article-x-face-command): Check + gnus-article-compface-xbm. + (gnus-treat-display-xface): Check for uncompface. + + * nnheader.el (nnheader-translate-file-chars): Only kludge things + under Doze with XEmacs. + +2000-10-26 Simon Josefsson + + * mail-source.el (mail-sources): IMAP predicate is a string. + (mail-sources): Add default values for IMAP mailbox, predicate and + fetchflag. + +2000-10-26 Dave Love + + * flow-fill.el: Require cl when compiling. + + * mail-source.el: Require imap when compiling and defvar + display-time-mail-function. Require mm-util. + (nnheader-cancel-timer): Autoload. + (mail-source-imap-authenticators, mail-source-imap-streams): New + variables. + (mail-sources): Use them. + +2000-10-25 20:13:02 ShengHuo ZHU + + * mm-decode.el (mm-viewer-completion-map): New. + (mm-interactively-view-part): Use it. + +2000-10-25 18:51:12 ShengHuo ZHU + + * rfc2047.el (rfc2047-q-encode-region): Don't break if a QP-word + could be fitted in one line. + +2000-10-25 Dirk Meyer + + * gnus-demon.el (gnus-demon-time-to-step): theHour was set to + seconds instead of hour. + +2000-10-25 Per Abrahamsen + + * mail-source.el (mail-sources): Better `:type'. + +2000-10-24 18:31:29 ShengHuo ZHU + + * gnus-art.el (gnus-request-article-this-buffer): + gnus-refer-article-method might be a single method. + * gnus-sum.el (gnus-refer-article-methods): The second could be + a named method. + +2000-10-23 Simon Josefsson + + * flow-fill.el (fill-flowed): Don't flow "-- " lines. + (fill-flowed): Make "quote-depth wins" rule work when first line + is at level 0. + +2000-10-21 11:23:21 ShengHuo ZHU + + * mm-util.el (mm-multibyte-p): Test (featurep 'xemacs). + +2000-10-21 10:54:57 ShengHuo ZHU + + * gnus-art.el (gnus-article-mime-total-parts): New function. + (gnus-mm-display-part): Use it. + (gnus-mime-display-single): Ditto. + (gnus-mime-display-alternative): Ditto. + +2000-10-21 09:38:27 ShengHuo ZHU + + * mailcap.el (mailcap-parse-mailcaps): Don't use parse-colon-path, + because they are files, not directories. + (mailcap-parse-mimetypes): Ditto. + +2000-10-20 19:55:59 ShengHuo ZHU + + * gnus-art.el (gnus-mime-inline-part): Check validity of charset. + +2000-10-18 Dave Love + + * mail-source.el (mm-util): Require. + (defvar): Use rmail-spool-directory unconditionally. + + * gnus-nocem.el (gnus-nocem-issuers): Update. + (gnus-nocem-check-from): New option. + (gnus-nocem-scan-groups): Use it. + (gnus-nocem-check-article): Bind gnus-newsgroup-name. + +2000-10-18 Miles Bader + + * gnus-nocem.el (gnus-nocem-check-article-limit): New variable. + (gnus-nocem-scan-groups): Obey `gnus-nocem-check-article-limit'. + +2000-10-18 Simon Josefsson + + * nnheader.el (nnheader-parse-head): Try both "from:" and "from: ". + + * gnus-sum.el (gnus-get-newsgroup-headers): Ditto. + +2000-10-17 Simon Josefsson + + * gnus-sum.el (gnus-get-newsgroup-headers): Search for "from:" + instead of "from: " for rfc822 compliance. + + * gnus-uu.el (gnus-uu-digest-mail-forward): Ditto. Insert SPC. + + * nnheader.el (nnheader-parse-head): Ditto. + +2000-10-13 Kai Gro,A_(Bjohann + + * mail-source.el (mail-source-keyword-map): Use + `rmail-spool-directory' as a default directory for the `file' + source, if the variable is defined. Fall back to hardcoded + "/usr/spool/mail/", as before. Suggestion by Steven E. Harris + . + +2000-10-13 12:01:15 ShengHuo ZHU + + * message.el (message-send-mail-partially): Replace the header + delimiter with a blank line. + +2000-10-13 Kai Gro,A_(Bjohann + + * gnus-sum.el (gnus-get-split-value): Use first match only (Ed L + Cashin ). + +2000-10-13 10:52:00 ShengHuo ZHU + + * gnus-ems.el (gnus-article-compface-xbm): Ignore errors. + +2000-10-11 John Wiegley + + * gnus-topic.el (gnus-topic-mode): Use `setq' to clear + `gnus-group-change-level-function', instead of `remove-hook', + because it's not a hook! + + * gnus-mlspl.el (gnus-group-split-update): Check the value of + `nnmail-crosspost', and use it to set the `no-crosspost' + argument when calling `gnus-group-split-fancy'. Otherwise, it + assumes that cross-posting is always OK, no matter what + `nmail-crosspost' is set to. + (gnus-group-split-fancy): The argument order in the + second-to-last `push' call was wrong, but since `no-crosspost' + was always nil, it was never being triggered. + + * gnus-art.el (gnus-treat-hide-citation-maybe): Added this + variable to correspond with `gnus-article-hide-citation-maybe'. + (gnus-treatment-function-alist): Added entry for the above + correlation. + +2000-10-12 08:26:30 ShengHuo ZHU + + * mm-util.el (mm-with-unibyte-current-buffer): Revert to old. + (mm-with-unibyte-current-buffer-mule4): New function. + * qp.el (quoted-printable-encode-region): Use it. + * rfc2047.el (rfc2047-decode): Ditto. + * webmail.el (webmail-init): Revert to use mm-disable-multibyte. + +2000-10-10 08:44:13 ShengHuo ZHU + + * rfc2047.el (rfc2047-fold-region): "=?=" is not a break point. + +2000-10-10 00:00:28 ShengHuo ZHU + + * webmail.el (webmail-init): Use mm-disable-multibyte-mule4. + +2000-10-09 22:50:05 ShengHuo ZHU + + * base64.el (base64-decode-region): Just give a message if the end + is not sane. + +2000-10-09 20:09:11 ShengHuo ZHU + + * rfc2047.el (rfc2047-encode-message-header): Move fold into + encode-region. + (rfc2047-dissect-region): Rewrite. + (rfc2047-encode-region): Rewrite. + (rfc2047-fold-region): Fold any line longer than 76. + (rfc2047-unfold-region): New function. + (rfc2047-decode-region): Use it. + (rfc2047-q-encode-region): Don't break at bob. + +2000-10-09 17:12:00 ShengHuo ZHU + + * nntp.el (nntp-open-connection): Kill process buffer when quit. + (nntp-connection-timeout): Add a note. SIGALRM is ignored in both + FSF Emacs 20 and XEmacs 21. + * gnus-agent.el (gnus-agent-fetch-session): Catch quit. + +2000-10-09 Dave Love + + * gnus-audio.el: Don't require cl. + (gnus-audio): New custom group. + (gnus-audio-inline-sound): Change to work with Emacs. + (gnus-audio-directory, gnus-audio-directory) + (gnus-audio-au-player): Customize. + (gnus-audio-play): Try external player if play-sound-file fails. + Use file-name-extension, not string-match. + + * gnus-art.el (article-de-quoted-unreadable) + (article-de-base64-unreadable): Fold search case rather than + downcasing string. Apply mm-charset-to-coding-system to arg of + quoted-printable-decode-region. + (gnus-article-dumbquotes-map): Fix dashes. + (gnus-button-mailto, gnus-button-embedded-url): Doc fix. + (gnus-button-reply): Just alias it. + +2000-10-09 Stefan Monnier + + * mm-encode.el: Require CL. At least, for `incf'. + + * nnfolder.el (nnfolder-ignore-active-file): Typos. + + * gnus-mh.el (gnus-summary-save-in-folder): Obey mh-lib-progs. + + * gnus-kill.el (gnus-kill): Typo. + +2000-10-09 Gerd Moellmann + + * smiley-ems.el (smiley-update-cache): Use `:ascent center'. + +2000-10-09 Simon Josefsson + + * nnimap.el (nnimap-group-overview-filename): Create directory for + newfile (when use long filenames is nil). Copy+delete file if + rename didn't work. + (nnimap-group-overview-filename): `rename-file' and `copy-file' + doesn't return anything useful, use ignore-errors instead. + +2000-10-08 13:05:11 ShengHuo ZHU + + * dgnushack.el (dgnushack-compile): Delete old elc files first. + +2000-10-08 10:59:13 ShengHuo ZHU + + * gnus-ems.el (gnus-kill-all-overlays): Move here. + * gnus-util.el (gnus-kill-all-overlays): Move out. + * gnus-sum.el (gnus-cache-write-active): Auto load. + * lpath.el: Shut up. + * nnweb.el (nnweb-url-retrieve-asynch): url-retrieve is + asynchronous in Exp version. + +2000-10-08 08:57:13 ShengHuo ZHU + + * gnus-art.el, gnus-ems.el, gnus-start.el: Remove gnus-xemacs. + * gnus-ems.el: Autoload smiley. + * gnus-art.el (gnus-treat-display-smileys): Default value in Emacs 21. + +2000-10-08 08:45:48 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-display-article): Enable multibyte. + (gnus-summary-select-article): Don't enable multibyte here. + (gnus-summary-goto-article): Ditto. + +2000-10-08 Christoph Conrad + + * gnus-draft.el (gnus-draft-send-message): Typo. + +2000-10-08 Simon Josefsson + + * nnimap.el (nnimap-verify-uidvalidity): Delete overview file when + uid validity changes. + (nnimap-group-overview-filename): Store uidvalidity in filenames. + Rename old files into new format. + +2000-10-07 15:49:39 ShengHuo ZHU + + * mm-util.el (mm-enable-multibyte-mule4): New. + (mm-disable-multibyte-mule4): New. + * gnus-sum.el (gnus-summary-mode): Use it. + (gnus-summary-select-article): Ditto. + (gnus-summary-goto-article): Use enable multibyte. + * rfc2047.el (rfc2047-decode): Use unibyte. + +2000-10-07 15:42:59 ShengHuo ZHU + + * gnus-logic.el (gnus-advanced-string): Use "" if nil. + +2000-10-07 10:31:05 ShengHuo ZHU + + * rfc2047.el (rfc2047-q-encode-region): Better calculation of + break point. + (rfc2047-fold-region): Don't break the first non-LWSP characters. + +2000-10-07 09:18:53 ShengHuo ZHU + + * gnus.el (gnus-agent-fetching): New variable. + * gnus-agent.el (gnus-agent-with-fetch): Bind it. + * gnus-score.el (gnus-score-body): Don't score body when + agent-fetching. + (gnus-score-followup): Don't score followup either. + +2000-10-07 08:19:17 ShengHuo ZHU + + * gnus-art.el: Define dynamic variables in eval-when-compile. + * message.el (message-sending-message): New variable. + (message-send): Use it. + * gnus-draft.el (gnus-draft-send-message): Ditto. + (gnus-group-send-drafts): Ditto. + +2000-10-06 Dave Love + + * gnus-audio.el: Don't require cl. + (gnus-audio): New custom group. + (gnus-audio-inline-sound): Change to work with Emacs. + (gnus-audio-directory, gnus-audio-directory) + (gnus-audio-au-player): Customize. + (gnus-audio-play): Try external player if play-sound-file fails. + Use file-name-extension, not string-match. + +2000-10-06 17:38:03 ShengHuo ZHU + + * gnus-art.el (gnus-article-prepare): Configure it again. + +2000-10-06 15:11:07 ShengHuo ZHU + + * message.el (message-default-charset): Default value for non-Mule + Emacsen. + +2000-10-06 14:28:50 ShengHuo ZHU + + * message.el (message-alternative-emails): New. + (message-use-alternative-email-as-from): New. + (message-setup): Use them. + +2000-10-06 13:46:47 ShengHuo ZHU + + * base64.el, dgnushack.el, gnus-spec.el, messagexmas.el + * gnus-xmas.el, nnheaderxm.el, nndraft.el: Use defalias. + + * gnus-xmas.el (gnus-xmas-define): Defalias gnus-overlay-buffer, + gnus-overlay-start. + * gnus.el: Ditto. + * gnus-art.el (gnus-insert-mime-button): Use them. + +2000-10-06 10:01:08 ShengHuo ZHU + + * mm-util.el (mm-with-unibyte-current-buffer): Don't set unibyte + if eight-bit-control is a charset, e.g. Mule 5.0 in Emacs 21. + +2000-10-06 09:38:54 ShengHuo ZHU + + * qp.el (quoted-printable-encode-region): Use + mm-with-unibyte-current-buffer within narrowed region. + +2000-10-06 08:56:33 ShengHuo ZHU + + * webmail.el (webmail-type-definition): Fix my-deja open url. + +2000-10-06 Emerick Rogul + + * message.el (message-setup-fill-variables): New variable. + (message-mode): Use it. + +2000-10-05 Dave Love + + * rfc2047.el (rfc2047-fold-region): Use gnus-point-at-bol. + (rfc2047-charset-encoding-alist): Add iso-8859-1[45]. + + * binhex.el: Use defalias, not fset. + + * rfc1843.el: Require cl when compiling. + +2000-10-05 12:25:08 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-fetch-group-1): Score-param could be nil. + +2000-10-05 11:43:25 ShengHuo ZHU + + * rfc2047.el (rfc2047-encode-region): Merge only if regions are + adjacent. + +2000-10-05 09:41:33 ShengHuo ZHU + + * mm-util.el (mm-multibyte-p): In XEmacs, it is (feature 'mule). + (mm-find-charset-region): Merge conditions, delete ascii. + (mm-charset-after): Rewrite. + * mm-bodies.el (mm-encode-body): Use it. + +2000-10-05 09:04:32 ShengHuo ZHU + + * webmail.el (webmail-hotmail-list): Fix. + +2000-10-05 Stefan Monnier + + * nnimap.el (require): cl. + +2000-10-04 15:24:46 ShengHuo ZHU + + * gnus-art.el (gnus-article-prepare): Configure windows before + gnus-article-prepare-display is called. Otherwise, BBDB's popup + window might be overrided. + +2000-10-04 Dave Love + + * gnus-ems.el (gnus-article-display-xface) + [gnus-article-compface-xbm]: Fix. + (gnus-x-splash): Bind width, height. + +2000-10-04 11:45:04 ShengHuo ZHU + + * gnus-art.el (gnus-mime-inline-part): Use prefix argument only + when it is called interactively. + +2000-10-03 21:20:31 ShengHuo ZHU + + * gnus-art.el (gnus-mime-action-alist): New variable. + (gnus-mime-action-on-part): Use it. + (gnus-mime-button-commands): Add command ".". + +2000-10-03 20:37:42 ShengHuo ZHU + + * gnus-art.el (gnus-mime-inline-part): Support prefix argument. + +2000-10-03 Katsumi Yamaoka + + * lpath.el: "." is in the load-path because dgnushack.el. + +2000-10-03 Bjorn Torkelsson + + * uudecode.el: xemacs cleanup (use featurep ' xemacs) + + * nnheader.el: ditto + + * mm-util.el: ditto + + * message.el: ditto + + * binhex.el: ditto + + * gnus-audio.el: removed unnecessary xemacs test + + * earcon.el: ditto + +2000-10-03 19:55:55 Lars Magne Ingebrigtsen + + * nnweb.el (nnweb-decode-entities): Work for non-character + entities. + +2000-09-26 09:20:08 Lars Magne Ingebrigtsen + + * gnus.el: Message the quit parts. + +2000-10-03 08:08:29 ShengHuo ZHU + + * mail-source.el (mail-source-fetch-maildir): Don't insert + newlines. + +2000-10-02 20:14:27 ShengHuo ZHU + + * dgnushack.el (dgnushack-compile): Don't compile dgnushack.el, + lpath.el. Don't compile base64.el if there is builtin base64. + +2000-10-02 Bj,Av(Brn Torkelsson + + * base64.el (Repository): Use featurep for XEmacs test. + +2000-10-02 17:38:12 ShengHuo ZHU + + * nntp.el (nntp-retrieve-data): Don't ignore quit. + +2000-10-02 14:43:13 ShengHuo ZHU + + * gnus-art.el (gnus-article-banner-alist): New variable. + (article-strip-banner): Use it. + * gnus-cus.el (gnus-group-parameters): Allow symbol. + +2000-10-02 Dave Love + + * smiley-ems.el: New file. + + * gnus-ems.el (gnus-smiley-display): Autoload. + (mouse-set-point, set-face-foreground, set-face-background) + (x-popup-menu): Don't clobber these. + (gnus-article-compface-xbm): New variable. + (gnus-article-display-xface): Move graphic test. Use unibyte. + Obey gnus-article-compface-xbm. Use pbm, not xbm. + + * mml.el (require): Fix typo. + (mml-parse-1): Modify unknown encoding prompt. + + * mail-source.el (mail-sources): Revert to nil. + + * nnmail.el (nnmail-spool-file): Revert previous change. + + * gnus.el: Don't require custom, message. + (gnus-message-archive-method): Wrap initializer in progn and + require message here. + +2000-10-02 Gerd Moellmann + + * gnus.el (gnus-mode-line-buffer-identification) [Emacs]: Change + image's :ascent to 80. That gives a mode-line which is approx. + as tall as the normal one. + +2000-10-02 08:04:48 ShengHuo ZHU + + * webmail.el (webmail-hotmail-list): Fix. + +2000-10-01 20:55:53 ShengHuo ZHU + + Don't postpone GCC if none of GCC methods is agent-covered. This + fix presumes that the post-method must be agent-covered if any Gcc + method is agent-covered. + + * gnus-msg.el (gnus-inews-group-method): New function. + (gnus-inews-do-gcc): Use it. + * gnus-agent.el (gnus-agent-any-covered-gcc): New function. + (gnus-agent-possibly-save-gcc): Use it. + (gnus-agent-possibly-do-gcc): Ditto. + +2000-10-01 17:08:50 ShengHuo ZHU + + * mailcap.el (mailcap-mime-types): Use mailcap-mime-data. + * mml.el (mml-minibuffer-read-type): Use mailcap-mime-types. + +2000-10-01 13:07:21 ShengHuo ZHU + + * webmail.el (webmail-netscape-open, webmail-hotmail-article, + webmail-hotmail-list): Update. + +2000-10-01 08:36:09 ShengHuo ZHU + + * mail-source.el (mail-source-report-new-mail): Use + nnheader-cancel-timer. + +2000-10-01 08:35:38 ShengHuo ZHU + + * lpath.el (overlay-*): Shut up. + * dgnushack.el: Two implementations of smiley. + +2000-10-01 08:32:42 ShengHuo ZHU + + * gnus-ml.el: Usage. + (gnus-mailing-list-archive, gnus-mailing-list-owner, + gnus-mailing-list-post, gnus-mailing-list-unsubscribe, + gnus-mailing-list-subscribe, gnus-mailing-list-help): Bind list-*. + (gnus-mailing-list-menu): Define it. + (turn-on-gnus-mailing-list-mode, gnus-mailing-list-mode): Autoload. + + * gnus-xmas.el (gnus-xmas-mailing-list-menu-add): Move here. + +2000-09-30 18:52:51 ShengHuo ZHU + + * webmail.el (webmail-my-deja-*): Rewrite. + +2000-09-30 Simon Josefsson + + * nnimap.el (nnimap-request-accept-article): Remove \n's from + From_ lines. + +2000-08-05 Simon Josefsson + + Make GCC to remote groups work when unplugged + (postpone GCC until message is actually sent). + + * gnus-draft.el (gnus-draft-send): Call `gnus-agent-restore-gcc'. + + * gnus-agent.el (gnus-agent-possibly-do-gcc): + (gnus-agent-restore-gcc): + (gnus-agent-possibly-save-gcc): New functions. + + * gnus-msg.el (gnus-inews-add-send-actions): Use + `gnus-agent-possibly-do-gcc' if Agentized. + (gnus-inews-add-send-actions): Add `gnus-agent-possibly-save-gcc' + to `message-header-hook'. + + * gnus.el (gnus-agent-gcc-header): New variable. + +2000-07-13 Simon Josefsson + + Asks the user to synch flags with server when you plug in. + + * gnus-agent.el (gnus-agent-synchronize-flags): New variable. + (gnus-agent-possibly-synchronize-flags-server): New function, use it. + (gnus-agent-toggle-plugged): Call it. + (gnus-agent-synchronize-flags): Renamed from `gnus-agent-synchronize'. + (gnus-agent-group-mode-map): `g-a-s' -> `g-a-s-flags'. + (gnus-agent-possibly-synchronize-flags): New function. + (gnus-agent-possibly-synchronize-flags-server): New function. + +2000-09-30 Simon Josefsson + + * starttls.el: New file, by Daiki Ueno. + +2000-08-02 Stanislav Shalunov + + * message.el (message-make-in-reply-to): In-Reply-To is message-id + (see DRUMS). + +2000-09-29 Simon Josefsson + + * nntp.el (nntp-async-trigger): Fix authinfo in asynchronous + prefetch. + +2000-08-09 10:21:20 Katsumi Yamaoka + + * nntp.el (nntp-open-telnet): Wait for the telnet prompt before + sending a command; allow the rtelnet prompt as well. + +2000-09-29 Simon Josefsson + + * message.el (message-send): Make sure error is signalled if no + send method is specified. + +2000-09-29 Florian Weimer + + * qp.el (quoted-printable-encode-region): Wrap with + `mm-with-unibyte-current-buffer'. + +2000-09-29 12:12:49 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-fetch-group-1): Reimplement Mike + McEwan's proposal. + +2000-09-29 12:06:40 ShengHuo ZHU + + * gnus-agent.el: Revoke Mike McEwan's 1998-09-05 patch due to + the GNU assignment issue. + +2000-09-29 09:56:34 ShengHuo ZHU + + * nndoc.el (nndoc-dissect-mime-parts-sub): Correctly mark body-begin. + +2000-09-29 09:14:08 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-enter-digest-group): Decode to-address. + +2000-09-28 Kai Gro,A_(Bjohann + + * gnus-art.el (article-strip-banner): Use + gnus-group-find-parameter rather than gnus-group-get-parameter, to + allow inheritance on the banner. + From elkin@tverd.astro.spbu.ru. + +2000-09-26 Richard M. Alderson III + + * gnus-art.el (gnus-read-save-file-name): expand-file-name. + +2000-09-26 Dave Love + + * gnus-draft.el: Don't require gnus-agent. + + * mm-view.el: Use featurep for XEmacs test. + (mm-inline-message): Test for `remove-specifier'; don't use + condition-case. + +2000-09-24 Simon Josefsson + + * nnimap.el (nnimap-request-accept-article): Remove From[^:] lines. + + * gnus-group.el (gnus-group-nnimap-edit-acl): Check if server + support ACL's. + + * nnimap.el (nnimap-acl-get): Check capability. + + * mail-source.el (mail-source-imap-file-coding-system): New variable. + (mail-source-fetch-imap): Use it. + + * rfc2104.el (rfc2104-hexstring-to-bitstring): New function. + (rfc2104-hash): Use it. + + * imap.el (imap-starttls-p): Check for starttls binary. + (imap-starttls-open): More verbose. + (imap-gssapi-auth): Ditto. + (imap-kerberos4-auth): Ditto. + (imap-cram-md5-auth): Ditto. + (imap-login-auth): Ditto. + (imap-anonymous-auth): Ditto. + (imap-digest-md5-auth): Ditto. + (imap-open): Ditto. + (imap-digest-md5-p): Check capability first. + +2000-09-24 Simon Josefsson + + * imap.el (imap-parse-flag-list): Correctly parse empty lists. + (imap-login-p): Support LOGINDISABLED. + +2000-09-23 Simon Josefsson + + * rfc2104.el: Add SHA-1 example. + +2000-09-22 Simon Josefsson + + * imap.el (imap-parse-body): Work around bug in Sun SIMS. + +2000-09-21 21:54:48 ShengHuo ZHU + + * lpath.el: Bind nnkiboze-score-file. + +2000-09-21 16:15:25 ShengHuo ZHU + + * gnus-score.el (gnus-score-use-all-scores): New variable. + (gnus-all-score-files): Use it. + * nnkiboze.el (nnkiboze-generate-group): Use it. Inhibit list groups. + (nnkiboze-enter-nov): Fix it when there is no xref. + (nnkiboze-generate-groups): List groups. + * gnus-group.el (gnus-group-make-kiboze-group): Use + nnkiboze-score-file. + + * nnkiboze.el (nnkiboze-request-article): Use + gnus-cache-request-article. + * gnus-group.el (gnus-group-make-kiboze-group): Fix prompt. + +2000-07-16 Dmitry Bely + + * nnheader.el (nnheader-translate-file-chars): Path splitting on NT. + +2000-09-20 18:33:00 ShengHuo ZHU + + * gnus-score.el (gnus-score-find-bnews): Use directory-sep-char. + +2000-09-20 17:37:46 ShengHuo ZHU + + * message.el (message-default-charset): Set default value in + non-MULE XEmacsen as iso-8859-1. + +2000-09-20 12:02:24 ShengHuo ZHU + + * gnus-demon.el: Use (featurep 'xemacs). + * gnus-agent.el: timer vs. itimer. + * mail-source.el: Ditto. + +2000-09-19 10:24:57 ShengHuo ZHU + + * gnus-group.el (gnus-group-make-kiboze-group): Makedir. + * nnheader.el (nnheader-parse-nov): Remove Xref in mail-header-xref. + * gnus-sum.el (gnus-nov-parse-line): Ditto. + * nnkiboze.el (nnkiboze-file-coding-system): New. + (nnkiboze-retrieve-headers): Use it. + (nnkiboze-request-group): Ditto. + (nnkiboze-close-group): Ditto. + (nnkiboze-generate-group): Ditto. + (nnkiboze-enter-nov): Insert first Xref properly. + +2000-09-19 Dave Love + + * nnmail.el (nnmail-cache-accepted-message-ids): Default to nil. + (nnmail-get-new-mail): Test `sources' in top-level conditional. + + * mail-source.el (mail-sources): Change default to '((file)). + Add useful custom type. + +2000-09-18 Kai Gro,A_(Bjohann + + * gnus-util.el (gnus-time-iso8601): Correct doc string (four digit + year). + (gnus-date-iso8601): Ditto. + +2000-09-18 09:05:46 ShengHuo ZHU + + * mail-source.el (mail-source-fetch-imap): Disable multibyte. + +2000-09-17 01:13:46 ShengHuo ZHU + + * rfc2047.el (rfc2047-q-encoding-alist): Remove = and _ from the + pattern. Avoid using 8 bit chars. + * qp.el (quoted-printable-encode-region): Avoid using 8 bit chars. + +2000-09-16 15:57:42 ShengHuo ZHU + + * smiley.el (smiley-buffer-ems, smiley-create-glyph-ems, + smiley-toggle-extent-ems, smiley-toggle-extents-ems, + smiley-toggle-buffer-ems): New functions for Emacs 21. Toggle + functions are not implemented yet. + + * dgnushack.el (dgnushack-compile): Remove smiley.el and + x-overlay.el from the FSF Emacs black list. + +2000-09-15 21:10:20 ShengHuo ZHU + + * mm-decode.el (mm-inlined-types): Add application/emacs-lisp. + (mm-inline-media-tests): Ditto. + (mm-automatic-display): Ditto. + * mm-view.el (mm-display-inline-fontify): Generalize from + mm-display-patch-inline. + (mm-display-patch-inline): Use it. + (mm-display-elisp-inline): Ditto. + +2000-09-15 14:03:00 ShengHuo ZHU + + * gnus-topic.el (gnus-topic-find-groups): Add recursive parameter. + (gnus-topic-unmark-topic): Ditto. + (gnus-topic-mark-topic): Ditto. + (gnus-topic-get-new-news-this-topic): Use it. + +2000-09-15 09:01:40 ShengHuo ZHU + + * gnus-art.el (gnus-treat-display-xface): By default, Emacs 21 + display xface. + +2000-08-23 02:54:46 Katsumi Yamaoka + + * gnus-group.el (gnus-group-rename-group): Inhibit renaming of + zombie or killed groups. + +2000-09-15 00:09:56 ShengHuo ZHU + + * mml.el (mml-preview): Reinsert unibyte content. + (mml-parse-1): Remove with-unibyte-current-buffer. + (mml-generate-mime-1): Ditto. + * gnus-msg.el (gnus-summary-mail-forward): Ditto. + * message.el (message-forward): Ditto. + +2000-09-14 23:13:50 ShengHuo ZHU + + * gnus-art.el (article-de-quoted-unreadable): Guess charset from + original article buffer. + (article-de-base64-unreadable): Ditto. + (article-wash-html): Ditto. + +2000-09-14 18:55:30 ShengHuo ZHU + + * gnus-msg.el (gnus-summary-mail-forward): Disable multibyte + unless forward-show-mml. + +2000-09-14 14:48:57 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-save-parts-type-history): New. + (gnus-summary-save-parts-last-directory): New. + (gnus-summary-save-parts): Save history. + +2000-09-14 Ben Gertzfield + + * gnus-sum.el (gnus-summary-save-parts-default-mime): New + variable. + (gnus-summary-save-parts): Use it. + +2000-09-14 11:31:28 ShengHuo ZHU + + * gnus-art.el (gnus-article-setup-buffer): Clean handle-alist. + * gnus-sum.el (gnus-summary-exit): Ditto. + (gnus-summary-exit-no-update): Ditto. + (gnus-summary-show-article): Ditto. + +2000-09-14 08:42:48 ShengHuo ZHU + + * nndoc.el (nndoc-dissect-mime-parts-sub): Remove + Content-Disposition. + +2000-09-13 23:58:40 ShengHuo ZHU + + * webmail.el: Hotmail updated. Add X-Gnus-Webmail. + +2000-09-13 21:41:25 ShengHuo ZHU + + * gnus-art.el (gnus-article-setup-buffer): Set + gnus-article-mime-handles to nil. + * gnus-sum.el (gnus-summary-exit): Ditto. + (gnus-summary-exit-no-update): Ditto. + (gnus-summary-show-article): Ditto. + (gnus-summary-save-parts): Use gnus-article-mime-handles if + dissected. + * mm-partial.el (mm-partial-find-parts): Remove redundancy. + +2000-09-13 16:59:33 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-sort): Sort loose threads too. + (gnus-sort-threads-1): New function. Sort threads recursively. + (gnus-sort-threads): Use it. + (gnus-sort-gathered-threads): Doc fix. + +2000-09-13 Dave Love + + * gnus-salt.el (gnus-binary-mode): Fix call to gnus-add-minor-mode. + + * gnus-ems.el (gnus-ems-redefine): Don't alias + gnus-summary-set-display-table. + + * message.el (message-user-agent): Don't wrap ignore-errors around + it. + + * mm-encode.el (mm-insert-multipart-headers): Avoid redundant + `format'. + (mm-content-transfer-encoding): Don't use cadar. + + * uudecode.el (uudecode-decoder-program) + (uudecode-decoder-switches): Customize. + + * gnus-score.el (gnus-home-score-file): Improve custom type. + + * gnus-cus.el (gnus-custom-mode): Conditionally set local + variables for Emacs 21. + (gnus-group-customize): Disable undo while laying out the buffer. + +2000-09-13 09:38:26 ShengHuo ZHU + + * gnus-util.el (gnus-write-active-file): Bind + coding-system-for-write. + +2000-09-13 09:14:57 ShengHuo ZHU + + * nnmail.el (nnmail-get-new-mail): Don't test nnmail-spool-file. + + * gnus-cache.el (gnus-jog-cache): Temporarily disable mail-sources. + * gnus-kill.el (gnus-batch-score): Ditto. + * gnus-move.el (gnus-change-server): Ditto. + * nnkiboze.el (nnkiboze-generate-groups): Ditto. + +2000-09-12 Simon Josefsson + + * gnus-sum.el (gnus-update-read-articles): Undo + `gnus-request-set-mark' operation. + +2000-09-11 Dave Love + + * Changelog: Use iso-2022 coding. + + * gnus-msg.el (gnus-msg-mail): New function. + (gnus-user-agent): New mail agent. + +2000-09-10 Dave Love + + * message.el: Require mail-abbrevs for XEmacs for a problem with + keybinding despite the autoloads for it. + +2000-09-08 Simon Josefsson + + * imap.el (imap-kerberos4-open): Erase more (fixes race condition?). + + * nnimap.el (nnimap-request-update-info-internal): Remove tick + marks from dormant articles. (See nnimap-request-set-mark.) + (nnimap-retrieve-headers-progress): Demule. + (nnimap-open-server): Call nnoo-change-server twice, once for + getting the nnimap-server-buffer and once for letting n-c-s set + the variables in that buffer. + +2000-09-08 David Edmondson + + * gnus.el (gnus-short-group-name): Guess separator. + +2000-09-07 Tadashi Watanabe + + * smiley.el (smiley-buffer, smiley-create-glyph): Work with GTK + XEmacs as well. + +2000-09-06 Francis Litterio + + * gnus-group.el (gnus-group-insert-group-line): Fix. + +2000-09-04 Dave Love + + * mm-decode.el (mime-display) : Add `multimedia' group. + (mm-get-image): Avoid the losing `make-glyph' from W3. + +2000-09-03 Simon Josefsson + + * gnus-sum.el (gnus-summary-delete-article): Check server. + +2000-09-01 Simon Josefsson + + * imap.el (imap-parse-flag-list): Rewrite. + + * nnimap.el (nnimap-retrieve-headers-from-file): Ignore errors. + + * imap.el (imap-parse-flag-list): Hack. + +2000-08-29 Dave Love + + * gnus-mlspl.el (gnus-group-split-fancy): Eschew mapcon. + + * dgnushack.el (mapcon, union): Remove compiler macros. + + * gnus-agent.el (gnus-agent-union): new function. + (gnus-agent-fetch-headers): Use it. + + * gnus.el (gnus-group-startup-message): Specify foreground and + background for xpm image. Centre image vertically. + From Katsumi Yamaoka with mods. + +2000-08-24 23:49:23 ShengHuo ZHU + + * message.el (message-send-mail): Narrow-to-headers. + +2000-08-24 Dave Love + + * gnus-art.el (gnus-insert-mime-button): Fix help-echo for Emacs + 21. + +2000-08-23 Dave Love + + * dgnushack.el: Remove `member-if' compiler macro. + +2000-08-21 Dave Love + + * nnimap.el (nnimap-request-newgroups): Eschew member-if. + +2000-08-21 10:09:47 ShengHuo ZHU + + * gnus-topic.el (gnus-topic-hide-topic): Use find-topology if + permanent is used. + (gnus-topic-show-topic): Read topic when to show permanent hidden + topic. + (gnus-topic-remove-topic): Revert to the old behavior, not using + hide. + +2000-08-21 Dave Love + + * gnus-ems.el (gnus-add-minor-mode): Add &rest arg. + (gnus-xemacs): Use featurep. + + * mm-util.el (mm-read-charset): Maybe use builtin. + (mm-replace-chars-in-string): Maybe use subst-char-in-string. + (mm-multibyte-p, mm-with-unibyte-current-buffer) + (mm-with-unibyte): Use featurep, not string-match. + (mm-with-unibyte-buffer): Simplify. + (mm-quote-arg): Maybe use shell-quote-argument. + + * mml.el (mml-make-string): Deleted (unused). + + * gnus.el (gnus-mode-line-buffer-identification): Supply + definition for Emacs 21. + + * gnus-salt.el: Small doc fixes. + (gnus-pick-mode, gnus-binary-mode): Supply a toggle-func arg to + gnus-add-minor-mode. + + * gnus-topic.el (gnus-topic-mode): Supply a toggle-func arg to + gnus-add-minor-mode. + +2000-08-20 Simon Josefsson + + * nnimap.el (nnimap-before-find-minmax-bugworkaround): New + function, thanks to Lloyd Zusman for debugging. + (nnimap-request-group): + (nnimap-request-list): + (nnimap-retrieve-groups): + (nnimap-request-newgroups): Use it. + + * nnimap.el (nnimap-request-article-part): Less verbose. + +2000-08-19 Andreas Jaeger + + * lpath.el ((string-match "XEmacs" emacs-version)): Remove + subst-char-in-string since we test elsewhere whether it's bound. + +2000-08-18 Dave Love + + * gnus-score.el (gnus-score-find-score-files-function): Fix doc, + custom type. + + * gnus-xmas.el (gnus-group-icon-create-glyph): Don't test + gnus-group-running-xemacs. + + * nnheader.el (nnheader-replace-chars-in-string): Use + subst-char-in-string if available. + + * gnus-art.el (gnus-read-save-file-name, gnus-plain-save-name) + (gnus-request-article-this-buffer): Use expand-file-name. + (gnus-mime-view-part-as-type): Simplify interactive spec. + (gnus-mime-button-map): Define it all in defvar. + +2000-08-17 Dave Love + + * gnus-group.el (gnus-group-running-xemacs): Deleted. + + * gnus-demon.el (gnus-demon): Bind use-dialog-box and + last-nonmenu-event. + + * uudecode.el (char-int): Use defalias, not fset. + + * score-mode.el: Don't require easymenu. Require mm-util. + (score-mode-coding-system): Use mm-auto-save-coding-system. + + * nneething.el (nneething-create-mapping): Don't use cadar & al. + (nneething-file-name): Use expand-file-name, not concat. + +2000-08-16 13:05:46 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-threaded-retrieve-headers): + Failure proof for email addresses. + (nnslashdot-sane-retrieve-headers): Ditto. + +2000-08-14 20:08:40 Lars Magne Ingebrigtsen + + * message.el (message-send-mail): Only insert courtesy message + when text/plain. + +2000-08-14 19:55:04 Jesper Harder + + * message.el (message-cancel-news): Copy the From header from the + original article. + +2000-08-14 19:52:01 Lars Magne Ingebrigtsen + + * gnus-async.el (gnus-asynchronous): Removed. + +2000-08-14 16:12:11 ShengHuo ZHU + + * mail-source.el (mail-source-fetch-maildir): Use MMDF mail + format. + +2000-08-14 19:12:22 Rod Whitby + + * nnmail.el (nnmail-expiry-target-group): Fixed. + +2000-08-14 Rod Whitby + + * nnmail.el (nnmail-expiry-target-group): Fix the call to + gnus-request-accept-article so that body encoding is *not* done. + Encoding is not done on incoming mail, so why should it be done on + expired mail? + + +2000-08-14 Rod Whitby + + * nnml.el (nnml-request-expire-articles): Fix the calls to + nnml-request-article (the filename was being passed instead of the + article number) and nnmail-expiry-target-group + (nnml-current-directory is changed by nnml-request-accept-article, + causing it to be incorrect for the next article to be expired). + +2000-08-14 Rod Whitby + + * gnus-sum.el (gnus-summary-expire-articles): Fix the handling of + expiry-target group parameters. + +2000-08-13 18:53:08 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-select-group): Touch the dribble + buffer. + (gnus-topic-hide-topic): Take a PERMANENT parameter. + (gnus-topic-show-topic): Ditto. + + * gnus-dup.el (gnus-dup-suppress-articles): Do auto-expiry. + +2000-08-12 21:48:00 John H. Palmieri + + * mail-source.el (mail-source-incoming-file-prefix): New + variable. + +2000-08-12 20:29:53 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-check-first-time-used): Clean up a bit. + + * mailcap.el (mailcap-maybe-eval): Be even more warning. + +2000-08-11 Florian Weimer + + * message.el (message-syntax-checks): New check quotin-style: + Text must be written below quoted text. + (message-check-news-body-syntax): Check it. + +2000-08-11 Simon Josefsson + + * imap.el (imap-authenticator-alist): Fix typo. + (imap-gssapi-open): Copy krb4 fixes for modern imtest's, thanks to + Jonas Oberg for debugging. + +2000-08-11 Simon Josefsson + + * gnus-async.el (gnus-asynchronous): Disable by default. + +2000-08-10 20:22:09 Lars Magne Ingebrigtsen + + * mm-view.el (mm-inline-text): Bind fill-column. + + * nnvirtual.el (nnvirtual-request-expire-articles): Return the + list of unexpired articles. + + * gnus-group.el (gnus-group-expire-articles-1): Return the list of + un-expired articles. + + * gnus-sum.el (gnus-summary-reparent-thread): Narrow to the + headers. + + * gnus-topic.el (gnus-topic-kill-group): Move up one line so that + we update the right topic.. + + * mm-decode.el (mm-display-external): Put point at start. + +2000-08-10 Kai Gro,A_(Bjohann + + * nnmail.el (nnmail-expiry-target): More explicit documentation. + + * gnus-cus.el (gnus-group-parameters): Add parameter `expiry-wait'. + +2000-08-09 Simon Josefsson + + * imap.el (imap-parse-body): + (imap-parse-string-list): Add bug workarounds for Stalker + Communigate Pro 3.0 server. + (imap-body-lines): Remove bogus comment. + + * imap.el (imap-range-to-message-set): Move from nnimap.el. + + * nnimap.el (nnimap-retrieve-which-headers): + (nnimap-retrieve-headers-from-server): + (nnimap-request-set-mark): + (nnimap-request-expire-articles): Use `i-r-t-m-set' instead. + +2000-08-08 00:53:41 ShengHuo ZHU + + * message.el (message-dont-reply-to-names): + rmail-dont-reply-to-names may not be defined. + +2000-08-07 09:37:01 ShengHuo ZHU + + * gnus-group.el (gnus-group-iterate): Uncompiled function should + not use pop. + +2000-07-19 Dave Love + + * gnus-ems.el: Defalias some dummy funcs to `ignore'. + (gnus-x-splash): Use expand-file-name. Remove redundant facep + check. + (gnus-article-display-xface): Special-case for dark backgrounds. + +2000-07-19 Kim-Minh Kaplan + + * imap.el (imap-calculate-literal-size-first): New variable. + (imap-local-variables): Add it. + (imap-kerberos4-open): Set it. + (imap-send-command): Use it. + +2000-07-17 14:18:16 ShengHuo ZHU + + * mailcap.el (mailcap-mimetypes-parsed-p): New variable. + (mailcap-parse-mimetypes): Use it. + (mailcap-extension-to-mime): Parse mimetype. + (mailcap-mime-types): Ditto. + * mml.el (mml-minibuffer-read-type): Ditto. + +2000-07-16 18:25:07 ShengHuo ZHU + + * nndoc.el (nndoc-type-alist): Add outlook. + (nndoc-outlook-type-p): New function. + (nndoc-outlook-article-begin): Ditto. + +2000-07-16 Daiki Ueno + + * gnus-sum.el (gnus-restore-hidden-threads-configuration): Save + excursion. + +2000-07-15 Simon Josefsson + + * gnus-cus.el (gnus-group-parameters, banner): Type is regexp. + + * imap.el (imap): + (imap-kerberos4-program): + (imap-gssapi-program): + (imap-ssl-program): Customization. + (imap-shell-program): + (imap-shell-host): New variables. + (imap-streams): + (imap-stream-alist): Add shell. + (imap-shell-p): + (imap-shell-open): New functions. + (imap-open): Don't call authenticator if preauth. + (imap-authenticate): Return t if already authenticated. + +2000-07-14 Simon Josefsson + + * gnus.el (gnus-invalid-group-regexp): New variable. + (gnus-read-group): Use it. + +2000-07-14 12:40:51 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-fetch-group-1): mark-below, + expunge-below and orphan-score are "group variables". + +2000-07-13 Simon Josefsson + + * gnus-srvr.el (gnus-browse-read-group): Don't pass fully + qualified group names to `gnus-group-read-ephemeral-group'. + +2000-07-13 07:40:39 Katsumi Yamaoka + + * dgnushack.el (srcdir): Define it before use it. + +2000-07-12 19:37:50 ShengHuo ZHU + + * gnus-sum.el: `W t' is toggle-header in info. + +2000-07-12 16:50:06 ShengHuo ZHU + + * lpath.el: Fbind subst-char-in-string. + +2000-07-12 15:48:29 ShengHuo ZHU + + * Makefile.in: Use W3DIR and lispdir. + * dgnushack.el: Ditto. + +2000-07-12 10:12:31 ShengHuo ZHU + + * gnus-art.el (article-de-base64-unreadable): Typo. + +2000-07-12 Simon Josefsson + + * gnus-agent.el (require): Require timer. + +2000-07-11 18:29:50 ShengHuo ZHU + + * message.el (message-bounce): Call mime-to-mml. + +2000-07-11 18:00:49 Lars Magne Ingebrigtsen + + * nnslashdot.el (nnslashdot-request-close): New function. + +2000-07-04 23:23:23 Lars Magne Ingebrigtsen + + * nnslashdot.el (nnslashdot-threaded-retrieve-headers): Get the + right line number for the article. + +2000-07-10 22:41:58 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-threaded-retrieve-headers): Save point. + * webmail.el (webmail-fetch): Bind + url-http-silence-on-insecure-redirection. + +2000-07-10 11:43:22 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-threaded-retrieve-headers): Use + unibyte. + (nnslashdot-sane-retrieve-headers): Ditto. + (nnslashdot-request-article): Ditto. + +2000-07-10 11:12:32 William M. Perry + + * mailcap.el (mailcap-parse-mimetype-file): + +2000-07-07 23:46:22 ShengHuo ZHU + + * nnweb.el (nnweb-insert): Stricter test. + * webmail.el (webmail-refresh-redirect): Ditto. + +2000-07-06 14:17:48 ShengHuo ZHU + + * mm-decode.el (mm-dissect-multipart): Match the EOL of boundary. + +2000-07-05 21:19:22 ShengHuo ZHU + + * nnheader.el (nnheader-insert-nov): Remove EOLs of all fields. + +2000-07-05 Dave Love + + * utf7.el: Doc and header fixes. + + * gnus-sum.el: Doc fixes. + + * gnus-util.el (gnus-point-at-eol, gnus-point-at-bol): Use + defalias, not fset. + + * flow-fill.el (fill-flowed-point-at-eol) + (fill-flowed-point-at-bol): Use defalias, not fset. + + * gnus-art.el: Don't alias article-mime-decode-quoted-printable. + (gnus-Plain-save-name): Delete -- apparently bogus. + +2000-07-03 00:12:26 Lars Magne Ingebrigtsen + + * nnsoup.el: Use expand-file-name throughout. + +2000-07-03 00:07:51 Kjetil Torgrim Homme + + * nnmail.el (nnmail-read-incoming-hook): New example. + +2000-07-02 23:17:23 Lars Magne Ingebrigtsen + + * mm-view.el (mm-inline-text): Check whether the text has already + been decoded. + +2000-07-04 15:17:05 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-sid-strip): To strip or not to strip? + +2000-07-03 Stainless Steel Rat + + * gnus-sum.el (gnus-recenter): Fix horizontal recenter. + +2000-07-03 Simon Josefsson + + * gnus-sum.el (gnus-update-marks): Don't propagate download and + unsend flags. + +2000-07-03 Simon Josefsson + + * nnimap.el (nnimap-open-connection): Don't look up virtual server + name in authinfo (.authinfo now support ports, no need for the + hack). + (nnimap-split-find-rule): Fix. + (nnimap-open-connection): Look for nnimap-server-address in authinfo. + +2000-07-03 Paul Stodghill + + * message.el (message-unquote-tokens): Remove all quotes. + +2000-07-03 00:29:08 Julien Gilles + + * gnus-ml.el: New file. + +2000-07-02 16:11:25 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-request-close): New function. + + * gnus-start.el (gnus-clear-system): Clear nnmail-split-history. + +2000-06-18 Norbert Koch + + * Makefile.in: Better support for xemacs builds + Sun Jul 2 15:11:35 2000 Lars Magne Ingebrigtsen * gnus.el: Gnus v5.8.7 is released. @@ -748,7 +2674,7 @@ Mon May 1 15:09:46 2000 Lars Magne Ingebrigtsen * mm-bodies.el (mm-encode-body): Remove reference to mm-default-charset in comment. -2000-04-24 00:56:00 Björn Torkelsson +2000-04-24 00:56:00 Bj,Av(Brn Torkelsson * rfc2047.el (rfc2047-encode-message-header): Fixing typo. @@ -857,7 +2783,7 @@ Mon Apr 24 21:12:06 2000 Lars Magne Ingebrigtsen * gnus-sum.el (t): M-down and M-up. -2000-04-22 20:22:03 Kai Großjohann +2000-04-22 20:22:03 Kai Gro,A_(Bjohann * gnus-sum.el: Doc fix. @@ -918,7 +2844,7 @@ Mon Apr 24 21:12:06 2000 Lars Magne Ingebrigtsen * gnus-msg.el (gnus-configure-posting-styles): Allow nil values to override. -2000-04-21 21:58:20 Kai Großjohann +2000-04-21 21:58:20 Kai Gro,A_(Bjohann * nnmail.el (nnmail-cache-insert): Does some stuff that is probably good to do, or something. I dunno. I just write these @@ -1510,7 +3436,7 @@ Wed Jan 5 17:06:41 2000 Lars Magne Ingebrigtsen * webmail.el (webmail-hotmail-article): Don't insert message id. -1999-12-28 Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Großjohann) +1999-12-28 Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro,A_(Bjohann) * nnimap.el (nnimap-split-fancy): New variable. (nnimap-split-fancy): New function. @@ -8668,3 +10594,7 @@ Sat Aug 29 20:34:17 1998 Lars Magne Ingebrigtsen Sat Aug 29 19:32:06 1998 Lars Magne Ingebrigtsen * gnus.el: Gnus v0.2 is released. + +;; Local Variables: +;; coding: iso-2022-7bit +;; End: diff --git a/lisp/Makefile.in b/lisp/Makefile.in index 2672f43..fa8df3b 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -12,41 +12,52 @@ INSTALL_DATA = @INSTALL_DATA@ SHELL = /bin/sh VPATH = @srcdir@ PACKAGEDIR = @PACKAGEDIR@ +W3DIR = @W3@ +GNUS_PRODUCT_NAME = @GNUS_PRODUCT_NAME@ +EXPORTING_FILES = $(EMACS) $(FLAGS) -f dgnushack-exporting-files 2>/dev/null all total: rm -f *.elc auto-autoloads.el custom-load.el - srcdir=$(srcdir) $(EMACS) $(FLAGS) -f dgnushack-compile + W3DIR=$(W3DIR) lispdir=$(lispdir) \ + srcdir=$(srcdir) $(EMACS) $(FLAGS) -f dgnushack-compile warn: rm -f *.elc - srcdir=$(srcdir) $(EMACS) $(FLAGS) --eval '(dgnushack-compile t)' 2>&1 | egrep -v "variable G|inhibit-point-motion-hooks|coding-system|temp-results|variable gnus|variable nn|scroll-in-place|deactivate-mark|filladapt-mode|byte-code-function-p|print-quoted|ps-right-header|ps-left-header|article-inhibit|print-escape|ssl-program-arguments|message-log-max" + W3DIR=$(W3DIR) lispdir=$(lispdir) srcdir=$(srcdir) $(EMACS) $(FLAGS) --eval '(dgnushack-compile t)' 2>&1 | egrep -v "variable G|inhibit-point-motion-hooks|coding-system|temp-results|variable gnus|variable nn|scroll-in-place|deactivate-mark|filladapt-mode|byte-code-function-p|print-quoted|ps-right-header|ps-left-header|article-inhibit|print-escape|ssl-program-arguments|message-log-max" # The "clever" rule is unsafe, since redefined macros are loaded from # .elc files, and not the .el file. clever some: - srcdir=$(srcdir) $(EMACS) $(FLAGS) -f dgnushack-compile + W3DIR=$(W3DIR) lispdir=$(lispdir) \ + srcdir=$(srcdir) $(EMACS) $(FLAGS) -f dgnushack-compile -install: clever - rm -f dgnushack.elc +install: clever install-lisp + +install-lisp: $(SHELL) $(top_srcdir)/mkinstalldirs $(lispdir) - @for p in *.el; do \ - if test "$$p" != "dgnuspath.el"; then \ - echo " $(INSTALL_DATA) $$p $(lispdir)/$$p"; \ - $(INSTALL_DATA) $$p $(lispdir)/$$p; \ - if test -f $$p"c"; then \ - echo " $(INSTALL_DATA) $$p""c"" $(lispdir)/$$p""c"; \ - $(INSTALL_DATA) $$p"c" $(lispdir)/$$p"c"; \ - fi; \ + @for p in `$(EXPORTING_FILES)`; do \ + echo " $(INSTALL_DATA) $$p $(lispdir)/$$p"; \ + $(INSTALL_DATA) $$p $(lispdir)/$$p; \ + if test -f $$p"c"; then \ + echo " $(INSTALL_DATA) $$p""c"" $(lispdir)/$$p""c"; \ + $(INSTALL_DATA) $$p"c" $(lispdir)/$$p"c"; \ fi; \ done -package: - srcdir=$(srcdir) $(EMACS) $(FLAGS) -f dgnushack-make-package +# Rule for XEmacs package. +install-package-manifest: + srcdir=$(srcdir) $(EMACS) $(FLAGS) \ + -f dgnushack-install-package-manifest \ + $(PACKAGEDIR) $(GNUS_PRODUCT_NAME) + +compose-package: + srcdir=$(srcdir) $(EMACS) $(FLAGS) -f dgnushack-make-autoloads -install-package: clever - rm -f dgnushack.elc - srcdir=$(srcdir) $(EMACS) $(FLAGS) -f dgnushack-make-package \ - -f dgnushack-install-package $(PACKAGEDIR) +remove-extra-files-in-package: + srcdir=$(srcdir) $(EMACS) $(FLAGS) \ + -f dgnushack-remove-extra-files-in-package \ + $(PACKAGEDIR) $(GNUS_PRODUCT_NAME) +# tags: etags *.el diff --git a/lisp/base64.el b/lisp/base64.el index 2a47045..7754162 100644 --- a/lisp/base64.el +++ b/lisp/base64.el @@ -1,305 +1,54 @@ -;;; base64.el,v --- Base64 encoding functions -;; Author: Kyle E. Jones -;; Created: 1997/03/12 14:37:09 -;; Version: 1.6 +;;; base64.el --- Base64 encoding functions using MEL +;; Copyright (C) 2000 Free Software Foundation, Inc. + +;; Author: T-gnus development team ;; Keywords: extensions -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (C) 1997 Kyle E. Jones -;;; -;;; This file is not part of GNU Emacs, but the same permissions apply. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; This file is part of T-gnus. + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. -(eval-when-compile (require 'static)) +;;; Commentary: -(require 'mel) +;;; Code: (eval-and-compile - (defun autoload-functionp (object) + (defun base64-autoload-functionp (object) (if (functionp object) (let ((def object)) (while (and (symbolp def) (fboundp def)) (setq def (symbol-function def))) (eq (car-safe def) 'autoload)))) - (if (autoload-functionp 'base64-decode-string) + + (if (base64-autoload-functionp 'base64-decode-string) (fmakunbound 'base64-decode-string)) - (if (autoload-functionp 'base64-decode-region) + (if (base64-autoload-functionp 'base64-decode-region) (fmakunbound 'base64-decode-region)) - (if (autoload-functionp 'base64-encode-string) + (if (base64-autoload-functionp 'base64-encode-string) (fmakunbound 'base64-encode-string)) - (if (autoload-functionp 'base64-encode-region) + (if (base64-autoload-functionp 'base64-encode-region) (fmakunbound 'base64-encode-region)) + + (require 'mel) + (mel-find-function 'mime-decode-string "base64") (mel-find-function 'mime-decode-region "base64") (mel-find-function 'mime-encode-string "base64") (mel-find-function 'mime-encode-region "base64")) -(static-when nil -(eval-when-compile (require 'cl)) - -;; For non-MULE -(if (not (fboundp 'char-int)) - (fset 'char-int 'identity)) - -(defvar base64-alphabet - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/") - -(defvar base64-decoder-program nil - "*Non-nil value should be a string that names a MIME base64 decoder. -The program should expect to read base64 data on its standard -input and write the converted data to its standard output.") - -(defvar base64-decoder-switches nil - "*List of command line flags passed to the command named by -base64-decoder-program.") - -(defvar base64-encoder-program nil - "*Non-nil value should be a string that names a MIME base64 encoder. -The program should expect arbitrary data on its standard -input and write base64 data to its standard output.") - -(defvar base64-encoder-switches nil - "*List of command line flags passed to the command named by -base64-encoder-program.") - -(defconst base64-alphabet-decoding-alist - '( - ( ?A . 00) ( ?B . 01) ( ?C . 02) ( ?D . 03) ( ?E . 04) ( ?F . 05) - ( ?G . 06) ( ?H . 07) ( ?I . 08) ( ?J . 09) ( ?K . 10) ( ?L . 11) - ( ?M . 12) ( ?N . 13) ( ?O . 14) ( ?P . 15) ( ?Q . 16) ( ?R . 17) - ( ?S . 18) ( ?T . 19) ( ?U . 20) ( ?V . 21) ( ?W . 22) ( ?X . 23) - ( ?Y . 24) ( ?Z . 25) ( ?a . 26) ( ?b . 27) ( ?c . 28) ( ?d . 29) - ( ?e . 30) ( ?f . 31) ( ?g . 32) ( ?h . 33) ( ?i . 34) ( ?j . 35) - ( ?k . 36) ( ?l . 37) ( ?m . 38) ( ?n . 39) ( ?o . 40) ( ?p . 41) - ( ?q . 42) ( ?r . 43) ( ?s . 44) ( ?t . 45) ( ?u . 46) ( ?v . 47) - ( ?w . 48) ( ?x . 49) ( ?y . 50) ( ?z . 51) ( ?0 . 52) ( ?1 . 53) - ( ?2 . 54) ( ?3 . 55) ( ?4 . 56) ( ?5 . 57) ( ?6 . 58) ( ?7 . 59) - ( ?8 . 60) ( ?9 . 61) ( ?+ . 62) ( ?/ . 63) - )) - -(defvar base64-alphabet-decoding-vector - (let ((v (make-vector 123 nil)) - (p base64-alphabet-decoding-alist)) - (while p - (aset v (car (car p)) (cdr (car p))) - (setq p (cdr p))) - v)) - -(defvar base64-binary-coding-system 'binary) - -(defun base64-run-command-on-region (start end output-buffer command - &rest arg-list) - (let ((tempfile nil) status errstring default-process-coding-system - (coding-system-for-write base64-binary-coding-system) - (coding-system-for-read base64-binary-coding-system)) - (unwind-protect - (progn - (setq tempfile (make-temp-name "base64")) - (setq status - (apply 'call-process-region - start end command nil - (list output-buffer tempfile) - nil arg-list)) - (cond ((equal status 0) t) - ((zerop (save-excursion - (set-buffer (find-file-noselect tempfile)) - (buffer-size))) - t) - (t (save-excursion - (set-buffer (find-file-noselect tempfile)) - (setq errstring (buffer-string)) - (kill-buffer nil) - (cons status errstring))))) - (ignore-errors - (delete-file tempfile))))) - -(if (string-match "XEmacs" emacs-version) - (defalias 'base64-insert-char 'insert-char) - (defun base64-insert-char (char &optional count ignored buffer) - (if (or (null buffer) (eq buffer (current-buffer))) - (insert-char char count) - (with-current-buffer buffer - (insert-char char count)))) - (setq base64-binary-coding-system 'no-conversion)) - -(defun base64-decode-region (start end) - (interactive "r") - ;;(message "Decoding base64...") - (let ((work-buffer nil) - (done nil) - (counter 0) - (bits 0) - (lim 0) inputpos - (non-data-chars (concat "^=" base64-alphabet))) - (unwind-protect - (save-excursion - (setq work-buffer (generate-new-buffer " *base64-work*")) - (buffer-disable-undo work-buffer) - (if base64-decoder-program - (let* ((binary-process-output t) ; any text already has CRLFs - (status (apply 'base64-run-command-on-region - start end work-buffer - base64-decoder-program - base64-decoder-switches))) - (if (not (eq status t)) - (error "%s" (cdr status)))) - (goto-char start) - (skip-chars-forward non-data-chars end) - (while (not done) - (setq inputpos (point)) - (cond - ((> (skip-chars-forward base64-alphabet end) 0) - (setq lim (point)) - (while (< inputpos lim) - (setq bits (+ bits - (aref base64-alphabet-decoding-vector - (char-int (char-after inputpos))))) - (setq counter (1+ counter) - inputpos (1+ inputpos)) - (cond ((= counter 4) - (base64-insert-char (lsh bits -16) 1 nil work-buffer) - (base64-insert-char (logand (lsh bits -8) 255) 1 nil - work-buffer) - (base64-insert-char (logand bits 255) 1 nil - work-buffer) - (setq bits 0 counter 0)) - (t (setq bits (lsh bits 6))))))) - (cond - ((= (point) end) - (if (not (zerop counter)) - (error "at least %d bits missing at end of base64 encoding" - (* (- 4 counter) 6))) - (setq done t)) - ((eq (char-after (point)) ?=) - (setq done t) - (cond ((= counter 1) - (error "at least 2 bits missing at end of base64 encoding")) - ((= counter 2) - (base64-insert-char (lsh bits -10) 1 nil work-buffer)) - ((= counter 3) - (base64-insert-char (lsh bits -16) 1 nil work-buffer) - (base64-insert-char (logand (lsh bits -8) 255) - 1 nil work-buffer)) - ((= counter 0) t))) - (t (skip-chars-forward non-data-chars end))))) - (or (markerp end) (setq end (set-marker (make-marker) end))) - (goto-char start) - (insert-buffer-substring work-buffer) - (delete-region (point) end)) - (and work-buffer (kill-buffer work-buffer)))) - ;;(message "Decoding base64... done") - ) - -(defun base64-encode-region (start end &optional no-line-break) - (interactive "r") - (message "Encoding base64...") - (let ((work-buffer nil) - (counter 0) - (cols 0) - (bits 0) - (alphabet base64-alphabet) - inputpos) - (unwind-protect - (save-excursion - (setq work-buffer (generate-new-buffer " *base64-work*")) - (buffer-disable-undo work-buffer) - (if base64-encoder-program - (let ((status (apply 'base64-run-command-on-region - start end work-buffer - base64-encoder-program - base64-encoder-switches))) - (if (not (eq status t)) - (error "%s" (cdr status)))) - (setq inputpos start) - (while (< inputpos end) - (setq bits (+ bits (char-int (char-after inputpos)))) - (setq counter (1+ counter)) - (cond ((= counter 3) - (base64-insert-char (aref alphabet (lsh bits -18)) 1 nil - work-buffer) - (base64-insert-char - (aref alphabet (logand (lsh bits -12) 63)) - 1 nil work-buffer) - (base64-insert-char - (aref alphabet (logand (lsh bits -6) 63)) - 1 nil work-buffer) - (base64-insert-char - (aref alphabet (logand bits 63)) - 1 nil work-buffer) - (setq cols (+ cols 4)) - (cond ((and (= cols 72) - (not no-line-break)) - (base64-insert-char ?\n 1 nil work-buffer) - (setq cols 0))) - (setq bits 0 counter 0)) - (t (setq bits (lsh bits 8)))) - (setq inputpos (1+ inputpos))) - ;; write out any remaining bits with appropriate padding - (if (= counter 0) - nil - (setq bits (lsh bits (- 16 (* 8 counter)))) - (base64-insert-char (aref alphabet (lsh bits -18)) 1 nil - work-buffer) - (base64-insert-char (aref alphabet (logand (lsh bits -12) 63)) - 1 nil work-buffer) - (if (= counter 1) - (base64-insert-char ?= 2 nil work-buffer) - (base64-insert-char (aref alphabet (logand (lsh bits -6) 63)) - 1 nil work-buffer) - (base64-insert-char ?= 1 nil work-buffer))) - (if (and (> cols 0) - (not no-line-break)) - (base64-insert-char ?\n 1 nil work-buffer))) - (or (markerp end) (setq end (set-marker (make-marker) end))) - (goto-char start) - (insert-buffer-substring work-buffer) - (delete-region (point) end)) - (and work-buffer (kill-buffer work-buffer)))) - (message "Encoding base64... done")) - -(defun base64-encode (string &optional no-line-break) - (save-excursion - (set-buffer (get-buffer-create " *base64-encode*")) - (erase-buffer) - (insert string) - (base64-encode-region (point-min) (point-max) no-line-break) - (skip-chars-backward " \t\r\n") - (delete-region (point-max) (point)) - (prog1 - (buffer-string) - (kill-buffer (current-buffer))))) - -(defun base64-decode (string) - (save-excursion - (set-buffer (get-buffer-create " *base64-decode*")) - (erase-buffer) - (insert string) - (base64-decode-region (point-min) (point-max)) - (goto-char (point-max)) - (skip-chars-backward " \t\r\n") - (delete-region (point-max) (point)) - (prog1 - (buffer-string) - (kill-buffer (current-buffer))))) - -(fset 'base64-decode-string 'base64-decode) -(fset 'base64-encode-string 'base64-encode) - -);; (static-when nil ... - (provide 'base64) + +;;; base64.el ends here diff --git a/lisp/binhex.el b/lisp/binhex.el index 200d571..0147921 100644 --- a/lisp/binhex.el +++ b/lisp/binhex.el @@ -1,8 +1,7 @@ ;;; binhex.el -- elisp native binhex decode -;; Copyright (c) 1998 Free Software Foundation, Inc. +;; Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu -;; Create Date: Oct 1, 1998 ;; Keywords: binhex news ;; This file is part of GNU Emacs. @@ -28,8 +27,11 @@ (eval-when-compile (require 'cl)) -(if (not (fboundp 'char-int)) - (fset 'char-int 'identity)) +(eval-and-compile + (defalias 'binhex-char-int + (if (fboundp 'char-int) + 'char-int + 'identity))) (defvar binhex-decoder-program "hexbin" "*Non-nil value should be a string that names a uu decoder. @@ -67,7 +69,7 @@ input and write the converted data to its standard output.") ((boundp 'temporary-file-directory) temporary-file-directory) ("/tmp/"))) -(if (string-match "XEmacs" emacs-version) +(if (featurep 'xemacs) (defalias 'binhex-insert-char 'insert-char) (defun binhex-insert-char (char &optional count ignored buffer) (if (or (null buffer) (eq buffer (current-buffer))) @@ -132,14 +134,14 @@ input and write the converted data to its standard output.") (defun binhex-string-big-endian (string) (let ((ret 0) (i 0) (len (length string))) (while (< i len) - (setq ret (+ (lsh ret 8) (char-int (aref string i))) + (setq ret (+ (lsh ret 8) (binhex-char-int (aref string i))) i (1+ i))) ret)) (defun binhex-string-little-endian (string) (let ((ret 0) (i 0) (shift 0) (len (length string))) (while (< i len) - (setq ret (+ ret (lsh (char-int (aref string i)) shift)) + (setq ret (+ ret (lsh (binhex-char-int (aref string i)) shift)) i (1+ i) shift (+ shift 8))) ret)) @@ -149,11 +151,11 @@ input and write the converted data to its standard output.") (let ((pos (point-min)) len) (vector (prog1 - (setq len (char-int (char-after pos))) + (setq len (binhex-char-int (char-after pos))) (setq pos (1+ pos))) (buffer-substring pos (setq pos (+ pos len))) (prog1 - (setq len (char-int (char-after pos))) + (setq len (binhex-char-int (char-after pos))) (setq pos (1+ pos))) (buffer-substring pos (setq pos (+ pos 4))) (buffer-substring pos (setq pos (+ pos 4))) @@ -198,15 +200,8 @@ If HEADER-ONLY is non-nil only decode header and return filename." (save-excursion (goto-char start) (when (re-search-forward binhex-begin-line end t) - (if (and (not (string-match "XEmacs\\|Lucid" emacs-version)) - (boundp 'enable-multibyte-characters)) - (let ((multibyte - (default-value 'enable-multibyte-characters))) - (setq-default enable-multibyte-characters nil) - (setq work-buffer (generate-new-buffer " *binhex-work*")) - (setq-default enable-multibyte-characters multibyte)) + (let (default-enable-multibyte-characters) (setq work-buffer (generate-new-buffer " *binhex-work*"))) - (buffer-disable-undo work-buffer) (beginning-of-line) (setq bits 0 counter 0) (while tmp @@ -267,9 +262,9 @@ If HEADER-ONLY is non-nil only decode header and return filename." "Binhex decode region between START and END using external decoder." (interactive "r") (let ((cbuf (current-buffer)) firstline work-buffer status - (file-name (concat binhex-temporary-file-directory - (binhex-decode-region start end t) - ".data"))) + (file-name (expand-file-name + (concat (binhex-decode-region start end t) ".data") + binhex-temporary-file-directory))) (save-excursion (goto-char start) (when (re-search-forward binhex-begin-line nil t) diff --git a/lisp/dgnushack.el b/lisp/dgnushack.el index 0a43379..d46fd34 100644 --- a/lisp/dgnushack.el +++ b/lisp/dgnushack.el @@ -29,28 +29,35 @@ ;;; Code: ;; Set coding priority of Shift-JIS to the bottom. -(defvar *predefined-category*) -(defvar coding-category-list) (if (featurep 'xemacs) - (fset 'set-coding-priority 'ignore) - (fset 'coding-priority-list 'ignore) - (fset 'set-coding-priority-list 'ignore)) + (defalias 'set-coding-priority 'ignore) + (defalias 'coding-priority-list 'ignore) + (defalias 'set-coding-priority-list 'ignore)) (cond ((and (featurep 'xemacs) (featurep 'mule)) (if (memq 'shift-jis (coding-priority-list)) (set-coding-priority-list - (nconc (delq 'shift-jis (coding-priority-list)) '(shift-jis))))) + (append (delq 'shift-jis (coding-priority-list)) '(shift-jis))))) ((boundp 'MULE) (put '*coding-category-sjis* 'priority (length *predefined-category*))) ((featurep 'mule) (if (memq 'coding-category-sjis coding-category-list) (set-coding-priority - (nconc (delq 'coding-category-sjis coding-category-list) - '(coding-category-sjis)))))) + (append (delq 'coding-category-sjis + (copy-sequence coding-category-list)) + '(coding-category-sjis)))))) -(fset 'facep 'ignore) +(defalias 'facep 'ignore) (require 'cl) +(defvar srcdir (or (getenv "srcdir") ".")) + +(defvar dgnushack-w3-dir (let ((w3dir (getenv "W3DIR"))) + (unless (zerop (length w3dir)) + (file-name-as-directory w3dir)))) +(when dgnushack-w3-dir + (push dgnushack-w3-dir load-path)) + ;; If we are building w3 in a different directory than the source ;; directory, we must read *.el from source directory and write *.elc ;; into the building directory. For that, we define this function @@ -74,8 +81,8 @@ (unless (fboundp 'si:byte-optimize-form-code-walker) (byte-optimize-form nil);; Load `byte-opt' or `byte-optimize'. (setq max-specpdl-size 3000) - (fset 'si:byte-optimize-form-code-walker - (symbol-function 'byte-optimize-form-code-walker)) + (defalias 'si:byte-optimize-form-code-walker + (symbol-function 'byte-optimize-form-code-walker)) (defun byte-optimize-form-code-walker (form for-effect) (if (and for-effect (memq (car-safe form) '(and or))) ;; Fix bug in and/or forms. @@ -97,18 +104,8 @@ (si:byte-optimize-form-code-walker form for-effect))) (byte-compile 'byte-optimize-form-code-walker)) -(defvar srcdir (or (getenv "srcdir") ".")) - (load (expand-file-name "gnus-clfns.el" srcdir) nil t t) -;(push "/usr/share/emacs/site-lisp" load-path) - -;; Attempt to pickup the additional load-path(s). -(load (expand-file-name "dgnuspath.el" srcdir) nil nil t) -(condition-case err - (load "~/.lpath.el" t nil t) - (error (message "Error in \"~/.lpath.el\" file: %s" err))) - (condition-case nil (char-after) (wrong-number-of-arguments @@ -117,8 +114,7 @@ (defun byte-optimize-char-after (form) (if (null (cdr form)) '(char-after (point)) - form)) - )) + form)))) (condition-case nil (char-before) @@ -128,22 +124,37 @@ (defun byte-optimize-char-before (form) (if (null (cdr form)) '(char-before (point)) - form)) - )) + form)))) -;; `char-after' and `char-before' must be well-behaved before lpath.el -;; is loaded. Because it requires `poe' via `path-util'. -(load (expand-file-name "lpath.el" srcdir) nil t t) +(load (expand-file-name "dgnuspath.el" srcdir) nil nil t) -(unless (fboundp 'byte-compile-file-form-custom-declare-variable) - ;; Bind defcustom'ed variables. - (put 'custom-declare-variable 'byte-hunk-handler - 'byte-compile-file-form-custom-declare-variable) - (defun byte-compile-file-form-custom-declare-variable (form) - (if (memq 'free-vars byte-compile-warnings) - (setq byte-compile-bound-variables - (cons (nth 1 (nth 1 form)) byte-compile-bound-variables))) - form)) +(condition-case err + (load "~/.lpath.el" t nil t) + (error (message "Error in \"~/.lpath.el\" file: %s" err))) + +;; Don't load path-util until `char-after' and `char-before' have been +;; optimized because it requires `poe' and then modify the functions. +(or (featurep 'path-util) + (load "apel/path-util")) +(add-path "apel") +(add-path "flim") +(unless (module-installed-p 'mel) + ;; FLIM 1.14 may have installed in two "flim" subdirectories. + (push (expand-file-name "flim" + (file-name-directory (get-latest-path "^apel$" t))) + load-path) + (unless (module-installed-p 'mel) + (error " +FLIM package does not found in %s. +Try to re-configure with --with-addpath=FLIM_PATH and run make again. +" + (progn + (add-path "semi") + load-path)))) +(add-path "semi") + +(push srcdir load-path) +(load (expand-file-name "lpath.el" srcdir) nil t t) ;; Bind functions defined by `defun-maybe'. (put 'defun-maybe 'byte-hunk-handler 'byte-compile-file-form-defun-maybe) @@ -160,8 +171,72 @@ :symbol-for-testing-whether-colon-keyword-is-available-or-not (void-variable ;; Bind keywords. - (mapcar (lambda (keyword) (set keyword keyword)) - '(:button-keymap :data :file :mime-handle)))) + (dolist (keyword '(:button-keymap :data :file :mime-handle + :key-type :value-type)) + (set keyword keyword)))) + +;; If you are using Mule 2.3 based on Emacs 19.34, you may also put the +;; following lines in your .emacs file, before gnus related modules are +;; loaded. It is not always necessary. However if it is done, you will +;; be able to load or evaluate gnus related *.el (not compiled) files. +;; ------ cut here ------ cut here ------ cut here ------ cut here ------ +(if (boundp 'MULE) + (progn + (setq :version ':version + :set-after ':set-after) + (require 'custom) + (defadvice custom-handle-keyword + (around dont-signal-an-error-even-if-unsupported-keyword-is-given + activate) + "Don't signal an error even if unsupported keyword is given." + (if (not (memq (ad-get-arg 1) '(:version :set-after))) + ad-do-it)))) +;; ------ cut here ------ cut here ------ cut here ------ cut here ------ + +(when (boundp 'MULE) + (put 'custom-declare-face 'byte-optimizer + 'byte-optimize-ignore-unsupported-custom-keywords) + (put 'custom-declare-group 'byte-optimizer + 'byte-optimize-ignore-unsupported-custom-keywords) + (defun byte-optimize-ignore-unsupported-custom-keywords (form) + (if (or (memq ':version (nthcdr 4 form)) + (memq ':set-after (nthcdr 4 form))) + (let ((newform (list (car form) (nth 1 form) + (nth 2 form) (nth 3 form))) + (args (nthcdr 4 form))) + (while args + (or (memq (car args) '(:version :set-after)) + (setq newform (nconc newform (list (car args) + (car (cdr args)))))) + (setq args (cdr (cdr args)))) + newform) + form)) + + (put 'custom-declare-variable 'byte-hunk-handler + 'byte-compile-file-form-custom-declare-variable) + (defun byte-compile-file-form-custom-declare-variable (form) + ;; Bind defcustom'ed variables. + (if (memq 'free-vars byte-compile-warnings) + (setq byte-compile-bound-variables + (cons (nth 1 (nth 1 form)) byte-compile-bound-variables))) + (if (memq ':version (nthcdr 4 form)) + ;; Make the variable uncustomizable. + `(defvar ,(nth 1 (nth 1 form)) ,(nth 1 (nth 2 form)) + ,(substring (nth 3 form) (if (string-match "^[\t *]+" (nth 3 form)) + (match-end 0) + 0))) + ;; Ignore unsupported keyword(s). + (if (memq ':set-after (nthcdr 4 form)) + (let ((newform (list (car form) (nth 1 form) + (nth 2 form) (nth 3 form))) + (args (nthcdr 4 form))) + (while args + (or (eq (car args) ':set-after) + (setq newform (nconc newform (list (car args) + (car (cdr args)))))) + (setq args (cdr (cdr args)))) + newform) + form)))) ;; Unknown variables and functions. (unless (boundp 'buffer-file-coding-system) @@ -182,6 +257,50 @@ (defalias 'ange-ftp-re-read-dir 'ignore) (defalias 'define-mail-user-agent 'ignore) +(defconst dgnushack-unexporting-files + (append '("dgnushack.el" "dgnuspath.el" "lpath.el" "ptexinfmt.el") + (unless (or (condition-case nil + (require 'w3-forms) + (error nil)) + ;; Maybe mis-configured Makefile is used (e.g. + ;; configured for FSFmacs but XEmacs is running). + (let ((lp (delete dgnushack-w3-dir + (copy-sequence load-path)))) + (when (condition-case nil + (let ((load-path lp)) + (require 'w3-forms)) + (error nil)) + ;; If success, fix `load-path' for compiling. + (setq load-path lp)))) + '("nnweb.el" "nnlistserv.el" "nnultimate.el" + "nnslashdot.el" "nnwarchive.el" "webmail.el" + "nnwfm.el")) + (condition-case nil + (progn (require 'bbdb) nil) + (error '("gnus-bbdb.el"))) + (unless (featurep 'xemacs) + '("gnus-xmas.el" "gnus-picon.el" "messagexmas.el" + "nnheaderxm.el" "smiley.el")) + (when (or (featurep 'xemacs) (<= emacs-major-version 20)) + '("smiley-ems.el")) + (when (and (fboundp 'base64-decode-string) + (subrp (symbol-function 'base64-decode-string))) + '("base64.el")) + (when (and (fboundp 'md5) (subrp (symbol-function 'md5))) + '("md5.el"))) + "Files which will not be installed.") + +(defconst dgnushack-exporting-files + (let ((files (directory-files srcdir nil "^[^=].*\\.el$" t))) + (dolist (file dgnushack-unexporting-files) + (setq files (delete file files))) + (sort files 'string-lessp)) + "Files which will be compiled and installed.") + +(defun dgnushack-exporting-files () + "Print name of files which will be installed." + (princ (mapconcat 'identity dgnushack-exporting-files " "))) + (defun dgnushack-compile (&optional warn) ;;(setq byte-compile-dynamic t) (unless warn @@ -195,187 +314,41 @@ You also then need to add the following to the lisp/dgnushack.el file: (push \"~/lisp/custom\" load-path) Modify to suit your needs.")) - (let ((files (directory-files srcdir nil "^[^=].*\\.el$")) - (xemacs (string-match "XEmacs" emacs-version)) + + ;; Show `load-path'. + (message "load-path=(\"%s\")" + (mapconcat 'identity load-path "\"\n \"")) + + (dolist (file dgnushack-exporting-files) + (setq file (expand-file-name file srcdir)) + (when (and (file-exists-p + (setq elc (concat (file-name-nondirectory file) "c"))) + (file-newer-than-file-p file elc)) + (delete-file elc))) + + (let ((files dgnushack-exporting-files) ;;(byte-compile-generate-call-tree t) file elc) - (dolist (file '("dgnushack.el" "dgnuspath.el" "lpath.el")) - (setq files (delete file files))) - (condition-case () - (require 'w3-forms) - (error - (dolist (file '("nnweb.el" "nnlistserv.el" "nnultimate.el" - "nnslashdot.el" "nnwarchive.el" "webmail.el")) - (setq files (delete file files))))) - (condition-case () - (require 'bbdb) - (error (setq files (delete "gnus-bbdb.el" files)))) (while (setq file (pop files)) - (unless (or (and (not xemacs) - (member file - '("gnus-xmas.el" "gnus-picon.el" - "messagexmas.el" "nnheaderxm.el" - "smiley.el" "x-overlay.el"))) - (and (string-equal file "md5.el") - (not (and (fboundp 'md5) - (subrp (symbol-function 'md5)))))) - (setq file (expand-file-name file srcdir)) - (when (or (not (file-exists-p (setq elc (concat file "c")))) - (file-newer-than-file-p file elc)) - (ignore-errors - (byte-compile-file file))))))) + (setq file (expand-file-name file srcdir)) + (when (or (not (file-exists-p + (setq elc (concat (file-name-nondirectory file) "c")))) + (file-newer-than-file-p file elc)) + (ignore-errors + (byte-compile-file file)))))) (defun dgnushack-recompile () (require 'gnus) (byte-recompile-directory "." 0)) -;; Avoid byte-compile warnings. -(defvar gnus-product-name) -(defvar early-package-load-path) -(defvar early-packages) -(defvar last-package-load-path) -(defvar last-packages) -(defvar late-package-load-path) -(defvar late-packages) - -(defconst dgnushack-info-file-regexp - (concat "^\\(gnus\\|message\\|emacs-mime\\|gnus-ja\\|message-ja\\)" - "\\.info\\(-[0-9]+\\)?$")) - -(defconst dgnushack-texi-file-regexp - "^\\(gnus\\|message\\|emacs-mime\\|gnus-ja\\|message-ja\\)\\.texi$") - -(defun dgnushack-make-package () - (require 'gnus) - (let* ((product-name (downcase gnus-product-name)) - (lisp-dir (concat "lisp/" product-name "/")) - make-backup-files) - - (message "Updating autoloads for directory %s..." default-directory) - (let ((generated-autoload-file "auto-autoloads.el") - noninteractive - (omsg (symbol-function 'message))) - (defun message (fmt &rest args) - (cond ((and (string-equal "Generating autoloads for %s..." fmt) - (file-exists-p (file-name-nondirectory (car args)))) - (funcall omsg fmt (file-name-nondirectory (car args)))) - ((string-equal "No autoloads found in %s" fmt)) - ((string-equal "Generating autoloads for %s...done" fmt)) - (t (apply omsg fmt args)))) - (unwind-protect - (update-autoloads-from-directory default-directory) - (fset 'message omsg))) - (byte-compile-file "auto-autoloads.el") - - (with-temp-buffer - (let ((standard-output (current-buffer))) - (Custom-make-dependencies ".")) - (message "%s" (buffer-string))) - (require 'cus-load) - (byte-compile-file "custom-load.el") - - (message "Generating MANIFEST.%s for the package..." product-name) - (with-temp-buffer - (insert "pkginfo/MANIFEST." product-name "\n" - lisp-dir - (mapconcat - 'identity - (sort (delete "dgnuspath.el" - (delete "patchs.elc" - (directory-files "." nil "\\.elc?$"))) - 'string-lessp) - (concat "\n" lisp-dir)) - "\ninfo/" - (mapconcat - 'identity - (sort (directory-files "../texi/" - nil dgnushack-info-file-regexp) - 'string-lessp) - "\ninfo/") - "\n") - (write-file (concat "../MANIFEST." product-name))))) - -(defun dgnushack-install-package () - (let ((package-dir (car command-line-args-left)) - dirs info-dir pkginfo-dir product-name lisp-dir manifest files) - (unless package-dir - (when (boundp 'early-packages) - (setq dirs (delq nil (append (when early-package-load-path - early-packages) - (when late-package-load-path - late-packages) - (when last-package-load-path - last-packages)))) - (while (and dirs (not package-dir)) - (when (file-exists-p (car dirs)) - (setq package-dir (car dirs) - dirs (cdr dirs)))))) - (unless package-dir - (error "%s" " -You must specify the name of the package path as follows: - -% make install-package PACKAGEDIR=/usr/local/lib/xemacs/xemacs-packages -" - )) - (setq info-dir (expand-file-name "info/" package-dir) - pkginfo-dir (expand-file-name "pkginfo/" package-dir)) - (require 'gnus) - (setq product-name (downcase gnus-product-name) - lisp-dir (expand-file-name (concat "lisp/" product-name "/") - package-dir) - manifest (concat "MANIFEST." product-name)) - - (unless (file-directory-p lisp-dir) - (make-directory lisp-dir t)) - (unless (file-directory-p info-dir) - (make-directory info-dir)) - (unless (file-directory-p pkginfo-dir) - (make-directory pkginfo-dir)) - - (setq files - (sort (delete "dgnuspath.el" - (delete "dgnuspath.elc" - (directory-files "." nil "\\.elc?$"))) - 'string-lessp)) - (mapcar - (lambda (file) - (unless (or (member file files) - (not (string-match "\\.elc?$" file))) - (setq file (expand-file-name file lisp-dir)) - (message "Removing %s..." file) - (condition-case nil - (delete-file file) - (error nil)))) - (directory-files lisp-dir nil nil nil t)) - (mapcar - (lambda (file) - (message "Copying %s to %s..." file lisp-dir) - (copy-file file (expand-file-name file lisp-dir) t t)) - files) - - (mapcar - (lambda (file) - (message "Copying ../texi/%s to %s..." file info-dir) - (copy-file (expand-file-name file "../texi/") - (expand-file-name file info-dir) - t t)) - (sort (directory-files "../texi/" nil dgnushack-info-file-regexp) - 'string-lessp)) - - (message "Copying ../%s to %s..." manifest pkginfo-dir) - (copy-file (expand-file-name manifest "../") - (expand-file-name manifest pkginfo-dir) t t) - - (message "Done"))) - (defun dgnushack-texi-add-suffix-and-format () (dgnushack-texi-format t)) (defun dgnushack-texi-format (&optional addsuffix) (if (not noninteractive) (error "batch-texinfo-format may only be used -batch.")) - (require 'texinfmt) + (require 'ptexinfmt) (let ((auto-save-default nil) (find-file-run-dired nil) coding-system-for-write @@ -391,28 +364,36 @@ You must specify the name of the package path as follows: command-line-args-left (cdr command-line-args-left))) ((file-directory-p file) (setq command-line-args-left - (nconc (directory-files file) + (nconc (directory-files file nil nil t) (cdr command-line-args-left)))) (t (setq files (cons file files) command-line-args-left (cdr command-line-args-left))))) - (while files - (setq file (car files) - files (cdr files)) + (while (setq file (pop files)) (condition-case err (progn (if buffer-file-name (kill-buffer (current-buffer))) (find-file file) + (buffer-disable-undo (current-buffer)) (if (boundp 'MULE) (setq output-coding-system (symbol-value 'file-coding-system)) (setq coding-system-for-write buffer-file-coding-system)) + ;; Remove ignored areas first. + (while (re-search-forward "^@ignore[\t\r ]*$" nil t) + (delete-region (match-beginning 0) + (if (re-search-forward + "^@end[\t ]+ignore[\t\r ]*$" nil t) + (1+ (match-end 0)) + (point-max)))) + (goto-char (point-min)) + ;; Add suffix if it is needed. (when (and addsuffix (re-search-forward "^@setfilename[\t ]+\\([^\t\n ]+\\)" nil t) (not (string-match "\\.info$" (match-string 1)))) - (insert ".info")) - (buffer-disable-undo (current-buffer)) + (insert ".info") + (goto-char (point-min))) ;; process @include before updating node ;; This might produce some problem if we use @lowersection or ;; such. @@ -470,9 +451,109 @@ You must specify the name of the package path as follows: (setq error 1)))) (kill-emacs error)))) -;; Mule-2.3@19.34 fails to make info from texi. -(when (boundp 'MULE) - (put 'detailmenu 'texinfo-format 'texinfo-discard-line) - (put 'detailmenu 'texinfo-end 'texinfo-discard-command)) + +(defconst dgnushack-info-file-regexp-en + (let ((names '("gnus" "message" "emacs-mime")) + regexp name) + (while (setq name (pop names)) + (setq regexp (concat regexp "^" name "\\.info\\(-[0-9]+\\)?$" + (when names "\\|")))) + regexp) + "Regexp matching English info files.") + +(defconst dgnushack-info-file-regexp-ja + (let ((names '("gnus-ja" "message-ja")) + regexp name) + (while (setq name (pop names)) + (setq regexp (concat regexp "^" name "\\.info\\(-[0-9]+\\)?$" + (when names "\\|")))) + regexp) + "Regexp matching Japanese info files.") + +(defun dgnushack-make-autoloads () + "Make auto-autoloads.el, custom-load.el and then compile them." + (let (make-backup-files) + (message "Updating autoloads for directory %s..." default-directory) + (let ((generated-autoload-file "auto-autoloads.el") + (si:message (symbol-function 'message)) + noninteractive) + (defun message (fmt &rest args) + (cond ((and (string-equal "Generating autoloads for %s..." fmt) + (file-exists-p (file-name-nondirectory (car args)))) + (funcall si:message fmt (file-name-nondirectory (car args)))) + ((string-equal "No autoloads found in %s" fmt)) + ((string-equal "Generating autoloads for %s...done" fmt)) + (t (apply si:message fmt args)))) + (unwind-protect + (update-autoloads-from-directory default-directory) + (fset 'message si:message))) + (byte-compile-file "auto-autoloads.el") + (with-temp-buffer + (let ((standard-output (current-buffer))) + (Custom-make-dependencies ".")) + (message "%s" (buffer-string))) + (require 'cus-load) + (byte-compile-file "custom-load.el"))) + +(defun dgnushack-remove-extra-files-in-package () + "Remove extra files in the lisp directory of the XEmacs package." + (let ((lisp-dir (expand-file-name (concat "lisp/" + ;; GNUS_PRODUCT_NAME + (cadr command-line-args-left) + "/") + ;; PACKAGEDIR + (car command-line-args-left)))) + (when (file-directory-p lisp-dir) + (let (files) + (dolist (file dgnushack-exporting-files) + (setq files (nconc files (list file (concat file "c"))))) + (dolist (file (directory-files lisp-dir nil nil t t)) + (unless (member file files) + (setq file (expand-file-name file lisp-dir)) + (message "Removing %s..." file) + (condition-case nil + (delete-file file) + (error nil)))))))) + +(defun dgnushack-install-package-manifest () + "Install MANIFEST file as an XEmacs package." + (let* ((package-dir (car command-line-args-left)) + (product-name (cadr command-line-args-left)) + (name (expand-file-name (concat "pkginfo/MANIFEST." product-name) + package-dir)) + make-backup-files) + (message "Generating %s..." name) + (with-temp-file name + (insert "pkginfo/MANIFEST." product-name "\n") + (let ((lisp-dir (concat "lisp/" product-name "/")) + (files (sort (directory-files "." nil "\\.elc?$" t) 'string-lessp)) + file) + (while (setq file (pop files)) + (unless (member file dgnushack-unexporting-files) + (insert lisp-dir file "\n"))) + (setq files + (sort (directory-files "../texi/" nil + (concat dgnushack-info-file-regexp-en + "\\|" + dgnushack-info-file-regexp-ja) + t) + 'string-lessp)) + (while (setq file (pop files)) + (insert "info/" file "\n")))))) + + +(define-compiler-macro describe-key-briefly (&whole form key &optional insert) + (if (condition-case nil + (progn + (describe-key-briefly '((())) nil) + t) + (wrong-number-of-arguments nil);; Old Emacsen. + (error t)) + form + (if insert + `(if ,insert + (insert (funcall 'describe-key-briefly ,key)) + (funcall 'describe-key-briefly ,key)) + `(funcall 'describe-key-briefly ,key)))) ;;; dgnushack.el ends here diff --git a/lisp/drums.el b/lisp/drums.el deleted file mode 100644 index 6b4a0d8..0000000 --- a/lisp/drums.el +++ /dev/null @@ -1,242 +0,0 @@ -;;; drums.el --- Functions for parsing RFC822bis headers -;; Copyright (C) 1998 Free Software Foundation, Inc. - -;; Author: Lars Magne Ingebrigtsen -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; DRUMS is an IETF Working Group that works (or worked) on the -;; successor to RFC822, "Standard For The Format Of Arpa Internet Text -;; Messages". This library is based on -;; draft-ietf-drums-msg-fmt-05.txt, released on 1998-08-05. - -;;; Code: - -(require 'time-date) -(require 'mm-util) - -(defvar drums-no-ws-ctl-token "\001-\010\013\014\016-\037\177" - "US-ASCII control characters excluding CR, LF and white space.") -(defvar drums-text-token "\001-\011\013\014\016-\177" - "US-ASCII characters exlcuding CR and LF.") -(defvar drums-specials-token "()<>[]:;@\\,.\"" - "Special characters.") -(defvar drums-quote-token "\\" - "Quote character.") -(defvar drums-wsp-token " \t" - "White space.") -(defvar drums-fws-regexp - (concat "[" drums-wsp-token "]*\n[" drums-wsp-token "]+") - "Folding white space.") -(defvar drums-atext-token "-^a-zA-Z0-9!#$%&'*+/=?_`{|}~" - "Textual token.") -(defvar drums-dot-atext-token "-^a-zA-Z0-9!#$%&'*+/=?_`{|}~." - "Textual token including full stop.") -(defvar drums-qtext-token - (concat drums-no-ws-ctl-token "\041\043-\133\135-\177") - "Non-white-space control characaters, plus the rest of ASCII excluding backslash and doublequote.") -(defvar drums-tspecials "][()<>@,;:\\\"/?=" - "Tspecials.") - -(defvar drums-syntax-table - (let ((table (copy-syntax-table emacs-lisp-mode-syntax-table))) - (modify-syntax-entry ?\\ "/" table) - (modify-syntax-entry ?< "(" table) - (modify-syntax-entry ?> ")" table) - (modify-syntax-entry ?@ "w" table) - (modify-syntax-entry ?/ "w" table) - (modify-syntax-entry ?= " " table) - (modify-syntax-entry ?* " " table) - (modify-syntax-entry ?\; " " table) - (modify-syntax-entry ?\' " " table) - table)) - -(defun drums-token-to-list (token) - "Translate TOKEN into a list of characters." - (let ((i 0) - b e c out range) - (while (< i (length token)) - (setq c (mm-char-int (aref token i))) - (incf i) - (cond - ((eq c (mm-char-int ?-)) - (if b - (setq range t) - (push c out))) - (range - (while (<= b c) - (push (mm-make-char 'ascii b) out) - (incf b)) - (setq range nil)) - ((= i (length token)) - (push (mm-make-char 'ascii c) out)) - (t - (setq b c)))) - (nreverse out))) - -(defsubst drums-init (string) - (set-syntax-table drums-syntax-table) - (insert string) - (drums-unfold-fws) - (goto-char (point-min))) - -(defun drums-remove-comments (string) - "Remove comments from STRING." - (with-temp-buffer - (let (c) - (drums-init string) - (while (not (eobp)) - (setq c (following-char)) - (cond - ((eq c ?\") - (forward-sexp 1)) - ((eq c ?\() - (delete-region (point) (progn (forward-sexp 1) (point)))) - (t - (forward-char 1)))) - (buffer-string)))) - -(defun drums-remove-whitespace (string) - "Remove comments from STRING." - (with-temp-buffer - (drums-init string) - (let (c) - (while (not (eobp)) - (setq c (following-char)) - (cond - ((eq c ?\") - (forward-sexp 1)) - ((eq c ?\() - (forward-sexp 1)) - ((memq c '(? ?\t ?\n)) - (delete-char 1)) - (t - (forward-char 1)))) - (buffer-string)))) - -(defun drums-get-comment (string) - "Return the first comment in STRING." - (with-temp-buffer - (drums-init string) - (let (result c) - (while (not (eobp)) - (setq c (following-char)) - (cond - ((eq c ?\") - (forward-sexp 1)) - ((eq c ?\() - (setq result - (buffer-substring - (1+ (point)) - (progn (forward-sexp 1) (1- (point)))))) - (t - (forward-char 1)))) - result))) - -(defun drums-parse-address (string) - "Parse STRING and return a MAILBOX / DISPLAY-NAME pair." - (with-temp-buffer - (let (display-name mailbox c display-string) - (drums-init string) - (while (not (eobp)) - (setq c (following-char)) - (cond - ((or (eq c ? ) - (eq c ?\t)) - (forward-char 1)) - ((eq c ?\() - (forward-sexp 1)) - ((eq c ?\") - (push (buffer-substring - (1+ (point)) (progn (forward-sexp 1) (1- (point)))) - display-name)) - ((looking-at (concat "[" drums-atext-token "@" "]")) - (push (buffer-substring (point) (progn (forward-sexp 1) (point))) - display-name)) - ((eq c ?<) - (setq mailbox - (drums-remove-whitespace - (drums-remove-comments - (buffer-substring - (1+ (point)) - (progn (forward-sexp 1) (1- (point)))))))) - (t (error "Unknown symbol: %c" c)))) - ;; If we found no display-name, then we look for comments. - (if display-name - (setq display-string - (mapconcat 'identity (reverse display-name) " ")) - (setq display-string (drums-get-comment string))) - (if (not mailbox) - (when (string-match "@" display-string) - (cons - (mapconcat 'identity (nreverse display-name) "") - (drums-get-comment string))) - (cons mailbox display-string))))) - -(defun drums-parse-addresses (string) - "Parse STRING and return a list of MAILBOX / DISPLAY-NAME pairs." - (with-temp-buffer - (drums-init string) - (let ((beg (point)) - pairs c) - (while (not (eobp)) - (setq c (following-char)) - (cond - ((memq c '(?\" ?< ?\()) - (forward-sexp 1)) - ((eq c ?,) - (push (drums-parse-address (buffer-substring beg (point))) - pairs) - (forward-char 1) - (setq beg (point))) - (t - (forward-char 1)))) - (push (drums-parse-address (buffer-substring beg (point))) - pairs) - (nreverse pairs)))) - -(defun drums-unfold-fws () - "Unfold folding white space in the current buffer." - (goto-char (point-min)) - (while (re-search-forward drums-fws-regexp nil t) - (replace-match " " t t)) - (goto-char (point-min))) - -(defun drums-parse-date (string) - "Return an Emacs time spec from STRING." - (apply 'encode-time (parse-time-string string))) - -(defun drums-narrow-to-header () - "Narrow to the header section in the current buffer." - (narrow-to-region - (goto-char (point-min)) - (if (search-forward "\n\n" nil 1) - (1- (point)) - (point-max))) - (goto-char (point-min))) - -(defun drums-quote-string (string) - "Quote string if it needs quoting to be displayed in a header." - (if (not (string-match (concat "[^" drums-atext-token "]") string)) - (concat "\"" string "\"") - string)) - -(provide 'drums) - -;;; drums.el ends here diff --git a/lisp/earcon.el b/lisp/earcon.el index a698479..7c42e8b 100644 --- a/lisp/earcon.el +++ b/lisp/earcon.el @@ -1,7 +1,11 @@ ;;; earcon.el --- Sound effects for messages -;; Copyright (C) 1996 Free Software Foundation + +;; Copyright (C) 1996, 2000 Free Software Foundation ;; Author: Steven L. Baur + +;; This file is part of GNU Emacs. + ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) @@ -22,9 +26,6 @@ ;;; Code: -(if (null (boundp 'running-xemacs)) - (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))) - (eval-when-compile (require 'cl)) (require 'gnus) (require 'gnus-audio) diff --git a/lisp/flow-fill.el b/lisp/flow-fill.el index 9aae7c4..64946f9 100644 --- a/lisp/flow-fill.el +++ b/lisp/flow-fill.el @@ -1,22 +1,26 @@ ;;; flow-fill.el --- interprete RFC2646 "flowed" text + ;; Copyright (C) 2000 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: mail -;; This program is free software; you can redistribute it and/or modify +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2 of the License, or -;; (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. -;; + ;; You should have received a copy of the GNU General Public License -;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. ;;; Commentary: @@ -31,7 +35,8 @@ ;; paragraph and we let `fill-region' fill the long line into several ;; lines with the quote prefix as `fill-prefix'. -;; Todo: encoding +;; Todo: encoding, implement basic `fill-region' (Emacs and XEmacs +;; implementations differ..) ;; History: @@ -39,16 +44,20 @@ ;; 2000-02-19 use `point-at-{b,e}ol' in XEmacs ;; 2000-03-11 no compile warnings for point-at-bol stuff ;; 2000-03-26 commited to gnus cvs +;; 2000-10-23 don't flow "-- " lines, make "quote-depth wins" rule +;; work when first line is at level 0. ;;; Code: +(eval-when-compile (require 'cl)) + (eval-and-compile - (fset 'fill-flowed-point-at-bol + (defalias 'fill-flowed-point-at-bol (if (fboundp 'point-at-bol) 'point-at-bol 'line-beginning-position)) - - (fset 'fill-flowed-point-at-eol + + (defalias 'fill-flowed-point-at-eol (if (fboundp 'point-at-eol) 'point-at-eol 'line-end-position))) @@ -61,7 +70,7 @@ (when (save-excursion (beginning-of-line) (looking-at "^\\(>*\\)\\( ?\\)")) - (let ((quote (match-string 1))) + (let ((quote (match-string 1)) sig) (if (string= quote "") (setq quote nil)) (when (and quote (string= (match-string 2) "")) @@ -71,23 +80,23 @@ (when (> (skip-chars-forward ">") 0) (insert " ")))) (while (and (save-excursion - (backward-char 3) + (ignore-errors (backward-char 3)) + (setq sig (looking-at "-- ")) (looking-at "[^-][^-] ")) (save-excursion (unless (eobp) (forward-char 1) - (if quote - (looking-at (format "^\\(%s\\)\\([^>]\\)" quote)) - (looking-at "^ ?"))))) + (looking-at (format "^\\(%s\\)\\([^>]\\)" (or quote " ?")))))) (save-excursion (replace-match (if (string= (match-string 2) " ") "" "\\2"))) (backward-delete-char -1) (end-of-line)) - (let ((fill-prefix (when quote (concat quote " ")))) - (fill-region (fill-flowed-point-at-bol) - (fill-flowed-point-at-eol) - 'left 'nosqueeze))))))) + (unless sig + (let ((fill-prefix (when quote (concat quote " ")))) + (fill-region (fill-flowed-point-at-bol) + (fill-flowed-point-at-eol) + 'left 'nosqueeze)))))))) (provide 'flow-fill) diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index 19ca139..852a525 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -31,7 +31,12 @@ (require 'gnus-cache) (require 'nnvirtual) (require 'gnus-sum) -(eval-when-compile (require 'gnus-score) (require 'gnus-group)) +(require 'gnus-score) +(eval-when-compile + (if (featurep 'xemacs) + (require 'itimer) + (require 'timer)) + (require 'gnus-group)) (defcustom gnus-agent-directory (nnheader-concat gnus-directory "agent/") "Where the Gnus agent will store its files." @@ -92,6 +97,14 @@ fetched will be limited to it. If not a positive integer, never consider it." :type '(choice (const nil) (integer :tag "Number"))) +(defcustom gnus-agent-synchronize-flags 'ask + "Indicate if flags are synchronized when you plug in. +If this is `ask' the hook will query the user." + :type '(choice (const :tag "Always" t) + (const :tag "Never" nil) + (const :tag "Ask" ask)) + :group 'gnus-agent) + ;;; Internal variables (defvar gnus-agent-history-buffers nil) @@ -109,10 +122,6 @@ fetched will be limited to it. If not a positive integer, never consider it." (defvar gnus-agent-send-mail-function nil) (defvar gnus-agent-file-coding-system 'raw-text) -(defconst gnus-agent-scoreable-headers - '("subject" "from" "date" "message-id" "references" "chars" "lines" "xref") - "Headers that are considered when scoring articles for download via the Agent.") - ;; Dynamic variables (defvar gnus-headers) (defvar gnus-score) @@ -195,7 +204,7 @@ fetched will be limited to it. If not a positive integer, never consider it." (defmacro gnus-agent-with-fetch (&rest forms) "Do FORMS safely." `(unwind-protect - (progn + (let ((gnus-agent-fetching t)) (gnus-agent-start-fetch) ,@forms) (gnus-agent-stop-fetch))) @@ -242,7 +251,7 @@ fetched will be limited to it. If not a positive integer, never consider it." "Jc" gnus-enter-category-buffer "Jj" gnus-agent-toggle-plugged "Js" gnus-agent-fetch-session - "JY" gnus-agent-synchronize + "JY" gnus-agent-synchronize-flags "JS" gnus-group-send-drafts "Ja" gnus-agent-add-group "Jr" gnus-agent-remove-group) @@ -299,6 +308,7 @@ fetched will be limited to it. If not a positive integer, never consider it." (if plugged (progn (setq gnus-plugged plugged) + (gnus-agent-possibly-synchronize-flags) (gnus-run-hooks 'gnus-agent-plugged-hook) (setcar (cdr gnus-agent-mode-status) " Plugged")) (gnus-agent-close-connections) @@ -380,6 +390,43 @@ be a select method." (while (search-backward "\n" nil t) (replace-match "\\n" t t)))) +(defun gnus-agent-restore-gcc () + "Restore GCC field from saved header." + (save-excursion + (goto-char (point-min)) + (while (re-search-forward (concat gnus-agent-gcc-header ":") nil t) + (replace-match "Gcc:" 'fixedcase)))) + +(defun gnus-agent-any-covered-gcc () + (save-restriction + (message-narrow-to-headers) + (let* ((gcc (mail-fetch-field "gcc" nil t)) + (methods (and gcc + (mapcar 'gnus-inews-group-method + (message-unquote-tokens + (message-tokenize-header + gcc " ,"))))) + covered) + (while (and (not covered) methods) + (setq covered + (member (car methods) gnus-agent-covered-methods) + methods (cdr methods))) + covered))) + +(defun gnus-agent-possibly-save-gcc () + "Save GCC if Gnus is unplugged." + (when (and (not gnus-plugged) (gnus-agent-any-covered-gcc)) + (save-excursion + (goto-char (point-min)) + (let ((case-fold-search t)) + (while (re-search-forward "^gcc:" nil t) + (replace-match (concat gnus-agent-gcc-header ":") 'fixedcase)))))) + +(defun gnus-agent-possibly-do-gcc () + "Do GCC if Gnus is plugged." + (when (or gnus-plugged (not (gnus-agent-any-covered-gcc))) + (gnus-inews-do-gcc))) + ;;; ;;; Group mode commands ;;; @@ -434,27 +481,49 @@ be a select method." (setf (cadddr c) (delete group (cadddr c)))))) (gnus-category-write))) -(defun gnus-agent-synchronize () - "Synchronize local, unplugged, data with backend. -Currently sends flag setting requests, if any." +(defun gnus-agent-synchronize-flags () + "Synchronize unplugged flags with servers." + (interactive) + (save-excursion + (dolist (gnus-command-method gnus-agent-covered-methods) + (when (file-exists-p (gnus-agent-lib-file "flags")) + (gnus-agent-synchronize-flags-server gnus-command-method))))) + +(defun gnus-agent-possibly-synchronize-flags () + "Synchronize flags according to `gnus-agent-synchronize-flags'." (interactive) (save-excursion (dolist (gnus-command-method gnus-agent-covered-methods) (when (file-exists-p (gnus-agent-lib-file "flags")) - (set-buffer (get-buffer-create " *Gnus Agent flag synchronize*")) - (erase-buffer) - (nnheader-insert-file-contents (gnus-agent-lib-file "flags")) - (if (null (gnus-check-server gnus-command-method)) - (message "Couldn't open server %s" (nth 1 gnus-command-method)) - (while (not (eobp)) - (if (null (eval (read (current-buffer)))) - (progn (forward-line) - (kill-line -1)) - (write-file (gnus-agent-lib-file "flags")) - (error "Couldn't set flags from file %s" - (gnus-agent-lib-file "flags")))) - (write-file (gnus-agent-lib-file "flags"))) - (kill-buffer nil))))) + (gnus-agent-possibly-synchronize-flags-server gnus-command-method))))) + +(defun gnus-agent-synchronize-flags-server (method) + "Synchronize flags set when unplugged for server." + (let ((gnus-command-method method)) + (when (file-exists-p (gnus-agent-lib-file "flags")) + (set-buffer (get-buffer-create " *Gnus Agent flag synchronize*")) + (erase-buffer) + (nnheader-insert-file-contents (gnus-agent-lib-file "flags")) + (if (null (gnus-check-server gnus-command-method)) + (message "Couldn't open server %s" (nth 1 gnus-command-method)) + (while (not (eobp)) + (if (null (eval (read (current-buffer)))) + (progn (forward-line) + (kill-line -1)) + (write-file (gnus-agent-lib-file "flags")) + (error "Couldn't set flags from file %s" + (gnus-agent-lib-file "flags")))) + (delete-file (gnus-agent-lib-file "flags"))) + (kill-buffer nil)))) + +(defun gnus-agent-possibly-synchronize-flags-server (method) + "Synchronize flags for server according to `gnus-agent-synchronize-flags'." + (when (or (and gnus-agent-synchronize-flags + (not (eq gnus-agent-synchronize-flags 'ask))) + (and (eq gnus-agent-synchronize-flags 'ask) + (gnus-y-or-n-p (format "Synchronize flags on server `%s'? " + (cadr method))))) + (gnus-agent-synchronize-flags-server method))) ;;; ;;; Server mode commands @@ -629,8 +698,7 @@ the actual number of articles toggled is returned." (gnus-make-directory (file-name-directory file)) ;; The hashtable contains real names of groups, no more prefix ;; removing, so set `full' to `t'. - (gnus-write-active-file-as-coding-system gnus-agent-file-coding-system - file orig t))) + (gnus-write-active-file file orig t))) (defun gnus-agent-save-groups (method) (gnus-agent-save-active-1 method 'gnus-groups-to-gnus-format)) @@ -673,7 +741,7 @@ the actual number of articles toggled is returned." (nnheader-translate-file-chars (nnheader-replace-chars-in-string (nnheader-replace-duplicate-chars-in-string - (nnheader-replace-chars-in-string + (nnheader-replace-chars-in-string (gnus-group-real-name group) ?/ ?_) ?. ?_) @@ -789,8 +857,8 @@ the actual number of articles toggled is returned." (with-temp-buffer (let (article) (while (setq article (pop articles)) - (when (or - (gnus-backlog-request-article group article + (when (or + (gnus-backlog-request-article group article nntp-server-buffer) (gnus-request-article article group)) (goto-char (point-max)) @@ -891,8 +959,8 @@ the actual number of articles toggled is returned." (setq articles (nthcdr i articles)))) ;; add article with marks to list of article headers we want to fetch. (dolist (arts (gnus-info-marks (gnus-get-info group))) - (setq articles (union (gnus-uncompress-sequence (cdr arts)) - articles))) + (setq articles (gnus-union (gnus-uncompress-sequence (cdr arts)) + articles))) (setq articles (sort articles '<)) ;; Remove known articles. (when (gnus-agent-load-alist group) @@ -1029,10 +1097,14 @@ the actual number of articles toggled is returned." (while (setq group (pop groups)) (when (<= (gnus-group-level group) gnus-agent-handle-level) (gnus-agent-fetch-group-1 group gnus-command-method)))))) - (error + (error (unless (funcall gnus-agent-confirmation-function (format "Error (%s). Continue? " err)) - (error "Cannot fetch articles into the Gnus agent.")))) + (error "Cannot fetch articles into the Gnus agent."))) + (quit + (unless (funcall gnus-agent-confirmation-function + (format "Quit (%s). Continue? " err)) + (signal 'quit "Cannot fetch articles into the Gnus agent.")))) (pop methods)) (gnus-message 6 "Finished fetching articles into the Gnus agent")))) @@ -1043,23 +1115,25 @@ the actual number of articles toggled is returned." gnus-newsgroup-dependencies gnus-newsgroup-headers gnus-newsgroup-scored gnus-headers gnus-score gnus-use-cache articles arts - category predicate info marks score-param) + category predicate info marks score-param + (gnus-summary-expunge-below gnus-summary-expunge-below) + (gnus-summary-mark-below gnus-summary-mark-below) + (gnus-orphan-score gnus-orphan-score) + ;; Maybe some other gnus-summary local variables should also + ;; be put here. + ) (unless (gnus-check-group group) (error "Can't open server for %s" group)) ;; Fetch headers. (when (and (or (gnus-active group) (gnus-activate-group group)) (setq articles (gnus-agent-fetch-headers group)) - (progn + (let ((nntp-server-buffer gnus-agent-overview-buffer)) ;; Parse them and see which articles we want to fetch. (setq gnus-newsgroup-dependencies (make-vector (length articles) 0)) - ;; No need to call `gnus-get-newsgroup-headers-xover' with - ;; the entire .overview for group as we still have the just - ;; downloaded headers in `gnus-agent-overview-buffer'. - (let ((nntp-server-buffer gnus-agent-overview-buffer)) - (setq gnus-newsgroup-headers - (gnus-get-newsgroup-headers-xover articles nil nil - group))) + (setq gnus-newsgroup-headers + (gnus-get-newsgroup-headers-xover articles nil nil + group)) ;; `gnus-agent-overview-buffer' may be killed for ;; timeout reason. If so, recreate it. (gnus-agent-create-buffer))) @@ -1068,45 +1142,24 @@ the actual number of articles toggled is returned." (gnus-get-predicate (or (gnus-group-find-parameter group 'agent-predicate t) (cadr category)))) - ;; Do we want to download everything, or nothing? - (if (or (eq (caaddr predicate) 'gnus-agent-true) - (eq (caaddr predicate) 'gnus-agent-false)) - ;; Yes. - (setq arts (symbol-value - (cadr (assoc (caaddr predicate) - '((gnus-agent-true articles) - (gnus-agent-false nil)))))) - ;; No, we need to decide what we want. + (if (memq (caaddr predicate) '(gnus-agent-true gnus-agent-false)) + ;; Simple implementation + (setq arts + (and (eq (caaddr predicate) 'gnus-agent-true) articles)) + (setq arts nil) (setq score-param - (let ((score-method - (or - (gnus-group-find-parameter group 'agent-score t) - (caddr category)))) - (when score-method - (require 'gnus-score) - (if (eq score-method 'file) - (let ((entries - (gnus-score-load-files - (gnus-all-score-files group))) - list score-file) - (while (setq list (car entries)) - (push (car list) score-file) - (setq list (cdr list)) - (while list - (when (member (caar list) - gnus-agent-scoreable-headers) - (push (car list) score-file)) - (setq list (cdr list))) - (setq score-param - (append score-param (list (nreverse score-file))) - score-file nil entries (cdr entries))) - (list score-param)) - (if (stringp (car score-method)) - score-method - (list (list score-method))))))) + (or (gnus-group-get-parameter group 'agent-score t) + (caddr category))) + ;; Translate score-param into real one + (cond + ((not score-param)) + ((eq score-param 'file) + (setq score-param (gnus-all-score-files group))) + ((stringp (car score-param))) + (t + (setq score-param (list (list score-param))))) (when score-param (gnus-score-headers score-param)) - (setq arts nil) (while (setq gnus-headers (pop gnus-newsgroup-headers)) (setq gnus-score (or (cdr (assq (mail-header-number gnus-headers) @@ -1488,7 +1541,17 @@ The following commands are available: (goto-char (point-min)) (while (not (eobp)) (skip-chars-forward "^\t") - (if (> (read (current-buffer)) day) + (if (let ((fetch-date (read (current-buffer)))) + (if (numberp fetch-date) + (> fetch-date day) + ;; History file is corrupted. + (gnus-message + 5 + (format "File %s is corrupted!" + (gnus-agent-lib-file "history"))) + (sit-for 1) + ;; Ignore it + t)) ;; New article; we don't expire it. (forward-line 1) ;; Old article. Schedule it for possible nuking. @@ -1627,9 +1690,7 @@ The following commands are available: (gnus-delete-line)) (gnus-agent-save-history) (gnus-agent-close-history) - (gnus-write-active-file-as-coding-system - gnus-agent-file-coding-system - (gnus-agent-lib-file "active") orig)) + (gnus-write-active-file (gnus-agent-lib-file "active") orig)) (gnus-message 4 "Expiry...done"))))))) ;;;###autoload diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 6f4fde5..60a25f3 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -146,7 +146,7 @@ If `gnus-visible-headers' is non-nil, this variable will be ignored." :group 'gnus-article-hiding) (defcustom gnus-visible-headers - "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^[BGF]?Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-From:\\|^X-Sent:" + "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^[BGF]?Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Mail-Followup-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-From:\\|^X-Sent:" "*All headers that do not match this regexp will be hidden. This variable can also be a list of regexp of headers to remain visible. If this variable is non-nil, `gnus-ignored-headers' will be ignored." @@ -218,7 +218,7 @@ regexp. If it matches, the text in question is not a signature." ((and (fboundp 'image-type-available-p) (image-type-available-p 'xbm)) 'gnus-article-display-xface) - ((and (not gnus-xemacs) + ((and (not (featurep 'xemacs)) window-system (module-installed-p 'x-face-mule)) 'x-face-mule-gnus-article-display-x-face) @@ -241,6 +241,13 @@ asynchronously. The compressed face will be piped to this command." :type '(choice regexp (const nil)) :group 'gnus-article-washing) +(defcustom gnus-article-banner-alist nil + "Banner alist for stripping. +For example, + ((egroups . \"^[ \\t\\n]*-------------------+\\\\( eGroups Sponsor -+\\\\)?....\\n\\\\(.+\\n\\\\)+\"))" + :type '(repeat (cons symbol regexp)) + :group 'gnus-article-washing) + (defcustom gnus-emphasis-alist (let ((format "\\(\\s-\\|^\\|[-\"]\\|\\s(\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\\(\\s-\\|[-,;:\"]\\s-\\|[?!.]+\\s-\\|\\s)\\)") @@ -509,7 +516,8 @@ Obsolete; use the face `gnus-signature-face' for customizations instead." :group 'gnus-article-signature) (defface gnus-signature-face - '((t (:italic t))) + '((t + (:italic t))) "Face used for highlighting a signature in the article buffer." :group 'gnus-article-highlight :group 'gnus-article-signature) @@ -618,7 +626,8 @@ displayed by the first non-nil matching CONTENT face." "Function used to decode headers.") (defvar gnus-article-dumbquotes-map - '(("\202" ",") + '(("\200" "EUR") + ("\202" ",") ("\203" "f") ("\204" ",,") ("\205" "...") @@ -629,8 +638,8 @@ displayed by the first non-nil matching CONTENT face." ("\223" "``") ("\224" "\"") ("\225" "*") - ("\226" "---") - ("\227" "-") + ("\226" "-") + ("\227" "--") ("\231" "(TM)") ("\233" ">") ("\234" "oe") @@ -655,7 +664,9 @@ on parts -- for instance, adding Vcard info to a database." :type 'function) (defcustom gnus-mime-multipart-functions nil - "An alist of MIME types to functions to display them.") + "An alist of MIME types to functions to display them." + :group 'gnus-article-mime + :type 'alist) (defcustom gnus-article-date-lapsed-new-header nil "Whether the X-Sent and Date headers can coexist. @@ -681,6 +692,20 @@ used." :value undisplayed-alternative) (function))) +(defcustom gnus-mime-action-alist + '(("save to file" . gnus-mime-save-part) + ("display as text" . gnus-mime-inline-part) + ("view the part" . gnus-mime-view-part) + ("pipe to command" . gnus-mime-pipe-part) + ("toggle display" . gnus-article-press-button) + ("view as type" . gnus-mime-view-part-as-type) + ("internalize type" . gnus-mime-internalize-part) + ("externalize type" . gnus-mime-externalize-part)) + "An alist of actions that run on the MIME attachment." + :group 'gnus-article-mime + :type '(repeat (cons (string :tag "name") + (function)))) + ;;; ;;; The treatment variables ;;; @@ -732,7 +757,11 @@ See the manual for details." :type gnus-article-treat-head-custom) (put 'gnus-treat-buttonize-head 'highlight t) -(defcustom gnus-treat-emphasize nil +(defcustom gnus-treat-emphasize + (and (or window-system + (featurep 'xemacs) + (>= (string-to-number emacs-version) 21)) + 50000) "Emphasize text. Valid values are nil, t, `head', `last', an integer or a predicate. See the manual for details." @@ -782,6 +811,13 @@ See the manual for details." :group 'gnus-article-treat :type gnus-article-treat-custom) +(defcustom gnus-treat-hide-citation-maybe nil + "Hide cited text. +Valid values are nil, t, `head', `last', an integer or a predicate. +See the manual for details." + :group 'gnus-article-treat + :type gnus-article-treat-custom) + (defcustom gnus-treat-strip-list-identifiers 'head "Strip list identifiers from `gnus-list-identifiers`. Valid values are nil, t, `head', `last', an integer or a predicate. @@ -910,7 +946,7 @@ See the manual for details." (if (or (and (fboundp 'image-type-available-p) (image-type-available-p 'xbm) (string-match "^0x" (shell-command-to-string "uncompface"))) - (and gnus-xemacs (featurep 'xface)) + (and (featurep 'xemacs) (featurep 'xface)) (eq 'x-face-mule-gnus-article-display-x-face gnus-article-x-face-command)) 'head @@ -923,8 +959,11 @@ See the manual for details." (put 'gnus-treat-display-xface 'highlight t) (defcustom gnus-treat-display-smileys - (if (or (and gnus-xemacs (featurep 'xpm)) - (and (not gnus-xemacs) + (if (or (and (featurep 'xemacs) + (featurep 'xpm)) + (and (fboundp 'image-type-available-p) + (image-type-available-p 'pbm)) + (and (not (featurep 'xemacs)) window-system (module-installed-p 'smiley-mule))) t @@ -936,7 +975,7 @@ See the manual for details." :type gnus-article-treat-custom) (put 'gnus-treat-display-smileys 'highlight t) -(defcustom gnus-treat-display-picons (if gnus-xemacs 'head nil) +(defcustom gnus-treat-display-picons (if (featurep 'xemacs) 'head nil) "Display picons. Valid values are nil, t, `head', `last', an integer or a predicate. See the manual for details." @@ -990,7 +1029,7 @@ See the manual for details." (defvar gnus-article-mime-handle-alist-1 nil) (defvar gnus-treatment-function-alist - `((gnus-treat-decode-article-as-default-mime-charset + '((gnus-treat-decode-article-as-default-mime-charset gnus-article-decode-article-as-default-mime-charset) (gnus-treat-strip-banner gnus-article-strip-banner) (gnus-treat-strip-headers-in-body gnus-article-strip-headers-in-body) @@ -1003,6 +1042,7 @@ See the manual for details." (gnus-treat-hide-boring-headers gnus-article-hide-boring-headers) (gnus-treat-hide-signature gnus-article-hide-signature) (gnus-treat-hide-citation gnus-article-hide-citation) + (gnus-treat-hide-citation-maybe gnus-article-hide-citation-maybe) (gnus-treat-strip-list-identifiers gnus-article-hide-list-identifiers) (gnus-treat-strip-pgp gnus-article-hide-pgp) (gnus-treat-strip-pem gnus-article-hide-pem) @@ -1024,7 +1064,8 @@ See the manual for details." gnus-article-strip-multiple-blank-lines) (gnus-treat-overstrike gnus-article-treat-overstrike) (gnus-treat-buttonize-head gnus-article-add-buttons-to-head) - (gnus-treat-display-smileys ,(if (featurep 'xemacs) + (gnus-treat-display-smileys ,(if (or (featurep 'xemacs) + (>= emacs-major-version 21)) 'gnus-smiley-display 'gnus-article-smiley-display)) (gnus-treat-capitalize-sentences gnus-article-capitalize-sentences) @@ -1057,11 +1098,12 @@ Initialized from `text-mode-syntax-table.") (defsubst gnus-article-hide-text (b e props) "Set text PROPS on the B to E region, extending `intangible' 1 past B." - (add-text-properties b e props) + (gnus-add-text-properties-when 'article-type nil b e props) (when (memq 'intangible props) (put-text-property (max (1- b) (point-min)) b 'intangible (cddr (memq 'intangible props))))) + (defsubst gnus-article-unhide-text (b e) "Remove hidden text properties from region between B and E." (remove-text-properties b e gnus-hidden-properties) @@ -1369,7 +1411,7 @@ if given a positive prefix, always hide." (narrow-to-region header-start header-end) (article-hide-headers) ;; Re-display X-Face image under XEmacs. - (when (and gnus-xemacs + (when (and (featurep 'xemacs) (gnus-functionp gnus-article-x-face-command)) (let ((func (cadr (assq 'gnus-treat-display-xface gnus-treatment-function-alist))) @@ -1417,9 +1459,14 @@ if given a positive prefix, always hide." (forward-line 1)))))) (defun article-treat-dumbquotes () - "Translate M******** sm*rtq**t*s into proper text. + "Translate M****s*** sm*rtq**t*s into proper text. Note that this function guesses whether a character is a sm*rtq**t* or -not, so it should only be used interactively." +not, so it should only be used interactively. + +Sm*rtq**t*s are M****s***'s unilateral extension to the character map +in an attempt to provide more quoting characters. If you see +something like \\222 or \\264 where you're expecting some kind of +apostrophe or quotation mark, then try this wash." (interactive) (article-translate-strings gnus-article-dumbquotes-map)) @@ -1640,10 +1687,10 @@ If PROMPT (the prefix), prompt for a coding system to use." (forward-line 1) (save-restriction (narrow-to-region (point) (point-max)) - (if (and (eq mail-parse-charset 'gnus-decoded) - (eq (mm-body-7-or-8) '8bit)) - ;; The text code could have been decoded. - (setq charset mail-parse-charset)) + (when (and (eq mail-parse-charset 'gnus-decoded) + (eq (mm-body-7-or-8) '8bit)) + ;; The text code could have been decoded. + (setq charset mail-parse-charset)) (when (and (or (not ctl) (equal (car ctl) "text/plain")) (not format)) ;; article with format will decode later. @@ -1667,30 +1714,57 @@ If FORCE, decode the article whether it is marked as quoted-printable or not." (interactive (list 'force)) (save-excursion - (let ((buffer-read-only nil) - (type (gnus-fetch-field "content-transfer-encoding")) - (charset gnus-newsgroup-charset)) + (let ((buffer-read-only nil) type charset) + (if (gnus-buffer-live-p gnus-original-article-buffer) + (with-current-buffer gnus-original-article-buffer + (setq type + (gnus-fetch-field "content-transfer-encoding")) + (let* ((ct (gnus-fetch-field "content-type")) + (ctl (and ct + (ignore-errors + (mail-header-parse-content-type ct))))) + (setq charset (and ctl + (mail-content-type-get ctl 'charset))) + (if (stringp charset) + (setq charset (intern (downcase charset))))))) + (unless charset + (setq charset gnus-newsgroup-charset)) (when (or force - (and type (string-match "quoted-printable" (downcase type)))) + (and type (let ((case-fold-search t)) + (string-match "quoted-printable" type)))) (article-goto-body) - (quoted-printable-decode-region (point) (point-max) charset))))) + (quoted-printable-decode-region + (point) (point-max) (mm-charset-to-coding-system charset)))))) (defun article-de-base64-unreadable (&optional force) "Translate a base64 article. If FORCE, decode the article whether it is marked as base64 not." (interactive (list 'force)) (save-excursion - (let ((buffer-read-only nil) - (type (gnus-fetch-field "content-transfer-encoding")) - (charset gnus-newsgroup-charset)) + (let ((buffer-read-only nil) type charset) + (if (gnus-buffer-live-p gnus-original-article-buffer) + (with-current-buffer gnus-original-article-buffer + (setq type + (gnus-fetch-field "content-transfer-encoding")) + (let* ((ct (gnus-fetch-field "content-type")) + (ctl (and ct + (ignore-errors + (mail-header-parse-content-type ct))))) + (setq charset (and ctl + (mail-content-type-get ctl 'charset))) + (if (stringp charset) + (setq charset (intern (downcase charset))))))) + (unless charset + (setq charset gnus-newsgroup-charset)) (when (or force - (and type (string-match "quoted-printable" (downcase type)))) + (and type (let ((case-fold-search t)) + (string-match "base64" type)))) (article-goto-body) (save-restriction (narrow-to-region (point) (point-max)) (base64-decode-region (point-min) (point-max)) - (if (mm-coding-system-p charset) - (mm-decode-coding-region (point-min) (point-max) charset))))))) + (mm-decode-coding-region + (point-min) (point-max) (mm-charset-to-coding-system charset))))))) (eval-when-compile (require 'rfc1843)) @@ -1708,7 +1782,19 @@ If FORCE, decode the article whether it is marked as base64 not." (interactive) (save-excursion (let ((buffer-read-only nil) - (charset gnus-newsgroup-charset)) + charset) + (if (gnus-buffer-live-p gnus-original-article-buffer) + (with-current-buffer gnus-original-article-buffer + (let* ((ct (gnus-fetch-field "content-type")) + (ctl (and ct + (ignore-errors + (mail-header-parse-content-type ct))))) + (setq charset (and ctl + (mail-content-type-get ctl 'charset))) + (if (stringp charset) + (setq charset (intern (downcase charset))))))) + (unless charset + (setq charset gnus-newsgroup-charset)) (article-goto-body) (save-window-excursion (save-restriction @@ -1812,7 +1898,7 @@ always hide." (save-excursion (save-restriction (let ((inhibit-point-motion-hooks t) - (banner (gnus-group-get-parameter gnus-newsgroup-name 'banner)) + (banner (gnus-group-find-parameter gnus-newsgroup-name 'banner)) (gnus-signature-limit nil) buffer-read-only beg end) (when banner @@ -1823,6 +1909,10 @@ always hide." (widen) (forward-line -1) (delete-region (point) (point-max)))) + ((symbolp banner) + (if (setq banner (cdr (assq banner gnus-article-banner-alist))) + (while (re-search-forward banner nil t) + (delete-region (match-beginning 0) (match-end 0))))) ((stringp banner) (while (re-search-forward banner nil t) (delete-region (match-beginning 0) (match-end 0)))))))))) @@ -2032,10 +2122,13 @@ means show, 0 means toggle." (> arg 0)) nil) ((< arg 0) - (gnus-article-show-hidden-text type)) + (gnus-article-show-hidden-text type) + t) (t (if (eq hide 'hidden) - (gnus-article-show-hidden-text type) + (progn + (gnus-article-show-hidden-text type) + t) nil))))))) (defun gnus-article-hidden-text-p (type) @@ -2050,24 +2143,16 @@ means show, 0 means toggle." 'hidden nil))) -(defun gnus-article-show-hidden-text (type &optional hide) +(defun gnus-article-show-hidden-text (type &optional dummy) "Show all hidden text of type TYPE. -If HIDE, hide the text instead." - (save-excursion - (let ((buffer-read-only nil) - (inhibit-point-motion-hooks t) - (end (point-min)) - beg) - (while (setq beg (text-property-any end (point-max) 'article-type type)) - (goto-char beg) - (setq end (or - (text-property-not-all beg (point-max) 'article-type type) - (point-max))) - (if hide - (gnus-article-hide-text beg end gnus-hidden-properties) - (gnus-article-unhide-text beg end)) - (goto-char end)) - t))) +Originally it is hide instead of DUMMY." + (let ((buffer-read-only nil) + (inhibit-point-motion-hooks t)) + (gnus-remove-text-properties-when + 'article-type type + (point-min) (point-max) + (cons 'article-type (cons type + gnus-hidden-properties))))) (defconst article-time-units `((year . ,(* 365.25 24 60 60)) @@ -2423,76 +2508,78 @@ This format is defined by the `gnus-article-time-format' variable." (let ((default-name (funcall function group headers (symbol-value variable))) result) - (setq - result - (cond - ((eq filename 'default) - default-name) - ((eq filename t) - default-name) - (filename filename) - (t - (let* ((split-name (gnus-get-split-value gnus-split-methods)) - (prompt - (format prompt - (if (and gnus-number-of-articles-to-be-saved - (> gnus-number-of-articles-to-be-saved 1)) - (format "these %d articles" - gnus-number-of-articles-to-be-saved) - "this article"))) - (file - ;; Let the split methods have their say. - (cond - ;; No split name was found. - ((null split-name) - (read-file-name - (concat prompt " (default " - (file-name-nondirectory default-name) ") ") - (file-name-directory default-name) - default-name)) - ;; A single group name is returned. - ((stringp split-name) - (setq default-name - (funcall function split-name headers - (symbol-value variable))) - (read-file-name - (concat prompt " (default " - (file-name-nondirectory default-name) ") ") - (file-name-directory default-name) - default-name)) - ;; A single split name was found - ((= 1 (length split-name)) - (let* ((name (expand-file-name - (car split-name) gnus-article-save-directory)) - (dir (cond ((file-directory-p name) - (file-name-as-directory name)) - ((file-exists-p name) name) - (t gnus-article-save-directory)))) - (read-file-name - (concat prompt " (default " name ") ") - dir name))) - ;; A list of splits was found. - (t - (setq split-name (nreverse split-name)) - (let (result) - (let ((file-name-history - (nconc split-name file-name-history))) - (setq result - (expand-file-name - (read-file-name - (concat prompt " (`M-p' for defaults) ") - gnus-article-save-directory - (car split-name)) - gnus-article-save-directory))) - (car (push result file-name-history))))))) - ;; Create the directory. - (gnus-make-directory (file-name-directory file)) - ;; If we have read a directory, we append the default file name. - (when (file-directory-p file) - (setq file (concat (file-name-as-directory file) - (file-name-nondirectory default-name)))) - ;; Possibly translate some characters. - (nnheader-translate-file-chars file))))) + (setq result + (expand-file-name + (cond + ((eq filename 'default) + default-name) + ((eq filename t) + default-name) + (filename filename) + (t + (let* ((split-name (gnus-get-split-value gnus-split-methods)) + (prompt + (format prompt + (if (and gnus-number-of-articles-to-be-saved + (> gnus-number-of-articles-to-be-saved 1)) + (format "these %d articles" + gnus-number-of-articles-to-be-saved) + "this article"))) + (file + ;; Let the split methods have their say. + (cond + ;; No split name was found. + ((null split-name) + (read-file-name + (concat prompt " (default " + (file-name-nondirectory default-name) ") ") + (file-name-directory default-name) + default-name)) + ;; A single group name is returned. + ((stringp split-name) + (setq default-name + (funcall function split-name headers + (symbol-value variable))) + (read-file-name + (concat prompt " (default " + (file-name-nondirectory default-name) ") ") + (file-name-directory default-name) + default-name)) + ;; A single split name was found + ((= 1 (length split-name)) + (let* ((name (expand-file-name + (car split-name) + gnus-article-save-directory)) + (dir (cond ((file-directory-p name) + (file-name-as-directory name)) + ((file-exists-p name) name) + (t gnus-article-save-directory)))) + (read-file-name + (concat prompt " (default " name ") ") + dir name))) + ;; A list of splits was found. + (t + (setq split-name (nreverse split-name)) + (let (result) + (let ((file-name-history + (nconc split-name file-name-history))) + (setq result + (expand-file-name + (read-file-name + (concat prompt " (`M-p' for defaults) ") + gnus-article-save-directory + (car split-name)) + gnus-article-save-directory))) + (car (push result file-name-history))))))) + ;; Create the directory. + (gnus-make-directory (file-name-directory file)) + ;; If we have read a directory, we append the default file name. + (when (file-directory-p file) + (setq file (expand-file-name (file-name-nondirectory + default-name) + (file-name-as-directory file)))) + ;; Possibly translate some characters. + (nnheader-translate-file-chars file)))))) (gnus-make-directory (file-name-directory result)) (set variable result))) @@ -2650,17 +2737,6 @@ If variable `gnus-use-long-file-name' is non-nil, it is default (or last-file default)))) -(defun gnus-Plain-save-name (newsgroup headers &optional last-file) - "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE. -If variable `gnus-use-long-file-name' is non-nil, it is -~/News/News.group. Otherwise, it is like ~/News/news/group/news." - (or last-file - (expand-file-name - (if (gnus-use-long-file-name 'not-save) - (gnus-capitalize-newsgroup newsgroup) - (concat (gnus-newsgroup-directory-form newsgroup) "/news")) - gnus-article-save-directory))) - (defun gnus-plain-save-name (newsgroup headers &optional last-file) "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE. If variable `gnus-use-long-file-name' is non-nil, it is @@ -2669,7 +2745,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is (expand-file-name (if (gnus-use-long-file-name 'not-save) newsgroup - (concat (gnus-newsgroup-directory-form newsgroup) "/news")) + (expand-file-name "news" (gnus-newsgroup-directory-form newsgroup))) gnus-article-save-directory))) (eval-and-compile @@ -2753,6 +2829,8 @@ If variable `gnus-use-long-file-name' is non-nil, it is ">" end-of-buffer "\C-c\C-i" gnus-info-find-node "\C-c\C-b" gnus-bug + "\C-hk" gnus-article-describe-key + "\C-hc" gnus-article-describe-key-briefly "\C-d" gnus-article-read-summary-keys "\M-*" gnus-article-read-summary-keys @@ -2783,6 +2861,9 @@ If variable `gnus-use-long-file-name' is non-nil, it is (decf c)) keys)))) +(eval-when-compile + (defvar gnus-article-commands-menu)) + (defun gnus-article-make-menu-bar () (gnus-turn-off-edit-menu 'article) (unless (boundp 'gnus-article-article-menu) @@ -2812,7 +2893,12 @@ If variable `gnus-use-long-file-name' is non-nil, it is (define-key gnus-article-mode-map [menu-bar post] (cons "Post" gnus-summary-post-menu))) - (gnus-run-hooks 'gnus-article-menu-hook))) + (gnus-run-hooks 'gnus-article-menu-hook)) + ;; Add the menu. + (when (boundp 'gnus-article-commands-menu) + (easy-menu-add gnus-article-commands-menu gnus-article-mode-map)) + (when (boundp 'gnus-summary-post-menu) + (easy-menu-add gnus-summary-post-menu gnus-article-mode-map))) (defun gnus-article-mode () "Major mode for displaying an article. @@ -3059,6 +3145,8 @@ If ALL-HEADERS is non-nil, no headers are hidden." (gnus-set-global-variables) (setq gnus-have-all-headers (or all-headers gnus-show-all-headers)))) + (save-excursion + (gnus-configure-windows 'article)) (when (or (numberp article) (stringp article)) (gnus-article-prepare-display) @@ -3228,31 +3316,29 @@ value of the variable `gnus-show-mime' is non-nil." (gnus-mime-inline-part "i" "View As Text, In This Buffer") (gnus-mime-internalize-part "E" "View Internally") (gnus-mime-externalize-part "e" "View Externally") - (gnus-mime-pipe-part "|" "Pipe To Command..."))) + (gnus-mime-pipe-part "|" "Pipe To Command...") + (gnus-mime-action-on-part "." "Take action on the part"))) (defun gnus-article-mime-part-status () - (with-current-buffer gnus-article-buffer - (let ((entity (get-text-property (point-min) 'mime-view-entity))) - (if (and entity (mime-entity-children entity)) - (format " (%d parts)" (length (mime-entity-children entity))) - "")))) - -(defvar gnus-mime-button-map nil) -(unless gnus-mime-button-map - (setq gnus-mime-button-map (make-sparse-keymap)) - (set-keymap-parent gnus-mime-button-map gnus-article-mode-map) - (define-key gnus-mime-button-map gnus-mouse-2 'gnus-article-push-button) - (define-key gnus-mime-button-map gnus-down-mouse-3 'gnus-mime-button-menu) - (mapcar (lambda (c) - (define-key gnus-mime-button-map (cadr c) (car c))) - gnus-mime-button-commands)) + (if gnus-article-mime-handle-alist-1 + (format " (%d parts)" (length gnus-article-mime-handle-alist-1)) + "")) + +(defvar gnus-mime-button-map + (let ((map (make-sparse-keymap))) + (set-keymap-parent map gnus-article-mode-map) + (define-key map gnus-mouse-2 'gnus-article-push-button) + (define-key map gnus-down-mouse-3 'gnus-mime-button-menu) + (dolist (c gnus-mime-button-commands) + (define-key map (cadr c) (car c))) + map)) (defun gnus-mime-button-menu (event) "Construct a context-sensitive menu of MIME commands." (interactive "e") - (save-excursion + (save-window-excursion (let ((pos (event-start event))) - (set-buffer (window-buffer (posn-window pos))) + (select-window (posn-window pos)) (goto-char (posn-point pos)) (gnus-article-check-buffer) (let ((response (x-popup-menu @@ -3282,21 +3368,24 @@ value of the variable `gnus-show-mime' is non-nil." (interactive) (gnus-article-check-buffer) (let ((data (get-text-property (point) 'gnus-data))) - (mm-save-part data))) + (when data + (mm-save-part data)))) (defun gnus-mime-pipe-part () "Pipe the MIME part under point to a process." (interactive) (gnus-article-check-buffer) (let ((data (get-text-property (point) 'gnus-data))) - (mm-pipe-part data))) + (when data + (mm-pipe-part data)))) (defun gnus-mime-view-part () "Interactively choose a viewing method for the MIME part under point." (interactive) (gnus-article-check-buffer) (let ((data (get-text-property (point) 'gnus-data))) - (mm-interactively-view-part data))) + (when data + (mm-interactively-view-part data)))) (defun gnus-mime-view-part-as-type-internal () (gnus-article-check-buffer) @@ -3311,58 +3400,98 @@ value of the variable `gnus-show-mime' is non-nil." (interactive (list (completing-read "View as MIME type: " - (mapcar (lambda (i) (list i i)) (mailcap-mime-types)) + (mapcar #'list (mailcap-mime-types)) nil nil (gnus-mime-view-part-as-type-internal)))) (gnus-article-check-buffer) (let ((handle (get-text-property (point) 'gnus-data))) - (gnus-mm-display-part - (mm-make-handle (mm-handle-buffer handle) - (cons mime-type (cdr (mm-handle-type handle))) - (mm-handle-encoding handle) - (mm-handle-undisplayer handle) - (mm-handle-disposition handle) - (mm-handle-description handle) - (mm-handle-cache handle) - (mm-handle-id handle))))) + (when handle + (gnus-mm-display-part + (mm-make-handle (mm-handle-buffer handle) + (cons mime-type (cdr (mm-handle-type handle))) + (mm-handle-encoding handle) + (mm-handle-undisplayer handle) + (mm-handle-disposition handle) + (mm-handle-description handle) + (mm-handle-cache handle) + (mm-handle-id handle)))))) (defun gnus-mime-copy-part (&optional handle) "Put the the MIME part under point into a new buffer." (interactive) (gnus-article-check-buffer) (let* ((handle (or handle (get-text-property (point) 'gnus-data))) - (contents (mm-get-part handle))| - (base (file-name-nondirectory - (or - (mail-content-type-get (mm-handle-type handle) 'name) - (mail-content-type-get (mm-handle-type handle) - 'filename) - "*decoded*"))) - (buffer (generate-new-buffer base))) - (switch-to-buffer buffer) - (insert contents) - ;; We do it this way to make `normal-mode' set the appropriate mode. - (unwind-protect - (progn - (setq buffer-file-name (expand-file-name base)) - (normal-mode)) - (setq buffer-file-name nil)) - (goto-char (point-min)))) - -(defun gnus-mime-inline-part (&optional handle) + (contents (and handle (mm-get-part handle))) + (base (and handle + (file-name-nondirectory + (or + (mail-content-type-get (mm-handle-type handle) 'name) + (mail-content-type-get (mm-handle-type handle) + 'filename) + "*decoded*")))) + (buffer (and base (generate-new-buffer base)))) + (when contents + (switch-to-buffer buffer) + (insert contents) + ;; We do it this way to make `normal-mode' set the appropriate mode. + (unwind-protect + (progn + (setq buffer-file-name (expand-file-name base)) + (normal-mode)) + (setq buffer-file-name nil)) + (goto-char (point-min))))) + +(defun gnus-mime-inline-part (&optional handle arg) + "Insert the MIME part under point into the current buffer." + (interactive (list nil current-prefix-arg)) + (gnus-article-check-buffer) + (let* ((handle (or handle (get-text-property (point) 'gnus-data))) + contents charset + (b (point)) + buffer-read-only) + (when handle + (if (and (not arg) (mm-handle-undisplayer handle)) + (mm-remove-part handle) + (setq contents (mm-get-part handle)) + (cond + ((not arg) + (setq charset (or (mail-content-type-get + (mm-handle-type handle) 'charset) + gnus-newsgroup-charset))) + ((numberp arg) + (if (mm-handle-undisplayer handle) + (mm-remove-part handle)) + (setq charset + (or (cdr (assq arg + gnus-summary-show-article-charset-alist)) + (read-coding-system "Charset: "))))) + (forward-line 2) + (mm-insert-inline handle + (if (and charset + (setq charset (mm-charset-to-coding-system + charset)) + (not (eq charset 'ascii))) + (mm-decode-coding-string contents charset) + contents)) + (goto-char b))))) + +(defun gnus-mime-view-part-as-charset (&optional handle arg) "Insert the MIME part under point into the current buffer." - (interactive) + (interactive (list nil current-prefix-arg)) (gnus-article-check-buffer) (let* ((handle (or handle (get-text-property (point) 'gnus-data))) - contents + contents charset (b (point)) buffer-read-only) - (if (mm-handle-undisplayer handle) - (mm-remove-part handle) - (setq contents (mm-get-part handle)) - (forward-line 2) - (mm-insert-inline handle contents) - (goto-char b)))) + (when handle + (if (mm-handle-undisplayer handle) + (mm-remove-part handle)) + (let ((gnus-newsgroup-charset + (or (cdr (assq arg + gnus-summary-show-article-charset-alist)) + (read-coding-system "Charset: "))) + (gnus-newsgroup-ignored-charsets 'gnus-all)) + (gnus-article-press-button))))) (defun gnus-mime-externalize-part (&optional handle) "View the MIME part under point with an external viewer." @@ -3375,9 +3504,10 @@ value of the variable `gnus-show-mime' is non-nil." (mail-parse-ignored-charsets (save-excursion (set-buffer gnus-summary-buffer) gnus-newsgroup-ignored-charsets))) - (if (mm-handle-undisplayer handle) - (mm-remove-part handle) - (mm-display-part handle)))) + (when handle + (if (mm-handle-undisplayer handle) + (mm-remove-part handle) + (mm-display-part handle))))) (defun gnus-mime-internalize-part (&optional handle) "View the MIME part under point with an internal viewer. @@ -3391,9 +3521,19 @@ In no internal viewer is available, use an external viewer." (mail-parse-ignored-charsets (save-excursion (set-buffer gnus-summary-buffer) gnus-newsgroup-ignored-charsets))) - (if (mm-handle-undisplayer handle) - (mm-remove-part handle) - (mm-display-part handle)))) + (when handle + (if (mm-handle-undisplayer handle) + (mm-remove-part handle) + (mm-display-part handle))))) + +(defun gnus-mime-action-on-part (&optional action) + "Do something with the MIME attachment at \(point\)." + (interactive + (list (completing-read "Action: " gnus-mime-action-alist))) + (gnus-article-check-buffer) + (let ((action-pair (assoc action gnus-mime-action-alist))) + (if action-pair + (funcall (cdr action-pair))))) (defun gnus-article-part-wrapper (n function) (save-current-buffer @@ -3470,6 +3610,11 @@ In no internal viewer is available, use an external viewer." (when (eq (gnus-mm-display-part handle) 'internal) (gnus-set-window-start))))))) +(defsubst gnus-article-mime-total-parts () + (if (bufferp (car gnus-article-mime-handles)) + 1 ;; single part + (1- (length gnus-article-mime-handles)))) + (defun gnus-mm-display-part (handle) "Display HANDLE and fix MIME button." (let ((id (get-text-property (point) 'gnus-part)) @@ -3503,7 +3648,7 @@ In no internal viewer is available, use an external viewer." (narrow-to-region (point) (point-max)) (gnus-treat-article nil id - (1- (length gnus-article-mime-handles)) + (gnus-article-mime-total-parts) (mm-handle-media-type handle))))) (select-window window)))) (goto-char point) @@ -3555,21 +3700,30 @@ In no internal viewer is available, use an external viewer." article-type annotation gnus-data ,handle)) (setq e (point)) - (widget-convert-button 'link b e - :mime-handle handle - :action 'gnus-widget-press-button - :button-keymap gnus-mime-button-map - :help-echo - (lambda (widget) - ;; Needed to properly clear the message - ;; due to a bug in wid-edit - (setq help-echo-owns-message t) - (format - "Click to %s the MIME part; %s for more options" - (if (mm-handle-displayed-p - (widget-get widget :mime-handle)) - "hide" "show") - (if gnus-xemacs "button3" "mouse-3")))))) + (widget-convert-button + 'link b e + :mime-handle handle + :action 'gnus-widget-press-button + :button-keymap gnus-mime-button-map + :help-echo + (lambda (widget/window &optional overlay pos) + ;; Needed to properly clear the message due to a bug in + ;; wid-edit (XEmacs only). + (if (boundp 'help-echo-owns-message) + (setq help-echo-owns-message t)) + (format + "%S: %s the MIME part; %S: more options" + (aref gnus-mouse-2 0) + ;; XEmacs will get a single widget arg; Emacs 21 will get + ;; window, overlay, position. + (if (mm-handle-displayed-p + (if overlay + (with-current-buffer (gnus-overlay-buffer overlay) + (widget-get (widget-at (gnus-overlay-start overlay)) + :mime-handle)) + (widget-get widget/window :mime-handle))) + "hide" "show") + (aref gnus-down-mouse-3 0)))))) (defun gnus-widget-press-button (elems el) (goto-char (widget-get elems :from)) @@ -3682,21 +3836,23 @@ In no internal viewer is available, use an external viewer." (setq display t) (when (equal (mm-handle-media-supertype handle) "text") (setq text t))) - (let ((id (1+ (length gnus-article-mime-handle-alist)))) + (let ((id (1+ (length gnus-article-mime-handle-alist))) + beg) (push (cons id handle) gnus-article-mime-handle-alist) (when (or (not display) (not (gnus-unbuttonized-mime-type-p type))) ;(gnus-article-insert-newline) (gnus-insert-mime-button handle id (list (or display (and not-attachment text)))) - (gnus-article-insert-newline) - ;(gnus-article-insert-newline) - (setq move t))) - (let ((beg (point))) + (gnus-article-insert-newline) + ;(gnus-article-insert-newline) + ;; Remember modify the number of forward lines. + (setq move t)) + (setq beg (point)) (cond (display (when move - (forward-line -2) + (forward-line -1) (setq beg (point))) (let ((mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets @@ -3708,7 +3864,7 @@ In no internal viewer is available, use an external viewer." (goto-char (point-max))) ((and text not-attachment) (when move - (forward-line -2) + (forward-line -1) (setq beg (point))) (gnus-article-insert-newline) (mm-insert-inline handle (mm-get-part handle)) @@ -3718,8 +3874,8 @@ In no internal viewer is available, use an external viewer." (save-restriction (narrow-to-region beg (point)) (gnus-treat-article - nil (length gnus-article-mime-handle-alist) - (1- (length gnus-article-mime-handles)) + nil id + (gnus-article-mime-total-parts) (mm-handle-media-type handle))))))))) (defun gnus-unbuttonized-mime-type-p (type) @@ -3757,6 +3913,7 @@ In no internal viewer is available, use an external viewer." (unless (setq not-pref (cadr (member preferred ihandles))) (setq not-pref (car ihandles))) (when (or ibegend + (not preferred) (not (gnus-unbuttonized-mime-type-p "multipart/alternative"))) (gnus-add-text-properties @@ -3821,7 +3978,7 @@ In no internal viewer is available, use an external viewer." (narrow-to-region (car begend) (point-max)) (gnus-treat-article nil (length gnus-article-mime-handle-alist) - (1- (length gnus-article-mime-handles)) + (gnus-article-mime-total-parts) (mm-handle-media-type handle)))))) (goto-char (point-max)) (setcdr begend (point-marker))))) @@ -4088,26 +4245,58 @@ Argument LINES specifies lines to be scrolled down." (switch-to-buffer summary 'norecord)) (setq in-buffer (current-buffer)) ;; We disable the pick minor mode commands. - (if (setq func (let (gnus-pick-mode) - (lookup-key (current-local-map) keys))) + (if (and (setq func (let (gnus-pick-mode) + (lookup-key (current-local-map) keys))) + (functionp func)) (progn (call-interactively func) - (setq new-sum-point (point))) - (ding)) - (when (eq in-buffer (current-buffer)) - (setq selected (gnus-summary-select-article)) - (set-buffer obuf) - (unless not-restore-window - (set-window-configuration owin)) - (when (eq selected 'old) - (article-goto-body) - (set-window-start (get-buffer-window (current-buffer)) - 1) - (set-window-point (get-buffer-window (current-buffer)) - (point))) - (let ((win (get-buffer-window gnus-article-current-summary))) - (when win - (set-window-point win new-sum-point)))))))) + (setq new-sum-point (point)) + (when (eq in-buffer (current-buffer)) + (setq selected (gnus-summary-select-article)) + (set-buffer obuf) + (unless not-restore-window + (set-window-configuration owin)) + (when (eq selected 'old) + (article-goto-body) + (set-window-start (get-buffer-window (current-buffer)) + 1) + (set-window-point (get-buffer-window (current-buffer)) + (point))) + (let ((win (get-buffer-window gnus-article-current-summary))) + (when win + (set-window-point win new-sum-point)))) ) + (switch-to-buffer gnus-article-buffer) + (ding)))))) + +(defun gnus-article-describe-key (key) + "Display documentation of the function invoked by KEY. KEY is a string." + (interactive "kDescribe key: ") + (gnus-article-check-buffer) + (if (eq (key-binding key) 'gnus-article-read-summary-keys) + (save-excursion + (set-buffer gnus-article-current-summary) + (let (gnus-pick-mode) + (push (elt key 0) unread-command-events) + (setq key (if (featurep 'xemacs) + (events-to-keys (read-key-sequence "Describe key: ")) + (read-key-sequence "Describe key: ")))) + (describe-key key)) + (describe-key key))) + +(defun gnus-article-describe-key-briefly (key &optional insert) + "Display documentation of the function invoked by KEY. KEY is a string." + (interactive "kDescribe key: \nP") + (gnus-article-check-buffer) + (if (eq (key-binding key) 'gnus-article-read-summary-keys) + (save-excursion + (set-buffer gnus-article-current-summary) + (let (gnus-pick-mode) + (push (elt key 0) unread-command-events) + (setq key (if (featurep 'xemacs) + (events-to-keys (read-key-sequence "Describe key: ")) + (read-key-sequence "Describe key: ")))) + (describe-key-briefly key insert)) + (describe-key-briefly key insert))) (defun gnus-article-hide (&optional arg force) "Hide all the gruft in the current article. @@ -4182,11 +4371,11 @@ If given a prefix, show the hidden text instead." gnus-newsgroup-name))) (when (and (eq (car method) 'nneething) (vectorp header)) - (let ((dir (concat + (let ((dir (expand-file-name + (mail-header-subject header) (file-name-as-directory (or (cadr (assq 'nneething-address method)) - (nth 1 method))) - (mail-header-subject header)))) + (nth 1 method)))))) (when (file-directory-p dir) (setq article 'nneething) (gnus-group-enter-directory dir)))))))) @@ -4225,10 +4414,10 @@ If given a prefix, show the hidden text instead." gnus-refer-article-method)) result (buffer-read-only nil)) - (setq methods - (if (listp methods) - methods - (list methods))) + (if (or (not (listp methods)) + (and (symbolp (car methods)) + (assq (car methods) nnoo-definition-alist))) + (setq methods (list methods))) (when (and (null gnus-override-method) methods) (setq gnus-override-method (pop methods))) @@ -4375,27 +4564,6 @@ groups." (defun gnus-article-edit-done (&optional arg) "Update the article edits and exit." (interactive "P") - (save-excursion - (save-restriction - (widen) - (when (article-goto-body) - (let ((lines (count-lines (point) (point-max))) - (length (- (point-max) (point))) - (case-fold-search t) - (body (copy-marker (point)))) - (goto-char (point-min)) - (when (re-search-forward "^content-length:[ \t]\\([0-9]+\\)" body t) - (delete-region (match-beginning 1) (match-end 1)) - (insert (number-to-string length))) - (goto-char (point-min)) - (when (re-search-forward - "^x-content-length:[ \t]\\([0-9]+\\)" body t) - (delete-region (match-beginning 1) (match-end 1)) - (insert (number-to-string length))) - (goto-char (point-min)) - (when (re-search-forward "^lines:[ \t]\\([0-9]+\\)" body t) - (delete-region (match-beginning 1) (match-end 1)) - (insert (number-to-string lines))))))) (let ((func gnus-article-edit-done-function) (buf (current-buffer)) (start (window-start))) @@ -4890,9 +5058,15 @@ specified by `gnus-button-alist'." (inhibit-point-motion-hooks t) (limit (next-single-property-change end 'mime-view-entity nil (point-max)))) - (if (get-text-property end 'invisible) - (gnus-article-unhide-text end limit) - (gnus-article-hide-text end limit gnus-hidden-properties))))) + (if (text-property-any end limit 'article-type 'signature) + (gnus-remove-text-properties-when + 'article-type 'signature end limit + (cons 'article-type (cons 'signature + gnus-hidden-properties))) + (gnus-add-text-properties-when + 'article-type nil end limit + (cons 'article-type (cons 'signature + gnus-hidden-properties))))))) (defun gnus-button-entry () ;; Return the first entry in `gnus-button-alist' matching this place. @@ -5026,18 +5200,14 @@ forbidden in URL encoding." (message-goto-subject))))) (defun gnus-button-mailto (address) - ;; Mail to ADDRESS. + "Mail to ADDRESS." (set-buffer (gnus-copy-article-buffer)) - (gnus-setup-message 'reply - (message-reply address))) + (message-reply address)) -(defun gnus-button-reply (address) - ;; Reply to ADDRESS. - (gnus-setup-message 'reply - (message-reply address))) +(defalias 'gnus-button-reply 'message-reply) (defun gnus-button-embedded-url (address) - "Browse ADDRESS." + "Activate ADDRESS with `browse-url'." (browse-url (gnus-strip-whitespace address))) (eval-when-compile @@ -5223,11 +5393,13 @@ For example: 'mime-view-entity entity)))))) ;; Dynamic variables. -(defvar part-number) -(defvar total-parts) -(defvar type) -(defvar condition) -(defvar length) +(eval-when-compile + (defvar part-number) + (defvar total-parts) + (defvar type) + (defvar condition) + (defvar length)) + (defun gnus-treat-predicate (val) (cond ((null val) @@ -5265,7 +5437,6 @@ For example: (t (error "%S is not a valid value" val)))) - ;;; @ for mime-view ;;; diff --git a/lisp/gnus-async.el b/lisp/gnus-async.el index 1cd7d7b..e661658 100644 --- a/lisp/gnus-async.el +++ b/lisp/gnus-async.el @@ -35,7 +35,7 @@ "Support for asynchronous operations." :group 'gnus) -(defcustom gnus-asynchronous t +(defcustom gnus-asynchronous nil "*If nil, inhibit all Gnus asynchronicity. If non-nil, let the other asynch variables be heeded." :group 'gnus-asynchronous diff --git a/lisp/gnus-audio.el b/lisp/gnus-audio.el index e84c1df..ac959e7 100644 --- a/lisp/gnus-audio.el +++ b/lisp/gnus-audio.el @@ -1,7 +1,8 @@ ;;; gnus-audio.el --- Sound effects for Gnus -;; Copyright (C) 1996 Free Software Foundation +;; Copyright (C) 1996, 2000 Free Software Foundation ;; Author: Steven L. Baur +;; Keywords: news, mail, multimedia ;; This file is part of GNU Emacs. @@ -21,30 +22,39 @@ ;; Boston, MA 02111-1307, USA. ;;; Commentary: + ;; This file provides access to sound effects in Gnus. -;; Prerelease: This file is partially stripped to support earcons.el -;; You can safely ignore most of it until Red Gnus. **Evil Laugh** -;;; Code: +;; This file is partially stripped to support earcons.el. -(when (null (boundp 'running-xemacs)) - (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))) +;;; Code: (require 'nnheader) -(eval-when-compile (require 'cl)) -(defvar gnus-audio-inline-sound - (and (fboundp 'device-sound-enabled-p) - (device-sound-enabled-p)) - "When t, we will not spawn a subprocess to play sounds.") +(defgroup gnus-audio nil + "Playing sound in Gnus." + :group 'gnus-visual + :group 'multimedia) -(defvar gnus-audio-directory (nnheader-find-etc-directory "sounds") - "The directory containing the Sound Files.") - -(defvar gnus-audio-au-player "/usr/bin/showaudio" - "Executable program for playing sun AU format sound files.") - -(defvar gnus-audio-wav-player "/usr/local/bin/play" - "Executable program for playing WAV files.") +(defvar gnus-audio-inline-sound + (or (if (fboundp 'device-sound-enabled-p) + (device-sound-enabled-p)) ; XEmacs + (fboundp 'play-sound)) ; Emacs 21 + "Non-nil means try to play sounds without using an external program.") + +(defcustom gnus-audio-directory (nnheader-find-etc-directory "sounds") + "The directory containing the Sound Files." + :type '(choice directory (const nil)) + :group 'gnus-audio) + +(defcustom gnus-audio-au-player "/usr/bin/showaudio" + "Executable program for playing sun AU format sound files." + :group 'gnus-audio + :type 'string) + +(defcustom gnus-audio-wav-player "/usr/local/bin/play" + "Executable program for playing WAV files." + :group 'gnus-audio + :type 'string) ;;; The following isn't implemented yet. Wait for Millennium Gnus. ;;(defvar gnus-audio-effects-enabled t @@ -81,26 +91,33 @@ ;;;###autoload (defun gnus-audio-play (file) - "Play a sound through the speaker." + "Play a sound FILE through the speaker." (interactive) (let ((sound-file (if (file-exists-p file) file - (concat gnus-audio-directory file)))) + (expand-file-name file gnus-audio-directory)))) (when (file-exists-p sound-file) - (if gnus-audio-inline-sound - (play-sound-file sound-file) - (cond ((string-match "\\.wav$" sound-file) - (call-process gnus-audio-wav-player - sound-file - 0 - nil - sound-file)) - ((string-match "\\.au$" sound-file) - (call-process gnus-audio-au-player - sound-file - 0 - nil - sound-file))))))) + (cond ((and gnus-audio-inline-sound + (condition-case nil + ;; Even if we have audio, we may fail with the + ;; wrong sort of sound file. + (progn (play-sound-file sound-file) + t) + (error nil)))) + ;; If we don't have built-in sound, or playing it failed, + ;; try with external program. + ((equal "wav" (file-name-extension sound-file)) + (call-process gnus-audio-wav-player + sound-file + 0 + nil + sound-file)) + ((equal "au" (file-name-extension sound-file)) + (call-process gnus-audio-au-player + sound-file + 0 + nil + sound-file)))))) ;;; The following isn't implemented yet, wait for Red Gnus diff --git a/lisp/gnus-bcklg.el b/lisp/gnus-bcklg.el index 5a9cbf6..3fca805 100644 --- a/lisp/gnus-bcklg.el +++ b/lisp/gnus-bcklg.el @@ -61,30 +61,32 @@ gnus-backlog-articles nil)) (defun gnus-backlog-enter-article (group number buffer) - (gnus-backlog-setup) - (let ((ident (intern (concat group ":" (int-to-string number)) - gnus-backlog-hashtb)) - b) - (if (memq ident gnus-backlog-articles) - () ; It's already kept. + (when (and (numberp number) + (not (string-match "^nnvirtual" group))) + (gnus-backlog-setup) + (let ((ident (intern (concat group ":" (int-to-string number)) + gnus-backlog-hashtb)) + b) + (if (memq ident gnus-backlog-articles) + () ; It's already kept. ;; Remove the oldest article, if necessary. - (and (numberp gnus-keep-backlog) - (>= (length gnus-backlog-articles) gnus-keep-backlog) + (and (numberp gnus-keep-backlog) + (>= (length gnus-backlog-articles) gnus-keep-backlog) (gnus-backlog-remove-oldest-article)) - (push ident gnus-backlog-articles) - ;; Insert the new article. - (save-excursion - (set-buffer (gnus-backlog-buffer)) - (let (buffer-read-only) - (goto-char (point-max)) - (unless (bolp) - (insert "\n")) - (setq b (point)) - (insert-buffer-substring buffer) - ;; Tag the beginning of the article with the ident. - (if (> (point-max) b) + (push ident gnus-backlog-articles) + ;; Insert the new article. + (save-excursion + (set-buffer (gnus-backlog-buffer)) + (let (buffer-read-only) + (goto-char (point-max)) + (unless (bolp) + (insert "\n")) + (setq b (point)) + (insert-buffer-substring buffer) + ;; Tag the beginning of the article with the ident. + (if (> (point-max) b) (gnus-put-text-property b (1+ b) 'gnus-backlog ident) - (gnus-error 3 "Article %d is blank" number))))))) + (gnus-error 3 "Article %d is blank" number)))))))) (defun gnus-backlog-remove-oldest-article () (save-excursion @@ -127,7 +129,8 @@ (setq gnus-backlog-articles (delq ident gnus-backlog-articles))))))) (defun gnus-backlog-request-article (group number &optional buffer) - (when (numberp number) + (when (and (numberp number) + (not (string-match "^nnvirtual" group))) (gnus-backlog-setup) (let ((ident (intern (concat group ":" (int-to-string number)) gnus-backlog-hashtb)) diff --git a/lisp/gnus-cache.el b/lisp/gnus-cache.el index ef82715..734e8eb 100644 --- a/lisp/gnus-cache.el +++ b/lisp/gnus-cache.el @@ -650,6 +650,7 @@ $ emacs -batch -l ~/.emacs -l gnus -f gnus-jog-cache" (let ((gnus-mark-article-hook nil) (gnus-expert-user t) (nnmail-spool-file nil) + (mail-sources nil) (gnus-use-dribble-file nil) (gnus-novice-user nil) (gnus-large-newsgroup nil)) @@ -690,9 +691,7 @@ $ emacs -batch -l ~/.emacs -l gnus -f gnus-jog-cache" (when (or force (and gnus-cache-active-hashtb gnus-cache-active-altered)) - (gnus-write-active-file-as-coding-system - gnus-cache-write-file-coding-system - gnus-cache-active-file gnus-cache-active-hashtb t) + (gnus-write-active-file gnus-cache-active-file gnus-cache-active-hashtb t) ;; Mark the active hashtb as unaltered. (setq gnus-cache-active-altered nil))) @@ -762,7 +761,8 @@ If LOW, update the lower bound instead." (interactive (list gnus-cache-directory)) (gnus-cache-close) (let ((nnml-generate-active-function 'identity)) - (nnml-generate-nov-databases-1 dir))) + (nnml-generate-nov-databases-1 dir)) + (gnus-cache-open)) (defun gnus-cache-move-cache (dir) "Move the cache tree to somewhere else." diff --git a/lisp/gnus-cite.el b/lisp/gnus-cite.el index a2dbe97..a92f635 100644 --- a/lisp/gnus-cite.el +++ b/lisp/gnus-cite.el @@ -1,8 +1,13 @@ -;;; gnus-cite.el --- parse citations in articles for Gnus +;;; gnus-cite.el --- parse citations in articles for Gnus -*- coding: iso-latin-1 -*- + ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ;; Free Software Foundation, Inc. -;; Author: Per Abhiddenware; you can redistribute it and/or modify +;; Author: Per Abhiddenware + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. @@ -22,13 +27,12 @@ ;;; Code: (eval-when-compile (require 'cl)) +(eval-when-compile (require 'static)) (require 'gnus) (require 'gnus-art) (require 'gnus-range) -(eval-when-compile (require 'static)) - ;;; Customization: (defgroup gnus-cite nil @@ -464,57 +468,63 @@ always hide." (gnus-set-format 'cited-closed-text-button t) (save-excursion (set-buffer gnus-article-buffer) - (cond - ((gnus-article-check-hidden-text 'cite arg) - t) - ((gnus-article-text-type-exists-p 'cite) - (let ((buffer-read-only nil)) - (gnus-article-hide-text-of-type 'cite))) - (t (let ((buffer-read-only nil) - (marks (gnus-dissect-cited-text)) + marks (inhibit-point-motion-hooks t) (props (nconc (list 'article-type 'cite) gnus-hidden-properties)) - beg end start) - (while marks - (setq beg nil - end nil) - (while (and marks (string= (cdar marks) "")) - (setq marks (cdr marks))) - (when marks - (setq beg (caar marks))) - (while (and marks (not (string= (cdar marks) ""))) - (setq marks (cdr marks))) - (when marks + (point (point-min)) + found beg end start) + (while (setq point + (text-property-any point (point-max) + 'gnus-callback + 'gnus-article-toggle-cited-text)) + (setq found t) + (goto-char point) + (gnus-article-toggle-cited-text + (get-text-property point 'gnus-data) arg) + (forward-line 1) + (setq point (point))) + (unless found + (setq marks (gnus-dissect-cited-text)) + (while marks + (setq beg nil + end nil) + (while (and marks (string= (cdar marks) "")) + (setq marks (cdr marks))) + (when marks + (setq beg (caar marks))) + (while (and marks (not (string= (cdar marks) ""))) + (setq marks (cdr marks))) + (when marks (setq end (caar marks))) - ;; Skip past lines we want to leave visible. - (when (and beg end gnus-cited-lines-visible) - (goto-char beg) - (forward-line (if (consp gnus-cited-lines-visible) - (car gnus-cited-lines-visible) - gnus-cited-lines-visible)) - (if (>= (point) end) - (setq beg nil) - (setq beg (point-marker)) - (when (consp gnus-cited-lines-visible) - (goto-char end) - (forward-line (- (cdr gnus-cited-lines-visible))) - (if (<= (point) beg) - (setq beg nil) + ;; Skip past lines we want to leave visible. + (when (and beg end gnus-cited-lines-visible) + (goto-char beg) + (forward-line (if (consp gnus-cited-lines-visible) + (car gnus-cited-lines-visible) + gnus-cited-lines-visible)) + (if (>= (point) end) + (setq beg nil) + (setq beg (point-marker)) + (when (consp gnus-cited-lines-visible) + (goto-char end) + (forward-line (- (cdr gnus-cited-lines-visible))) + (if (<= (point) beg) + (setq beg nil) (setq end (point-marker)))))) - (when (and beg end) - ;; We use markers for the end-points to facilitate later - ;; wrapping and mangling of text. - (setq beg (set-marker (make-marker) beg) - end (set-marker (make-marker) end)) - (gnus-add-text-properties beg end props) - (goto-char beg) - (unless (save-excursion (search-backward "\n\n" nil t)) - (insert "\n")) - (put-text-property - (setq start (point-marker)) - (progn + (when (and beg end) + ;; We use markers for the end-points to facilitate later + ;; wrapping and mangling of text. + (setq beg (set-marker (make-marker) beg) + end (set-marker (make-marker) end)) + (gnus-add-text-properties-when 'article-type nil beg end props) + (goto-char beg) + (unless (save-excursion (search-backward "\n\n" nil t)) + (insert "\n")) + (put-text-property + (setq start (point-marker)) + (progn (gnus-article-add-button (point) (progn (eval gnus-cited-closed-text-button-line-format-spec) @@ -522,42 +532,51 @@ always hide." `gnus-article-toggle-cited-text (list (cons beg end) start)) (point)) - 'article-type 'annotation) - (set-marker beg (point))))))))) + 'article-type 'annotation) + (set-marker beg (point)))))))) -(defun gnus-article-toggle-cited-text (args) - "Toggle hiding the text in REGION." +(defun gnus-article-toggle-cited-text (args &optional arg) + "Toggle hiding the text in REGION. +ARG can be nil or a number. Positive means hide, negative +means show, nil means toggle." (let* ((region (car args)) (beg (car region)) (end (cdr region)) (start (cadr args)) (hidden - (text-property-any - beg (1- end) - (car gnus-hidden-properties) (cadr gnus-hidden-properties))) + (text-property-any beg (1- end) 'article-type 'cite)) (inhibit-point-motion-hooks t) buffer-read-only) - (funcall - (if hidden - 'remove-text-properties 'gnus-add-text-properties) - beg end gnus-hidden-properties) - (save-excursion - (goto-char start) - (gnus-delete-line) - (put-text-property - (point) - (progn - (gnus-article-add-button - (point) - (progn (eval - (if hidden - gnus-cited-opened-text-button-line-format-spec - gnus-cited-closed-text-button-line-format-spec)) - (point)) - `gnus-article-toggle-cited-text - args) - (point)) - 'article-type 'annotation)))) + (when (or (null arg) + (zerop arg) + (and (> arg 0) (not hidden)) + (and (< arg 0) hidden)) + (if hidden + (gnus-remove-text-properties-when + 'article-type 'cite beg end + (cons 'article-type (cons 'cite + gnus-hidden-properties))) + (gnus-add-text-properties-when + 'article-type nil beg end + (cons 'article-type (cons 'cite + gnus-hidden-properties)))) + (save-excursion + (goto-char start) + (gnus-delete-line) + (put-text-property + (point) + (progn + (gnus-article-add-button + (point) + (progn (eval + (if hidden + gnus-cited-opened-text-button-line-format-spec + gnus-cited-closed-text-button-line-format-spec)) + (point)) + `gnus-article-toggle-cited-text + args) + (point)) + 'article-type 'annotation))))) (defun gnus-article-hide-citation-maybe (&optional arg force) "Toggle hiding of cited text that has an attribution line. @@ -665,23 +684,26 @@ See also the documentation for `gnus-article-highlight-citation'." (goto-char (point-max)) (gnus-article-search-signature) (point))) - alist entry start begin end numbers prefix mc-flag) + (prefix-regexp (concat "^\\(" gnus-cite-prefix-regexp "\\)")) + alist entry start begin end numbers prefix guess-limit mc-flag) ;; Get all potential prefixes in `alist'. (while (< (point) max) ;; Each line. (setq begin (point) + guess-limit (progn (skip-chars-forward "^> \t\r\n") (point)) end (progn (beginning-of-line 2) (point)) start end) (goto-char begin) ;; Ignore standard Supercite attribution prefix. - (when (looking-at gnus-supercite-regexp) + (when (and (< guess-limit (+ begin gnus-cite-max-prefix)) + (looking-at gnus-supercite-regexp)) (if (match-end 1) (setq end (1+ (match-end 1))) (setq end (1+ begin)))) ;; Ignore very long prefixes. - (when (> end (+ (point) gnus-cite-max-prefix)) - (setq end (+ (point) gnus-cite-max-prefix))) - (while (re-search-forward gnus-cite-prefix-regexp (1- end) t) + (when (> end (+ begin gnus-cite-max-prefix)) + (setq end (+ begin gnus-cite-max-prefix))) + (while (re-search-forward prefix-regexp (1- end) t) ;; Each prefix. (setq end (match-end 0) prefix (buffer-substring begin end)) @@ -913,7 +935,7 @@ See also the documentation for `gnus-article-highlight-citation'." (static-if (or (featurep 'xemacs) (and (eq emacs-major-version 20) (>= emacs-minor-version 3)) - (> emacs-major-version 20));-) + (>= emacs-major-version 21)) (forward-char (length prefix)) (move-to-column (string-width prefix))) (skip-chars-forward " \t") diff --git a/lisp/gnus-clfns.el b/lisp/gnus-clfns.el index 2a9753e..6fed527 100644 --- a/lisp/gnus-clfns.el +++ b/lisp/gnus-clfns.el @@ -70,59 +70,6 @@ `(let ((seq ,seq)) (mapcar ,fn seq) seq)))) - - (define-compiler-macro mapcon (&whole form fn seq &rest rest) - (if (and (fboundp 'mapcon) - (subrp (symbol-function 'mapcon))) - form - (if rest - `(let ((fn ,fn) - res - (args (list ,seq ,@rest)) - p) - (while (not (memq nil args)) - (push (apply ,fn args) res) - (setq p args) - (while p - (setcar p (cdr (pop p))) - )) - (apply (function nconc) (nreverse res))) - `(let ((fn ,fn) - res - (arg ,seq)) - (while arg - (push (funcall ,fn arg) res) - (setq arg (cdr arg))) - (apply (function nconc) (nreverse res)))))) - - (define-compiler-macro member-if (&whole form pred list) - (if (and (fboundp 'member-if) - (subrp (symbol-function 'member-if))) - form - `(let ((fn ,pred) - (seq ,list)) - (while (and seq - (not (funcall fn (car seq)))) - (pop seq)) - seq))) - - (define-compiler-macro union (&whole form list1 list2) - (if (and (fboundp 'union) - (subrp (symbol-function 'union))) - form - `(let ((a ,list1) - (b ,list2)) - (cond ((null a) b) - ((null b) a) - ((equal a b) a) - (t - (or (>= (length a) (length b)) - (setq a (prog1 b (setq b a)))) - (while b - (or (memq (car b) a) - (push (car b) a)) - (pop b)) - a))))) ) (provide 'gnus-clfns) diff --git a/lisp/gnus-cus.el b/lisp/gnus-cus.el index 95a9c87..6d25e44 100644 --- a/lisp/gnus-cus.el +++ b/lisp/gnus-cus.el @@ -1,6 +1,6 @@ ;;; gnus-cus.el --- customization commands for Gnus ;; -;; Copyright (C) 1996,1999 Free Software Foundation, Inc. +;; Copyright (C) 1996,1999, 2000 Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Keywords: news @@ -52,6 +52,21 @@ if that value is non-nil." (setq major-mode 'gnus-custom-mode mode-name "Gnus Customize") (use-local-map widget-keymap) + ;; Emacs 21 stuff: + (when (and (facep 'custom-button-face) + (facep 'custom-button-pressed-face)) + (set (make-local-variable 'widget-button-face) + 'custom-button-face) + (set (make-local-variable 'widget-button-pressed-face) + 'custom-button-pressed-face) + (set (make-local-variable 'widget-mouse-face) + 'custom-button-pressed-face)) + (when (and (boundp 'custom-raised-buttons) + (symbol-value 'custom-raised-buttons)) + (set (make-local-variable 'widget-push-button-prefix) "") + (set (make-local-variable 'widget-push-button-suffix) "") + (set (make-local-variable 'widget-link-prefix) "") + (set (make-local-variable 'widget-link-suffix) "")) (gnus-run-hooks 'gnus-custom-mode-hook)) ;;; Group Customization: @@ -137,11 +152,11 @@ listserv has inserted `Reply-To' headers that point back to the listserv itself. This is broken behavior. So there!") (to-group (string :tag "To Group") "\ -All posts will be send to the specified group.") +All posts will be sent to the specified group.") (gcc-self (choice :tag "GCC" :value t - (const t) + (const :tag "To current group" t) (const none) (string :format "%v" :hide-front-space t)) "\ Specify default value for GCC header. @@ -155,9 +170,10 @@ rules as described later).") (banner (choice :tag "Banner" (const signature) - string + symbol + regexp (const :tag "None" nil)) "\ -Banner to be removed from articles.") +Regular expression matching banners to be removed from articles.") (auto-expire (const :tag "Automatic Expire" t) "\ All articles that are read will be marked as expirable.") @@ -181,6 +197,15 @@ when expiring expirable messages. The value can either be a number of days (not necessarily an integer) or the symbols `never' or `immediate'.") + (expiry-target (choice :tag "Expiry Target" + :value delete + (const delete) + (function :format "%v" nnmail-) + string) "\ +Where expired messages end up. + +Overrides `nnmail-expiry-target', which see.") + (score-file (file :tag "Score File") "\ Make the specified file into the current score file. This means that all score commands you issue will end up in this file.") @@ -296,6 +321,7 @@ DOC is a documentation string for the parameter.") (setq gnus-custom-group group) (make-local-variable 'gnus-custom-topic) (setq gnus-custom-topic topic) + (buffer-disable-undo) (widget-insert "Customize the ") (if group (widget-create 'info-link @@ -366,6 +392,7 @@ form, but who cares?" :value (gnus-info-method info)))) (use-local-map widget-keymap) (widget-setup) + (buffer-enable-undo) (goto-char (point-min)))) (defun gnus-group-customize-done (&rest ignore) diff --git a/lisp/gnus-demon.el b/lisp/gnus-demon.el index 75b8765..d647928 100644 --- a/lisp/gnus-demon.el +++ b/lisp/gnus-demon.el @@ -1,5 +1,7 @@ ;;; gnus-demon.el --- daemonic Gnus behaviour -;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -34,7 +36,7 @@ (require 'nnmail) (require 'gnus-util) (eval-and-compile - (if (string-match "XEmacs" (emacs-version)) + (if (featurep 'xemacs) (require 'itimer) (require 'timer))) @@ -152,7 +154,7 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's." (nowParts (decode-time now)) ;; obtain THEN as discrete components (thenParts (parse-time-string time)) - (thenHour (elt thenParts 0)) + (thenHour (elt thenParts 2)) (thenMin (elt thenParts 1)) ;; convert time as elements into number of seconds since EPOCH. (then (encode-time 0 @@ -191,6 +193,10 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's." ;; sufficiently ripe. (let ((handlers gnus-demon-handler-state) (gnus-inhibit-demon t) + ;; Try to avoid dialog boxes, e.g. by Mailcrypt. + ;; Unfortunately, Emacs 20's `message-or-box...' doesn't + ;; obey `use-dialog-box'. + use-dialog-box (last-nonmenu-event 10) handler time idle) (while handlers (setq handler (pop handlers)) diff --git a/lisp/gnus-draft.el b/lisp/gnus-draft.el index 7dba250..849dc9b 100644 --- a/lisp/gnus-draft.el +++ b/lisp/gnus-draft.el @@ -112,12 +112,16 @@ (defun gnus-draft-send-message (&optional n) "Send the current draft." (interactive "P") - (let ((articles (gnus-summary-work-articles n)) - article) + (let* ((articles (gnus-summary-work-articles n)) + (total (length articles)) + article) (while (setq article (pop articles)) (gnus-summary-remove-process-mark article) (unless (memq article gnus-newsgroup-unsendable) - (gnus-draft-send article gnus-newsgroup-name t) + (let ((message-sending-message + (format "Sending message %d of %d..." + (- total (length articles)) total))) + (gnus-draft-send article gnus-newsgroup-name t)) (gnus-summary-mark-article article gnus-canceled-mark))))) (defun gnus-draft-send (article &optional group interactive) @@ -143,6 +147,8 @@ (setq type (ignore-errors (read (current-buffer))) method (ignore-errors (read (current-buffer)))) (message-remove-header gnus-agent-meta-information-header))) + ;; Let Agent restore any GCC lines and have message.el perform them. + (gnus-agent-restore-gcc) ;; Then we send it. If we have no meta-information, we just send ;; it and let Message figure out how. (when (let ((mail-header-separator "")) @@ -184,14 +190,14 @@ (cdr (assq 'unsend (gnus-info-marks (gnus-get-info "nndraft:queue")))))) - (n (length articles)) - article i) + (total (length articles)) + article) (while (setq article (pop articles)) - (setq i (- n (length articles))) - (message "Sending message %d of %d." i n) - (if (memq article unsendable) - (message "Message %d of %d is unsendable." i n) - (gnus-draft-send article)))))) + (unless (memq article unsendable) + (let ((message-sending-message + (format "Sending message %d of %d..." + (- total (length articles)) total))) + (gnus-draft-send article))))))) ;;; Utility functions diff --git a/lisp/gnus-dup.el b/lisp/gnus-dup.el index 96609cb..e148f45 100644 --- a/lisp/gnus-dup.el +++ b/lisp/gnus-dup.el @@ -137,6 +137,8 @@ seen in the same session." (gnus-dup-open)) (gnus-message 6 "Suppressing duplicates...") (let ((headers gnus-newsgroup-headers) + (auto (and gnus-newsgroup-auto-expire + (memq gnus-duplicate-mark gnus-auto-expirable-marks))) number header) (while (setq header (pop headers)) (when (and (intern-soft (mail-header-id header) gnus-dup-hashtb) @@ -144,8 +146,10 @@ seen in the same session." (setq gnus-newsgroup-unreads (delq (setq number (mail-header-number header)) gnus-newsgroup-unreads)) - (push (cons number gnus-duplicate-mark) - gnus-newsgroup-reads)))) + (if (not auto) + (push (cons number gnus-duplicate-mark) gnus-newsgroup-reads) + (push number gnus-newsgroup-expirable) + (push (cons number gnus-expirable-mark) gnus-newsgroup-reads))))) (gnus-message 6 "Suppressing duplicates...done")) (defun gnus-dup-unsuppress-article (article) diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el index 6815584..3a2fedc 100644 --- a/lisp/gnus-ems.el +++ b/lisp/gnus-ems.el @@ -31,16 +31,12 @@ ;;; Function aliases later to be redefined for XEmacs usage. -(eval-and-compile - (defvar gnus-xemacs (string-match "XEmacs" emacs-version) - "Non-nil if running under XEmacs.")) - (defvar gnus-mouse-2 [mouse-2]) (defvar gnus-down-mouse-3 [down-mouse-3]) (defvar gnus-down-mouse-2 [down-mouse-2]) (defvar gnus-widget-button-keymap nil) (defvar gnus-mode-line-modified - (if (or gnus-xemacs + (if (or (featurep 'xemacs) (< emacs-major-version 20)) '("--**-" . "-----") '("**" "--"))) @@ -50,29 +46,27 @@ (autoload 'gnus-xmas-redefine "gnus-xmas") (autoload 'appt-select-lowest-window "appt")) -(or (fboundp 'mail-file-babyl-p) - (fset 'mail-file-babyl-p 'rmail-file-p)) +(if (featurep 'xemacs) + (autoload 'gnus-smiley-display "smiley") + (autoload 'gnus-smiley-display "smiley-ems")) ; override XEmacs version + +(defun gnus-kill-all-overlays () + "Delete all overlays in the current buffer." + (let* ((overlayss (overlay-lists)) + (buffer-read-only nil) + (overlays (delq nil (nconc (car overlayss) (cdr overlayss))))) + (while overlays + (delete-overlay (pop overlays))))) ;;; Mule functions. (eval-and-compile - (if gnus-xemacs + (if (featurep 'xemacs) (gnus-xmas-define) (defvar gnus-mouse-face-prop 'mouse-face "Property used for highlighting mouse regions."))) (eval-and-compile - (cond - ((not window-system) - (defun gnus-dummy-func (&rest args)) - (let ((funcs '(mouse-set-point set-face-foreground - set-face-background x-popup-menu))) - (while funcs - (unless (fboundp (car funcs)) - (defalias (car funcs) 'gnus-dummy-func)) - (setq funcs (cdr funcs))))))) - -(eval-and-compile (let ((case-fold-search t)) (cond ((string-match "windows-nt\\|os/2\\|emx\\|cygwin32" @@ -95,7 +89,7 @@ (defun gnus-ems-redefine () (cond - (gnus-xemacs + ((featurep 'xemacs) (gnus-xmas-redefine)) ((featurep 'mule) @@ -119,6 +113,7 @@ (defvar gnus-summary-display-table nil "Display table used in summary mode buffers.") + (defalias 'gnus-summary-set-display-table (lambda ())) (if (fboundp 'truncate-string-to-width) @@ -169,7 +164,7 @@ (if (fboundp 'add-minor-mode) (defalias 'gnus-add-minor-mode 'add-minor-mode) - (defun gnus-add-minor-mode (mode name map) + (defun gnus-add-minor-mode (mode name map &rest rest) (set (make-local-variable mode) t) (unless (assq mode minor-mode-alist) (push `(,mode ,name) minor-mode-alist)) @@ -183,18 +178,19 @@ pixmap file height beg i) (save-excursion (switch-to-buffer (gnus-get-buffer-create gnus-group-buffer)) - (let ((buffer-read-only nil)) + (let ((buffer-read-only nil) + width height) (erase-buffer) (when (and dir - (file-exists-p (setq file (concat dir "x-splash")))) + (file-exists-p (setq file + (expand-file-name "x-splash" dir)))) (with-temp-buffer (insert-file-contents-as-binary file) (goto-char (point-min)) (ignore-errors (setq pixmap (read (current-buffer)))))) (when pixmap - (unless (facep 'gnus-splash) - (make-face 'gnus-splash)) + (make-face 'gnus-splash) (setq height (/ (car pixmap) (frame-char-height)) width (/ (cadr pixmap) (frame-char-width))) (set-face-foreground 'gnus-splash "Brown") @@ -202,11 +198,11 @@ (insert-char ?\n (* (/ (window-height) 2 height) height)) (setq i height) (while (> i 0) - (insert-char ? (* (/ (window-width) 2 width) width)) + (insert-char ?\ (* (/ (window-width) 2 width) width)) (setq beg (point)) - (insert-char ? width) + (insert-char ?\ width) (set-text-properties beg (point) '(face gnus-splash)) - (insert "\n") + (insert ?\n) (decf i)) (goto-char (point-min)) (sit-for 0)))))) @@ -218,49 +214,75 @@ (defvar gnus-article-xface-ring-size 6 "Length of the ring used for `gnus-article-xface-ring-internal'.") +(defvar gnus-article-compface-xbm + (condition-case () + (eq 0 (string-match "#define" + (shell-command-to-string "uncompface -X"))) + (error nil)) + "Non-nil means the compface program supports the -X option. +That produces XBM output.") + (defun gnus-article-display-xface (beg end) "Display an XFace header from between BEG and END in the current article. -This requires support images in your Emacs and the external programs -`uncompface', `icontopbm' and `ppmtoxbm'. On a GNU/Linux system these +Requires support for images in your Emacs and the external programs +`uncompface', and `icontopbm'. On a GNU/Linux system these might be in packages with names like `compface' or `faces-xface' and -`netpbm' or `libgr-progs', for instance. +`netpbm' or `libgr-progs', for instance. See also +`gnus-article-compface-xbm'. This function is for Emacs 21+. See `gnus-xmas-article-display-xface' for XEmacs." ;; It might be worth converting uncompface's output in Lisp. - (unless gnus-article-xface-ring-internal ; Only load ring when needed. - (setq gnus-article-xface-ring-internal - (make-ring gnus-article-xface-ring-size))) - (save-excursion - (let* ((cur (current-buffer)) - (data (buffer-substring beg end)) - (image (cdr-safe (assoc data (ring-elements - gnus-article-xface-ring-internal))))) - (when (if (fboundp 'display-graphic-p) - (display-graphic-p)) + (when (if (fboundp 'display-graphic-p) + (display-graphic-p)) + (unless gnus-article-xface-ring-internal ; Only load ring when needed. + (setq gnus-article-xface-ring-internal + (make-ring gnus-article-xface-ring-size))) + (save-excursion + (let* ((cur (current-buffer)) + (data (buffer-substring beg end)) + (image (cdr-safe (assoc data (ring-elements + gnus-article-xface-ring-internal)))) + default-enable-multibyte-characters) (unless image - (let ((coding-system-for-read 'binary) - (coding-system-for-write 'binary)) - (with-temp-buffer - (insert data) - (and (eq 0 (call-process-region (point-min) (point-max) - "uncompface" - 'delete '(t nil))) + (with-temp-buffer + (insert data) + (and (eq 0 (apply #'call-process-region (point-min) (point-max) + "uncompface" + 'delete '(t nil) nil + (if gnus-article-compface-xbm + '("-X")))) + (if gnus-article-compface-xbm + t (goto-char (point-min)) (progn (insert "/* Width=48, Height=48 */\n") t) (eq 0 (call-process-region (point-min) (point-max) "icontopbm" - 'delete '(t nil))) - (eq 0 (call-process-region (point-min) (point-max) - "pbmtoxbm" - 'delete '(t nil))) - (setq image (create-image (buffer-string) 'xbm t))))) - (ring-insert gnus-article-xface-ring-internal (cons data image)))) - (when image - (goto-char (point-min)) - (re-search-forward "^From:" nil 'move) - (insert-image image))))) + 'delete '(t nil)))) + ;; Miles Bader says that faces don't look right as + ;; light on dark. + (if (eq 'dark (cdr-safe (assq 'background-mode + (frame-parameters)))) + (setq image (create-image (buffer-string) + (if gnus-article-compface-xbm + 'xbm + 'pbm) + t + :ascent 'center + :foreground "black" + :background "white")) + (setq image (create-image (buffer-string) + (if gnus-article-compface-xbm + 'xbm + 'pbm) + t + :ascent 'center))))) + (ring-insert gnus-article-xface-ring-internal (cons data image))) + (when image + (goto-char (point-min)) + (re-search-forward "^From:" nil 'move) + (insert-image image)))))) (defun-maybe assoc-ignore-case (key alist) "Like `assoc', but assumes KEY is a string and ignores case when comparing." diff --git a/lisp/gnus-gl.el b/lisp/gnus-gl.el index 68e18c7..f3d08b3 100644 --- a/lisp/gnus-gl.el +++ b/lisp/gnus-gl.el @@ -1,5 +1,7 @@ ;;; gnus-gl.el --- an interface to GroupLens for Gnus -;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Brad Miller ;; Keywords: news, score diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index 9077ce9..ea8c255 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -37,6 +37,7 @@ (require 'gnus-win) (require 'gnus-undo) (require 'time-date) +(require 'gnus-ems) (defcustom gnus-group-archive-directory "*ftp@ftp.hpc.uh.edu:/pub/emacs/ding-list/" @@ -413,6 +414,15 @@ For example: :group 'gnus-charset :type '(repeat (cons (regexp :tag "Group") (symbol :tag "Charset")))) +(defcustom gnus-group-jump-to-group-prompt nil + "Default prompt for `gnus-group-jump-to-group'. +If non-nil, the value should be a string, e.g. \"nnml:\", +in which case `gnus-group-jump-to-group' offers \"Group: nnml:\" +in the minibuffer prompt." + :group 'gnus-group-various + :type '(choice (string :tag "Prompt string") + (const :tag "Empty" nil))) + ;;; Internal variables (defvar gnus-group-sort-alist-function 'gnus-group-sort-flat @@ -489,7 +499,6 @@ For example: (defvar gnus-group-icon-cache nil) -(defvar gnus-group-running-xemacs (string-match "XEmacs" emacs-version)) ;;; ;;; Gnus group mode @@ -1210,8 +1219,8 @@ If REGEXP, only list groups matching REGEXP." gnus-level ,gnus-tmp-level)) (forward-line -1) (when (inline (gnus-visual-p 'group-highlight 'highlight)) - (gnus-run-hooks 'gnus-group-update-hook) - (forward-line)) + (gnus-run-hooks 'gnus-group-update-hook)) + (forward-line) ;; Allow XEmacs to remove front-sticky text properties. (gnus-group-remove-excess-properties))) @@ -1752,7 +1761,9 @@ Return the name of the group if selection was successful." (when (gnus-group-read-group t t group select-articles) group) ;;(error nil) - (quit nil))))) + (quit + (message "Quit reading the ephemeral group") + nil))))) (defun gnus-group-jump-to-group (group) "Jump to newsgroup GROUP." @@ -1760,7 +1771,7 @@ Return the name of the group if selection was successful." (list (completing-read "Group: " gnus-active-hashtb nil (gnus-read-active-file-p) - nil + gnus-group-jump-to-group-prompt 'gnus-group-history))) (when (equal group "") @@ -2341,14 +2352,14 @@ mail messages or news articles in files that have numeric names." (while (or (not group) (gnus-gethash group gnus-newsrc-hashtb)) (setq group (gnus-group-prefixed-name - (concat (file-name-as-directory (directory-file-name dir)) - ext) + (expand-file-name ext dir) '(nndir ""))) (setq ext (format "<%d>" (setq i (1+ i))))) (gnus-group-make-group (gnus-group-real-name group) (list 'nndir (gnus-group-real-name group) (list 'nndir-directory dir))))) +(eval-when-compile (defvar nnkiboze-score-file)) (defun gnus-group-make-kiboze-group (group address scores) "Create an nnkiboze group. The user will be prompted for a name, a regexp to match groups, and @@ -2366,15 +2377,20 @@ score file entries for articles to include in the group." "Match on header: " headers nil t)))) (setq regexps nil) (while (not (equal "" (setq regexp (read-string - (format "Match on %s (string): " + (format "Match on %s (regexp): " header))))) (push (list regexp nil nil 'r) regexps)) (push (cons header regexps) scores)) scores))) (gnus-group-make-group group "nnkiboze" address) - (with-temp-file (gnus-score-file-name (concat "nnkiboze:" group)) - (let (emacs-lisp-mode-hook) - (pp scores (current-buffer))))) + (let* ((nnkiboze-current-group group) + (score-file (car (nnkiboze-score-file ""))) + (score-dir (file-name-directory score-file))) + (unless (file-exists-p score-dir) + (make-directory score-dir)) + (with-temp-file score-file + (let (emacs-lisp-mode-hook) + (pp scores (current-buffer)))))) (defun gnus-group-add-to-virtual (n vgroup) "Add the current group to a virtual group." @@ -2453,8 +2469,9 @@ score file entries for articles to include in the group." (error "Killed group; can't be edited")) (unless (eq (car (setq method (gnus-find-method-for-group group))) 'nnimap) (error "%s is not an nnimap group" group)) - (gnus-edit-form (setq acl (nnimap-acl-get mailbox (cadr method))) - (format "Editing the access control list for `%s'. + (unless (setq acl (nnimap-acl-get mailbox (cadr method))) + (error "Server does not support ACL's")) + (gnus-edit-form acl (format "Editing the access control list for `%s'. An access control list is a list of (identifier . rights) elements. @@ -2823,7 +2840,9 @@ or nil if no action could be taken." (gnus-request-expire-articles (gnus-uncompress-sequence (cdr expirable)) group)))) (gnus-close-group group)) - (gnus-message 6 "Expiring articles in %s...done" group)))) + (gnus-message 6 "Expiring articles in %s...done" group) + ;; Return the list of un-expired articles. + (cdr expirable)))) (defun gnus-group-expire-all-groups () "Expire all expirable articles in all newsgroups." @@ -3273,7 +3292,7 @@ to use." (when current-prefix-arg (completing-read "Faq dir: " (and (listp gnus-group-faq-directory) - (mapcar (lambda (file) (list file)) + (mapcar #'list gnus-group-faq-directory)))))) (unless group (error "No group name given")) @@ -3284,7 +3303,7 @@ to use." (while (and (not found) (setq dir (pop dirs))) (let ((name (gnus-group-real-name group))) - (setq file (concat (file-name-as-directory dir) name))) + (setq file (expand-file-name name dir))) (if (not (file-exists-p file)) (gnus-message 1 "No such file: %s" file) (let ((enable-local-variables nil)) @@ -3643,7 +3662,7 @@ and the second element is the address." (defun gnus-add-marked-articles (group type articles &optional info force) ;; Add ARTICLES of TYPE to the info of GROUP. - ;; If INFO is non-nil, use that info. If FORCE is non-nil, don't + ;; If INFO is non-nil, use that info. If FORCE is non-nil, don't ;; add, but replace marked articles of TYPE with ARTICLES. (let ((info (or info (gnus-get-info group))) marked m) diff --git a/lisp/gnus-int.el b/lisp/gnus-int.el index c7b8c8b..abd5737 100644 --- a/lisp/gnus-int.el +++ b/lisp/gnus-int.el @@ -71,8 +71,7 @@ If CONFIRM is non-nil, the user will be asked for an NNTP server." (list 'nnmh-directory (file-name-as-directory (expand-file-name - (concat "~/" (substring - gnus-nntp-server 1))))) + (substring gnus-nntp-server 1) "~/"))) (list 'nnmh-get-new-mail nil))) (t (list 'nntp gnus-nntp-server))))) diff --git a/lisp/gnus-kill.el b/lisp/gnus-kill.el index a5d17c0..dfed289 100644 --- a/lisp/gnus-kill.el +++ b/lisp/gnus-kill.el @@ -523,7 +523,7 @@ COMMAND must be a lisp expression or a string representing a key sequence." (if (listp kill-list) ;; It is a list. (if (not (consp (cdr kill-list))) - ;; It's on the form (regexp . date). + ;; It's of the form (regexp . date). (if (zerop (gnus-execute field (car kill-list) command nil (not all))) (when (> (days-between date (cdr kill-list)) @@ -685,6 +685,7 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score" (mapconcat 'identity command-line-args-left " ")))) (gnus-expert-user t) (nnmail-spool-file nil) + (mail-sources nil) (gnus-use-dribble-file nil) (gnus-batch-mode t) info group newsrc entry diff --git a/lisp/gnus-logic.el b/lisp/gnus-logic.el index 56964ff..03b1c1c 100644 --- a/lisp/gnus-logic.el +++ b/lisp/gnus-logic.el @@ -145,7 +145,7 @@ (let* ((type (or type 's)) (case-fold-search (not (eq (downcase (symbol-name type)) (symbol-name type)))) - (header (aref gnus-advanced-headers index))) + (header (or (aref gnus-advanced-headers index) ""))) (cond ((memq type '(r R regexp Regexp)) (string-match match header)) diff --git a/lisp/gnus-mailcap.el b/lisp/gnus-mailcap.el index a72730a..2bdfec8 100644 --- a/lisp/gnus-mailcap.el +++ b/lisp/gnus-mailcap.el @@ -1,9 +1,9 @@ -;;; mailcap.el --- Functions for displaying MIME parts +;;; mailcap.el --- MIME media types configuration ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: William M. Perry ;; Lars Magne Ingebrigtsen -;; Keywords: news, mail +;; Keywords: news, mail, multimedia ;; This file is part of GNU Emacs. @@ -24,12 +24,20 @@ ;;; Commentary: +;; Provides configuration of MIME media types from directly from Lisp +;; and via the usual mailcap mechanism (RFC 1524). Deals with +;; mime.types similarly. + ;;; Code: (eval-when-compile (require 'cl)) (require 'mail-parse) (require 'mm-util) +(defgroup mailcap nil + "Definition of viewers for MIME types." + :group 'mime) + (defvar mailcap-parse-args-syntax-table (let ((table (copy-syntax-table emacs-lisp-mode-syntax-table))) (modify-syntax-entry ?' "\"" table) @@ -39,6 +47,10 @@ table) "A syntax table for parsing sgml attributes.") +;; Postpone using defcustom for this as it's so big and we essentially +;; have to have two copies of the data around then. Perhaps just +;; customize the Lisp viewers and rely on the normal configuration +;; files for the rest? -- fx (defvar mailcap-mime-data '(("application" ("x-x509-ca-cert" @@ -53,10 +65,11 @@ (viewer . mailcap-save-binary-file) (non-viewer . t) (type . "application/octet-stream")) - ("dvi" - (viewer . "open %s") - (type . "application/dvi") - (test . (eq (mm-device-type) 'ns))) +;;; XEmacs says `ns' device-type not implemented. +;; ("dvi" +;; (viewer . "open %s") +;; (type . "application/dvi") +;; (test . (eq (mm-device-type) 'ns))) ("dvi" (viewer . "xdvi %s") (test . (eq (mm-device-type) 'x)) @@ -98,13 +111,28 @@ (non-viewer . t) (type . "application/zip") ("copiousoutput")) + ;; Prefer free viewers. + ("pdf" + (viewer . "gv %s") + (type . "application/pdf") + (test . window-system)) + ("pdf" + (viewer . "xpdf %s") + (type . "application/pdf") + (test . (eq (mm-device-type) 'x))) ("pdf" (viewer . "acroread %s") (type . "application/pdf")) +;;; XEmacs says `ns' device-type not implemented. +;; ("postscript" +;; (viewer . "open %s") +;; (type . "application/postscript") +;; (test . (eq (mm-device-type) 'ns))) ("postscript" - (viewer . "open %s") - (type . "application/postscript") - (test . (eq (mm-device-type) 'ns))) + (viewer . "gv -safer %s") + (type . "application/postscript") + (test . window-system) + ("needsx11")) ("postscript" (viewer . "ghostview -dSAFER %s") (type . "application/postscript") @@ -138,10 +166,6 @@ (type . "message/rfc822")) ("rfc-*822" (viewer . view-mode) - (test . (fboundp 'view-mode)) - (type . "message/rfc822")) - ("rfc-*822" - (viewer . fundamental-mode) (type . "message/rfc822"))) ("image" ("x-xwd" @@ -162,10 +186,11 @@ ("compose" . "xwd -frame > %s") (test . (eq (mm-device-type) 'x)) ("needsx11")) - (".*" - (viewer . "aopen %s") - (type . "image/*") - (test . (eq (mm-device-type) 'ns))) +;;; XEmacs says `ns' device-type not implemented. +;; (".*" +;; (viewer . "aopen %s") +;; (type . "image/*") +;; (test . (eq (mm-device-type) 'ns))) (".*" (viewer . "display %s") (type . "image/*") @@ -225,57 +250,38 @@ Which looks like: (\"plain\" . ))) Where is another assoc list of the various information -related to the mailcap RFC. This is keyed on the lowercase +related to the mailcap RFC 1524. This is keyed on the lowercase attribute name (viewer, test, etc). This looks like: - ((viewer . viewerinfo) - (test . testinfo) - (xxxx . \"string\")) + ((viewer . VIEWERINFO) + (test . TESTINFO) + (xxxx . \"STRING\") + FLAG) -Where viewerinfo specifies how the content-type is viewed. Can be +Where VIEWERINFO specifies how the content-type is viewed. Can be a string, in which case it is run through a shell, with appropriate parameters, or a symbol, in which case the symbol is -funcall'd, with the buffer as an argument. - -testinfo is a list of strings, or nil. If nil, it means the -viewer specified is always valid. If it is a list of strings, -these are used to determine whether a viewer passes the 'test' or -not.") - -(defvar mailcap-download-directory nil - "*Where downloaded files should go by default.") - -(defvar mailcap-temporary-directory - (cond ((fboundp 'temp-directory) (temp-directory)) - ((boundp 'temporary-file-directory) temporary-file-directory) - ("/tmp/")) - "*Where temporary files go.") +`funcall'ed, with the buffer as an argument. + +TESTINFO is a test for the viewer's applicability, or nil. If nil, it +means the viewer is always valid. If it is a Lisp function, it is +called with a list of items from any extra fields from the +Content-Type header as argument to return a boolean value for the +validity. Otherwise, if it is a non-function Lisp symbol or list +whose car is a symbol, it is `eval'led to yield the validity. If it +is a string or list of strings, it represents a shell command to run +to return a true or false shell value for the validity.") + +(defcustom mailcap-download-directory nil + "*Directory to which `mailcap-save-binary-file' downloads files by default. +Nil means your home directory." + :type '(choice (const :tag "Home directory" nil) + directory) + :group 'mailcap) ;;; ;;; Utility functions ;;; -(defun mailcap-generate-unique-filename (&optional fmt) - "Generate a unique filename in mailcap-temporary-directory." - (if (not fmt) - (let ((base (format "mailcap-tmp.%d" (user-real-uid))) - (fname "") - (x 0)) - (setq fname (format "%s%d" base x)) - (while (file-exists-p - (expand-file-name fname mailcap-temporary-directory)) - (setq x (1+ x) - fname (concat base (int-to-string x)))) - (expand-file-name fname mailcap-temporary-directory)) - (let ((base (concat "mm" (int-to-string (user-real-uid)))) - (fname "") - (x 0)) - (setq fname (format fmt (concat base (int-to-string x)))) - (while (file-exists-p - (expand-file-name fname mailcap-temporary-directory)) - (setq x (1+ x) - fname (format fmt (concat base (int-to-string x))))) - (expand-file-name fname mailcap-temporary-directory)))) - (defun mailcap-save-binary-file () (goto-char (point-min)) (unwind-protect @@ -289,7 +295,7 @@ not.") (defvar mailcap-maybe-eval-warning "*** WARNING *** -This MIME part contains untrusted and possibly harmful content. +This MIME part contains untrusted and possibly harmful content. If you evaluate the Emacs Lisp code contained in it, a lot of nasty things can happen. Please examine the code very carefully before you instruct Emacs to evaluate it. You can browse the buffer containing @@ -301,7 +307,7 @@ Make sure that this text consists only of few text lines. Otherwise, Gnus might fail to display all of it.") (defun mailcap-maybe-eval () - "Maybe evaluate a buffer of emacs lisp code." + "Maybe evaluate a buffer of Emacs Lisp code." (let ((lisp-buffer (current-buffer))) (goto-char (point-min)) (when @@ -311,11 +317,11 @@ Gnus might fail to display all of it.") "*Warning*")))) (unwind-protect (with-current-buffer buffer - (insert (substitute-command-keys + (insert (substitute-command-keys mailcap-maybe-eval-warning)) (goto-char (point-min)) (display-buffer buffer) - (yes-or-no-p "This is emacs-lisp code, evaluate it? ")) + (yes-or-no-p "This is potentially dangerous emacs-lisp code, evaluate it? ")) (kill-buffer buffer)))) (eval-buffer (current-buffer))) (when (buffer-live-p lisp-buffer) @@ -357,7 +363,7 @@ MAILCAPS if set; otherwise (on Unix) use the path from RFC 1524, plus "/usr/local/etc/mailcap")))) (let ((fnames (reverse (if (stringp path) - (parse-colon-path path) + (delete "" (split-string path path-separator)) path))) fname) (while fnames @@ -369,7 +375,7 @@ MAILCAPS if set; otherwise (on Unix) use the path from RFC 1524, plus (setq mailcap-parsed-p t))) (defun mailcap-parse-mailcap (fname) - ;; Parse out the mailcap file specified by FNAME + "Parse out the mailcap file specified by FNAME." (let (major ; The major mime type (image/audio/etc) minor ; The minor mime type (gif, basic, etc) save-pos ; Misc saved positions used in parsing @@ -409,9 +415,9 @@ MAILCAPS if set; otherwise (on Unix) use the path from RFC 1524, plus (skip-chars-forward " \t") ;;; Got the major/minor chunks, now for the viewers/etc ;;; The first item _must_ be a viewer, according to the - ;;; RFC for mailcap files (#1343) + ;;; RFC for mailcap files (#1524) (setq viewer "") - (when (eq (char-after) ?\;) + (when (eq (char-after) ?\;) (forward-char) (skip-chars-forward " \t") (setq save-pos (point)) @@ -432,7 +438,7 @@ MAILCAPS if set; otherwise (on Unix) use the path from RFC 1524, plus (setq viewer (buffer-substring save-pos (point))))) (setq save-pos (point)) (end-of-line) - (unless (equal viewer "") + (unless (equal viewer "") (setq info (nconc (list (cons 'viewer viewer) (cons 'type (concat major "/" (if (string= minor ".*") @@ -443,7 +449,7 @@ MAILCAPS if set; otherwise (on Unix) use the path from RFC 1524, plus (beginning-of-line))))) (defun mailcap-parse-mailcap-extras (st nd) - ;; Grab all the extra stuff from a mailcap entry + "Grab all the extra stuff from a mailcap entry." (let ( name ; From name= value ; its value @@ -488,11 +494,10 @@ MAILCAPS if set; otherwise (on Unix) use the path from RFC 1524, plus results))) (defun mailcap-mailcap-entry-passes-test (info) - ;; Return t iff a mailcap entry passes its test clause or no test - ;; clause is present. - (let (status ; Call-process-regions return value - (test (assq 'test info)) ; The test clause - ) + "Return non-nil iff mailcap entry INFO passes its test clause. +Also return non-nil if no test clause is present." + (let ((test (assq 'test info)) ; The test clause + status) (setq status (and test (split-string (cdr test) " "))) (if (and (or (assoc "needsterm" info) (assoc "needsterminal" info) @@ -519,14 +524,14 @@ MAILCAPS if set; otherwise (on Unix) use the path from RFC 1524, plus ;;; (defun mailcap-possible-viewers (major minor) - ;; Return a list of possible viewers from MAJOR for minor type MINOR + "Return a list of possible viewers from MAJOR for minor type MINOR." (let ((exact '()) (wildcard '())) (while major (cond ((equal (car (car major)) minor) (setq exact (cons (cdr (car major)) exact))) - ((and minor (string-match (car (car major)) minor)) + ((and minor (string-match (concat "^" (car (car major)) "$") minor)) (setq wildcard (cons (cdr (car major)) wildcard)))) (setq major (cdr major))) (nconc exact wildcard))) @@ -554,18 +559,18 @@ MAILCAPS if set; otherwise (on Unix) use the path from RFC 1524, plus (setq save-pos (point)) (skip-chars-forward "%") (setq save-chr (char-after (point))) + ;; Escapes: + ;; %s: name of a file for the body data + ;; %t: content-type + ;; %{ +;; Keywords: news + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; implement (small subset of) RFC 2369 + +;;; Code: + +(require 'gnus) +(require 'gnus-msg) +(eval-when-compile (require 'cl)) + +;;; Mailing list minor mode + +(defvar gnus-mailing-list-mode nil + "Minor mode for providing mailing-list commands.") + +(defvar gnus-mailing-list-mode-map nil) + +(defvar gnus-mailing-list-menu) + +(unless gnus-mailing-list-mode-map + (setq gnus-mailing-list-mode-map (make-sparse-keymap)) + + (gnus-define-keys gnus-mailing-list-mode-map + "\C-c\C-nh" gnus-mailing-list-help + "\C-c\C-ns" gnus-mailing-list-subscribe + "\C-c\C-nu" gnus-mailing-list-unsubscribe + "\C-c\C-np" gnus-mailing-list-post + "\C-c\C-no" gnus-mailing-list-owner + "\C-c\C-na" gnus-mailing-list-archive + )) + +(defun gnus-mailing-list-make-menu-bar () + (unless (boundp 'gnus-mailing-list-menu) + (easy-menu-define + gnus-mailing-list-menu gnus-mailing-list-mode-map "" + '("Mailing-Lists" + ["Get help" gnus-mailing-list-help t] + ["Subscribe" gnus-mailing-list-subscribe t] + ["Unsubscribe" gnus-mailing-list-unsubscribe t] + ["Post a message" gnus-mailing-list-post t] + ["Mail to owner" gnus-mailing-list-owner t] + ["Browse archive" gnus-mailing-list-archive t])))) + +;;;###autoload +(defun turn-on-gnus-mailing-list-mode () + (when (gnus-group-get-parameter gnus-newsgroup-name 'to-list) + (gnus-mailing-list-mode 1))) + +;;;###autoload +(defun gnus-mailing-list-insinuate (&optional force) + "Setup group parameters from List-Post header. +If FORCE is non-nil, replace the old ones." + (interactive "P") + (let ((list-post + (with-current-buffer gnus-original-article-buffer + (gnus-fetch-field "list-post")))) + (if list-post + (if (and (not force) + (gnus-group-get-parameter gnus-newsgroup-name 'to-list)) + (gnus-message 1 "to-list is non-nil.") + (if (string-match "]*\\)>" list-post) + (setq list-post (match-string 1 list-post))) + (gnus-group-add-parameter gnus-newsgroup-name + (cons 'to-list list-post)) + (gnus-mailing-list-mode 1)) + (gnus-message 1 "no list-post in this message.")))) + +;;;###autoload +(defun gnus-mailing-list-mode (&optional arg) + "Minor mode for providing mailing-list commands. + +\\{gnus-mailing-list-mode-map}" + (interactive "P") + (when (eq major-mode 'gnus-summary-mode) + (when (set (make-local-variable 'gnus-mailing-list-mode) + (if (null arg) (not gnus-mailing-list-mode) + (> (prefix-numeric-value arg) 0))) + ;; Set up the menu. + (when (gnus-visual-p 'mailing-list-menu 'menu) + (gnus-mailing-list-make-menu-bar)) + (gnus-add-minor-mode 'gnus-mailing-list-mode " Mailing-List" gnus-mailing-list-mode-map) + (gnus-run-hooks 'gnus-mailing-list-mode-hook)))) + +;;; Commands + +(defun gnus-mailing-list-help () + "Get help from mailing list server." + (interactive) + (let ((list-help + (with-current-buffer gnus-original-article-buffer + (gnus-fetch-field "list-help")))) + (cond (list-help (gnus-mailing-list-message list-help)) + (t (gnus-message 1 "no list-help in this group"))))) + +(defun gnus-mailing-list-subscribe () + "Subscribe" + (interactive) + (let ((list-subscribe + (with-current-buffer gnus-original-article-buffer + (gnus-fetch-field "list-subscribe")))) + (cond (list-subscribe (gnus-mailing-list-message list-subscribe)) + (t (gnus-message 1 "no list-subscribe in this group"))))) + +(defun gnus-mailing-list-unsubscribe () + "Unsubscribe" + (interactive) + (let ((list-unsubscribe + (with-current-buffer gnus-original-article-buffer + (gnus-fetch-field "list-unsubscribe")))) + (cond (list-unsubscribe (gnus-mailing-list-message list-unsubscribe)) + (t (gnus-message 1 "no list-unsubscribe in this group"))))) + +(defun gnus-mailing-list-post () + "Post message (really useful ?)" + (interactive) + (let ((list-post + (with-current-buffer gnus-original-article-buffer + (gnus-fetch-field "list-post")))) + (cond (list-post (gnus-mailing-list-message list-post)) + (t (gnus-message 1 "no list-post in this group"))))) + +(defun gnus-mailing-list-owner () + "Mail to the owner" + (interactive) + (let ((list-owner + (with-current-buffer gnus-original-article-buffer + (gnus-fetch-field "list-owner")))) + (cond (list-owner (gnus-mailing-list-message list-owner)) + (t (gnus-message 1 "no list-owner in this group"))))) + +(defun gnus-mailing-list-archive () + "Browse archive" + (interactive) + (require 'browse-url) + (let ((list-archive + (with-current-buffer gnus-original-article-buffer + (gnus-fetch-field "list-archive")))) + (cond (list-archive + (if (string-match "<\\(http:[^>]*\\)>" list-archive) + (browse-url (match-string 1 list-archive)) + (browse-url list-archive))) + (t (gnus-message 1 "no list-archive in this group"))))) + +;;; Utility functions + +(defun gnus-mailing-list-message (address) + "" + (let ((mailto "") + (to ()) + (subject "None") + (body "") + ) + (cond + ((string-match "]*\\)>" address) + (let ((args (match-string 1 address))) + (cond ; with param + ((string-match "\\(.*\\)\\?\\(.*\\)" args) + (setq mailto (match-string 1 args)) + (let ((param (match-string 2 args))) + (if (string-match "subject=\\([^&]*\\)" param) + (setq subject (match-string 1 param))) + (if (string-match "body=\\([^&]*\\)" param) + (setq body (match-string 1 param))) + (if (string-match "to=\\([^&]*\\)" param) + (push (match-string 1 param) to)) + )) + (t (setq mailto args))))) ; without param + + ; other case ;; Keywords: news @@ -45,15 +46,17 @@ :type '(repeat (string :tag "Group"))) (defcustom gnus-nocem-issuers - '("AutoMoose-1" "Automoose-1" ; CancelMoose[tm] - "rbraver@ohww.norman.ok.us" ; Robert Braver - "clewis@ferret.ocunix.on.ca" ; Chris Lewis - "jem@xpat.com" ; Despammer from Korea - "snowhare@xmission.com" ; Benjamin "Snowhare" Franz - "red@redpoll.mrfs.oh.us (Richard E. Depew)") ; ARMM! ARMM! + '("AutoMoose-1" ; CancelMoose[tm] + "clewis@ferret.ocunix" ; Chris Lewis + "cosmo.roadkill" + "SpamHippo" + "hweede@snafu.de") "*List of NoCeM issuers to pay attention to. -This can also be a list of `(ISSUER CONDITIONS)' elements." +This can also be a list of `(ISSUER CONDITION ...)' elements. + +See for an +issuer registry." :group 'gnus-nocem :type '(repeat (choice string sexp))) @@ -83,6 +86,19 @@ matches an previously scanned and verified nocem message." :group 'gnus-nocem :type 'boolean) +(defcustom gnus-nocem-check-article-limit 500 + "*If non-nil, the maximum number of articles to check in any NoCeM group." + :group 'gnus-nocem + :type '(choice (const :tag "unlimited" nil) + (integer 1000))) + +(defcustom gnus-nocem-check-from t + "Non-nil means check for valid issuers in message bodies. +Otherwise don't bother fetching articles unless their author matches a +valid issuer, which is much faster if you are selective about the issuers." + :group 'gnus-nocem + :type 'boolean) + ;;; Internal variables (defvar gnus-nocem-active nil) @@ -166,6 +182,18 @@ matches an previously scanned and verified nocem message." ;; are not allowed to have references, so we can ;; ignore scanning followups. (and (string-match "@@NCM" (mail-header-subject header)) + (and gnus-nocem-check-from + (let ((case-fold-search t)) + (catch 'ok + (mapcar + (lambda (author) + (if (consp author) + (setq author (car author))) + (if (string-match + author (mail-header-from header)) + (throw 'ok t))) + gnus-nocem-issuers) + nil))) (or gnus-nocem-liberal-fetch (and (or (string= "" (mail-header-references header)) @@ -173,8 +201,10 @@ matches an previously scanned and verified nocem message." (not (member (mail-header-message-id header) gnus-nocem-seen-message-ids)))) (push header check-headers))) - (let ((i 0) - (len (length check-headers))) + (let* ((i 0) + (check-headers + (last check-headers gnus-nocem-check-article-limit)) + (len (length check-headers))) (dolist (h check-headers) (gnus-message 7 "Checking article %d in %s for NoCeM (%d of %d)..." @@ -192,6 +222,7 @@ matches an previously scanned and verified nocem message." "Check whether the current article is an NCM article and that we want it." ;; Get the article. (let ((date (mail-header-date header)) + (gnus-newsgroup-name group) issuer b e type) (when (or (not date) (time-less-p diff --git a/lisp/gnus-picon.el b/lisp/gnus-picon.el index e527523..0a8d804 100644 --- a/lisp/gnus-picon.el +++ b/lisp/gnus-picon.el @@ -1,5 +1,7 @@ ;;; gnus-picon.el --- displaying pretty icons in Gnus -;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Wes Hardaker ;; Keywords: news xpm annotation glyph faces @@ -98,9 +100,9 @@ Some people may want to add \"unknown\" to this list." (when (featurep 'x) (let ((types (list "xbm"))) (when (featurep 'gif) - (setq types (cons "gif" types))) + (push "gif" types)) (when (featurep 'xpm) - (setq types (cons "xpm" types))) + (push "xpm" types)) types)) "*List of suffixes on picon file names to try." :type '(repeat string) @@ -256,9 +258,8 @@ arguments necessary for the job.") (when (and (featurep 'xpm) (or (not (fboundp 'device-type)) (equal (device-type) 'x)) (setq from (mail-fetch-field "from")) - (setq from (downcase (or (cadr - (funcall gnus-extract-address-components - from)) + (setq from (downcase (or (cadr (mail-extract-address-components + from)) ""))) (or (setq at-idx (string-match "@" from)) (setq at-idx (length from)))) diff --git a/lisp/gnus-range.el b/lisp/gnus-range.el index 5e0dc13..223a32e 100644 --- a/lisp/gnus-range.el +++ b/lisp/gnus-range.el @@ -1,5 +1,6 @@ ;;; gnus-range.el --- range and sequence functions for Gnus -;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus-salt.el b/lisp/gnus-salt.el index 181f9cf..dd2aa1f 100644 --- a/lisp/gnus-salt.el +++ b/lisp/gnus-salt.el @@ -1,5 +1,6 @@ ;;; gnus-salt.el --- alternate summary mode interfaces for Gnus -;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -53,7 +54,7 @@ :group 'gnus-summary-pick) (defcustom gnus-pick-elegant-flow t - "If non-nil, gnus-pick-start-reading will run gnus-summary-next-group when no articles have been picked." + "If non-nil, `gnus-pick-start-reading' runs `gnus-summary-next-group' when no articles have been picked." :type 'boolean :group 'gnus-summary-pick) @@ -120,7 +121,8 @@ It accepts the same format specs that `gnus-summary-line-format' does." ;; Set up the menu. (when (gnus-visual-p 'pick-menu 'menu) (gnus-pick-make-menu-bar)) - (gnus-add-minor-mode 'gnus-pick-mode " Pick" gnus-pick-mode-map) + (gnus-add-minor-mode 'gnus-pick-mode " Pick" gnus-pick-mode-map + nil 'gnus-pick-mode) (gnus-run-hooks 'gnus-pick-mode-hook)))) (defun gnus-pick-setup-message () @@ -182,7 +184,7 @@ If ARG, pick the article on that line instead." (gnus-summary-mark-as-processable 1)) (defun gnus-pick-article-or-thread (&optional arg) - "If gnus-thread-hide-subtree is t, then pick the thread on the current line. + "If `gnus-thread-hide-subtree' is t, then pick the thread on the current line. Otherwise pick the article on the current line. If ARG, pick the article/thread on that line instead." (interactive "P") @@ -196,7 +198,7 @@ If ARG, pick the article/thread on that line instead." (gnus-summary-mark-as-processable 1))) (defun gnus-pick-unmark-article-or-thread (&optional arg) - "If gnus-thread-hide-subtree is t, then unmark the thread on current line. + "If `gnus-thread-hide-subtree' is t, then unmark the thread on current line. Otherwise unmark the article on current line. If ARG, unmark thread/article on that line instead." (interactive "P") @@ -352,7 +354,8 @@ This must be bound to a button-down mouse event." ;; Set up the menu. (when (gnus-visual-p 'binary-menu 'menu) (gnus-binary-make-menu-bar)) - (gnus-add-minor-mode 'gnus-binary-mode " Binary" gnus-binary-mode-map) + (gnus-add-minor-mode 'gnus-binary-mode " Binary" + gnus-binary-mode-map nil 'gnus-binary-mode) (gnus-run-hooks 'gnus-binary-mode-hook)))) (defun gnus-binary-display-article (article &optional all-header) diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index 57129eb..c1131db 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -108,8 +108,8 @@ gnus-score-find-bnews: Apply score files whose names matches. See the documentation to these functions for more information. This variable can also be a list of functions to be called. Each -function should either return a list of score files, or a list of -score alists. +function is given the group name as argument and should either return +a list of score files, or a list of score alists. If functions other than these pre-defined functions are used, the `a' symbolic prefix to the score commands will always use @@ -118,7 +118,12 @@ the `a' symbolic prefix to the score commands will always use :type '(radio (function-item gnus-score-find-single) (function-item gnus-score-find-hierarchical) (function-item gnus-score-find-bnews) - (function :tag "Other"))) + (repeat :tag "List of functions" + (choice (function :tag "Other" :value 'ignore) + (function-item gnus-score-find-single) + (function-item gnus-score-find-hierarchical) + (function-item gnus-score-find-bnews))) + (function :tag "Other" :value 'ignore))) (defcustom gnus-score-interactive-default-score 1000 "*Scoring commands will raise/lower the score with this number as the default." @@ -196,6 +201,8 @@ It can be: (repeat (choice string (cons regexp (repeat file)) (function :value fun))) + (function-item gnus-hierarchial-home-score-file) + (function-item gnus-current-home-score-file) (function :value fun))) (defcustom gnus-home-adapt-file nil @@ -388,6 +395,9 @@ If nil, the user will be asked for a duration." ;; Internal variables. +(defvar gnus-score-use-all-scores t + "If nil, only `gnus-score-find-score-files-function' is used.") + (defvar gnus-adaptive-word-syntax-table (let ((table (copy-syntax-table (standard-syntax-table))) (numbers '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))) @@ -1126,8 +1136,7 @@ EXTRA is the possible non-standard header." gnus-kill-files-directory))) (expand-file-name file)) file) - (concat (file-name-as-directory gnus-kill-files-directory) - file)))) + (expand-file-name file gnus-kill-files-directory)))) (cached (assoc file gnus-score-cache)) (global (member file gnus-internal-global-score-files)) lists alist) @@ -1663,204 +1672,211 @@ score in GNUS-NEWSGROUP-SCORED by SCORE." nil) (defun gnus-score-body (scores header now expire &optional trace) - (save-excursion - (setq gnus-scores-articles - (sort gnus-scores-articles - (lambda (a1 a2) - (< (mail-header-number (car a1)) - (mail-header-number (car a2)))))) - (set-buffer nntp-server-buffer) - (save-restriction - (let* ((buffer-read-only nil) - (articles gnus-scores-articles) - (all-scores scores) - (request-func (cond ((string= "head" header) - 'gnus-request-head) - ((string= "body" header) - 'gnus-request-body) - (t 'gnus-request-article))) - entries alist ofunc article last) - (when articles - (setq last (mail-header-number (caar (last articles)))) + (if gnus-agent-fetching + nil + (save-excursion + (setq gnus-scores-articles + (sort gnus-scores-articles + (lambda (a1 a2) + (< (mail-header-number (car a1)) + (mail-header-number (car a2)))))) + (set-buffer nntp-server-buffer) + (save-restriction + (let* ((buffer-read-only nil) + (articles gnus-scores-articles) + (all-scores scores) + (request-func (cond ((string= "head" header) + 'gnus-request-head) + ((string= "body" header) + 'gnus-request-body) + (t 'gnus-request-article))) + entries alist ofunc article last) + (when articles + (setq last (mail-header-number (caar (last articles)))) ;; Not all backends support partial fetching. In that case, - ;; we just fetch the entire article. - (unless (gnus-check-backend-function - (and (string-match "^gnus-" (symbol-name request-func)) - (intern (substring (symbol-name request-func) - (match-end 0)))) - gnus-newsgroup-name) - (setq ofunc request-func) - (setq request-func 'gnus-request-article)) - (while articles - (setq article (mail-header-number (caar articles))) - (gnus-message 7 "Scoring article %s of %s..." article last) - (widen) - (when (funcall request-func article gnus-newsgroup-name) - (goto-char (point-min)) - ;; If just parts of the article is to be searched, but the - ;; backend didn't support partial fetching, we just narrow - ;; to the relevant parts. - (when ofunc - (if (eq ofunc 'gnus-request-head) + ;; we just fetch the entire article. + (unless (gnus-check-backend-function + (and (string-match "^gnus-" (symbol-name request-func)) + (intern (substring (symbol-name request-func) + (match-end 0)))) + gnus-newsgroup-name) + (setq ofunc request-func) + (setq request-func 'gnus-request-article)) + (while articles + (setq article (mail-header-number (caar articles))) + (gnus-message 7 "Scoring article %s of %s..." article last) + (widen) + (when (funcall request-func article gnus-newsgroup-name) + (goto-char (point-min)) + ;; If just parts of the article is to be searched, but the + ;; backend didn't support partial fetching, we just narrow + ;; to the relevant parts. + (when ofunc + (if (eq ofunc 'gnus-request-head) + (narrow-to-region + (point) + (or (search-forward "\n\n" nil t) (point-max))) (narrow-to-region - (point) - (or (search-forward "\n\n" nil t) (point-max))) - (narrow-to-region - (or (search-forward "\n\n" nil t) (point)) - (point-max)))) - (setq scores all-scores) - ;; Find matches. - (while scores - (setq alist (pop scores) - entries (assoc header alist)) - (while (cdr entries) ;First entry is the header index. - (let* ((rest (cdr entries)) - (kill (car rest)) - (match (nth 0 kill)) - (type (or (nth 3 kill) 's)) - (score (or (nth 1 kill) - gnus-score-interactive-default-score)) - (date (nth 2 kill)) - (found nil) - (case-fold-search - (not (or (eq type 'R) (eq type 'S) - (eq type 'Regexp) (eq type 'String)))) - (search-func - (cond ((or (eq type 'r) (eq type 'R) - (eq type 'regexp) (eq type 'Regexp)) - 're-search-forward) - ((or (eq type 's) (eq type 'S) - (eq type 'string) (eq type 'String)) - 'search-forward) - (t - (error "Invalid match type: %s" type))))) - (goto-char (point-min)) - (when (funcall search-func match nil t) - ;; Found a match, update scores. - (setcdr (car articles) (+ score (cdar articles))) - (setq found t) - (when trace - (push - (cons (car-safe (rassq alist gnus-score-cache)) kill) - gnus-score-trace))) - ;; Update expire date - (unless trace - (cond - ((null date)) ;Permanent entry. - ((and found gnus-update-score-entry-dates) - ;; Match, update date. - (gnus-score-set 'touched '(t) alist) - (setcar (nthcdr 2 kill) now)) - ((and expire (< date expire)) ;Old entry, remove. - (gnus-score-set 'touched '(t) alist) - (setcdr entries (cdr rest)) - (setq rest entries)))) - (setq entries rest))))) - (setq articles (cdr articles))))))) - nil) + (or (search-forward "\n\n" nil t) (point)) + (point-max)))) + (setq scores all-scores) + ;; Find matches. + (while scores + (setq alist (pop scores) + entries (assoc header alist)) + (while (cdr entries) ;First entry is the header index. + (let* ((rest (cdr entries)) + (kill (car rest)) + (match (nth 0 kill)) + (type (or (nth 3 kill) 's)) + (score (or (nth 1 kill) + gnus-score-interactive-default-score)) + (date (nth 2 kill)) + (found nil) + (case-fold-search + (not (or (eq type 'R) (eq type 'S) + (eq type 'Regexp) (eq type 'String)))) + (search-func + (cond ((or (eq type 'r) (eq type 'R) + (eq type 'regexp) (eq type 'Regexp)) + 're-search-forward) + ((or (eq type 's) (eq type 'S) + (eq type 'string) (eq type 'String)) + 'search-forward) + (t + (error "Invalid match type: %s" type))))) + (goto-char (point-min)) + (when (funcall search-func match nil t) + ;; Found a match, update scores. + (setcdr (car articles) (+ score (cdar articles))) + (setq found t) + (when trace + (push + (cons (car-safe (rassq alist gnus-score-cache)) kill) + gnus-score-trace))) + ;; Update expire date + (unless trace + (cond + ((null date)) ;Permanent entry. + ((and found gnus-update-score-entry-dates) + ;; Match, update date. + (gnus-score-set 'touched '(t) alist) + (setcar (nthcdr 2 kill) now)) + ((and expire (< date expire)) ;Old entry, remove. + (gnus-score-set 'touched '(t) alist) + (setcdr entries (cdr rest)) + (setq rest entries)))) + (setq entries rest))))) + (setq articles (cdr articles))))))) + nil)) (defun gnus-score-thread (scores header now expire &optional trace) (gnus-score-followup scores header now expire trace t)) (defun gnus-score-followup (scores header now expire &optional trace thread) - ;; Insert the unique article headers in the buffer. - (let ((gnus-score-index (nth 1 (assoc header gnus-header-index))) - (current-score-file gnus-current-score-file) - (all-scores scores) - ;; gnus-score-index is used as a free variable. - alike last this art entries alist articles - new news) - - ;; Change score file to the adaptive score file. All entries that - ;; this function makes will be put into this file. - (save-excursion - (set-buffer gnus-summary-buffer) - (gnus-score-load-file - (or gnus-newsgroup-adaptive-score-file - (gnus-score-file-name - gnus-newsgroup-name gnus-adaptive-file-suffix)))) - - (setq gnus-scores-articles (sort gnus-scores-articles 'gnus-score-string<) - articles gnus-scores-articles) + (if gnus-agent-fetching + ;; FIXME: It seems doable in fetching mode. + nil + ;; Insert the unique article headers in the buffer. + (let ((gnus-score-index (nth 1 (assoc header gnus-header-index))) + (current-score-file gnus-current-score-file) + (all-scores scores) + ;; gnus-score-index is used as a free variable. + alike last this art entries alist articles + new news) + + ;; Change score file to the adaptive score file. All entries that + ;; this function makes will be put into this file. + (save-excursion + (set-buffer gnus-summary-buffer) + (gnus-score-load-file + (or gnus-newsgroup-adaptive-score-file + (gnus-score-file-name + gnus-newsgroup-name gnus-adaptive-file-suffix)))) - (erase-buffer) - (while articles - (setq art (car articles) - this (aref (car art) gnus-score-index) - articles (cdr articles)) - (if (equal last this) - (push art alike) - (when last - (insert last ?\n) - (put-text-property (1- (point)) (point) 'articles alike)) - (setq alike (list art) - last this))) - (when last ; Bwadr, duplicate code. - (insert last ?\n) - (put-text-property (1- (point)) (point) 'articles alike)) + (setq gnus-scores-articles (sort gnus-scores-articles + 'gnus-score-string<) + articles gnus-scores-articles) - ;; Find matches. - (while scores - (setq alist (car scores) - scores (cdr scores) - entries (assoc header alist)) - (while (cdr entries) ;First entry is the header index. - (let* ((rest (cdr entries)) - (kill (car rest)) - (match (nth 0 kill)) - (type (or (nth 3 kill) 's)) - (score (or (nth 1 kill) gnus-score-interactive-default-score)) - (date (nth 2 kill)) - (found nil) - (mt (aref (symbol-name type) 0)) - (case-fold-search - (not (or (= mt ?R) (= mt ?S) (= mt ?E) (= mt ?F)))) - (dmt (downcase mt)) - (search-func - (cond ((= dmt ?r) 're-search-forward) - ((or (= dmt ?e) (= dmt ?s) (= dmt ?f)) 'search-forward) - (t (error "Invalid match type: %s" type)))) - arts art) - (goto-char (point-min)) - (if (= dmt ?e) + (erase-buffer) + (while articles + (setq art (car articles) + this (aref (car art) gnus-score-index) + articles (cdr articles)) + (if (equal last this) + (push art alike) + (when last + (insert last ?\n) + (put-text-property (1- (point)) (point) 'articles alike)) + (setq alike (list art) + last this))) + (when last ; Bwadr, duplicate code. + (insert last ?\n) + (put-text-property (1- (point)) (point) 'articles alike)) + + ;; Find matches. + (while scores + (setq alist (car scores) + scores (cdr scores) + entries (assoc header alist)) + (while (cdr entries) ;First entry is the header index. + (let* ((rest (cdr entries)) + (kill (car rest)) + (match (nth 0 kill)) + (type (or (nth 3 kill) 's)) + (score (or (nth 1 kill) gnus-score-interactive-default-score)) + (date (nth 2 kill)) + (found nil) + (mt (aref (symbol-name type) 0)) + (case-fold-search + (not (or (= mt ?R) (= mt ?S) (= mt ?E) (= mt ?F)))) + (dmt (downcase mt)) + (search-func + (cond ((= dmt ?r) 're-search-forward) + ((or (= dmt ?e) (= dmt ?s) (= dmt ?f)) 'search-forward) + (t (error "Invalid match type: %s" type)))) + arts art) + (goto-char (point-min)) + (if (= dmt ?e) + (while (funcall search-func match nil t) + (and (= (progn (beginning-of-line) (point)) + (match-beginning 0)) + (= (progn (end-of-line) (point)) + (match-end 0)) + (progn + (setq found (setq arts (get-text-property + (point) 'articles))) + ;; Found a match, update scores. + (while arts + (setq art (car arts) + arts (cdr arts)) + (gnus-score-add-followups + (car art) score all-scores thread)))) + (end-of-line)) (while (funcall search-func match nil t) - (and (= (progn (beginning-of-line) (point)) - (match-beginning 0)) - (= (progn (end-of-line) (point)) - (match-end 0)) - (progn - (setq found (setq arts (get-text-property - (point) 'articles))) - ;; Found a match, update scores. - (while arts - (setq art (car arts) - arts (cdr arts)) - (gnus-score-add-followups - (car art) score all-scores thread)))) - (end-of-line)) - (while (funcall search-func match nil t) - (end-of-line) - (setq found (setq arts (get-text-property (point) 'articles))) - ;; Found a match, update scores. - (while (setq art (pop arts)) - (when (setq new (gnus-score-add-followups - (car art) score all-scores thread)) - (push new news))))) - ;; Update expire date - (cond ((null date)) ;Permanent entry. - ((and found gnus-update-score-entry-dates) ;Match, update date. - (gnus-score-set 'touched '(t) alist) - (setcar (nthcdr 2 kill) now)) - ((and expire (< date expire)) ;Old entry, remove. - (gnus-score-set 'touched '(t) alist) - (setcdr entries (cdr rest)) - (setq rest entries))) - (setq entries rest)))) - ;; We change the score file back to the previous one. - (save-excursion - (set-buffer gnus-summary-buffer) - (gnus-score-load-file current-score-file)) - (list (cons "references" news)))) + (end-of-line) + (setq found (setq arts (get-text-property (point) 'articles))) + ;; Found a match, update scores. + (while (setq art (pop arts)) + (when (setq new (gnus-score-add-followups + (car art) score all-scores thread)) + (push new news))))) + ;; Update expire date + (cond ((null date)) ;Permanent entry. + ((and found gnus-update-score-entry-dates) + ;Match, update date. + (gnus-score-set 'touched '(t) alist) + (setcar (nthcdr 2 kill) now)) + ((and expire (< date expire)) ;Old entry, remove. + (gnus-score-set 'touched '(t) alist) + (setcdr entries (cdr rest)) + (setq rest entries))) + (setq entries rest)))) + ;; We change the score file back to the previous one. + (save-excursion + (set-buffer gnus-summary-buffer) + (gnus-score-load-file current-score-file)) + (list (cons "references" news))))) (defun gnus-score-add-followups (header score scores &optional thread) "Add a score entry to the adapt file." @@ -2578,7 +2594,7 @@ GROUP using BNews sys file syntax." ;; too much. (delete-char (min (1- (point-max)) klen)) (goto-char (point-max)) - (search-backward "/") + (search-backward (char-to-string directory-sep-char)) (delete-region (1+ (point)) (point-min))) ;; If short file names were used, we have to translate slashes. (goto-char (point-min)) @@ -2734,19 +2750,20 @@ The list is determined from the variable gnus-score-file-alist." (and funcs (not (listp funcs)) (setq funcs (list funcs))) - ;; Get the initial score files for this group. - (when funcs - (setq score-files (nreverse (gnus-score-find-alist group)))) - ;; Add any home adapt files. - (let ((home (gnus-home-score-file group t))) - (when home - (push home score-files) - (setq gnus-newsgroup-adaptive-score-file home))) - ;; Check whether there is a `adapt-file' group parameter. - (let ((param-file (gnus-group-find-parameter group 'adapt-file))) - (when param-file - (push param-file score-files) - (setq gnus-newsgroup-adaptive-score-file param-file))) + (when gnus-score-use-all-scores + ;; Get the initial score files for this group. + (when funcs + (setq score-files (nreverse (gnus-score-find-alist group)))) + ;; Add any home adapt files. + (let ((home (gnus-home-score-file group t))) + (when home + (push home score-files) + (setq gnus-newsgroup-adaptive-score-file home))) + ;; Check whether there is a `adapt-file' group parameter. + (let ((param-file (gnus-group-find-parameter group 'adapt-file))) + (when param-file + (push param-file score-files) + (setq gnus-newsgroup-adaptive-score-file param-file)))) ;; Go through all the functions for finding score files (or actual ;; scores) and add them to a list. (while funcs @@ -2754,14 +2771,15 @@ The list is determined from the variable gnus-score-file-alist." (setq score-files (nconc score-files (nreverse (funcall (car funcs) group))))) (setq funcs (cdr funcs))) - ;; Add any home score files. - (let ((home (gnus-home-score-file group))) - (when home - (push home score-files))) - ;; Check whether there is a `score-file' group parameter. - (let ((param-file (gnus-group-find-parameter group 'score-file))) - (when param-file - (push param-file score-files))) + (when gnus-score-use-all-scores + ;; Add any home score files. + (let ((home (gnus-home-score-file group))) + (when home + (push home score-files))) + ;; Check whether there is a `score-file' group parameter. + (let ((param-file (gnus-group-find-parameter group 'score-file))) + (when param-file + (push param-file score-files)))) ;; Expand all files names. (let ((files score-files)) (while files diff --git a/lisp/gnus-setup.el b/lisp/gnus-setup.el index c98ef72..106e0a9 100644 --- a/lisp/gnus-setup.el +++ b/lisp/gnus-setup.el @@ -1,5 +1,6 @@ ;;; gnus-setup.el --- Initialization & Setup for Gnus 5 -;; Copyright (C) 1995, 96 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 2000 Free Software Foundation, Inc. ;; Author: Steven L. Baur ;; Keywords: news @@ -33,36 +34,27 @@ (eval-when-compile (require 'cl)) -(defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)) - (defvar gnus-use-installed-gnus t "*If non-nil Use installed version of Gnus.") -(defvar gnus-use-installed-tm running-xemacs - "*If non-nil use installed version of tm.") - -(defvar gnus-use-installed-mailcrypt running-xemacs +(defvar gnus-use-installed-mailcrypt (featurep 'xemacs) "*If non-nil use installed version of mailcrypt.") -(defvar gnus-emacs-lisp-directory (if running-xemacs +(defvar gnus-emacs-lisp-directory (if (featurep 'xemacs) "/usr/local/lib/xemacs/" "/usr/local/share/emacs/") "Directory where Emacs site lisp is located.") (defvar gnus-gnus-lisp-directory (concat gnus-emacs-lisp-directory - "gnus-5.0.15/lisp/") + "gnus/lisp/") "Directory where Gnus Emacs lisp is found.") -(defvar gnus-tm-lisp-directory (concat gnus-emacs-lisp-directory - "site-lisp/") - "Directory where TM Emacs lisp is found.") - (defvar gnus-mailcrypt-lisp-directory (concat gnus-emacs-lisp-directory - "site-lisp/mailcrypt-3.4/") + "site-lisp/mailcrypt/") "Directory where Mailcrypt Emacs Lisp is found.") (defvar gnus-bbdb-lisp-directory (concat gnus-emacs-lisp-directory - "site-lisp/bbdb-1.51/") + "site-lisp/bbdb/") "Directory where Big Brother Database is found.") (defvar gnus-use-mhe nil diff --git a/lisp/gnus-soup.el b/lisp/gnus-soup.el index 20a510a..9b974a8 100644 --- a/lisp/gnus-soup.el +++ b/lisp/gnus-soup.el @@ -1,5 +1,7 @@ ;;; gnus-soup.el --- SOUP packet writing support for Gnus -;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Lars Magne Ingebrigtsen diff --git a/lisp/gnus-spec.el b/lisp/gnus-spec.el index 552d981..cf43cfa 100644 --- a/lisp/gnus-spec.el +++ b/lisp/gnus-spec.el @@ -1,4 +1,4 @@ -;;; gnus-spec.el --- format spec functions for Gnus +;;; gnus-spec.el --- format spec functions for Gnus -*- coding: iso-latin-1 -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Free Software Foundation, Inc. @@ -386,7 +386,7 @@ by `gnus-xmas-redefine'." ;; This function parses the FORMAT string with the help of the ;; SPEC-ALIST and returns a list that can be eval'ed to return a ;; string. - (let ((xemacs-mule-p (and gnus-xemacs (featurep 'mule))) + (let ((xemacs-mule-p (and (featurep 'xemacs) (featurep 'mule))) max-width spec flist fstring elem result dontinsert user-defined type value pad-width spec-beg cut-width ignore-value @@ -578,7 +578,7 @@ If PROPS, insert the result." ;; Under XEmacs, it's (funcall #) (not (and (eq 'funcall (car form)) (byte-code-function-p (cadr form))))) - (fset 'gnus-tmp-func `(lambda () ,form)) + (defalias 'gnus-tmp-func `(lambda () ,form)) (byte-compile 'gnus-tmp-func) (setq compiled-function (gnus-byte-code 'gnus-tmp-func)) (set (intern (format "gnus-%s-line-format-spec" type)) diff --git a/lisp/gnus-srvr.el b/lisp/gnus-srvr.el index 0a7304f..f1224c9 100644 --- a/lisp/gnus-srvr.el +++ b/lisp/gnus-srvr.el @@ -681,7 +681,7 @@ buffer. (if (or (not (gnus-get-info group)) (gnus-ephemeral-group-p group)) (unless (gnus-group-read-ephemeral-group - group gnus-browse-current-method nil + (gnus-group-real-name group) gnus-browse-current-method nil (cons (current-buffer) 'browse)) (error "Couldn't enter %s" group)) (unless (gnus-group-read-group nil no-article group) diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index b3e78f3..a536302 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -641,6 +641,7 @@ the first newsgroup." gnus-newsgroup-unreads nil nnoo-state-alist nil gnus-current-select-method nil + nnmail-split-history nil gnus-ephemeral-servers nil) (gnus-shutdown 'gnus) ;; Kill the startup file. @@ -698,7 +699,7 @@ prompt the user for the name of an NNTP server to use." (when gnus-simple-splash (setq gnus-simple-splash nil) (cond - (gnus-xemacs + ((featurep 'xemacs) (gnus-xmas-splash)) ((and (eq window-system 'x) (= (frame-height) (1+ (window-height)))) @@ -1133,29 +1134,30 @@ for new groups, and subscribe the new groups as zombies." (defun gnus-check-first-time-used () (catch 'ended - (let ((files (list gnus-current-startup-file - (concat gnus-current-startup-file ".el") - (concat gnus-current-startup-file ".eld") - gnus-startup-file - (concat gnus-startup-file ".el") - (concat gnus-startup-file ".eld")))) - (while files - (when (file-exists-p (pop files)) - (throw 'ended nil)))) + ;; First check if any of the following files exist. If they do, + ;; it's not the first time the user has used Gnus. + (dolist (file (list gnus-current-startup-file + (concat gnus-current-startup-file ".el") + (concat gnus-current-startup-file ".eld") + gnus-startup-file + (concat gnus-startup-file ".el") + (concat gnus-startup-file ".eld"))) + (when (file-exists-p file) + (throw 'ended nil))) (gnus-message 6 "First time user; subscribing you to default groups") (unless (gnus-read-active-file-p) (let ((gnus-read-active-file t)) (gnus-read-active-file))) (setq gnus-newsrc-last-checked-date (current-time-string)) - (let ((groups gnus-default-subscribed-newsgroups) + ;; Subscribe to the default newsgroups. + (let ((groups (or gnus-default-subscribed-newsgroups + gnus-backup-default-subscribed-newsgroups)) group) - (if (eq groups t) - nil - (setq groups (or groups gnus-backup-default-subscribed-newsgroups)) + (when (eq groups t) + ;; If t, we subscribe (or not) all groups as if they were new. (mapatoms (lambda (sym) - (if (null (setq group (symbol-name sym))) - () + (when (setq group (symbol-name sym)) (let ((do-sub (gnus-matches-options-n group))) (cond ((eq do-sub 'subscribe) @@ -1166,18 +1168,17 @@ for new groups, and subscribe the new groups as zombies." (t (push group gnus-killed-list)))))) gnus-active-hashtb) - (while groups - (when (gnus-active (car groups)) + (dolist (group groups) + ;; Only subscribe the default groups that are activated. + (when (gnus-active group) (gnus-group-change-level - (car groups) gnus-level-default-subscribed gnus-level-killed)) - (setq groups (cdr groups))) + group gnus-level-default-subscribed gnus-level-killed))) (save-excursion (set-buffer gnus-group-buffer) (gnus-group-make-help-group)) (when gnus-novice-user (gnus-message 7 "`A k' to list killed groups")))))) - (defun gnus-subscribe-group (group &optional previous method) "Subcribe GROUP and put it after PREVIOUS." (gnus-group-change-level @@ -1406,7 +1407,9 @@ newsgroup." (condition-case () (inline (gnus-request-group group dont-check method)) ;;(error nil) - (quit nil)) + (quit + (message "Quit activating %s" group) + nil)) (setq active (gnus-parse-active)) ;; If there are no articles in the group, the GROUP ;; command may have responded with the `(0 . 0)'. We @@ -1759,7 +1762,9 @@ newsgroup." (gnus-read-active-file-1 method force) ;; We catch C-g so that we can continue past servers ;; that do not respond. - (quit nil))))))) + (quit + (message "Quit reading the active file") + nil))))))) (defun gnus-read-active-file-1 (method force) (let (where mesg) @@ -2768,7 +2773,7 @@ The backup file \".newsrc.eld_\" will be created before re-reading." (let ((str (buffer-substring (point) (progn (end-of-line) (point)))) (coding - (and (or gnus-xemacs + (and (or (featurep 'xemacs) (and (boundp 'enable-multibyte-characters) enable-multibyte-characters)) (fboundp 'gnus-mule-get-coding-system) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 7fb0358..3bd9ba0 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -49,7 +49,10 @@ (autoload 'pgg-verify-region "pgg" nil t)) (autoload 'gnus-summary-limit-include-cached "gnus-cache" nil t) +(autoload 'gnus-cache-write-active "gnus-cache") (autoload 'gnus-set-summary-default-charset "gnus-i18n" nil t) +(autoload 'gnus-mailing-list-insinuate "gnus-ml" nil t) +(autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" nil t) (defcustom gnus-kill-summary-on-exit t "*If non-nil, kill the summary buffer when you exit from it. @@ -373,7 +376,9 @@ The articles will simply be fed to the function given by (defcustom gnus-move-split-methods nil "*Variable used to suggest where articles are to be moved to. -It uses the same syntax as the `gnus-split-methods' variable." +It uses the same syntax as the `gnus-split-methods' variable. +However, whereas `gnus-split-methods' specifies file names as targets, +this variable specifies group names." :group 'gnus-summary-mail :type '(repeat (choice (list :value (fun) function) (cons :value ("" "") regexp (repeat string)) @@ -789,7 +794,7 @@ automatically when it is selected." . gnus-summary-high-unread-face) ((and (< score default) (= mark gnus-unread-mark)) . gnus-summary-low-unread-face) - ((and (memq article gnus-newsgroup-incorporated) + ((and (memq article gnus-newsgroup-incorporated) (= mark gnus-unread-mark)) . gnus-summary-incorporated-face) ((= mark gnus-unread-mark) @@ -871,7 +876,7 @@ default charset will be used instead." :type '(repeat symbol) :group 'gnus-charset) -(defcustom gnus-group-ignored-charsets-alist +(defcustom gnus-group-ignored-charsets-alist '(("alt\\.chinese\\.text" iso-8859-1)) "Alist of regexps (to match group names) and charsets that should be ignored. When these charsets are used in the \"charset\" parameter, the @@ -887,7 +892,7 @@ This variable uses the same syntax as `gnus-emphasis-alist'." (repeat (list (regexp :tag "Highlight regexp") (number :tag "Group for entire word" 0) (number :tag "Group for displayed part" 0) - (symbol :tag "Face" + (symbol :tag "Face" gnus-emphasis-highlight-words))))) :group 'gnus-summary-visual) @@ -936,6 +941,14 @@ For example: ((1 . cn-gb-2312) (2 . big5))." :type '(choice (const nil) integer)) +(defcustom gnus-summary-save-parts-default-mime "image/.*" + "*A regexp to match MIME parts when saving multiple parts of a message +with gnus-summary-save-parts (X m). This regexp will be used by default +when prompting the user for which type of files to save." + :group 'gnus-summary + :type 'regexp) + + ;;; Internal variables (defvar gnus-article-mime-handles nil) @@ -953,6 +966,9 @@ For example: ((1 . cn-gb-2312) (2 . big5))." (defvar gnus-sort-gathered-threads-function 'gnus-thread-sort-by-number "Function called to sort the articles within a thread after it has been gathered together.") +(defvar gnus-summary-save-parts-type-history nil) +(defvar gnus-summary-save-parts-last-directory nil) + ;; Avoid highlighting in kill files. (defvar gnus-summary-inhibit-highlight nil) (defvar gnus-newsgroup-selected-overlay nil) @@ -1009,9 +1025,9 @@ For example: ((1 . cn-gb-2312) (2 . big5))." ?c) (?u gnus-tmp-user-defined ?s) (?P (gnus-pick-line-number) ?d)) - "An alist of format specifications that can appear in summary lines, -and what variables they correspond with, along with the type of the -variable (string, integer, character, etc).") + "An alist of format specifications that can appear in summary lines. +These are paired with what variables they correspond with, along with +the type of the variable (string, integer, character, etc).") (defvar gnus-summary-dummy-line-format-alist `((?S gnus-tmp-subject ?s) @@ -1182,7 +1198,7 @@ end position and text.") ;; Subject simplification. (defun gnus-simplify-whitespace (str) - "Remove excessive whitespace." + "Remove excessive whitespace from STR." (let ((mystr str)) ;; Multiple spaces. (while (string-match "[ \t][ \t]+" mystr) @@ -1235,7 +1251,7 @@ The string in the accessible portion of the current buffer is simplified. It is assumed to be a single-line subject. Whitespace is generally cleaned up, and miscellaneous leading/trailing matter is removed. Additional things can be deleted by setting -gnus-simplify-subject-fuzzy-regexp." +`gnus-simplify-subject-fuzzy-regexp'." (let ((case-fold-search t) (modified-tick)) (gnus-simplify-buffer-fuzzy-step "\t" " ") @@ -1470,7 +1486,7 @@ increase the score of each group you read." "T" gnus-summary-limit-include-thread "d" gnus-summary-limit-exclude-dormant "t" gnus-summary-limit-to-age - "x" gnus-summary-limit-to-extra + "x" gnus-summary-limit-to-extra "E" gnus-summary-limit-include-expunged "c" gnus-summary-limit-exclude-childless-dormant "C" gnus-summary-limit-mark-excluded-as-read) @@ -1548,9 +1564,8 @@ increase the score of each group you read." "g" gnus-summary-show-article "s" gnus-summary-isearch-article "P" gnus-summary-print-article - "t" gnus-article-babel - "d" gnus-summary-decrypt-article - "v" gnus-summary-verify-article) + "M" gnus-mailing-list-insinuate + "t" gnus-article-babel) (gnus-define-keys (gnus-summary-wash-map "W" gnus-summary-mode-map) "b" gnus-article-add-buttons @@ -1791,6 +1806,7 @@ increase the score of each group you read." ["Fetch referenced articles" gnus-summary-refer-references t] ["Fetch current thread" gnus-summary-refer-thread t] ["Fetch article with id..." gnus-summary-refer-article t] + ["Setup Mailing List Params" gnus-mailing-list-insinuate t] ["Redisplay" gnus-summary-show-article t]))) (easy-menu-define gnus-summary-article-menu gnus-summary-mode-map "" @@ -2106,6 +2122,7 @@ The following commands are available: (make-local-hook 'pre-command-hook) (add-hook 'pre-command-hook 'gnus-set-global-variables nil t) (gnus-run-hooks 'gnus-summary-mode-hook) + (turn-on-gnus-mailing-list-mode) (gnus-update-format-specifications nil 'summary 'summary-mode 'summary-dummy) (gnus-update-summary-mark-positions)) @@ -2442,12 +2459,13 @@ marks of articles." (defun gnus-restore-hidden-threads-configuration (config) "Restore hidden threads configuration from CONFIG." - (let (point buffer-read-only) - (while (setq point (pop config)) - (when (and (< point (point-max)) - (goto-char point) - (eq (char-after) ?\n)) - (subst-char-in-region point (1+ point) ?\n ?\r))))) + (save-excursion + (let (point buffer-read-only) + (while (setq point (pop config)) + (when (and (< point (point-max)) + (goto-char point) + (eq (char-after) ?\n)) + (subst-char-in-region point (1+ point) ?\n ?\r)))))) ;; Various summary mode internalish functions. @@ -2457,9 +2475,10 @@ marks of articles." (gnus-summary-next-page nil t)) (defun gnus-summary-set-display-table () - ;; Change the display table. Odd characters have a tendency to mess - ;; up nicely formatted displays - we make all possible glyphs - ;; display only a single character. + "Change the display table. +Odd characters have a tendency to mess +up nicely formatted displays - we make all possible glyphs +display only a single character." ;; We start from the standard display table, if any. (let ((table (or (copy-sequence standard-display-table) @@ -2503,9 +2522,9 @@ marks of articles." t))) (defun gnus-set-global-variables () - ;; Set the global equivalents of the summary buffer-local variables - ;; to the latest values they had. These reflect the summary buffer - ;; that was in action when the last article was fetched. + "Set the global equivalents of the buffer-local variables. +They are set to the latest values they had. These reflect the summary +buffer that was in action when the last article was fetched." (when (eq major-mode 'gnus-summary-mode) (setq gnus-summary-buffer (current-buffer)) (let ((name gnus-newsgroup-name) @@ -2688,7 +2707,7 @@ marks of articles." (forward-line 1)))) (defun gnus-summary-update-line (&optional dont-update) - ;; Update summary line after change. + "Update summary line after change." (when (and gnus-summary-default-score (not gnus-summary-inhibit-highlight)) (let* ((gnus-summary-inhibit-highlight t) ; Prevent recursion. @@ -3094,7 +3113,7 @@ If SHOW-ALL is non-nil, already read articles are also listed." result)) (defun gnus-sort-gathered-threads (threads) - "Sort subtreads inside each gathered thread by article number." + "Sort subtreads inside each gathered thread by `gnus-sort-gathered-threads-function'." (let ((result threads)) (while threads (when (stringp (caar threads)) @@ -3311,31 +3330,38 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise." header) ;; overview: [num subject from date id refs chars lines misc] - (unless (eobp) - (forward-char)) - - (setq header - (make-full-mail-header - number ; number - (nnheader-nov-field) ; subject - (nnheader-nov-field) ; from - (nnheader-nov-field) ; date - (nnheader-nov-read-message-id) ; id - (nnheader-nov-field) ; refs - (nnheader-nov-read-integer) ; chars - (nnheader-nov-read-integer) ; lines - (unless (eobp) - (nnheader-nov-field)) ; misc - (nnheader-nov-parse-extra))) ; extra + (unwind-protect + (progn + (narrow-to-region (point) eol) + (unless (eobp) + (forward-char)) + + (setq header + (make-full-mail-header + number ; number + (nnheader-nov-field) ; subject + (nnheader-nov-field) ; from + (nnheader-nov-field) ; date + (nnheader-nov-read-message-id) ; id + (nnheader-nov-field) ; refs + (nnheader-nov-read-integer) ; chars + (nnheader-nov-read-integer) ; lines + (unless (eobp) + (if (looking-at "Xref: ") + (goto-char (match-end 0))) + (nnheader-nov-field)) ; Xref + (nnheader-nov-parse-extra)))) ; extra + + (widen)) (when gnus-alter-header-function (funcall gnus-alter-header-function header)) (gnus-dependencies-add-header header dependencies force-new))) (defun gnus-build-get-header (id) - ;; Look through the buffer of NOV lines and find the header to - ;; ID. Enter this line into the dependencies hash table, and return - ;; the id of the parent article (if any). + "Look through the buffer of NOV lines and find the header to ID. +Enter this line into the dependencies hash table, and return +the id of the parent article (if any)." (let ((deps gnus-newsgroup-dependencies) found header) (prog1 @@ -3662,13 +3688,22 @@ If LINE, insert the rebuilt thread starting on line LINE." (1+ (gnus-point-at-eol)) (gnus-delete-line))))))) +(defun gnus-sort-threads-1 (threads func) + (sort (mapcar (lambda (thread) + (cons (car thread) + (and (cdr thread) + (gnus-sort-threads-1 (cdr thread) func)))) + threads) func)) + (defun gnus-sort-threads (threads) "Sort THREADS." (if (not gnus-thread-sort-functions) threads (gnus-message 8 "Sorting threads...") (prog1 - (sort threads (gnus-make-sort-function gnus-thread-sort-functions)) + (gnus-sort-threads-1 + threads + (gnus-make-sort-function gnus-thread-sort-functions)) (gnus-message 8 "Sorting threads...done")))) (defun gnus-sort-articles (articles) @@ -3683,12 +3718,12 @@ If LINE, insert the rebuilt thread starting on line LINE." ;; Written by Hallvard B Furuseth . (defmacro gnus-thread-header (thread) - ;; Return header of first article in THREAD. - ;; Note that THREAD must never, ever be anything else than a variable - - ;; using some other form will lead to serious barfage. + "Return header of first article in THREAD. +Note that THREAD must never, ever be anything else than a variable - +using some other form will lead to serious barfage." (or (symbolp thread) (signal 'wrong-type-argument '(symbolp thread))) ;; (8% speedup to gnus-summary-prepare, just for fun :-) - (list 'byte-code "\10\211:\203\17\0\211@;\203\16\0A@@\207" + (list 'byte-code "\10\211:\203\17\0\211@;\203\16\0A@@\207" (vector thread) 2)) (defsubst gnus-article-sort-by-number (h1 h2) @@ -4105,7 +4140,7 @@ or a straight list of headers." gnus-list-identifiers (mapconcat 'identity gnus-list-identifiers " *\\|")))) (dolist (header gnus-newsgroup-headers) - (when (string-match (concat "\\(\\(\\(Re: +\\)?\\(" regexp + (when (string-match (concat "\\(\\(\\(Re: +\\)?\\(" regexp " *\\)\\)+\\(Re: +\\)?\\)") (mail-header-subject header)) (mail-header-set-subject @@ -4140,7 +4175,7 @@ If SELECT-ARTICLES, only select those articles from GROUP." (progn ; Or we bug out. (when (equal major-mode 'gnus-summary-mode) (kill-buffer (current-buffer))) - (error "Couldn't request group %s: %s" + (error "Couldn't activate group %s: %s" group (gnus-status-message group)))) (unless (gnus-request-group group t) @@ -4253,7 +4288,7 @@ If SELECT-ARTICLES, only select those articles from GROUP." (or gnus-newsgroup-headers t))))) (defun gnus-articles-to-read (group &optional read-all) - ;; Find out what articles the user wants to read. + "Find out what articles the user wants to read." (let* ((articles ;; Select all articles if `read-all' is non-nil, or if there ;; are no unread articles. @@ -4304,7 +4339,9 @@ If SELECT-ARTICLES, only select those articles from GROUP." (if (string-match "^[ \t]*$" input) number input))) (t number)) - (quit nil)))))) + (quit + (message "Quit getting the articles to read") + nil)))))) (setq select (if (stringp select) (string-to-number select) select)) (if (or (null select) (zerop select)) select @@ -4326,7 +4363,7 @@ If SELECT-ARTICLES, only select those articles from GROUP." (gnus-sorted-complement gnus-newsgroup-unreads articles))) (when gnus-alter-articles-to-read-function (setq gnus-newsgroup-unreads - (sort + (sort (funcall gnus-alter-articles-to-read-function gnus-newsgroup-name gnus-newsgroup-unreads) '<))) @@ -4438,12 +4475,17 @@ If SELECT-ARTICLES, only select those articles from GROUP." (unless (memq (cdr type) uncompressed) (setq list (gnus-compress-sequence (set symbol (sort list '<)) t))) - + (when (gnus-check-backend-function 'request-set-mark gnus-newsgroup-name) + ;; propagate flags to server, with the following exceptions: ;; uncompressed:s are not proper flags (they are cons cells) ;; cache is a internal gnus flag - (unless (memq (cdr type) (cons 'cache uncompressed)) + ;; download are local to one gnus installation (well) + ;; unsend are for nndraft groups only + ;; xxx: generality of this? this suits nnimap anyway + (unless (memq (cdr type) (append '(cache download unsend) + uncompressed)) (let* ((old (cdr (assq (cdr type) (gnus-info-marks info)))) (del (gnus-remove-from-range (gnus-copy-sequence old) list)) (add (gnus-remove-from-range @@ -4452,7 +4494,7 @@ If SELECT-ARTICLES, only select those articles from GROUP." (push (list add 'add (list (cdr type))) delta-marks)) (when del (push (list del 'del (list (cdr type))) delta-marks))))) - + (when list (push (cons (cdr type) list) newmarked))) @@ -4460,7 +4502,7 @@ If SELECT-ARTICLES, only select those articles from GROUP." (unless (gnus-check-group gnus-newsgroup-name) (error "Can't open server for %s" gnus-newsgroup-name)) (gnus-request-set-mark gnus-newsgroup-name delta-marks)) - + ;; Enter these new marks into the info of the group. (if (nthcdr 3 info) (setcar (nthcdr 3 info) newmarked) @@ -4476,7 +4518,7 @@ If SELECT-ARTICLES, only select those articles from GROUP." (setcdr (nthcdr i info) nil))))))) (defun gnus-set-mode-line (where) - "This function sets the mode line of the article or summary buffers. + "Set the mode line of the article or summary buffers. If WHERE is `summary', the summary mode line format will be used." ;; Is this mode line one we keep updated? (when (and (memq where gnus-updated-mode-lines) @@ -4492,9 +4534,9 @@ If WHERE is `summary', the summary mode line format will be used." (let* ((mformat (symbol-value (intern (format "gnus-%s-mode-line-format-spec" where)))) - (gnus-tmp-group-name (gnus-group-name-decode + (gnus-tmp-group-name (gnus-group-name-decode gnus-newsgroup-name - (gnus-group-name-charset + (gnus-group-name-charset nil gnus-newsgroup-name))) (gnus-tmp-article-number (or gnus-current-article 0)) @@ -4733,19 +4775,20 @@ The resulting hash table is returned, or nil if no Xrefs were found." (progn (goto-char p) (if (search-forward "\nsubject: " nil t) - (buffer-substring (match-end 0) (std11-field-end)) + (nnheader-header-value) "(none)")) ;; From. (progn (goto-char p) - (if (search-forward "\nfrom: " nil t) - (buffer-substring (match-end 0) (std11-field-end)) + (if (or (search-forward "\nfrom: " nil t) + (search-forward "\nfrom:" nil t)) + (nnheader-header-value) "(nobody)")) ;; Date. (progn (goto-char p) (if (search-forward "\ndate: " nil t) - (buffer-substring (match-end 0) (std11-field-end)) + (nnheader-header-value) "")) ;; Message-ID. (progn @@ -4766,7 +4809,7 @@ The resulting hash table is returned, or nil if no Xrefs were found." (progn (setq end (point)) (prog1 - (buffer-substring (match-end 0) (std11-field-end)) + (nnheader-header-value) (setq ref (buffer-substring (progn @@ -4780,9 +4823,7 @@ The resulting hash table is returned, or nil if no Xrefs were found." ;; were no references and the in-reply-to header looks ;; promising. (if (and (search-forward "\nin-reply-to: " nil t) - (setq in-reply-to - (buffer-substring (match-end 0) - (std11-field-end))) + (setq in-reply-to (nnheader-header-value)) (string-match "<[^>]+>" in-reply-to)) (let (ref2) (setq ref (substring in-reply-to (match-beginning 0) @@ -4812,7 +4853,7 @@ The resulting hash table is returned, or nil if no Xrefs were found." (progn (goto-char p) (and (search-forward "\nxref: " nil t) - (buffer-substring (match-end 0) (std11-field-end)))) + (nnheader-header-value))) ;; Extra. (when gnus-extra-headers (let ((extra gnus-extra-headers) @@ -4821,16 +4862,12 @@ The resulting hash table is returned, or nil if no Xrefs were found." (goto-char p) (when (search-forward (concat "\n" (symbol-name (car extra)) ": ") nil t) - (push (cons (car extra) - (buffer-substring (match-end 0) - (std11-field-end))) - out)) + (push (cons (car extra) (nnheader-header-value)) out)) (pop extra)) out)))) (goto-char p) (if (and (search-forward "\ncontent-type: " nil t) - (setq ctype - (buffer-substring (match-end 0) (std11-field-end)))) + (setq ctype (nnheader-header-value))) (mime-entity-set-content-type-internal header (mime-parse-Content-Type ctype))) (when (equal id ref) @@ -4853,8 +4890,9 @@ The resulting hash table is returned, or nil if no Xrefs were found." (defun gnus-get-newsgroup-headers-xover (sequence &optional force-new dependencies group also-fetch-heads) - "Parse the news overview data in the server buffer, and return a -list of headers that match SEQUENCE (see `nntp-retrieve-headers')." + "Parse the news overview data in the server buffer. +Return a list of headers that match SEQUENCE (see +`nntp-retrieve-headers')." ;; Get the Xref when the users reads the articles since most/some ;; NNTP servers do not include Xrefs when using XOVER. (setq gnus-article-internal-prepare-hook '(gnus-article-get-xrefs)) @@ -5172,8 +5210,7 @@ articles with that subject. If BACKWARD, search backward instead." "Center point in window and redisplay frame. Also do horizontal recentering." (interactive "P") - (when (and nil - gnus-auto-center-summary + (when (and gnus-auto-center-summary (not (eq gnus-auto-center-summary 'vertical))) (gnus-horizontal-recenter)) (recenter n)) @@ -6332,7 +6369,7 @@ articles that are younger than AGE days." (while (not days-got) (setq days (if younger (read-string "Limit to articles within (in days): ") - (read-string "Limit to articles old than (in days): "))) + (read-string "Limit to articles older than (in days): "))) (when (> (length days) 0) (setq days (read days))) (if (numberp days) @@ -6365,12 +6402,12 @@ articles that are younger than AGE days." (let ((header (intern (gnus-completing-read - (symbol-name (car gnus-extra-headers)) - "Limit extra header:" - (mapcar (lambda (x) + (symbol-name (car gnus-extra-headers)) + "Limit extra header:" + (mapcar (lambda (x) (cons (symbol-name x) x)) gnus-extra-headers) - nil + nil t)))) (list header (read-string (format "Limit to header %s (regexp): " header))))) @@ -6884,7 +6921,8 @@ of what's specified by the `gnus-refer-thread-limit' variable." ((eq 'current gnus-refer-article-method) (list gnus-current-select-method)) ;; List of select methods. - ((not (stringp (cadr gnus-refer-article-method))) + ((not (and (symbolp (car gnus-refer-article-method)) + (assq (car gnus-refer-article-method) nnoo-definition-alist))) (let (out) (dolist (method gnus-refer-article-method) (push (if (eq 'current method) @@ -6934,7 +6972,10 @@ to guess what the document format is." ;; the parent article. (when (setq to-address (or (message-fetch-field "reply-to") (message-fetch-field "from"))) - (setq params (append (list (cons 'to-address to-address))))) + (setq params (append + (list (cons 'to-address + (funcall gnus-decode-encoded-word-function + to-address)))))) (setq dig (nnheader-set-temp-buffer " *gnus digest buffer*")) (insert-buffer-substring gnus-original-article-buffer) ;; Remove lines that may lead nndoc to misinterpret the @@ -7352,19 +7393,38 @@ to save in." (defun gnus-summary-show-article (&optional arg) "Force re-fetching of the current article. -If ARG (the prefix) is a number, show the article with the charset +If ARG (the prefix) is a number, show the article with the charset defined in `gnus-summary-show-article-charset-alist', or the charset inputed. -If ARG (the prefix) is non-nil and not a number, show the raw article +If ARG (the prefix) is non-nil and not a number, show the raw article without any article massaging functions being run." (interactive "P") - (cond + (cond ((numberp arg) - (let ((gnus-newsgroup-charset + (let ((gnus-newsgroup-charset (or (cdr (assq arg gnus-summary-show-article-charset-alist)) (read-coding-system "Charset: "))) (gnus-newsgroup-ignored-charsets 'gnus-all)) - (gnus-summary-select-article nil 'force))) + (gnus-summary-select-article nil 'force) + (let ((deps gnus-newsgroup-dependencies) + head header) + (save-excursion + (set-buffer gnus-original-article-buffer) + (save-restriction + (message-narrow-to-head) + (setq head (buffer-string))) + (with-temp-buffer + (insert (format "211 %d Article retrieved.\n" + (cdr gnus-article-current))) + (insert head) + (insert ".\n") + (let ((nntp-server-buffer (current-buffer))) + (setq header (car (gnus-get-newsgroup-headers deps t)))))) + (gnus-data-set-header + (gnus-data-find (cdr gnus-article-current)) + header) + (gnus-summary-update-article-line + (cdr gnus-article-current) header)))) ((not arg) ;; Select the article the normal way. (gnus-summary-select-article nil 'force)) @@ -7411,7 +7471,7 @@ If ARG is a negative number, hide the unwanted header lines." (setq hidden (if (numberp arg) (>= arg 0) - (save-restriction + (save-restriction (article-narrow-to-head) (gnus-article-hidden-text-p 'headers)))) (goto-char (point-min)) @@ -7649,7 +7709,7 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." (memq article gnus-newsgroup-dormant) (memq article gnus-newsgroup-unreads))) - (when gnus-preserve-marks + (when gnus-preserve-marks ;; Copy any marks over to the new group. (when (and (equal to-group gnus-newsgroup-name) (not (memq article gnus-newsgroup-unreads))) @@ -7841,6 +7901,9 @@ This will be the case if the article has both been mailed and posted." (expiry-wait (if now 'immediate (gnus-group-find-parameter gnus-newsgroup-name 'expiry-wait))) + (nnmail-expiry-target + (or (gnus-group-find-parameter gnus-newsgroup-name 'expiry-target) + nnmail-expiry-target)) es) (when expirable ;; There are expirable articles in this group, so we run them @@ -7856,19 +7919,19 @@ This will be the case if the article has both been mailed and posted." (setq es (gnus-request-expire-articles expirable gnus-newsgroup-name))) (setq es (gnus-request-expire-articles - expirable gnus-newsgroup-name)))) - (unless total - (setq gnus-newsgroup-expirable es)) - ;; We go through the old list of expirable, and mark all - ;; really expired articles as nonexistent. - (unless (eq es expirable) ;If nothing was expired, we don't mark. - (let ((gnus-use-cache nil)) - (while expirable - (unless (memq (car expirable) es) - (when (gnus-data-find (car expirable)) - (gnus-summary-mark-article - (car expirable) gnus-canceled-mark))) - (setq expirable (cdr expirable))))) + expirable gnus-newsgroup-name))) + (unless total + (setq gnus-newsgroup-expirable es)) + ;; We go through the old list of expirable, and mark all + ;; really expired articles as nonexistent. + (unless (eq es expirable) ;If nothing was expired, we don't mark. + (let ((gnus-use-cache nil)) + (while expirable + (unless (memq (car expirable) es) + (when (gnus-data-find (car expirable)) + (gnus-summary-mark-article + (car expirable) gnus-canceled-mark))) + (setq expirable (cdr expirable)))))) (gnus-message 6 "Expiring articles...done"))))) (defun gnus-summary-expire-articles-now () @@ -7895,6 +7958,8 @@ delete these instead." (unless (gnus-check-backend-function 'request-expire-articles gnus-newsgroup-name) (error "The current newsgroup does not support article deletion")) + (unless (gnus-check-server (gnus-find-method-for-group gnus-newsgroup-name)) + (error "Couldn't open server")) ;; Compute the list of articles to delete. (let ((articles (sort (copy-sequence (gnus-summary-work-articles n)) '<)) not-deleted) @@ -7940,6 +8005,8 @@ groups." 'ignore `(lambda (no-highlight) (let ((mail-parse-charset ',gnus-newsgroup-charset) + (message-options message-options) + (message-options-set-recipient) (mail-parse-ignored-charsets ',gnus-newsgroup-ignored-charsets)) (gnus-summary-edit-article-done @@ -7952,10 +8019,31 @@ groups." no-highlight) "Make edits to the current article permanent." (interactive) + (save-excursion + ;; The buffer restriction contains the entire article if it exists. + (when (article-goto-body) + (let ((lines (count-lines (point) (point-max))) + (length (- (point-max) (point))) + (case-fold-search t) + (body (copy-marker (point)))) + (goto-char (point-min)) + (when (re-search-forward "^content-length:[ \t]\\([0-9]+\\)" body t) + (delete-region (match-beginning 1) (match-end 1)) + (insert (number-to-string length))) + (goto-char (point-min)) + (when (re-search-forward + "^x-content-length:[ \t]\\([0-9]+\\)" body t) + (delete-region (match-beginning 1) (match-end 1)) + (insert (number-to-string length))) + (goto-char (point-min)) + (when (re-search-forward "^lines:[ \t]\\([0-9]+\\)" body t) + (delete-region (match-beginning 1) (match-end 1)) + (insert (number-to-string lines)))))) ;; Replace the article. (let ((buf (current-buffer))) (with-temp-buffer (insert-buffer-substring buf) + (if (and (not read-only) (not (gnus-request-replace-article (cdr gnus-article-current) (car gnus-article-current) @@ -8815,14 +8903,16 @@ is non-nil or the Subject: of both articles are the same." (unless (and message-id (not (equal message-id ""))) (error "No message-id in desired parent")) (gnus-with-article current-article - (goto-char (point-min)) - (if (re-search-forward "^References: " nil t) - (progn - (re-search-forward "^[^ \t]" nil t) - (forward-line -1) - (end-of-line) - (insert " " message-id)) - (insert "References: " message-id "\n"))) + (save-restriction + (goto-char (point-min)) + (message-narrow-to-head) + (if (re-search-forward "^References: " nil t) + (progn + (re-search-forward "^[^ \t]" nil t) + (forward-line -1) + (end-of-line) + (insert " " message-id)) + (insert "References: " message-id "\n")))) (set-buffer gnus-summary-buffer) (gnus-summary-unmark-all-processable) (gnus-summary-update-article current-article) @@ -9029,14 +9119,14 @@ Argument REVERSE means reverse order." (defun gnus-summary-sort-by-author (&optional reverse) "Sort the summary buffer by author name alphabetically. -If case-fold-search is non-nil, case of letters is ignored. +If `case-fold-search' is non-nil, case of letters is ignored. Argument REVERSE means reverse order." (interactive "P") (gnus-summary-sort 'author reverse)) (defun gnus-summary-sort-by-subject (&optional reverse) "Sort the summary buffer by subject alphabetically. `Re:'s are ignored. -If case-fold-search is non-nil, case of letters is ignored. +If `case-fold-search' is non-nil, case of letters is ignored. Argument REVERSE means reverse order." (interactive "P") (gnus-summary-sort 'subject reverse)) @@ -9063,7 +9153,7 @@ Argument REVERSE means reverse order." "Sort the summary buffer by article length. Argument REVERSE means reverse order." (interactive "P") - (gnus-summary-sort 'chars reverse)) + (gnus-summary-sort 'chars reverse)) (defun gnus-summary-sort (predicate reverse) "Sort summary buffer by PREDICATE. REVERSE means reverse order." @@ -9074,6 +9164,8 @@ Argument REVERSE means reverse order." thread `(lambda (t1 t2) (,thread t2 t1)))) + (gnus-sort-gathered-threads-function + gnus-thread-sort-functions) (gnus-article-sort-functions (if (not reverse) article @@ -9132,6 +9224,7 @@ If N is a negative number, pipe the N previous articles. If N is nil and any articles have been marked with the process mark, pipe those articles instead." (interactive "P") + (require 'gnus-art) (let ((gnus-default-article-saver 'gnus-summary-save-in-pipe)) (gnus-summary-save-article arg t)) (gnus-configure-windows 'pipe)) @@ -9143,6 +9236,7 @@ If N is a negative number, save the N previous articles. If N is nil and any articles have been marked with the process mark, save those articles instead." (interactive "P") + (require 'gnus-art) (let ((gnus-default-article-saver 'gnus-summary-save-in-mail)) (gnus-summary-save-article arg))) @@ -9153,6 +9247,7 @@ If N is a negative number, save the N previous articles. If N is nil and any articles have been marked with the process mark, save those articles instead." (interactive "P") + (require 'gnus-art) (let ((gnus-default-article-saver 'gnus-summary-save-in-rmail)) (gnus-summary-save-article arg))) @@ -9163,6 +9258,7 @@ If N is a negative number, save the N previous articles. If N is nil and any articles have been marked with the process mark, save those articles instead." (interactive "P") + (require 'gnus-art) (let ((gnus-default-article-saver 'gnus-summary-save-in-file)) (gnus-summary-save-article arg))) @@ -9173,6 +9269,7 @@ If N is a negative number, save the N previous articles. If N is nil and any articles have been marked with the process mark, save those articles instead." (interactive "P") + (require 'gnus-art) (let ((gnus-default-article-saver 'gnus-summary-write-to-file)) (gnus-summary-save-article arg))) @@ -9183,6 +9280,7 @@ If N is a negative number, save the N previous articles. If N is nil and any articles have been marked with the process mark, save those articles instead." (interactive "P") + (require 'gnus-art) (let ((gnus-default-article-saver 'gnus-summary-save-body-in-file)) (gnus-summary-save-article arg))) @@ -9207,7 +9305,7 @@ save those articles instead." (set-buffer gnus-original-article-buffer) (save-restriction (nnheader-narrow-to-headers) - (while methods + (while (and methods (not split-name)) (goto-char (point-min)) (setq method (pop methods)) (setq match (car method)) @@ -9226,7 +9324,7 @@ save those articles instead." (save-restriction (widen) (setq result (eval match))))) - (setq split-name (append (cdr method) split-name)) + (setq split-name (cdr method)) (cond ((stringp result) (push (expand-file-name result gnus-article-save-directory) @@ -9295,8 +9393,14 @@ save those articles instead." "Save parts matching TYPE to DIR. If REVERSE, save parts that do not match TYPE." (interactive - (list (read-string "Save parts of type: " "image/.*") - (read-file-name "Save to directory: " nil nil t) + (list (read-string "Save parts of type: " + (or (car gnus-summary-save-parts-type-history) + gnus-summary-save-parts-default-mime) + 'gnus-summary-save-parts-type-history) + (setq gnus-summary-save-parts-last-directory + (read-file-name "Save to directory: " + gnus-summary-save-parts-last-directory + nil t)) current-prefix-arg)) (gnus-summary-iterate n (let ((gnus-display-mime-function nil) @@ -9304,10 +9408,12 @@ If REVERSE, save parts that do not match TYPE." (gnus-summary-select-article)) (save-excursion (set-buffer gnus-article-buffer) - (let ((handles (or (mm-dissect-buffer) (mm-uu-dissect)))) + (let ((handles (or gnus-article-mime-handles + (mm-dissect-buffer) (mm-uu-dissect)))) (when handles (gnus-summary-save-parts-1 type dir handles reverse) - (mm-destroy-parts handles)))))) + (unless gnus-article-mime-handles ;; Don't destroy this case. + (mm-destroy-parts handles))))))) (defun gnus-summary-save-parts-1 (type dir handle reverse) (if (stringp (car handle)) @@ -9321,7 +9427,9 @@ If REVERSE, save parts that do not match TYPE." (or (mail-content-type-get (mm-handle-disposition handle) 'filename) - (concat gnus-newsgroup-name "." gnus-current-article))) + (concat gnus-newsgroup-name + "." (number-to-string + (cdr gnus-article-current))))) dir))) (unless (file-exists-p file) (mm-save-part-to-file handle file)))))) @@ -9515,8 +9623,8 @@ If REVERSE, save parts that do not match TYPE." ;;; (defun gnus-highlight-selected-summary () + "Highlight selected article in summary buffer." ;; Added by Per Abrahamsen . - ;; Highlight selected article in summary buffer (when gnus-summary-selected-face (save-excursion (let* ((beg (progn (beginning-of-line) (point))) @@ -9611,23 +9719,32 @@ If REVERSE, save parts that do not match TYPE." (if compute read (save-excursion - (set-buffer gnus-group-buffer) - (gnus-undo-register - `(progn - (gnus-info-set-marks ',info ',(gnus-info-marks info) t) - (gnus-info-set-read ',info ',(gnus-info-read info)) - (gnus-get-unread-articles-in-group ',info (gnus-active ,group)) - (gnus-group-update-group ,group t)))) - ;; Propagate the read marks to the backend. - (if (gnus-check-backend-function 'request-set-mark group) - (let ((del (gnus-remove-from-range (gnus-info-read info) read)) - (add (gnus-remove-from-range read (gnus-info-read info)))) - (when (or add del) - (unless (gnus-check-group group) - (error "Can't open server for %s" group)) - (gnus-request-set-mark - group (delq nil (list (if add (list add 'add '(read))) - (if del (list del 'del '(read))))))))) + (let (setmarkundo) + ;; Propagate the read marks to the backend. + (when (gnus-check-backend-function 'request-set-mark group) + (let ((del (gnus-remove-from-range (gnus-info-read info) read)) + (add (gnus-remove-from-range read (gnus-info-read info)))) + (when (or add del) + (unless (gnus-check-group group) + (error "Can't open server for %s" group)) + (gnus-request-set-mark + group (delq nil (list (if add (list add 'add '(read))) + (if del (list del 'del '(read)))))) + (setq setmarkundo + `(gnus-request-set-mark + ,group + ',(delq nil (list + (if del (list del 'add '(read))) + (if add (list add 'del '(read)))))))))) + (set-buffer gnus-group-buffer) + (gnus-undo-register + `(progn + (gnus-info-set-marks ',info ',(gnus-info-marks info) t) + (gnus-info-set-read ',info ',(gnus-info-read info)) + (gnus-get-unread-articles-in-group ',info + (gnus-active ,group)) + (gnus-group-update-group ,group t) + ,setmarkundo)))) ;; Enter this list into the group info. (gnus-info-set-read info read) ;; Set the number of unread articles in gnus-newsrc-hashtb. @@ -9762,7 +9879,7 @@ If REVERSE, save parts that do not match TYPE." (if (setq f (cdr (assq 'after-method mime-acting-situation-to-override))) (eval f) - ))) + ))) (mime-add-condition 'action '((type . multipart) @@ -9781,7 +9898,7 @@ If REVERSE, save parts that do not match TYPE." (setq gnus-newsgroup-charset nil) (let* ((name (and gnus-newsgroup-name (gnus-group-real-name gnus-newsgroup-name))) - (ignored-charsets + (ignored-charsets (or gnus-newsgroup-ephemeral-ignored-charsets (append (and gnus-newsgroup-name @@ -9809,7 +9926,7 @@ If REVERSE, save parts that do not match TYPE." charset (cadr elem)))) charset))) gnus-default-charset)) - (set (make-local-variable 'gnus-newsgroup-ignored-charsets) + (set (make-local-variable 'gnus-newsgroup-ignored-charsets) ignored-charsets)))) ;;; @@ -9831,17 +9948,17 @@ treated as multipart/mixed." (interactive (list (gnus-summary-article-number))) (gnus-with-article article (message-narrow-to-head) + (message-remove-header "Mime-Version") (goto-char (point-max)) + (insert "Mime-Version: 1.0\n") (widen) (when (search-forward "\n--" nil t) (let ((separator (buffer-substring (point) (gnus-point-at-eol)))) (message-narrow-to-head) - (message-remove-header "Mime-Version") (message-remove-header "Content-Type") (goto-char (point-max)) (insert (format "Content-Type: multipart/mixed; boundary=\"%s\"\n" separator)) - (insert "Mime-Version: 1.0\n") (widen)))) (let (gnus-mark-article-hook) (gnus-summary-select-article t t nil article))) @@ -9904,7 +10021,7 @@ treated as multipart/mixed." (defun gnus-wheel-install () "Enable mouse wheel support on summary window." (when gnus-use-wheel - (let ((keys + (let ((keys '([(mouse-4)] [(shift mouse-4)] [(mouse-5)] [(shift mouse-5)]))) (dolist (key keys) (define-key gnus-summary-mode-map key @@ -9933,10 +10050,10 @@ groups." (let ((armor-start (match-beginning 0))) (if (and (pgg-decrypt-region armor-start (point-max)) (or force (not (gnus-group-read-only-p)))) - (let ((inhibit-read-only t) + (let ((inhibit-read-only t) buffer-read-only) (delete-region armor-start - (progn + (progn (re-search-forward "^-+END PGP" nil t) (beginning-of-line 2) (point))) @@ -9986,8 +10103,8 @@ groups." mark (car lway) lway name))) (setq func (eval func)) (define-key map (nth 4 lway) func))))) - -(defun gnus-summary-make-marking-command-1 (mark way lway name) + +(defun gnus-summary-make-marking-command-1 (mark way lway name) `(defun ,(intern (format "gnus-summary-put-mark-as-%s%s" name (if (eq way 'nomove) @@ -10003,7 +10120,7 @@ returned." name (car (cdr lway))) (interactive "p") (gnus-summary-generic-mark n ,mark ',(nth 2 lway) ,(nth 3 lway)))) - + (defun gnus-summary-generic-mark (n mark move unread) "Mark N articles with MARK." (unless (eq major-mode 'gnus-summary-mode) diff --git a/lisp/gnus-topic.el b/lisp/gnus-topic.el index 63490a6..22fc71b 100644 --- a/lisp/gnus-topic.el +++ b/lisp/gnus-topic.el @@ -193,8 +193,9 @@ If TOPIC, start with that topic." (beginning-of-line) (get-text-property (point) 'gnus-active))) -(defun gnus-topic-find-groups (topic &optional level all lowest) - "Return entries for all visible groups in TOPIC." +(defun gnus-topic-find-groups (topic &optional level all lowest recursive) + "Return entries for all visible groups in TOPIC. +If RECURSIVE is t, return groups in its subtopics too." (let ((groups (cdr (assoc topic gnus-topic-alist))) info clevel unread group params visible-groups entry active) (setq lowest (or lowest 1)) @@ -232,7 +233,18 @@ If TOPIC, start with that topic." (cdr (assq 'visible params))) ;; Add this group to the list of visible groups. (push (or entry group) visible-groups))) - (nreverse visible-groups))) + (setq visible-groups (nreverse visible-groups)) + (when recursive + (if (eq recursive t) + (setq recursive (cdr (gnus-topic-find-topology topic)))) + (mapcar (lambda (topic-topology) + (setq visible-groups + (nconc visible-groups + (gnus-topic-find-groups + (caar topic-topology) + level all lowest topic-topology)))) + (cdr recursive))) + visible-groups)) (defun gnus-topic-previous-topic (topic) "Return the previous topic on the same level as TOPIC." @@ -506,7 +518,7 @@ articles in the topic and its subtopics." (let ((data (cadr (gnus-topic-find-topology topic)))) (setcdr data (list (if insert 'visible 'invisible) - hide + (caddr data) (cadddr data)))) (if total-remove (setq gnus-topic-alist @@ -1020,7 +1032,10 @@ articles in the topic and its subtopics." (when (gnus-visual-p 'topic-menu 'menu) (gnus-topic-make-menu-bar)) (gnus-set-format 'topic t) - (gnus-add-minor-mode 'gnus-topic-mode " Topic" gnus-topic-mode-map) + (gnus-add-minor-mode 'gnus-topic-mode " Topic" + gnus-topic-mode-map nil (lambda (&rest junk) + (interactive) + (gnus-topic-mode nil t))) (add-hook 'gnus-group-catchup-group-hook 'gnus-topic-update-topic) (set (make-local-variable 'gnus-group-prepare-function) 'gnus-group-prepare-topics) @@ -1046,8 +1061,7 @@ articles in the topic and its subtopics." ;; Remove topic infestation. (unless gnus-topic-mode (remove-hook 'gnus-summary-exit-hook 'gnus-topic-update-topic) - (remove-hook 'gnus-group-change-level-function - 'gnus-topic-change-level) + (setq gnus-group-change-level-function nil) (remove-hook 'gnus-check-bogus-groups-hook 'gnus-topic-clean-alist) (setq gnus-group-prepare-function 'gnus-group-prepare-flat) (setq gnus-group-sort-alist-function 'gnus-group-sort-flat)) @@ -1065,7 +1079,8 @@ If performed over a topic line, toggle folding the topic." (if (gnus-group-topic-p) (let ((gnus-group-list-mode (if all (cons (if (numberp all) all 7) t) gnus-group-list-mode))) - (gnus-topic-fold all)) + (gnus-topic-fold all) + (gnus-dribble-touch)) (gnus-group-select-group all))) (defun gnus-mouse-pick-topic (e) @@ -1116,7 +1131,7 @@ When used interactively, PARENT will be the topic under point." (unless parent (setq parent (caar gnus-topic-topology))) (let ((top (cdr (gnus-topic-find-topology parent))) - (full-topic (or full-topic `((,topic visible))))) + (full-topic (or full-topic (list (list topic 'visible nil nil))))) (unless top (error "No such parent topic: %s" parent)) (if previous @@ -1207,7 +1222,12 @@ If COPYP, copy the groups instead." (gnus-topic-find-topology topic nil nil gnus-topic-topology) (gnus-topic-enter-dribble)) (gnus-group-kill-group n discard) - (gnus-topic-update-topic))) + (if (not (gnus-group-topic-p)) + (gnus-topic-update-topic) + ;; Move up one line so that we update the right topic. + (forward-line -1) + (gnus-topic-update-topic) + (forward-line 1)))) (defun gnus-topic-yank-group (&optional arg) "Yank the last topic." @@ -1257,43 +1277,64 @@ If COPYP, copy the groups instead." (setq alist (cdr alist)))))) (gnus-topic-update-topic))) -(defun gnus-topic-hide-topic () - "Hide the current topic." - (interactive) +(defun gnus-topic-hide-topic (&optional permanent) + "Hide the current topic. +If PERMANENT, make it stay hidden in subsequent sessions as well." + (interactive "P") (when (gnus-current-topic) (gnus-topic-goto-topic (gnus-current-topic)) + (if permanent + (setcar (cddr + (cadr + (gnus-topic-find-topology (gnus-current-topic)))) + 'hidden)) (gnus-topic-remove-topic nil nil))) -(defun gnus-topic-show-topic () - "Show the hidden topic." - (interactive) +(defun gnus-topic-show-topic (&optional permanent) + "Show the hidden topic. +If PERMANENT, make it stay shown in subsequent sessions as well." + (interactive "P") (when (gnus-group-topic-p) - (gnus-topic-remove-topic t nil))) - -(defun gnus-topic-mark-topic (topic &optional unmark) - "Mark all groups in the topic with the process mark." - (interactive (list (gnus-group-topic-name))) + (if (not permanent) + (gnus-topic-remove-topic t nil) + (let ((topic + (gnus-topic-find-topology + (completing-read "Show topic: " gnus-topic-alist nil t)))) + (setcar (cddr (cadr topic)) nil) + (setcar (cdr (cadr topic)) 'visible) + (gnus-group-list-groups))))) + +(defun gnus-topic-mark-topic (topic &optional unmark recursive) + "Mark all groups in the TOPIC with the process mark. +If RECURSIVE is t, mark its subtopics too." + (interactive (list (gnus-group-topic-name) + nil + (and current-prefix-arg t))) (if (not topic) (call-interactively 'gnus-group-mark-group) (save-excursion - (let ((groups (gnus-topic-find-groups topic gnus-level-killed t))) + (let ((groups (gnus-topic-find-groups topic gnus-level-killed t nil + recursive))) (while groups (funcall (if unmark 'gnus-group-remove-mark 'gnus-group-set-mark) (gnus-info-group (nth 2 (pop groups))))))))) -(defun gnus-topic-unmark-topic (topic &optional unmark) - "Remove the process mark from all groups in the topic." - (interactive (list (gnus-group-topic-name))) +(defun gnus-topic-unmark-topic (topic &optional dummy recursive) + "Remove the process mark from all groups in the TOPIC. +If RECURSIVE is t, unmark its subtopics too." + (interactive (list (gnus-group-topic-name) + nil + (and current-prefix-arg t))) (if (not topic) (call-interactively 'gnus-group-unmark-group) - (gnus-topic-mark-topic topic t))) + (gnus-topic-mark-topic topic t recursive))) (defun gnus-topic-get-new-news-this-topic (&optional n) "Check for new news in the current topic." (interactive "P") (if (not (gnus-group-topic-p)) (gnus-group-get-new-news-this-group n) - (gnus-topic-mark-topic (gnus-group-topic-name)) + (gnus-topic-mark-topic (gnus-group-topic-name) nil (and n t)) (gnus-group-get-new-news-this-group))) (defun gnus-topic-move-matching (regexp topic &optional copyp) diff --git a/lisp/gnus-undo.el b/lisp/gnus-undo.el index 8823747..7dd333f 100644 --- a/lisp/gnus-undo.el +++ b/lisp/gnus-undo.el @@ -1,5 +1,7 @@ ;;; gnus-undo.el --- minor mode for undoing in Gnus -;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index 5b70701..4aec9e3 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -37,7 +37,6 @@ (require 'custom) (require 'nnheader) -(require 'message) (require 'time-date) (eval-and-compile @@ -118,9 +117,9 @@ (static-cond ((fboundp 'point-at-bol) - (fset 'gnus-point-at-bol 'point-at-bol)) + (defalias 'gnus-point-at-bol 'point-at-bol)) ((fboundp 'line-beginning-position) - (fset 'gnus-point-at-bol 'line-beginning-position)) + (defalias 'gnus-point-at-bol 'line-beginning-position)) (t (defun gnus-point-at-bol () "Return point at the beginning of the line." @@ -132,9 +131,9 @@ )) (static-cond ((fboundp 'point-at-eol) - (fset 'gnus-point-at-eol 'point-at-eol)) + (defalias 'gnus-point-at-eol 'point-at-eol)) ((fboundp 'line-end-position) - (fset 'gnus-point-at-eol 'line-end-position)) + (defalias 'gnus-point-at-eol 'line-end-position)) (t (defun gnus-point-at-eol () "Return point at the end of the line." @@ -343,11 +342,11 @@ Cache the result as a text property stored in DATE." time))))) (defsubst gnus-time-iso8601 (time) - "Return a string of TIME in YYMMDDTHHMMSS format." + "Return a string of TIME in YYYYMMDDTHHMMSS format." (format-time-string "%Y%m%dT%H%M%S" time)) (defun gnus-date-iso8601 (date) - "Convert the DATE to YYMMDDTHHMMSS." + "Convert the DATE to YYYYMMDDTHHMMSS." (condition-case () (gnus-time-iso8601 (gnus-date-get-time date)) (error ""))) @@ -483,14 +482,6 @@ If N, return the Nth ancestor instead." (file-name-nondirectory file)))) (copy-file file to)) -(defun gnus-kill-all-overlays () - "Delete all overlays in the current buffer." - (let* ((overlayss (overlay-lists)) - (buffer-read-only nil) - (overlays (delq nil (nconc (car overlayss) (cdr overlayss))))) - (while overlays - (delete-overlay (pop overlays))))) - (defvar gnus-work-buffer " *gnus work*") (defun gnus-set-work-buffer () @@ -1011,11 +1002,9 @@ Entries without port tokens default to DEFAULTPORT." (throw 'found nil))) t)) -(defun gnus-write-active-file-as-coding-system (coding-system file hashtb - &optional - full-names) - (let ((output-coding-system coding-system) - (coding-system-for-write coding-system)) +(defun gnus-write-active-file (file hashtb &optional full-names) + (let ((output-coding-system nnmail-active-file-coding-system) + (coding-system-for-write nnmail-active-file-coding-system)) (with-temp-file file (mapatoms (lambda (sym) @@ -1034,6 +1023,47 @@ Entries without port tokens default to DEFAULTPORT." (while (search-backward "\\." nil t) (delete-char 1))))) +(if (fboundp 'union) + (defalias 'gnus-union 'union) + (defun gnus-union (l1 l2) + "Set union of lists L1 and L2." + (cond ((null l1) l2) + ((null l2) l1) + ((equal l1 l2) l1) + (t + (or (>= (length l1) (length l2)) + (setq l1 (prog1 l2 (setq l2 l1)))) + (while l2 + (or (member (car l2) l1) + (push (car l2) l1)) + (pop l2)) + l1)))) + +(defun gnus-add-text-properties-when + (property value start end properties &optional object) + "Like `gnus-add-text-properties', only applied on where PROPERTY is VALUE." + (let (point) + (while (and start + (< start end) ;; XEmacs will loop for every when start=end. + (setq point (text-property-not-all start end property value))) + (gnus-add-text-properties start point properties object) + (setq start (text-property-any point end property value))) + (if start + (gnus-add-text-properties start end properties object)))) + +(defun gnus-remove-text-properties-when + (property value start end properties &optional object) + "Like `remove-text-properties', only applied on where PROPERTY is VALUE." + (let (point) + (while (and start + (< start end) + (setq point (text-property-not-all start end property value))) + (remove-text-properties start point properties object) + (setq start (text-property-any point end property value))) + (if start + (remove-text-properties start end properties object)) + t)) + (provide 'gnus-util) ;;; gnus-util.el ends here diff --git a/lisp/gnus-uu.el b/lisp/gnus-uu.el index 74ec1f4..993914b 100644 --- a/lisp/gnus-uu.el +++ b/lisp/gnus-uu.el @@ -1882,7 +1882,7 @@ is t." (let ((map (make-sparse-keymap))) (set-keymap-parent map (current-local-map)) (use-local-map map)) - (local-set-key "\C-c\C-c" 'gnus-summary-edit-article-done) + ;;(local-set-key "\C-c\C-c" 'gnus-summary-edit-article-done) (local-set-key "\C-c\C-c" 'gnus-uu-post-news-inews) (local-set-key "\C-c\C-s" 'gnus-uu-post-news-inews) (local-set-key "\C-c\C-i" 'gnus-uu-post-insert-binary-in-article) diff --git a/lisp/gnus-vers.el b/lisp/gnus-vers.el index 77ce182..f22ee9f 100644 --- a/lisp/gnus-vers.el +++ b/lisp/gnus-vers.el @@ -31,16 +31,16 @@ (require 'product) (provide 'gnus-vers) -(defconst gnus-revision-number "09" +(defconst gnus-revision-number "00" "Revision number for this version of gnus.") ;; Product information of this gnus. (product-provide 'gnus-vers (product-define "T-gnus" nil - (list 6 14 5 + (list 6 14 6 (string-to-number gnus-revision-number)))) -(defconst gnus-original-version-number "5.8.7" +(defconst gnus-original-version-number "5.8.8" "Version number for this version of Gnus.") (provide 'running-pterodactyl-gnus-0_73-or-later) diff --git a/lisp/gnus-win.el b/lisp/gnus-win.el index 6a9ce29..51934fd 100644 --- a/lisp/gnus-win.el +++ b/lisp/gnus-win.el @@ -286,127 +286,128 @@ See the Gnus manual for an explanation of the syntax used.") (defun gnus-configure-frame (split &optional window) "Split WINDOW according to SPLIT." - (unless window - (setq window (or (get-buffer-window (current-buffer)) (selected-window)))) - (select-window window) - ;; This might be an old-stylee buffer config. - (when (vectorp split) - (setq split (append split nil))) - (when (or (consp (car split)) - (vectorp (car split))) - (push 1.0 split) - (push 'vertical split)) - ;; The SPLIT might be something that is to be evaled to - ;; return a new SPLIT. - (while (and (not (assq (car split) gnus-window-to-buffer)) - (gnus-functionp (car split))) - (setq split (eval split))) - (let* ((type (car split)) - (subs (cddr split)) - (len (if (eq type 'horizontal) (window-width) (window-height))) - (total 0) - (window-min-width (or gnus-window-min-width window-min-width)) - (window-min-height (or gnus-window-min-height window-min-height)) - s result new-win rest comp-subs size sub) - (cond - ;; Nothing to do here. - ((null split)) - ;; Don't switch buffers. - ((null type) - (and (memq 'point split) window)) - ;; This is a buffer to be selected. - ((not (memq type '(frame horizontal vertical))) - (let ((buffer (cond ((stringp type) type) - (t (cdr (assq type gnus-window-to-buffer)))))) - (unless buffer - (error "Invalid buffer type: %s" type)) - (let ((buf (gnus-get-buffer-create - (gnus-window-to-buffer-helper buffer)))) - (if (eq buf (window-buffer (selected-window))) (set-buffer buf) - (switch-to-buffer buf))) - (when (memq 'frame-focus split) - (setq gnus-window-frame-focus window)) - ;; We return the window if it has the `point' spec. - (and (memq 'point split) window))) - ;; This is a frame split. - ((eq type 'frame) - (unless gnus-frame-list - (setq gnus-frame-list (list (window-frame - (get-buffer-window (current-buffer)))))) - (let ((i 0) - params frame fresult) - (while (< i (length subs)) - ;; Frame parameter is gotten from the sub-split. - (setq params (cadr (elt subs i))) - ;; It should be a list. - (unless (listp params) - (setq params nil)) - ;; Create a new frame? - (unless (setq frame (elt gnus-frame-list i)) - (nconc gnus-frame-list (list (setq frame (make-frame params)))) - (push frame gnus-created-frames)) - ;; Is the old frame still alive? - (unless (frame-live-p frame) - (setcar (nthcdr i gnus-frame-list) - (setq frame (make-frame params)))) - ;; Select the frame in question and do more splits there. - (select-frame frame) - (setq fresult (or (gnus-configure-frame (elt subs i)) fresult)) - (incf i)) - ;; Select the frame that has the selected buffer. - (when fresult - (select-frame (window-frame fresult))))) - ;; This is a normal split. - (t - (when (> (length subs) 0) - ;; First we have to compute the sizes of all new windows. - (while subs - (setq sub (append (pop subs) nil)) - (while (and (not (assq (car sub) gnus-window-to-buffer)) - (gnus-functionp (car sub))) - (setq sub (eval sub))) - (when sub - (push sub comp-subs) - (setq size (cadar comp-subs)) - (cond ((equal size 1.0) - (setq rest (car comp-subs)) - (setq s 0)) - ((floatp size) - (setq s (floor (* size len)))) - ((integerp size) - (setq s size)) - (t - (error "Invalid size: %s" size))) - ;; Try to make sure that we are inside the safe limits. - (cond ((zerop s)) - ((eq type 'horizontal) - (setq s (max s window-min-width))) - ((eq type 'vertical) - (setq s (max s window-min-height)))) - (setcar (cdar comp-subs) s) - (incf total s))) - ;; Take care of the "1.0" spec. - (if rest - (setcar (cdr rest) (- len total)) - (error "No 1.0 specs in %s" split)) - ;; The we do the actual splitting in a nice recursive - ;; fashion. - (setq comp-subs (nreverse comp-subs)) - (while comp-subs - (if (null (cdr comp-subs)) - (setq new-win window) - (setq new-win - (split-window window (cadar comp-subs) - (eq type 'horizontal)))) - (setq result (or (gnus-configure-frame - (car comp-subs) window) - result)) - (select-window new-win) - (setq window new-win) - (setq comp-subs (cdr comp-subs)))) - ;; Return the proper window, if any. - (when result - (select-window result)))))) + (let ((current-window + (or (get-buffer-window (current-buffer)) (selected-window)))) + (unless window + (setq window current-window)) + (select-window window) + ;; This might be an old-stylee buffer config. + (when (vectorp split) + (setq split (append split nil))) + (when (or (consp (car split)) + (vectorp (car split))) + (push 1.0 split) + (push 'vertical split)) + ;; The SPLIT might be something that is to be evaled to + ;; return a new SPLIT. + (while (and (not (assq (car split) gnus-window-to-buffer)) + (gnus-functionp (car split))) + (setq split (eval split))) + (let* ((type (car split)) + (subs (cddr split)) + (len (if (eq type 'horizontal) (window-width) (window-height))) + (total 0) + (window-min-width (or gnus-window-min-width window-min-width)) + (window-min-height (or gnus-window-min-height window-min-height)) + s result new-win rest comp-subs size sub) + (cond + ;; Nothing to do here. + ((null split)) + ;; Don't switch buffers. + ((null type) + (and (memq 'point split) window)) + ;; This is a buffer to be selected. + ((not (memq type '(frame horizontal vertical))) + (let ((buffer (cond ((stringp type) type) + (t (cdr (assq type gnus-window-to-buffer)))))) + (unless buffer + (error "Invalid buffer type: %s" type)) + (let ((buf (gnus-get-buffer-create + (gnus-window-to-buffer-helper buffer)))) + (if (eq buf (window-buffer (selected-window))) (set-buffer buf) + (switch-to-buffer buf))) + (when (memq 'frame-focus split) + (setq gnus-window-frame-focus window)) + ;; We return the window if it has the `point' spec. + (and (memq 'point split) window))) + ;; This is a frame split. + ((eq type 'frame) + (unless gnus-frame-list + (setq gnus-frame-list (list (window-frame current-window)))) + (let ((i 0) + params frame fresult) + (while (< i (length subs)) + ;; Frame parameter is gotten from the sub-split. + (setq params (cadr (elt subs i))) + ;; It should be a list. + (unless (listp params) + (setq params nil)) + ;; Create a new frame? + (unless (setq frame (elt gnus-frame-list i)) + (nconc gnus-frame-list (list (setq frame (make-frame params)))) + (push frame gnus-created-frames)) + ;; Is the old frame still alive? + (unless (frame-live-p frame) + (setcar (nthcdr i gnus-frame-list) + (setq frame (make-frame params)))) + ;; Select the frame in question and do more splits there. + (select-frame frame) + (setq fresult (or (gnus-configure-frame (elt subs i)) fresult)) + (incf i)) + ;; Select the frame that has the selected buffer. + (when fresult + (select-frame (window-frame fresult))))) + ;; This is a normal split. + (t + (when (> (length subs) 0) + ;; First we have to compute the sizes of all new windows. + (while subs + (setq sub (append (pop subs) nil)) + (while (and (not (assq (car sub) gnus-window-to-buffer)) + (gnus-functionp (car sub))) + (setq sub (eval sub))) + (when sub + (push sub comp-subs) + (setq size (cadar comp-subs)) + (cond ((equal size 1.0) + (setq rest (car comp-subs)) + (setq s 0)) + ((floatp size) + (setq s (floor (* size len)))) + ((integerp size) + (setq s size)) + (t + (error "Invalid size: %s" size))) + ;; Try to make sure that we are inside the safe limits. + (cond ((zerop s)) + ((eq type 'horizontal) + (setq s (max s window-min-width))) + ((eq type 'vertical) + (setq s (max s window-min-height)))) + (setcar (cdar comp-subs) s) + (incf total s))) + ;; Take care of the "1.0" spec. + (if rest + (setcar (cdr rest) (- len total)) + (error "No 1.0 specs in %s" split)) + ;; The we do the actual splitting in a nice recursive + ;; fashion. + (setq comp-subs (nreverse comp-subs)) + (while comp-subs + (if (null (cdr comp-subs)) + (setq new-win window) + (setq new-win + (split-window window (cadar comp-subs) + (eq type 'horizontal)))) + (setq result (or (gnus-configure-frame + (car comp-subs) window) + result)) + (select-window new-win) + (setq window new-win) + (setq comp-subs (cdr comp-subs)))) + ;; Return the proper window, if any. + (when result + (select-window result))))))) (defvar gnus-frame-split-p nil) @@ -432,6 +433,10 @@ See the Gnus manual for an explanation of the syntax used.") ;; put point in the assigned buffer, and do not touch the ;; winconf. (select-window all-visible) + + ;; Make sure "the other" buffer, nntp-server-buffer, is live. + (unless (gnus-buffer-live-p nntp-server-buffer) + (nnheader-init-server-buffer)) ;; Either remove all windows or just remove all Gnus windows. (let ((frame (selected-frame))) @@ -447,11 +452,11 @@ See the Gnus manual for an explanation of the syntax used.") (gnus-delete-windows-in-gnusey-frames)) ;; Just remove some windows. (gnus-remove-some-windows) - (switch-to-buffer nntp-server-buffer)) + (set-buffer nntp-server-buffer)) (select-frame frame))) (let (gnus-window-frame-focus) - (switch-to-buffer nntp-server-buffer) + (set-buffer nntp-server-buffer) (gnus-configure-frame split) (when gnus-window-frame-focus (select-frame (window-frame gnus-window-frame-focus)))))))) @@ -536,7 +541,7 @@ should have point." lowest-buf buf)))) (when lowest-buf (pop-to-buffer lowest-buf) - (switch-to-buffer nntp-server-buffer)) + (set-buffer nntp-server-buffer)) (mapcar (lambda (b) (delete-windows-on b t)) bufs)))) (provide 'gnus-win) diff --git a/lisp/gnus-xmas.el b/lisp/gnus-xmas.el index dc01c28..84dc234 100644 --- a/lisp/gnus-xmas.el +++ b/lisp/gnus-xmas.el @@ -1,5 +1,7 @@ ;;; gnus-xmas.el --- Gnus functions for XEmacs -;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Katsumi Yamaoka @@ -407,26 +409,28 @@ call it with the value of the `gnus-data' text property." (cond ((fboundp 'char-or-char-int-p) ;; Handle both types of marks for XEmacs-20.x. - (fset 'gnus-characterp 'char-or-char-int-p)) + (defalias 'gnus-characterp 'char-or-char-int-p)) ;; V19 of XEmacs, probably. (t - (fset 'gnus-characterp 'characterp))) - - (fset 'gnus-make-overlay 'make-extent) - (fset 'gnus-delete-overlay 'delete-extent) - (fset 'gnus-overlay-put 'set-extent-property) - (fset 'gnus-move-overlay 'gnus-xmas-move-overlay) - (fset 'gnus-overlay-end 'extent-end-position) - (fset 'gnus-kill-all-overlays 'gnus-xmas-kill-all-overlays) - (fset 'gnus-extent-detached-p 'extent-detached-p) - (fset 'gnus-add-text-properties 'gnus-xmas-add-text-properties) - (fset 'gnus-put-text-property 'gnus-xmas-put-text-property) - (fset 'gnus-deactivate-mark 'ignore) - (fset 'gnus-window-edges 'window-pixel-edges) + (defalias 'gnus-characterp 'characterp))) + + (defalias 'gnus-make-overlay 'make-extent) + (defalias 'gnus-delete-overlay 'delete-extent) + (defalias 'gnus-overlay-put 'set-extent-property) + (defalias 'gnus-move-overlay 'gnus-xmas-move-overlay) + (defalias 'gnus-overlay-buffer 'extent-object) + (defalias 'gnus-overlay-start 'extent-start-position) + (defalias 'gnus-overlay-end 'extent-end-position) + (defalias 'gnus-kill-all-overlays 'gnus-xmas-kill-all-overlays) + (defalias 'gnus-extent-detached-p 'extent-detached-p) + (defalias 'gnus-add-text-properties 'gnus-xmas-add-text-properties) + (defalias 'gnus-put-text-property 'gnus-xmas-put-text-property) + (defalias 'gnus-deactivate-mark 'ignore) + (defalias 'gnus-window-edges 'window-pixel-edges) (if (and (<= emacs-major-version 19) (< emacs-minor-version 14)) - (fset 'gnus-set-text-properties 'gnus-xmas-set-text-properties)) + (defalias 'gnus-set-text-properties 'gnus-xmas-set-text-properties)) (when (fboundp 'turn-off-scroll-in-place) (add-hook 'gnus-article-mode-hook 'turn-off-scroll-in-place)) @@ -443,34 +447,34 @@ call it with the value of the `gnus-data' text property." (list 'funcall fval) (cons 'progn (cdr (cdr fval)))))) - (fset 'gnus-x-color-values - (if (fboundp 'x-color-values) - 'x-color-values - (lambda (color) - (color-instance-rgb-components - (make-color-instance color)))))) + (defalias 'gnus-x-color-values + (if (fboundp 'x-color-values) + 'x-color-values + (lambda (color) + (color-instance-rgb-components + (make-color-instance color)))))) (defun gnus-xmas-redefine () "Redefine lots of Gnus functions for XEmacs." - (fset 'gnus-summary-set-display-table 'gnus-xmas-summary-set-display-table) - (fset 'gnus-visual-turn-off-edit-menu 'identity) - (fset 'gnus-summary-recenter 'gnus-xmas-summary-recenter) - (fset 'gnus-extent-start-open 'gnus-xmas-extent-start-open) - (fset 'gnus-article-push-button 'gnus-xmas-article-push-button) - (fset 'gnus-window-top-edge 'gnus-xmas-window-top-edge) - (fset 'gnus-read-event-char 'gnus-xmas-read-event-char) - (fset 'gnus-group-startup-message 'gnus-xmas-group-startup-message) - (fset 'gnus-tree-minimize 'gnus-xmas-tree-minimize) - (fset 'gnus-appt-select-lowest-window + (defalias 'gnus-summary-set-display-table 'gnus-xmas-summary-set-display-table) + (defalias 'gnus-visual-turn-off-edit-menu 'identity) + (defalias 'gnus-summary-recenter 'gnus-xmas-summary-recenter) + (defalias 'gnus-extent-start-open 'gnus-xmas-extent-start-open) + (defalias 'gnus-article-push-button 'gnus-xmas-article-push-button) + (defalias 'gnus-window-top-edge 'gnus-xmas-window-top-edge) + (defalias 'gnus-read-event-char 'gnus-xmas-read-event-char) + (defalias 'gnus-group-startup-message 'gnus-xmas-group-startup-message) + (defalias 'gnus-tree-minimize 'gnus-xmas-tree-minimize) + (defalias 'gnus-appt-select-lowest-window 'gnus-xmas-appt-select-lowest-window) - (fset 'gnus-mail-strip-quoted-names 'gnus-xmas-mail-strip-quoted-names) - (fset 'gnus-character-to-event 'character-to-event) - (fset 'gnus-mode-line-buffer-identification + (defalias 'gnus-mail-strip-quoted-names 'gnus-xmas-mail-strip-quoted-names) + (defalias 'gnus-character-to-event 'character-to-event) + (defalias 'gnus-mode-line-buffer-identification 'gnus-xmas-mode-line-buffer-identification) - (fset 'gnus-key-press-event-p 'key-press-event-p) - (fset 'gnus-region-active-p 'region-active-p) - (fset 'gnus-annotation-in-region-p 'gnus-xmas-annotation-in-region-p) - (fset 'gnus-mime-button-menu 'gnus-xmas-mime-button-menu) + (defalias 'gnus-key-press-event-p 'key-press-event-p) + (defalias 'gnus-region-active-p 'region-active-p) + (defalias 'gnus-annotation-in-region-p 'gnus-xmas-annotation-in-region-p) + (defalias 'gnus-mime-button-menu 'gnus-xmas-mime-button-menu) (add-hook 'gnus-group-mode-hook 'gnus-xmas-group-menu-add) (add-hook 'gnus-summary-mode-hook 'gnus-xmas-summary-menu-add) @@ -807,7 +811,7 @@ XEmacs compatibility workaround." (let ((cur (current-buffer))) (save-excursion (gnus-set-work-buffer) - (insert (format "%s" (buffer-substring beg end cur))) + (insert-buffer-substring cur beg end) (gnus-xmas-call-region "uncompface") (goto-char (point-min)) (insert "/* Width=48, Height=48 */\n") @@ -948,21 +952,25 @@ XEmacs compatibility workaround." (defun gnus-group-icon-create-glyph (substring pixmap) "Create a glyph for insertion into a group line." - (and - gnus-group-running-xemacs - (or - (cdr-safe (assoc pixmap gnus-group-icon-cache)) - (let* ((glyph (make-glyph - (list - (cons 'x - (expand-file-name pixmap gnus-xmas-glyph-directory)) - (cons 'mswindows - (expand-file-name pixmap gnus-xmas-glyph-directory)) - (cons 'tty substring))))) - (setq gnus-group-icon-cache - (cons (cons pixmap glyph) gnus-group-icon-cache)) - (set-glyph-face glyph 'default) - glyph)))) + (or + (cdr-safe (assoc pixmap gnus-group-icon-cache)) + (let* ((glyph (make-glyph + (list + (cons 'x + (expand-file-name pixmap gnus-xmas-glyph-directory)) + (cons 'mswindows + (expand-file-name pixmap gnus-xmas-glyph-directory)) + (cons 'tty substring))))) + (setq gnus-group-icon-cache + (cons (cons pixmap glyph) gnus-group-icon-cache)) + (set-glyph-face glyph 'default) + glyph))) + +(defun gnus-xmas-mailing-list-menu-add () + (gnus-xmas-menu-add mailing-list + gnus-mailing-list-menu)) + +(add-hook 'gnus-mailing-list-mode-hook 'gnus-xmas-mailing-list-menu-add) (provide 'gnus-xmas) diff --git a/lisp/gnus.el b/lisp/gnus.el index e52aef8..52e9055 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -35,7 +35,6 @@ (eval-when-compile (require 'static)) (require 'gnus-vers) -(require 'message) (defgroup gnus nil "The coffee-brewing, all singing, all dancing, kitchen sink newsreader." @@ -272,27 +271,55 @@ be set in `.emacs' instead." :group 'gnus-start :type 'boolean) +(unless (fboundp 'gnus-group-remove-excess-properties) + (defalias 'gnus-group-remove-excess-properties 'ignore)) + +(unless (fboundp 'gnus-set-text-properties) + (defalias 'gnus-set-text-properties 'set-text-properties)) + (unless (featurep 'gnus-xmas) (defalias 'gnus-make-overlay 'make-overlay) (defalias 'gnus-delete-overlay 'delete-overlay) (defalias 'gnus-overlay-put 'overlay-put) (defalias 'gnus-move-overlay 'move-overlay) + (defalias 'gnus-overlay-buffer 'overlay-buffer) + (defalias 'gnus-overlay-start 'overlay-start) (defalias 'gnus-overlay-end 'overlay-end) (defalias 'gnus-extent-detached-p 'ignore) (defalias 'gnus-extent-start-open 'ignore) - (defalias 'gnus-set-text-properties 'set-text-properties) - (defalias 'gnus-group-remove-excess-properties 'ignore) (defalias 'gnus-appt-select-lowest-window 'appt-select-lowest-window) (defalias 'gnus-mail-strip-quoted-names 'mail-strip-quoted-names) (defalias 'gnus-character-to-event 'identity) (defalias 'gnus-add-text-properties 'add-text-properties) (defalias 'gnus-put-text-property 'put-text-property) - (defalias 'gnus-mode-line-buffer-identification 'identity) + (defvar gnus-mode-line-image-cache t) + (if (fboundp 'find-image) + (defun gnus-mode-line-buffer-identification (line) + (let ((str (car-safe line))) + (if (and (stringp str) + (string-match "^Gnus:" str)) + (progn (add-text-properties + 0 5 + (list 'display + (if (eq t gnus-mode-line-image-cache) + (setq gnus-mode-line-image-cache + (find-image + '((:type xpm :file "gnus-pointer.xpm" + :ascent 80) + (:type xbm :file "gnus-pointer.xbm" + :ascent 80)))) + gnus-mode-line-image-cache) + 'help-echo "This is Gnus") + str) + (list str)) + line))) + (defalias 'gnus-mode-line-buffer-identification 'identity)) (defalias 'gnus-characterp 'numberp) (defalias 'gnus-deactivate-mark 'deactivate-mark) (defalias 'gnus-window-edges 'window-edges) (defalias 'gnus-key-press-event-p 'numberp) - (defalias 'gnus-decode-rfc1522 'ignore)) + ;;(defalias 'gnus-decode-rfc1522 'ignore) + ) ;; We define these group faces here to avoid the display ;; update forced when creating new faces. @@ -752,34 +779,35 @@ be set in `.emacs' instead." (cond ((and (fboundp 'find-image) (display-graphic-p) - (let ((image - (find-image - `((:type xpm :file "gnus.xpm" - :color-symbols - (("thing" . "#724214") - ("shadow" . "#1e3f03") - ("background" . ,(face-background 'default)))) - (:type xbm :file "gnus.xbm" - :foreground ,(face-foreground 'gnus-splash-face) - :background ,(face-background 'default)))))) + (let* ((bg (face-background 'default)) + (fg (face-foreground 'gnus-splash-face)) + (image (find-image + `((:type xpm :file "gnus.xpm" + :color-symbols (("thing" . "#724214") + ("shadow" . "#1e3f03") + ("background" . ,bg))) + (:type xbm :file "gnus.xbm" + :background ,bg :foreground ,fg))))) (when image - (insert gnus-product-name " " gnus-version-number - (if (zerop (string-to-number gnus-revision-number)) - "" - (concat " (r" gnus-revision-number ")")) - " based on " gnus-original-product-name " v" - gnus-original-version-number "\n") - (end-of-line 0) - (put-text-property (point-min) (point) 'face 'gnus-splash-face) - (insert-char ?\ (prog1 - (max 0 (/ (- (window-width) (point)) 2)) - (goto-char (point-min)))) - (forward-line 1) + (insert + (propertize + (concat gnus-product-name " " gnus-version-number + (if (zerop (string-to-number gnus-revision-number)) + "" + (concat " (r" gnus-revision-number ")")) + " based on " gnus-original-product-name " v" + gnus-original-version-number) + 'face `(variable-pitch :background ,bg :foreground ,fg))) + (let ((fill-column (window-width))) + (center-region (point-min) (point))) (let ((size (image-size image))) - (insert-char ?\n (max 0 (round (- (window-height) - (or y (cdr size)) 2) 2))) - (insert-char ?\ (max 0 (round (- (window-width) - (or x (car size))) 2))) + (insert-char ?\n (max 1 (round (- (window-height) + (or y (cdr size))) 2))) + (insert + (propertize " " 'display + `(space :align-to + ,(max 0 (round (- (window-width) + (or x (car size))) 2))))) (insert-image image)) (setq gnus-simple-splash nil) t)))) @@ -841,7 +869,6 @@ be set in `.emacs' instead." ;;; Do the rest. -(require 'custom) (require 'gnus-util) (require 'nnheader) @@ -945,13 +972,16 @@ see the manual for details." :type 'gnus-select-method) (defcustom gnus-message-archive-method - `(nnfolder - "archive" - (nnfolder-directory ,(nnheader-concat message-directory "archive")) - (nnfolder-active-file - ,(nnheader-concat message-directory "archive/active")) - (nnfolder-get-new-mail nil) - (nnfolder-inhibit-expiry t)) + (progn + ;; Don't require it at top level to avoid circularity. + (require 'message) + `(nnfolder + "archive" + (nnfolder-directory ,(nnheader-concat message-directory "archive")) + (nnfolder-active-file + ,(nnheader-concat message-directory "archive/active")) + (nnfolder-get-new-mail nil) + (nnfolder-inhibit-expiry t))) "*Method used for archiving messages you've sent. This should be a mail method. @@ -1290,6 +1320,7 @@ slower." ("nnweb" none) ("nnslashdot" post) ("nnultimate" none) + ("nnwfm" none) ("nnwarchive" none) ("nnlistserv" none) ("nnagent" post-mail) @@ -1332,8 +1363,7 @@ this variable. I think." :inline t (list :format "%v" variable - (sexp :tag "Value")))) - )) + (sexp :tag "Value")))))) (gnus-redefine-select-method-widget) @@ -1508,6 +1538,7 @@ If nil, no default charset is assumed when posting." ;;; Internal variables +(defvar gnus-agent-gcc-header "X-Gnus-Agent-Gcc") (defvar gnus-agent-meta-information-header "X-Gnus-Agent-Meta-Information") (defvar gnus-group-get-parameter-function 'gnus-group-get-parameter) (defvar gnus-original-article-buffer " *Original Article*") @@ -1517,6 +1548,9 @@ If nil, no default charset is assumed when posting." (defvar gnus-agent nil "Whether we want to use the Gnus agent or not.") +(defvar gnus-agent-fetching nil + "Whether Gnus agent is in fetching mode.") + (defvar gnus-command-method nil "Dynamically bound variable that says what the current backend is.") @@ -1679,6 +1713,9 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") use the article treating faculties instead. Is is described in Info node `Customizing Articles'.") +(defvar gnus-invalid-group-regexp "[: `'\"/]\\|^$" + "Regexp matching invalid groups.") + ;;; End of variables. ;; Define some autoload functions Gnus might use. @@ -1886,28 +1923,8 @@ use the article treating faculties instead. Is is described in Info node (eval-and-compile (unless (featurep 'xemacs) - (if (and (fboundp 'image-type-available-p) - (module-installed-p 'x-face-e21)) - (progn - ;; Don't load gnus-bitmap, it will destroy x-face-e21 thingies. - (autoload 'smiley-toggle-buffer "smiley-mule") - (defun gnus-smiley-display (&optional arg) - "Display \"smileys\" as small graphical icons. -With arg, turn displaying on if and only if arg is positive." - (interactive "P") - (if window-system - (save-excursion - (set-buffer gnus-article-buffer) - (save-restriction - (widen) - (article-goto-body) - (narrow-to-region (point) (point-max)) - (let ((inhibit-read-only t) - buffer-read-only) - (smiley-toggle-buffer arg)))) - (when (interactive-p) - (message "You're not under window system.")))) - (autoload 'x-face-decode-message-header "x-face-e21")) + (if (>= emacs-major-version 21) + (autoload 'x-face-decode-message-header "x-face-e21") (autoload 'gnus-smiley-display "gnus-bitmap" nil t) (autoload 'smiley-toggle-buffer "gnus-bitmap") (autoload 'x-face-mule-gnus-article-display-x-face "x-face-mule")))) @@ -2712,9 +2729,21 @@ just the host name." group (substring group (+ 1 colon)))) (setq foreign (concat foreign ":"))) ;; Collapse group name leaving LEVELS uncollapsed elements - (let* ((glist (split-string group "\\.")) - (glen (length glist)) + (let* ((slist (split-string group "/")) + (slen (length slist)) + (dlist (split-string group "\\.")) + (dlen (length dlist)) + glist + glen + gsep res) + (if (> slen dlen) + (setq glist slist + glen slen + gsep "/") + (setq glist dlist + glen dlen + gsep ".")) (setq levels (- glen levels)) (dolist (g glist) (push (if (>= (decf levels) 0) @@ -2723,7 +2752,7 @@ just the host name." (substring g 0 1)) g) res)) - (concat foreign (mapconcat 'identity (nreverse res) ".")))))) + (concat foreign (mapconcat 'identity (nreverse res) gsep)))))) (defun gnus-narrow-to-body () "Narrow to the body of an article." @@ -2876,8 +2905,8 @@ Disallow invalid group names." (let ((prefix "") group) (while (not group) - (when (string-match - "[: `'\"/]\\|^$" + (when (string-match + gnus-invalid-group-regexp (setq group (read-string (concat prefix prompt) (cons (or default "") 0) 'gnus-group-history))) diff --git a/lisp/ietf-drums.el b/lisp/ietf-drums.el index 853c208..b39decb 100644 --- a/lisp/ietf-drums.el +++ b/lisp/ietf-drums.el @@ -29,6 +29,7 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'time-date) (require 'mm-util) diff --git a/lisp/imap.el b/lisp/imap.el index 1c112f8..489fecf 100644 --- a/lisp/imap.el +++ b/lisp/imap.el @@ -75,11 +75,11 @@ ;; ;; imap.el support RFC1730/2060 (IMAP4/IMAP4rev1), implemented IMAP ;; extensions are RFC2195 (CRAM-MD5), RFC2086 (ACL), RFC2342 -;; (NAMESPACE), RFC2359 (UIDPLUS), the IMAP-part of RFC2595 (STARTTLS) -;; (with use of external library starttls.el and program starttls) and -;; the GSSAPI / kerberos V4 sections of RFC1731 (with use of external -;; program `imtest'). It also take advantage the UNSELECT extension -;; in Cyrus IMAPD. +;; (NAMESPACE), RFC2359 (UIDPLUS), the IMAP-part of RFC2595 (STARTTLS, +;; LOGINDISABLED) (with use of external library starttls.el and +;; program starttls) and the GSSAPI / kerberos V4 sections of RFC1731 +;; (with use of external program `imtest'). It also take advantage +;; the UNSELECT extension in Cyrus IMAPD. ;; ;; Without the work of John McClary Prevost and Jim Radford this library ;; would not have seen the light of day. Many thanks. @@ -151,31 +151,69 @@ (autoload 'utf7-decode "utf7") (autoload 'format-spec "format-spec") (autoload 'format-spec-make "format-spec") + ;; Avoid use gnus-point-at-eol so we're independent of Gnus. These + ;; days we have point-at-eol anyhow. + (if (fboundp 'point-at-eol) + (defalias 'imap-point-at-eol 'point-at-eol) + (defun imap-point-at-eol () + (save-excursion + (end-of-line) + (point)))) (autoload 'sasl-digest-md5-digest-response "sasl")) ;; User variables. -(defvar imap-kerberos4-program '("imtest -m kerberos_v4 -u %l -p %p %s" - "imtest -kp %s %p") +(defgroup imap nil + "Low-level IMAP issues." + :group 'mail) + +(defcustom imap-kerberos4-program '("imtest -m kerberos_v4 -u %l -p %p %s" + "imtest -kp %s %p") "List of strings containing commands for Kerberos 4 authentication. %s is replaced with server hostname, %p with port to connect to, and %l with the value of `imap-default-user'. The program should accept -IMAP commands on stdin and return responses to stdout.") +IMAP commands on stdin and return responses to stdout. Each entry in +the list is tried until a successful connection is made." + :group 'imap + :type '(repeat string)) -(defvar imap-gssapi-program '("imtest -m gssapi -u %l -p %p %s") +(defcustom imap-gssapi-program '("imtest -m gssapi -u %l -p %p %s") "List of strings containing commands for GSSAPI (krb5) authentication. %s is replaced with server hostname, %p with port to connect to, and %l with the value of `imap-default-user'. The program should accept -IMAP commands on stdin and return responses to stdout.") - -(defvar imap-ssl-program '("openssl s_client -ssl3 -connect %s:%p" - "openssl s_client -ssl2 -connect %s:%p" - "s_client -ssl3 -connect %s:%p" - "s_client -ssl2 -connect %s:%p") +IMAP commands on stdin and return responses to stdout. Each entry in +the list is tried until a successful connection is made." + :group 'imap + :type '(repeat string)) + +(defcustom imap-ssl-program '("openssl s_client -ssl3 -connect %s:%p" + "openssl s_client -ssl2 -connect %s:%p" + "s_client -ssl3 -connect %s:%p" + "s_client -ssl2 -connect %s:%p") "A string, or list of strings, containing commands for SSL connections. Within a string, %s is replaced with the server address and %p with port number on server. The program should accept IMAP commands on -stdin and return responses to stdout.") +stdin and return responses to stdout. Each entry in the list is tried +until a successful connection is made." + :group 'imap + :type '(choice string + (repeat string))) + +(defcustom imap-shell-program '("ssh %s imapd" + "rsh %s imapd" + "ssh %g ssh %s imapd" + "rsh %g rsh %s imapd") + "A list of strings, containing commands for IMAP connection. +Within a string, %s is replaced with the server address, %p with port +number on server, %g with `imap-shell-host', and %l with +`imap-default-user'. The program should read IMAP commands from stdin +and write IMAP response to stdout. Each entry in the list is tried +until a successful connection is made." + :group 'imap + :type '(repeat string)) + +(defvar imap-shell-host "gateway" + "Hostname of rlogin proxy.") (defvar imap-default-user (user-login-name) "Default username to use.") @@ -188,7 +226,7 @@ stdin and return responses to stdout.") (defvar imap-fetch-data-hook nil "Hooks called after receiving each FETCH response.") -(defvar imap-streams '(gssapi kerberos4 starttls ssl network) +(defvar imap-streams '(gssapi kerberos4 starttls ssl network shell) "Priority of streams to consider when opening connection to server.") (defvar imap-stream-alist @@ -196,6 +234,7 @@ stdin and return responses to stdout.") (kerberos4 imap-kerberos4-stream-p imap-kerberos4-open) (ssl imap-ssl-p imap-ssl-open) (network imap-network-p imap-network-open) + (shell imap-shell-p imap-shell-open) (starttls imap-starttls-p imap-starttls-open)) "Definition of network streams. @@ -214,7 +253,7 @@ stream.") "Priority of authenticators to consider when authenticating to server.") (defvar imap-authenticator-alist - '((gssapi imap-gssapi-auth-p imap-gssapia-auth) + '((gssapi imap-gssapi-auth-p imap-gssapi-auth) (kerberos4 imap-kerberos4-auth-p imap-kerberos4-auth) (cram-md5 imap-cram-md5-p imap-cram-md5-auth) (login imap-login-p imap-login-auth) @@ -257,6 +296,7 @@ encoded mailboxes which doesn't translate into ISO-8859-1.") imap-failed-tags imap-tag imap-process + imap-calculate-literal-size-first imap-mailbox-data)) ;; Internal variables. @@ -267,6 +307,7 @@ encoded mailboxes which doesn't translate into ISO-8859-1.") (defvar imap-port nil) (defvar imap-username nil) (defvar imap-password nil) +(defvar imap-calculate-literal-size-first nil) (defvar imap-state 'closed "IMAP state. Valid states are `closed', `initial', `nonauth', `auth', `selected' @@ -325,10 +366,12 @@ human readable response text (a string).") The actually value is really the text on the continuation line.") (defvar imap-log nil - "Imap session trace.") + "Name of buffer for imap session trace. +For example: (setq imap-log \"*imap-log*\")") (defvar imap-debug nil ;"*imap-debug*" - "Random debug spew.") + "Name of buffer for random debug spew. +For example: (setq imap-debug \"*imap-debug*\")") ;; Utility functions: @@ -392,6 +435,7 @@ If ARGS, PROMPT is used as an argument to `format'." cmd done) (while (and (not done) (setq cmd (pop cmds))) (message "Opening Kerberos 4 IMAP connection with `%s'..." cmd) + (erase-buffer) (let* ((port (or port imap-default-port)) (process (as-binary-process (start-process @@ -405,7 +449,8 @@ If ARGS, PROMPT is used as an argument to `format'." response) (when process (with-current-buffer buffer - (setq imap-client-eol "\n") + (setq imap-client-eol "\n" + imap-calculate-literal-size-first t) (while (and (memq (process-status process) '(open run)) (goto-char (point-min)) ;; cyrus 1.6.x (13? < x <= 22) queries capabilities @@ -432,7 +477,8 @@ If ARGS, PROMPT is used as an argument to `format'." (goto-char (point-max)) (insert-buffer-substring buffer))) (erase-buffer) - (message "Kerberos 4 IMAP connection: %s" (or response "failed")) + (message "Opening Kerberos 4 IMAP connection with `%s'...%s" cmd + (if response (concat "done, " response) "failed")) (if (and response (let ((case-fold-search nil)) (not (string-match "failed" response)))) (setq done process) @@ -466,6 +512,10 @@ If ARGS, PROMPT is used as an argument to `format'." (setq imap-client-eol "\n") (while (and (memq (process-status process) '(open run)) (goto-char (point-min)) + ;; cyrus 1.6.x (13? < x <= 22) queries capabilities + (or (while (looking-at "^C:") + (forward-line)) + t) ;; cyrus 1.6 imtest print "S: " before server greeting (or (not (looking-at "S: ")) (forward-char 3) @@ -543,7 +593,7 @@ If ARGS, PROMPT is used as an argument to `format'." (progn (message "imap: Opening SSL connection with `%s'...done" cmd) done) - (message "imap: Failed opening SSL connection") + (message "imap: Opening SSL connection with `%s'...failed" cmd) nil))) (defun imap-network-p (buffer) @@ -566,16 +616,61 @@ If ARGS, PROMPT is used as an argument to `format'." (when (memq (process-status process) '(open run)) process)))) +(defun imap-shell-p (buffer) + nil) + +(defun imap-shell-open (name buffer server port) + (let ((cmds imap-shell-program) + cmd done) + (while (and (not done) (setq cmd (pop cmds))) + (message "imap: Opening IMAP connection with `%s'..." cmd) + (setq imap-client-eol "\n") + (let* ((port (or port imap-default-port)) + (process (as-binary-process + (start-process + name buffer shell-file-name shell-command-switch + (format-spec + cmd + (format-spec-make + ?s server + ?g imap-shell-host + ?p (number-to-string port) + ?l imap-default-user)))))) + (when process + (while (and (memq (process-status process) '(open run)) + (goto-char (point-min)) + (not (imap-parse-greeting))) + (accept-process-output process 1) + (sit-for 1)) + (erase-buffer) + (and imap-log + (with-current-buffer (get-buffer-create imap-log) + (buffer-disable-undo) + (goto-char (point-max)) + (insert-buffer-substring buffer))) + (when (memq (process-status process) '(open run)) + (setq done process))))) + (if done + (progn + (message "imap: Opening IMAP connection with `%s'...done" cmd) + done) + (message "imap: Opening IMAP connection with `%s'...failed" cmd) + nil))) + (defun imap-starttls-p (buffer) - (and (condition-case () - (require 'starttls) - (error nil)) - (imap-capability 'STARTTLS buffer))) + (and (imap-capability 'STARTTLS buffer) + (condition-case () + (progn + (require 'starttls) + (call-process "starttls")) + (error nil)))) (defun imap-starttls-open (name buffer server port) (let* ((port (or port imap-default-port)) (process (as-binary-process - (starttls-open-stream name buffer server port)))) + (starttls-open-stream name buffer server port))) + done) + (message "imap: Connecting with STARTTLS...") (when process (while (and (memq (process-status process) '(open run)) (goto-char (point-min)) @@ -596,7 +691,13 @@ If ARGS, PROMPT is used as an argument to `format'." (starttls-negotiate imap-process))) (set-process-filter imap-process nil))) (when (memq (process-status process) '(open run)) - process)))) + (setq done process))) + (if done + (progn + (message "imap: Connecting with STARTTLS...done") + done) + (message "imap: Connecting with STARTTLS...failed") + nil))) ;; Server functions; authenticator stuff: @@ -642,12 +743,16 @@ Returns t if login was successful, nil otherwise." (imap-capability 'AUTH=GSSAPI buffer)) (defun imap-gssapi-auth (buffer) + (message "imap: Authenticating using GSSAPI...%s" + (if (eq imap-stream 'gssapi) "done" "failed")) (eq imap-stream 'gssapi)) (defun imap-kerberos4-auth-p (buffer) (imap-capability 'AUTH=KERBEROS_V4 buffer)) (defun imap-kerberos4-auth (buffer) + (message "imap: Authenticating using Kerberos 4...%s" + (if (eq imap-stream 'kerberos4) "done" "failed")) (eq imap-stream 'kerberos4)) (defun imap-cram-md5-p (buffer) @@ -655,30 +760,38 @@ Returns t if login was successful, nil otherwise." (defun imap-cram-md5-auth (buffer) "Login to server using the AUTH CRAM-MD5 method." - (imap-interactive-login - buffer - (lambda (user passwd) - (imap-ok-p - (imap-send-command-wait - (list - "AUTHENTICATE CRAM-MD5" - (lambda (challenge) - (let* ((decoded (base64-decode-string challenge)) - (hash-function (if (and (featurep 'xemacs) - (>= (function-max-args 'md5) 4)) - (lambda (object &optional start end) - (md5 object start end 'binary)) - 'md5)) - (hash (rfc2104-hash hash-function 64 16 passwd decoded)) - (response (concat user " " hash)) - (encoded (base64-encode-string response))) - encoded)))))))) + (message "imap: Authenticating using CRAM-MD5...") + (let ((done (imap-interactive-login + buffer + (lambda (user passwd) + (imap-ok-p + (imap-send-command-wait + (list + "AUTHENTICATE CRAM-MD5" + (lambda (challenge) + (let* ((decoded (base64-decode-string challenge)) + (hash-function + (if (and (featurep 'xemacs) + (>= (function-max-args 'md5) 4)) + (lambda (object &optional start end) + (md5 object start end 'binary)) + 'md5)) + (hash (rfc2104-hash hash-function 64 16 + passwd decoded)) + (response (concat user " " hash)) + (encoded (base64-encode-string response))) + encoded))))))))) + (if done + (message "imap: Authenticating using CRAM-MD5...done") + (message "imap: Authenticating using CRAM-MD5...failed")))) (defun imap-login-p (buffer) - (not (imap-capability 'X-LOGIN-CMD-DISABLED buffer))) + (and (not (imap-capability 'LOGINDISABLED buffer)) + (not (imap-capability 'X-LOGIN-CMD-DISABLED buffer)))) (defun imap-login-auth (buffer) "Login to server using the LOGIN command." + (message "imap: Plaintext authentication...") (imap-interactive-login buffer (lambda (user passwd) (imap-ok-p (imap-send-command-wait @@ -689,19 +802,21 @@ Returns t if login was successful, nil otherwise." t) (defun imap-anonymous-auth (buffer) + (message "imap: Loging in anonymously...") (with-current-buffer buffer (imap-ok-p (imap-send-command-wait (concat "LOGIN anonymous \"" (concat (user-login-name) "@" (system-name)) "\""))))) (defun imap-digest-md5-p (buffer) - (and (condition-case () + (and (imap-capability 'AUTH=DIGEST-MD5 buffer) + (condition-case () (require 'digest-md5) - (error nil)) - (imap-capability 'AUTH=DIGEST-MD5 buffer))) + (error nil)))) (defun imap-digest-md5-auth (buffer) "Login to server using the AUTH DIGEST-MD5 method." + (message "imap: Authenticating using DIGEST-MD5...") (imap-interactive-login buffer (lambda (user passwd) @@ -767,37 +882,44 @@ necessery. If nil, the buffer name is generated." (setq imap-port (or port imap-port)) (setq imap-auth (or auth imap-auth)) (setq imap-stream (or stream imap-stream)) - (when (let ((imap-stream (or imap-stream imap-default-stream))) - (imap-open-1 buffer)) - ;; Choose stream. - (let (stream-changed) - (when (null imap-stream) - (let ((streams imap-streams)) - (while (setq stream (pop streams)) - (if (funcall (nth 1 (assq stream imap-stream-alist)) buffer) - (setq stream-changed (not (eq (or imap-stream - imap-default-stream) - stream)) - imap-stream stream - streams nil))) - (unless imap-stream - (error "Couldn't figure out a stream for server")))) - (when stream-changed - (message "Reconnecting with %s..." imap-stream) - (imap-close buffer) - (imap-open-1 buffer) - (setq imap-capability nil))) - (if (imap-opened buffer) - ;; Choose authenticator - (when (null imap-auth) - (let ((auths imap-authenticators)) - (while (setq auth (pop auths)) - (if (funcall (nth 1 (assq auth imap-authenticator-alist)) - buffer) - (setq imap-auth auth - auths nil))) - (unless imap-auth - (error "Couldn't figure out authenticator for server")))))) + (message "imap: Connecting to %s..." imap-server) + (if (let ((imap-stream (or imap-stream imap-default-stream))) + (imap-open-1 buffer)) + ;; Choose stream. + (let (stream-changed) + (message "imap: Connecting to %s...done" imap-server) + (when (null imap-stream) + (let ((streams imap-streams)) + (while (setq stream (pop streams)) + (if (funcall (nth 1 (assq stream imap-stream-alist)) buffer) + (setq stream-changed (not (eq (or imap-stream + imap-default-stream) + stream)) + imap-stream stream + streams nil))) + (unless imap-stream + (error "Couldn't figure out a stream for server")))) + (when stream-changed + (message "imap: Reconnecting with stream `%s'..." imap-stream) + (imap-close buffer) + (if (imap-open-1 buffer) + (message "imap: Reconnecting with stream `%s'...done" + imap-stream) + (message "imap: Reconnecting with stream `%s'...failed" + imap-stream)) + (setq imap-capability nil)) + (if (imap-opened buffer) + ;; Choose authenticator + (when (and (null imap-auth) (not (eq imap-state 'auth))) + (let ((auths imap-authenticators)) + (while (setq auth (pop auths)) + (if (funcall (nth 1 (assq auth imap-authenticator-alist)) + buffer) + (setq imap-auth auth + auths nil))) + (unless imap-auth + (error "Couldn't figure out authenticator for server")))))) + (message "imap: Connecting to %s...failed" imap-server)) (when (imap-opened buffer) (setq imap-mailbox-data (make-vector imap-mailbox-prime 0)) buffer))) @@ -819,7 +941,10 @@ user and optionally stored in the buffer. If USER and/or PASSWD is specified, the user will not be questioned and the username and/or password is remembered in the buffer." (with-current-buffer (or buffer (current-buffer)) - (when (eq imap-state 'nonauth) + (if (not (eq imap-state 'nonauth)) + (or (eq imap-state 'auth) + (eq imap-state 'select) + (eq imap-state 'examine)) (make-variable-buffer-local 'imap-username) (make-variable-buffer-local 'imap-password) (if user (setq imap-username user)) @@ -1142,6 +1267,18 @@ returned, if ITEMS is a symbol only it's value is returned." (list list)) ",")) +(defun imap-range-to-message-set (range) + (mapconcat + (lambda (item) + (if (consp item) + (format "%d:%d" + (car item) (cdr item)) + (format "%d" item))) + (if (and (listp range) (not (listp (cdr range)))) + (list range) ;; make (1 . 2) into ((1 . 2)) + range) + ",")) + (defun imap-fetch-asynch (uids props &optional nouidfetch buffer) (with-current-buffer (or buffer (current-buffer)) (imap-send-command (format "%sFETCH %s %s" (if nouidfetch "" "UID ") @@ -1355,7 +1492,6 @@ on failure." "Return number of lines in article by looking at the mime bodystructure BODY." (if (listp body) (if (stringp (car body)) - ;; upcase for bug in courier imap server (cond ((and (string= (upcase (car body)) "TEXT") (numberp (nth 7 body))) (nth 7 body)) @@ -1398,9 +1534,21 @@ on failure." (cond ((stringp cmd) (setq cmdstr (concat cmdstr cmd))) ((bufferp cmd) - (setq cmdstr - (concat cmdstr (format "{%d}" (with-current-buffer cmd - (buffer-size))))) + (let ((eol imap-client-eol) + (calcfirst imap-calculate-literal-size-first) + size) + (with-current-buffer cmd + (if calcfirst + (setq size (buffer-size))) + (when (not (equal eol "\r\n")) + ;; XXX modifies buffer! + (goto-char (point-min)) + (while (search-forward "\r\n" nil t) + (replace-match eol))) + (if (not calcfirst) + (setq size (buffer-size)))) + (setq cmdstr + (concat cmdstr (format "{%d}" size)))) (unwind-protect (progn (imap-send-command-1 cmdstr) @@ -1411,11 +1559,6 @@ on failure." (stream imap-stream) (eol imap-client-eol)) (with-current-buffer cmd - (when (not (equal eol "\r\n")) - ;; XXX modifies buffer! - (goto-char (point-min)) - (while (search-forward "\r\n" nil t) - (replace-match eol))) (and imap-log (with-current-buffer (get-buffer-create imap-log) @@ -1447,7 +1590,12 @@ on failure." (< imap-reached-tag tag)) (or (and (not (memq (process-status imap-process) '(open run))) (sit-for 1)) - (accept-process-output imap-process 1))) + (let ((len (/ (point-max) 1024)) + message-log-max) + (unless (< len 10) + (message "imap read: %dk" len)) + (accept-process-output imap-process 1)))) + (message "") (or (assq tag imap-failed-tags) (if imap-continuation 'INCOMPLETE @@ -1843,6 +1991,9 @@ Return nil if no complete line has arrived." ;; resp-text-atom = 1* (defun imap-parse-resp-text-code () + ;; xxx next line for stalker communigate pro 3.3.1 bug + (when (looking-at " \\[") + (imap-forward)) (when (eq (char-after) ?\[) (imap-forward) (cond ((search-forward "PERMANENTFLAGS " nil t) @@ -2063,11 +2214,15 @@ Return nil if no complete line has arrived." ;; ; revisions of this specification. (defun imap-parse-flag-list () - (let ((str (buffer-substring (point) (search-forward ")" nil t))) - pos) - (while (setq pos (string-match "\\\\" str (and pos (+ 2 pos)))) - (setq str (replace-match "\\\\" nil t str))) - (mapcar 'symbol-name (read str)))) + (let (flag-list start) + (assert (eq (char-after) ?\()) + (while (and (not (eq (char-after) ?\))) + (setq start (progn (imap-forward) (point))) + (> (skip-chars-forward "^ )" (imap-point-at-eol)) 0)) + (push (buffer-substring start (point)) flag-list)) + (assert (eq (char-after) ?\))) + (imap-forward) + (nreverse flag-list))) ;; envelope = "(" env-date SP env-subject SP env-from SP env-sender SP ;; env-reply-to SP env-to SP env-cc SP env-bcc SP @@ -2125,7 +2280,10 @@ Return nil if no complete line has arrived." (imap-forward) (while (setq str (imap-parse-string)) (push str strlist) - (imap-forward)) + ;; buggy stalker communigate pro 3.0 doesn't print SPC + ;; between body-fld-param's sometimes + (or (eq (char-after) ?\") + (imap-forward))) (nreverse strlist))) ((imap-parse-nil) nil))) @@ -2256,6 +2414,11 @@ Return nil if no complete line has arrived." (let (subbody) (while (and (eq (char-after) ?\() (setq subbody (imap-parse-body))) + ;; buggy stalker communigate pro 3.0 insert a SPC between + ;; parts in multiparts + (when (and (eq (char-after) ?\ ) + (eq (char-after (1+ (point))) ?\()) + (imap-forward)) (push subbody body)) (imap-forward) (push (imap-parse-string) body);; media-subtype @@ -2284,7 +2447,10 @@ Return nil if no complete line has arrived." (imap-forward) (push (imap-parse-nstring) body);; body-fld-desc (imap-forward) - (push (imap-parse-string) body);; body-fld-enc + ;; next `or' for Sun SIMS bug, it regard body-fld-enc as a + ;; nstring and return NIL instead of defaulting back to 7BIT + ;; as the standard says. + (push (or (imap-parse-nstring) "7BIT") body);; body-fld-enc (imap-forward) (push (imap-parse-number) body);; body-fld-octets @@ -2305,12 +2471,16 @@ Return nil if no complete line has arrived." (push (imap-parse-envelope) body);; envelope (imap-forward) (push (imap-parse-body) body);; body - (imap-forward) - (push (imap-parse-number) body));; body-fld-lines - ((setq lines (imap-parse-number));; body-type-text: - (push lines body));; body-fld-lines + ;; buggy stalker communigate pro 3.0 doesn't print + ;; number of lines in message/rfc822 attachment + (if (eq (char-after) ?\)) + (push 0 body) + (imap-forward) + (push (imap-parse-number) body))) ;; body-fld-lines + ((setq lines (imap-parse-number)) ;; body-type-text: + (push lines body)) ;; body-fld-lines (t - (backward-char)))));; no match... + (backward-char))))) ;; no match... ;; ...and then parse the third one here... diff --git a/lisp/lpath.el b/lisp/lpath.el index be06dbd..324563a 100644 --- a/lisp/lpath.el +++ b/lisp/lpath.el @@ -2,133 +2,112 @@ (defvar byte-compile-default-warnings) -(or (featurep 'path-util) - (load "apel/path-util")) -(add-path "apel") -(add-path "flim") -(unless (module-installed-p 'mel) - ;; FLIM 1.14 may have installed in two "flim" subdirectories. - (push (expand-file-name "flim" - (file-name-directory (get-latest-path "^apel$" t))) - load-path) - (unless (module-installed-p 'mel) - (error " -FLIM package does not found in %s. -Try to re-configure with --with-addpath=FLIM_PATH and run make again. -" - (progn - (add-path "semi") - load-path)))) -(add-path "semi") - (defun maybe-fbind (args) (while args (or (fboundp (car args)) - (fset (car args) 'ignore)) + (defalias (car args) 'ignore)) (setq args (cdr args)))) (defun maybe-bind (args) (mapcar (lambda (var) (unless (boundp var) (set var nil))) args)) -(if (string-match "XEmacs" emacs-version) +(maybe-fbind '(babel-fetch + babel-wash create-image decode-coding-string display-graphic-p + find-image font-create-object gnus-mule-get-coding-system + font-lock-set-defaults + image-size image-type-available-p insert-image + make-temp-file message-xmas-redefine + mail-aliases-setup mm-copy-tree + mule-write-region-no-coding-system put-image + rmail-select-summary rmail-summary-exists rmail-update-summary + sc-cite-regexp set-font-family set-font-size temp-directory + url-view-url vcard-pretty-print + url-insert-file-contents + w3-coding-system-for-mime-charset w3-prepare-buffer w3-region + widget-make-intangible x-defined-colors)) + +(maybe-bind '(adaptive-fill-first-line-regexp + adaptive-fill-regexp babel-history babel-translations + default-enable-multibyte-characters + display-time-mail-function imap-password mail-mode-hook + mc-pgp-always-sign + nnoo-definition-alist + url-current-callback-func url-be-asynchronous + url-current-callback-data url-working-buffer + url-current-mime-headers w3-meta-charset-content-type-regexp + w3-meta-content-type-charset-regexp)) + +(if (featurep 'xemacs) (progn (defvar track-mouse nil) - (maybe-fbind '(posn-point - event-start x-popup-menu - facemenu-get-face window-at coordinates-in-window-p - easy-menu-create-keymaps - read-event internal-find-face internal-next-face-id - make-face-internal set-frame-face-alist frame-face-alist - facemenu-add-new-face make-face-x-resource-internal - set-font-size set-font-family posn-window - run-with-idle-timer mouse-minibuffer-check window-edges - event-click-count track-mouse read-event mouse-movement-p - event-end mouse-scroll-subr overlay-lists delete-overlay - set-face-stipple mail-abbrevs-setup - make-char-table set-char-table-range font-create-object - x-color-values widget-make-intangible error-message-string - w3-form-encode-xwfu gnus-mule-get-coding-system - decode-coding-string mail-aliases-setup - url-view-url w3-prepare-buffer - set-buffer-multibyte - find-non-ascii-charset-region char-charset - find-charset-region - find-coding-systems-region get-charset-property - coding-system-get w3-region - w3-coding-system-for-mime-charset - rmail-summary-exists rmail-select-summary - rmail-update-summary url-retrieve - temp-directory babel-fetch babel-wash - find-coding-systems-for-charsets sc-cite-regexp - vcard-pretty-print image-type-available-p - put-image create-image display-graphic-p - find-image insert-image image-size - make-overlay overlay-put make-symbolic-link - subst-char-in-string)) - (maybe-bind '(global-face-data - mark-active transient-mark-mode mouse-selection-click-count - mouse-selection-click-count-buffer buffer-display-table - font-lock-defaults user-full-name user-login-name - gnus-newsgroup-name gnus-article-x-face-too-ugly + (maybe-fbind '(char-charset + coding-system-get compute-motion coordinates-in-window-p + delete-overlay easy-menu-create-keymaps + error-message-string event-click-count event-end + event-start facemenu-add-new-face facemenu-get-face + find-charset-region find-coding-systems-for-charsets + find-coding-systems-region find-non-ascii-charset-region + frame-face-alist get-charset-property internal-find-face + internal-next-face-id mail-abbrevs-setup make-char-table + make-face-internal make-face-x-resource-internal + make-overlay mouse-minibuffer-check mouse-movement-p + mouse-scroll-subr overlay-buffer overlay-end + overlay-get overlay-lists overlay-put + overlay-start posn-point posn-window + read-event read-event run-with-idle-timer + set-buffer-multibyte set-char-table-range + set-face-stipple set-frame-face-alist track-mouse + url-retrieve w3-form-encode-xwfu window-at + window-edges x-color-values x-popup-menu)) + (maybe-bind '(buffer-display-table + buffer-file-coding-system font-lock-defaults + global-face-data gnus-article-x-face-too-ugly gnus-newsgroup-charset gnus-newsgroup-emphasis-alist - mail-mode-hook - adaptive-fill-first-line-regexp adaptive-fill-regexp - url-current-mime-headers buffer-file-coding-system - w3-image-mappings url-current-mime-type - w3-meta-content-type-charset-regexp - w3-meta-charset-content-type-regexp - url-current-callback-func url-current-callback-data - url-be-asynchronous temporary-file-directory - babel-translations babel-history - display-time-mail-function imap-password - ))) - (maybe-bind '(mail-mode-hook - enable-multibyte-characters browse-url-browser-function - adaptive-fill-first-line-regexp adaptive-fill-regexp - url-current-mime-headers help-echo-owns-message - w3-meta-content-type-charset-regexp - w3-meta-charset-content-type-regexp - babel-translations babel-history - display-time-mail-function imap-password)) - (maybe-fbind '(color-instance-rgb-components - temp-directory - glyph-width annotation-glyph window-pixel-width glyph-height - window-pixel-height map-extents - make-color-instance color-instance-name specifier-instance - device-type device-class get-popup-menu-response event-object - add-submenu set-font-family - font-create-object set-font-size frame-device find-face - set-extent-property make-extent characterp display-error - set-face-doc-string frame-property face-doc-string - button-press-event-p next-command-event - widget-make-intangible glyphp make-glyph set-glyph-image - set-glyph-property event-glyph glyph-property event-point - device-on-window-system-p make-gui-button Info-goto-node - pp-to-string color-name - gnus-mule-get-coding-system decode-coding-string - mail-aliases-setup - url-view-url w3-prepare-buffer - char-int - annotationp delete-annotation make-image-specifier - make-annotation events-to-keys - w3-do-setup w3-region - w3-coding-system-for-mime-charset - rmail-summary-exists rmail-select-summary rmail-update-summary - url-generic-parse-url valid-image-instantiator-format-p - babel-fetch babel-wash sc-cite-regexp - put-image create-image display-graphic-p - find-image insert-image image-size - vcard-pretty-print image-type-available-p - coding-system-get find-coding-system - find-coding-systems-for-charsets find-coding-systems-region - font-lock-set-defaults function-max-args get-charset-property - make-symbolic-link map-extents smiley-encode-buffer - toolbar-gnus subst-char-in-string))) + gnus-newsgroup-name mark-active + mouse-selection-click-count + mouse-selection-click-count-buffer + temporary-file-directory transient-mark-mode + url-current-mime-type + user-full-name user-login-name + w3-image-mappings))) + (maybe-bind '(browse-url-browser-function + enable-multibyte-characters help-echo-owns-message)) + (maybe-fbind '(Info-goto-node + add-submenu annotation-glyph annotationp babel-as-string + button-press-event-p char-int characterp color-instance-name + color-instance-rgb-components color-name delete-annotation + device-class device-on-window-system-p device-type + display-error event-glyph event-object event-point + events-to-keys face-doc-string find-face frame-device + frame-property get-popup-menu-response glyph-height + glyph-property glyph-width glyphp make-annotation + make-event + make-color-instance make-extent make-glyph make-gui-button + make-image-specifier map-extents next-command-event + pp-to-string read-color set-extent-property + set-face-doc-string set-glyph-image set-glyph-property + specifier-instance url-generic-parse-url + valid-image-instantiator-format-p w3-do-setup + window-pixel-height window-pixel-width))) + +;; T-gnus. +(if (featurep 'xemacs) + (progn + (maybe-fbind '(propertize)) + (maybe-bind '(mh-lib-progs))) + ;; FSFmacs + (maybe-fbind '(charsetp + function-max-args propertize smiley-encode-buffer)) + (if (boundp 'MULE) + (progn + (maybe-fbind '(coding-system-get + file-name-extension find-coding-systems-region + get-charset-property)) + (maybe-bind '(mh-lib-progs))))) -(setq load-path (cons "." load-path)) (require 'custom) -(defun md5 (object &optional start end coding noerror) +(defun nnkiboze-score-file (a) ) (provide 'lpath) diff --git a/lisp/mail-parse.el b/lisp/mail-parse.el index d0ce7da..95a3359 100644 --- a/lisp/mail-parse.el +++ b/lisp/mail-parse.el @@ -43,10 +43,11 @@ (require 'rfc2047) (require 'rfc2045) -(defalias 'mail-header-parse-content-type 'rfc2231-parse-string) -(defalias 'mail-header-parse-content-disposition 'rfc2231-parse-string) +(defalias 'mail-header-parse-content-type 'rfc2231-parse-qp-string) +(defalias 'mail-header-parse-content-disposition 'rfc2231-parse-qp-string) (defalias 'mail-content-type-get 'rfc2231-get-value) -(defalias 'mail-header-encode-parameter 'rfc2045-encode-string) +;(defalias 'mail-header-encode-parameter 'rfc2045-encode-string) +(defalias 'mail-header-encode-parameter 'rfc2231-encode-string) (defalias 'mail-header-remove-comments 'ietf-drums-remove-comments) (defalias 'mail-header-remove-whitespace 'ietf-drums-remove-whitespace) diff --git a/lisp/mail-source.el b/lisp/mail-source.el index 3b0e381..7b5f50e 100644 --- a/lisp/mail-source.el +++ b/lisp/mail-source.el @@ -25,23 +25,193 @@ ;;; Code: -(eval-when-compile (require 'cl)) -(require 'nnheader) +(eval-when-compile + (require 'cl) + (require 'imap) + (eval-when-compile (defvar display-time-mail-function))) (eval-and-compile (defvar pop3-leave-mail-on-server) (autoload 'pop3-movemail "pop3") - (autoload 'pop3-get-message-count "pop3")) + (autoload 'pop3-get-message-count "pop3") + (autoload 'nnheader-cancel-timer "nnheader") + (autoload 'nnheader-run-at-time "nnheader")) (require 'format-spec) (defgroup mail-source nil "The mail-fetching library." :group 'gnus) +;; Define these at compile time to avoid dragging in imap always. +(defconst mail-source-imap-authenticators + (eval-when-compile + (mapcar (lambda (a) + (list 'const (car a))) + imap-authenticator-alist))) +(defconst mail-source-imap-streams + (eval-when-compile + (mapcar (lambda (a) + (list 'const (car a))) + imap-stream-alist))) + (defcustom mail-sources nil "*Where the mail backends will look for incoming mail. -This variable is a list of mail source specifiers." +This variable is a list of mail source specifiers. +See Info node `(gnus)Mail Source Specifiers'." :group 'mail-source - :type 'sexp) + :type `(repeat + (choice :format "%[Value Menu%] %v" + :value (file) + (cons :tag "Spool file" + (const :format "" file) + (checklist :tag "Options" :greedy t + (group :inline t + (const :format "" :value :path) + file))) + (cons :tag "Several files in a directory" + (const :format "" directory) + (checklist :tag "Options" :greedy t + (group :inline t + (const :format "" :value :path) + (directory :tag "Path")) + (group :inline t + (const :format "" :value :suffix) + (string :tag "Suffix")) + (group :inline t + (const :format "" :value :predicate) + (function :tag "Predicate")) + (group :inline t + (const :format "" :value :prescript) + (string :tag "Prescript")) + (group :inline t + (const :format "" :value :postscript) + (string :tag "Postscript")) + (group :inline t + (const :format "" :value :plugged) + (boolean :tag "Plugged")))) + (cons :tag "POP3 server" + (const :format "" pop) + (checklist :tag "Options" :greedy t + (group :inline t + (const :format "" :value :server) + (string :tag "Server")) + (group :inline t + (const :format "" :value :port) + (choice :tag "Port" + :value "pop3" + (number :format "%v") + (string :format "%v"))) + (group :inline t + (const :format "" :value :user) + (string :tag "User")) + (group :inline t + (const :format "" :value :password) + (string :tag "Password")) + (group :inline t + (const :format "" :value :program) + (string :tag "Program")) + (group :inline t + (const :format "" :value :prescript) + (string :tag "Prescript")) + (group :inline t + (const :format "" :value :postscript) + (string :tag "Postscript")) + (group :inline t + (const :format "" :value :function) + (function :tag "Function")) + (group :inline t + (const :format "" + :value :authentication) + (choice :tag "Authentication" + :value apop + (const password) + (const apop))) + (group :inline t + (const :format "" :value :plugged) + (boolean :tag "Plugged")))) + (cons :tag "Maildir (qmail, postfix...)" + (const :format "" maildir) + (checklist :tag "Options" :greedy t + (group :inline t + (const :format "" :value :path) + (directory :tag "Path")) + (group :inline t + (const :format "" :value :plugged) + (boolean :tag "Plugged")))) + (cons :tag "IMAP server" + (const :format "" imap) + (checklist :tag "Options" :greedy t + (group :inline t + (const :format "" :value :server) + (string :tag "Server")) + (group :inline t + (const :format "" :value :port) + (choice :tag "Port" + :value 143 + number string)) + (group :inline t + (const :format "" :value :user) + (string :tag "User")) + (group :inline t + (const :format "" :value :password) + (string :tag "Password")) + (group :inline t + (const :format "" :value :stream) + (choice :tag "Stream" + :value network + ,@mail-source-imap-streams)) + (group :inline t + (const :format "" + :value :authenticator) + (choice :tag "Authenticator" + :value login + ,@mail-source-imap-authenticators)) + (group :inline t + (const :format "" :value :mailbox) + (string :tag "Mailbox" + :value "INBOX")) + (group :inline t + (const :format "" :value :predicate) + (string :tag "Predicate" + :value "UNSEEN UNDELETED")) + (group :inline t + (const :format "" :value :fetchflag) + (string :tag "Fetchflag" + :value "\\Deleted")) + (group :inline t + (const :format "" + :value :dontexpunge) + (boolean :tag "Dontexpunge")) + (group :inline t + (const :format "" :value :plugged) + (boolean :tag "Plugged")))) + (cons :tag "Webmail server" + (const :format "" webmail) + (checklist :tag "Options" :greedy t + (group :inline t + (const :format "" :value :subtype) + ;; Should be generated from + ;; `webmail-type-definition', but we + ;; can't require webmail without W3. + (choice :tag "Subtype" + :value hotmail + (const hotmail) + (const yahoo) + (const netaddress) + (const netscape) + (const my-deja))) + (group :inline t + (const :format "" :value :user) + (string :tag "User")) + (group :inline t + (const :format "" :value :password) + (string :tag "Password")) + (group :inline t + (const :format "" + :value :dontexpunge) + (boolean :tag "Dontexpunge")) + (group :inline t + (const :format "" :value :plugged) + (boolean :tag "Plugged"))))))) (defcustom mail-source-primary-source nil "*Primary source for incoming mail. @@ -64,11 +234,16 @@ If non-nil, this maildrop will be checked periodically for new mail." :group 'mail-source :type 'integer) -(defcustom mail-source-delete-incoming nil +(defcustom mail-source-delete-incoming t "*If non-nil, delete incoming files after handling." :group 'mail-source :type 'boolean) +(defcustom mail-source-incoming-file-prefix "Incoming" + "Prefix for file name for storing incoming mail" + :group 'mail-source + :type 'string) + (defcustom mail-source-report-new-mail-interval 5 "Interval in minutes between checks for new mail." :group 'mail-source @@ -99,7 +274,7 @@ Common keywords should be listed here.") (:prescript-delay) (:postscript) (:path (or (getenv "MAIL") - (concat "/usr/spool/mail/" (user-login-name))))) + (expand-file-name (user-login-name) rmail-spool-directory)))) (directory (:path) (:suffix ".spool") @@ -300,7 +475,8 @@ Pass INFO on to CALLBACK." (let ((incoming (mail-source-make-complex-temp-name (expand-file-name - "Incoming" mail-source-directory)))) + mail-source-incoming-file-prefix + mail-source-directory)))) (unless (file-exists-p (file-name-directory incoming)) (make-directory (file-name-directory incoming) t)) (rename-file mail-source-crash-box incoming t))))))) @@ -487,7 +663,15 @@ If ARGS, PROMPT is used as an argument to `format'." (or leave (and (boundp 'pop3-leave-mail-on-server) pop3-leave-mail-on-server)))) - (save-excursion (pop3-movemail mail-source-crash-box)))))) + (condition-case err + (save-excursion (pop3-movemail mail-source-crash-box)) + (error + ;; We nix out the password in case the error + ;; was because of a wrong password being given. + (setq mail-source-password-cache + (delq (assoc from mail-source-password-cache) + mail-source-password-cache)) + (signal (car err) (cdr err)))))))) (if result (progn (when (eq authentication 'password) @@ -538,7 +722,15 @@ If ARGS, PROMPT is used as an argument to `format'." (pop3-port port) (pop3-authentication-scheme (if (eq authentication 'apop) 'apop 'pass))) - (save-excursion (pop3-get-message-count)))))) + (condition-case err + (save-excursion (pop3-get-message-count)) + (error + ;; We nix out the password in case the error + ;; was because of a wrong password being given. + (setq mail-source-password-cache + (delq (assoc from mail-source-password-cache) + mail-source-password-cache)) + (signal (car err) (cdr err)))))))) (if result ;; Inform display-time that we have new mail. (setq mail-source-new-mail-available (> result 0)) @@ -559,7 +751,10 @@ If ARGS, PROMPT is used as an argument to `format'." (defvar mail-source-report-new-mail-timer nil) (defvar mail-source-report-new-mail-idle-timer nil) -(eval-when-compile (require 'timer)) +(eval-when-compile + (if (featurep 'xemacs) + (require 'itimer) + (require 'timer))) (defun mail-source-start-idle-timer () ;; Start our idle timer if necessary, so we delay the check until the @@ -570,8 +765,8 @@ If ARGS, PROMPT is used as an argument to `format'." mail-source-idle-time-delay nil (lambda () - (setq mail-source-report-new-mail-idle-timer nil) - (mail-source-check-pop mail-source-primary-source)))) + (mail-source-check-pop mail-source-primary-source) + (setq mail-source-report-new-mail-idle-timer nil)))) ;; Since idle timers created when Emacs is already in the idle ;; state don't get activated until Emacs _next_ becomes idle, we ;; need to force our timer to be considered active now. We do @@ -590,19 +785,22 @@ This only works when `display-time' is enabled." (> (prefix-numeric-value arg) 0)))) (setq mail-source-report-new-mail on) (and mail-source-report-new-mail-timer - (cancel-timer mail-source-report-new-mail-timer)) + (nnheader-cancel-timer mail-source-report-new-mail-timer)) (and mail-source-report-new-mail-idle-timer - (cancel-timer mail-source-report-new-mail-idle-timer)) + (nnheader-cancel-timer mail-source-report-new-mail-idle-timer)) (setq mail-source-report-new-mail-timer nil) (setq mail-source-report-new-mail-idle-timer nil) (if on (progn (require 'time) + ;; display-time-mail-function is an Emacs 21 feature. (setq display-time-mail-function #'mail-source-new-mail-p) ;; Set up the main timer. (setq mail-source-report-new-mail-timer - (run-at-time t (* 60 mail-source-report-new-mail-interval) - #'mail-source-start-idle-timer)) + (nnheader-run-at-time + (* 60 mail-source-report-new-mail-interval) + (* 60 mail-source-report-new-mail-interval) + #'mail-source-start-idle-timer)) ;; When you get new mail, clear "Mail" from the mode line. (add-hook 'nnmail-post-get-new-mail-hook 'display-time-event-handler) @@ -637,13 +835,16 @@ This only works when `display-time' is enabled." (with-temp-file mail-source-crash-box (insert-file-contents file) (goto-char (point-min)) - (unless (looking-at "\n*From ") - (insert "From maildir " - (current-time-string) "\n")) - (while (re-search-forward "^From " nil t) - (replace-match ">From ")) - (goto-char (point-max)) - (insert "\n\n")) +;;; ;; Unix mail format +;;; (unless (looking-at "\n*From ") +;;; (insert "From maildir " +;;; (current-time-string) "\n")) +;;; (while (re-search-forward "^From " nil t) +;;; (replace-match ">From ")) +;;; (goto-char (point-max)) +;;; (insert "\n\n") + ;; MMDF mail format + (insert "\001\001\001\001\n")) (delete-file file))))) (incf found (mail-source-callback callback file)))))) found))) @@ -659,7 +860,12 @@ This only works when `display-time' is enabled." (autoload 'imap-close "imap") (autoload 'imap-error-text "imap") (autoload 'imap-message-flags-add "imap") - (autoload 'imap-list-to-message-set "imap")) + (autoload 'imap-list-to-message-set "imap") + (autoload 'imap-range-to-message-set "imap") + (autoload 'nnheader-ms-strip-cr "nnheader")) + +(defvar mail-source-imap-file-coding-system 'binary + "Coding system for the crashbox made by `mail-source-fetch-imap'.") (defun mail-source-fetch-imap (source callback) "Fetcher for imap sources." @@ -675,10 +881,13 @@ This only works when `display-time' is enabled." user (or (cdr (assoc from mail-source-password-cache)) password) buf) (imap-mailbox-select mailbox nil buf)) - (let (str - (coding-system-for-write 'binary) - (output-coding-system 'binary)) + (let ((coding-system-for-write mail-source-imap-file-coding-system) + (output-coding-system mail-source-imap-file-coding-system) + str) (with-temp-file mail-source-crash-box + ;; Avoid converting 8-bit chars from inserted strings to + ;; multibyte. + (set-buffer-multibyte nil) ;; remember password (with-current-buffer buf (when (or imap-password @@ -698,7 +907,8 @@ This only works when `display-time' is enabled." (incf found (mail-source-callback callback server)) (when (and remove fetchflag) (imap-message-flags-add - (imap-list-to-message-set remove) fetchflag nil buf)) + (imap-range-to-message-set (gnus-compress-sequence remove)) + fetchflag nil buf)) (if dontexpunge (imap-mailbox-unselect buf) (imap-mailbox-close buf)) diff --git a/lisp/mailheader.el b/lisp/mailheader.el deleted file mode 100644 index 796ae75..0000000 --- a/lisp/mailheader.el +++ /dev/null @@ -1,182 +0,0 @@ -;;; mail-header.el --- Mail header parsing, merging, formatting - -;; Copyright (C) 1996 by Free Software Foundation, Inc. - -;; Author: Erik Naggum -;; Keywords: tools, mail, news - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; This package provides an abstraction to RFC822-style messages, used in -;; mail news, and some other systems. The simple syntactic rules for such -;; headers, such as quoting and line folding, are routinely reimplemented -;; in many individual packages. This package removes the need for this -;; redundancy by representing message headers as association lists, -;; offering functions to extract the set of headers from a message, to -;; parse individual headers, to merge sets of headers, and to format a set -;; of headers. - -;; The car of each element in the message-header alist is a symbol whose -;; print name is the name of the header, in all lower-case. The cdr of an -;; element depends on the operation. After extracting headers from a -;; message, it is a string, the value of the header. An extracted set of -;; headers may be parsed further, which may turn it into a list, whose car -;; is the original value and whose subsequent elements depend on the -;; header. For formatting, it is evaluated to obtain the strings to be -;; inserted. For merging, one set of headers consists of strings, while -;; the other set will be evaluated with the symbols in the first set of -;; headers bound to their respective values. - -;;; Code: - -(eval-when-compile (require 'cl)) - -;; Make the byte-compiler shut up. -(defvar headers) - -(defun mail-header-extract () - "Extract headers from current buffer after point. -Returns a header alist, where each element is a cons cell (name . value), -where NAME is a symbol, and VALUE is the string value of the header having -that name." - (let ((message-headers ()) (top (point)) - start end) - (while (and (setq start (point)) - (> (skip-chars-forward "^\0- :") 0) - (eq (char-after) ?:) - (setq end (point)) - (progn (forward-char) - (> (skip-chars-forward " \t") 0))) - (let ((header (intern (downcase (buffer-substring start end)))) - (value (list (buffer-substring - (point) (progn (end-of-line) (point)))))) - (while (progn (forward-char) (> (skip-chars-forward " \t") 0)) - (push (buffer-substring (point) (progn (end-of-line) (point))) - value)) - (push (if (cdr value) - (cons header (mapconcat #'identity (nreverse value) " ")) - (cons header (car value))) - message-headers))) - (goto-char top) - (nreverse message-headers))) - -(defun mail-header-extract-no-properties () - "Extract headers from current buffer after point, without properties. -Returns a header alist, where each element is a cons cell (name . value), -where NAME is a symbol, and VALUE is the string value of the header having -that name." - (mapcar - (lambda (elt) - (set-text-properties 0 (length (cdr elt)) nil (cdr elt)) - elt) - (mail-header-extract))) - -(defun mail-header-parse (parsing-rules headers) - "Apply PARSING-RULES to HEADERS. -PARSING-RULES is an alist whose keys are header names (symbols) and whose -value is a parsing function. The function takes one argument, a string, -and return a list of values, which will destructively replace the value -associated with the key in HEADERS, after being prepended with the original -value." - (dolist (rule parsing-rules) - (let ((header (assq (car rule) headers))) - (when header - (if (consp (cdr header)) - (setf (cddr header) (funcall (cdr rule) (cadr header))) - (setf (cdr header) - (cons (cdr header) (funcall (cdr rule) (cdr header)))))))) - headers) - -(defsubst mail-header (header &optional header-alist) - "Return the value associated with header HEADER in HEADER-ALIST. -If the value is a string, it is the original value of the header. If the -value is a list, its first element is the original value of the header, -with any subsequent elements being the result of parsing the value. -If HEADER-ALIST is nil, the dynamically bound variable `headers' is used." - (cdr (assq header (or header-alist headers)))) - -(defun mail-header-set (header value &optional header-alist) - "Set the value associated with header HEADER to VALUE in HEADER-ALIST. -HEADER-ALIST defaults to the dynamically bound variable `headers' if nil. -See `mail-header' for the semantics of VALUE." - (let* ((alist (or header-alist headers)) - (entry (assq header alist))) - (if entry - (setf (cdr entry) value) - (nconc alist (list (cons header value))))) - value) - -(defsetf mail-header (header &optional header-alist) (value) - `(mail-header-set ,header ,value ,header-alist)) - -(defun mail-header-merge (merge-rules headers) - "Return a new header alist with MERGE-RULES applied to HEADERS. -MERGE-RULES is an alist whose keys are header names (symbols) and whose -values are forms to evaluate, the results of which are the new headers. It -should be a string or a list of string. The first element may be nil to -denote that the formatting functions must use the remaining elements, or -skip the header altogether if there are no other elements. - The macro `mail-header' can be used to access headers in HEADERS." - (mapcar - (lambda (rule) - (cons (car rule) (eval (cdr rule)))) - merge-rules)) - -(defvar mail-header-format-function - (lambda (header value) - "Function to format headers without a specified formatting function." - (insert (capitalize (symbol-name header)) - ": " - (if (consp value) (car value) value) - "\n"))) - -(defun mail-header-format (format-rules headers) - "Use FORMAT-RULES to format HEADERS and insert into current buffer. -FORMAT-RULES is an alist whose keys are header names (symbols), and whose -values are functions that format the header, the results of which are -inserted, unless it is nil. The function takes two arguments, the header -symbol, and the value of that header. If the function itself is nil, the -default action is to insert the value of the header, unless it is nil. -The headers are inserted in the order of the FORMAT-RULES. -A key of t represents any otherwise unmentioned headers. -A key of nil has as its value a list of defaulted headers to ignore." - (let ((ignore (append (cdr (assq nil format-rules)) - (mapcar #'car format-rules)))) - (dolist (rule format-rules) - (let* ((header (car rule)) - (value (mail-header header))) - (cond ((null header) 'ignore) - ((eq header t) - (dolist (defaulted headers) - (unless (memq (car defaulted) ignore) - (let* ((header (car defaulted)) - (value (cdr defaulted))) - (if (cdr rule) - (funcall (cdr rule) header value) - (funcall mail-header-format-function header value)))))) - (value - (if (cdr rule) - (funcall (cdr rule) header value) - (funcall mail-header-format-function header value)))))) - (insert "\n"))) - -(provide 'mailheader) - -;;; mail-header.el ends here diff --git a/lisp/message.el b/lisp/message.el index baeccc8..8236075 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -1,4 +1,4 @@ -;;; message.el --- composing mail and news messages +;;; message.el --- composing mail and news messages -*- coding: iso-latin-1 -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Free Software Foundation, Inc. @@ -9,7 +9,7 @@ ;; Tatsuya Ichikawa ;; Katsumi Yamaoka ;; Kiyokazu SUTO -;; Keywords: mail, news, MIME +;; Keywords: mail, news ;; This file is part of GNU Emacs. @@ -43,6 +43,9 @@ (require 'mailheader) (require 'nnheader) +;; This is apparently necessary even though things are autoloaded: +(if (featurep 'xemacs) + (require 'mail-abbrevs)) (require 'mime-edit) (eval-when-compile (require 'static)) @@ -194,10 +197,10 @@ To disable checking of long signatures, for instance, add Don't touch this variable unless you really know what you're doing. Checks include subject-cmsg multiple-headers sendsys message-id from -long-lines control-chars size new-text redirected-followup signature -approved sender empty empty-headers message-id from subject -shorten-followup-to existing-newsgroups buffer-file-name unchanged -newsgroups." +long-lines control-chars size new-text quoting-style +redirected-followup signature approved sender empty empty-headers +message-id from subject shorten-followup-to existing-newsgroups +buffer-file-name unchanged newsgroups." :group 'message-news :type '(repeat sexp)) @@ -800,13 +803,13 @@ actually occur." (defvar message-user-agent nil "String of the form of PRODUCT/VERSION. Used for User-Agent header field.") -;; Ignore errors in case this is used in Emacs 19. -;; Don't use ignore-errors because this is copied into loaddefs.el. +(static-when (boundp 'MULE) + (require 'reporter));; `define-mail-user-agent' is here. + ;;;###autoload -(ignore-errors - (define-mail-user-agent 'message-user-agent - 'message-mail 'message-send-and-exit - 'message-kill-buffer 'message-send-hook)) +(define-mail-user-agent 'message-user-agent + 'message-mail 'message-send-and-exit + 'message-kill-buffer 'message-send-hook) (defvar message-mh-deletable-headers '(Message-ID Date Lines Sender) "If non-nil, delete the deletable headers before feeding to mh.") @@ -844,18 +847,34 @@ Valid valued are `unique' and `unsent'." :type '(choice (const :tag "unique" unique) (const :tag "unsent" unsent))) -(defcustom message-default-charset nil +(defcustom message-default-charset + (and (featurep 'xemacs) (not (featurep 'mule)) 'iso-8859-1) "Default charset used in non-MULE XEmacsen." :group 'message :type 'symbol) -(defcustom message-dont-reply-to-names rmail-dont-reply-to-names +(defcustom message-dont-reply-to-names + (and (boundp 'rmail-dont-reply-to-names) rmail-dont-reply-to-names) "*A regexp specifying names to prune when doing wide replies. A value of nil means exclude your own name only." :group 'message :type '(choice (const :tag "Yourself" nil) regexp)) +(defvar message-shoot-gnksa-feet nil + "*A list of GNKSA feet you are allowed to shoot. +Gnus gives you all the opportunity you could possibly want for +shooting yourself in the foot. Also, Gnus allows you to shoot the +feet of Good Net-Keeping Seal of Approval. The following are foot +candidates: +`empty-article' Allow you to post an empty article; +`quoted-text-only' Allow you to post quoted text only; +`multiple-copies' Allow you to post multiple copies.") + +(defsubst message-gnksa-enable-p (feature) + (or (not (listp message-shoot-gnksa-feet)) + (memq feature message-shoot-gnksa-feet))) + ;;; Internal variables. ;;; Well, not really internal. @@ -1140,7 +1159,7 @@ See also the documentations for the following variables: (setq message-font-lock-last-position nil))) (defvar message-font-lock-keywords-1 - (let ((content "[ \t]*\\(.+\\(\n[ \t].*\\)*\\)")) + (let ((content "[ \t]*\\(.+\\(\n[ \t].*\\)*\\)\n?")) `((,(concat "^\\([Tt]o:\\)" content) (1 'message-header-name-face) (2 'message-header-to-face nil t)) @@ -1244,14 +1263,22 @@ The cdr of ech entry is a function for applying the face to a region.") (defcustom message-send-mail-partially-limit 1000000 "The limitation of messages sent as message/partial. -The lower bound of message size in characters, beyond which the message +The lower bound of message size in characters, beyond which the message should be sent in several parts. If it is nil, the size is unlimited." :group 'message-buffers :type '(choice (const :tag "unlimited" nil) (integer 1000000))) +(defcustom message-alternative-emails nil + "A regexp to match the alternative email addresses. +The first matched address (not primary one) is used in the From field." + :group 'message-headers + :type '(choice (const :tag "Always use primary" nil) + regexp)) + ;;; Internal variables. +(defvar message-sending-message "Sending...") (defvar message-buffer-list nil) (defvar message-this-is-news nil) (defvar message-this-is-mail nil) @@ -1347,6 +1374,9 @@ should be sent in several parts. If it is nil, the size is unlimited." (User-Agent)) "Alist used for formatting headers.") +(defvar message-options nil + "Some saved answers when sending message.") + (eval-and-compile (autoload 'message-setup-toolbar "messagexmas") (autoload 'mh-new-draft-name "mh-comp") @@ -1398,12 +1428,12 @@ should be sent in several parts. If it is nil, the size is unlimited." (progn (forward-line ,(or n 1)) (point)))) (defun message-unquote-tokens (elems) - "Remove leading and trailing double quotes (\") from quoted strings -in list." + "Remove double quotes (\") from strings in list." (mapcar (lambda (item) - (if (string-match "^\"\\(.*\\)\"$" item) - (match-string 1 item) - item)) + (while (string-match "^\\(.*\\)\"\\(.*\\)$" item) + (setq item (concat (match-string 1 item) + (match-string 2 item)))) + item) elems)) (defun message-tokenize-header (header &optional separator) @@ -1519,7 +1549,7 @@ is used by default." (let ((regexp (if (stringp gnus-list-identifiers) gnus-list-identifiers (mapconcat 'identity gnus-list-identifiers " *\\|")))) - (if (string-match (concat "\\(\\(\\(Re: +\\)?\\(" regexp + (if (string-match (concat "\\(\\(\\(Re: +\\)?\\(" regexp " *\\)\\)+\\(Re: +\\)?\\)") subject) (concat (substring subject 0 (match-beginning 1)) (or (match-string 3 subject) @@ -1836,20 +1866,6 @@ M-RET message-newline-and-reformat (break the line and reformat)." (error "Face %s not configured for %s mode" face mode-name))) "") facemenu-remove-face-function t) - (make-local-variable 'paragraph-separate) - (make-local-variable 'paragraph-start) - ;; `-- ' precedes the signature. `-----' appears at the start of the - ;; lines that delimit forwarded messages. - ;; Lines containing just >= 3 dashes, perhaps after whitespace, - ;; are also sometimes used and should be separators. - (setq paragraph-start - (concat (regexp-quote mail-header-separator) - "$\\|[ \t]*[a-z0-9A-Z]*>+[ \t]*$\\|[ \t]*$\\|" - "-- $\\|---+$\\|" - page-delimiter - ;;!!! Uhm... shurely this can't be right? - "[> " (regexp-quote message-yank-prefix) "]+$")) - (setq paragraph-separate paragraph-start) (make-local-variable 'message-reply-headers) (setq message-reply-headers nil) (make-local-variable 'message-user-agent) @@ -1859,6 +1875,7 @@ M-RET message-newline-and-reformat (break the line and reformat)." (make-local-variable 'message-parameter-alist) (setq message-parameter-alist (copy-sequence message-startup-parameter-alist)) + (message-setup-fill-variables) ;;(when (fboundp 'mail-hist-define-keys) ;; (mail-hist-define-keys)) (if (featurep 'xemacs) @@ -1878,21 +1895,42 @@ M-RET message-newline-and-reformat (break the line and reformat)." (mail-abbrevs-setup) (mail-aliases-setup))) (message-set-auto-save-file-name) + (make-local-variable 'indent-tabs-mode) ;Turn off tabs for indentation. + (setq indent-tabs-mode nil) + (run-hooks 'text-mode-hook 'message-mode-hook)) + +(defun message-setup-fill-variables () + "Setup message fill variables." + (make-local-variable 'paragraph-separate) + (make-local-variable 'paragraph-start) (make-local-variable 'adaptive-fill-regexp) - (setq adaptive-fill-regexp - (concat "[ \t]*[-a-z0-9A-Z]*\\(>[ \t]*\\)+[ \t]*\\|" - adaptive-fill-regexp)) (unless (boundp 'adaptive-fill-first-line-regexp) (setq adaptive-fill-first-line-regexp nil)) (make-local-variable 'adaptive-fill-first-line-regexp) - (setq adaptive-fill-first-line-regexp - (concat "[ \t]*[-a-z0-9A-Z]*\\(>[ \t]*\\)+[ \t]*\\|" - adaptive-fill-first-line-regexp)) (make-local-variable 'auto-fill-inhibit-regexp) - (setq auto-fill-inhibit-regexp "^[A-Z][^: \n\t]+:") - (make-local-variable 'indent-tabs-mode) ;Turn off tabs for indentation. - (setq indent-tabs-mode nil) - (run-hooks 'text-mode-hook 'message-mode-hook)) + (let ((quote-prefix-regexp + (concat + "[ \t]*" ; possible initial space + "\\(\\(" (regexp-quote message-yank-prefix) "\\|" ; user's prefix + "\\w+>\\|" ; supercite-style prefix + "[|:>]" ; standard prefix + "\\)[ \t]*\\)+"))) ; possible space after each prefix + (setq paragraph-start + (concat + (regexp-quote mail-header-separator) "$\\|" + "[ \t]*$\\|" ; blank lines + "-- $\\|" ; signature delimiter + "---+$\\|" ; delimiters for forwarded messages + page-delimiter "$\\|" ; spoiler warnings + ".*wrote:$\\|" ; attribution lines + quote-prefix-regexp "$")) ; empty lines in quoted text + (setq paragraph-separate paragraph-start) + (setq adaptive-fill-regexp + (concat quote-prefix-regexp "\\|" adaptive-fill-regexp)) + (setq adaptive-fill-first-line-regexp + (concat quote-prefix-regexp "\\|" + adaptive-fill-first-line-regexp)) + (setq auto-fill-inhibit-regexp "^[A-Z][^: \n\t]+:"))) @@ -2030,7 +2068,8 @@ With the prefix argument FORCE, insert the header anyway." (mail-fetch-field "to") (not (string-match "\\` *\\'" (mail-fetch-field "to")))) (insert ", ")) - (insert (or (message-fetch-reply-field "reply-to") + (insert (or (message-fetch-reply-field "mail-reply-to") + (message-fetch-reply-field "reply-to") (message-fetch-reply-field "from") ""))) (defun message-widen-reply () @@ -2638,30 +2677,37 @@ It should typically alter the sending method in some way or other." (put-text-property (point-min) (point-max) 'read-only nil)) (run-hooks 'message-send-hook) (message-fix-before-sending) - (message "Sending...") + (message message-sending-message) (let ((message-encoding-buffer (message-generate-new-buffer-clone-locals " message encoding")) (message-edit-buffer (current-buffer)) (message-mime-mode mime-edit-mode-flag) (alist message-send-method-alist) (success t) - elem sent) + elem sent + (message-options message-options)) + (message-options-set-recipient) (save-excursion (set-buffer message-encoding-buffer) (erase-buffer) - (insert-buffer message-edit-buffer) + ;; Avoid copying text props. + (insert (with-current-buffer message-edit-buffer + (buffer-substring-no-properties (point-min) (point-max)))) (funcall message-encode-function) (while (and success (setq elem (pop alist))) - (when (or (not (funcall (cadr elem))) - (and (or (not (memq (car elem) - message-sent-message-via)) - (y-or-n-p - (format - "Already sent message via %s; resend? " - (car elem)))) - (setq success (funcall (caddr elem) arg)))) - (setq sent t)))) + (when (funcall (cadr elem)) + (when (and (or (not (memq (car elem) + message-sent-message-via)) + (if (or (message-gnksa-enable-p 'multiple-copies) + (not (eq (car elem) 'news))) + (y-or-n-p + (format + "Already sent message via %s; resend? " + (car elem))) + (error "Denied posting -- multiple copies."))) + (setq success (funcall (caddr elem) arg))) + (setq sent t))))) (unless (or sent (not success)) (error "No methods specified to send by")) (prog1 @@ -2670,7 +2716,7 @@ It should typically alter the sending method in some way or other." (save-excursion (run-hooks 'message-sent-hook)) (message "Sending...done") - ;; Mark the buffer as unmodified and delete autosave. + ;; Mark the buffer as unmodified and delete auto-save. (set-buffer-modified-p nil) (delete-auto-save-file-if-necessary t) (message-disassociate-draft) @@ -2808,6 +2854,12 @@ This sub function is for exclusive use of `message-send-mail'." (defun message-send-mail-partially () "Sendmail as message/partial." + ;; replace the header delimiter with a blank line + (goto-char (point-min)) + (re-search-forward + (concat "^" (regexp-quote mail-header-separator) "\n")) + (replace-match "\n") + (run-hooks 'message-send-mail-hook) (let ((p (goto-char (point-min))) (tembuf (message-generate-new-buffer-clone-locals " message temp")) (curbuf (current-buffer)) @@ -2909,9 +2961,15 @@ This sub function is for exclusive use of `message-send-mail'." ;; require one newline at the end. (or (= (preceding-char) ?\n) (insert ?\n)) - (when (and news + (when + (save-restriction + (message-narrow-to-headers) + (and news (or (message-fetch-field "cc") - (message-fetch-field "to"))) + (message-fetch-field "to")) + (let ((ct (mime-read-Content-Type))) + (and (eq 'text (cdr (assq 'type ct))) + (eq 'plain (cdr (assq 'subtype ct))))))) (message-insert-courtesy-copy)) (setq failure (message-maybe-split-and-send-mail))) (kill-buffer tembuf)) @@ -3427,7 +3485,10 @@ This sub function is for exclusive use of `message-send-news'." (re-search-backward message-signature-separator nil t) (beginning-of-line) (or (re-search-backward "[^ \n\t]" b t) - (y-or-n-p "Empty article. Really post? ")))) + (if (message-gnksa-enable-p 'empty-article) + (y-or-n-p "Empty article. Really post? ") + (message "Denied posting -- Empty article.") + nil)))) ;; Check for control characters. (message-check 'control-chars (if (re-search-forward "[\000-\007\013\015-\032\034-\037\200-\237]" nil t) @@ -3449,17 +3510,38 @@ This sub function is for exclusive use of `message-send-news'." (or (not message-checksum) (not (eq (message-checksum) message-checksum)) - (y-or-n-p - "It looks like no new text has been added. Really post? "))) + (if (message-gnksa-enable-p 'quoted-text-only) + (y-or-n-p + "It looks like no new text has been added. Really post? ") + (message "Denied posting -- no new text has been added.") + nil))) ;; Check the length of the signature. (message-check 'signature (goto-char (point-max)) (if (> (count-lines (point) (point-max)) 5) - (y-or-n-p - (format - "Your .sig is %d lines; it should be max 4. Really post? " - (1- (count-lines (point) (point-max))))) - t)))) + (y-or-n-p + (format + "Your .sig is %d lines; it should be max 4. Really post? " + (1- (count-lines (point) (point-max))))) + t)) + ;; Ensure that text follows last quoted portion. + (message-check 'quoting-style + (goto-char (point-max)) + (let ((no-problem t)) + (when (search-backward-regexp "^>[^\n]*\n" nil t) + (setq no-problem (search-forward-regexp "^[ \t]*[^>\n]" nil t))) + (if no-problem + t + (if (message-gnksa-enable-p 'quoted-text-only) + (y-or-n-p "Your text should follow quoted text. Really post? ") + ;; Ensure that + (goto-char (point-min)) + (re-search-forward + (concat "^" (regexp-quote mail-header-separator) "$")) + (if (search-forward-regexp "^[ \t]*[^>\n]" nil t) + (y-or-n-p "Your text should follow quoted text. Really post? ") + (message "Denied posting -- only quoted text.") + nil))))))) (defun message-check-mail-syntax () "Check the syntax of the message." @@ -3641,7 +3723,6 @@ If NOW, use that time instead." (mail-header-references message-reply-headers) (mail-header-subject message-reply-headers) psubject - (mail-header-subject message-reply-headers) (not (string= (message-strip-subject-re (mail-header-subject message-reply-headers)) @@ -4278,13 +4359,13 @@ than 988 characters long, and if they are not, trim them until they are." (setq message-buffer-list (nconc message-buffer-list (list (current-buffer)))))) -(defvar mc-modes-alist) +;;;(defvar mc-modes-alist) (defun message-setup (headers &optional replybuffer actions) - (when (and (boundp 'mc-modes-alist) - (not (assq 'message-mode mc-modes-alist))) - (push '(message-mode (encrypt . mc-encrypt-message) - (sign . mc-sign-message)) - mc-modes-alist)) +;;; (when (and (boundp 'mc-modes-alist) +;;; (not (assq 'message-mode mc-modes-alist))) +;;; (push '(message-mode (encrypt . mc-encrypt-message) +;;; (sign . mc-sign-message)) +;;; mc-modes-alist)) (when actions (setq message-send-actions actions)) (setq message-reply-buffer @@ -4334,6 +4415,8 @@ than 988 characters long, and if they are not, trim them until they are." (message-insert-signature) (save-restriction (message-narrow-to-headers) + (if message-alternative-emails + (message-use-alternative-email-as-from)) (run-hooks 'message-header-setup-hook)) (set-buffer-modified-p nil) (setq buffer-undo-list nil) @@ -4408,18 +4491,17 @@ OTHER-HEADERS is an alist of header/value pairs." (Subject . ,(or subject "")))))) (defun message-get-reply-headers (wide &optional to-address) - (let (follow-to mct never-mct from to cc reply-to mft) + (let (follow-to mct never-mct from to cc reply-to mrt mft) ;; Find all relevant headers we need. (setq from (message-fetch-field "from") to (message-fetch-field "to") cc (message-fetch-field "cc") mct (when message-use-mail-copies-to (message-fetch-field "mail-copies-to")) - reply-to (when message-use-mail-reply-to - (or (message-fetch-field "mail-reply-to") - (message-fetch-field "reply-to"))) - mft (when (and (not to-address) - (not reply-to) + reply-to (message-fetch-field "reply-to") + mrt (when message-use-mail-reply-to + (message-fetch-field "mail-reply-to")) + mft (when (and (not (or to-address mrt reply-to)) message-use-mail-followup-to) (message-fetch-field "mail-followup-to"))) @@ -4446,7 +4528,7 @@ You should normally obey the Mail-Copies-To: header. `Mail-Copies-To: always' sends a copy of your response to the author."))) - (setq mct (or reply-to from))) + (setq mct (or mrt reply-to from))) ((and (eq message-use-mail-copies-to 'ask) (not (message-y-or-n-p @@ -4481,18 +4563,39 @@ that further discussion should take place only in " (if (or (not wide) to-address) (progn - (setq follow-to (list (cons 'To (or to-address reply-to mft from)))) + (setq follow-to (list (cons 'To + (or to-address mrt reply-to mft from)))) (when (and wide mct) (push (cons 'Cc mct) follow-to))) (let (ccalist) (save-excursion (message-set-work-buffer) - (unless never-mct - (insert (or reply-to from ""))) - (insert (if mft (concat (if (bolp) "" ", ") mft "") "")) - (insert (if to (concat (if (bolp) "" ", ") to "") "")) - (insert (if mct (concat (if (bolp) "" ", ") mct) "")) - (insert (if cc (concat (if (bolp) "" ", ") cc) "")) + (if (and mft + message-use-followup-to + (or (not (eq message-use-followup-to 'ask)) + (message-y-or-n-p "Obey Mail-Followup-To? " t "\ +You should normally obey the Mail-Followup-To: header. In this +article, it has the value of + +" mft " + +which directs your response to " (if (string-match "," mft) + "the specified addresses" + "that address only") ". + +If a message is posted to several mailing lists, Mail-Followup-To is +often used to direct the following discussion to one list only, +because discussions that are spread over several lists tend to be +fragmented and very difficult to follow. + +Also, some source/announcement lists are not indented for discussion; +responses here are directed to other addresses."))) + (insert mft) + (unless never-mct + (insert (or mrt reply-to from ""))) + (insert (if to (concat (if (bolp) "" ", ") to "") "")) + (insert (if mct (concat (if (bolp) "" ", ") mct) "")) + (insert (if cc (concat (if (bolp) "" ", ") cc) ""))) (goto-char (point-min)) (while (re-search-forward "[ \t]+" nil t) (replace-match " " t t)) @@ -4503,7 +4606,7 @@ that further discussion should take place only in " (goto-char (point-min)) ;; Perhaps "Mail-Copies-To: never" removed the only address? (when (eobp) - (insert (or reply-to from ""))) + (insert (or mrt reply-to from ""))) (setq ccalist (mapcar (lambda (addr) @@ -4596,36 +4699,36 @@ that further discussion should take place only in " "Follow up to the message in the current buffer. If TO-NEWSGROUPS, use that as the new Newsgroups line." (interactive) + (require 'gnus-sum) ; for gnus-list-identifiers (let ((cur (current-buffer)) - from subject date mct + from subject date reply-to mrt mct mft references message-id follow-to (inhibit-point-motion-hooks t) (message-this-is-news t) - followup-to distribution newsgroups gnus-warning posted-to mft mrt) + followup-to distribution newsgroups gnus-warning posted-to) (save-restriction (message-narrow-to-head) (when (message-functionp message-followup-to-function) (setq follow-to (funcall message-followup-to-function))) (setq from (message-fetch-field "from") - date (message-fetch-field "date" t) + date (message-fetch-field "date") subject (or (message-fetch-field "subject") "none") references (message-fetch-field "references") message-id (message-fetch-field "message-id" t) - followup-to (when message-use-followup-to - (message-fetch-field "followup-to")) - distribution (message-fetch-field "distribution") + followup-to (message-fetch-field "followup-to") newsgroups (message-fetch-field "newsgroups") posted-to (message-fetch-field "posted-to") + reply-to (message-fetch-field "reply-to") + mrt (when message-use-mail-reply-to + (message-fetch-field "mail-reply-to")) + distribution (message-fetch-field "distribution") mct (when message-use-mail-copies-to (message-fetch-field "mail-copies-to")) mft (when message-use-mail-followup-to - (message-fetch-field "mail-followup-to")) - mrt (when message-use-mail-reply-to - (or (message-fetch-field "mail-reply-to") - (message-fetch-field "reply-to"))) - gnus-warning (message-fetch-field "gnus-warning")) - (when (and gnus-warning (string-match "<[^>]+>" gnus-warning)) + (message-fetch-field "mail-followup-to"))) + (when (and (setq gnus-warning (message-fetch-field "gnus-warning")) + (string-match "<[^>]+>" gnus-warning)) (setq message-id (match-string 0 gnus-warning))) ;; Remove bogus distribution. (when (and (stringp distribution) @@ -4659,7 +4762,7 @@ You should normally obey the Mail-Copies-To: header. `Mail-Copies-To: always' sends a copy of your response to the author."))) - (setq mct (or mrt from))) + (setq mct (or mrt reply-to from))) ((and (eq message-use-mail-copies-to 'ask) (not (message-y-or-n-p @@ -4680,7 +4783,7 @@ sends a copy of your response to " (if (string-match "," mct) (followup-to (cond ((equal (downcase followup-to) "poster") - (if (or (eq message-use-followup-to 'use) + (if (or (and followup-to (eq message-use-followup-to 'use)) (message-y-or-n-p "Obey Followup-To: poster? " t "\ You should normally obey the Followup-To: header. @@ -4691,11 +4794,11 @@ A typical situation where `Followup-To: poster' is used is when the author does not read the newsgroup, so he wouldn't see any replies sent to it.")) (setq message-this-is-news nil distribution nil - follow-to (list (cons 'To (or mrt from "")))) + follow-to (list (cons 'To (or mrt reply-to from "")))) (setq follow-to (list (cons 'Newsgroups newsgroups))))) (t (if (or (equal followup-to newsgroups) - (not (eq message-use-followup-to 'ask)) + (not (and followup-to (eq message-use-followup-to 'ask))) (message-y-or-n-p (concat "Obey Followup-To: " followup-to "? ") t "\ You should normally obey the Followup-To: header. @@ -4740,10 +4843,6 @@ that further discussion should take place only in " (message-pop-to-buffer (message-buffer-name "followup" from newsgroups)) - (setq message-reply-headers - (make-full-mail-header-from-decoded-header - 0 subject from date message-id references 0 0 "")) - (message-setup `((Subject . ,subject) ,@follow-to @@ -4752,7 +4851,11 @@ that further discussion should take place only in " ,@(if (or references message-id) `((References . ,(concat (or references "") (and references " ") (or message-id "")))))) - cur))) + cur) + + (setq message-reply-headers + (make-full-mail-header-from-decoded-header + 0 subject from date message-id references 0 0 "")))) ;;;###autoload (defun message-cancel-news (&optional arg) @@ -4789,7 +4892,7 @@ If ARG, allow editing of the cancellation message." (setq buf (set-buffer (get-buffer-create " *message cancel*")))) (erase-buffer) (insert "Newsgroups: " newsgroups "\n" - "From: " (message-make-from) "\n" + "From: " from "\n" "Subject: cmsg cancel " message-id "\n" "Control: cancel " message-id "\n" (if distribution @@ -5182,7 +5285,7 @@ which specify the range to operate on." (defalias 'message-exchange-point-and-mark 'exchange-point-and-mark) ;; Support for toolbar -(when (string-match "XEmacs\\|Lucid" emacs-version) +(when (featurep 'xemacs) (require 'messagexmas)) ;;; Group name completion. @@ -5347,7 +5450,7 @@ regexp varstr." ;;; Miscellaneous functions ;; stolen (and renamed) from nnheader.el -(if (fboundp 'subst-char-in-string) +(static-if (fboundp 'subst-char-in-string) (defsubst message-replace-chars-in-string (string from to) (subst-char-in-string from to string)) (defun message-replace-chars-in-string (string from to) @@ -5420,6 +5523,47 @@ regexp varstr." (let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook)) (read-string prompt)))) +(defun message-use-alternative-email-as-from () + (require 'mail-utils) + (let* ((fields '("To" "Cc")) + (emails + (split-string + (mail-strip-quoted-names + (mapconcat 'message-fetch-reply-field fields ",")) + "[ \f\t\n\r\v,]+")) + email) + (while emails + (if (string-match message-alternative-emails (car emails)) + (setq email (car emails) + emails nil)) + (pop emails)) + (unless (or (not email) (equal email user-mail-address)) + (goto-char (point-max)) + (insert "From: " email "\n")))) + +(defun message-options-get (symbol) + (cdr (assq symbol message-options))) + +(defun message-options-set (symbol value) + (let ((the-cons (assq symbol message-options))) + (if the-cons + (if value + (setcdr the-cons value) + (setq message-options (delq the-cons message-options))) + (and value + (push (cons symbol value) message-options)))) + value) + +(defun message-options-set-recipient () + (save-restriction + (message-narrow-to-headers-or-head) + (message-options-set 'message-sender + (mail-strip-quoted-names + (message-fetch-field "from"))) + (message-options-set 'message-recipients + (mail-strip-quoted-names + (message-fetch-field "to"))))) + (defun message-save-drafts () "Postponing the message." (interactive) @@ -5434,6 +5578,10 @@ regexp varstr." (set-buffer-modified-p nil)) (message "Saving %s...done" buffer-file-name)) +(when (featurep 'xemacs) + (require 'messagexmas) + (message-xmas-redefine)) + (provide 'message) (run-hooks 'message-load-hook) diff --git a/lisp/messagexmas.el b/lisp/messagexmas.el index b817f86..b3be4ee 100644 --- a/lisp/messagexmas.el +++ b/lisp/messagexmas.el @@ -1,5 +1,7 @@ ;;; messagexmas.el --- XEmacs extensions to message -;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail, news @@ -25,6 +27,7 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'nnheader) (defvar message-xmas-dont-activate-region t @@ -90,8 +93,6 @@ If it is non-nil, it must be a toolbar. The five valid values are "Exchange point and mark, but allow for XEmacs' optional argument." (exchange-point-and-mark message-xmas-dont-activate-region)) -(fset 'message-exchange-point-and-mark 'message-xmas-exchange-point-and-mark) - (defun message-xmas-maybe-fontify () (when (featurep 'font-lock) (font-lock-set-defaults))) @@ -113,12 +114,19 @@ If it is non-nil, it must be a toolbar. The five valid values are (substring table a (+ a n)) (substring table (+ a 26) 255)))) -(when (>= emacs-major-version 20) - (fset 'message-make-caesar-translation-table - 'message-xmas-make-caesar-translation-table)) - (add-hook 'message-mode-hook 'message-xmas-maybe-fontify) +(defun message-xmas-redefine () + "Redefine message functions for XEmacs." + (defalias 'message-exchange-point-and-mark + 'message-xmas-exchange-point-and-mark) + + (when (>= emacs-major-version 20) + (defalias 'message-make-caesar-translation-table + 'message-xmas-make-caesar-translation-table))) + +(message-xmas-redefine) + (provide 'messagexmas) ;;; messagexmas.el ends here diff --git a/lisp/messcompat.el b/lisp/messcompat.el index 9ffbd89..e3021ce 100644 --- a/lisp/messcompat.el +++ b/lisp/messcompat.el @@ -1,5 +1,7 @@ ;;; messcompat.el --- making message mode compatible with mail mode -;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail, news diff --git a/lisp/mm-bodies.el b/lisp/mm-bodies.el index 410d9f8..5b8874c 100644 --- a/lisp/mm-bodies.el +++ b/lisp/mm-bodies.el @@ -58,7 +58,7 @@ If there is more than one non-ASCII MULE charset, then list of found MULE charsets are returned. If successful, the MIME charset is returned. If no encoding was done, nil is returned." - (if (not (featurep 'mule)) + (if (not (mm-multibyte-p)) ;; In the non-Mule case, we search for non-ASCII chars and ;; return the value of `mail-parse-charset' if any are found. (save-excursion @@ -231,13 +231,13 @@ The characters in CHARSET should then be decoded." (defun mm-decode-string (string charset) "Decode STRING with CHARSET." - (if (stringp charset) - (setq charset (intern (downcase charset)))) - (if (or (not charset) - (eq 'gnus-all mail-parse-ignored-charsets) - (memq 'gnus-all mail-parse-ignored-charsets) - (memq charset mail-parse-ignored-charsets)) - (setq charset mail-parse-charset)) + (when (stringp charset) + (setq charset (intern (downcase charset)))) + (when (or (not charset) + (eq 'gnus-all mail-parse-ignored-charsets) + (memq 'gnus-all mail-parse-ignored-charsets) + (memq charset mail-parse-ignored-charsets)) + (setq charset mail-parse-charset)) (or (when (featurep 'mule) (let ((mule-charset (mm-charset-to-coding-system charset))) diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index ef28aa1..e371976 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -36,7 +36,8 @@ "Display of MIME in mail and news articles." :link '(custom-manual "(emacs-mime)Customization") :group 'mail - :group 'news) + :group 'news + :group 'multimedia) ;;; Convenience macros. @@ -117,6 +118,7 @@ ("text/x-patch" mm-display-patch-inline (lambda (handle) (locate-library "diff-mode"))) + ("application/emacs-lisp" mm-display-elisp-inline identity) ("text/html" mm-inline-text (lambda (handle) @@ -151,7 +153,7 @@ (defcustom mm-inlined-types '("image/.*" "text/.*" "message/delivery-status" "message/rfc822" - "message/partial" + "message/partial" "application/emacs-lisp" "application/pgp-signature") "List of media types that are to be displayed inline." :type '(repeat string) @@ -160,7 +162,8 @@ (defcustom mm-automatic-display '("text/plain" "text/enriched" "text/richtext" "text/html" "text/x-vcard" "image/.*" "message/delivery-status" "multipart/.*" - "message/rfc822" "text/x-patch" "application/pgp-signature") + "message/rfc822" "text/x-patch" "application/pgp-signature" + "application/emacs-lisp") "A list of MIME types to be displayed automatically." :type '(repeat string) :group 'mime-display) @@ -215,6 +218,15 @@ to: ;; "message/rfc822". (defvar mm-dissect-default-type "text/plain") +(defvar mm-viewer-completion-map + (let ((map (make-sparse-keymap 'mm-viewer-completion-map))) + (set-keymap-parent map minibuffer-local-completion-map) + map) + "Keymap for input viewer with completion.") + +;; Should we bind other key to minibuffer-complete-word? +(define-key mm-viewer-completion-map " " 'self-insert-command) + ;;; The functions. (defun mm-dissect-buffer (&optional no-strict-mime) @@ -295,7 +307,8 @@ to: (if (re-search-backward close-delimiter nil t) (match-beginning 0) (point-max))))) - (while (search-forward boundary end t) + (setq boundary (concat (regexp-quote boundary) "[ \t]*$")) + (while (re-search-forward boundary end t) (goto-char (match-beginning 0)) (when start (save-excursion @@ -323,6 +336,16 @@ to: (insert-buffer-substring obuf beg) (current-buffer)))) +(defun mm-display-parts (handle &optional no-default) + (if (stringp (car handle)) + (mapcar 'mm-display-parts (cdr handle)) + (if (bufferp (car handle)) + (save-restriction + (narrow-to-region (point) (point)) + (mm-display-part handle) + (goto-char (point-max))) + (mapcar 'mm-display-parts handle)))) + (defun mm-display-part (handle &optional no-default) "Display the MIME part represented by HANDLE. Returns nil if the part is removed; inline if displayed inline; @@ -367,6 +390,7 @@ external if displayed external." (buffer-disable-undo) (mm-set-buffer-file-coding-system mm-binary-coding-system) (insert-buffer-substring cur) + (goto-char (point-min)) (message "Viewing with %s" method) (let ((mm (current-buffer)) (non-viewer (assq 'non-viewer @@ -704,7 +728,9 @@ external if displayed external." (methods (mapcar (lambda (i) (list (cdr (assoc 'viewer i)))) (mailcap-mime-info type 'all))) - (method (completing-read "Viewer: " methods))) + (method (let ((minibuffer-local-completion-map + mm-viewer-completion-map)) + (completing-read "Viewer: " methods)))) (when (string= method "") (error "No method given")) (if (string-match "^[^% \t]+$" method) @@ -765,27 +791,29 @@ external if displayed external." (prog1 (setq spec (ignore-errors - (if (fboundp 'make-glyph) - (cond - ((equal type "xbm") - ;; xbm images require special handling, since - ;; the only way to create glyphs from these - ;; (without a ton of work) is to write them - ;; out to a file, and then create a file - ;; specifier. - (let ((file (make-temp-name - (expand-file-name "emm.xbm" - mm-tmp-directory)))) - (unwind-protect - (progn - (write-region (point-min) (point-max) file) - (make-glyph (list (cons 'x file)))) - (ignore-errors - (delete-file file))))) - (t - (make-glyph - (vector (intern type) :data (buffer-string))))) - (create-image (buffer-string) (intern type) 'data-p)))) + ;; Avoid testing `make-glyph' since W3 may define + ;; a bogus version of it. + (if (fboundp 'create-image) + (create-image (buffer-string) (intern type) 'data-p) + (cond + ((equal type "xbm") + ;; xbm images require special handling, since + ;; the only way to create glyphs from these + ;; (without a ton of work) is to write them + ;; out to a file, and then create a file + ;; specifier. + (let ((file (make-temp-name + (expand-file-name "emm.xbm" + mm-tmp-directory)))) + (unwind-protect + (progn + (write-region (point-min) (point-max) file) + (make-glyph (list (cons 'x file)))) + (ignore-errors + (delete-file file))))) + (t + (make-glyph + (vector (intern type) :data (buffer-string)))))))) (mm-handle-set-cache handle spec)))))) (defun mm-image-fit-p (handle) @@ -820,8 +848,7 @@ external if displayed external." (defun mm-valid-and-fit-image-p (format handle) "Say whether FORMAT can be displayed natively and HANDLE fits the window." - (and window-system - (mm-valid-image-format-p format) + (and (mm-valid-image-format-p format) (mm-image-fit-p handle))) (provide 'mm-decode) diff --git a/lisp/mm-encode.el b/lisp/mm-encode.el index 669df35..3baec82 100644 --- a/lisp/mm-encode.el +++ b/lisp/mm-encode.el @@ -24,8 +24,11 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'mail-parse) (require 'gnus-mailcap) +(eval-and-compile + (autoload 'mm-body-7-or-8 "mm-bodies")) (defvar mm-content-transfer-encoding-defaults '(("text/x-patch" 8bit) @@ -62,8 +65,7 @@ This variable should never be set directly, but bound before a call to "Insert multipart/mixed headers." (let ((boundary "=-=-=")) (insert "MIME-Version: 1.0\n") - (insert (format "Content-Type: multipart/mixed; boundary=\"%s\"\n" - boundary)) + (insert "Content-Type: multipart/mixed; boundary=\"" boundary "\"\n") boundary)) (defun mm-default-file-encoding (file) @@ -142,9 +144,9 @@ The encoding used is returned." (when (string-match (caar rules) type) (throw 'found (let ((encoding - (if (eq (cadar rules) 'qp-or-base64) + (if (eq (cadr (car rules)) 'qp-or-base64) (mm-qp-or-base64) - (cadar rules)))) + (cadr (car rules))))) (if mm-use-ultra-safe-encoding (mm-safer-encoding encoding) encoding)))) diff --git a/lisp/mm-partial.el b/lisp/mm-partial.el index 4d60a85..38986c4 100644 --- a/lisp/mm-partial.el +++ b/lisp/mm-partial.el @@ -36,7 +36,7 @@ (let ((headers (save-excursion (set-buffer gnus-summary-buffer) gnus-newsgroup-headers)) - phandles handles header) + phandles header) (while (setq header (pop headers)) (unless (eq (aref header 0) art) (mm-with-unibyte-buffer @@ -44,7 +44,6 @@ gnus-newsgroup-name) (when (search-forward id nil t) (let ((nhandles (mm-dissect-buffer)) nid) - (setq handles gnus-article-mime-handles) (if (consp (car nhandles)) (mm-destroy-parts nhandles) (setq nid (cdr (assq 'id @@ -89,7 +88,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing." (list gnus-article-mime-handles)) phandles)) (save-excursion - (set-buffer (generate-new-buffer "*mm*")) + (set-buffer (generate-new-buffer " *mm*")) (while (setq phandle (pop phandles)) (setq nn (string-to-number (cdr (assq 'number @@ -118,6 +117,13 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing." (if (<= n total) (error "Missing part %d" n)) (kill-buffer (mm-handle-buffer handle)) + (goto-char (point-min)) + (let ((point (if (search-forward "\n\n" nil t) + (1- (point)) + (point-max)))) + (goto-char (point-min)) + (unless (re-search-forward "^mime-version:" point t) + (insert "MIME-Version: 1.0\n"))) (setcar handle (current-buffer)) (mm-handle-set-cache handle t))) (unless no-display diff --git a/lisp/mm-util.el b/lisp/mm-util.el index 74cd23f..c1e1c53 100644 --- a/lisp/mm-util.el +++ b/lisp/mm-util.el @@ -1,4 +1,4 @@ -;;; mm-util.el --- Utility functions for MIME things +;;; mm-util.el --- Utility functions for Mule and low level things ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -24,6 +24,9 @@ ;;; Code: +(eval-when-compile (require 'static)) + +(eval-when-compile (require 'cl)) (require 'mail-prsvr) (defvar mm-mime-mule-charset-alist @@ -96,7 +99,29 @@ "Prompt the user for a coding system." (completing-read prompt (mapcar (lambda (s) (list (symbol-name (car s)))) - mm-mime-mule-charset-alist))))))) + mm-mime-mule-charset-alist)))) + (read-charset + . (lambda (prompt) + "Return a charset." + (intern + (completing-read + prompt + (mapcar (lambda (e) (list (symbol-name (car e)))) + mm-mime-mule-charset-alist) + nil t)))) + (subst-char-in-string + . (lambda (from to string) ;; stolen (and renamed) from nnheader.el + "Replace characters in STRING from FROM to TO." + (let ((string (substring string 0)) ;Copy string. + (len (length string)) + (idx 0)) + ;; Replace all occurrences of FROM with TO. + (while (< idx len) + (when (= (aref string idx) from) + (aset string idx to)) + (setq idx (1+ idx))) + string))) + ))) (eval-and-compile (defalias 'mm-char-or-char-int-p @@ -111,17 +136,22 @@ (or mm-coding-system-list (setq mm-coding-system-list (mm-coding-system-list)))) -(defvar mm-charset-synonym-alist - '((big5 . cn-big5) - (gb2312 . cn-gb-2312) - (x-ctext . ctext)) - "A mapping from invalid charset names to the real charset names.") - (defun mm-coding-system-p (sym) "Return non-nil if SYM is a coding system." (or (and (fboundp 'coding-system-p) (coding-system-p sym)) (memq sym (mm-get-coding-system-list)))) +(defvar mm-charset-synonym-alist + `((big5 . cn-big5) + (gb2312 . cn-gb-2312) + (cn-gb . cn-gb-2312) + ;; Windows-1252 is actually a superset of Latin-1. See also + ;; `gnus-article-dumbquotes-map'. + ,(unless (mm-coding-system-p 'windows-1252) ; should be defined eventually + '(windows-1252 . iso-8859-1)) + (x-ctext . ctext)) + "A mapping from invalid charset names to the real charset names.") + (defvar mm-binary-coding-system (cond ((mm-coding-system-p 'binary) 'binary) @@ -155,7 +185,7 @@ ;;; Functions: (defun mm-mule-charset-to-mime-charset (charset) - "Return the MIME charset corresponding to MULE CHARSET." + "Return the MIME charset corresponding to the given Mule CHARSET." (let ((alist mm-mime-mule-charset-alist) out) (while alist @@ -184,35 +214,53 @@ used as the line break code type of the coding system." ;; ascii ((eq charset 'us-ascii) 'ascii) - ;; Check to see whether we can handle this charset. + ;; Check to see whether we can handle this charset. (This depends + ;; on there being some coding system matching each `mime-charset' + ;; coding sysytem property defined, as there should be.) ((memq charset (mm-get-coding-system-list)) charset) ;; Nope. (t nil))) -(defun mm-replace-chars-in-string (string from to) - "Replace characters in STRING from FROM to TO." - (let ((string (substring string 0)) ;Copy string. - (len (length string)) - (idx 0)) - ;; Replace all occurrences of FROM with TO. - (while (< idx len) - (when (= (aref string idx) from) - (aset string idx to)) - (setq idx (1+ idx))) - string)) +(defsubst mm-replace-chars-in-string (string from to) + (mm-subst-char-in-string from to string)) (defsubst mm-enable-multibyte () - "Enable multibyte in the current buffer." - (when (and (fboundp 'set-buffer-multibyte) - (boundp 'enable-multibyte-characters) - (default-value 'enable-multibyte-characters)) + "Set the multibyte flag of the current buffer. +Only do this if the default value of `enable-multibyte-characters' is +non-nil. This is a no-op in XEmacs." + (when (and (not (featurep 'xemacs)) + (boundp 'default-enable-multibyte-characters) + default-enable-multibyte-characters + (fboundp 'set-buffer-multibyte)) (set-buffer-multibyte t))) (defsubst mm-disable-multibyte () - "Disable multibyte in the current buffer." - (when (fboundp 'set-buffer-multibyte) + "Unset the multibyte flag of in the current buffer. +This is a no-op in XEmacs." + (when (and (not (featurep 'xemacs)) + (fboundp 'set-buffer-multibyte)) + (set-buffer-multibyte nil))) + +(defsubst mm-enable-multibyte-mule4 () + "Enable multibyte in the current buffer. +Only used in Emacs Mule 4." + (when (and (not (featurep 'xemacs)) + (boundp 'default-enable-multibyte-characters) + default-enable-multibyte-characters + (fboundp 'set-buffer-multibyte) + (fboundp 'charsetp) + (not (charsetp 'eight-bit-control))) + (set-buffer-multibyte t))) + +(defsubst mm-disable-multibyte-mule4 () + "Disable multibyte in the current buffer. +Only used in Emacs Mule 4." + (when (and (not (featurep 'xemacs)) + (fboundp 'set-buffer-multibyte) + (fboundp 'charsetp) + (not (charsetp 'eight-bit-control))) (set-buffer-multibyte nil))) (defun mm-preferred-coding-system (charset) @@ -225,33 +273,38 @@ used as the line break code type of the coding system." If POS is nil, it defauls to the current point. If POS is out of range, the value is nil. If the charset is `composition', return the actual one." - (let ((charset (cond - ((fboundp 'charset-after) - (charset-after pos)) - ((fboundp 'char-charset) - (char-charset (char-after pos))) - ((< (mm-char-int (char-after pos)) 128) - 'ascii) - (mail-parse-mule-charset ;; cached mule-charset - mail-parse-mule-charset) - ((boundp 'current-language-environment) - (let ((entry (assoc current-language-environment - language-info-alist))) - (setq mail-parse-mule-charset - (or (car (last (assq 'charset entry))) - 'latin-iso8859-1)))) - (t ;; figure out the charset - (setq mail-parse-mule-charset - (or (car (last (assq mail-parse-charset - mm-mime-mule-charset-alist))) - 'latin-iso8859-1)))))) - (if (eq charset 'composition) - (let ((p (or pos (point)))) - (cadr (find-charset-region p (1+ p)))) - charset))) + (let ((char (char-after pos)) charset) + (if (< (mm-char-int char) 128) + (setq charset 'ascii) + ;; charset-after is fake in some Emacsen. + (setq charset (and (fboundp 'char-charset) (char-charset char))) + (if (eq charset 'composition) + (let ((p (or pos (point)))) + (cadr (find-charset-region p (1+ p)))) + (if (and charset (not (memq charset '(ascii eight-bit-control + eight-bit-graphic)))) + charset + (or + mail-parse-mule-charset ;; cached mule-charset + (progn + (setq mail-parse-mule-charset + (and (boundp 'current-language-environment) + (car (last + (assq 'charset + (assoc current-language-environment + language-info-alist)))))) + (if (or (not mail-parse-mule-charset) + (eq mail-parse-mule-charset 'ascii)) + (setq mail-parse-mule-charset + (or (car (last (assq mail-parse-charset + mm-mime-mule-charset-alist))) + 'latin-iso8859-1))) + mail-parse-mule-charset))))))) (defun mm-mime-charset (charset) "Return the MIME charset corresponding to the MULE CHARSET." + (if (eq charset 'unknown) + (error "8-bit characters are found in the message, please specify charset.")) (if (and (fboundp 'coding-system-get) (fboundp 'get-charset-property)) ;; This exists in Emacs 20. (or @@ -290,80 +343,82 @@ If the charset is `composition', return the actual one." (defsubst mm-multibyte-p () "Say whether multibyte is enabled." - (or (string-match "XEmacs\\|Lucid" emacs-version) - (and (boundp 'enable-multibyte-characters) - enable-multibyte-characters))) + (if (and (not (featurep 'xemacs)) + (boundp 'enable-multibyte-characters)) + enable-multibyte-characters + (featurep 'mule))) (defmacro mm-with-unibyte-buffer (&rest forms) "Create a temporary buffer, and evaluate FORMS there like `progn'. -See also `with-temp-file' and `with-output-to-string'." - (let ((temp-buffer (make-symbol "temp-buffer")) - (multibyte (make-symbol "multibyte"))) - `(if (or (string-match "XEmacs\\|Lucid" emacs-version) - (not (boundp 'enable-multibyte-characters))) - (with-temp-buffer ,@forms) - (let ((,multibyte (default-value 'enable-multibyte-characters)) - ,temp-buffer) - (unwind-protect - (progn - (setq-default enable-multibyte-characters nil) - (setq ,temp-buffer - (get-buffer-create (generate-new-buffer-name " *temp*"))) - (unwind-protect - (with-current-buffer ,temp-buffer - (let ((buffer-file-coding-system mm-binary-coding-system) - (coding-system-for-read mm-binary-coding-system) - (coding-system-for-write mm-binary-coding-system)) - ,@forms)) - (and (buffer-name ,temp-buffer) - (kill-buffer ,temp-buffer)))) - (setq-default enable-multibyte-characters ,multibyte)))))) +Use unibyte mode for this." + `(let (default-enable-multibyte-characters) + (with-temp-buffer ,@forms))) (put 'mm-with-unibyte-buffer 'lisp-indent-function 0) (put 'mm-with-unibyte-buffer 'edebug-form-spec '(body)) (defmacro mm-with-unibyte-current-buffer (&rest forms) - "Evaluate FORMS there like `progn' in current buffer." - (let ((multibyte (make-symbol "multibyte"))) - `(if (or (string-match "XEmacs\\|Lucid" emacs-version) - (not (fboundp 'set-buffer-multibyte))) - (progn - ,@forms) - (let ((,multibyte (default-value 'enable-multibyte-characters))) - (unwind-protect - (let ((buffer-file-coding-system mm-binary-coding-system) - (coding-system-for-read mm-binary-coding-system) - (coding-system-for-write mm-binary-coding-system)) - (set-buffer-multibyte nil) - (setq-default enable-multibyte-characters nil) - ,@forms) - (setq-default enable-multibyte-characters ,multibyte) - (set-buffer-multibyte ,multibyte)))))) + "Evaluate FORMS with current current buffer temporarily made unibyte. +Also bind `default-enable-multibyte-characters' to nil. +Equivalent to `progn' in XEmacs" + (let ((buffer (make-symbol "buffer"))) + `(if (and (not (featurep 'xemacs)) + (boundp 'enable-multibyte-characters) + enable-multibyte-characters + (fboundp 'set-buffer-multibyte)) + (let ((,buffer (current-buffer))) + (unwind-protect + (let (default-enable-multibyte-characters) + (set-buffer-multibyte nil) + ,@forms) + (set-buffer ,buffer) + (set-buffer-multibyte t))) + (let (default-enable-multibyte-characters) + ,@forms)))) (put 'mm-with-unibyte-current-buffer 'lisp-indent-function 0) (put 'mm-with-unibyte-current-buffer 'edebug-form-spec '(body)) -(defmacro mm-with-unibyte (&rest forms) - "Set default `enable-multibyte-characters' to `nil', eval the FORMS." - (let ((multibyte (make-symbol "multibyte"))) - `(if (or (string-match "XEmacs\\|Lucid" emacs-version) - (not (boundp 'enable-multibyte-characters))) - (progn ,@forms) - (let ((,multibyte (default-value 'enable-multibyte-characters))) +(defmacro mm-with-unibyte-current-buffer-mule4 (&rest forms) + "Evaluate FORMS there like `progn' in current buffer. +Mule4 only." + (let ((buffer (make-symbol "buffer"))) + `(if (and (not (featurep 'xemacs)) + (boundp 'enable-multibyte-characters) + enable-multibyte-characters + (fboundp 'set-buffer-multibyte) + (fboundp 'charsetp) + (not (charsetp 'eight-bit-control))) ;; For Emacs Mule 4 only. + (let ((,buffer (current-buffer))) (unwind-protect - (progn - (setq-default enable-multibyte-characters nil) + (let (default-enable-multibyte-characters) + (set-buffer-multibyte nil) ,@forms) - (setq-default enable-multibyte-characters ,multibyte)))))) + (set-buffer ,buffer) + (set-buffer-multibyte t))) + (let (default-enable-multibyte-characters) + ,@forms)))) +(put 'mm-with-unibyte-current-buffer-mule4 'lisp-indent-function 0) +(put 'mm-with-unibyte-current-buffer-mule4 'edebug-form-spec '(body)) + +(defmacro mm-with-unibyte (&rest forms) + "Eval the FORMS with the default value of `enable-multibyte-characters' nil, ." + `(let (default-enable-multibyte-characters) + ,@forms)) (put 'mm-with-unibyte 'lisp-indent-function 0) (put 'mm-with-unibyte 'edebug-form-spec '(body)) (defun mm-find-charset-region (b e) - "Return a list of charsets in the region." + "Return a list of Emacs charsets in the region B to E." (cond ((and (mm-multibyte-p) (fboundp 'find-charset-region)) ;; Remove composition since the base charsets have been included. - (delq 'composition (find-charset-region b e))) - ((not (boundp 'current-language-environment)) + ;; Remove eight-bit-*, treat them as ascii. + (let ((css (find-charset-region b e))) + (mapcar (lambda (cs) (setq css (delq cs css))) + '(composition eight-bit-control eight-bit-graphic)) + css)) + (t + ;; We are in a unibyte buffer or XEmacs non-mule, so we futz around a bit. (save-excursion (save-restriction (narrow-to-region b e) @@ -371,46 +426,33 @@ See also `with-temp-file' and `with-output-to-string'." (skip-chars-forward "\0-\177") (if (eobp) '(ascii) - (delq nil (list 'ascii - (or (car (last (assq mail-parse-charset - mm-mime-mule-charset-alist))) - 'latin-iso8859-1))))))) - (t - ;; We are in a unibyte buffer, so we futz around a bit. - (save-excursion - (save-restriction - (narrow-to-region b e) - (goto-char (point-min)) - (let ((entry (assoc current-language-environment - language-info-alist))) - (skip-chars-forward "\0-\177") - (if (eobp) - '(ascii) - (delq nil (list 'ascii - (or (car (last (assq 'charset entry))) - 'latin-iso8859-1)))))))))) - -(defun mm-read-charset (prompt) - "Return a charset." - (intern - (completing-read - prompt - (mapcar (lambda (e) (list (symbol-name (car e)))) - mm-mime-mule-charset-alist) - nil t))) - -(defun mm-quote-arg (arg) - "Return a version of ARG that is safe to evaluate in a shell." - (let ((pos 0) new-pos accum) - ;; *** bug: we don't handle newline characters properly - (while (setq new-pos (string-match "[]*[;!'`\"$\\& \t{} |()<>]" arg pos)) - (push (substring arg pos new-pos) accum) - (push "\\" accum) - (push (list (aref arg new-pos)) accum) - (setq pos (1+ new-pos))) - (if (= pos 0) - arg - (apply 'concat (nconc (nreverse accum) (list (substring arg pos))))))) + (let (charset) + (setq charset + (and (boundp 'current-language-environment) + (car (last (assq 'charset + (assoc current-language-environment + language-info-alist)))))) + (if (eq charset 'ascii) (setq charset nil)) + (or charset + (setq charset + (car (last (assq mail-parse-charset + mm-mime-mule-charset-alist))))) + (list 'ascii (or charset 'latin-iso8859-1))))))))) + +(static-if (fboundp 'shell-quote-argument) + (defalias 'mm-quote-arg 'shell-quote-argument) + (defun mm-quote-arg (arg) + "Return a version of ARG that is safe to evaluate in a shell." + (let ((pos 0) new-pos accum) + ;; *** bug: we don't handle newline characters properly + (while (setq new-pos (string-match "[]*[;!'`\"$\\& \t{} |()<>]" arg pos)) + (push (substring arg pos new-pos) accum) + (push "\\" accum) + (push (list (aref arg new-pos)) accum) + (setq pos (1+ new-pos))) + (if (= pos 0) + arg + (apply 'concat (nconc (nreverse accum) (list (substring arg pos)))))))) (defun mm-auto-mode-alist () "Return an `auto-mode-alist' with only the .gz (etc) thingies." @@ -490,6 +532,16 @@ If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers." inhibit-file-name-handlers))) (write-region start end filename append visit lockname))) +(defun mm-image-load-path (&optional package) + (let (dir result) + (dolist (path load-path (nreverse result)) + (if (file-directory-p + (setq dir (concat (file-name-directory + (directory-file-name path)) + "etc/" (or package "gnus/")))) + (push dir result)) + (push path result)))) + (provide 'mm-util) ;;; mm-util.el ends here diff --git a/lisp/mm-uu.el b/lisp/mm-uu.el index 731e588..0029a4a 100644 --- a/lisp/mm-uu.el +++ b/lisp/mm-uu.el @@ -1,4 +1,4 @@ -;;; mm-uu.el -- Return uu stuffs as mm handles +;;; mm-uu.el -- Return uu stuff as mm handles ;; Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu @@ -77,7 +77,7 @@ decoder, such as hexbin." :group 'gnus-article-mime) (defconst mm-uu-shar-begin-line "^#! */bin/sh") -(defconst mm-uu-shar-end-line "^exit 0\\|^$") +(defconst mm-uu-shar-end-line "^exit 0") ;;; Thanks to Edward J. Sabol and ;;; Peter von der Ah\'e @@ -191,7 +191,8 @@ To disable dissecting shar codes, for instance, add ((eq type 'uu) (mm-make-handle (mm-uu-copy-to-buffer start-char end-char) (list (or (and file-name - (string-match "\\.[^\\.]+$" file-name) + (string-match "\\.[^\\.]+$" + file-name) (mailcap-extension-to-mime (match-string 0 file-name))) "application/octet-stream")) diff --git a/lisp/mm-view.el b/lisp/mm-view.el index 6fb7289..d2a67a0 100644 --- a/lisp/mm-view.el +++ b/lisp/mm-view.el @@ -64,7 +64,7 @@ (set-extent-property annot 'duplicable t))) (eval-and-compile - (if (string-match "XEmacs" (emacs-version)) + (if (featurep 'xemacs) (defalias 'mm-inline-image 'mm-inline-image-xemacs) (defalias 'mm-inline-image 'mm-inline-image-emacs))) @@ -113,10 +113,15 @@ (save-window-excursion (save-restriction (let ((w3-strict-width width) + ;; Don't let w3 set the global version of + ;; this variable. + (fill-column fill-column) (url-standalone-mode t)) (condition-case var (w3-region (point-min) (point-max)) - (error))))) + (error + (message + "Error while rendering html; showing as text/plain")))))) (mm-handle-set-undisplayer handle `(lambda () @@ -151,8 +156,14 @@ (let ((b (point)) (charset (mail-content-type-get (mm-handle-type handle) 'charset))) - (if (eq charset 'gnus-decoded) - (mm-insert-part handle) + (if (or (eq charset 'gnus-decoded) + ;; This is probably not entirely correct, but + ;; makes rfc822 parts with embedded multiparts work. + (eq mail-parse-charset 'gnus-decoded)) + (save-restriction + (narrow-to-region (point) (point)) + (mm-insert-part handle) + (goto-char (point-max))) (insert (mm-decode-string (mm-get-part handle) charset))) (when (and (equal type "plain") (equal (cdr (assoc 'format (mm-handle-type handle))) @@ -245,20 +256,19 @@ handle `(lambda () (let (buffer-read-only) - (condition-case nil + (if (fboundp 'remove-specifier) ;; This is only valid on XEmacs. (mapcar (lambda (prop) (remove-specifier (face-property 'default prop) (current-buffer))) - '(background background-pixmap foreground)) - (error nil)) + '(background background-pixmap foreground))) (delete-region ,(point-min-marker) ,(point-max-marker))))))))) -(defun mm-display-patch-inline (handle) +(defun mm-display-inline-fontify (handle mode) (let (text) (with-temp-buffer (mm-insert-part handle) - (diff-mode) + (funcall mode) (font-lock-fontify-buffer) (when (fboundp 'extent-list) (map-extents (lambda (ext ignored) @@ -268,6 +278,12 @@ (setq text (buffer-string))) (mm-insert-inline handle text))) +(defun mm-display-patch-inline (handle) + (mm-display-inline-fontify handle 'diff-mode)) + +(defun mm-display-elisp-inline (handle) + (mm-display-inline-fontify handle 'emacs-lisp-mode)) + (provide 'mm-view) ;; mm-view.el ends here diff --git a/lisp/mml.el b/lisp/mml.el index d4a04b6..07c2bc7 100644 --- a/lisp/mml.el +++ b/lisp/mml.el @@ -27,11 +27,12 @@ (require 'mm-bodies) (require 'mm-encode) (require 'mm-decode) -(eval-when-compile 'cl) +(eval-when-compile (require 'cl)) (eval-and-compile (autoload 'message-make-message-id "message") (autoload 'gnus-setup-posting-charset "gnus-msg") + (autoload 'gnus-add-minor-mode "gnus-ems") (autoload 'message-fetch-field "message") (autoload 'message-posting-charset "message")) @@ -126,16 +127,13 @@ The function is called with one parameter, which is the generated part.") warn t)) (setq raw (cdr (assq 'raw tag)) point (point) - contents (if raw - (mm-with-unibyte-current-buffer - (mml-read-part (eq 'mml (car tag)))) - (mml-read-part (eq 'mml (car tag)))) + contents (mml-read-part (eq 'mml (car tag))) charsets (if raw nil (mm-find-mime-charset-region point (point)))) (when (and (not raw) (memq nil charsets)) (if (or (memq 'unknown-encoding mml-confirmation-set) (y-or-n-p - "Warning: You message contains characters with unknown encoding. Really send?")) + "Message contains characters with unknown encoding. Really send?")) (if (setq use-ascii (or (memq 'use-ascii mml-confirmation-set) (y-or-n-p "Use ASCII as charset?"))) @@ -230,7 +228,7 @@ The function is called with one parameter, which is the generated part.") (setq name (buffer-substring-no-properties (point) (progn (forward-sexp 1) (point)))) (skip-chars-forward " \t\n") - (while (not (looking-at ">")) + (while (not (looking-at ">[ \t]*\n?")) (setq elem (buffer-substring-no-properties (point) (progn (forward-sexp 1) (point)))) (skip-chars-forward "= \t\n") @@ -240,8 +238,9 @@ The function is called with one parameter, which is the generated part.") (setq val (match-string 1 val))) (push (cons (intern elem) val) contents) (skip-chars-forward " \t\n")) - (forward-char 1) - (skip-chars-forward " \t\n") + (goto-char (match-end 0)) + ;; Don't skip the leading space. + ;;(skip-chars-forward " \t\n") (cons (intern name) (nreverse contents)))) (defun mml-read-part (&optional mml) @@ -352,8 +351,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." coded (buffer-string)))) (mml-insert-mime-headers cont type charset encoding) (insert "\n") - (mm-with-unibyte-current-buffer - (insert coded)))) + (insert coded))) ((eq (car cont) 'external) (insert "Content-Type: message/external-body") (let ((parameters (mml-parameter-string @@ -450,12 +448,6 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." "") mml-base-boundary)) -(defun mml-make-string (num string) - (let ((out "")) - (while (not (zerop (decf num))) - (setq out (concat out string))) - out)) - (defun mml-insert-mime-headers (cont type charset encoding) (let (parameters disposition description) (setq parameters @@ -675,17 +667,12 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." \\{mml-mode-map}" (interactive "P") - (if (not (set (make-local-variable 'mml-mode) - (if (null arg) (not mml-mode) - (> (prefix-numeric-value arg) 0)))) - nil - (set (make-local-variable 'mml-mode) t) - (unless (assq 'mml-mode minor-mode-alist) - (push `(mml-mode " MML") minor-mode-alist)) - (unless (assq 'mml-mode minor-mode-map-alist) - (push (cons 'mml-mode mml-mode-map) - minor-mode-map-alist))) - (run-hooks 'mml-mode-hook)) + (when (set (make-local-variable 'mml-mode) + (if (null arg) (not mml-mode) + (> (prefix-numeric-value arg) 0))) + (gnus-add-minor-mode 'mml-mode " MML" mml-mode-map) + (easy-menu-add mml-menu mml-mode-map) + (run-hooks 'mml-mode-hook))) ;;; ;;; Helper functions for reading MIME stuff from the minibuffer and @@ -705,6 +692,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." file)) (defun mml-minibuffer-read-type (name &optional default) + (mailcap-parse-mimetypes) (let* ((default (or default (mm-default-file-encoding name) ;; Perhaps here we should check what the file @@ -713,25 +701,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." "application/octet-stream")) (string (completing-read (format "Content type (default %s): " default) - (mapcar - 'list - (mm-delete-duplicates - (nconc - (mapcar 'cdr mailcap-mime-extensions) - (apply - 'nconc - (mapcar - (lambda (l) - (delq nil - (mapcar - (lambda (m) - (let ((type (cdr (assq 'type (cdr m))))) - (if (equal (cadr (split-string type "/")) - "*") - nil - type))) - (cdr l)))) - mailcap-mime-data)))))))) + (mapcar 'list (mailcap-mime-types))))) (if (not (equal string "")) string default))) @@ -857,7 +827,12 @@ If RAW, don't highlight the article." (replace-match "\n")) (mml-to-mime) (if raw - (mm-disable-multibyte) + (when (fboundp 'set-buffer-multibyte) + (let ((s (buffer-string))) + ;; Insert the content into unibyte buffer. + (erase-buffer) + (mm-disable-multibyte) + (insert s))) (let ((gnus-newsgroup-charset (car message-posting-charset))) (run-hooks 'gnus-article-decode-hook) (let ((gnus-newsgroup-name "dummy")) diff --git a/lisp/nnbabyl.el b/lisp/nnbabyl.el index 0b6d87b..787123b 100644 --- a/lisp/nnbabyl.el +++ b/lisp/nnbabyl.el @@ -1,5 +1,7 @@ ;;; nnbabyl.el --- rmail mbox access for Gnus -;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 1997, 1998, 1099, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA diff --git a/lisp/nndb.el b/lisp/nndb.el index 4868f01..30eb2e2 100644 --- a/lisp/nndb.el +++ b/lisp/nndb.el @@ -1,5 +1,6 @@ ;;; nndb.el --- nndb access for Gnus -;; Copyright (C) 1997,98 Free Software Foundation, Inc. + +;; Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Kai Grossjohann diff --git a/lisp/nndir.el b/lisp/nndir.el index a46ad74..f1a6635 100644 --- a/lisp/nndir.el +++ b/lisp/nndir.el @@ -1,5 +1,7 @@ ;;; nndir.el --- single directory newsgroup access for Gnus -;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/nndoc.el b/lisp/nndoc.el index 15e10db..3833395 100644 --- a/lisp/nndoc.el +++ b/lisp/nndoc.el @@ -125,6 +125,9 @@ from the document.") (rfc822-forward (article-begin . "^\n") (body-end-function . nndoc-rfc822-forward-body-end-function)) + (outlook + (article-begin-function . nndoc-outlook-article-begin) + (body-end . "\0")) (guess (guess . t) (subtype nil)) @@ -589,6 +592,14 @@ from the document.") (when (looking-at "From - ") t)) +(defun nndoc-outlook-article-begin () + (prog1 (re-search-forward "From:\\|Received:" nil t) + (goto-char (match-beginning 0)))) + +(defun nndoc-outlook-type-p () + ;; FIXME: Is JMF the magic of outlook mailbox? -- ShengHuo. + (looking-at "JMF")) + (deffoo nndoc-request-accept-article (group &optional server last) nil) @@ -690,7 +701,8 @@ PARENT is the message-ID of the parent summary line, or nil for none." subject content-type type subtype boundary-regexp) ;; Gracefully handle a missing body. (goto-char head-begin) - (if (search-forward "\n\n" body-end t) + (if (or (and (eq (char-after) ?\n) (or (forward-char 1) t)) + (search-forward "\n\n" body-end t)) (setq head-end (1- (point)) body-begin (point)) (setq head-end body-end @@ -772,7 +784,7 @@ PARENT is the message-ID of the parent summary line, or nil for none." (let ((part-counter 0) part-begin part-end eof-flag) (while (string-match "\ -^\\(Lines\\|Content-\\(Type\\|Transfer-Encoding\\)\\):.*\n\\([ \t].*\n\\)*" +^\\(Lines\\|Content-\\(Type\\|Transfer-Encoding\\|Disposition\\)\\):.*\n\\([ \t].*\n\\)*" article-insert) (setq article-insert (replace-match "" t t article-insert))) (let ((case-fold-search nil)) diff --git a/lisp/nndraft.el b/lisp/nndraft.el index 5bee2cf..71531ee 100644 --- a/lisp/nndraft.el +++ b/lisp/nndraft.el @@ -35,7 +35,7 @@ (require 'nnoo) (eval-when-compile ;; This is just to shut up the byte-compiler. - (fset 'nndraft-request-group 'ignore)) + (defalias 'nndraft-request-group 'ignore)) (nnoo-declare nndraft nnmh) @@ -129,6 +129,7 @@ (when (nndraft-request-article article group server (current-buffer)) (message-remove-header "xref") (message-remove-header "lines") + (message-remove-header "date") t)) (deffoo nndraft-request-update-info (group info &optional server) diff --git a/lisp/nneething.el b/lisp/nneething.el index fdf72e3..a9c3bb6 100644 --- a/lisp/nneething.el +++ b/lisp/nneething.el @@ -1,5 +1,7 @@ ;;; nneething.el --- arbitrary file access for Gnus -;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA @@ -231,13 +233,13 @@ included.") (let ((map nneething-map) prev) (while map - (if (and (member (cadar map) files) + (if (and (member (cadr (car map)) files) ;; We also remove files that have changed mod times. (equal (nth 5 (file-attributes - (nneething-file-name (cadar map)))) - (caddar map))) + (nneething-file-name (cadr (car map))))) + (cadr (cdar map)))) (progn - (push (cadar map) map-files) + (push (cadr (car map)) map-files) (setq prev map)) (setq touched t) (if prev @@ -362,9 +364,9 @@ included.") fname) (if (numberp article) (if (setq fname (cadr (assq article nneething-map))) - (concat dir fname) - (make-temp-name (concat dir "nneething"))) - (concat dir article)))) + (expand-file-name fname dir) + (make-temp-name (expand-file-name "nneething" dir))) + (expand-file-name article dir)))) (provide 'nneething) diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index 33718e9..5917d11 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -48,10 +48,10 @@ ;; style. -SLB (defvoo nnfolder-ignore-active-file nil - "If non-nil, the active file is ignores. + "If non-nil, the active file is ignored. This causes nnfolder to do some extra work in order to determine the true active ranges of an mbox file. Note that the active file is -still saved, but it's values are not used. This costs some extra time +still saved, but its values are not used. This costs some extra time when scanning an mbox when opening it.") (defvoo nnfolder-distrust-mbox nil diff --git a/lisp/nngateway.el b/lisp/nngateway.el index 74c556c..65bd2cc 100644 --- a/lisp/nngateway.el +++ b/lisp/nngateway.el @@ -1,5 +1,7 @@ ;;; nngateway.el --- posting news via mail gateways -;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail diff --git a/lisp/nnheader.el b/lisp/nnheader.el index ccf78ff..592bb1a 100644 --- a/lisp/nnheader.el +++ b/lisp/nnheader.el @@ -32,6 +32,7 @@ ;;; Code: (eval-when-compile (require 'cl)) +(eval-when-compile (require 'static)) (require 'mail-utils) (require 'mime) @@ -188,7 +189,10 @@ This variable is a substitute for `mm-text-coding-system-for-write'.") ;; Parsing headers and NOV lines. (defsubst nnheader-header-value () - (buffer-substring (match-end 0) (gnus-point-at-eol))) + (let ((pt (point))) + (prog1 + (buffer-substring (match-end 0) (std11-field-end)) + (goto-char pt)))) (defun nnheader-parse-head (&optional naked) (let ((case-fold-search t) @@ -230,7 +234,8 @@ This variable is a substitute for `mm-text-coding-system-for-write'.") ;; From. (progn (goto-char p) - (if (search-forward "\nfrom: " nil t) + (if (or (search-forward "\nfrom: " nil t) + (search-forward "\nfrom:" nil t)) (nnheader-header-value) "(nobody)")) ;; Date. (progn @@ -347,36 +352,43 @@ This variable is a substitute for `mm-text-coding-system-for-write'.") (nnheader-nov-read-integer) ; lines (if (eq (char-after) ?\n) nil - (nnheader-nov-field)) ; misc + (if (looking-at "Xref: ") + (goto-char (match-end 0))) + (nnheader-nov-field)) ; Xref (nnheader-nov-parse-extra)))) ; extra (defun nnheader-insert-nov (header) (princ (mail-header-number header) (current-buffer)) - (insert - "\t" - (or (mime-entity-fetch-field header 'Subject) "(none)") "\t" - (or (mime-entity-fetch-field header 'From) "(nobody)") "\t" - (or (mail-header-date header) "") "\t" - (or (mail-header-id header) - (nnmail-message-id)) - "\t" - (or (mail-header-references header) "") "\t") - (princ (or (mail-header-chars header) 0) (current-buffer)) - (insert "\t") - (princ (or (mail-header-lines header) 0) (current-buffer)) - (insert "\t") - (when (mail-header-xref header) - (insert "Xref: " (mail-header-xref header))) - (when (or (mail-header-xref header) - (mail-header-extra header)) - (insert "\t")) - (when (mail-header-extra header) - (let ((extra (mail-header-extra header))) - (while extra - (insert (symbol-name (caar extra)) - ": " (cdar extra) "\t") - (pop extra)))) - (insert "\n")) + (let ((p (point))) + (insert + "\t" + (or (mime-entity-fetch-field header 'Subject) "(none)") "\t" + (or (mime-entity-fetch-field header 'From) "(nobody)") "\t" + (or (mail-header-date header) "") "\t" + (or (mail-header-id header) + (nnmail-message-id)) + "\t" + (or (mail-header-references header) "") "\t") + (princ (or (mail-header-chars header) 0) (current-buffer)) + (insert "\t") + (princ (or (mail-header-lines header) 0) (current-buffer)) + (insert "\t") + (when (mail-header-xref header) + (insert "Xref: " (mail-header-xref header))) + (when (or (mail-header-xref header) + (mail-header-extra header)) + (insert "\t")) + (when (mail-header-extra header) + (let ((extra (mail-header-extra header))) + (while extra + (insert (symbol-name (caar extra)) + ": " (cdar extra) "\t") + (pop extra)))) + (insert "\n") + (backward-char 1) + (while (search-backward "\n" p t) + (delete-char 1)) + (forward-line 1))) (defun nnheader-insert-header (header) (insert @@ -779,17 +791,20 @@ list of headers that match SEQUENCE (see `nntp-retrieve-headers')." "Regexp that matches numerical full file paths.") (defsubst nnheader-file-to-number (file) - "Take a file name and return the article number." + "Take a FILE name and return the article number." (if (string= nnheader-numerical-short-files "^[0-9]+$") (string-to-int file) (string-match nnheader-numerical-short-files file) (string-to-int (match-string 0 file)))) +(defvar nnheader-directory-files-is-safe nil + "If non-nil, Gnus believes `directory-files' is safe. +It has been reported numerous times that `directory-files' fails with +an alarming frequency on NFS mounted file systems. If it is nil, +`nnheader-directory-files-safe' is used.") + (defun nnheader-directory-files-safe (&rest args) - ;; It has been reported numerous times that `directory-files' - ;; fails with an alarming frequency on NFS mounted file systems. - ;; This function executes that function twice and returns - ;; the longest result. + "Execute `directory-files' twice and returns the longer result." (let ((first (apply 'directory-files args)) (second (apply 'directory-files args))) (if (> (length first) (length second)) @@ -797,16 +812,22 @@ list of headers that match SEQUENCE (see `nntp-retrieve-headers')." second))) (defun nnheader-directory-articles (dir) - "Return a list of all article files in a directory." + "Return a list of all article files in directory DIR." (mapcar 'nnheader-file-to-number - (nnheader-directory-files-safe - dir nil nnheader-numerical-short-files t))) + (if nnheader-directory-files-is-safe + (directory-files + dir nil nnheader-numerical-short-files t) + (nnheader-directory-files-safe + dir nil nnheader-numerical-short-files t)))) (defun nnheader-article-to-file-alist (dir) "Return an alist of article/file pairs in DIR." (mapcar (lambda (file) (cons (nnheader-file-to-number file) file)) - (nnheader-directory-files-safe - dir nil nnheader-numerical-short-files t))) + (if nnheader-directory-files-is-safe + (directory-files + dir nil nnheader-numerical-short-files t) + (nnheader-directory-files-safe + dir nil nnheader-numerical-short-files t)))) (defun nnheader-fold-continuation-lines () "Fold continuation lines in the current buffer." @@ -824,15 +845,30 @@ If FULL, translate everything." ;; Do complete translation. (setq leaf (copy-sequence file) path "" - i (if (and (< 1 (length leaf)) (eq ?: (aref leaf 1))) + i (if (and (< 1 (length leaf)) (eq ?: (aref leaf 1))) 2 0)) ;; We translate -- but only the file name. We leave the directory ;; alone. - (if (string-match "/[^/]+\\'" file) - ;; This is needed on NT's and stuff. - (setq leaf (substring file (1+ (match-beginning 0))) - path (substring file 0 (1+ (match-beginning 0)))) - ;; Fall back on this. + (if (and (featurep 'xemacs) + (memq system-type '(win32 w32 mswindows windows-nt))) + ;; This is needed on NT and stuff, because + ;; file-name-nondirectory is not enough to split + ;; file names, containing ':', e.g. + ;; "d:\\Work\\News\\nntp+news.fido7.ru:fido7.ru.gnu.SCORE" + ;; + ;; we are trying to correctly split such names: + ;; "d:file.name" -> "a:" "file.name" + ;; "aaa:bbb.ccc" -> "" "aaa:bbb.ccc" + ;; "d:aaa\\bbb:ccc" -> "d:aaa\\" "bbb:ccc" + ;; etc. + ;; to translate then only the file name part. + (progn + (setq leaf file + path "") + (if (string-match "\\(^\\w:\\|[/\\]\\)\\([^/\\]+\\)$" file) + (setq leaf (substring file (match-beginning 2)) + path (substring file 0 (match-beginning 2))))) + ;; Emacs DTRT, says andrewi. (setq leaf (file-name-nondirectory file) path (file-name-directory file)))) (setq len (length leaf)) @@ -871,17 +907,20 @@ without formatting." (apply 'insert format args)) t)) -(defun nnheader-replace-chars-in-string (string from to) - "Replace characters in STRING from FROM to TO." - (let ((string (substring string 0)) ;Copy string. - (len (length string)) - (idx 0)) - ;; Replace all occurrences of FROM with TO. - (while (< idx len) - (when (= (aref string idx) from) - (aset string idx to)) - (setq idx (1+ idx))) - string)) +(static-if (fboundp 'subst-char-in-string) + (defsubst nnheader-replace-chars-in-string (string from to) + (subst-char-in-string from to string)) + (defun nnheader-replace-chars-in-string (string from to) + "Replace characters in STRING from FROM to TO." + (let ((string (substring string 0)) ;Copy string. + (len (length string)) + (idx 0)) + ;; Replace all occurrences of FROM with TO. + (while (< idx len) + (when (= (aref string idx) from) + (aset string idx to)) + (setq idx (1+ idx))) + string))) (defun nnheader-replace-duplicate-chars-in-string (string from to) "Replace characters in STRING from FROM to TO." @@ -949,7 +988,7 @@ without formatting." (and (listp form) (eq (car form) 'lambda)))) (defun nnheader-concat (dir &rest files) - "Concat DIR as directory to FILE." + "Concat DIR as directory to FILES." (apply 'concat (file-name-as-directory dir) files)) (defun nnheader-ms-strip-cr () @@ -984,8 +1023,9 @@ If FILE, find the \".../etc/PACKAGE\" file instead." (setq path (cdr path)))) result)) -(defvar ange-ftp-path-format) -(defvar efs-path-regexp) +(eval-when-compile + (defvar ange-ftp-path-format) + (defvar efs-path-regexp)) (defun nnheader-re-read-dir (path) "Re-read directory PATH if PATH is on a remote system." (if (and (fboundp 'efs-re-read-dir) (boundp 'efs-path-regexp)) @@ -1076,11 +1116,11 @@ find-file-hooks, etc. (set-buffer cur))) (defun nnheader-replace-string (from to) - "Do a fast replacement of FROM to TO from point to point-max." + "Do a fast replacement of FROM to TO from point to `point-max'." (nnheader-skeleton-replace from to)) (defun nnheader-replace-regexp (from to) - "Do a fast regexp replacement of FROM to TO from point to point-max." + "Do a fast regexp replacement of FROM to TO from point to `point-max'." (nnheader-skeleton-replace from to t)) (defun nnheader-strip-cr () @@ -1108,7 +1148,7 @@ find-file-hooks, etc. (message "%s(Y/n) Yes" prompt) t))) -(when (string-match "XEmacs" emacs-version) +(when (featurep 'xemacs) (require 'nnheaderxm)) (run-hooks 'nnheader-load-hook) diff --git a/lisp/nnheaderxm.el b/lisp/nnheaderxm.el index c77c11d..7d38bbd 100644 --- a/lisp/nnheaderxm.el +++ b/lisp/nnheaderxm.el @@ -1,5 +1,7 @@ ;;; nnheaderxm.el --- making Gnus backends work under XEmacs -;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Katsumi Yamaoka @@ -53,10 +55,10 @@ (message "%s(Y/n) Yes" prompt) t)))) -(fset 'nnheader-run-at-time 'nnheader-xmas-run-at-time) -(fset 'nnheader-cancel-timer 'delete-itimer) -(fset 'nnheader-cancel-function-timers 'ignore) -(fset 'nnheader-Y-or-n-p 'nnheader-xmas-Y-or-n-p) +(defalias 'nnheader-run-at-time 'nnheader-xmas-run-at-time) +(defalias 'nnheader-cancel-timer 'delete-itimer) +(defalias 'nnheader-cancel-function-timers 'ignore) +(defalias 'nnheader-Y-or-n-p 'nnheader-xmas-Y-or-n-p) (provide 'nnheaderxm) diff --git a/lisp/nnimap.el b/lisp/nnimap.el index d9b68c4..b402c3a 100644 --- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -54,6 +54,7 @@ ;; .newsrc.eld) ;; o What about Gnus's article editing, can we support it? NO! ;; o Use \Draft to support the draft group?? +;; o Duplicate suppression ;;; Code: @@ -90,7 +91,7 @@ If nil, the first match found will be used.") "*Name of mailbox to split mail from. Mail is read from this mailbox and split according to rules in -`nnimap-split-rules'. +`nnimap-split-rule'. This can be a string or a list of strings.") @@ -281,7 +282,9 @@ restrict visible folders.") ;; Internal variables: -(defvar nnimap-debug nil);; "*nnimap-debug*") +(defvar nnimap-debug nil + "Name of buffer to record debugging info. +For example: (setq nnimap-debug \"*nnimap-debug*\")") (defvar nnimap-current-move-server nil) (defvar nnimap-current-move-group nil) (defvar nnimap-current-move-article nil) @@ -319,15 +322,39 @@ If SERVER is nil, uses the current server." group (gnus-server-to-method (format "nnimap:%s" server)))) (new-uidvalidity (imap-mailbox-get 'uidvalidity)) - (old-uidvalidity (gnus-group-get-parameter gnusgroup 'uidvalidity))) + (old-uidvalidity (gnus-group-get-parameter gnusgroup 'uidvalidity)) + (dir (file-name-as-directory (expand-file-name nnimap-directory))) + (nameuid (nnheader-translate-file-chars + (concat nnimap-nov-file-name + (if (equal server "") + "unnamed" + server) "." group "." old-uidvalidity + nnimap-nov-file-name-suffix) t)) + (file (if (or nnmail-use-long-file-names + (file-exists-p (expand-file-name nameuid dir))) + (expand-file-name nameuid dir) + (expand-file-name + (encode-coding-string + (nnheader-replace-chars-in-string nameuid ?. ?/) + nnmail-pathname-coding-system) + dir)))) (if old-uidvalidity (if (not (equal old-uidvalidity new-uidvalidity)) - nil ;; uidvalidity clash + ;; uidvalidity clash + (gnus-delete-file file) (gnus-group-set-parameter gnusgroup 'uidvalidity new-uidvalidity) t) (gnus-group-add-parameter gnusgroup (cons 'uidvalidity new-uidvalidity)) t))) +(defun nnimap-before-find-minmax-bugworkaround () + "Function called before iterating through mailboxes with +`nnimap-find-minmax-uid'." + ;; XXX this is for UoW imapd problem, it doesn't notice new mail in + ;; currently selected mailbox without a re-select/examine. + (or (null (imap-current-mailbox nnimap-server-buffer)) + (imap-mailbox-unselect nnimap-server-buffer))) + (defun nnimap-find-minmax-uid (group &optional examine) "Find lowest and highest active article nummber in GROUP. If EXAMINE is non-nil the group is selected read-only." @@ -385,11 +412,12 @@ If EXAMINE is non-nil the group is selected read-only." (with-current-buffer nnimap-server-buffer (setq uid imap-current-message mbx imap-current-mailbox - headers (if (imap-capability 'IMAP4rev1) - ;; xxx don't just use car? alist doesn't contain - ;; anything else now, but it might... - (nth 2 (car (imap-message-get uid 'BODYDETAIL))) - (imap-message-get uid 'RFC822.HEADER)) + headers (nnimap-demule + (if (imap-capability 'IMAP4rev1) + ;; xxx don't just use car? alist doesn't contain + ;; anything else now, but it might... + (nth 2 (car (imap-message-get uid 'BODYDETAIL))) + (imap-message-get uid 'RFC822.HEADER))) lines (imap-body-lines (imap-message-body imap-current-message)) chars (imap-message-get imap-current-message 'RFC822.SIZE))) (nnheader-insert-nov @@ -415,7 +443,7 @@ If EXAMINE is non-nil the group is selected read-only." (if (numberp (car-safe articles)) (imap-search (concat "UID " - (nnimap-range-to-string + (imap-range-to-message-set (gnus-compress-sequence (append (gnus-uncompress-sequence (and fetch-old @@ -426,23 +454,53 @@ If EXAMINE is non-nil the group is selected read-only." articles))))) (mapcar (lambda (msgid) (imap-search - (format "HEADER Message-Id %s" msgid))) + (format "HEADER Message-Id \"%s\"" msgid))) articles)))) (defun nnimap-group-overview-filename (group server) "Make pathname for GROUP on SERVER." - (let ((dir (file-name-as-directory (expand-file-name nnimap-directory))) - (file (nnheader-translate-file-chars - (concat nnimap-nov-file-name - (if (equal server "") - "unnamed" - server) "." group nnimap-nov-file-name-suffix) t))) - (if (or nnmail-use-long-file-names - (file-exists-p (concat dir file))) - (concat dir file) - (concat dir (encode-coding-string - (nnheader-replace-chars-in-string file ?. ?/) - nnmail-pathname-coding-system))))) + (let* ((dir (file-name-as-directory (expand-file-name nnimap-directory))) + (uidvalidity (gnus-group-get-parameter + (gnus-group-prefixed-name + group (gnus-server-to-method + (format "nnimap:%s" server))) + 'uidvalidity)) + (name (nnheader-translate-file-chars + (concat nnimap-nov-file-name + (if (equal server "") + "unnamed" + server) "." group nnimap-nov-file-name-suffix) t)) + (nameuid (nnheader-translate-file-chars + (concat nnimap-nov-file-name + (if (equal server "") + "unnamed" + server) "." group "." uidvalidity + nnimap-nov-file-name-suffix) t)) + (oldfile (if (or nnmail-use-long-file-names + (file-exists-p (expand-file-name name dir))) + (expand-file-name name dir) + (expand-file-name + (encode-coding-string + (nnheader-replace-chars-in-string name ?. ?/) + nnmail-pathname-coding-system) + dir))) + (newfile (if (or nnmail-use-long-file-names + (file-exists-p (expand-file-name nameuid dir))) + (expand-file-name nameuid dir) + (expand-file-name + (encode-coding-string + (nnheader-replace-chars-in-string nameuid ?. ?/) + nnmail-pathname-coding-system) + dir)))) + (when (and (file-exists-p oldfile) (not (file-exists-p newfile))) + (message "nnimap: Upgrading novcache filename...") + (sit-for 1) + (gnus-make-directory (file-name-directory newfile)) + (unless (ignore-errors (rename-file oldfile newfile) t) + (if (ignore-errors (copy-file oldfile newfile) t) + (delete-file oldfile) + (error "Can't rename `%s' to `%s'" oldfile newfile)))) + newfile)) (defun nnimap-retrieve-headers-from-file (group server) (with-current-buffer nntp-server-buffer @@ -450,13 +508,11 @@ If EXAMINE is non-nil the group is selected read-only." (when (file-exists-p nov) (nnheader-insert-file-contents nov) (set-buffer-modified-p nil) - (let ((min (progn (goto-char (point-min)) - (when (not (eobp)) - (read (current-buffer))))) - (max (progn (goto-char (point-max)) - (forward-line -1) - (when (not (bobp)) - (read (current-buffer)))))) + (let ((min (ignore-errors (goto-char (point-min)) + (read (current-buffer)))) + (max (ignore-errors (goto-char (point-max)) + (forward-line -1) + (read (current-buffer))))) (if (and (numberp min) (numberp max)) (cons min max) ;; junk, remove it, it's saved later @@ -468,7 +524,7 @@ If EXAMINE is non-nil the group is selected read-only." (let ((imap-fetch-data-hook '(nnimap-retrieve-headers-progress)) (nnimap-length (gnus-range-length articles)) (nnimap-counter 0)) - (imap-fetch (nnimap-range-to-string articles) + (imap-fetch (imap-range-to-message-set articles) (concat "(UID RFC822.SIZE BODY " (let ((headers (append '(Subject From Date Message-Id @@ -543,8 +599,9 @@ If EXAMINE is non-nil the group is selected read-only." (port (if nnimap-server-port (int-to-string nnimap-server-port) "imap")) - (alist (or (gnus-netrc-machine list server port "imap") - (gnus-netrc-machine list nnimap-address port "imap"))) + (alist (gnus-netrc-machine list (or nnimap-server-address + nnimap-address server) + port "imap")) (user (gnus-netrc-get alist "login")) (passwd (gnus-netrc-get alist "password"))) (if (imap-authenticate user passwd nnimap-server-buffer) @@ -570,6 +627,8 @@ If EXAMINE is non-nil the group is selected read-only." (cadr (assq 'nnimap-server-address defs))) defs) (push (list 'nnimap-address server) defs))) (nnoo-change-server 'nnimap server defs) + (with-current-buffer (get-buffer-create nnimap-server-buffer) + (nnoo-change-server 'nnimap server defs)) (or (and nnimap-server-buffer (imap-opened nnimap-server-buffer)) (nnimap-open-connection server)))) @@ -637,11 +696,11 @@ function is generally only called when Gnus is shutting down." (when (nnimap-possibly-change-group group server) (let ((article (if (stringp article) (car-safe (imap-search - (format "HEADER Message-Id %s" article) + (format "HEADER Message-Id \"%s\"" article) nnimap-server-buffer)) article))) (when article - (gnus-message 9 "nnimap: Fetching (part of) article %d..." article) + (gnus-message 10 "nnimap: Fetching (part of) article %d..." article) (if (not nnheader-callback-function) (with-current-buffer (or to-buffer nntp-server-buffer) (erase-buffer) @@ -650,7 +709,7 @@ function is generally only called when Gnus is shutting down." (when data (insert (if detail (nth 2 (car data)) data)) (nnheader-ms-strip-cr) - (gnus-message 9 + (gnus-message 10 "nnimap: Fetching (part of) article %d...done" article) (if (bobp) @@ -694,6 +753,7 @@ function is generally only called when Gnus is shutting down." group (gnus-server-to-method (format "nnimap:%s" server)))) server) (when (nnimap-possibly-change-group group server) + (nnimap-before-find-minmax-bugworkaround) (let (info) (cond (fast group) ((null (setq info (nnimap-find-minmax-uid group t))) @@ -737,6 +797,7 @@ function is generally only called when Gnus is shutting down." (erase-buffer)) (gnus-message 5 "nnimap: Generating active list%s..." (if (> (length server) 0) (concat " for " server) "")) + (nnimap-before-find-minmax-bugworkaround) (with-current-buffer nnimap-server-buffer (dolist (pattern (nnimap-pattern-to-list-arguments nnimap-list-pattern)) (dolist (mbx (funcall nnimap-request-list-method @@ -778,6 +839,7 @@ function is generally only called when Gnus is shutting down." (gnus-message 5 "nnimap: Checking mailboxes...") (with-current-buffer nntp-server-buffer (erase-buffer) + (nnimap-before-find-minmax-bugworkaround) (dolist (group groups) (gnus-message 7 "nnimap: Checking mailbox %s" group) (or (member "\\NoSelect" @@ -831,6 +893,18 @@ function is generally only called when Gnus is shutting down." (gnus-info-marks info)) t))) gnus-article-mark-lists) + + ;; nnimap mark dormant article as ticked too (for other clients) + ;; so we remove that mark for gnus since we support dormant + (gnus-info-set-marks + info + (nnimap-update-alist-soft + 'tick + (gnus-remove-from-range + (cdr-safe (assoc 'tick (gnus-info-marks info))) + (cdr-safe (assoc 'dormant (gnus-info-marks info)))) + (gnus-info-marks info)) + t) (gnus-message 5 "nnimap: Updating info for %s...done" (gnus-info-group info)) @@ -866,15 +940,15 @@ function is generally only called when Gnus is shutting down." (when (and range marks) (cond ((eq what 'del) (imap-message-flags-del - (nnimap-range-to-string range) + (imap-range-to-message-set range) (nnimap-mark-to-flag marks nil t))) ((eq what 'add) (imap-message-flags-add - (nnimap-range-to-string range) + (imap-range-to-message-set range) (nnimap-mark-to-flag marks nil t))) ((eq what 'set) (imap-message-flags-set - (nnimap-range-to-string range) + (imap-range-to-message-set range) (nnimap-mark-to-flag marks nil t))))))) (gnus-message 7 "nnimap: Setting marks in %s...done" group)))) nil) @@ -923,7 +997,9 @@ function is generally only called when Gnus is shutting down." element)) (defun nnimap-split-find-rule (server inbox) - (if (listp (cadar nnimap-split-rule)) ;; extended format? + (if (and (listp nnimap-split-rule) (listp (car nnimap-split-rule)) + (list (cdar nnimap-split-rule)) (listp (cadar nnimap-split-rule))) + ;; extended format (cadr (nnimap-assoc-match inbox (cdr (nnimap-assoc-match server nnimap-split-rule)))) nnimap-split-rule)) @@ -977,14 +1053,17 @@ function is generally only called when Gnus is shutting down." (gnus-message 5 "nnimap: Listing subscribed mailboxes%s%s..." (if (> (length server) 0) " on " "") server) (erase-buffer) + (nnimap-before-find-minmax-bugworkaround) (dolist (pattern (nnimap-pattern-to-list-arguments nnimap-list-pattern)) (dolist (mbx (imap-mailbox-lsub "*" (car pattern) nil nnimap-server-buffer)) - (or (member-if (lambda (mailbox) - (string= (downcase mailbox) "\\noselect")) - (imap-mailbox-get 'list-flags mbx - nnimap-server-buffer)) + (or (catch 'found + (dolist (mailbox (imap-mailbox-get 'list-flags mbx + nnimap-server-buffer)) + (if (string= (downcase mailbox) "\\noselect") + (throw 'found t))) + nil) (let ((info (nnimap-find-minmax-uid mbx 'examine))) (when info (insert (format "\"%s\" %d %d y\n" @@ -1028,25 +1107,25 @@ function is generally only called when Gnus is shutting down." (with-current-buffer nnimap-server-buffer (if force (and (imap-message-flags-add - (nnimap-range-to-string artseq) "\\Deleted") + (imap-range-to-message-set artseq) "\\Deleted") (setq articles nil)) (let ((days (or (and nnmail-expiry-wait-function (funcall nnmail-expiry-wait-function group)) nnmail-expiry-wait))) (cond ((eq days 'immediate) (and (imap-message-flags-add - (nnimap-range-to-string artseq) "\\Deleted") + (imap-range-to-message-set artseq) "\\Deleted") (setq articles nil))) ((numberp days) (let ((oldarts (imap-search (format "UID %s NOT SINCE %s" - (nnimap-range-to-string artseq) + (imap-range-to-message-set artseq) (nnimap-date-days-ago days)))) (imap-fetch-data-hook '(nnimap-request-expire-articles-progress))) (and oldarts (imap-message-flags-add - (nnimap-range-to-string + (imap-range-to-message-set (gnus-compress-sequence oldarts)) "\\Deleted") (setq articles (gnus-set-difference @@ -1086,9 +1165,13 @@ function is generally only called when Gnus is shutting down." nnimap-current-move-article) group 'dontcreate nil nnimap-server-buffer)) - ;; turn into rfc822 format (\r\n eol's) (with-current-buffer (current-buffer) (goto-char (point-min)) + ;; remove any 'From blabla' lines, some IMAP servers + ;; reject the entire message otherwise. + (when (looking-at "^From[^:]") + (kill-region (point) (progn (forward-line) (point)))) + ;; turn into rfc822 format (\r\n eol's) (while (search-forward "\n" nil t) (replace-match "\r\n"))) ;; this 'or' is for Cyrus server bug @@ -1118,7 +1201,8 @@ function is generally only called when Gnus is shutting down." (defun nnimap-acl-get (mailbox server) (when (nnimap-possibly-change-server server) - (imap-mailbox-acl-get mailbox nnimap-server-buffer))) + (and (imap-capability 'ACL nnimap-server-buffer) + (imap-mailbox-acl-get mailbox nnimap-server-buffer)))) (defun nnimap-acl-edit (mailbox method old-acls new-acls) (when (nnimap-possibly-change-server (cadr method)) @@ -1231,18 +1315,6 @@ sure of changing the value of `foo'." (cons (cons key value) (nnimap-remassoc key alist)) (nnimap-remassoc key alist))) -(defun nnimap-range-to-string (range) - (mapconcat - (lambda (item) - (if (consp item) - (format "%d:%d" - (car item) (cdr item)) - (format "%d" item))) - (if (and (listp range) (not (listp (cdr range)))) - (list range);; make (1 . 2) into ((1 . 2)) - range) - ",")) - (when nnimap-debug (require 'trace) (buffer-disable-undo (get-buffer-create nnimap-debug)) @@ -1251,6 +1323,7 @@ sure of changing the value of `foo'." nnimap-possibly-change-server nnimap-verify-uidvalidity nnimap-find-minmax-uid + nnimap-before-find-minmax-bugworkaround nnimap-possibly-change-group ;;nnimap-replace-whitespace nnimap-retrieve-headers-progress @@ -1304,7 +1377,6 @@ sure of changing the value of `foo'." nnimap-mark-permanent-p nnimap-remassoc nnimap-update-alist-soft - nnimap-range-to-string ))) (provide 'nnimap) diff --git a/lisp/nnkiboze.el b/lisp/nnkiboze.el index 4648292..8fb0b6c 100644 --- a/lisp/nnkiboze.el +++ b/lisp/nnkiboze.el @@ -1,5 +1,7 @@ ;;; nnkiboze.el --- select virtual news access for Gnus -;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -57,6 +59,9 @@ (defvoo nnkiboze-regexp nil "Regexp for matching component groups.") +(defvoo nnkiboze-file-coding-system nnheader-text-coding-system + "Coding system for nnkiboze files.") + (defconst nnkiboze-version "nnkiboze 1.0") @@ -82,7 +87,8 @@ (save-excursion (set-buffer nntp-server-buffer) (erase-buffer) - (nnheader-insert-file-contents nov) + (let ((nnheader-file-coding-system nnkiboze-file-coding-system)) + (nnheader-insert-file-contents nov)) (nnheader-nov-delete-outside-range (car articles) (car (last articles))) 'nov)))))) @@ -95,14 +101,17 @@ ;; article fetching by message-id at all. (nntp-request-article article newsgroup gnus-nntp-server buffer) (let* ((header (gnus-summary-article-header article)) - (xref (mail-header-xref header))) + (xref (mail-header-xref header)) + num group) (unless xref (error "nnkiboze: No xref")) (unless (string-match " \\([^ ]+\\):\\([0-9]+\\)" xref) (error "nnkiboze: Malformed xref")) - (gnus-request-article (string-to-int (match-string 2 xref)) - (match-string 1 xref) - buffer)))) + (setq num (string-to-int (match-string 2 xref)) + group (match-string 1 xref)) + (or (with-current-buffer buffer + (gnus-cache-request-article num group)) + (gnus-request-article num group buffer))))) (deffoo nnkiboze-request-scan (&optional group server) (nnkiboze-generate-group (concat "nnkiboze:" group))) @@ -121,7 +130,8 @@ (nnkiboze-request-scan group)) (if (not (file-exists-p nov-file)) (nnheader-report 'nnkiboze "Can't select group %s" group) - (nnheader-insert-file-contents nov-file) + (let ((nnheader-file-coding-system nnkiboze-file-coding-system)) + (nnheader-insert-file-contents nov-file)) (if (zerop (buffer-size)) (nnheader-insert "211 0 0 0 %s\n" group) (goto-char (point-min)) @@ -138,15 +148,18 @@ ;; Remove NOV lines of articles that are marked as read. (when (and (file-exists-p (nnkiboze-nov-file-name)) nnkiboze-remove-read-articles) - (with-temp-file (nnkiboze-nov-file-name) - (let ((cur (current-buffer))) - (nnheader-insert-file-contents (nnkiboze-nov-file-name)) - (goto-char (point-min)) - (while (not (eobp)) - (if (not (gnus-article-read-p (read cur))) - (forward-line 1) - (gnus-delete-line)))))) - (setq nnkiboze-current-group nil)) + (let ((coding-system-for-write nnkiboze-file-coding-system) + (output-coding-system nnkiboze-file-coding-system)) + (with-temp-file (nnkiboze-nov-file-name) + (let ((cur (current-buffer)) + (nnheader-file-coding-system nnkiboze-file-coding-system)) + (nnheader-insert-file-contents (nnkiboze-nov-file-name)) + (goto-char (point-min)) + (while (not (eobp)) + (if (not (gnus-article-read-p (read cur))) + (forward-line 1) + (gnus-delete-line)))))) + (setq nnkiboze-current-group nil))) (deffoo nnkiboze-open-server (server &optional defs) (unless (assq 'nnkiboze-regexp defs) @@ -186,6 +199,7 @@ Finds out what articles are to be part of the nnkiboze groups." (interactive) (let ((nnmail-spool-file nil) + (mail-sources nil) (gnus-use-dribble-file nil) (gnus-read-active-file t) (gnus-expert-user t)) @@ -200,7 +214,10 @@ Finds out what articles are to be part of the nnkiboze groups." (when (string-match "nnkiboze" (gnus-info-group info)) ;; For each kiboze group, we call this function to generate ;; it. - (nnkiboze-generate-group (gnus-info-group info)))))) + (nnkiboze-generate-group (gnus-info-group info) t)))) + (save-excursion + (set-buffer gnus-group-buffer) + (gnus-group-list-groups))) (defun nnkiboze-score-file (group) (list (expand-file-name @@ -209,7 +226,7 @@ Finds out what articles are to be part of the nnkiboze groups." (concat (nnkiboze-prefixed-name nnkiboze-current-group) "." gnus-score-file-suffix)))))) -(defun nnkiboze-generate-group (group) +(defun nnkiboze-generate-group (group &optional inhibit-list-groups) (let* ((info (nth 2 (gnus-gethash group gnus-newsrc-hashtb))) (newsrc-file (concat nnkiboze-directory (nnheader-translate-file-chars @@ -223,6 +240,9 @@ Finds out what articles are to be part of the nnkiboze groups." (gnus-expert-user t) (gnus-large-newsgroup nil) (gnus-score-find-score-files-function 'nnkiboze-score-file) + ;; Use only nnkiboze-score-file! + (gnus-score-use-all-scores nil) + (gnus-use-scoring t) (gnus-verbose (min gnus-verbose 3)) gnus-select-group-hook gnus-summary-prepare-hook gnus-thread-sort-functions gnus-show-threads @@ -232,101 +252,104 @@ Finds out what articles are to be part of the nnkiboze groups." ;; Load the kiboze newsrc file for this group. (when (file-exists-p newsrc-file) (load newsrc-file)) - (with-temp-file nov-file - (when (file-exists-p nov-file) - (nnheader-insert-file-contents nov-file)) - (setq nov-buffer (current-buffer)) - ;; Go through the active hashtb and add new all groups that match the - ;; kiboze regexp. - (mapatoms - (lambda (group) - (and (string-match nnkiboze-regexp - (setq gname (symbol-name group))) ; Match - (not (assoc gname nnkiboze-newsrc)) ; It isn't registered - (numberp (car (symbol-value group))) ; It is active - (or (> nnkiboze-level 7) - (and (setq glevel (nth 1 (nth 2 (gnus-gethash - gname gnus-newsrc-hashtb)))) - (>= nnkiboze-level glevel))) - (not (string-match "^nnkiboze:" gname)) ; Exclude kibozes - (push (cons gname (1- (car (symbol-value group)))) - nnkiboze-newsrc))) - gnus-active-hashtb) - ;; `newsrc' is set to the list of groups that possibly are - ;; component groups to this kiboze group. This list has elements - ;; on the form `(GROUP . NUMBER)', where NUMBER is the highest - ;; number that has been kibozed in GROUP in this kiboze group. - (setq newsrc nnkiboze-newsrc) - (while newsrc - (if (not (setq active (gnus-gethash - (caar newsrc) gnus-active-hashtb))) - ;; This group isn't active after all, so we remove it from - ;; the list of component groups. - (setq nnkiboze-newsrc (delq (car newsrc) nnkiboze-newsrc)) - (setq lowest (cdar newsrc)) - ;; Ok, we have a valid component group, so we jump to it. - (switch-to-buffer gnus-group-buffer) - (gnus-group-jump-to-group (caar newsrc)) - (gnus-message 3 "nnkiboze: Checking %s..." (caar newsrc)) - (setq ginfo (gnus-get-info (gnus-group-group-name)) - orig-info (gnus-copy-sequence ginfo) - num-unread (car (gnus-gethash (caar newsrc) - gnus-newsrc-hashtb))) - (unwind-protect - (progn - ;; We set all list of article marks to nil. Since we operate - ;; on copies of the real lists, we can destroy anything we - ;; want here. - (when (nth 3 ginfo) - (setcar (nthcdr 3 ginfo) nil)) - ;; We set the list of read articles to be what we expect for - ;; this kiboze group -- either nil or `(1 . LOWEST)'. - (when ginfo - (setcar (nthcdr 2 ginfo) - (and (not (= lowest 1)) (cons 1 lowest)))) - (when (and (or (not ginfo) - (> (length (gnus-list-of-unread-articles - (car ginfo))) - 0)) - (progn - (ignore-errors - (gnus-group-select-group nil)) - (eq major-mode 'gnus-summary-mode))) - ;; We are now in the group where we want to be. - (setq method (gnus-find-method-for-group - gnus-newsgroup-name)) - (when (eq method gnus-select-method) - (setq method nil)) - ;; We go through the list of scored articles. - (while gnus-newsgroup-scored - (when (> (caar gnus-newsgroup-scored) lowest) - ;; If it has a good score, then we enter this article - ;; into the kiboze group. - (nnkiboze-enter-nov - nov-buffer - (gnus-summary-article-header - (caar gnus-newsgroup-scored)) - gnus-newsgroup-name)) - (setq gnus-newsgroup-scored (cdr gnus-newsgroup-scored))) - ;; That's it. We exit this group. - (when (eq major-mode 'gnus-summary-mode) - (kill-buffer (current-buffer))))) - ;; Restore the proper info. - (when ginfo - (setcdr ginfo (cdr orig-info))) - (setcar (gnus-gethash (caar newsrc) gnus-newsrc-hashtb) - num-unread))) - (setcdr (car newsrc) (car active)) - (gnus-message 3 "nnkiboze: Checking %s...done" (caar newsrc)) - (setq newsrc (cdr newsrc)))) + (let ((coding-system-for-write nnkiboze-file-coding-system) + (output-coding-system nnkiboze-file-coding-system)) + (with-temp-file nov-file + (when (file-exists-p nov-file) + (nnheader-insert-file-contents nov-file)) + (setq nov-buffer (current-buffer)) + ;; Go through the active hashtb and add new all groups that match the + ;; kiboze regexp. + (mapatoms + (lambda (group) + (and (string-match nnkiboze-regexp + (setq gname (symbol-name group))) ; Match + (not (assoc gname nnkiboze-newsrc)) ; It isn't registered + (numberp (car (symbol-value group))) ; It is active + (or (> nnkiboze-level 7) + (and (setq glevel (nth 1 (nth 2 (gnus-gethash + gname gnus-newsrc-hashtb)))) + (>= nnkiboze-level glevel))) + (not (string-match "^nnkiboze:" gname)) ; Exclude kibozes + (push (cons gname (1- (car (symbol-value group)))) + nnkiboze-newsrc))) + gnus-active-hashtb) + ;; `newsrc' is set to the list of groups that possibly are + ;; component groups to this kiboze group. This list has elements + ;; on the form `(GROUP . NUMBER)', where NUMBER is the highest + ;; number that has been kibozed in GROUP in this kiboze group. + (setq newsrc nnkiboze-newsrc) + (while newsrc + (if (not (setq active (gnus-gethash + (caar newsrc) gnus-active-hashtb))) + ;; This group isn't active after all, so we remove it from + ;; the list of component groups. + (setq nnkiboze-newsrc (delq (car newsrc) nnkiboze-newsrc)) + (setq lowest (cdar newsrc)) + ;; Ok, we have a valid component group, so we jump to it. + (switch-to-buffer gnus-group-buffer) + (gnus-group-jump-to-group (caar newsrc)) + (gnus-message 3 "nnkiboze: Checking %s..." (caar newsrc)) + (setq ginfo (gnus-get-info (gnus-group-group-name)) + orig-info (gnus-copy-sequence ginfo) + num-unread (car (gnus-gethash (caar newsrc) + gnus-newsrc-hashtb))) + (unwind-protect + (progn + ;; We set all list of article marks to nil. Since we operate + ;; on copies of the real lists, we can destroy anything we + ;; want here. + (when (nth 3 ginfo) + (setcar (nthcdr 3 ginfo) nil)) + ;; We set the list of read articles to be what we expect for + ;; this kiboze group -- either nil or `(1 . LOWEST)'. + (when ginfo + (setcar (nthcdr 2 ginfo) + (and (not (= lowest 1)) (cons 1 lowest)))) + (when (and (or (not ginfo) + (> (length (gnus-list-of-unread-articles + (car ginfo))) + 0)) + (progn + (ignore-errors + (gnus-group-select-group nil)) + (eq major-mode 'gnus-summary-mode))) + ;; We are now in the group where we want to be. + (setq method (gnus-find-method-for-group + gnus-newsgroup-name)) + (when (eq method gnus-select-method) + (setq method nil)) + ;; We go through the list of scored articles. + (while gnus-newsgroup-scored + (when (> (caar gnus-newsgroup-scored) lowest) + ;; If it has a good score, then we enter this article + ;; into the kiboze group. + (nnkiboze-enter-nov + nov-buffer + (gnus-summary-article-header + (caar gnus-newsgroup-scored)) + gnus-newsgroup-name)) + (setq gnus-newsgroup-scored (cdr gnus-newsgroup-scored))) + ;; That's it. We exit this group. + (when (eq major-mode 'gnus-summary-mode) + (kill-buffer (current-buffer))))) + ;; Restore the proper info. + (when ginfo + (setcdr ginfo (cdr orig-info))) + (setcar (gnus-gethash (caar newsrc) gnus-newsrc-hashtb) + num-unread))) + (setcdr (car newsrc) (car active)) + (gnus-message 3 "nnkiboze: Checking %s...done" (caar newsrc)) + (setq newsrc (cdr newsrc))))) ;; We save the kiboze newsrc for this group. (with-temp-file newsrc-file (insert "(setq nnkiboze-newsrc '") (gnus-prin1 nnkiboze-newsrc) (insert ")\n"))) - (save-excursion - (set-buffer gnus-group-buffer) - (gnus-group-list-groups)) + (unless inhibit-list-groups + (save-excursion + (set-buffer gnus-group-buffer) + (gnus-group-list-groups))) t) (defun nnkiboze-enter-nov (buffer header group) @@ -342,19 +365,22 @@ Finds out what articles are to be part of the nnkiboze groups." (forward-line 1)) (setq article 1)) (mail-header-set-number oheader article) - (nnheader-insert-nov oheader) - (search-backward "\t" nil t 2) - (if (re-search-forward " [^ ]+:[0-9]+" nil t) - (goto-char (match-beginning 0)) - (forward-char 1)) - ;; The first Xref has to be the group this article - ;; really came for - this is the article nnkiboze - ;; will request when it is asked for the article. - (insert " " group ":" - (int-to-string (mail-header-number header)) " ") - (while (re-search-forward " [^ ]+:[0-9]+" nil t) - (goto-char (1+ (match-beginning 0))) - (insert prefix))))) + (with-temp-buffer + (insert (or (mail-header-xref oheader) "")) + (goto-char (point-min)) + (if (re-search-forward " [^ ]+:[0-9]+" nil t) + (goto-char (match-beginning 0)) + (or (eobp) (forward-char 1))) + ;; The first Xref has to be the group this article + ;; really came for - this is the article nnkiboze + ;; will request when it is asked for the article. + (insert " " group ":" + (int-to-string (mail-header-number header)) " ") + (while (re-search-forward " [^ ]+:[0-9]+" nil t) + (goto-char (1+ (match-beginning 0))) + (insert prefix)) + (mail-header-set-xref oheader (buffer-string))) + (nnheader-insert-nov oheader)))) (defun nnkiboze-nov-file-name (&optional suffix) (concat (file-name-as-directory nnkiboze-directory) diff --git a/lisp/nnlistserv.el b/lisp/nnlistserv.el index 79b08b8..666cd70 100644 --- a/lisp/nnlistserv.el +++ b/lisp/nnlistserv.el @@ -1,5 +1,6 @@ ;;; nnlistserv.el --- retrieving articles via web mailing list archives -;; Copyright (C) 1997,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail @@ -31,7 +32,10 @@ (eval-when-compile (require 'cl)) (require 'nnoo) -(require 'nnweb) +(eval-when-compile + (ignore-errors + (require 'nnweb)) ; requires W3 + (autoload 'url-insert-file-contents "nnweb")) (nnoo-declare nnlistserv nnweb) diff --git a/lisp/nnmail.el b/lisp/nnmail.el index b4df106..910c667 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -176,14 +176,21 @@ Eg.: (function :format "%v" nnmail-))) (defcustom nnmail-expiry-target 'delete - "*Variable that says where expired messages should end up." + "*Variable that says where expired messages should end up. +The default value is `delete' (which says to delete the messages), +but it can also be a string or a function. If it is a string, expired +messages end up in that group. If it is a function, the function is +called in a buffer narrowed to the message in question. The function +receives one argument, the name of the group the message comes from. +The return value should be `delete' or a group name (a string)." :group 'nnmail-expire :type '(choice (const delete) (function :format "%v" nnmail-) string)) (defcustom nnmail-cache-accepted-message-ids nil - "If non-nil, put Message-IDs of Gcc'd articles into the duplicate cache." + "If non-nil, put Message-IDs of Gcc'd articles into the duplicate cache. +If non-nil, also update the cache when copy or move articles." :group 'nnmail :type 'boolean) @@ -228,7 +235,7 @@ links, you could set this variable to `copy-file' instead." '(nnheader-ms-strip-cr) nil) "*Hook that will be run after the incoming mail has been transferred. -The incoming mail is moved from `nnmail-spool-file' (which normally is +The incoming mail is moved from the specified spool file (which normally is something like \"/usr/spool/mail/$user\") to the user's home directory. This hook is called after the incoming mail box has been emptied, and can be used to call any mail box programs you have @@ -237,9 +244,9 @@ running (\"xwatch\", etc.) Eg. \(add-hook 'nnmail-read-incoming-hook - (lambda () - (start-process \"mailsend\" nil - \"/local/bin/mailsend\" \"read\" \"mbox\"))) + (lambda () + (call-process \"/local/bin/mailsend\" nil nil nil + \"read\" nnmail-spool-file))) If you have xwatch running, this will alert it that mail has been read. @@ -1620,7 +1627,7 @@ See the documentation for the variable `nnmail-split-fancy' for documentation." (when (nnheader-functionp target) (setq target (funcall target group))) (unless (eq target 'delete) - (gnus-request-accept-article target))) + (gnus-request-accept-article target nil nil t))) (defun nnmail-check-syntax () "Check (and modify) the syntax of the message in the current buffer." diff --git a/lisp/nnmbox.el b/lisp/nnmbox.el index 5c3a674..3e502b8 100644 --- a/lisp/nnmbox.el +++ b/lisp/nnmbox.el @@ -1,5 +1,7 @@ ;;; nnmbox.el --- mail mbox access for Gnus -;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA @@ -61,9 +63,9 @@ (defvoo nnmbox-group-alist nil) (defvoo nnmbox-active-timestamp nil) -(defvoo nnmbox-file-coding-system nnheader-text-coding-system) +(defvoo nnmbox-file-coding-system 'binary) (defvoo nnmbox-file-coding-system-for-write nil) -(defvoo nnmbox-active-file-coding-system nnheader-text-coding-system) +(defvoo nnmbox-active-file-coding-system 'binary) (defvoo nnmbox-active-file-coding-system-for-write nil) diff --git a/lisp/nnmh.el b/lisp/nnmh.el index 6551b2f..7c6760d 100644 --- a/lisp/nnmh.el +++ b/lisp/nnmh.el @@ -1,5 +1,7 @@ ;;; nnmh.el --- mhspool access for Gnus -;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA diff --git a/lisp/nnml.el b/lisp/nnml.el index 7d5ac45..6f1bd6b 100644 --- a/lisp/nnml.el +++ b/lisp/nnml.el @@ -295,12 +295,13 @@ all. This may very well take some time.") ;; Allow a special target group. (unless (eq nnmail-expiry-target 'delete) (with-temp-buffer - (nnml-request-article article group server + (nnml-request-article number group server (current-buffer)) - (nnmail-expiry-target-group - nnmail-expiry-target group))) + (let ((nnml-current-directory nil)) + (nnmail-expiry-target-group + nnmail-expiry-target group)))) (nnheader-message 5 "Deleting article %s in %s" - article group) + number group) (condition-case () (funcall nnmail-delete-file-function article) (file-error @@ -755,7 +756,7 @@ all. This may very well take some time.") (unless no-active (nnmail-save-active nnml-group-alist nnml-active-file)))))) -(defvar files) +(eval-when-compile (defvar files)) (defun nnml-generate-active-info (dir) ;; Update the active info for this group. (let ((group (nnheader-file-to-group diff --git a/lisp/nnoo.el b/lisp/nnoo.el index 44a0f83..dc2fa31 100644 --- a/lisp/nnoo.el +++ b/lisp/nnoo.el @@ -1,5 +1,7 @@ ;;; nnoo.el --- OO Gnus Backends -;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -302,6 +304,20 @@ All functions will return nil and report an error." (&rest args) (nnheader-report ',backend ,(format "%s-%s not implemented" backend function)))))))) + +(defun nnoo-set (server &rest args) + (let ((parents (nnoo-parents (car server))) + (nnoo-parent-backend (car server))) + (while parents + (nnoo-change-server (caar parents) + (cadr server) + (cdar parents)) + (pop parents))) + (nnoo-change-server (car server) + (cadr server) (cddr server)) + (while args + (set (pop args) (pop args)))) + (provide 'nnoo) ;;; nnoo.el ends here. diff --git a/lisp/nnslashdot.el b/lisp/nnslashdot.el index 013fabc..1a9ac54 100644 --- a/lisp/nnslashdot.el +++ b/lisp/nnslashdot.el @@ -91,7 +91,7 @@ (nnslashdot-threaded-retrieve-headers articles group) (nnslashdot-sane-retrieve-headers articles group))) (search-failed (nnslashdot-lose why)))) - + (deffoo nnslashdot-threaded-retrieve-headers (articles group) (let ((last (car (last articles))) (did nil) @@ -114,11 +114,9 @@ (search-forward " on ") (setq date (nnslashdot-date-to-date (buffer-substring (point) (1- (search-forward "<"))))) - (forward-line 2) - (setq lines (count-lines - (point) - (re-search-forward - "A href=\"\\(http://slashdot.org\\)?/article" nil t))) + (setq lines (/ (- (point) + (progn (forward-line 1) (point))) + 60)) (push (cons 1 @@ -156,11 +154,15 @@ (forward-line 1) (if (looking-at "by ]+>\\([^<]+\\)[ \t\n]*.*(\\([^)]+\\))") - (setq from (concat (nnweb-decode-entities-string (match-string 1)) - " <" (match-string 2) ">")) - (looking-at "by \\(.+\\) on ") - (setq from (nnweb-decode-entities-string (match-string 1)))) - (goto-char (- (match-end 0) 5)) + (progn + (goto-char (- (match-end 0) 5)) + (setq from (concat + (nnweb-decode-entities-string (match-string 1)) + " <" (match-string 2) ">"))) + (setq from "") + (when (looking-at "by \\(.+\\) on ") + (goto-char (- (match-end 0) 5)) + (setq from (nnweb-decode-entities-string (match-string 1))))) (search-forward " on ") (setq date (nnslashdot-date-to-date @@ -195,8 +197,9 @@ (save-excursion (set-buffer nntp-server-buffer) (erase-buffer) - (dolist (header nnslashdot-headers) - (nnheader-insert-nov (cdr header)))) + (mm-with-unibyte-current-buffer + (dolist (header nnslashdot-headers) + (nnheader-insert-nov (cdr header))))) 'nov)) (deffoo nnslashdot-sane-retrieve-headers (articles group) @@ -253,11 +256,15 @@ (forward-line 1) (if (looking-at "by ]+>\\([^<]+\\)[ \t\n]*.*(\\([^)]+\\))") - (setq from (concat (nnweb-decode-entities-string (match-string 1)) - " <" (match-string 2) ">")) - (looking-at "by \\(.+\\) on ") - (setq from (nnweb-decode-entities-string (match-string 1)))) - (goto-char (- (match-end 0) 5)) + (progn + (goto-char (- (match-end 0) 5)) + (setq from (concat + (nnweb-decode-entities-string (match-string 1)) + " <" (match-string 2) ">"))) + (setq from "") + (when (looking-at "by \\(.+\\) on ") + (goto-char (- (match-end 0) 5)) + (setq from (nnweb-decode-entities-string (match-string 1))))) (search-forward " on ") (setq date (nnslashdot-date-to-date @@ -292,8 +299,9 @@ (save-excursion (set-buffer nntp-server-buffer) (erase-buffer) - (dolist (header nnslashdot-headers) - (nnheader-insert-nov (cdr header)))) + (mm-with-unibyte-current-buffer + (dolist (header nnslashdot-headers) + (nnheader-insert-nov (cdr header))))) 'nov)) (deffoo nnslashdot-request-group (group &optional server dont-check) @@ -350,17 +358,18 @@ (save-excursion (set-buffer (or buffer nntp-server-buffer)) (erase-buffer) - (insert contents) - (goto-char (point-min)) - (while (re-search-forward "\\(
\r?\\)+" nil t) - (replace-match "

" t t)) - (goto-char (point-min)) - (insert "Content-Type: text/html\nMIME-Version: 1.0\n") - (insert "Newsgroups: " (caddr (assoc group nnslashdot-groups)) - "\n") - (let ((header (cdr (assq article nnslashdot-headers)))) - (nnheader-insert-header header)) - (nnheader-report 'nnslashdot "Fetched article %s" article) + (mm-with-unibyte-current-buffer + (insert contents) + (goto-char (point-min)) + (while (re-search-forward "\\(
\r?\\)+" nil t) + (replace-match "

" t t)) + (goto-char (point-min)) + (insert "Content-Type: text/html\nMIME-Version: 1.0\n") + (insert "Newsgroups: " (caddr (assoc group nnslashdot-groups)) + "\n") + (let ((header (cdr (assq article nnslashdot-headers)))) + (nnheader-insert-header header)) + (nnheader-report 'nnslashdot "Fetched article %s" article)) (cons group article))))) (deffoo nnslashdot-close-server (&optional server) @@ -484,6 +493,10 @@ nnslashdot-groups)) (nnslashdot-write-groups)) +(deffoo nnslashdot-request-close () + (setq nnslashdot-headers nil + nnslashdot-groups nil)) + (nnoo-define-skeleton nnslashdot) ;;; Internal functions @@ -540,10 +553,12 @@ (defun nnslashdot-lose (why) (error "Slashdot HTML has changed; please get a new version of nnslashdot")) -(defun nnslashdot-sid-strip (sid) - (if (string-match "^00/" sid) - (substring sid (match-end 0)) - sid)) +;(defun nnslashdot-sid-strip (sid) +; (if (string-match "^00/" sid) +; (substring sid (match-end 0)) +; sid)) + +(defalias 'nnslashdot-sid-strip 'identity) (provide 'nnslashdot) diff --git a/lisp/nnsoup.el b/lisp/nnsoup.el index 8fbe994..140fe5e 100644 --- a/lisp/nnsoup.el +++ b/lisp/nnsoup.el @@ -1,5 +1,7 @@ ;;; nnsoup.el --- SOUP access for Gnus -;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. + +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 +;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA @@ -45,7 +47,7 @@ ("/tmp/")) "*Where nnsoup will store temporary files.") -(defvoo nnsoup-replies-directory (concat nnsoup-directory "replies/") +(defvoo nnsoup-replies-directory (expand-file-name "replies/" nnsoup-directory) "*Directory where outgoing packets will be composed.") (defvoo nnsoup-replies-format-type ?u ;; u is USENET news format. @@ -54,7 +56,7 @@ (defvoo nnsoup-replies-index-type ?n "*Index type of the replies packages.") -(defvoo nnsoup-active-file (concat nnsoup-directory "active") +(defvoo nnsoup-active-file (expand-file-name "active" nnsoup-directory) "Active file.") (defvoo nnsoup-packer "tar cf - %s | gzip > $HOME/Soupin%d.tgz" @@ -423,12 +425,15 @@ backend for the messages.") (setq cur-prefix (nnsoup-next-prefix)) (nnheader-message 5 "Incorporating file %s..." cur-prefix) (when (file-exists-p - (setq file (concat nnsoup-tmp-directory - (gnus-soup-area-prefix area) ".IDX"))) + (setq file + (expand-file-name + (concat (gnus-soup-area-prefix area) ".IDX") + nnsoup-tmp-directory))) (rename-file file (nnsoup-file cur-prefix))) (when (file-exists-p - (setq file (concat nnsoup-tmp-directory - (gnus-soup-area-prefix area) ".MSG"))) + (setq file (expand-file-name + (concat (gnus-soup-area-prefix area) ".MSG") + nnsoup-tmp-directory))) (rename-file file (nnsoup-file cur-prefix t)) (gnus-soup-set-area-prefix area cur-prefix) ;; Find the number of new articles in this area. @@ -532,17 +537,19 @@ backend for the messages.") (let* ((file (concat prefix (if message ".MSG" ".IDX"))) (buffer-name (concat " *nnsoup " file "*"))) (or (get-buffer buffer-name) ; File already loaded. - (when (file-exists-p (concat nnsoup-directory file)) + (when (file-exists-p (expand-file-name file nnsoup-directory)) (save-excursion ; Load the file. (set-buffer (get-buffer-create buffer-name)) (buffer-disable-undo) (push (cons nnsoup-current-group (current-buffer)) nnsoup-buffers) - (nnheader-insert-file-contents (concat nnsoup-directory file)) + (nnheader-insert-file-contents + (expand-file-name file nnsoup-directory)) (current-buffer)))))) (defun nnsoup-file (prefix &optional message) (expand-file-name - (concat nnsoup-directory prefix (if message ".MSG" ".IDX")))) + (concat prefix (if message ".MSG" ".IDX")) + nnsoup-directory)) (defun nnsoup-message-buffer (prefix) (nnsoup-index-buffer prefix 'msg)) @@ -723,7 +730,7 @@ backend for the messages.") (unless nnsoup-replies-list (setq nnsoup-replies-list (gnus-soup-parse-replies - (concat nnsoup-replies-directory "REPLIES")))) + (expand-file-name "REPLIES" nnsoup-replies-directory)))) (let ((replies nnsoup-replies-list)) (while (and replies (not (string= kind (gnus-soup-reply-kind (car replies))))) @@ -802,7 +809,8 @@ backend for the messages.") ;; Sort and delete the files. (setq non-files (sort non-files 'string<)) (map-y-or-n-p "Delete file %s? " - (lambda (file) (delete-file (concat nnsoup-directory file))) + (lambda (file) (delete-file + (expand-file-name file nnsoup-directory))) non-files))) (provide 'nnsoup) diff --git a/lisp/nnspool.el b/lisp/nnspool.el index b4c7cd8..9463d63 100644 --- a/lisp/nnspool.el +++ b/lisp/nnspool.el @@ -1,5 +1,7 @@ ;;; nnspool.el --- spool access for GNU Emacs -;; Copyright (C) 1988,89,90,93,94,95,96,97,98 Free Software Foundation, Inc. + +;; Copyright (C) 1988, 1989, 1990, 1993, 1994, 1995, 1996, 1997, 1998, +;; 2000 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen @@ -139,8 +141,9 @@ there.") (inline (nnheader-insert-head file)) (goto-char beg) (if (search-forward "\n\n" nil t) - (progn (forward-char -1) - (insert ".\n")) + (progn + (forward-char -1) + (insert ".\n")) (goto-char (point-max)) (if (bolp) (insert ".\n") diff --git a/lisp/nntp.el b/lisp/nntp.el index 046c785..05147ed 100644 --- a/lisp/nntp.el +++ b/lisp/nntp.el @@ -210,7 +210,8 @@ server there that you can connect to. See also (defvoo nntp-connection-timeout nil "*Number of seconds to wait before an nntp connection times out. -If this variable is nil, which is the default, no timers are set.") +If this variable is nil, which is the default, no timers are set. +NOTE: This variable is never seen to work in Emacs 20 and XEmacs 21.") (defvoo nntp-prepare-post-hook nil "*Hook run just before posting an article. It is supposed to be used for @@ -343,7 +344,7 @@ noticing asynchronous data.") (let ((alist nntp-connection-alist) (buffer (if (stringp buffer) (get-buffer buffer) buffer)) process entry) - (while (setq entry (pop alist)) + (while (and alist (setq entry (pop alist))) (when (eq buffer (cadr entry)) (setq process (car entry) alist nil))) @@ -391,7 +392,10 @@ noticing asynchronous data.") (error (nnheader-report 'nntp "Couldn't open connection to %s: %s" address err)) - (quit nil))))) + (quit + (message "Quit retrieving data from nntp") + (signal 'quit nil) + nil))))) (defsubst nntp-send-command (wait-for &rest strings) "Send STRINGS to server and wait until WAIT-FOR returns." @@ -553,32 +557,41 @@ noticing asynchronous data.") (when (or (null groups) ;All requests have been sent. (zerop (% count nntp-maximum-request))) (nntp-accept-response) - (while (progn - ;; Search `blue moon' in this file for the - ;; reason why set-buffer here. - (set-buffer buf) - (goto-char last-point) - ;; Count replies. - (while (re-search-forward "^[0-9]" nil t) - (incf received)) - (setq last-point (point)) - (< received count)) + (while (and (gnus-buffer-live-p buf) + (progn + ;; Search `blue moon' in this file for the + ;; reason why set-buffer here. + (set-buffer buf) + (goto-char last-point) + ;; Count replies. + (while (re-search-forward "^[0-9]" nil t) + (incf received)) + (setq last-point (point)) + (< received count))) (nntp-accept-response)))) ;; Wait for the reply from the final command. + (unless (gnus-buffer-live-p buf) + (error + (nnheader-report 'nntp "Connection to %s is closed." server))) (set-buffer buf) (goto-char (point-max)) (re-search-backward "^[0-9]" nil t) (when (looking-at "^[23]") - (while (progn - (set-buffer buf) - (goto-char (point-max)) - (if (not nntp-server-list-active-group) - (not (re-search-backward "\r?\n" (- (point) 3) t)) - (not (re-search-backward "^\\.\r?\n" (- (point) 4) t)))) - (nntp-accept-response))) + (while (and (gnus-buffer-live-p buf) + (progn + (set-buffer buf) + (goto-char (point-max)) + (if (not nntp-server-list-active-group) + (not (re-search-backward "\r?\n" (- (point) 3) t)) + (not (re-search-backward "^\\.\r?\n" + (- (point) 4) t))))) + (nntp-accept-response))) ;; Now all replies are received. We remove CRs. + (unless (gnus-buffer-live-p buf) + (error + (nnheader-report 'nntp "Connection to %s is closed." server))) (set-buffer buf) (goto-char (point-min)) (while (search-forward "\r" nil t) @@ -888,8 +901,9 @@ If SEND-IF-FORCE, only send authinfo to the server if the (or passwd nntp-authinfo-password (setq nntp-authinfo-password - (mail-source-read-passwd (format "NNTP (%s@%s) password: " - user nntp-address)))))))))) + (mail-source-read-passwd + (format "NNTP (%s@%s) password: " + user nntp-address)))))))))) (defun nntp-send-nosy-authinfo () "Send the AUTHINFO to the nntp server." @@ -958,9 +972,15 @@ password contained in '~/.nntp-authinfo'." (condition-case () (funcall nntp-open-connection-function pbuffer) (error nil) - (quit nil)))) + (quit + (message "Quit opening connection") + (nntp-kill-buffer pbuffer) + (signal 'quit nil) + nil)))) (when timer (nnheader-cancel-timer timer)) + (unless process + (nntp-kill-buffer pbuffer)) (when (and (buffer-name pbuffer) process) (process-kill-without-query process) @@ -1068,7 +1088,7 @@ password contained in '~/.nntp-authinfo'." (if (memq (following-char) '(?4 ?5)) ;; wants credentials? (if (looking-at "480") - (nntp-handle-authinfo nntp-process-to-buffer) + (nntp-handle-authinfo process) ;; report error message. (nntp-snarf-error-message) (nntp-do-callback nil)) @@ -1163,7 +1183,9 @@ password contained in '~/.nntp-authinfo'." (delete-char 2)) ;; Delete status line. (goto-char (point-min)) - (delete-region (point) (progn (forward-line 1) (point))) + (while (looking-at "[1-5][0-9][0-9] .*\n") + ;; For some unknown reason, there is more than one status line. + (delete-region (point) (progn (forward-line 1) (point)))) ;; Remove "." -> ".." encoding. (while (search-forward "\n.." nil t) (delete-char -1)))) diff --git a/lisp/nnultimate.el b/lisp/nnultimate.el index f32167e..f4dd670 100644 --- a/lisp/nnultimate.el +++ b/lisp/nnultimate.el @@ -1,4 +1,4 @@ -;;; nnultimate.el --- interfacing with the Ultimate Bulletin Board system +;;; nnultimate.el --- interfacing with the Ultimate Bulletin Board system -*- coding: iso-latin-1 -*- ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -57,6 +57,8 @@ (defvoo nnultimate-groups nil) (defvoo nnultimate-headers nil) (defvoo nnultimate-articles nil) +(defvar nnultimate-table-regexp + "postings.*editpost\\|forumdisplay\\|Forum[0-9]+/HTML\\|getbio") ;;; Interface functions @@ -75,6 +77,8 @@ (old-total (or (nth 6 entry) 1)) (furl "forumdisplay.cgi?action=topics&number=%d&DaysPrune=1000") (furls (list (concat nnultimate-address (format furl sid)))) + (nnultimate-table-regexp + "postings.*editpost\\|forumdisplay\\|getbio") headers article subject score from date lines parent point contents tinfo fetchers map elem a href garticles topic old-max inc datel table string current-page total-contents pages @@ -162,7 +166,7 @@ (setq date (substring (car datel) (match-end 0)) datel nil)) (pop datel)) - (setq date (delete "" (split-string date "[- \n\t\r    ]"))) + (setq date (delete "" (split-string date "[- \n\t\r    ]"))) (if (or (member "AM" date) (member "PM" date)) (setq date (format "%s %s %s %s" @@ -216,6 +220,10 @@ "211 %d %d %d %s\n" (cadr elem) 1 (cadr elem) (prin1-to-string group)))))) +(deffoo nnultimate-request-close () + (setq nnultimate-groups-alist nil + nnultimate-groups nil)) + (deffoo nnultimate-request-article (article &optional group server buffer) (nnultimate-possibly-change-server group server) (let ((contents (cdr (assq article nnultimate-articles)))) @@ -327,7 +335,7 @@ ;; the group is entered, there's 2 new articles in topic one ;; and 1 in topic three. Then Gnus article number 8-9 be 5-6 ;; in topic one and 10 will be the 2 in topic three. - (dolist (row (reverse forum-contents)) + (dolist (row (nreverse forum-contents)) (setq row (nth 2 row)) (when (setq a (nnweb-parse-find 'a row)) (setq subject (car (last (nnweb-text a))) @@ -435,9 +443,7 @@ (nth 2 parse)))) (let ((href (cdr (assq 'href (nth 1 (nnweb-parse-find 'a parse 20))))) case-fold-search) - (when (and href (string-match - "postings\\|forumdisplay\\|Forum[0-9]+/HTML\\|getbio" - href)) + (when (and href (string-match nnultimate-table-regexp href)) t)))) (provide 'nnultimate) diff --git a/lisp/nnvirtual.el b/lisp/nnvirtual.el index e75b311..e1f43a0 100644 --- a/lisp/nnvirtual.el +++ b/lisp/nnvirtual.el @@ -368,8 +368,16 @@ component group will show up when you enter the virtual group.") (nnvirtual-possibly-change-server server) (setq nnvirtual-component-groups (delete (nnvirtual-current-group) nnvirtual-component-groups)) - (dolist (group nnvirtual-component-groups) - (gnus-group-expire-articles-1 group))) + (let (unexpired) + (dolist (group nnvirtual-component-groups) + (setq unexpired (nconc unexpired + (mapcar + #'(lambda (article) + (nnvirtual-reverse-map-article + group article)) + (gnus-uncompress-range + (gnus-group-expire-articles-1 group)))))) + (sort unexpired '<))) ;;; Internal functions. diff --git a/lisp/nnweb.el b/lisp/nnweb.el index da85743..dcdf4d4 100644 --- a/lisp/nnweb.el +++ b/lisp/nnweb.el @@ -42,11 +42,13 @@ (require 'w3) (require 'url) (require 'w3-forms))) + ;; Report failure to find w3 at load time if appropriate. -(eval '(progn - (require 'w3) - (require 'url) - (require 'w3-forms))) +(unless noninteractive + (eval '(progn + (require 'w3) + (require 'url) + (require 'w3-forms)))) (nnoo-declare nnweb) @@ -350,9 +352,13 @@ and `altavista'.") (setq url-current-callback-data data url-be-asynchronous t url-current-callback-func callback) - (url-retrieve url)) + (url-retrieve url nil)) (setq-default url-be-asynchronous old-asynch))) +(if (fboundp 'url-retrieve-synchronously) + (defun nnweb-url-retrieve-asynch (url callback &rest data) + (url-retrieve url callback data))) + ;;; ;;; DejaNews functions. ;;; @@ -723,20 +729,21 @@ and `altavista'.") "Decode all HTML entities." (goto-char (point-min)) (while (re-search-forward "&\\(#[0-9]+\\|[a-z]+\\);" nil t) - (replace-match (char-to-string - (if (eq (aref (match-string 1) 0) ?\#) + (let ((elem (if (eq (aref (match-string 1) 0) ?\#) (let ((c (string-to-number (substring (match-string 1) 1)))) (if (mm-char-or-char-int-p c) c 32)) (or (cdr (assq (intern (match-string 1)) w3-html-entities)) - ?#))) - t t))) + ?#)))) + (unless (stringp elem) + (setq elem (char-to-string elem))) + (replace-match elem t t)))) -(defun nnweb-decode-entities-string (str) +(defun nnweb-decode-entities-string (string) (with-temp-buffer - (insert str) + (insert string) (nnweb-decode-entities) (buffer-substring (point-min) (point-max)))) @@ -761,7 +768,7 @@ If FOLLOW-REFRESH is non-nil, redirect refresh url in META." (url-insert-file-contents url) (goto-char (point-min)) (when (re-search-forward - "HTTP-EQUIV=\"Refresh\"[^>]*URL=\\([^\"]+\\)\"" nil t) + "]*URL=\\([^\"]+\\)\"" nil t) (let ((url (match-string 1))) (delete-region (point-min) (point-max)) (nnweb-insert url t)))) @@ -817,6 +824,11 @@ If FOLLOW-REFRESH is non-nil, redirect refresh url in META." (listp (cdr element))) (nnweb-text-1 element))))) +(defun nnweb-replace-in-string (string match newtext) + (while (string-match match string) + (setq string (replace-match newtext t t string))) + string) + (provide 'nnweb) ;;; nnweb.el ends here diff --git a/lisp/nnwfm.el b/lisp/nnwfm.el new file mode 100644 index 0000000..130c689 --- /dev/null +++ b/lisp/nnwfm.el @@ -0,0 +1,432 @@ +;;; nnwfm.el --- interfacing with a web forum +;; Copyright (C) 2000 Free Software Foundation, Inc. + +;; Author: Lars Magne Ingebrigtsen +;; Keywords: news + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; Note: You need to have `url' and `w3' installed for this +;; backend to work. + +;;; Code: + +(eval-when-compile (require 'cl)) + +(require 'nnoo) +(require 'message) +(require 'gnus-util) +(require 'gnus) +(require 'nnmail) +(require 'mm-util) +(eval-when-compile + (ignore-errors + (require 'nnweb))) +;; Report failure to find w3 at load time if appropriate. +(eval '(require 'nnweb)) + +(nnoo-declare nnwfm) + +(defvoo nnwfm-directory (nnheader-concat gnus-directory "wfm/") + "Where nnwfm will save its files.") + +(defvoo nnwfm-address "" + "The address of the Ultimate bulletin board.") + +;;; Internal variables + +(defvar nnwfm-groups-alist nil) +(defvoo nnwfm-groups nil) +(defvoo nnwfm-headers nil) +(defvoo nnwfm-articles nil) +(defvar nnwfm-table-regexp + "postings.*editpost\\|forumdisplay\\|Forum[0-9]+/HTML\\|getbio") + +;;; Interface functions + +(nnoo-define-basics nnwfm) + +(deffoo nnwfm-retrieve-headers (articles &optional group server fetch-old) + (nnwfm-possibly-change-server group server) + (unless gnus-nov-is-evil + (let* ((last (car (last articles))) + (did nil) + (start 1) + (entry (assoc group nnwfm-groups)) + (sid (nth 2 entry)) + (topics (nth 4 entry)) + (mapping (nth 5 entry)) + (old-total (or (nth 6 entry) 1)) + (nnwfm-table-regexp "Thread.asp") + headers article subject score from date lines parent point + contents tinfo fetchers map elem a href garticles topic old-max + inc datel table string current-page total-contents pages + farticles forum-contents parse furl-fetched mmap farticle + thread-id tables hstuff bstuff time) + (setq map mapping) + (while (and (setq article (car articles)) + map) + (while (and map + (or (> article (caar map)) + (< (cadar map) (caar map)))) + (pop map)) + (when (setq mmap (car map)) + (setq farticle -1) + (while (and article + (<= article (nth 1 mmap))) + ;; Do we already have a fetcher for this topic? + (if (setq elem (assq (nth 2 mmap) fetchers)) + ;; Yes, so we just add the spec to the end. + (nconc elem (list (cons article + (+ (nth 3 mmap) (incf farticle))))) + ;; No, so we add a new one. + (push (list (nth 2 mmap) + (cons article + (+ (nth 3 mmap) (incf farticle)))) + fetchers)) + (pop articles) + (setq article (car articles))))) + ;; Now we have the mapping from/to Gnus/nnwfm article numbers, + ;; so we start fetching the topics that we need to satisfy the + ;; request. + (if (not fetchers) + (save-excursion + (set-buffer nntp-server-buffer) + (erase-buffer)) + (setq nnwfm-articles nil) + (mm-with-unibyte-buffer + (dolist (elem fetchers) + (erase-buffer) + (setq subject (nth 2 (assq (car elem) topics)) + thread-id (nth 0 (assq (car elem) topics))) + (nnweb-insert + (concat nnwfm-address + (format "Item.asp?GroupID=%d&ThreadID=%d" sid + thread-id))) + (goto-char (point-min)) + (setq tables (caddar + (caddar + (cdr (caddar + (caddar + (ignore-errors + (w3-parse-buffer (current-buffer))))))))) + (setq tables (cdr (caddar (memq (assq 'div tables) tables)))) + (setq contents nil) + (dolist (table tables) + (when (eq (car table) 'table) + (setq table (caddar (caddar (caddr table))) + hstuff (delete ":link" (nnweb-text (car table))) + bstuff (car (caddar (cdr table))) + from (car hstuff)) + (when (nth 2 hstuff) + (setq time (nnwfm-date-to-time (nth 2 hstuff))) + (push (list from time bstuff) contents)))) + (setq contents (nreverse contents)) + (dolist (art (cdr elem)) + (push (list (car art) + (nth (1- (cdr art)) contents) + subject) + nnwfm-articles)))) + (setq nnwfm-articles + (sort nnwfm-articles 'car-less-than-car)) + ;; Now we have all the articles, conveniently in an alist + ;; where the key is the Gnus article number. + (dolist (articlef nnwfm-articles) + (setq article (nth 0 articlef) + contents (nth 1 articlef) + subject (nth 2 articlef)) + (setq from (nth 0 contents) + date (message-make-date (nth 1 contents))) + (push + (cons + article + (make-full-mail-header + article subject + from (or date "") + (concat "<" (number-to-string sid) "%" + (number-to-string article) + "@wfm>") + "" 0 + (/ (length (mapconcat 'identity (nnweb-text (nth 2 contents)) "")) + 70) + nil nil)) + headers)) + (setq nnwfm-headers (sort headers 'car-less-than-car)) + (save-excursion + (set-buffer nntp-server-buffer) + (mm-with-unibyte-current-buffer + (erase-buffer) + (dolist (header nnwfm-headers) + (nnheader-insert-nov (cdr header)))))) + 'nov))) + +(deffoo nnwfm-request-group (group &optional server dont-check) + (nnwfm-possibly-change-server nil server) + (when (not nnwfm-groups) + (nnwfm-request-list)) + (unless dont-check + (nnwfm-create-mapping group)) + (let ((elem (assoc group nnwfm-groups))) + (cond + ((not elem) + (nnheader-report 'nnwfm "Group does not exist")) + (t + (nnheader-report 'nnwfm "Opened group %s" group) + (nnheader-insert + "211 %d %d %d %s\n" (cadr elem) 1 (cadr elem) + (prin1-to-string group)))))) + +(deffoo nnwfm-request-close () + (setq nnwfm-groups-alist nil + nnwfm-groups nil)) + +(deffoo nnwfm-request-article (article &optional group server buffer) + (nnwfm-possibly-change-server group server) + (let ((contents (cdr (assq article nnwfm-articles)))) + (when (setq contents (nth 2 (car contents))) + (save-excursion + (set-buffer (or buffer nntp-server-buffer)) + (erase-buffer) + (nnweb-insert-html contents) + (goto-char (point-min)) + (insert "Content-Type: text/html\nMIME-Version: 1.0\n") + (let ((header (cdr (assq article nnwfm-headers)))) + (mm-with-unibyte-current-buffer + (nnheader-insert-header header))) + (nnheader-report 'nnwfm "Fetched article %s" article) + (cons group article))))) + +(deffoo nnwfm-request-list (&optional server) + (nnwfm-possibly-change-server nil server) + (mm-with-unibyte-buffer + (nnweb-insert + (if (string-match "/$" nnwfm-address) + (concat nnwfm-address "Group.asp") + nnwfm-address)) + (let* ((nnwfm-table-regexp "Thread.asp") + (contents (w3-parse-buffer (current-buffer))) + sid elem description articles a href group forum + a1 a2) + (dolist (row (cdr (nth 2 (car (nth 2 (nnwfm-find-forum-table + contents)))))) + (setq row (nth 2 row)) + (when (setq a (nnweb-parse-find 'a row)) + (setq group (car (last (nnweb-text a))) + href (cdr (assq 'href (nth 1 a)))) + (setq description (car (last (nnweb-text (nth 1 row))))) + (setq articles + (string-to-number + (nnweb-replace-in-string + (car (last (nnweb-text (nth 3 row)))) "," ""))) + (when (and href + (string-match "GroupId=\\([0-9]+\\)" href)) + (setq forum (string-to-number (match-string 1 href))) + (if (setq elem (assoc group nnwfm-groups)) + (setcar (cdr elem) articles) + (push (list group articles forum description nil nil nil nil) + nnwfm-groups)))))) + (nnwfm-write-groups) + (nnwfm-generate-active) + t)) + +(deffoo nnwfm-request-newgroups (date &optional server) + (nnwfm-possibly-change-server nil server) + (nnwfm-generate-active) + t) + +(nnoo-define-skeleton nnwfm) + +;;; Internal functions + +(defun nnwfm-new-threads-p (group time) + "See whether we want to fetch the threads for GROUP written before TIME." + (let ((old-time (nth 7 (assoc group nnwfm-groups)))) + (or (null old-time) + (time-less-p old-time time)))) + +(defun nnwfm-create-mapping (group) + (let* ((entry (assoc group nnwfm-groups)) + (sid (nth 2 entry)) + (topics (nth 4 entry)) + (mapping (nth 5 entry)) + (old-total (or (nth 6 entry) 1)) + (current-time (current-time)) + (nnwfm-table-regexp "Thread.asp") + (furls (list (concat nnwfm-address + (format "Thread.asp?GroupId=%d" sid)))) + fetched-urls + contents forum-contents a subject href + garticles topic tinfo old-max inc parse elem date + url time) + (mm-with-unibyte-buffer + (while furls + (erase-buffer) + (push (car furls) fetched-urls) + (nnweb-insert (pop furls)) + (goto-char (point-min)) + (while (re-search-forward " wr(" nil t) + (forward-char -1) + (setq elem (message-tokenize-header + (nnweb-replace-in-string + (buffer-substring + (1+ (point)) + (progn + (forward-sexp 1) + (1- (point)))) + "\\\\[\"\\\\]" ""))) + (push (list + (string-to-number (nth 1 elem)) + (nnweb-replace-in-string (nth 2 elem) "\"" "") + (string-to-number (nth 5 elem))) + forum-contents)) + (when (re-search-forward "href=\"\\(Thread.*DateLast=\\([^\"]+\\)\\)" + nil t) + (setq url (match-string 1) + time (nnwfm-date-to-time (url-unhex-string (match-string 2)))) + (when (and (nnwfm-new-threads-p group time) + (not (member + (setq url (concat + nnwfm-address + (nnweb-decode-entities-string url))) + fetched-urls))) + (push url furls)))) + ;; The main idea here is to map Gnus article numbers to + ;; nnwfm article numbers. Say there are three topics in + ;; this forum, the first with 4 articles, the seconds with 2, + ;; and the third with 1. Then this will translate into 7 Gnus + ;; article numbers, where 1-4 comes from the first topic, 5-6 + ;; from the second and 7 from the third. Now, then next time + ;; the group is entered, there's 2 new articles in topic one + ;; and 1 in topic three. Then Gnus article number 8-9 be 5-6 + ;; in topic one and 10 will be the 2 in topic three. + (dolist (elem (nreverse forum-contents)) + (setq subject (nth 1 elem) + topic (nth 0 elem) + garticles (nth 2 elem)) + (if (setq tinfo (assq topic topics)) + (progn + (setq old-max (cadr tinfo)) + (setcar (cdr tinfo) garticles)) + (setq old-max 0) + (push (list topic garticles subject) topics) + (setcar (nthcdr 4 entry) topics)) + (when (not (= old-max garticles)) + (setq inc (- garticles old-max)) + (setq mapping (nconc mapping + (list + (list + old-total (1- (incf old-total inc)) + topic (1+ old-max))))) + (incf old-max inc) + (setcar (nthcdr 5 entry) mapping) + (setcar (nthcdr 6 entry) old-total)))) + (setcar (nthcdr 7 entry) current-time) + (setcar (nthcdr 1 entry) (1- old-total)) + (nnwfm-write-groups) + mapping)) + +(defun nnwfm-possibly-change-server (&optional group server) + (nnwfm-init server) + (when (and server + (not (nnwfm-server-opened server))) + (nnwfm-open-server server)) + (unless nnwfm-groups-alist + (nnwfm-read-groups) + (setq nnwfm-groups (cdr (assoc nnwfm-address + nnwfm-groups-alist))))) + +(deffoo nnwfm-open-server (server &optional defs connectionless) + (nnheader-init-server-buffer) + (if (nnwfm-server-opened server) + t + (unless (assq 'nnwfm-address defs) + (setq defs (append defs (list (list 'nnwfm-address server))))) + (nnoo-change-server 'nnwfm server defs))) + +(defun nnwfm-read-groups () + (setq nnwfm-groups-alist nil) + (let ((file (expand-file-name "groups" nnwfm-directory))) + (when (file-exists-p file) + (mm-with-unibyte-buffer + (insert-file-contents file) + (goto-char (point-min)) + (setq nnwfm-groups-alist (read (current-buffer))))))) + +(defun nnwfm-write-groups () + (setq nnwfm-groups-alist + (delq (assoc nnwfm-address nnwfm-groups-alist) + nnwfm-groups-alist)) + (push (cons nnwfm-address nnwfm-groups) + nnwfm-groups-alist) + (with-temp-file (expand-file-name "groups" nnwfm-directory) + (prin1 nnwfm-groups-alist (current-buffer)))) + +(defun nnwfm-init (server) + "Initialize buffers and such." + (unless (file-exists-p nnwfm-directory) + (gnus-make-directory nnwfm-directory))) + +(defun nnwfm-generate-active () + (save-excursion + (set-buffer nntp-server-buffer) + (erase-buffer) + (dolist (elem nnwfm-groups) + (insert (prin1-to-string (car elem)) + " " (number-to-string (cadr elem)) " 1 y\n")))) + +(defun nnwfm-find-forum-table (contents) + (catch 'found + (nnwfm-find-forum-table-1 contents))) + +(defun nnwfm-find-forum-table-1 (contents) + (dolist (element contents) + (unless (stringp element) + (when (and (eq (car element) 'table) + (nnwfm-forum-table-p element)) + (throw 'found element)) + (when (nth 2 element) + (nnwfm-find-forum-table-1 (nth 2 element)))))) + +(defun nnwfm-forum-table-p (parse) + (when (not (apply 'gnus-or + (mapcar + (lambda (p) + (nnweb-parse-find 'table p)) + (nth 2 parse)))) + (let ((href (cdr (assq 'href (nth 1 (nnweb-parse-find 'a parse 20))))) + case-fold-search) + (when (and href (string-match nnwfm-table-regexp href)) + t)))) + +(defun nnwfm-date-to-time (date) + (let ((time (mapcar #'string-to-number (split-string date "[\\.\\+ :]")))) + (encode-time 0 (nth 4 time) (nth 3 time) + (nth 0 time) (nth 1 time) + (if (< (nth 2 time) 70) + (+ 2000 (nth 2 time)) + (+ 1900 (nth 2 time)))))) + +(provide 'nnwfm) + +;; Local Variables: +;; coding: iso-8859-1 +;; End: + +;;; nnwfm.el ends here diff --git a/lisp/parse-time.el b/lisp/parse-time.el index 06e35d3..d003251 100644 --- a/lisp/parse-time.el +++ b/lisp/parse-time.el @@ -1,8 +1,8 @@ ;;; parse-time.el --- Parsing time strings -;; Copyright (C) 1996,2000 by Free Software Foundation, Inc. +;; Copyright (C) 1996, 2000 by Free Software Foundation, Inc. -;; Author: Erik Naggum +;; Author: Erik Naggum ;; Keywords: util ;; This file is part of GNU Emacs. diff --git a/lisp/pop3.el b/lisp/pop3.el index ae48589..00cdcea 100644 --- a/lisp/pop3.el +++ b/lisp/pop3.el @@ -7,7 +7,6 @@ ;; Daiki Ueno ;; Maintainer: FSF ;; Keywords: mail -;; Version: 1.3s ;; This file is part of GNU Emacs. @@ -42,8 +41,6 @@ (require 'mail-utils) -(defconst pop3-version "1.3s") - (defvar pop3-maildrop (or (user-login-name) (getenv "LOGNAME") (getenv "USER") nil) "*POP3 maildrop.") (defvar pop3-mailhost (or (getenv "MAILHOST") nil) @@ -258,8 +255,8 @@ Args are NAME BUFFER HOST SERVICE." ) (defun pop3-read-response (process &optional return) - "Read the response from the server PROCESS. -Return the response string if optional second argument RETURN is non-nil." + "Read the response from the server. +Return the response string if optional second argument is non-nil." (let ((case-fold-search nil) match-end) (save-excursion diff --git a/lisp/ptexinfmt.el b/lisp/ptexinfmt.el new file mode 100644 index 0000000..036c97b --- /dev/null +++ b/lisp/ptexinfmt.el @@ -0,0 +1,759 @@ +;;; ptexinfmt.el -- portable Texinfo formatter. + +;; Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, +;; 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +;; Copyright (C) 1999 Yoshiki Hayashi +;; Copyright (C) 2000 TAKAHASHI Kaoru + +;; Author: TAKAHASHI Kaoru +;; Yoshiki Hayashi +;; Maintainer: TAKAHASHI Kaoru +;; Created: 7 Jul 2000 +;; Keywords: maint, tex, docs, emulation, compatibility + +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2, or (at +;; your option) any later version. + +;; This program is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; Original code: Yoshiki Hayashi +;; makeinfo.el (gnujdoc project) + +;; Support texinfmt.el 2.32 or later. + +;;; Code: +(require 'texinfmt) +(require 'poe) +(require 'broken) + +(provide 'ptexinfmt) + +;;; Broken +(defvar ptexinfmt-disable-broken-notice-flag t + "If non-nil disable notice, when call `broken-facility'. +This is NO-NOTICE argument in `broken-facility'.") + +;; sort -fd +(broken-facility texinfo-format-printindex + "Can't sort on Mule for Windows." + (if (and (memq system-type '(windows-nt ms-dos)) +;;; I don't know version threshold. +;;; (string< texinfmt-version "2.37 of 24 May 1997") + (boundp 'MULE) (not (featurep 'meadow))) ; Mule for Windows + nil + t) + ptexinfmt-disable-broken-notice-flag) + +;; @var +(broken-facility texinfo-format-var + "Don't perse @var argument." + (condition-case nil + (with-temp-buffer + (let (texinfo-enclosure-list texinfo-alias-list) + (texinfo-mode) + (insert "@var{@asis{foo}}\n") + (texinfo-format-expand-region (point-min) (point-max)) + t)) + (error nil)) + ptexinfmt-disable-broken-notice-flag) + +;; @xref +(broken-facility texinfo-format-xref + "Can't format @xref, 1st argument is empty." + (condition-case nil + (with-temp-buffer + (let (texinfo-enclosure-list texinfo-alias-list) + (texinfo-mode) + (insert "@xref{, xref, , file}\n") + (texinfo-format-expand-region (point-min) (point-max)) + t)) + (error nil)) + ptexinfmt-disable-broken-notice-flag) + +;; @uref +(broken-facility texinfo-format-uref + "Parse twice @uref argument." + (condition-case nil + (with-temp-buffer + (let (texinfo-enclosure-list texinfo-alias-list) + (texinfo-mode) + (insert "@uref{mailto:foo@@bar.com}\n") + (texinfo-format-expand-region (point-min) (point-max)) + t)) + (error nil)) + ptexinfmt-disable-broken-notice-flag) + +;; @multitable +(broken-facility texinfo-multitable-widths + "`texinfo-multitable-widths' unsupport wide-char." + (if (fboundp 'texinfo-multitable-widths) + (with-temp-buffer + (let ((str "$BI}9-J8;z(B")) + (texinfo-mode) + (insert (format " {%s}\n" str)) + (goto-char (point-min)) + (if (= (car (texinfo-multitable-widths)) (length str)) + nil + t))) + ;; function definition is void + t) + ptexinfmt-disable-broken-notice-flag) + +(broken-facility texinfo-multitable-item + "`texinfo-multitable-item' unsupport wide-char." + (if-broken texinfo-multitable-widths nil t) + ptexinfmt-disable-broken-notice-flag) + + +;;; Obsolete +;; Removed Texinfo 3.8 +(put 'overfullrule 'texinfo-format 'texinfo-discard-line) +(put 'smallbreak 'texinfo-format 'texinfo-discard-line) +(put 'medbreak 'texinfo-format 'texinfo-discard-line) +(put 'bigbreak 'texinfo-format 'texinfo-discard-line) +;; Removed Texinfo 3.9 +(put 'setchapterstyle 'texinfo-format 'texinfo-discard-line-with-args) + +;;; Hardcopy and HTML (discard) +;; I18N +(put 'documentlanguage 'texinfo-format 'texinfo-discard-line-with-args) +(put 'documentencoding 'texinfo-format 'texinfo-discard-line-with-args) + +;; size +(put 'smallbook 'texinfo-format 'texinfo-discard-line) +(put 'afourpaper 'texinfo-format 'texinfo-discard-line) +(put 'afourlatex 'texinfo-format 'texinfo-discard-line) +(put 'afourwide 'texinfo-format 'texinfo-discard-line) +(put 'pagesizes 'texinfo-format 'texinfo-discard-line-with-args) + +;; style +(put 'setchapternewpage 'texinfo-format 'texinfo-discard-line-with-args) +(put 'kbdinputstyle 'texinfo-format 'texinfo-discard-line-with-args) + +;; flags +(put 'setcontentsaftertitlepage 'texinfo-format 'texinfo-discard-line) +(put 'setshortcontentsaftertitlepage 'texinfo-format 'texinfo-discard-line) +(put 'novalidate 'texinfo-format 'texinfo-discard-line-with-args) + +;; head & foot +(put 'headings 'texinfo-format 'texinfo-discard-line-with-args) +(put 'evenfooting 'texinfo-format 'texinfo-discard-line-with-args) +(put 'evenheading 'texinfo-format 'texinfo-discard-line-with-args) +(put 'oddfooting 'texinfo-format 'texinfo-discard-line-with-args) +(put 'oddheading 'texinfo-format 'texinfo-discard-line-with-args) +(put 'everyfooting 'texinfo-format 'texinfo-discard-line-with-args) +(put 'everyheading 'texinfo-format 'texinfo-discard-line-with-args) + +;; misc +(put 'page 'texinfo-format 'texinfo-discard-line) +(put 'hyphenation 'texinfo-format 'texinfo-discard-command-and-arg) + + + +;;; Directory File +;; @direcategory +(put 'dircategory 'texinfo-format 'texinfo-format-dircategory) +(defun-maybe texinfo-format-dircategory () + (let ((str (texinfo-parse-arg-discard))) + (delete-region (point) + (progn + (skip-chars-forward " ") + (point))) + (insert "INFO-DIR-SECTION " str "\n"))) + +;; @direntry +(put 'direntry 'texinfo-format 'texinfo-format-direntry) +(defun-maybe texinfo-format-direntry () + (texinfo-push-stack 'direntry nil) + (texinfo-discard-line) + (insert "START-INFO-DIR-ENTRY\n")) + +(put 'direntry 'texinfo-end 'texinfo-end-direntry) +(defun-maybe texinfo-end-direntry () + (texinfo-discard-command) + (insert "END-INFO-DIR-ENTRY\n\n") + (texinfo-pop-stack 'direntry)) + + +;;; Block Enclosing and Conditional +;; @detailmenu ... @end detailmenu +(put 'detailmenu 'texinfo-format 'texinfo-discard-line) +(put 'detailmenu 'texinfo-end 'texinfo-discard-command) + +;; @smalldisplay ... @end smalldisplay +(put 'smalldisplay 'texinfo-format 'texinfo-format-example) +(put 'smalldisplay 'texinfo-end 'texinfo-end-example) + +;; @smallformat ... @end smallformat +(put 'smallformat 'texinfo-format 'texinfo-format-flushleft) +(put 'smallformat 'texinfo-end 'texinfo-end-flushleft) + +;; @ifnottex ... @end ifnottex +(put 'ifnottex 'texinfo-format 'texinfo-discard-line) +(put 'ifnottex 'texinfo-end 'texinfo-discard-command) + +;; @ifnothtml ... @end ifnothtml +(put 'ifnothtml 'texinfo-format 'texinfo-discard-line) +(put 'ifnothtml 'texinfo-end 'texinfo-discard-command) + +;; @ifnotinfo ... @end ifnotinfo +(put 'ifnotinfo 'texinfo-format 'texinfo-format-ifnotinfo) +(put 'endifnotinfo 'texinfo-format 'texinfo-discard-line) +(defun-maybe texinfo-format-ifnotinfo () + (delete-region texinfo-command-start + (progn (re-search-forward "@end ifnotinfo[ \t]*\n") + (point)))) + +;; @html ... @end html +(put 'html 'texinfo-format 'texinfo-format-html) +(put 'endhtml 'texinfo-format 'texinfo-discard-line) +(defun-maybe texinfo-format-html () + (delete-region texinfo-command-start + (progn (re-search-forward "@end html[ \t]*\n") + (point)))) + + + +;;; Marking +;; @url, @env, @command +(put 'url 'texinfo-format 'texinfo-format-code) +(put 'env 'texinfo-format 'texinfo-format-code) +(put 'command 'texinfo-format 'texinfo-format-code) + +;; @acronym +(put 'acronym 'texinfo-format 'texinfo-format-var) + +(when-broken texinfo-format-var + (fmakunbound 'texinfo-format-var)) +(defun-maybe texinfo-format-var () + (let ((arg (texinfo-parse-expanded-arg))) + (texinfo-discard-command) + (insert (upcase arg)))) + +;; @key +(put 'key 'texinfo-format 'texinfo-format-key) +(defun-maybe texinfo-format-key () + (insert (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @email{EMAIL-ADDRESS[, DISPLAYED-TEXT]} +(put 'email 'texinfo-format 'texinfo-format-email) +(defun-maybe texinfo-format-email () + "Format EMAIL-ADDRESS and optional DISPLAYED-TXT. +Insert < ... > around EMAIL-ADDRESS." + (let ((args (texinfo-format-parse-args))) + (texinfo-discard-command) + ;; if displayed-text + (if (nth 1 args) + (insert (nth 1 args) " <" (nth 0 args) ">") + (insert "<" (nth 0 args) ">")))) + +;; @option +(put 'option 'texinfo-format 'texinfo-format-option) +(defun texinfo-format-option () + "Insert ` ... ' around arg unless inside a table; in that case, no quotes." + ;; `looking-at-backward' not available in v. 18.57, 20.2 + ;; searched-for character is a control-H + (if (not (search-backward "\010" + (save-excursion (beginning-of-line) (point)) + t)) + (insert "`" (texinfo-parse-arg-discard) "'") + (insert (texinfo-parse-arg-discard))) + (goto-char texinfo-command-start)) + + + +;;; Accents and Special characters +;; @pounds{} ==> # Pounds Sterling +(put 'pounds 'texinfo-format 'texinfo-format-pounds) +(defun-maybe texinfo-format-pounds () + (texinfo-parse-arg-discard) + (insert "#")) + +;; @OE{} ==> OE French-OE-ligature +(put 'OE 'texinfo-format 'texinfo-format-French-OE-ligature) +(defun-maybe texinfo-format-French-OE-ligature () + (insert "OE" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @oe{} ==> oe +(put 'oe 'texinfo-format 'texinfo-format-French-oe-ligature) +(defun-maybe texinfo-format-French-oe-ligature () ; lower case + (insert "oe" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @AA{} ==> AA Scandinavian-A-with-circle +(put 'AA 'texinfo-format 'texinfo-format-Scandinavian-A-with-circle) +(defun-maybe texinfo-format-Scandinavian-A-with-circle () + (insert "AA" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @aa{} ==> aa +(put 'aa 'texinfo-format 'texinfo-format-Scandinavian-a-with-circle) +(defun-maybe texinfo-format-Scandinavian-a-with-circle () ; lower case + (insert "aa" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @AE{} ==> AE Latin-Scandinavian-AE +(put 'AE 'texinfo-format 'texinfo-format-Latin-Scandinavian-AE) +(defun-maybe texinfo-format-Latin-Scandinavian-AE () + (insert "AE" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @ae{} ==> ae +(put 'ae 'texinfo-format 'texinfo-format-Latin-Scandinavian-ae) +(defun-maybe texinfo-format-Latin-Scandinavian-ae () ; lower case + (insert "ae" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @ss{} ==> ss German-sharp-S +(put 'ss 'texinfo-format 'texinfo-format-German-sharp-S) +(defun-maybe texinfo-format-German-sharp-S () + (insert "ss" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @questiondown{} ==> ? upside-down-question-mark +(put 'questiondown 'texinfo-format 'texinfo-format-upside-down-question-mark) +(defun-maybe texinfo-format-upside-down-question-mark () + (insert "?" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @exclamdown{} ==> ! upside-down-exclamation-mark +(put 'exclamdown 'texinfo-format 'texinfo-format-upside-down-exclamation-mark) +(defun-maybe texinfo-format-upside-down-exclamation-mark () + (insert "!" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @L{} ==> L/ Polish suppressed-L (Lslash) +(put 'L 'texinfo-format 'texinfo-format-Polish-suppressed-L) +(defun-maybe texinfo-format-Polish-suppressed-L () + (insert (texinfo-parse-arg-discard) "/L") + (goto-char texinfo-command-start)) + +;; @l{} ==> l/ Polish suppressed-L (Lslash) (lower case) +(put 'l 'texinfo-format 'texinfo-format-Polish-suppressed-l-lower-case) +(defun-maybe texinfo-format-Polish-suppressed-l-lower-case () + (insert (texinfo-parse-arg-discard) "/l") + (goto-char texinfo-command-start)) + +;; @O{} ==> O/ Scandinavian O-with-slash +(put 'O 'texinfo-format 'texinfo-format-Scandinavian-O-with-slash) +(defun-maybe texinfo-format-Scandinavian-O-with-slash () + (insert (texinfo-parse-arg-discard) "O/") + (goto-char texinfo-command-start)) + +;; @o{} ==> o/ Scandinavian O-with-slash (lower case) +(put 'o 'texinfo-format 'texinfo-format-Scandinavian-o-with-slash-lower-case) +(defun-maybe texinfo-format-Scandinavian-o-with-slash-lower-case () + (insert (texinfo-parse-arg-discard) "o/") + (goto-char texinfo-command-start)) + +;; @,{c} ==> c, cedilla accent +(put ', 'texinfo-format 'texinfo-format-cedilla-accent) +(defun-maybe texinfo-format-cedilla-accent () + (insert (texinfo-parse-arg-discard) ",") + (goto-char texinfo-command-start)) + + +;; @dotaccent{o} ==> .o overdot-accent +(put 'dotaccent 'texinfo-format 'texinfo-format-overdot-accent) +(defun-maybe texinfo-format-overdot-accent () + (insert "." (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @ubaraccent{o} ==> _o underbar-accent +(put 'ubaraccent 'texinfo-format 'texinfo-format-underbar-accent) +(defun-maybe texinfo-format-underbar-accent () + (insert "_" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @udotaccent{o} ==> o-. underdot-accent +(put 'udotaccent 'texinfo-format 'texinfo-format-underdot-accent) +(defun-maybe texinfo-format-underdot-accent () + (insert (texinfo-parse-arg-discard) "-.") + (goto-char texinfo-command-start)) + +;; @H{o} ==> ""o long Hungarian umlaut +(put 'H 'texinfo-format 'texinfo-format-long-Hungarian-umlaut) +(defun-maybe texinfo-format-long-Hungarian-umlaut () + (insert "\"\"" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @ringaccent{o} ==> *o ring accent +(put 'ringaccent 'texinfo-format 'texinfo-format-ring-accent) +(defun-maybe texinfo-format-ring-accent () + (insert "*" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @tieaccent{oo} ==> [oo tie after accent +(put 'tieaccent 'texinfo-format 'texinfo-format-tie-after-accent) +(defun-maybe texinfo-format-tie-after-accent () + (insert "[" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @u{o} ==> (o breve accent +(put 'u 'texinfo-format 'texinfo-format-breve-accent) +(defun-maybe texinfo-format-breve-accent () + (insert "(" (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + +;; @v{o} ==> i dotless i and dotless j +(put 'dotless 'texinfo-format 'texinfo-format-dotless) +(defun-maybe texinfo-format-dotless () + (insert (texinfo-parse-arg-discard)) + (goto-char texinfo-command-start)) + + + +;;; Cross References +;; @ref, @xref +(put 'ref 'texinfo-format 'texinfo-format-xref) + +(when-broken texinfo-format-xref + (fmakunbound 'texinfo-format-xref)) +(defun-maybe texinfo-format-xref () + (let ((args (texinfo-format-parse-args))) + (texinfo-discard-command) + (insert "*Note ") + (let ((fname (or (nth 1 args) (nth 2 args)))) + (if (null (or fname (nth 3 args))) + (insert (nth 0 args) "::") + (insert (or fname (nth 0 args)) ": ") + (if (nth 3 args) + (insert "(" (nth 3 args) ")")) + (unless (null (nth 0 args)) + (insert (nth 0 args))))))) + +;; @uref +(put 'uref 'texinfo-format 'texinfo-format-uref) +(when-broken texinfo-format-uref + (fmakunbound 'texinfo-format-uref)) +(defun-maybe texinfo-format-uref () + "Format URL and optional URL-TITLE. +Insert ` ... ' around URL if no URL-TITLE argument; +otherwise, insert URL-TITLE followed by URL in parentheses." + (let ((args (texinfo-format-parse-args))) + (texinfo-discard-command) + ;; if url-title + (if (nth 1 args) + (insert (nth 1 args) " (" (nth 0 args) ")") + (insert "`" (nth 0 args) "'")))) + + + +;;; New command definition +;; @alias NEW=EXISTING +(put 'alias 'texinfo-format 'texinfo-alias) +(defun-maybe texinfo-alias () + (let ((start (1- (point))) + args) + (skip-chars-forward " ") + (save-excursion (end-of-line) (setq texinfo-command-end (point))) + (if (not (looking-at "\\([^=]+\\)=\\(.*\\)")) + (error "Invalid alias command") + (setq texinfo-alias-list + (cons + (cons + (buffer-substring (match-beginning 1) (match-end 1)) + (buffer-substring (match-beginning 2) (match-end 2))) + texinfo-alias-list)) + (texinfo-discard-command)))) + +;; @definfoenclose NEWCMD, BEFORE, AFTER + + + +;;; Special +;; @image{FILENAME, [WIDTH], [HEIGHT]} +(put 'image 'texinfo-format 'texinfo-format-image) +(defun-maybe texinfo-format-image () + (let ((args (texinfo-format-parse-args)) ; parse FILENAME? + filename) + (when (null (nth 0 args)) + (error "Invalid image command")) + (texinfo-discard-command) + ;; makeinfo uses FILENAME.txt + (setq filename (format "%s.txt" (nth 0 args))) + (message "Reading included file: %s" filename) + ;; verbatim for Info output + (goto-char (+ (point) (cadr (insert-file-contents filename)))) + (message "Reading included file: %s...done" filename))) + + +;; @exampleindent + + + +;;; @multitable ... @end multitable +(defvar-maybe texinfo-extra-inter-column-width 0 + "*Number of extra spaces between entries (columns) in @multitable.") + +(defvar-maybe texinfo-multitable-buffer-name "*multitable-temporary-buffer*") +(defvar-maybe texinfo-multitable-rectangle-name "texinfo-multitable-temp-") + +;; These commands are defined in texinfo.tex for printed output. +(put 'multitableparskip 'texinfo-format 'texinfo-discard-line-with-args) +(put 'multitableparindent 'texinfo-format 'texinfo-discard-line-with-args) +(put 'multitablecolmargin 'texinfo-format 'texinfo-discard-line-with-args) +(put 'multitablelinespace 'texinfo-format 'texinfo-discard-line-with-args) + +(put 'multitable 'texinfo-format 'texinfo-multitable) + +(defun-maybe texinfo-multitable () + "Produce multi-column tables." + +;; This function pushes information onto the `texinfo-stack'. +;; A stack element consists of: +;; - type-of-command, i.e., multitable +;; - the information about column widths, and +;; - the position of texinfo-command-start. +;; e.g., ('multitable (1 2 3 4) 123) +;; The command line is then deleted. + (texinfo-push-stack + 'multitable + ;; push width information on stack + (texinfo-multitable-widths)) + (texinfo-discard-line-with-args)) + +(put 'multitable 'texinfo-end 'texinfo-end-multitable) +(defun-maybe texinfo-end-multitable () + "Discard the @end multitable line and pop the stack of multitable." + (texinfo-discard-command) + (texinfo-pop-stack 'multitable)) + +(when-broken texinfo-multitable-widths + (fmakunbound 'texinfo-multitable-widths)) + +(defun-maybe texinfo-multitable-widths () + "Return list of widths of each column in a multi-column table." + (let (texinfo-multitable-width-list) + ;; Fractions format: + ;; @multitable @columnfractions .25 .3 .45 + ;; + ;; Template format: + ;; @multitable {Column 1 template} {Column 2} {Column 3 example} + ;; Place point before first argument + (skip-chars-forward " \t") + (cond + ;; Check for common misspelling + ((looking-at "@columnfraction ") + (error "In @multitable, @columnfractions misspelled")) + ;; Case 1: @columnfractions .25 .3 .45 + ((looking-at "@columnfractions") + (forward-word 1) + (while (not (eolp)) + (setq texinfo-multitable-width-list + (cons + (truncate + (1- + (* fill-column (read (get-buffer (current-buffer)))))) + texinfo-multitable-width-list)))) + ;; + ;; Case 2: {Column 1 template} {Column 2} {Column 3 example} + ((looking-at "{") + (let ((start-of-templates (point))) + (while (not (eolp)) + (skip-chars-forward " \t") + (let* ((start-of-template (1+ (point))) + (end-of-template + ;; forward-sexp works with braces in Texinfo mode + (progn (forward-sexp 1) (1- (point))))) + (setq texinfo-multitable-width-list + (cons (- (progn (goto-char end-of-template) (current-column)) + (progn (goto-char start-of-template) (current-column))) + texinfo-multitable-width-list)) + ;; Remove carriage return from within a template, if any. + ;; This helps those those who want to use more than + ;; one line's worth of words in @multitable line. + (narrow-to-region start-of-template end-of-template) + (goto-char (point-min)) + (while (search-forward " +" nil t) + (delete-char -1)) + (goto-char (point-max)) + (widen) + (forward-char 1))))) + ;; + ;; Case 3: Trouble + (t + (error + "You probably need to specify column widths for @multitable correctly"))) + ;; Check whether columns fit on page. + (let ((desired-columns + (+ + ;; between column spaces + (length texinfo-multitable-width-list) + ;; additional between column spaces, if any + texinfo-extra-inter-column-width + ;; sum of spaces for each entry + (apply '+ texinfo-multitable-width-list)))) + (if (> desired-columns fill-column) + (error + (format + "Multi-column table width, %d chars, is greater than page width, %d chars." + desired-columns fill-column)))) + texinfo-multitable-width-list)) + +;; @item A1 @tab A2 @tab A3 +(defun-maybe texinfo-multitable-extract-row () + "Return multitable row, as a string. +End of row is beginning of next @item or beginning of @end. +Cells within rows are separated by @tab." + (skip-chars-forward " \t") + (let* ((start (point)) + (end (progn + (re-search-forward "@item\\|@end") + (match-beginning 0))) + (row (progn (goto-char end) + (skip-chars-backward " ") + ;; remove whitespace at end of argument + (delete-region (point) end) + (buffer-substring start (point))))) + (delete-region texinfo-command-start end) + row)) + +(when-broken texinfo-multitable-item + (fmakunbound 'texinfo-multitable-item)) + +(put 'multitable 'texinfo-item 'texinfo-multitable-item) +(defun-maybe texinfo-multitable-item () + "Format a row within a multicolumn table. +Cells in row are separated by @tab. +Widths of cells are specified by the arguments in the @multitable line. +All cells are made to be the same height. +This command is executed when texinfmt sees @item inside @multitable." + (let ((original-buffer (current-buffer)) + (table-widths (reverse (car (cdr (car texinfo-stack))))) + (existing-fill-column fill-column) + start + end + (table-column 0) + (table-entry-height 0) + ;; unformatted row looks like: A1 @tab A2 @tab A3 + ;; extract-row command deletes the source line in the table. + (unformated-row (texinfo-multitable-extract-row))) + ;; Use a temporary buffer + (set-buffer (get-buffer-create texinfo-multitable-buffer-name)) + (delete-region (point-min) (point-max)) + (insert unformated-row) + (goto-char (point-min)) +;; 1. Check for correct number of @tab in line. + (let ((tab-number 1)) ; one @tab between two columns + (while (search-forward "@tab" nil t) + (setq tab-number (1+ tab-number))) + (if (/= tab-number (length table-widths)) + (error "Wrong number of @tab's in a @multitable row"))) + (goto-char (point-min)) +;; 2. Format each cell, and copy to a rectangle + ;; buffer looks like this: A1 @tab A2 @tab A3 + ;; Cell #1: format up to @tab + ;; Cell #2: format up to @tab + ;; Cell #3: format up to eob + (while (not (eobp)) + (setq start (point)) + (setq end (save-excursion + (if (search-forward "@tab" nil 'move) + ;; Delete the @tab command, including the @-sign + (delete-region + (point) + (progn (forward-word -1) (1- (point))))) + (point))) + ;; Set fill-column *wider* than needed to produce inter-column space + (setq fill-column (+ 1 + texinfo-extra-inter-column-width + (nth table-column table-widths))) + (narrow-to-region start end) + ;; Remove whitespace before and after entry. + (skip-chars-forward " ") + (delete-region (point) (save-excursion (beginning-of-line) (point))) + (goto-char (point-max)) + (skip-chars-backward " ") + (delete-region (point) (save-excursion (end-of-line) (point))) + ;; Temorarily set texinfo-stack to nil so texinfo-format-scan + ;; does not see an unterminated @multitable. + (let (texinfo-stack) ; nil + (texinfo-format-scan)) + (let (fill-prefix) ; no fill prefix + (fill-region (point-min) (point-max))) + (setq table-entry-height + (max table-entry-height (count-lines (point-min) (point-max)))) +;; 3. Move point to end of bottom line, and pad that line to fill column. + (goto-char (point-min)) + (forward-line (1- table-entry-height)) + (let* ((beg (point)) ; beginning of line + ;; add one more space for inter-column spacing + (needed-whitespace + (1+ + (- fill-column + (progn (end-of-line) (current-column)))))) ; end of existing line + (insert (make-string + (if (> needed-whitespace 0) needed-whitespace 1) + ? ))) + ;; now, put formatted cell into a rectangle + (set (intern (concat texinfo-multitable-rectangle-name + (int-to-string table-column))) + (extract-rectangle (point-min) (point))) + (delete-region (point-min) (point)) + (goto-char (point-max)) + (setq table-column (1+ table-column)) + (widen)) +;; 4. Add extra lines to rectangles so all are of same height + (let ((total-number-of-columns table-column) + (column-number 0) + here) + (while (> table-column 0) + (let ((this-rectangle (int-to-string table-column))) + (while (< (length this-rectangle) table-entry-height) + (setq this-rectangle (append this-rectangle '(""))))) + (setq table-column (1- table-column))) +;; 5. Insert formatted rectangles in original buffer + (switch-to-buffer original-buffer) + (open-line table-entry-height) + (while (< column-number total-number-of-columns) + (setq here (point)) + (insert-rectangle + (eval (intern + (concat texinfo-multitable-rectangle-name + (int-to-string column-number))))) + (goto-char here) + (end-of-line) + (setq column-number (1+ column-number)))) + (kill-buffer texinfo-multitable-buffer-name) + (setq fill-column existing-fill-column))) + + +(when-broken texinfo-format-printindex + (fmakunbound 'texinfo-format-printindex)) + +(defun-maybe texinfo-format-printindex () + (let ((indexelts (symbol-value + (cdr (assoc (texinfo-parse-arg-discard) + texinfo-indexvar-alist)))) + opoint) + (insert "\n* Menu:\n\n") + (setq opoint (point)) + (texinfo-print-index nil indexelts) + + (if (memq system-type '(vax-vms windows-nt ms-dos)) + (texinfo-sort-region opoint (point)) + (shell-command-on-region opoint (point) "sort -fd" 1)))) + +;;; ptexinfmt.el ends here diff --git a/lisp/qp.el b/lisp/qp.el index ea2a818..2f63abf 100644 --- a/lisp/qp.el +++ b/lisp/qp.el @@ -1,7 +1,10 @@ ;;; qp.el --- Quoted-Printable functions + ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen +;; Keywords: mail, extensions + ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify @@ -21,126 +24,141 @@ ;;; Commentary: +;; Functions for encoding and decoding quoted-printable text as +;; defined in RFC 2045. + ;;; Code: (require 'mm-util) +(eval-when-compile (defvar mm-use-ultra-safe-encoding)) -(defvar quoted-printable-encoding-characters - (mapcar 'identity "0123456789ABCDEFabcdef")) - -(defun quoted-printable-decode-region (from to &optional charset) - "Decode quoted-printable in the region between FROM and TO. -If CHARSET is non-nil, decode the region with charset." +(defun quoted-printable-decode-region (from to &optional coding-system) + "Decode quoted-printable in the region between FROM and TO, per RFC 2045. +If CODING-SYSTEM is non-nil, decode bytes into characters with that +coding-system." (interactive "r") + (unless (mm-coding-system-p coding-system) ; e.g. `ascii' from Gnus + (setq coding-system nil)) (save-excursion (save-restriction - (let (start) + ;; RFC 2045: ``An "=" followed by two hexadecimal digits, one + ;; or both of which are lowercase letters in "abcdef", is + ;; formally illegal. A robust implementation might choose to + ;; recognize them as the corresponding uppercase letters.'' + (let ((case-fold-search t)) (narrow-to-region from to) - (goto-char from) - (while (not (eobp)) - (cond - ((eq (char-after) ?=) - (delete-char 1) - (unless start - (setq start (point))) - (cond - ;; End of the line. - ((eq (char-after) ?\n) - (delete-char 1)) - ;; Encoded character. - ((and - (memq (char-after) quoted-printable-encoding-characters) - (memq (char-after (1+ (point))) - quoted-printable-encoding-characters)) - (insert - (string-to-number - (buffer-substring (point) (+ 2 (point))) - 16)) - (delete-char 2)) - ;; Quoted equal sign. - ((eq (char-after) ?=) - (forward-char 1)) - ;; End of buffer. - ((eobp)) - ;; Invalid. - (t - (message "Malformed MIME quoted-printable message")))) - ((and charset start (not (eq (mm-charset-after) 'ascii))) - (mm-decode-coding-region start (point) charset) - (setq start nil) - (forward-char 1)) - (t - (forward-char 1)))) - (if (and charset start) - (mm-decode-coding-region start (point) charset)))))) - -(defun quoted-printable-decode-string (string &optional charset) - "Decode the quoted-printable-encoded STRING and return the results. -If CHARSET is non-nil, decode the region with charset." + ;; Do this in case we're called from Gnus, say, in a buffer + ;; which already contains non-ASCII characters which would + ;; then get doubly-decoded below. + (if coding-system + (mm-encode-coding-region (point-min) (point-max) coding-system)) + (goto-char (point-min)) + (while (and (skip-chars-forward "^=") + (not (eobp))) + (cond ((eq (char-after (1+ (point))) ?\n) + (delete-char 2)) + ((looking-at "=[0-9A-F][0-9A-F]") + (let ((byte (string-to-int (buffer-substring (1+ (point)) + (+ 3 (point))) + 16))) + (insert byte) + (delete-char 3) + ;; Why backward-char??? + ;;(unless (eq byte 61) ;; 61 is not ?= in XEmacs + ;; (backward-char)) + )) + (t + (error "Malformed quoted-printable text") + (forward-char))))) + (if coding-system + (mm-decode-coding-region (point-min) (point-max) coding-system))))) + +(defun quoted-printable-decode-string (string &optional coding-system) + "Decode the quoted-printable encoded STRING and return the result. +If CODING-SYSTEM is non-nil, decode the region with coding-system." (with-temp-buffer (insert string) - (quoted-printable-decode-region (point-min) (point-max) charset) + (quoted-printable-decode-region (point-min) (point-max) coding-system) (buffer-string))) (defun quoted-printable-encode-region (from to &optional fold class) - "QP-encode the region between FROM and TO. + "Quoted-printable encode the region between FROM and TO per RFC 2045. -If FOLD fold long lines. If CLASS, translate the characters -matched by that regexp. +If FOLD, fold long lines at 76 characters (as required by the RFC). +If CLASS is non-nil, translate the characters matched by that class in +the form expected by `skip-chars-forward'. -If `mm-use-ultra-safe-encoding' is set, fold unconditionally and +If `mm-use-ultra-safe-encoding' is set, fold lines unconditionally and encode lines starting with \"From\"." (interactive "r") + (unless class + ;; Avoid using 8bit characters. = is \075. + ;; Equivalent to "^\000-\007\013\015-\037\200-\377=" + (setq class "\010-\012\014\040-\074\076-\177")) + (if (fboundp 'string-as-multibyte) + (setq class (string-as-multibyte class))) (save-excursion (save-restriction (narrow-to-region from to) - ;; (mm-encode-body) - ;; Encode all the non-ascii and control characters. - (goto-char (point-min)) - (while (and (skip-chars-forward - (or class "^\000-\007\013\015-\037\200-\377=")) - (not (eobp))) - (insert - (prog1 - (upcase (format "=%02x" (char-after))) - (delete-char 1)))) - ;; Encode white space at the end of lines. - (goto-char (point-min)) - (while (re-search-forward "[ \t]+$" nil t) - (goto-char (match-beginning 0)) - (while (not (eolp)) + (mm-with-unibyte-current-buffer-mule4 + (if (and (not (featurep 'xemacs)) ;; Don't check XEmacs Mule. + (fboundp 'find-charset-region)) + (if (delq 'unknown ; Emacs 20 unibyte + (delq 'eight-bit-graphic ; Emacs 21 + (delq 'eight-bit-control + (delq 'ascii + (find-charset-region from to))))) + (error "Multibyte character in QP encoding region"))) + ;; Encode all the non-ascii and control characters. + (goto-char (point-min)) + (while (and (skip-chars-forward class) + (not (eobp))) (insert (prog1 - (upcase (format "=%02x" (char-after))) - (delete-char 1))))) - (when (or fold mm-use-ultra-safe-encoding) - ;; Fold long lines. - (let ((tab-width 1)) ;; HTAB is one character. - (goto-char (point-min)) - (while (not (eobp)) - ;; In ultra-safe mode, encode "From " at the beginning of a - ;; line. - (when mm-use-ultra-safe-encoding - (beginning-of-line) - (when (looking-at "From ") - (replace-match "From=20" nil t))) - (end-of-line) - (while (> (current-column) 76) ;; tab-width must be 1. - (beginning-of-line) - (forward-char 75);; 75 chars plus an "=" - (search-backward "=" (- (point) 2) t) - (insert "=\n") - (end-of-line)) - (unless (eobp) - (forward-line)))))))) + (format "=%02X" (char-after)) + (delete-char 1)))) + ;; Encode white space at the end of lines. + (goto-char (point-min)) + (while (re-search-forward "[ \t]+$" nil t) + (goto-char (match-beginning 0)) + (while (not (eolp)) + (insert + (prog1 + (format "=%02X" (char-after)) + (delete-char 1))))) + (let ((mm-use-ultra-safe-encoding + (and (boundp 'mm-use-ultra-safe-encoding) + mm-use-ultra-safe-encoding))) + (when (or fold mm-use-ultra-safe-encoding) + ;; Fold long lines. + (let ((tab-width 1)) ; HTAB is one character. + (goto-char (point-min)) + (while (not (eobp)) + ;; In ultra-safe mode, encode "From " at the beginning + ;; of a line. + (when mm-use-ultra-safe-encoding + (beginning-of-line) + (if (looking-at "From ") + (replace-match "From=20" nil t) + (if (looking-at "-") + (replace-match "=2D" nil t)))) + (end-of-line) + (while (> (current-column) 76) ; tab-width must be 1. + (beginning-of-line) + (forward-char 75) ; 75 chars plus an "=" + (search-backward "=" (- (point) 2) t) + (insert "=\n") + (end-of-line)) + (unless (eobp) + (forward-line)))))))))) (defun quoted-printable-encode-string (string) - "QP-encode STRING and return the results." - (mm-with-unibyte-buffer + "Encode the STRING as quoted-printable and return the result." + (with-temp-buffer (insert string) (quoted-printable-encode-region (point-min) (point-max)) (buffer-string))) (provide 'qp) -;; qp.el ends here +;;; qp.el ends here diff --git a/lisp/rfc1843.el b/lisp/rfc1843.el index 7fb9736..c3bb790 100644 --- a/lisp/rfc1843.el +++ b/lisp/rfc1843.el @@ -2,7 +2,7 @@ ;; Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu -;; Keywords: news HZ HZ+ +;; Keywords: news HZ HZ+ mail i18n ;; This file is a part of GNU Emacs. @@ -32,6 +32,7 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'mm-util) (defvar rfc1843-word-regexp @@ -157,7 +158,6 @@ ftp://ftp.math.psu.edu/pub/simpson/chinese/hzp/hzp.doc" (defvar rfc1843-old-gnus-decode-header-function nil) (defvar gnus-decode-header-methods) (defvar gnus-decode-encoded-word-methods) -(defvar gnus-decode-encoded-word-function) (defun rfc1843-gnus-setup () "Setup HZ decoding for Gnus." diff --git a/lisp/rfc2045.el b/lisp/rfc2045.el index 1a5950d..70c8c39 100644 --- a/lisp/rfc2045.el +++ b/lisp/rfc2045.el @@ -1,5 +1,6 @@ ;;; rfc2045.el --- Functions for decoding rfc2045 headers -;; Copyright (C) 1998,99 Free Software Foundation, Inc. + +;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. @@ -18,6 +19,9 @@ ;; along with GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. + +;; RFC 2045 is: "Multipurpose Internet Mail Extensions (MIME) Part +;; One: Format of Internet Message Bodies". ;;; Commentary: diff --git a/lisp/rfc2047.el b/lisp/rfc2047.el index 7a86311..eb385d6 100644 --- a/lisp/rfc2047.el +++ b/lisp/rfc2047.el @@ -22,25 +22,31 @@ ;;; Commentary: +;; RFC 2047 is "MIME (Multipurpose Internet Mail Extensions) Part +;; Three: Message Header Extensions for Non-ASCII Text". + ;;; Code: -(eval-and-compile - (eval - '(unless (fboundp 'base64-decode-string) - (require 'base64)))) +(eval-when-compile (require 'cl)) (require 'qp) (require 'mm-util) (require 'ietf-drums) (require 'mail-prsvr) +(require 'base64) +;; Fixme: Avoid this (for gnus-point-at-...) mm dependence on gnus. +(require 'gnus-util) +(autoload 'mm-body-7-or-8 "mm-bodies") (defvar rfc2047-header-encoding-alist '(("Newsgroups" . nil) ("Message-ID" . nil) + ("\\(Resent-\\)?\\(From\\|Cc\\|To\\|Bcc\\|Reply-To\\|Sender\\)" . + "-A-Za-z0-9!*+/=_") (t . mime)) "*Header/encoding method alist. The list is traversed sequentially. The keys can either be -header regexps or `t'. +header regexps or t. The values can be: @@ -48,7 +54,8 @@ The values can be: 2) `mime', in which case the header will be encoded according to RFC2047; 3) a charset, in which case it will be encoded as that charset; 4) `default', in which case the field will be encoded as the rest - of the article.") + of the article. +5) a string, like `mime', expect for using it as word-chars.") (defvar rfc2047-charset-encoding-alist '((us-ascii . nil) @@ -61,6 +68,8 @@ The values can be: (iso-8859-7 . Q) (iso-8859-8 . Q) (iso-8859-9 . Q) + (iso-8859-14 . Q) + (iso-8859-15 . Q) (iso-2022-jp . B) (iso-2022-kr . B) (gb2312 . B) @@ -79,8 +88,12 @@ Valid encodings are nil, `Q' and `B'.") "Alist of RFC2047 encodings to encoding functions.") (defvar rfc2047-q-encoding-alist - '(("\\(From\\|Cc\\|To\\|Bcc\||Reply-To\\):" . "-A-Za-z0-9!*+/=_") - ("." . "^\000-\007\011\013\015-\037\200-\377=_?")) + '(("\\(Resent-\\)?\\(From\\|Cc\\|To\\|Bcc\\|Reply-To\\|Sender\\):" + . "-A-Za-z0-9!*+/" ) + ;; = (\075), _ (\137), ? (\077) are used in the encoded word. + ;; Avoid using 8bit characters. Some versions of Emacs has bug! + ;; Equivalent to "^\000-\007\011\013\015-\037\200-\377=_?" + ("." . "\010\012\014\040-\074\076\100-\136\140-\177")) "Alist of header regexps and valid Q characters.") ;;; @@ -118,8 +131,8 @@ Should be called narrowed to the head of the message." (car message-posting-charset))) ;; 8 bit must be decoded. ;; Is message-posting-charset a coding system? - (mm-encode-coding-region - (point-min) (point-max) + (mm-encode-coding-region + (point-min) (point-max) (car message-posting-charset))) ;; We found something that may perhaps be encoded. (setq method nil @@ -131,23 +144,37 @@ Should be called narrowed to the head of the message." (setq alist nil method (cdr elem)))) (cond + ((stringp method) + (rfc2047-encode-region (point-min) (point-max) method)) ((eq method 'mime) - (rfc2047-encode-region (point-min) (point-max)) - (rfc2047-fold-region (point-min) (point-max))) + (rfc2047-encode-region (point-min) (point-max))) ((eq method 'default) (if (and (featurep 'mule) + (if (boundp 'default-enable-multibyte-characters) + default-enable-multibyte-characters) mail-parse-charset) - (mm-encode-coding-region (point-min) (point-max) + (mm-encode-coding-region (point-min) (point-max) mail-parse-charset))) + ((null method) + (and (delq 'ascii + (mm-find-charset-region (point-min) + (point-max))) + (if (y-or-n-p + "Some texts are not encoded. Encode them anyway?") + (rfc2047-encode-region (point-min) (point-max)) + (error "Cannot send unencoded text.")))) ((mm-coding-system-p method) - (if (featurep 'mule) + (if (and (featurep 'mule) + (if (boundp 'default-enable-multibyte-characters) + default-enable-multibyte-characters)) (mm-encode-coding-region (point-min) (point-max) method))) ;; Hm. (t))) (goto-char (point-max))))))) -(defun rfc2047-encodable-p (&optional header) - "Say whether the current (narrowed) buffer contains characters that need encoding in headers." +(defun rfc2047-encodable-p () + "Return non-nil if any characters in current buffer need encoding in headers. +The buffer may be narrowed." (let ((charsets (mapcar 'mm-mime-charset @@ -159,94 +186,92 @@ Should be called narrowed to the head of the message." (setq found t))) found)) -(defun rfc2047-dissect-region (b e) +(defun rfc2047-dissect-region (b e &optional word-chars) "Dissect the region between B and E into words." - (let ((all-specials (concat ietf-drums-tspecials " \t\n\r")) - (special-list (mapcar 'identity ietf-drums-tspecials)) - (blank-list '(? ?\t ?\n ?\r)) - words current cs state mail-parse-mule-charset) + (unless word-chars + ;; Anything except most CTLs, WSP + (setq word-chars "\010\012\014\041-\177")) + (let (mail-parse-mule-charset + words point current + result word) (save-restriction (narrow-to-region b e) (goto-char (point-min)) - (skip-chars-forward all-specials) - (setq b (point)) + (skip-chars-forward "\000-\177") (while (not (eobp)) - (cond - ((not state) - (setq state 'word) - (if (not (eq (setq cs (mm-charset-after)) 'ascii)) - (setq current cs)) - (setq b (point))) - ((eq state 'blank) - (cond - ((memq (char-after) special-list) - (setq state nil)) - ((memq (char-after) blank-list)) - (t - (setq state 'word) - (unless b - (setq b (point))) - (if (not (eq (setq cs (mm-charset-after)) 'ascii)) - (setq current cs))))) - ((eq state 'word) - (cond - ((memq (char-after) special-list) - (setq state nil) - (push (list b (point) current) words) - (setq current nil)) - ((memq (char-after) blank-list) - (setq state 'blank) - (if (not current) - (setq b nil) - (push (list b (point) current) words) - (setq b (point)) - (setq current nil))) - ((or (eq (setq cs (mm-charset-after)) 'ascii) - (if current - (eq current cs) - (setq current cs)))) - (t - (push (list b (point) current) words) - (setq current cs) - (setq b (point)))))) - (if state - (forward-char) - (skip-chars-forward all-specials))) - (if (eq state 'word) - (push (list b (point) current) words))) - words)) - -(defun rfc2047-encode-region (b e) - "Encode all encodable words in REGION." - (let ((words (rfc2047-dissect-region b e)) - beg end current word) - (while (setq word (pop words)) - (if (equal (nth 2 word) current) - (setq beg (nth 0 word)) - (when current - (if (and (eq beg (nth 1 word)) (nth 2 word)) + (setq point (point)) + (skip-chars-backward word-chars b) + (unless (eq b (point)) + (push (cons (buffer-substring b (point)) nil) words)) + (setq b (point)) + (goto-char point) + (setq current (mm-charset-after)) + (forward-char 1) + (skip-chars-forward word-chars) + (while (and (not (eobp)) + (eq (mm-charset-after) current)) + (forward-char 1) + (skip-chars-forward word-chars)) + (unless (eq b (point)) + (push (cons (buffer-substring b (point)) current) words)) + (setq b (point)) + (skip-chars-forward "\000-\177")) + (unless (eq b (point)) + (push (cons (buffer-substring b (point)) nil) words))) + ;; merge adjacent words + (setq word (pop words)) + (while word + (if (and (cdr word) + (caar words) + (not (cdar words)) + (not (string-match "[^ \t]" (caar words)))) + (if (eq (cdr (nth 1 words)) (cdr word)) (progn - ;; There might be a bug in Emacs Mule. - ;; A space must be inserted before encoding. - (goto-char beg) - (insert " ") - (rfc2047-encode (1+ beg) (1+ end) current)) - (rfc2047-encode beg end current))) - (setq current (nth 2 word) - beg (nth 0 word) - end (nth 1 word)))) - (when current - (rfc2047-encode beg end current)))) - -(defun rfc2047-encode-string (string) + (setq word (cons (concat + (car (nth 1 words)) (caar words) + (car word)) + (cdr word))) + (pop words) + (pop words)) + (push (cons (concat (caar words) (car word)) (cdr word)) + result) + (pop words) + (setq word (pop words))) + (push word result) + (setq word (pop words)))) + result)) + +(defun rfc2047-encode-region (b e &optional word-chars) + "Encode all encodable words in region." + (let ((words (rfc2047-dissect-region b e word-chars)) word) + (save-restriction + (narrow-to-region b e) + (delete-region (point-min) (point-max)) + (while (setq word (pop words)) + (if (not (cdr word)) + (insert (car word)) + (rfc2047-fold-region (gnus-point-at-bol) (point)) + (goto-char (point-max)) + (if (> (- (point) (save-restriction + (widen) + (gnus-point-at-bol))) 76) + (insert "\n ")) + ;; Insert blank between encoded words + (if (eq (char-before) ?=) (insert " ")) + (rfc2047-encode (point) + (progn (insert (car word)) (point)) + (cdr word)))) + (rfc2047-fold-region (point-min) (point-max))))) + +(defun rfc2047-encode-string (string &optional word-chars) "Encode words in STRING." (with-temp-buffer (insert string) - (rfc2047-encode-region (point-min) (point-max)) + (rfc2047-encode-region (point-min) (point-max) word-chars) (buffer-string))) (defun rfc2047-encode (b e charset) - "Encode the word in the region with CHARSET." + "Encode the word in the region B to E with CHARSET." (let* ((mime-charset (mm-mime-charset charset)) (encoding (or (cdr (assq mime-charset rfc2047-charset-encoding-alist)) @@ -280,29 +305,84 @@ Should be called narrowed to the head of the message." (forward-line 1))))) (defun rfc2047-fold-region (b e) - "Fold the long lines in the region." + "Fold long lines in the region." (save-restriction (narrow-to-region b e) (goto-char (point-min)) - (let ((break nil)) + (let ((break nil) + (qword-break nil) + (bol (save-restriction + (widen) + (gnus-point-at-bol)))) (while (not (eobp)) + (when (and (or break qword-break) (> (- (point) bol) 76)) + (goto-char (or break qword-break)) + (setq break nil + qword-break nil) + (insert "\n ") + (setq bol (1- (point))) + ;; Don't break before the first non-LWSP characters. + (skip-chars-forward " \t") + (forward-char 1)) (cond + ((eq (char-after) ?\n) + (forward-char 1) + (setq bol (point) + break nil + qword-break nil) + (skip-chars-forward " \t") + (unless (or (eobp) (eq (char-after) ?\n)) + (forward-char 1))) + ((eq (char-after) ?\r) + (forward-char 1)) ((memq (char-after) '(? ?\t)) - (setq break (point))) - ((and (not break) - (looking-at "=\\?")) - (setq break (point))) - ((and break - (looking-at "\\?=") - (> (- (point) (save-excursion (beginning-of-line) (point))) 76)) - (goto-char break) - (setq break nil) - (insert "\n "))) - (unless (eobp) - (forward-char 1)))))) + (skip-chars-forward " \t") + (setq break (1- (point)))) + ((not break) + (if (not (looking-at "=\\?[^=]")) + (if (eq (char-after) ?=) + (forward-char 1) + (skip-chars-forward "^ \t\n\r=")) + (setq qword-break (point)) + (skip-chars-forward "^ \t\n\r"))) + (t + (skip-chars-forward "^ \t\n\r")))) + (when (and (or break qword-break) (> (- (point) bol) 76)) + (goto-char (or break qword-break)) + (setq break nil + qword-break nil) + (insert "\n ") + (setq bol (1- (point))) + ;; Don't break before the first non-LWSP characters. + (skip-chars-forward " \t") + (forward-char 1))))) + +(defun rfc2047-unfold-region (b e) + "Unfold lines in the region." + (save-restriction + (narrow-to-region b e) + (goto-char (point-min)) + (let ((bol (save-restriction + (widen) + (gnus-point-at-bol))) + (eol (gnus-point-at-eol)) + leading) + (forward-line 1) + (while (not (eobp)) + (looking-at "[ \t]*") + (setq leading (- (match-end 0) (match-beginning 0))) + (if (< (- (gnus-point-at-eol) bol leading) 76) + (progn + (goto-char eol) + (delete-region eol (progn + (skip-chars-forward "[ \t\n\r]+") + (1- (point))))) + (setq bol (gnus-point-at-bol))) + (setq eol (gnus-point-at-eol)) + (forward-line 1))))) (defun rfc2047-b-encode-region (b e) - "Encode the header contained in REGION with the B encoding." + "Base64-encode the header contained in region B to E." (save-restriction (narrow-to-region (goto-char b) e) (while (not (eobp)) @@ -312,30 +392,39 @@ Should be called narrowed to the head of the message." (forward-line)))) (defun rfc2047-q-encode-region (b e) - "Encode the header contained in REGION with the Q encoding." + "Quoted-printable-encode the header in region B to E." (save-excursion (save-restriction (narrow-to-region (goto-char b) e) - (let ((alist rfc2047-q-encoding-alist)) + (let ((alist rfc2047-q-encoding-alist) + (bol (save-restriction + (widen) + (gnus-point-at-bol)))) (while alist (when (looking-at (caar alist)) (quoted-printable-encode-region b e nil (cdar alist)) (subst-char-in-region (point-min) (point-max) ? ?_) (setq alist nil)) (pop alist)) - (goto-char (point-min)) - (while (not (eobp)) - (goto-char (min (point-max) (+ 64 (point)))) - (search-backward "=" (- (point) 2) t) - (unless (eobp) - (insert "\n"))))))) + ;; 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))))))))) ;;; ;;; Functions for decoding RFC2047 messages ;;; (defvar rfc2047-encoded-word-regexp - "=\\?\\([^][\000-\040()<>@,\;:\\\"/?.=]+\\)\\?\\(B\\|Q\\)\\?\\([!->@-~ +]+\\)\\?=") + "=\\?\\([^][\000-\040()<>@,\;:\\\"/?.=]+\\)\\?\\(B\\|Q\\)\\?\\([!->@-~ +]*\\)\\?=") (defun rfc2047-decode-region (start end) "Decode MIME-encoded words in region between START and END." @@ -370,7 +459,8 @@ Should be called narrowed to the head of the message." mail-parse-charset (not (eq mail-parse-charset 'us-ascii)) (not (eq mail-parse-charset 'gnus-decoded))) - (mm-decode-coding-region b (point-max) mail-parse-charset)))))) + (mm-decode-coding-region b (point-max) mail-parse-charset)) + (rfc2047-unfold-region (point-min) (point-max)))))) (defun rfc2047-decode-string (string) "Decode the quoted-printable-encoded STRING and return the results." @@ -397,19 +487,30 @@ Return WORD if not." (error word)) word))) +(defun rfc2047-pad-base64 (string) + "Pad STRING to quartets." + ;; Be more liberal to accept buggy base64 strings. If + ;; base64-decode-string accepts buggy strings, this function could + ;; be aliased to identity. + (case (mod (length string) 4) + (0 string) + (1 string) ;; Error, don't pad it. + (2 (concat string "==")) + (3 (concat string "=")))) + (defun rfc2047-decode (charset encoding string) - "Decode STRING that uses CHARSET with ENCODING. + "Decode STRING from the given MIME CHARSET in the given ENCODING. Valid ENCODINGs are \"B\" and \"Q\". -If your Emacs implementation can't decode CHARSET, it returns nil." +If your Emacs implementation can't decode CHARSET, return nil." (if (stringp charset) (setq charset (intern (downcase charset)))) - (if (or (not charset) + (if (or (not charset) (eq 'gnus-all mail-parse-ignored-charsets) (memq 'gnus-all mail-parse-ignored-charsets) (memq charset mail-parse-ignored-charsets)) (setq charset mail-parse-charset)) (let ((cs (mm-charset-to-coding-system charset))) - (if (and (not cs) charset + (if (and (not cs) charset (listp mail-parse-ignored-charsets) (memq 'gnus-unknown mail-parse-ignored-charsets)) (setq cs (mm-charset-to-coding-system mail-parse-charset))) @@ -417,15 +518,18 @@ If your Emacs implementation can't decode CHARSET, it returns nil." (when (and (eq cs 'ascii) mail-parse-charset) (setq cs mail-parse-charset)) - (mm-decode-coding-string - (cond - ((equal "B" encoding) - (base64-decode-string string)) - ((equal "Q" encoding) - (quoted-printable-decode-string - (mm-replace-chars-in-string string ?_ ? ))) - (t (error "Invalid encoding: %s" encoding))) - cs)))) + (mm-with-unibyte-current-buffer-mule4 + ;; In Emacs Mule 4, decoding UTF-8 should be in unibyte mode. + (mm-decode-coding-string + (cond + ((equal "B" encoding) + (base64-decode-string + (rfc2047-pad-base64 string))) + ((equal "Q" encoding) + (quoted-printable-decode-string + (mm-replace-chars-in-string string ?_ ? ))) + (t (error "Invalid encoding: %s" encoding))) + cs))))) (provide 'rfc2047) diff --git a/lisp/rfc2104.el b/lisp/rfc2104.el index c7ce5ab..3d45982 100644 --- a/lisp/rfc2104.el +++ b/lisp/rfc2104.el @@ -1,5 +1,5 @@ ;;; rfc2104.el --- RFC2104 Hashed Message Authentication Codes -;; Copyright (C) 1998,1999 Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: mail @@ -31,10 +31,16 @@ ;;; (rfc2104-hash 'md5 64 16 "Jefe" "what do ya want for nothing?") ;;; "750c783e6ab0b503eaa86e310a5db738" ;;; +;;; (require 'sha-1) +;;; (rfc2104-hash 'sha1-encode 64 20 "Jefe" "what do ya want for nothing?") +;;; "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79" +;;; ;;; 64 is block length of hash function (64 for MD5 and SHA), 16 is ;;; resulting hash length (16 for MD5, 20 for SHA). ;;; ;;; Tested with Emacs 20.2 and XEmacs 20.3. +;;; +;;; Test case reference: RFC 2202. ;;; Release history: ;;; @@ -43,6 +49,8 @@ ;;; 1998-08-26 don't require hexl ;;; 1998-09-25 renamed from hmac.el to rfc2104.el, also renamed functions ;;; 1999-10-23 included in pgnus +;;; 2000-08-15 `rfc2104-hexstring-to-bitstring' +;;; 2000-05-12 added sha-1 example, added test case reference (eval-when-compile (require 'cl)) @@ -76,6 +84,13 @@ (rfc2104-hex-to-int (reverse (append str nil)))) 0)) +(defun rfc2104-hexstring-to-bitstring (str) + (let (out) + (while (< 0 (length str)) + (push (rfc2104-hex-to-int (substring str -2)) out) + (setq str (substring str 0 -2))) + (concat out))) + (defun rfc2104-hash (hash block-length hash-length key text) (let* (;; if key is longer than B, reset it to HASH(key) (key (if (> (length key) block-length) @@ -90,14 +105,10 @@ ;; XOR key with ipad/opad into k_ipad/k_opad (setq k_ipad (mapcar (lambda (c) (logxor c rfc2104-ipad)) k_ipad)) (setq k_opad (mapcar (lambda (c) (logxor c rfc2104-opad)) k_opad)) - ;; perform inner hash - (let ((first-round (funcall hash (concat k_ipad text))) - de-hexed) - (while (< 0 (length first-round)) - (push (rfc2104-hex-to-int (substring first-round -2)) de-hexed) - (setq first-round (substring first-round 0 -2))) - ;; perform outer hash - (funcall hash (concat k_opad de-hexed))))) + ;; perform outer hash + (funcall hash (concat k_opad (rfc2104-hexstring-to-bitstring + ;; perform inner hash + (funcall hash (concat k_ipad text))))))) (provide 'rfc2104) diff --git a/lisp/rfc2231.el b/lisp/rfc2231.el index 8f58905..2fd2184 100644 --- a/lisp/rfc2231.el +++ b/lisp/rfc2231.el @@ -1,5 +1,6 @@ ;;; rfc2231.el --- Functions for decoding rfc2231 headers -;; Copyright (C) 1998,99 Free Software Foundation, Inc. + +;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. @@ -27,11 +28,17 @@ (eval-when-compile (require 'gnus-clfns)) (require 'ietf-drums) +(require 'rfc2047) (defun rfc2231-get-value (ct attribute) "Return the value of ATTRIBUTE from CT." (cdr (assq attribute (cdr ct)))) +(defun rfc2231-parse-qp-string (string) + "Parse QP-encoded string using `rfc2231-parse-string'. +N.B. This is in violation with RFC2047, but it seem to be in common use." + (rfc2231-parse-string (rfc2047-decode-string string))) + (defun rfc2231-parse-string (string) "Parse STRING and return a list. The list will be on the form @@ -80,7 +87,9 @@ The list will be on the form (when (eq c ?*) (forward-char 1) (setq c (char-after)) - (when (memq c ntoken) + (if (not (memq c ntoken)) + (setq encoded t + number nil) (setq number (string-to-number (buffer-substring @@ -141,7 +150,8 @@ These look like \"us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A\"." (string-to-number (buffer-substring (point) (+ (point) 2)) 16) (delete-region (1- (point)) (+ (point) 2))))) ;; Encode using the charset, if any. - (when (and (< (length elems) 1) + (when (and (mm-multibyte-p) + (> (length elems) 1) (not (equal (intern (car elems)) 'us-ascii))) (mm-decode-coding-region (point-min) (point-max) (intern (car elems)))) @@ -176,7 +186,7 @@ These look like \"us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A\"." (goto-char (point-min)) (while (not (eobp)) (when (> (current-column) 60) - (insert "\n") + (insert ";\n") (setq broken t)) (if (or (not (memq (following-char) ascii)) (memq (following-char) control) @@ -188,12 +198,13 @@ These look like \"us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A\"." (delete-char 1)) (forward-char 1))) (goto-char (point-min)) - (insert (or charset "ascii") "''") + (insert (symbol-name (or charset 'us-ascii)) "''") (goto-char (point-min)) (if (not broken) (insert param "*=") (while (not (eobp)) - (insert param "*" (format "%d" (incf num)) "*=") + (insert (if (>= num 0) " " "\n ") + param "*" (format "%d" (incf num)) "*=") (forward-line 1)))) (spacep (goto-char (point-min)) diff --git a/lisp/score-mode.el b/lisp/score-mode.el index 999ee44..1555df9 100644 --- a/lisp/score-mode.el +++ b/lisp/score-mode.el @@ -28,8 +28,6 @@ (eval-when-compile (require 'cl)) (eval-when-compile (require 'static)) -(require 'easymenu) - (defvar gnus-score-mode-hook nil "*Hook run in score mode buffers.") diff --git a/lisp/smiley-ems.el b/lisp/smiley-ems.el new file mode 100644 index 0000000..6083a65 --- /dev/null +++ b/lisp/smiley-ems.el @@ -0,0 +1,158 @@ +;;; smiley-ems.el --- displaying smiley faces + +;; Copyright (C) 2000 Free Software Foundation, Inc. + +;; Author: Dave Love +;; Keywords: news mail multimedia + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; A re-written, simplified version of Wes Hardaker's XEmacs smiley.el +;; which might be merged back to smiley.el if we get an assignment for +;; that. We don't have assignments for the images smiley.el uses, but +;; I'm not sure we need that degree of rococoness and defaults like a +;; yellow background. Also, using PBM means we can display the images +;; more generally. -- fx + +;;; Test smileys: :-) :-\ :-( :-/ + +;;; Code: + +(eval-when-compile (require 'cl)) +(require 'nnheader) + +(defgroup smiley nil + "Turn :-)'s into real images." + :group 'gnus-visual) + +;; Maybe this should go. +(defcustom smiley-data-directory (nnheader-find-etc-directory "smilies") + "*Location of the smiley faces files." + :type 'directory + :group 'smiley) + +;; The XEmacs version has a baroque, if not rococo, set of these. +(defcustom smiley-regexp-alist + ;; Perhaps :-) should be distinct -- it does appear in the Jargon File. + '(("\\([:;]-?)\\)\\W" 1 "smile.pbm") + ("\\(:-[/\\]\\)\\W" 1 "wry.pbm") + ("\\(:-[({]\\)\\W" 1 "frown.pbm")) + "*A list of regexps to map smilies to images. +The elements are (REGEXP MATCH FILE), where MATCH is the submatch in +rgexp to replace with IMAGE. IMAGE is the name of a PBM file in +`smiley-data-directory'." + :type '(repeat (list regexp + (integer :tag "Regexp match number") + (string :tag "Image name"))) + :set (lambda (symbol value) + (set-default symbol value) + (smiley-update-cache)) + :initialize 'custom-initialize-default + :group 'smiley) + +(defvar smiley-cached-regexp-alist nil) + +(defun smiley-update-cache () + (dolist (elt smiley-regexp-alist) + (let* ((data-directory smiley-data-directory) + (image (find-image (list (list :type 'pbm + :file (nth 2 elt) + :ascent 'center))))) + (if image + (push (list (car elt) (cadr elt) image) + smiley-cached-regexp-alist))))) + +(defvar smiley-active nil + "Non-nil means smilies in the buffer will be displayed.") +(make-variable-buffer-local 'smiley-active) + +(defvar smiley-mouse-map + (let ((map (make-sparse-keymap))) + (define-key map [down-mouse-2] 'ignore) ; override widget + (define-key map [mouse-2] + 'smiley-mouse-toggle-buffer) + map)) + +(defun smiley-region (start end) + "Replace in the region `smiley-regexp-alist' matches with corresponding images." + (interactive "r") + (when (and (fboundp 'display-graphic-p) + (display-graphic-p)) + (mapcar (lambda (o) + (if (eq 'smiley (overlay-get o 'smiley)) + (delete-overlay o))) + (overlays-in start end)) + (unless smiley-cached-regexp-alist + (smiley-update-cache)) + (save-excursion + (let ((beg (or start (point-min))) + group overlay image) + (dolist (entry smiley-cached-regexp-alist) + (setq group (nth 1 entry) + image (nth 2 entry)) + (goto-char beg) + (while (re-search-forward (car entry) end t) + (when image + (setq overlay (make-overlay (match-beginning group) + (match-end group))) + (overlay-put overlay + 'display `(when smiley-active ,@image)) + (overlay-put overlay 'mouse-face 'highlight) + (overlay-put overlay 'smiley t) + (overlay-put overlay + 'help-echo "mouse-2: toggle smilies in buffer") + (overlay-put overlay 'keymap smiley-mouse-map)))))) + (setq smiley-active t))) + +(defun smiley-toggle-buffer (&optional arg) + "Toggle displaying smiley faces. +With arg, turn displaying on if and only if arg is positive." + (interactive "P") + (if (numberp arg) + (setq smiley-active (> arg 0)) + (setq smiley-active (not smiley-active)))) + +(defun smiley-mouse-toggle-buffer (event) + "Toggle displaying smiley faces. +With arg, turn displaying on if and only if arg is positive." + (interactive "e") + (save-excursion + (save-window-excursion + (mouse-set-point event) + (smiley-toggle-buffer)))) + +(eval-when-compile (defvar gnus-article-buffer)) + +(defun gnus-smiley-display (&optional arg) + "Display textual emoticaons (\"smilies\") as small graphical icons. +With arg, turn displaying on if and only if arg is positive." + (interactive "P") + (save-excursion + (set-buffer gnus-article-buffer) + (save-restriction + (widen) + (article-goto-body) + (smiley-region (point-min) (point-max)) + (if (and (numberp arg) (<= arg 0)) + (smiley-toggle-buffer arg))))) + +(provide 'smiley) + +;;; smiley-ems.el ends here diff --git a/lisp/smiley.el b/lisp/smiley.el index d669304..380cea9 100644 --- a/lisp/smiley.el +++ b/lisp/smiley.el @@ -37,16 +37,22 @@ ;; The smilies were drawn by Joe Reiss . (eval-when-compile (require 'cl)) - -(require 'annotations) -(require 'messagexmas) (require 'custom) +(eval-and-compile + (when (featurep 'xemacs) + (require 'annotations) + (require 'messagexmas))) + (defgroup smiley nil - "Turn :-)'s into real images (XEmacs)." + "Turn :-)'s into real images." :group 'gnus-visual) -(defcustom smiley-data-directory (message-xmas-find-glyph-directory "smilies") +;; FIXME: Where is the directory when using Emacs? +(defcustom smiley-data-directory + (if (featurep 'xemacs) + (message-xmas-find-glyph-directory "smilies") + "/usr/local/lib/xemacs/xemacs-packages/etc/smilies") "*Location of the smiley faces files." :type 'directory :group 'smiley) @@ -153,7 +159,6 @@ above them." :group 'smiley) (defvar smiley-glyph-cache nil) -(defvar smiley-running-xemacs (string-match "XEmacs" emacs-version)) (defvar smiley-map (make-sparse-keymap "smiley-keys") "Keymap to toggle smiley states.") @@ -169,26 +174,30 @@ above them." ["Toggle All Smilies" (smiley-toggle-extents ,e) t]))) (defun smiley-create-glyph (smiley pixmap) - (and - smiley-running-xemacs - (or - (cdr-safe (assoc pixmap smiley-glyph-cache)) - (let* ((xpm-color-symbols - (and (featurep 'xpm) - (append `(("flesh" ,smiley-flesh-color) - ("features" ,smiley-features-color) - ("tongue" ,smiley-tongue-color)) - xpm-color-symbols))) - (glyph (make-glyph - (list - (cons (if (featurep 'gtk) 'gtk 'x) - (expand-file-name pixmap smiley-data-directory)) - (cons 'mswindows - (expand-file-name pixmap smiley-data-directory)) - (cons 'tty smiley))))) - (setq smiley-glyph-cache (cons (cons pixmap glyph) smiley-glyph-cache)) - (set-glyph-face glyph 'default) - glyph)))) + (or + (cdr-safe (assoc pixmap smiley-glyph-cache)) + (let* ((xpm-color-symbols + (and (featurep 'xpm) + (append `(("flesh" ,smiley-flesh-color) + ("features" ,smiley-features-color) + ("tongue" ,smiley-tongue-color)) + xpm-color-symbols))) + (glyph (make-glyph + (list + (cons (if (featurep 'gtk) 'gtk 'x) + (expand-file-name pixmap smiley-data-directory)) + (cons 'mswindows + (expand-file-name pixmap smiley-data-directory)) + (cons 'tty smiley))))) + (setq smiley-glyph-cache (cons (cons pixmap glyph) smiley-glyph-cache)) + (set-glyph-face glyph 'default) + glyph))) + +(defun smiley-create-glyph-ems (smiley pixmap) + (condition-case e + (create-image (expand-file-name pixmap smiley-data-directory)) + (error nil))) + ;;;###autoload (defun smiley-region (beg end) @@ -213,6 +222,14 @@ above them." (reveal-annotation ant) (set-extent-property ext 'invisible t))))))) +;; FIXME:: +(defun smiley-toggle-extent-ems (event) + "Toggle smiley at given point. +Note -- this function hasn't been implemented yet." + (interactive "e") + (error "This function hasn't been implemented yet.") +) + (defun smiley-toggle-extents (e) (interactive "e") (map-extents @@ -229,6 +246,12 @@ above them." nil)) (event-buffer e))) +;; FIXME:: +(defun smiley-toggle-extents-ems (e) + (interactive "e") + (error "This function hasn't been implemented yet.") +) + ;;;###autoload (defun smiley-buffer (&optional buffer st nd) (interactive) @@ -295,6 +318,44 @@ Mouse button3 - menu")) (make-annotation ")" end 'text)) (goto-char end))))))))) +;; FIXME: No popup menu, no customized color +(defun smiley-buffer-ems (&optional buffer st nd) + (interactive) + (when window-system + (save-excursion + (when buffer + (set-buffer buffer)) + (let ((buffer-read-only nil) + (alist (if (symbolp smiley-regexp-alist) + (symbol-value smiley-regexp-alist) + smiley-regexp-alist)) + (case-fold-search nil) + entry regexp beg group file) + (dolist (overlay (overlays-in (or st (point-min)) + (or nd (point-max)))) + (when (overlay-get overlay 'smiley) + (remove-text-properties (overlay-start overlay) + (overlay-end overlay) '(display)) + (delete-overlay overlay))) + (goto-char (or st (point-min))) + (setq beg (point)) + ;; loop through alist + (while (setq entry (pop alist)) + (setq regexp (car entry) + group (cadr entry) + file (caddr entry)) + (goto-char beg) + (while (re-search-forward regexp nd t) + (let* ((start (match-beginning group)) + (end (match-end group)) + (glyph (smiley-create-glyph nil file)) + (overlay (make-overlay start end))) + (when glyph + (add-text-properties start end + `(display ,glyph)) + (overlay-put overlay 'smiley glyph) + (goto-char end))))))))) + (defun smiley-end-paren-p (start end) "Try to guess whether the current smiley is an end-paren smiley." (save-excursion @@ -334,6 +395,32 @@ With arg, turn displaying on if and only if arg is positive." (set-extent-property (cdar on) 'invisible nil) (setq on (cdr on)))))) +;; Simply removing all smiley if existing. +;; FIXME: make it work as the one in XEmacs. +(defun smiley-toggle-buffer-ems (&optional arg buffer st nd) + "Toggle displaying smiley faces. +With arg, turn displaying on if and only if arg is positive." + (interactive "P") + (save-excursion + (when buffer + (set-buffer buffer)) + (let (found) + (dolist (overlay (overlays-in (or st (point-min)) + (or nd (point-max)))) + (when (overlay-get overlay 'smiley) + (remove-text-properties (overlay-start overlay) + (overlay-end overlay) '(display)) + (setq found t))) + (unless found + (smiley-buffer buffer st nd))))) + +(unless (featurep 'xemacs) + (defalias 'smiley-create-glyph 'smiley-create-glyph-ems) + (defalias 'smiley-toggle-extent 'smiley-toggle-extent-ems) + (defalias 'smiley-toggle-extents 'smiley-toggle-extents-ems) + (defalias 'smiley-buffer 'smiley-buffer-ems) + (defalias 'smiley-toggle-buffer 'smiley-toggle-buffer-ems)) + (defvar gnus-article-buffer) ;;;###autoload (defun gnus-smiley-display (&optional arg) @@ -345,7 +432,8 @@ With arg, turn displaying on if and only if arg is positive." (save-restriction (widen) (article-goto-body) - (smiley-toggle-buffer arg (current-buffer) (point) (point-max))))) + (let (buffer-read-only) + (smiley-toggle-buffer arg (current-buffer) (point) (point-max)))))) (provide 'smiley) diff --git a/lisp/starttls.el b/lisp/starttls.el new file mode 100644 index 0000000..d0fb682 --- /dev/null +++ b/lisp/starttls.el @@ -0,0 +1,77 @@ +;;; starttls.el --- STARTTLS functions + +;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. + +;; Author: Daiki Ueno +;; Created: 1999/11/20 +;; Keywords: TLS, SSL, OpenSSL, mail, news + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; This module defines some utility functions for STARTTLS profiles. + +;; [RFC 2595] "Using TLS with IMAP, POP3 and ACAP" +;; by Chris Newman (1999/06) + +;;; Code: + +(defgroup starttls nil + "Support for `Transport Layer Security' protocol." + :version "21.1" + :group 'mail) + +(defcustom starttls-program "starttls" + "The program to run in a subprocess to open an TLSv1 connection." + :type 'string + :group 'starttls) + +(defcustom starttls-extra-args nil + "Extra arguments to `starttls-program'." + :type '(repeat string) + :group 'starttls) + +(defun starttls-negotiate (process) + (signal-process (process-id process) 'SIGALRM)) + +(defun starttls-open-stream (name buffer host service) + "Open a TLS connection for a service to a host. +Returns a subprocess-object to represent the connection. +Input and output work as for subprocesses; `delete-process' closes it. +Args are NAME BUFFER HOST SERVICE. +NAME is name for process. It is modified if necessary to make it unique. +BUFFER is the buffer (or `buffer-name') to associate with the process. + Process output goes at end of that buffer, unless you specify + an output stream or filter function to handle the output. + BUFFER may be also nil, meaning that this process is not associated + with any buffer +Third arg is name of the host to connect to, or its IP address. +Fourth arg SERVICE is name of the service desired, or an integer +specifying a port number to connect to." + (let* ((process-connection-type nil) + (process (apply #'start-process + name buffer starttls-program + host (format "%s" service) + starttls-extra-args))) + (process-kill-without-query process) + process)) + +(provide 'starttls) + +;;; starttls.el ends here diff --git a/lisp/time-date.el b/lisp/time-date.el index 558bc3c..3bfb9a4 100644 --- a/lisp/time-date.el +++ b/lisp/time-date.el @@ -26,15 +26,23 @@ ;;; Code: -(eval-when-compile (require 'cl)) - (require 'parse-time) +(autoload 'timezone-make-date-arpa-standard "timezone") + ;;;###autoload (defun date-to-time (date) "Convert DATE into time." (condition-case () - (apply 'encode-time (parse-time-string date)) + (apply 'encode-time + (parse-time-string + ;; `parse-time-string' isn't sufficiently general or + ;; robust. It fails to grok some of the formats that + ;; timzeone does (e.g. dodgy post-2000 stuff from some + ;; Elms) and either fails or returns bogus values. Lars + ;; reverted this change, but that loses non-trivially + ;; often for me. -- fx + (timezone-make-date-arpa-standard date))) (error (error "Invalid date: %s" date)))) (defun time-to-seconds (time) diff --git a/lisp/utf7.el b/lisp/utf7.el index 06416e9..23965a1 100644 --- a/lisp/utf7.el +++ b/lisp/utf7.el @@ -4,7 +4,7 @@ ;; Author: Jon K Hellan ;; Keywords: mail -;; This file is part of GNU Emacs, but the same permissions apply +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -24,35 +24,36 @@ ;;; Commentary: ;;; UTF-7 - A Mail-Safe Transformation Format of Unicode - RFC 2152 ;;; This is a transformation format of Unicode that contains only 7-bit -;;; ASCII octets and is intended to be readable by humans in the limiting +;;; ASCII octets and is intended to be readable by humans in the limiting ;;; case that the document consists of characters from the US-ASCII ;;; repertoire. -;;; In short, runs of characters outside US-ASCII are encoded as base64 +;;; In short, runs of characters outside US-ASCII are encoded as base64 ;;; inside delimiters. ;;; A variation of UTF-7 is specified in IMAP 4rev1 (RFC 2060) as the way ;;; to represent characters outside US-ASCII in mailbox names in IMAP. ;;; This library supports both variants, but the IMAP variation was the -;;; reason I wrote it. -;;; The routines convert UTF-7 -> UTF-16 (16 bit encoding of Unicode) -;;; -> current character set, and vice versa. +;;; reason I wrote it. +;;; The routines convert UTF-7 -> UTF-16 (16 bit encoding of Unicode) +;;; -> current character set, and vice versa. ;;; However, until Emacs supports Unicode, the only Emacs character set ;;; supported here is ISO-8859.1, which can trivially be converted to/from ;;; Unicode. ;;; When decoding results in a character outside the Emacs character set, -;;; an error is thrown. It is up to the application to recover. +;;; an error is thrown. It is up to the application to recover. ;;; Code: +(eval-when-compile (require 'cl)) (require 'base64) -(defvar utf7-direct-encoding-chars " -%'-*,-[]-}" - "Characters ranges which do not need escaping in UTF-7") +(defvar utf7-direct-encoding-chars " -%'-*,-[]-}" + "Character ranges which do not need escaping in UTF-7.") -(defvar utf7-imap-direct-encoding-chars +(defvar utf7-imap-direct-encoding-chars (concat utf7-direct-encoding-chars "+\\~") - "Characters ranges which do not need escaping in the IMAP variant of UTF-7") + "Character ranges which do not need escaping in the IMAP variant of UTF-7.") -(defsubst utf7-imap-get-pad-length (len modulus) +(defsubst utf7-imap-get-pad-length (len modulus) "Return required length of padding for IMAP modified base64 fragment." (mod (- len) modulus)) @@ -64,7 +65,7 @@ Use IMAP modification if FOR-IMAP is non-nil." (narrow-to-region start end) (goto-char start) (let ((esc-char (if for-imap ?& ?+)) - (direct-encoding-chars + (direct-encoding-chars (if for-imap utf7-imap-direct-encoding-chars utf7-direct-encoding-chars))) (while (not (eobp)) @@ -73,7 +74,7 @@ Use IMAP modification if FOR-IMAP is non-nil." (insert esc-char) (let ((p (point)) (fc (following-char)) - (run-length + (run-length (skip-chars-forward (concat "^" direct-encoding-chars)))) (if (and (= fc esc-char) (= run-length 1)) ; Lone esc-char? @@ -90,7 +91,7 @@ Use IMAP modification if FOR-IMAP is non-nil." (base64-encode-region start (point-max)) (goto-char start) (let ((pm (point-max))) - (when for-imap + (when for-imap (while (search-forward "/" nil t) (replace-match ","))) (skip-chars-forward "^= \t\n" pm) @@ -103,7 +104,7 @@ Use IMAP modification if FOR-IMAP is non-nil." (end (point-max))) (goto-char start) (let* ((esc-pattern (concat "^" (char-to-string (if for-imap ?& ?+)))) - (base64-chars (concat "A-Za-z0-9+" + (base64-chars (concat "A-Za-z0-9+" (char-to-string (if for-imap ?, ?/))))) (while (not (eobp)) (skip-chars-forward esc-pattern) @@ -159,7 +160,7 @@ Characters are in raw byte pairs in narrowed buffer." (forward-char))) (defun utf7-encode (string &optional for-imap) - "Encode UTF-7 string. Use IMAP modification if FOR-IMAP is non-nil." + "Encode UTF-7 STRING. Use IMAP modification if FOR-IMAP is non-nil." (let ((default-enable-multibyte-characters nil)) (with-temp-buffer (insert string) @@ -167,7 +168,7 @@ Characters are in raw byte pairs in narrowed buffer." (buffer-string)))) (defun utf7-decode (string &optional for-imap) - "Decode UTF-7 string. Use IMAP modification if FOR-IMAP is non-nil." + "Decode UTF-7 STRING. Use IMAP modification if FOR-IMAP is non-nil." (let ((default-enable-multibyte-characters nil)) (with-temp-buffer (insert string) diff --git a/lisp/uudecode.el b/lisp/uudecode.el index 7b709e2..b7168c6 100644 --- a/lisp/uudecode.el +++ b/lisp/uudecode.el @@ -1,5 +1,6 @@ ;;; uudecode.el -- elisp native uudecode -;; Copyright (c) 1998,99 Free Software Foundation, Inc. + +;; Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: uudecode news @@ -26,18 +27,44 @@ ;; Lots of codes are stolen from mm-decode.el, gnus-uu.el and ;; base64.el +;; This looks as though it could be made rather more efficient for +;; internal working. Encoding could use a lookup table and decoding +;; should presumably use a vector or list buffer for partial results +;; rather than with-current-buffer. -- fx + +;; Only `uudecode-decode-region' should be advertised, and whether or +;; not that uses a program should be customizable, but I guess it's +;; too late now. -- fx + ;;; Code: -(if (not (fboundp 'char-int)) - (fset 'char-int 'identity)) +(eval-when-compile (require 'cl)) + +(eval-and-compile + (defalias 'uudecode-char-int + (if (fboundp 'char-int) + 'char-int + 'identity)) + + (if (featurep 'xemacs) + (defalias 'uudecode-insert-char 'insert-char) + (defun uudecode-insert-char (char &optional count ignored buffer) + (if (or (null buffer) (eq buffer (current-buffer))) + (insert-char char count) + (with-current-buffer buffer + (insert-char char count)))))) -(defvar uudecode-decoder-program "uudecode" +(defcustom uudecode-decoder-program "uudecode" "*Non-nil value should be a string that names a uu decoder. The program should expect to read uu data on its standard -input and write the converted data to its standard output.") +input and write the converted data to its standard output." + :type 'string + :group 'gnus-extract) -(defvar uudecode-decoder-switches nil - "*List of command line flags passed to the command named by uudecode-decoder-program.") +(defcustom uudecode-decoder-switches nil + "*List of command line flags passed to `uudecode-decoder-program'." + :group 'gnus-extract + :type '(repeat string)) (defconst uudecode-alphabet "\040-\140") @@ -57,11 +84,11 @@ input and write the converted data to its standard output.") ;;;###autoload (defun uudecode-decode-region-external (start end &optional file-name) - "uudecode region between START and END with external decoder. - -If FILE-NAME is non-nil, save the result to FILE-NAME." + "Uudecode region between START and END using external program. +If FILE-NAME is non-nil, save the result to FILE-NAME. The program +used is specified by `uudecode-decoder-program'." (interactive "r\nP") - (let ((cbuf (current-buffer)) tempfile firstline work-buffer status) + (let ((cbuf (current-buffer)) tempfile firstline status) (save-excursion (goto-char start) (when (re-search-forward uudecode-begin-line nil t) @@ -75,16 +102,17 @@ If FILE-NAME is non-nil, save the result to FILE-NAME." (match-string 1))))) (setq tempfile (if file-name (expand-file-name file-name) - (make-temp-name - ;; /tmp/uu... - (expand-file-name - "uu" uudecode-temporary-file-directory)))) - (let ((cdir default-directory) default-process-coding-system) + (if (fboundp 'make-temp-file) + (let ((temporary-file-directory + uudecode-temporary-file-directory)) + (make-temp-file "uu")) + (expand-file-name + (make-temp-name "uu") + uudecode-temporary-file-directory)))) + (let ((cdir default-directory) + default-process-coding-system) (unwind-protect - (progn - (set-buffer (setq work-buffer - (generate-new-buffer " *uudecode-work*"))) - (buffer-disable-undo work-buffer) + (with-temp-buffer (insert "begin 600 " (file-name-nondirectory tempfile) "\n") (insert-buffer-substring cbuf firstline end) (cd (file-name-directory tempfile)) @@ -104,21 +132,11 @@ If FILE-NAME is non-nil, save the result to FILE-NAME." (let (format-alist) (insert-file-contents-literally tempfile))) (message "Can not uudecode"))) - (and work-buffer (kill-buffer work-buffer)) (ignore-errors (or file-name (delete-file tempfile)))))) -(if (string-match "XEmacs" emacs-version) - (defalias 'uudecode-insert-char 'insert-char) - (defun uudecode-insert-char (char &optional count ignored buffer) - (if (or (null buffer) (eq buffer (current-buffer))) - (insert-char char count) - (with-current-buffer buffer - (insert-char char count))))) - ;;;###autoload - (defun uudecode-decode-region (start end &optional file-name) - "uudecode region between START and END. + "Uudecode region between START and END without using an external program. If FILE-NAME is non-nil, save the result to FILE-NAME." (interactive "r\nP") (let ((work-buffer nil) @@ -140,7 +158,6 @@ If FILE-NAME is non-nil, save the result to FILE-NAME." nil nil nil (match-string 1)))))) (setq work-buffer (generate-new-buffer " *uudecode-work*")) - (buffer-disable-undo work-buffer) (forward-line 1) (skip-chars-forward non-data-chars end) (while (not done) @@ -150,14 +167,16 @@ If FILE-NAME is non-nil, save the result to FILE-NAME." ((> (skip-chars-forward uudecode-alphabet end) 0) (setq lim (point)) (setq remain - (logand (- (char-int (char-after inputpos)) 32) 63)) + (logand (- (uudecode-char-int (char-after inputpos)) 32) + 63)) (setq inputpos (1+ inputpos)) (if (= remain 0) (setq done t)) (while (and (< inputpos lim) (> remain 0)) (setq bits (+ bits (logand (- - (char-int (char-after inputpos)) 32) 63))) + (uudecode-char-int (char-after inputpos)) 32) + 63))) (if (/= counter 0) (setq remain (1- remain))) (setq counter (1+ counter) inputpos (1+ inputpos)) diff --git a/lisp/webmail.el b/lisp/webmail.el index 2110624..d947ca0 100644 --- a/lisp/webmail.el +++ b/lisp/webmail.el @@ -77,8 +77,8 @@ (login-url "http://%s/cgi-bin/dologin?login=%s&passwd=%s&enter=Sign+in&sec=no&curmbox=ACTIVE&_lang=&js=yes&id=2&tw=-10000&beta=" webmail-aux user password) - (login-snarf . webmail-hotmail-login) - (list-url "%s" webmail-aux) + ;;(login-snarf . webmail-hotmail-login) + ;;(list-url "%s" webmail-aux) (list-snarf . webmail-hotmail-list) (article-snarf . webmail-hotmail-article) (trash-url @@ -129,8 +129,8 @@ (login-url content ("http://ureg.netscape.com/iiop/UReg2/login/loginform") - "%s&U2_USERNAME=%s&U2_PASSWORD=%s" - webmail-aux user password) + "U2_USERNAME=%s&U2_PASSWORD=%s%s" + user password webmail-aux) (login-snarf . webmail-netaddress-login) (list-url "http://webmail.netscape.com/tpl/Mail/%s/List?FolderID=-4&SortUseCase=True" @@ -144,7 +144,7 @@ (my-deja (paranoid cookie post) (address . "www.my-deja.com") - (open-url "http://www.my-deja.com/") + (open-url "http://www.deja.com/my/pr.xp") (open-snarf . webmail-my-deja-open) (login-url content @@ -154,9 +154,7 @@ (list-url "http://www.deja.com/rg_gotomail.xp") (list-snarf . webmail-my-deja-list) (article-snarf . webmail-my-deja-article) - (trash-url - "%s/gmm_multiplex.femail?%%2Fgmm_domovemesg_top.femail=Move+to%%3A&folder_top=%s%%3Azzz%%3A%%7E6trash%%3AF%%3A0&docid=%s" - webmail-aux user id)))) + (trash-url webmail-aux id)))) (defvar webmail-variables '(address article-snarf article-url list-snarf list-url @@ -215,9 +213,9 @@ (defun webmail-error (str) (if webmail-error-function (funcall webmail-error-function str)) - (message "%s HTML has changed; please get a new version of webmail (%s)" + (message "%s HTML has changed or your w3 package is too old.(%s)" webmail-type str) - (error "%s HTML has changed; please get a new version of webmail (%s)" + (error "%s HTML has changed or your w3 package is too old.(%s)" webmail-type str)) (defun webmail-setdefault (type) @@ -278,14 +276,14 @@ (webmail-fetch-form (car xurl) (webmail-eval (cdr xurl)))) (t (nnweb-insert (apply 'format (webmail-eval xurl))))))) - + (defun webmail-init () "Initialize buffers and such." (if (gnus-buffer-live-p webmail-buffer) (set-buffer webmail-buffer) (setq webmail-buffer - (mm-with-unibyte - (nnheader-set-temp-buffer " *webmail*"))))) + (nnheader-set-temp-buffer " *webmail*")) + (mm-disable-multibyte))) (defvar url-package-name) (defvar url-package-version) @@ -314,7 +312,7 @@ "Redirect refresh url in META." (goto-char (point-min)) (while (re-search-forward - "HTTP-EQUIV=\"Refresh\"[^>]*URL=\\([^\"]+\\)\"" + "]*URL=\\([^\"]+\\)\"" nil t) (let ((url (match-string 1))) (erase-buffer) @@ -337,6 +335,7 @@ (url-confirmation-func (if (memq 'post webmail-paranoid) 'webmail-url-confirmation-func url-confirmation-func)) + (url-http-silence-on-insecure-redirection t) url-cookie-storage url-cookie-secure-storage url-cookie-confirmation item id (n 0)) @@ -406,64 +405,76 @@ (webmail-error "login@1")) (goto-char (point-min)) (if (re-search-forward - "\\(/cgi-bin/HoTMaiL\\?[^\"]*curmbox=ACTIVE[^\"]*\\)" nil t) + "\\(/cgi-bin/HoTMaiL\\?[^\"]*a=b[^\"]*\\)" nil t) (setq webmail-aux (concat "http://" site (match-string 1))) (webmail-error "login@2")))) (defun webmail-hotmail-list () - (let (site url newp) - (goto-char (point-min)) - (if (re-search-forward "[0-9]+ new" nil t) - (message "Found %s" (match-string 0)) - (webmail-error "maybe your w3 version is too old")) - (goto-char (point-min)) - (if (re-search-forward + (goto-char (point-min)) + (skip-chars-forward " \t\n\r") + (let (site url newp (total "0")) + (if (eobp) + (setq total "0") + (if (re-search-forward "\\([0-9]+\\) *(\\([0-9]+\\) new)" nil t) + (message "Found %s (%s new)" (setq total (match-string 1)) + (match-string 2)) + (if (re-search-forward "\\([0-9]+\\) new" nil t) + (message "Found %s new" (setq total (match-string 1))) + (webmail-error "list@0")))) + (unless (equal total "0") + (goto-char (point-min)) + (if (re-search-forward "https?://\\([^/]+hotmail\\.msn\\.com\\)/cgi-bin/" nil t) - (setq site (match-string 1)) - (webmail-error "list@1")) - (goto-char (point-min)) - (if (re-search-forward "disk=\\([^&]+\\)&" nil t) - (setq webmail-aux - (concat "http://" site "/cgi-bin/HoTMaiL?disk=" - (match-string 1))) - (webmail-error "list@2")) - (goto-char (point-max)) - (while (re-search-backward - "newmail\\.gif\\|href=\"\\(/cgi-bin/getmsg\\?[^\"]+\\)\"" - nil t) - (if (setq url (match-string 1)) - (progn - (if (or newp (not webmail-newmail-only)) - (let (id) - (if (string-match "msg=\\([^&]+\\)" url) - (setq id (match-string 1 url))) - (push (cons id (concat "http://" site url "&raw=0")) - webmail-articles))) - (setq newp nil)) - (setq newp t))))) + (setq site (match-string 1)) + (webmail-error "list@1")) + (goto-char (point-min)) + (if (re-search-forward "disk=\\([^&]*\\)&" nil t) + (setq webmail-aux + (concat "http://" site "/cgi-bin/HoTMaiL?disk=" + (match-string 1))) + (webmail-error "list@2")) + (goto-char (point-max)) + (while (re-search-backward + "newmail\\.gif\\|href=\"\\(/cgi-bin/getmsg\\?[^\"]+\\)\"" + nil t) + (if (setq url (match-string 1)) + (progn + (if (or newp (not webmail-newmail-only)) + (let (id) + (if (string-match "msg=\\([^&]+\\)" url) + (setq id (match-string 1 url))) + (push (cons id (concat "http://" site url "&raw=0")) + webmail-articles))) + (setq newp nil)) + (setq newp t)))))) ;; Thank victor@idaccr.org (Victor S. Miller) for raw=0 (defun webmail-hotmail-article (file id) (goto-char (point-min)) - (if (not (search-forward "

" nil t))
-      (webmail-error "article@3"))
-  (skip-chars-forward "\n\r\t ")
-  (delete-region (point-min) (point))
-  (if (not (search-forward "
" nil t)) - (webmail-error "article@3.1")) - (delete-region (match-beginning 0) (point-max)) - (nnweb-remove-markup) - (let ((w3-html-entities (cons '(nbsp . 32) w3-html-entities))) - (nnweb-decode-entities)) - (goto-char (point-min)) - (while (re-search-forward "\r\n?" nil t) - (replace-match "\n")) - (goto-char (point-min)) - (insert "\n\n") - (if (not (looking-at "\n*From ")) - (insert "From nobody " (current-time-string) "\n")) - (mm-append-to-file (point-min) (point-max) file)) + (skip-chars-forward " \t\n\r") + (unless (eobp) + (if (not (search-forward "
" nil t))
+	(webmail-error "article@3"))
+    (skip-chars-forward "\n\r\t ")
+    (delete-region (point-min) (point))
+    (if (not (search-forward "
" nil t)) + (webmail-error "article@3.1")) + (delete-region (match-beginning 0) (point-max)) + (nnweb-remove-markup) + (let ((w3-html-entities (cons '(nbsp . 32) w3-html-entities))) + (nnweb-decode-entities)) + (goto-char (point-min)) + (while (re-search-forward "\r\n?" nil t) + (replace-match "\n")) + (goto-char (point-min)) + (insert "\n\n") + (if (not (looking-at "\n*From ")) + (insert "From nobody " (current-time-string) "\n") + (forward-line)) + (insert "X-Gnus-Webmail: " (symbol-value 'user) + "@" (symbol-name webmail-type) "\n") + (mm-append-to-file (point-min) (point-max) file))) (defun webmail-hotmail-article-old (file id) (let (p attachment count mime hotmail-direct) @@ -556,8 +567,10 @@ (goto-char (point-min)) ;; Some blank line to seperate mails. (insert "\n\nFrom nobody " (current-time-string) "\n") + (insert "X-Gnus-Webmail: " (symbol-value 'user) + "@" (symbol-name webmail-type) "\n") (if id - (insert (format "Message-ID: <%s@hotmail.com>\n" id))) + (insert (format "X-Message-ID: <%s@hotmail.com>\n" id))) (unless (looking-at "$") (if (search-forward "\n\n" nil t) (forward-line -1) @@ -685,8 +698,10 @@ (goto-char (point-min)) ;; Some blank line to seperate mails. (insert "\n\nFrom nobody " (current-time-string) "\n") + (insert "X-Gnus-Webmail: " (symbol-value 'user) + "@" (symbol-name webmail-type) "\n") (if id - (insert (format "Message-ID: <%s@yahoo.com>\n" id))) + (insert (format "X-Message-ID: <%s@yahoo.com>\n" id))) (unless (looking-at "$") (if (search-forward "\n\n" nil t) (forward-line -1) @@ -708,9 +723,12 @@ (defun webmail-netscape-open () (goto-char (point-min)) - (if (re-search-forward "login/hint\\?\\([^\"]+\\)\"" nil t) - (setq webmail-aux (match-string 1)) - (webmail-error "open@1"))) + (setq webmail-aux "") + (while (re-search-forward + "TYPE=hidden *NAME=\\([^ ]+\\) *VALUE=\"\\([^\"]+\\)" + nil t) + (setq webmail-aux (concat webmail-aux "&" (match-string 1) "=" + (match-string 2))))) (defun webmail-netaddress-open () (goto-char (point-min)) @@ -859,8 +877,10 @@ (goto-char (point-min)) ;; Some blank line to seperate mails. (insert "\n\nFrom nobody " (current-time-string) "\n") + (insert "X-Gnus-Webmail: " (symbol-value 'user) + "@" (symbol-name webmail-type) "\n") (if id - (insert (format "Message-ID: <%s@%s>\n" id webmail-address))) + (insert (format "X-Message-ID: <%s@%s>\n" id webmail-address))) (unless (looking-at "$") (if (search-forward "\n\n" nil t) (forward-line -1) @@ -985,8 +1005,10 @@ (goto-char (point-min)) ;; Some blank line to seperate mails. (insert "\n\nFrom nobody " (current-time-string) "\n") + (insert "X-Gnus-Webmail: " (symbol-value 'user) + "@" (symbol-name webmail-type) "\n") (if id - (insert (format "Message-ID: <%s@%s>\n" id webmail-address))) + (insert (format "X-Message-ID: <%s@%s>\n" id webmail-address))) (unless (looking-at "$") (if (search-forward "\n\n" nil t) (forward-line -1) @@ -1029,42 +1051,142 @@ (webmail-error "open@1"))) (defun webmail-my-deja-list () - (let (item id newp) + (let (item id newp base) + (goto-char (point-min)) + (when (re-search-forward "href=\"\\(\\([^\"]*\\)/mailnf\\.[^\"]*\\)\"" + nil t) + (let ((url (match-string 1))) + (setq base (match-string 2)) + (erase-buffer) + (nnweb-insert url))) (goto-char (point-min)) (when (re-search-forward - "(\\([0-9]+\\) message(s), \\([0-9]+\\) new, \\([0-9]+\\) k )" + "(\\([0-9]+\\) Message.?-[^>]*\\([0-9]+\\) New" nil t) - (message "Found %s mail(s), %s unread, total size %s K" - (match-string 1) (match-string 2) (match-string 3))) + (message "Found %s mail(s), %s unread" + (match-string 1) (match-string 2))) (goto-char (point-min)) (while (re-search-forward - "•   \\|\\(http:[^\"]+\\)/display_seemesg\\.femail\\?docid=\\([^&\"]+\\)" + "newmail\\.gif\\|href=\"[^\"]*\\(mailnf\\.[^\"]+act=view[^\"]+mid=\\([^\"&]+\\)[^\"]+\\)\"" nil t) (if (setq id (match-string 2)) - (when (or newp (not webmail-newmail-only)) - (push - (cons id (format "%s/gmm_multiplex.femail?docid=%s&femail_page_name=display_page&bool_next_on_disp_pg=true&bool_prev_on_disp_pg=false&display_all_headers=false&%%2Fgmm_save.femail=Download&femail_page_name=display_page&bool_next_on_disp_pg=true&bool_prev_on_disp_pg=false&display_all_headers=false" - (match-string 1) id)) - webmail-articles) - (setq webmail-aux (match-string 1)) + (when (and (or newp (not webmail-newmail-only)) + (not (assoc id webmail-articles))) + (push (cons id (setq webmail-aux + (concat base "/" (match-string 1)))) + webmail-articles) (setq newp nil)) (setq newp t))) (setq webmail-articles (nreverse webmail-articles)))) +(defun webmail-my-deja-article-part (base) + (let (p) + (cond + ((looking-at "[\t\040\r\n]* + mail-source-delete-incoming. (Kudos to Karl Kleinpaste + for pointing this out.) + +2000-10-18 Dave Love + + * gnus.texi (NoCeM): Update. + +2000-10-17 Simon Josefsson + + * gnus.texi (IMAP): Add. + +2000-10-05 Kai Gro,A_(Bjohann + + * gnus.texi (Windows Configuration): add examples; first example + suggested by Stein A. Str,Ax(Bmme . (The actual + Lisp code is also from him.) + +2000-10-07 Dave Love + + * doclicense.texi: New file. + +2000-10-07 16:50:14 ShengHuo ZHU + + * Makefile.in: Use install-info. + +2000-10-06 14:38:27 ShengHuo ZHU + + * message.texi (Message Headers): Add. + +2000-10-04 09:23:49 ShengHuo ZHU + + * gnus.texi (Article Hiding): Add. + (Using MIME): Add. + +2000-09-30 Simon Josefsson + + * gnus.texi (Agent and IMAP): Add. + (Splitting in IMAP): Fix. + +2000-09-29 Simon Josefsson + + * gnus.texi (Converting Kill Files): Fix URL. + (Posting Styles): Fix regexp. + (Mail Source Specifiers): Fix. + +2000-09-29 12:53:27 ShengHuo ZHU + + * Makefile.in: A workaround for @ifnottex. + +2000-09-29 12:36:13 ShengHuo ZHU + + * gnus.texi: Remove @c lines in the directory due to a bug in + makeinfo 1.68 (GNU texinfo 3.12). + +2000-09-22 Dave Love + + * message.texi, gnus.texi, emacs-mime.texi: Convert to GFDL. + +2000-09-20 John H. Palmieri + + * gnus.texi (Mail Source Customization): Document of + mail-source-incoming-file-prefix. + +2000-09-20 Simon Josefsson + + * gnus.texi (IMAP): Add examples. + +2000-09-19 Kai Gro,A_(Bjohann + + * gnus.texi (IMAP): Add pointer to description of ~/.authinfo file + format. + +2000-09-17 Felix Natter + + * gnusref.tex: New version. + + * refcard.tex: New version. + +2000-09-17 18:03:52 ShengHuo ZHU + + * gnus.texi (Article Hiding): Doc fix as suggested by Felix Natter + . + +2000-06-22 Michael Totschnig + + * gnus.texi (Agent Basics): Doc fix. + +2000-09-14 Jason R. Mastaler + + * gnus.texi (Mail Source Specifiers): Use $HOME. + +2000-08-14 Kai Grossjohann + + * gnus.texi (Mail Source Specifiers): Replace `@paragraph' with + `@subsubheading'. + +2000-08-14 Kai Grossjohann + + * gnus.texi (Mail Source Specifiers): Try to document the + interface to the functions called via (among others) the + `:function' keyword. + +2000-08-13 20:00:35 ShengHuo ZHU + + * gnus.texi (Topic Commands): Fix typo. + +2000-08-13 20:20:56 Lars Magne Ingebrigtsen + + * gnus.texi (Topic Commands): Addition. + +2000-08-11 Kai Grossjohann + + * gnus.texi (Expiring Mail): Extend documentation of variable + `nnmail-expiry-target' and of group parameter `expiry-target'. + Explain interaction between these. Add Lisp example for setting + `nnmail-expiry-target'. + +2000-08-04 Andreas Oeldenberger + + * message.texi (Forwarding): Fix. + +2000-07-15 Simon Josefsson + + * gnus.texi (nnimap-authinfo-file): + (gnus-invalid-group-regexp): Add. + (Mail Source Specifiers): Fix. + (IMAP): Fix. + (Agent Basics): Fix. + +2000-07-12 19:37:19 ShengHuo ZHU + + * gnus.texi (Article Washing): Add keystroke `t'. + +2000-07-12 15:49:34 ShengHuo ZHU + + * Makefile.in: Add EMACS. Test -x "$(MAKEINFO)" does not work. + Use sed instead of perl (suggested by Nick V. Pakoulin). + +2000-07-03 00:24:55 Lars Magne Ingebrigtsen + + * gnus.texi (Splitting Mail): Mention gnus-summary-respool-trace. + (Searching for Articles): Fix. + (Newest Features): Fix. + 2000-06-28 Simon Josefsson * gnus.texi (Splitting in IMAP): Update. @@ -19,6 +166,14 @@ * gnus.texi (Mail Source Specifiers): Update maildir. +2000-05-07 Pavel Janik + + * gnus.texi: direntry added. + + * message.texi: direntry added. + + * emacs-mime.texi: direntry added. + 2000-05-02 Pavel Janik * gnus.texi (MIME comands): Spelling fix. @@ -661,3 +816,7 @@ Thu Feb 25 00:28:49 1999 Shenghuo ZHU 1998-08-27 07:29:17 Lars Magne Ingebrigtsen * gnus.texi (Mail Folders): Addition. + +;; Local Variables: +;; coding: iso-2022-7bit +;; End: diff --git a/texi/Makefile.in b/texi/Makefile.in index 9f9633e..3d447b3 100644 --- a/texi/Makefile.in +++ b/texi/Makefile.in @@ -8,38 +8,51 @@ top_srcdir = @top_srcdir@ VPATH=$(srcdir) TEXI2DVI=texi2dvi TEXI2PDF=texi2pdf -EMACS=@EMACS@ MAKEINFO=@MAKEINFO@ -FLAGS=-batch -q -no-site-file +EMACS=@EMACS@ +EMACSINFO=$(EMACS) -batch -q -no-site-file INFOSWI=-l ./dgnushack.el -f dgnushack-texi-format XINFOSWI=-l ./dgnushack.el -f dgnushack-texi-add-suffix-and-format +EMACSINFOHACK=-eval '(while (re-search-forward "@\\(end \\)?ifnottex" nil t) (replace-match ""))' PDFLATEX=pdflatex LATEX=latex DVIPS=dvips -PERL=perl INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ SHELL = /bin/sh PAPERTYPE=a4 +INFO_DEPS=gnus message emacs-mime +INFO_DEPS_JA=gnus-ja message-ja +INFO_DEPS_INFO=gnus.info message.info emacs-mime.info +INFO_DEPS_JA_INFO=gnus-ja.info message-ja.info -all: gnus message emacs-mime -all-info: gnus.info message.info emacs-mime.info +all: $(INFO_DEPS) +all-info: $(INFO_DEPS_INFO) gnus.info: gnus.texi gnus-faq.texi message.info: message.texi emacs-mime.info: emacs-mime.texi -ja: gnus-ja message-ja -ja-info: gnus-ja.info message-ja.info +ja: $(INFO_DEPS_JA) +ja-info: $(INFO_DEPS_JA_INFO) gnus-ja.info: gnus-ja.texi gnus-faq-ja.texi message-ja.info: message-ja.texi most: texi2latex.elc latex latexps +%-ja: %-ja.texi + cd ../lisp && $(EMACSINFO) -eval '(find-file "$<")' \ + $(EMACSINFOHACK) $(INFOSWI) ../texi/$<; \ + +%-ja.info: %-ja.texi + cd ../lisp && $(EMACSINFO) -eval '(find-file "$<")' \ + $(EMACSINFOHACK) $(XINFOSWI) ../texi/$<; \ + %.info: %.texi if test $(MAKEINFO) = no; then \ - cd ../lisp && $(EMACS) $(FLAGS) $(XINFOSWI) ../texi/$<; \ + cd ../lisp && $(EMACSINFO) -eval '(find-file "$<")' \ + $(EMACSINFOHACK) $(XINFOSWI) ../texi/$<; \ else \ makeinfo -o $@ $<; \ fi @@ -47,24 +60,25 @@ most: texi2latex.elc latex latexps .SUFFIXES: .texi .dvi .ps .pdf .texi: - if test $(MAKEINFO) = no; then \ - cd ../lisp && $(EMACS) $(FLAGS) $(INFOSWI) ../texi/$<; \ + if test "x$(MAKEINFO)" != "xno" ; then \ + makeinfo -I $(srcdir) -o $* $<; \ else \ - makeinfo $<; \ + cd ../lisp && $(EMACSINFO) -eval '(find-file "$<")' \ + $(EMACSINFOHACK) $(INFOSWI) ../texi/$<; \ fi dvi: gnus.dvi message.dvi refcard.dvi emacs-mime.dvi pdf: gnus.pdf message.pdf refcard.pdf emacs-mime.pdf - + .texi.dvi : - $(PERL) -n -e 'print unless (/\@iflatex/ .. /\@end iflatex/)' $< > gnustmp.texi + sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi $(TEXI2DVI) gnustmp.texi cp gnustmp.dvi $*.dvi rm gnustmp.* .texi.pdf : - $(PERL) -n -e 'print unless (/\@iflatex/ .. /\@end iflatex/)' $< > gnustmp.texi + sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi $(TEXI2PDF) gnustmp.texi cp gnustmp.pdf $*.pdf rm gnustmp.* @@ -78,18 +92,18 @@ refcard.pdf: refcard.tex gnuslogo.refcard gnusref.tex $(PDFLATEX) refcard.tex clean: - rm -f gnus.*.bak *.ky *.cp *.fn *.cps *.kys *.log *.aux *.dvi *.vr \ - *.tp *.toc *.pg gnus.latexi *.aux *.[cgk]idx \ - gnus.ilg gnus.ind gnus.[cgk]ind gnus.idx \ - gnus.tmptexi *.tmplatexi gnus.tmplatexi1 texput.log *.orig *.rej \ - gnus.latexi*~* tmp/*.ps xface.tex picons.tex smiley.tex *.latexi \ - gnus.info* gnus-ja.info* message.info* message-ja.info* \ - emacs-mime.info - rm -f *.orig *.rej *.elc *~ gnus gnus-[0-9] gnus-[0-9][0-9] - rm -f message message-[0-9] - rm -f emacs-mime - rm -f gnus-ja gnus-ja-[0-9] gnus-ja-[0-9][0-9] - rm -f message-ja message-ja-[0-9] + rm -f *.orig *.rej *.elc *~ gnus-[0-9] gnus-[0-9][0-9] + rm -f message-[0-9] + rm -f $(INFO_DEPS) + rm -f gnus-ja-[0-9] gnus-ja-[0-9][0-9] + rm -f message-ja-[0-9] + rm -f $(INFO_DEPS_JA) + rm -f gnus.info-[0-9] gnus.info-[0-9][0-9] + rm -f message.info-[0-9] + rm -f $(INFO_DEPS_INFO) + rm -f gnus-ja.info-[0-9] gnus-ja.info-[0-9][0-9] + rm -f message-ja.info-[0-9] + rm -f $(INFO_DEPS_JA_INFO) makeinfo: makeinfo -o gnus gnus.texi @@ -152,16 +166,37 @@ veryclean: clean distclean: clean rm -f Makefile -install: +install: $(INFO_DEPS) $(SHELL) $(top_srcdir)/mkinstalldirs $(infodir) - @for file in gnus message emacs-mime gnus-ja message-ja; do \ - for ifile in `echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ - if test -f $$ifile; then \ - echo " $(INSTALL_DATA) $$ifile $(infodir)/$$ifile"; \ - $(INSTALL_DATA) $$ifile $(infodir)/$$ifile; \ + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + d=$(srcdir); \ + for ifile in `CDPATH=: && cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ + if test -f $$d/$$ifile; then \ + echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \ + $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile; \ else : ; fi; \ done; \ done + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + echo " install-info --info-dir=$(infodir) $(infodir)/$$file";\ + install-info --info-dir=$(infodir) $(infodir)/$$file || :;\ + done; \ + else : ; fi + +install-ja: $(INFO_DEPS_JA) + $(MAKE) INFO_DEPS='$(INFO_DEPS_JA)' EMACS="$(EMACS)" \ + infodir="$(infodir)" install + +install-info: $(INFO_DEPS_INFO) + $(MAKE) INFO_DEPS='$(INFO_DEPS_INFO)' EMACS="$(EMACS)" \ + infodir="$(infodir)" install + +install-ja-info: $(INFO_DEPS_JA_INFO) + $(MAKE) INFO_DEPS='$(INFO_DEPS_JA_INFO)' EMACS="$(EMACS)" \ + infodir="$(infodir)" install tmps: if [ ! -e tmp ]; then mkdir tmp; fi diff --git a/texi/doclicense.texi b/texi/doclicense.texi new file mode 100644 index 0000000..d580caf --- /dev/null +++ b/texi/doclicense.texi @@ -0,0 +1,368 @@ +@c -*-texinfo-*- +@node GNU Free Documentation License, Intro, Copying, Top + +@appendix GNU Free Documentation License +@center Version 1.1, March 2000 + +@display +Copyright (C) 2000 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display +@sp 1 +@enumerate 0 +@item +PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +written document ``free'' in the sense of freedom: to assure everyone +the effective freedom to copy and redistribute it, with or without +modifying it, either commercially or noncommercially. Secondarily, +this License preserves for the author and publisher a way to get +credit for their work, while not being considered responsible for +modifications made by others. + +This License is a kind of ``copyleft'', which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +@sp 1 +@item +APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work that contains a +notice placed by the copyright holder saying it can be distributed +under the terms of this License. The ``Document'', below, refers to any +such manual or work. Any member of the public is a licensee, and is +addressed as ``you''. + +A ``Modified Version'' of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A ``Secondary Section'' is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (For example, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The ``Invariant Sections'' are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. + +The ``Cover Texts'' are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. + +A ``Transparent'' copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, whose contents can be viewed and edited directly and +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup has been designed to thwart or discourage +subsequent modification by readers is not Transparent. A copy that is +not ``Transparent'' is called ``Opaque''. + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML designed for human modification. Opaque formats include +PostScript, PDF, proprietary formats that can be read and edited only +by proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML produced by some word processors for output +purposes only. + +The ``Title Page'' means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, ``Title Page'' means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. +@sp 1 +@item +VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. +@sp 1 +@item +COPYING IN QUANTITY + +If you publish printed copies of the Document numbering more than 100, +and the Document's license notice requires Cover Texts, you must enclose +the copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a publicly-accessible computer-network location containing a complete +Transparent copy of the Document, free of added material, which the +general network-using public has access to download anonymously at no +charge using public-standard network protocols. If you use the latter +option, you must take reasonably prudent steps, when you begin +distribution of Opaque copies in quantity, to ensure that this +Transparent copy will remain thus accessible at the stated location +until at least one year after the last time you distribute an Opaque +copy (directly or through your agents or retailers) of that edition to +the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. +@sp 1 +@item +MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission.@* +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has less than five).@* +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher.@* +D. Preserve all the copyright notices of the Document.@* +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices.@* +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below.@* +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice.@* +H. Include an unaltered copy of this License.@* +I. Preserve the section entitled ``History'', and its title, and add to + it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section entitled ``History'' in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence.@* +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the ``History'' section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission.@* +K. In any section entitled ``Acknowledgements'' or ``Dedications'', + preserve the section's title, and preserve in the section all the + substance and tone of each of the contributor acknowledgements + and/or dedications given therein.@* +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles.@* +M. Delete any section entitled ``Endorsements''. Such a section + may not be included in the Modified Version.@* +N. Do not retitle any existing section as ``Endorsements'' + or to conflict in title with any Invariant Section.@* +@sp 1 +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section entitled ``Endorsements'', provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. +@sp 1 +@item +COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections entitled ``History'' +in the various original documents, forming one section entitled +``History''; likewise combine any sections entitled ``Acknowledgements'', +and any sections entitled ``Dedications''. You must delete all sections +entitled ``Endorsements.'' +@sp 1 +@item +COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. +@sp 1 +@item +AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, does not as a whole count as a Modified Version +of the Document, provided no compilation copyright is claimed for the +compilation. Such a compilation is called an ``aggregate'', and this +License does not apply to the other self-contained works thus compiled +with the Document, on account of their being thus compiled, if they +are not themselves derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one quarter +of the entire aggregate, the Document's Cover Texts may be placed on +covers that surround only the Document within the aggregate. +Otherwise they must appear on covers around the whole aggregate. +@sp 1 +@item +TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License provided that you also include the +original English version of this License. In case of a disagreement +between the translation and the original English version of this +License, the original English version will prevail. +@sp 1 +@item +TERMINATION + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. +@sp 1 +@item +FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + +@end enumerate + +@unnumberedsec ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +@smallexample +@group + + Copyright (C) @var{year} @var{your name}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.1 + or any later version published by the Free Software Foundation; + with the Invariant Sections being @var{list their titles}, with the + Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. + A copy of the license is included in the section entitled ``GNU + Free Documentation License''. +@end group +@end smallexample +If you have no Invariant Sections, write ``with no Invariant Sections'' +instead of saying which ones are invariant. If you have no +Front-Cover Texts, write ``no Front-Cover Texts'' instead of +``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/texi/emacs-mime.texi b/texi/emacs-mime.texi index efda9aa..c8a2f46 100644 --- a/texi/emacs-mime.texi +++ b/texi/emacs-mime.texi @@ -5,39 +5,38 @@ @synindex fn cp @synindex vr cp @synindex pg cp -@c @direntry -@c * Emacs MIME: (emacs-mime). The MIME de/composition library. -@c @end direntry +@dircategory Editors +@direntry +* Emacs MIME: (emacs-mime). The MIME de/composition library. +@end direntry @iftex @finalout @end iftex @setchapternewpage odd -@ifinfo +@ifnottex This file documents the Emacs MIME interface functionality. -Copyright (C) 1998,99 Free Software Foundation, Inc. +Copyright (C) 1998,99,2000 Free Software Foundation, Inc. -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. -@ignore -Permission is granted to process this file through Tex and print the -results, provided the printed document carries copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' -@end ignore -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. -@end ifinfo +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. +@end ifnottex @tex @@ -48,20 +47,24 @@ into another language, under the above conditions for modified versions. @page @vskip 0pt plus 1filll -Copyright @copyright{} 1998,99 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. - +Copyright @copyright{} 1998,99,2000 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with the +Invariant Sections being none, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. + +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' + +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. @end titlepage @page @@ -703,8 +706,8 @@ image/*; gimp -8 %s audio/wav; wavplayer %s @end example -This says that all image files should be displayed with @samp{xv}, and -that realaudio files should be played by @samp{rvplayer}. +This says that all image files should be displayed with @code{gimp}, and +that realaudio files should be played by @code{rvplayer}. The @code{mailcap} library parses this file, and provides functions for matching types. diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index 96a5987..54a440d 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -5,9 +5,10 @@ @synindex fn cp @synindex vr cp @synindex pg cp -@c @direntry -@c * Gnus-ja: (gnus-ja). The news reader gnus ($BF|K\8lHG(B). -@c @end direntry +@dircategory Editors +@direntry +* Gnus-ja: (gnus-ja). The newsreader gnus (Japanese). +@end direntry @iftex @finalout @end iftex @@ -271,77 +272,89 @@ \thispagestyle{empty} -Copyright \copyright{} 1995,96,97,98,99 Free Software Foundation, Inc. +Copyright \copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc. -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. -$BCx:n8"I=<($H$3$N5v2DJ8$,$9$Y$F$NJ#@=$KB8:_$9$k8B$j!"$3$N@bL@=q$N$^$C$?$/(B -$BF10l$NJ#@=$r:n$j!"G[I[$9$k$3$H$r5v2D$9$k!#(B +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. +$B$3$NJ8=q$r!"%U%j!<%=%U%H%&%'%":bCDH/9T$N(B GNU $B%U%j!r7o$N2<$GJ#@=!"G[I[!"$"$k$$$OJQ99$9(B +$B$k$3$H$r5v2D$7$^$9!#JQ99IT2DItJ,$O;XDj$7$^$;$s!#!V(BA GNU Manual$B!W$OI=I=;f(B +$B%F%-%9%H!"0J2<$N(B (a) $B$ON"I=;f%F%-%9%H$G$9!#$3$NMxMQ5vBz7@Ls=q$NJ#O$K4^$^$l$F$$$^(B +$B$9!#(B -$BF10lJ#@=$N>r7o$N2<$G!"$=$l$K$h$C$FF@$i$l$?7k2L$r$3$N5v2DJ8$NI=<($HF10l$N(B -$B>r7o$N$b$H$GG[I[$9$k8B$j!"$3$N@bL@=q$N=$@5HG$NJ#@=$r$7!"G[I[$9$k$3$H$r5v(B -$B2D$9$k!#(B +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. +(a) FSF $B$NN"I=;f%F%-%9%H(B:$B!V$"$J$?$K$O$3$N(B GNU Manual $B$r(B GNU $B%=%U%H%&%'%"(B +$B$N$h$&$KJ#@=$7$?$jJQ99$9$k<+M3$,$"$j$^$9!#J#@=$O%U%j!<%=%U%H%&%'%":bCD$K(B +$B$h$C$F=PHG$5$l$^$7$?!#(B($B%U%j!<%=%U%H%&%'%":bCD$O(B) GNU $B$N3+H/$N$?$a$KI,MW(B +$B$J;q6b$r=8$a$F$$$^$9!#!W(B -$B>e5-$N=$@5HG$K4X$9$k>r7o$N2<$G!"$3$N@bL@=q$NK]Lu$NJ#@=$r:n$j!"G[I[$9$k$3(B -$B$H$r5v2D$9$k!#(B +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. +$B$3$NJ8=q$O!V(BGNU $B%U%j!H$5$l$^$;$s(B)$B!#(B - -@end ignore -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. +Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. + +$B$3$NJ8=q$r!"%U%j!<%=%U%H%&%'%":bCDH/9T$N(B GNU $B%U%j!r7o$N2<$GJ#@=!"G[I[!"$"$k$$$OJQ99$9(B +$B$k$3$H$r5v2D$7$^$9!#JQ99IT2DItJ,$O;XDj$7$^$;$s!#!V(BA GNU Manual$B!W$OI=I=;f(B +$B%F%-%9%H!"0J2<$N(B (a) $B$ON"I=;f%F%-%9%H$G$9!#$3$NMxMQ5vBz7@Ls=q$NJ#O$K4^$^$l$F$$$^(B +$B$9!#(B -$BF10lJ#@=$N>r7o$N2<$G!"$=$l$K$h$C$FF@$i$l$?7k2L$b$3$N5v2DJ8$NI=<($HF10l$N(B -$B>r7o$N$b$H$GG[I[$9$k8B$j!"$3$N@bL@=q$N=$@5HG$NJ#@=$r$7!"G[I[$9$k$3$H$r5v(B -$B2D$9$k!#(B +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. +(a) FSF $B$NN"I=;f%F%-%9%H(B:$B!V$"$J$?$K$O$3$N(B GNU Manual $B$r(B GNU $B%=%U%H%&%'%"(B +$B$N$h$&$KJ#@=$7$?$jJQ99$9$k<+M3$,$"$j$^$9!#J#@=$O%U%j!<%=%U%H%&%'%":bCD$K(B +$B$h$C$F=PHG$5$l$^$7$?!#(B($B%U%j!<%=%U%H%&%'%":bCD$O(B) GNU $B$N3+H/$N$?$a$KI,MW(B +$B$J;q6b$r=8$a$F$$$^$9!#!W(B -$B>e5-$N=$@5HG$K4X$9$k>r7o$N2<$G!"$3$N@bL@=q$NK]Lu$NJ#@=$r:n$j!"G[I[$9$k$3(B -$B$H$r5v2D$9$k!#(B +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. -@end ifinfo +$B$3$NJ8=q$O!V(BGNU $B%U%j!r7o$N2<$GJ#@=!"G[I[!"$"$k$$$OJQ99$9(B +$B$k$3$H$r5v2D$7$^$9!#JQ99IT2DItJ,$O;XDj$7$^$;$s!#!V(BA GNU Manual$B!W$OI=I=;f(B +$B%F%-%9%H!"0J2<$N(B (a) $B$ON"I=;f%F%-%9%H$G$9!#$3$NMxMQ5vBz7@Ls=q$NJ#O$K4^$^$l$F$$$^(B +$B$9!#(B -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' -$BF10lJ#@=$N>r7o$N2<$G!"$=$l$K$h$C$FF@$i$l$?7k2L$r$3$N5v2DJ8$NI=<($HF10l$N(B -$B>r7o$N$b$H$GG[I[$9$k8B$j!"$3$N@bL@=q$N=$@5HG$NJ#@=$r$7!"G[I[$9$k$3$H$r5v(B -$B2D$9$k!#(B +(a) FSF $B$NN"I=;f%F%-%9%H(B:$B!V$"$J$?$K$O$3$N(B GNU Manual $B$r(B GNU $B%=%U%H%&%'%"(B +$B$N$h$&$KJ#@=$7$?$jJQ99$9$k<+M3$,$"$j$^$9!#J#@=$O%U%j!<%=%U%H%&%'%":bCD$K(B +$B$h$C$F=PHG$5$l$^$7$?!#(B($B%U%j!<%=%U%H%&%'%":bCD$O(B) GNU $B$N3+H/$N$?$a$KI,MW(B +$B$J;q6b$r=8$a$F$$$^$9!#!W(B -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. -$B>e5-$N=$@5HG$K4X$9$k>r7o$N2<$G!"$3$N@bL@=q$NK]Lu$NJ#@=$r:n$j!"G[I[$9$k$3(B -$B$H$r5v2D$9$k!#(B +$B$3$NJ8=q$O!V(BGNU $B%U%j!l$G$9!#(BGnus $B$O$9$Y$F$r%K%e!<%9%0(B $B%k!<%W$N$h$&$KI=<($7$^$9!#(BGnus $B$G%a!<%k$rFI$_!"%G%#%l%/%H%j!<$r%V%i%&%:(B $B$7!"(B@code{ftp} $B$r$9$k$3$H$,$G$-$^$9!#$"$"!"$=$l$K!"%K%e!<%9$rFI$`$3$H$5(B -$B$($G$-$^$9!*(B +$B$($G$-$^$9(B! Emacs $B$,J8>O$rJT=8$9$k?M$KNO$rM?$($k$h$&$K!"(Bgnus $B$O%K%e!<%9$rFI$`?M$KNO(B $B$rM?$($h$&$H$7$F$$$^$9!#(BGnus $B$OMxMQ$`F0:n$r$9$k$h$&$K(B gnus $B$r3HD%$9$k$3$H$r>)Ne$7$F$$$^$9!#(B -$B%W%m%0%i%`$,?M$rA`:n$9$k$Y$-$G$O$"$j$^$;$s!#?M$,%W%m%0%i%`$r;H$&!J$b$7$/(B -$B$OMtMQ$9$k!K$3$H$K$h$C$F!"$d$j$?$$$3$H$r$G$-$k$h$&$K$J$C$F$$$k$Y$-$J$N$G(B +$B%W%m%0%i%`$,?M$rA`:n$9$k$Y$-$G$O$"$j$^$;$s!#?M$,%W%m%0%i%`$r;H$&(B ($B$b$7$/(B +$B$OMtMQ$9$k(B) $B$3$H$K$h$C$F!"$d$j$?$$$3$H$r$G$-$k$h$&$K$J$C$F$$$k$Y$-$J$N$G(B $B$9!#(B @end iftex @menu -* Starting Up:: $B%K%e!<%9$r8+$D$1$k$N$K$O6lO+$,H<$&$+$bCN$l$J$$(B -* The Group Buffer:: $B%0%k!<%W$rA*Br$7!"9XFI$7!":o=|$9$k(B -* The Summary Buffer:: $B5-;v$rFI$_!"J]B8$7!"Ej9F$9$k(B -* The Article Buffer:: $B5-;v$rI=<($7!"07$&(B -* Composing Messages:: $B%a!<%k$H%K%e!<%9$rAw$k$?$a$N>pJs(B -* Select Methods:: Gnus $B$OA4$F$N%a%C%;!<%8$r$$$m$$$m$JA*BrJ}K!$GFI$`(B -* Scoring:: $B5-;v$KCM$r$D$1$k(B -* Various:: $B0lHLE*$J@_Dj(B -* The End:: $B$5$i$P!"$=$7$F$5$h$&$J$i(B -* Appendices:: $BMQ8l!"(BEmacs $BF~Lg!"(BFAQ$B!"Nr;K!"FbIt9=B$(B -* Index:: $BJQ?t!"4X?t!"35G0$N:w0z(B -* Key Index:: $B%-!<:w0z(B +* Starting Up:: $B%K%e!<%9$r8+$D$1$k$N$K$O6lO+$,H<$&$+$bCN$l$J$$(B +* The Group Buffer:: $B%0%k!<%W$rA*Br$7!"9XFI$7!":o=|$9$k(B +* The Summary Buffer:: $B5-;v$rFI$_!"J]B8$7!"Ej9F$9$k(B +* The Article Buffer:: $B5-;v$rI=<($7!"07$&(B +* Composing Messages:: $B%a!<%k$H%K%e!<%9$rAw$k$?$a$N>pJs(B +* Select Methods:: Gnus $B$OA4$F$N%a%C%;!<%8$r$$$m$$$m$JA*BrJ}K!$GFI$`(B +* Scoring:: $B5-;v$KCM$r$D$1$k(B +* Various:: $B0lHLE*$J@_Dj(B +* The End:: $B$5$i$P!"$=$7$F$5$h$&$J$i(B +* Appendices:: $BMQ8l!"(BEmacs $BF~Lg!"(BFAQ$B!"Nr;K!"FbIt9=B$(B +* Index:: $BJQ?t!"4X?t!"35G0$N:w0z(B +* Key Index:: $B%-!<:w0z(B @detailmenu --- The Detailed Node Listing --- Starting Gnus -* Finding the News:: $B%K%e!<%9$re$N(B gnus $B$r:nF0$5$;$k$3$H$,$G$-$k(B -* Fetching a Group:: $B%0%k!<%W$rFI$`$?$a$@$1$K(B gnus $B$r5/F0$9$k(B -* New Groups:: Gnus $B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+(B -* Startup Files:: $B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k(B--@file{.newsrc} -* Auto Save:: $B%/%i%C%7%e$+$i$N2sI|(B -* The Active File:: $BCY$$2s@~$+$i$N%U%!%$%k$Ne$N(B gnus $B$r:nF0$5$;$k$3$H$,$G$-$k(B +* Fetching a Group:: $B%0%k!<%W$rFI$`$?$a$@$1$K(B gnus $B$r5/F0$9$k(B +* New Groups:: Gnus $B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+(B +* Startup Files:: $B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k(B--@file{.newsrc} +* Auto Save:: $B%/%i%C%7%e$+$i$N2sI|(B +* The Active File:: $BCY$$2s@~$+$i$N%U%!%$%k$NpJs$HJQ99$NJ}K!!#(B -* Group Maneuvering:: $B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I!#(B -* Selecting a Group:: $BpJs$rJQ99$9$k!#(B -* Subscription Commands:: $B9XFI!"9XFICf;_!">C5n!#(B -* Group Levels:: $B%l%Y%k!)$=$l$C$F2?!)(B -* Group Score:: $B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!!#(B -* Marking Groups:: $B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-$^$9!#(B -* Foreign Groups:: $B%0%k!<%W$N:n@.$H=$@5!#(B -* Group Parameters:: $B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l$^$9!#(B -* Listing Groups:: Gnus $B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<($G$-$^$9!#(B -* Sorting Groups:: $B%0%k!<%W$N=gHV$NG[CVBX$(!#(B -* Group Maintenance:: $B$-$l$$$J(B @file{.newsrc} $B$NJ]$AJ}!#(B -* Browse Foreign Server:: $B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_$h$&!#(B -* Exiting Gnus:: $B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&!#(B -* Group Topics:: $B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d$9$k!#(B -* Misc Group Stuff:: $BB>$K$G$-$k$3$H!#(B +* Group Buffer Format:: $BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!(B +* Group Maneuvering:: $B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I(B +* Selecting a Group:: $BpJs$rJQ99$9$k(B +* Subscription Commands:: $B9XFI!"9XFICf;_!">C5n(B +* Group Levels:: $B%l%Y%k(B? $B$=$l$C$F2?(B? +* Group Score:: $B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!(B +* Marking Groups:: $B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-$^$9(B +* Foreign Groups:: $B%0%k!<%W$N:n@.$H=$@5(B +* Group Parameters:: $B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l$^$9(B +* Listing Groups:: Gnus $B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<($G$-$^$9(B +* Sorting Groups:: $B%0%k!<%W$N=gHV$NG[CVBX$((B +* Group Maintenance:: $B$-$l$$$J(B @file{.newsrc} $B$NJ]$AJ}(B +* Browse Foreign Server:: $B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_$h$&(B +* Exiting Gnus:: $B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&(B +* Group Topics:: $B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d$9$k(B +* Misc Group Stuff:: $BB>$K$G$-$k$3$H(B Group Buffer Format -* Group Line Specification:: $B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k!#(B -* Group Modeline Specification:: $B%0%k!<%W%P%C%U%!$N%b!<%I9T!#(B -* Group Highlighting:: $B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k!#(B +* Group Line Specification:: $B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k(B +* Group Modeline Specification:: $B%0%k!<%W%P%C%U%!$N%b!<%I9T(B +* Group Highlighting:: $B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k(B Group Topics -* Topic Variables:: Lisp $B$G%H%T%C%/$r%+%9%?%^%$%:$9$kJ}K!!#(B -* Topic Commands:: $BD64JC1BPOC7?L?Na!#(B -* Topic Sorting:: $B%H%T%C%/KhJL!9$KJB$YBX$($k!#(B -* Topic Topology:: $BA4@$3&$NCO?^!#(B -* Topic Parameters:: $B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k%Q%i%a!<%?!#(B +* Topic Variables:: Lisp $B$G%H%T%C%/$r%+%9%?%^%$%:$9$kJ}K!(B +* Topic Commands:: $BD64JC1BPOC7?L?Na(B +* Topic Sorting:: $B%H%T%C%/KhJL!9$KJB$YBX$($k(B +* Topic Topology:: $BA4@$3&$NCO?^(B +* Topic Parameters:: $B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k%Q%i%a!<%?(B Misc Group Stuff -* Scanning New Messages:: Gnus $B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&$+$rJ9$/!#(B -* Group Information:: $B%0%k!<%W$H(B gnus $B$K4X$9$k>pJs$H%X%k%W!#(B -* Group Timestamp:: Gnus $B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k!#(B -* File Commands:: Gnus $B$N%U%!%$%k$NFI$_=q$-!#(B +* Scanning New Messages:: Gnus $B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&$+$rJ9$/(B +* Group Information:: $B%0%k!<%W$H(B gnus $B$K4X$9$k>pJs$H%X%k%W(B +* Group Timestamp:: Gnus $B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k(B +* File Commands:: Gnus $B$N%U%!%$%k$NFI$_=q$-(B The Summary Buffer -* Summary Buffer Format:: $B35N,%P%C%U%!$N304Q$r7hDj$9$k!#(B -* Summary Maneuvering:: $B35N,%P%C%U%!$rF0$-2s$k!#(B -* Choosing Articles:: $B5-;v$rFI$`!#(B -* Paging the Article:: $BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k!#(B -* Reply Followup and Post:: $B5-;v$rEj9F$9$k!#(B -* Marking Articles:: $B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1$k!#(B -* Limiting:: $B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k!#(B -* Threading:: $B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+!#(B -* Sorting:: $B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+!#(B -* Asynchronous Fetching:: Gnus $B$O5-;v$r@h$KC5n$7$J$/$5$;$k!#(B -* Article Backlog:: $B4{$KFI$s$@5-;v$r;D$7$F$*$/!#(B -* Saving Articles:: $B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!!#(B -* Decoding Articles:: Gnus $B$O0lO"$N(B (uu)encode $B$5$l$?5-;v$r07$($k!#(B -* Article Treatment:: $B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G$-$k!#(B -@c * MIME Commands:: Doing MIMEy things with the articles. -@c * Charsets:: Character set issues. -* Article Commands:: $B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k!#(B -* Summary Sorting:: $B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k!#(B -* Finding the Parent:: $B;R5-;v$K1g=u$,L5$$$C$F(B? $B?F5-;v$r$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N!#(B -* Exiting the Summary Buffer:: $B%0%k!<%W%P%C%U%!$KLa$k!#(B -* Crosspost Handling:: $B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l$k$+!#(B -* Duplicate Suppression:: $B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBXC5n$7$J$/$5$;$k(B +* Article Backlog:: $B4{$KFI$s$@5-;v$r;D$7$F$*$/(B +* Saving Articles:: $B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!(B +* Decoding Articles:: Gnus $B$O0lO"$N(B (uu)encode $B$5$l$?5-;v$r07$($k(B +* Article Treatment:: $B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G$-$k(B +@c * MIME Commands:: Doing MIMEy things with the articles. +@c * Charsets:: Character set issues. +* Article Commands:: $B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k(B +* Summary Sorting:: $B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k(B +* Finding the Parent:: $B;R5-;v$K1g=u$,L5$$$C$F(B? $B?F5-;v$r$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N(B +* Exiting the Summary Buffer:: $B%0%k!<%W%P%C%U%!$KLa$k(B +* Crosspost Handling:: $B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l$k$+(B +* Duplicate Suppression:: $B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBXA0$rI=<($7$J$$J}K!!#(B -* Summary Buffer Mode Line:: $B%b!<%I9T$N8+$(J}$r7h$a$i$l$k!#(B -* Summary Highlighting:: $B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k!#(B +* Summary Buffer Lines:: $B35N,%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$G$-$k(B +* To From Newsgroups:: $B<+J,<+?H$NL>A0$rI=<($7$J$$J}K!(B +* Summary Buffer Mode Line:: $B%b!<%I9T$N8+$(J}$r7h$a$i$l$k(B +* Summary Highlighting:: $B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k(B Choosing Articles -* Choosing Commands:: $B5-;v$rA*Br$9$k$?$a$NL?Na!#(B -* Choosing Variables:: $B$3$l$i$NL?Na$K1F6A$r5Z$\$9JQ?t!#(B +* Choosing Commands:: $B5-;v$rA*Br$9$k$?$a$NL?Na(B +* Choosing Variables:: $B$3$l$i$NL?Na$K1F6A$r5Z$\$9JQ?t(B Reply, Followup and Post -* Summary Mail Commands:: $B%a!<%k$rAw$k!#(B -* Summary Post Commands:: $B%K%e!<%9$rAw$k!#(B -* Summary Message Commands:: $BB>$N%a%C%;!<%84XO"$NL?Na!#(B -* Canceling and Superseding:: $B!X$"$!!"$"$s$J$U$&$K8@$&$s$8$c$J$+$C$?!#!Y(B +* Summary Mail Commands:: $B%a!<%k$rAw$k(B +* Summary Post Commands:: $B%K%e!<%9$rAw$k(B +* Summary Message Commands:: $BB>$N%a%C%;!<%84XO"$NL?Na(B +* Canceling and Superseding:: $B!X$"$!!"$"$s$J$U$&$K8@$&$s$8$c$J$+$C$?!Y(B Marking Articles -* Unread Articles:: $BL$FI5-;v$X$N0u(B -* Read Articles:: $B4{FI5-;v$X$N0u(B -* Other Marks:: $B9XFIEY$K1F6A$7$J$$0u(B - -Marking Articles - -* Setting Marks:: $B0u$NIU$1J}$H>C$7J}(B -* Generic Mark Commands:: $B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+!#(B -* Setting Process Marks:: $B8e$NC$7J}(B +* Generic Mark Commands:: $B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+(B +* Setting Process Marks:: $B8e$N$NI|9f2=$NJQ?t!#(B -* Uuencoding and Posting:: uuencode $B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t!#(B +* Rule Variables:: $B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$kJQ?t(B +* Other Decode Variables:: $BB>$NI|9f2=$NJQ?t(B +* Uuencoding and Posting:: uuencode $B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t(B Article Treatment -* Article Highlighting:: $B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?$$!#(B -* Article Fontisizing:: $B6/D4$5$l$?J8$rAGE($K$9$k!#(B -* Article Hiding:: $BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&!#(B -* Article Washing:: $B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?4X?t!#(B -* Article Buttons:: URL $B$d(B Message-ID $B$d(B $B%"%I%l%9$J$I$r%/%j%C%/$9$k!#(B -* Article Date:: $B$0$:$0$:8@$&$J!"@$3&;~$@!*(B -* Article Signature:: $B=pL>$C$F2?!)(B -* Article Miscellanina:: $BB>$N$$$m$$$m$J$b$N!#(B +* Article Highlighting:: $B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?$$(B +* Article Fontisizing:: $B6/D4$5$l$?J8$rAGE($K$9$k(B +* Article Hiding:: $BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&(B +* Article Washing:: $B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?4X?t(B +* Article Buttons:: URL $B$d(B Message-ID $B$d(B $B%"%I%l%9$J$I$r%/%j%C%/$9$k(B +* Article Date:: $B$0$:$0$:8@$&$J!"@$3&;~$@(B! +* Article Signature:: $B=pL>$C$F2?(B? +* Article Miscellanina:: $BB>$N$$$m$$$m$J$b$N(B Alternative Approaches -* Pick and Read:: $B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`(B -* Binary Groups:: $B$9$Y$F$N5-;v$r<+F0(B-$BI|9f2=$9$k(B +* Pick and Read:: $B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`(B +* Binary Groups:: $B$9$Y$F$N5-;v$r<+F0(B-$BI|9f2=$9$k(B Various Summary Stuff -* Summary Group Information:: $B>pJs;X8~$NL?Na!#(B -* Searching for Articles:: $BJ#?t5-;vL?Na!#(B -* Summary Generation Commands:: $B35N,%P%C%U%!$N!J:F!K:n@.!#(B -* Really Various Summary Commands:: $B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na!#(B +* Summary Group Information:: $B>pJs;X8~$NL?Na(B +* Searching for Articles:: $BJ#?t5-;vL?Na(B +* Summary Generation Commands:: $B35N,%P%C%U%!$N(B ($B:F(B) $B:n@.(B +* Really Various Summary Commands:: $B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na(B The Article Buffer -* Hiding Headers:: $B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k!#(B -* Using MIME:: @sc{mime} $B5-;v$H$7$F8+$;$k!#(B -* Customizing Articles:: $B5-;v$N8+1I$($r;EN)$F$k!#(B -* Article Keymap:: $B5-;v%P%C%U%!$G;H$($k%-!!#(B +* Hiding Headers:: $B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k(B +* Using MIME:: @sc{mime} $B5-;v$H$7$F8+$;$k(B +* Customizing Articles:: $B5-;v$N8+1I$($r;EN)$F$k(B +* Article Keymap:: $B5-;v%P%C%U%!$G;H$($k%-!(B Composing Messages -* Mail:: $B%a!<%k$HJVEz!#(B -* Post:: $BEj9F$H%U%)%m!<%"%C%W!#(B -* Posting Server:: $B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+!)(B -* Mail and Post:: $BF1;~$K%a!<%k$r=P$7JVEz$9$k!#(B -* Archived Messages:: $BAw$C$?%a%C%;!<%8$r(B gnus $B$,Cy$a$F$*$/$H$3$m!#(B -* Posting Styles:: $B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}K!!#(B -* Drafts:: $B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8!#(B -* Rejected Articles:: $B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K2?$,5/$3$k!)(B +* Mail:: $B%a!<%k$HJVEz(B +* Post:: $BEj9F$H%U%)%m!<%"%C%W(B +* Posting Server:: $B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+(B? +* Mail and Post:: $BF1;~$K%a!<%k$r=P$7JVEz$9$k(B +* Archived Messages:: $BAw$C$?%a%C%;!<%8$r(B gnus $B$,Cy$a$F$*$/$H$3$m(B +* Posting Styles:: $B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}K!(B +* Drafts:: $B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8(B +* Rejected Articles:: $B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K2?$,5/$3$k(B? +@c * Using GPG:: How to use GPG and MML to sign and encrypt messages Select Methods -* The Server Buffer:: $B;ve$N%5!<%P!<$r:n$C$FJT=8$9$k!#(B -* Getting News:: USENET $B%K%e!<%9$r(B gnus $B$GFI$`!#(B -* Getting Mail:: $B8D?ME*$J%a!<%k$r(B gnus $B$GFI$`!#(B -* Browsing the Web:: $B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$re$N%5!<%P!<$r:n$C$FJT=8$9$k(B +* Getting News:: USENET $B%K%e!<%9$r(B gnus $B$GFI$`(B +* Getting Mail:: $B8D?ME*$J%a!<%k$r(B gnus $B$GFI$`(B +* Browsing the Web:: $B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k!#(B -* Unavailable Servers:: $B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn$A$F$$$k$+$b$7$l$J$$!#(B +* Server Buffer Format:: $B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k(B +* Server Commands:: $B%5!<%P!<$rA`$kL?Na(B +* Example Methods:: $B%5!<%P!<;XDj$NNc(B +* Creating a Virtual Server:: $B%;%C%7%g%s$NNc(B +* Server Variables:: $B$I$NJQ?t$r@_Dj$9$k$+(B +* Servers and Methods:: $B%5!<%P!$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k(B +* Unavailable Servers:: $B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn$A(B + $B$F$$$k$+$b$7$l$J$$(B Getting News -* NNTP:: @sc{nntp} $B%5!<%P!<$+$i%K%e!<%9$rFI$`!#(B -* News Spool:: $B%m!<%+%k%9%W!<%k$+$i%K%e!<%9$rFI$`!#(B +* NNTP:: @sc{nntp} $B%5!<%P!<$+$i%K%e!<%9$rFI$`(B +* News Spool:: $B%m!<%+%k%9%W!<%k$+$i%K%e!<%9$rFI$`(B Getting Mail -* Mail in a Newsreader:: $B%K%e!<%9%j!<%@$G%a!<%k(B ($BBg;v$JA0CV$-(B)$B!#(B -* Getting Started Reading Mail:: $B4JC1$JNAM}K\$N$h$&$JNc!#(B -* Splitting Mail:: $B$I$N$h$&$K%a!<%k%0%k!<%W$r:n@.$9$k$+!#(B -* Mail Sources:: Gnus $B$K$I$3$+$i%a!<%k$r$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(%s%I$r;H$&!#(B -* Choosing a Mail Backend:: Gnus $B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k!#(B +* Expiring Mail:: $BM_$7$/$J$$%a!<%k$r$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%((B + $B%s%I$r;H$&(B +* Choosing a Mail Backend:: Gnus $B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k(B Mail Sources -* Mail Source Specifiers:: $B%a!<%k$N85$,$I$3$+$r;XDj$9$k!#(B -* Mail Source Customization:: $B@$$NCf$K1F6A$9$k$$$/$D$+$NJQ?t!#(B -* Fetching Mail:: $B%a!<%k%=!<%9;X<(;R$r;HMQ$9$k!#(B +* Mail Source Specifiers:: $B%a!<%k$N85$,$I$3$+$r;XDj$9$k(B +* Mail Source Customization:: $B@$$NCf$K1F6A$9$k$$$/$D$+$NJQ?t(B +* Fetching Mail:: $B%a!<%k%=!<%9;X<(;R$r;HMQ$9$k(B Choosing a Mail Backend -* Unix Mail Box:: ($B$H$F$b(B) $BI8=`E*$J(B Un*x mbox $B$r;H$&!#(B -* Rmail Babyl:: Emacs $B$N%W%m%0%i%`$O(B rmail $B$N(B babyl format $B$r;H$&!#(B -* Mail Spool:: $B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k!)(B -* MH Spool:: mhspool $B$N$h$&$J%P%C%/%(%s%I!#(B -* Mail Folders:: $B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k$r;}$D!#(B -* Comparing Mail Backends:: $BF@<:$N?<$$F6;!!#(B +* Unix Mail Box:: ($B$H$F$b(B) $BI8=`E*$J(B Un*x mbox $B$r;H$&(B +* Rmail Babyl:: Emacs $B$N%W%m%0%i%`$O(B rmail $B$N(B babyl format $B$r;H$&(B +* Mail Spool:: $B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k(B? +* MH Spool:: mhspool $B$N$h$&$J%P%C%/%(%s%I(B +* Mail Folders:: $B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k$r;}$D(B +* Comparing Mail Backends:: $BF@<:$N?<$$F6;!(B Browsing the Web -* Web Searches:: $BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k!#(B -* Slashdot:: Slashdot $B$N%3%a%s%H$rFI$`!#(B -* Ultimate:: Ultimate Bulletin Board $B%7%9%F%`(B. -* Web Archive:: $B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`!#(B -* Web Newspaper:: $B%&%'%V$KJ]4I$5$l$??7J9$rFI$`!#(B -* Customizing w3:: Gnus $B$+$i(B Emacs/w3 $B$rA`:n$9$k!#(B +* Web Searches:: $BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k(B +* Slashdot:: Slashdot $B$N%3%a%s%H$rFI$`(B +* Ultimate:: Ultimate Bulletin Board $B%7%9%F%`(B +* Web Archive:: $B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`(B +* Web Newspaper:: $B%&%'%V$KJ]4I$5$l$??7J9$rFI$`(B +* Customizing w3:: Gnus $B$+$i(B Emacs/w3 $B$rA`:n$9$k(B Other Sources -* Directory Groups:: $B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$KFI$`!#(B +* Directory Groups:: $B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$KFI$`(B * Anything Groups:: Dired? $BC/$,(B dired $B$J$s$F;H$&$N(B? -* Document Groups:: $B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG!#(B -* SOUP:: @sc{soup} $B%Q%1%C%H$r(B ``$B%*%U%i%$%s(B''$B$GFI$`!#(B -* Mail-To-News Gateways:: $B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7$F5-;v$rEj9F$9$k!#(B -* IMAP:: Gnus $B$r(B IMAP $B$N%/%i%$%"%s%H$H$7$F;H$&!#(B +* Document Groups:: $B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG(B +* SOUP:: @sc{soup} $B%Q%1%C%H$r(B ``$B%*%U%i%$%s(B''$B$GFI$`(B +* Mail-To-News Gateways:: $B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7$F5-;v(B + $B$rEj9F$9$k(B +* IMAP:: Gnus $B$r(B IMAP $B$N%/%i%$%"%s%H$H$7$F;H$&(B Document Groups -* Document Server Internals:: $B$"$J$?FH<+$NJ8=q$NMxMQ$NMxMQC$9J}K!!#(B -* Outgoing Messages:: $BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+(B? -* Agent Variables:: $B%+%9%?%^%$%:$O3Z$7!#(B -* Example Setup:: $B%*%U%i%$%s?M4V$N$?$a$N(B @file{.gnus.el} $B$NNc!#(B -* Batching Agents:: @code{cron} $B%8%g%V$K$h$k%K%e!<%9C$9J}K!(B +* Agent and IMAP:: $B%(!<%8%'%s%H$r(B IMAP $B$G;H$&J}K!(B +* Outgoing Messages:: $BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+(B? +* Agent Variables:: $B%+%9%?%^%$%:$O3Z$7(B +* Example Setup:: $B%*%U%i%$%s?M4V$N$?$a$N(B @file{.gnus.el} $B$NNc(B +* Batching Agents:: @code{cron} $B%8%g%V$K$h$k%K%e!<%9C5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k(B +* GroupLens:: $B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k(B +* Advanced Scoring:: $B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&(B +* Score Decays:: $B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"$k(B GroupLens -* Using GroupLens:: $B$I$N$h$&$K(B gnus $B$K(B GroupLens $B$r;H$o$;$k$h$&(B - $B$K$9$k$+!#(B -* Rating Articles:: GropLens $B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k$+$r(B - $BCN$i$;$k!#(B -* Displaying Predictions:: GropuLens $B$K$h$C$FM?$($i$l$?M=8@$rI=<($9$k!#(B -* GroupLens Variables:: GoupLens $B$r%+%9%?%^%$%:$9$k!#(B +* Using GroupLens:: $B$I$N$h$&$K(B gnus $B$K(B GroupLens $B$r;H$o$;$k$h$&$K(B + $B$9$k$+(B +* Rating Articles:: GropLens $B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k$+$rCN(B + $B$i$;$k(B +* Displaying Predictions:: GropuLens $B$K$h$C$FM?$($i$l$?M=8@$rI=<($9$k(B +* GroupLens Variables:: GoupLens $B$r%+%9%?%^%$%:$9$k(B Advanced Scoring -* Advanced Scoring Syntax:: $BDj5A!#(B -* Advanced Scoring Examples:: $B$I$N$h$&$K8+$($k$+!#(B -* Advanced Scoring Tips:: $B$=$l$r:GBg8BMxMQ$9$k!#(B +* Advanced Scoring Syntax:: $BDj5A(B +* Advanced Scoring Examples:: $B$I$N$h$&$K8+$($k$+(B +* Advanced Scoring Tips:: $B$=$l$r:GBg8BMxMQ$9$k(B Various -* Process/Prefix:: $BB?$/$N07$$L?Na$G;H$o$l$k=,47!#(B -* Interactive:: Gnus $B$KB?$/$Ne$2$k$+!#(B -* Mode Lines:: $B%b!<%I9T$K>pJs$rI=<($9$k!#(B -* Highlighting and Menus:: $B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k!#(B -* Buttons:: $B4JC1$J(B10$BJb$G%"%-%l%9g'$rF@$k!#(B -* Daemons:: Gnus $B$O$"$J$?$NN"$GJ*;v$r$NB@$j$d$9$$?);v$rHr$1$kJ}K!!#(B -* Undo:: $B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k!#(B -* Moderation:: $B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+!#(B -* XEmacs Enhancements:: XEmacs $B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_$9$k!#(B -* Fuzzy Matching:: $BBg$-$JLJLS$C$F2?!)(B -* Thwarting Email Spam:: $BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!!#(B -* Various Various:: $BK\Ev$K$$$m$$$m$J$b$N!#(B +* Process/Prefix:: $BB?$/$N07$$L?Na$G;H$o$l$k=,47(B +* Interactive:: Gnus $B$KB?$/$Ne$2$k$+(B +* Mode Lines:: $B%b!<%I9T$K>pJs$rI=<($9$k(B +* Highlighting and Menus:: $B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k(B +* Buttons:: $B4JC1$J==Jb$G%"%-%l%9g'$rF@$k(B +* Daemons:: Gnus $B$O$"$J$?$NN"$GJ*;v$r$NB@$j$d$9$$?);v$rHr$1$kJ}K!(B +* Undo:: $B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k(B +* Moderation:: $B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+(B +* XEmacs Enhancements:: XEmacs $B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_$9$k(B +* Fuzzy Matching:: $BBg$-$JLJLS$C$F2?(B? +* Thwarting Email Spam:: $BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!(B +* Various Various:: $BK\Ev$K$$$m$$$m$J$b$N(B Formatting Variables -* Formatting Basics:: $B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"$k!#(B -* Mode Line Formatting:: $B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N5,B'!#(B -* Advanced Formatting:: $B?'!9$JJ}K!$G=PNO$r=$@5$9$k!#(B -* User-Defined Specs:: Gnus $B$K$"$J$?<+?H$N4X?t$r8F$P$;$k!#(B -* Formatting Fonts:: $B;EMM$rB?:L$GAGE($K8+$;$k!#(B +* Formatting Basics:: $B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"$k(B +* Mode Line Formatting:: $B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N5,B'(B +* Advanced Formatting:: $B?'!9$JJ}K!$G=PNO$r=$@5$9$k(B +* User-Defined Specs:: Gnus $B$K$"$J$?<+?H$N4X?t$r8F$P$;$k(B +* Formatting Fonts:: $B;EMM$rB?:L$GAGE($K8+$;$k(B XEmacs Enhancements -* Picons:: $B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!!#(B -* Smileys:: $BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<($9$kJ}K!!#(B -* Toolbar:: $B%/%j%C%/1n!#(B -* XVarious:: $B$=$NB>$N(B XEmacs $B$G(B Gnus $B$JJQ?t!#(B +* Picons:: $B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!(B +* Smileys:: $BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<($9$kJ}K!(B +* Toolbar:: $B%/%j%C%/1n(B +* XVarious:: $B$=$NB>$N(B XEmacs $B$G(B Gnus $B$JJQ?t(B Picons -* Picon Basics:: picon $B$H$O2?$G!"$I$&$d$C$F$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?$jM7$s$@$j$9$kJQ?t!#(B +* Picon Basics:: picon $B$H$O2?$G!"$I$&$d$C$F$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?$j(B + $BM7$s$@$j$9$kJQ?t(B Appendices -* History:: $B$I$&$d$C$F(B gnus $B$,:#F|$N$h$&$K$J$C$?$+!#(B -* On Writing Manuals:: $B$J$<$3$l$,=i?4eee$N$b$N(B---Gnus 5.4/5.5 -* Quassia Gnus:: 2$B$+$1$k(B2$B$O(B4$B!"$b$7$/$O(B Gnus 5.6/5.7$B!#(B +* ding Gnus:: $B:G=i$N?7$7$$(B Gnus $B$G$"$k(B Gnus 5.0/5.1 $B$N?7$7$$;v(B +* September Gnus:: $B8x<0$K(B GNus 5.2/5.3 $B$H$7$FCN$i$l$F$$$k$b$N(B +* Red Gnus:: $B;0HVL\$N:G>e$N$b$N(B---Gnus 5.4/5.5 +* Quassia Gnus:: 2 $B$+$1$k(B 2 $B$O(B 4$B!"$b$7$/$O(B Gnus 5.6/5.7 Customization * Slow/Expensive Connection:: $B%m!<%+%k$N(B Emacs $B$rN)$A>e$2$F!"(B $BB>$N$H$3$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k!#(B -* Slow Terminal Connection:: $B1s3V(B Emacs $B$rpJs7A<0!#(B -* Extended Interactive:: $B5-9f@\F,<-$J$I!#(B -* Emacs/XEmacs Code:: Gnus $B$OA4$F$N6aBe(B Emacsen $B$GF0:n$9$k!#(B -* Various File Formats:: Gnus $B$N;HMQ$9$k%U%!%$%k$N7A<0!#(B +* Gnus Utility Functions:: $B;HMQ$G$-$k6&DL$N4X?t$HJQ?t(B +* Backend Interface:: Gnus $B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+(B +* Score File Syntax:: $B%9%3%"%U%!%$%k5,3J$N(B BNF $BDj5A(B +* Headers:: Gnus $B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<$9$k$+(B +* Ranges:: $B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0(B +* Group Info:: $B%0%k!<%W>pJs7A<0(B +* Extended Interactive:: $B5-9f@\F,<-$J$I(B +* Emacs/XEmacs Code:: Gnus $B$OA4$F$N6aBe(B Emacsen $B$GF0:n$9$k(B +* Various File Formats:: Gnus $B$N;HMQ$9$k%U%!%$%k$N7A<0(B Backend Interface -* Required Backend Functions:: $BpJs!#(B -* Newsgroups File Format:: $B%0%k!<%W$N5-=R!#(B +* Active File Format:: $B;HMQ2DG=$J5-;v%0%k!<%W$N>pJs(B +* Newsgroups File Format:: $B%0%k!<%W$N5-=R(B Emacs for Heathens -* Keystrokes:: $BJ8>O$rF~NO$7$FL?Na$rO$rF~NO$7$FL?Na$rH$7$F$/$@$5$$!#(B +$B$3$N@bL@=q$G$h$/$o$+$i$J$$MQ8l$,$G$F$-$?$H$-$O!"MQ8l$N(B +$B9`(B (@pxref{Terminology}) $B$r;2>H$7$F$/$@$5$$!#(B @menu -* Finding the News:: $B%K%e!<%9$re$N(B gnus $B$r:nF0$5$;$k$3$H$,$G$-$k(B -* Fetching a Group:: $B%0%k!<%W$rFI$`$?$a$@$1$K(B gnus $B$r5/F0$9$k(B -* New Groups:: Gnus $B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+(B -* Startup Files:: $B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k(B--@file{.newsrc} -* Auto Save:: $B%/%i%C%7%e$+$i$N2sI|(B -* The Active File:: $BCY$$2s@~$+$i$N%U%!%$%k$Ne$N(B gnus $B$r:nF0$5$;$k$3$H$,$G$-$k(B +* Fetching a Group:: $B%0%k!<%W$rFI$`$?$a$@$1$K(B gnus $B$r5/F0$9$k(B +* New Groups:: Gnus $B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+(B +* Startup Files:: $B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k(B--@file{.newsrc} +* Auto Save:: $B%/%i%C%7%e$+$i$N2sI|(B +* The Active File:: $BCY$$2s@~$+$i$N%U%!%$%k$Nl=j(B} -$B$rI=$9%j%9%H$G$"$kI,MW$,$"$j$^$9!#$3$NJ}K!$O$"$J$?$N4pK\J}K!(B (native -method) $B$K$J$j$^$9!#$3$NJ}K!$Gl=j(B} $B$rI=$9%j%9%H$G$"$kI,MW$,$"$j$^$9!#$3$NJ}K!$O$"$J$?$N4pK\J}(B +$BK!(B (native method) $B$K$J$j$^$9!#$3$NJ}K!$Gl9g$O(B -@file{/etc/nntpserver}$B!K$,$3$N7o$K4X$7$F2?$+$r8@$C$F$$$J$$$+$rD4$Y$^$9!#(B -$B$b$7$=$l$b<:GT$7$?$J$i!"(Bgnus$B$O(B Emacs $B$,F0:n$7$F$$$k%5!<%P!<$r(B @sc{nntp} -$B%5!<%P!<$H$7$F;H$*$&$H$7$^$9!#?oJ,$JEv$F?dNL$G$9$1$I$M!#(B +$BFI$_$K$$$-$^$9!#$b$7$=$NJQ?t$,@_Dj$5$l$F$$$J$1$l$P!"(B +gnus $B$O(B @code{gnus-nntpserver-file} ($B@_Dj$5$l$F$$$J$$>l9g(B +$B$O(B @file{/etc/nntpserver}) $B$,$3$N7o$K4X$7$F2?$+$r8@$C$F$$$J$$$+$rD4$Y$^(B +$B$9!#$b$7$=$l$b<:GT$7$?$J$i!"(Bgnus $B$O(B Emacs $B$,F0:n$7$F$$$k%5!<%P!<(B +$B$r(B @sc{nntp} $B%5!<%P!<$H$7$F;H$*$&$H$7$^$9!#?oJ,$JEv$F?dNL$G$9$1$I$M!#(B @vindex gnus-nntp-server -@code{gnus-nntp-server} $B$,@_Dj$5$l$F$$$k$H!"$3$NJQ?t$O(B -@code{gnus-select-method} $B$r>e=q$-$7$^$9!#$G$9$+$i!"(B +@code{gnus-nntp-server} $B$,@_Dj$5$l$F$$$k$H!"$3$NJQ?t(B +$B$O(B @code{gnus-select-method} $B$r>e=q$-$7$^$9!#$G$9$+$i!"(B @code{gnus-nntp-server} $B$O(B @code{nil} $B$K@_Dj$9$k$Y$-$G!"=i4|@_Dj$G$b$=$N(B $B$h$&$K$J$C$F$$$^$9!#(B @vindex gnus-secondary-servers @vindex gnus-nntp-server Gnus $B$K(B @sc{nntp} $B%5!<%P!<$NL>A0$NF~NO$rBPOCE*$K;XDj$9$k$3$H$b$G$-$^$9!#(B -@code{gnus} $B$K?tCM$G$J$$@\F,0z?t$rEO$9$H!JNc!'(B@kbd{C-u M-x gnus}$B!K!"(Bgnus -$B$O(B @code{gnus-secondary-servers} $B%j%9%H!J$b$7B8:_$9$k$J$i$P!K$+$i%5!<%P!<(B -$B$rA*$V$3$H$,$G$-$k$h$&$K$7$^$9!#$?$@C1$K@\B3$7$?$$$H;W$C$?%5!<%P!<$NL>A0(B -$B$rBG$D$3$H$b$G$-$^$9!#(B($B$3$l$O(B @code{gnus-nntp-server} $B$r@_Dj$7!"$3$l$O8e(B -$B$N(B Emacs $B$N%;%C%7%g%s$G(B @kbd{M-x gnus} $B$H$9$k$H!"(Bgnus $B$OF1$8%5!<%P!<$K@\(B -$BB3$7$h$&$H$9$k$H$$$&$3$H$G$9!#(B) +@code{gnus} $B$K?tCM$G$J$$@\F,0z?t$rEO$9$H(B ($BNc(B: @kbd{C-u M-x gnus})$B!"(B +gnus $B$O(B @code{gnus-secondary-servers} $B%j%9%H(B ($B$b$7B8:_$9$k$J$i$P(B) $B$+$i%5!<(B +$B%P!<$rA*$V$3$H$,$G$-$k$h$&$K$7$^$9!#$?$@C1$K@\B3$7$?$$$H;W$C$?%5!<%P!<$N(B +$BL>A0$rBG$D$3$H$b$G$-$^$9!#(B($B$3$l$O(B @code{gnus-nntp-server} $B$r@_Dj$7!"$3$l(B +$B$O8e$N(B Emacs $B$N%;%C%7%g%s$G(B @kbd{M-x gnus} $B$H$9$k$H!"(Bgnus $B$OF1$8%5!<%P!<(B +$B$K@\B3$7$h$&$H$9$k$H$$$&$3$H$G$9!#(B) @findex gnus-group-browse-foreign-server @kindex B (Group) -$B$7$+$7!"IaCJF|>oE*$K$O0l$D$N(B @sc{nntp} $B%5!<%P$r;H$$!"0c$C$?%5!<%P!<$K$O6=(B -$BL#$N$"$k%0%k!<%W$,>/$7$7$+$J$$>l9g!"%0%k!<%W%P%C%U%!$G(B @kbd{B} $BL?Na$r;H$&(B -$B$3$H$NJ}$,NI$$$G$7$g$&!#$=$l$O!"A*Br2DG=$J%0%k!<%W$rI=<($7!"$=$NCf$+$i$I$l(B -$B$G$b9%$-$J$b$N$r9XFI$9$k$3$H$,$G$-$^$9!#$3$l$O!"(B@file{.newsrc} $B$NJ];}$r$:$C(B -$B$H$d$j$d$9$/$7$^$9!#(B@xref{Foreign Groups, $B30It%0%k!<%W(B}. +$B$7$+$7!"IaCJF|>oE*$K$O0l$D$N(B @sc{nntp} $B%5!<%P$r;H$$!"0c$C$?%5!<%P!<$K$O(B +$B6=L#$N$"$k%0%k!<%W$,>/$7$7$+$J$$>l9g!"%0%k!<%W%P%C%U%!$G(B @kbd{B} $BL?Na$r(B +$B;H$&$3$H$NJ}$,NI$$$G$7$g$&!#$=$l$O!"A*Br2DG=$J%0%k!<%W$rI=<($7!"$=$NCf$+(B +$B$i$I$l$G$b9%$-$J$b$N$r9XFI$9$k$3$H$,$G$-$^$9!#$3$l$O!"(B@file{.newsrc} $B$N(B +$BJ];}$r$:$C$H$d$j$d$9$/$7$^$9!#(B@xref{Foreign Groups, $B30It%0%k!<%W(B}. @vindex gnus-secondary-select-methods @c @head -$B30It%0%k!<%W$KBP$9$k>/$70c$C$?$d$jJ}$O!"JQ?t(B -@code{gnus-secondary-select-methods} $B$r@_Dj$9$kJ}K!$G$9!#$3$NJQ?t$KI=$5(B -$B$l$F$$$kA*BrJ}K!$O!"B?$/$NE@$G(B @code{gnus-select-method} $B%5!<%P!<$NBrJ}(B -$BK!$HF1$8$h$&$K07$o$l$^$9!#5/F0Cf$K%"%/%F%#%V%U%!%$%k$rC5$7$K$$$-(B $B!J$b$7(B -$BMW5a$5$l$F$$$l$P!K!"$3$l$i$N%5!<%P!<>e$K$G$-$??7$7$$%K%e!<%9%0%k!<%W$O85!9(B -$B$N%0%k!<%W$HF1$8$h$&$K9XFI!J$b$7$/$OHs9XFI!K$5$l$^$9!#(B +$B30It%0%k!<%W$KBP$9$k>/$70c$C$?$d$jJ}$O!"JQ(B +$B?t(B @code{gnus-secondary-select-methods} $B$r@_Dj$9$kJ}K!$G$9!#$3$NJQ?t$KI=(B +$B$5$l$F$$$kA*BrJ}K!$O!"B?$/$NE@$G(B @code{gnus-select-method} $B%5!<%P!<$NBr(B +$BJ}K!$HF1$8$h$&$K07$o$l$^$9!#5/F0Cf$K%"%/%F%#%V%U%!%$%k$rC5$7$K$$$-(B ($B$b$7(B +$BMW5a$5$l$F$$$l$P(B)$B!"$3$l$i$N%5!<%P!<>e$K$G$-$??7$7$$%K%e!<%9%0%k!<%W$O85!9(B +$B$N%0%k!<%W$HF1$8$h$&$K9XFI(B ($B$b$7$/$OHs9XFI(B) $B$5$l$^$9!#(B $B$?$H$($P!"%a!<%k$rFI$`$?$a$K(B @code{nnmbox} $B%P%C%/%(%s%I(B (backend) $B$r;H$$(B $B$?$$$H$-$O!"IaDL!"$3$NJQ?t$r!"(B @@ -1046,20 +1079,19 @@ Gnus $B$K(B @sc{nntp} $B%5!<%P!<$NL>A0$NF~NO$rBPOCE*$K;XDj$9$k$3$H$b$G$-$^$9! $BFI$5$l$F$$$k$Y$-$+$r7hDj$7$h$&$H$7$^$9!#(B @vindex gnus-default-subscribed-newsgroups -$BJQ?t(B @code{gnus-default-subscribed-newsgroups} $B$,@_Dj$5$l$F$$$k$H!"(Bgnus -$B$O$=$N%j%9%H$NCf$N%0%k!<%W$r9XFI$7!";D$j$r:o=|$7$^$9!#%7%9%F%`4IM}$^$l$^$9!#(B +$BJQ?t(B @code{gnus-default-subscribed-newsgroups} $B$,@_Dj$5$l$F$$$k$H!"(B +gnus $B$O$=$N%j%9%H$NCf$N%0%k!<%W$r9XFI$7!";D$j$r:o=|$7$^$9!#%7%9%F%`4IM}(B +$B$^$l$^$9!#(B -$B$=$&$G$J$$$H$-$O!"(Bgnus $B$O>/$7$NG$0U$N%0%k!<%W$r9XFI$7$^$9!JNc!'(B -@samp{*.newusers}$B!K!#!J(B@dfn{$BG$0U(B}$B$O$3$3$G$O!"(B@dfn{Lars $B$5$s$,FI$`$Y$-$G(B -$B$"$k$H9M$($k$b$N(B}$B$H$$$&$h$&$KDj5A$5$l$F$$$^$9!K(B +$B$=$&$G$J$$$H$-$O!"(Bgnus $B$O>/$7$NG$0U$N%0%k!<%W$r9XFI$7$^$9(B ($BNc(B: +@samp{*.newusers})$B!#(B(@dfn{$BG$0U(B}$B$O$3$3$G$O!"(B@dfn{Lars $B$5$s$,FI$`$Y$-$G$"(B +$B$k$H9M$($k$b$N(B}$B$H$$$&$h$&$KDj5A$5$l$F$$$^$9(B) $B$^$?!"$?$$$F$$$N6&DL$NLdBj$N2r7h$NA0$NF~NO$rBPOCE*$K;XDj$9$k$3$H$b$G$-$^$9! Gnus $B$O!"?.Mj$G$-$k%W%m%0%i%`$N0l$D$H$7$F!"%5!<%P!<$H@\B3$G$-$J$$$H$-$O(B $B4pK\A*BrJ}K!$J$7$GB3$1$k$+$I$&$+$r?R$M$^$9!#$3$l$Ol9g!K$d%5!<%P!<$,2?$i$+$NM}M3$G0l(B +$B$7$J$$$H$-(B ($BNc$($P!"%"%I%l%9$r4V0c$($?>l9g(B) $B$d%5!<%P!<$,2?$i$+$NM}M3$G0l(B $B;~E*$KD4;R$,$*$+$7$/$J$C$F$$$k$H$-$K5/$3$j$^$9!#$b$7$=$N$^$^B39T$9$k$3$H(B $B$K$7$F!"30It%0%k!<%W$,0l$D$bL5$$>l9g!"uBV$K$7$^$9!J4pK\%0%k!<%W$G$J$$%0%k!<%W$O$=$N(B 2 $B$D$N%l%Y(B -$B%k$K$7$F$*$/$N$,K>$^$7$$$G$7$g$&!K!#(B - +$B%0%k!<%W$r3hF0>uBV$K$7$^$9(B ($B4pK\%0%k!<%W$G$J$$%0%k!<%W$O$=$NFs$D$N%l%Y%k(B +$B$K$7$F$*$/$N$,K>$^$7$$$G$7$g$&(B)$B!#(B @node Slave Gnusae @section gnus $B$r%9%l!<%V$K$9$k(B @cindex slave -$B$"$J$?$O(B 2 $B$D0J>e$N(B Emacs $B$H!"(B2 $B$D0J>e$N(B gnus $B$rF1;~$KF0$+$7$?$$$H;W$&$+(B -$B$b$7$l$^$;$s!#0c$C$?(B @file{.newsrc} $B%U%!%$%k$r;H$C$F$$$k$J$i!JNc$($P!"(B2 -$B$D$N0c$C$?%5!<%P!<$+$iFI$_9~$`$?$a$K!"(B2 $B$D$N0c$C$?(B gnus $B$rF0:n$5$;$F$$$k(B -$B>l9g!K!"$^$C$?$/LdBj$O$"$j$^$;$s!#$=$l$r9T$($PNI$$$@$1$G$9!#(B +$B$"$J$?$OFs$D0J>e$N(B Emacs $B$H!"Fs$D0J>e$N(B gnus $B$rF1;~$KF0$+$7$?$$$H;W$&$+(B +$B$b$7$l$^$;$s!#0c$C$?(B @file{.newsrc} $B%U%!%$%k$r;H$C$F$$$k$J$i(B ($BNc$($P!"(B +$BFs$D$N0c$C$?%5!<%P!<$+$iFI$_9~$`$?$a$K!"Fs$D$N0c$C$?(B gnus $B$rF0:n$5$;$F$$(B +$B$k>l9g(B)$B!"$^$C$?$/LdBj$O$"$j$^$;$s!#$=$l$r9T$($PNI$$$@$1$G$9!#(B -$BLdBj$O!"F1$8(B @code{.newsrc} $B%U%!%$%k$r;H$&(B2$B$D$N(B gnus $B$rF0$+$=$&$H$7$?$H(B +$BLdBj$O!"F1$8(B @code{.newsrc} $B%U%!%$%k$r;H$&Fs$D$N(B gnus $B$rF0$+$=$&$H$7$?$H(B $B$-$K5/$3$j$^$9!#(B $B$3$NLdBj$KBP=h$9$k$?$a$K!"(Bgnus $B%?%o!<$N%7%s%/%?%s%/$K$$$k2f!9$O?7$7$$35(B -$BG0$K$?$I$j$D$-$^$7$?!#(B@dfn{$B%^%9%?!<(B} $B$H(B @dfn{$B%9%l!<%V(B} $B$G$9!#!J2f!9$O$3(B -$B$N35G0$KFC5v$r?=@A$7$^$7$?!#$=$7$F!"$=$N8@MU$NCx:n8"$rF@$^$7$?!#$*8_$$$K(B -$B4XO"$7$F$3$l$i$N8@MU$r;H$$$?$$$J$i!"#12s;H$&Kh$K!";d$K(B $1 $B$rAw$i$J$1$l$P(B -$B$J$j$^$;$s!#$b$C$A$m$s!"(B@dfn{$B%3%s%T%e!<%?!<%"%W%j%1!<%7%g%s$N%^%9%?!$l(B @kbd{M-x gnus-slave} $B$G5/F0(B -$B$7$^$9!#%9%l!<%V$OIaDL$N(B @file{.newsrc} $B$OJ]B8$7$^$;$s$,!"Be$o$j$K(B -@dfn{$B%9%l!<%V%U%!%$%k(B} $B$K%9%l!<%V$N5/F0Cf$K$I$N$h$&$J%0%k!<%W$,FI$^$l$?(B -$B$+$H$$$&>pJs$@$1$rJ]B8$7$^$9!#%^%9%?!<(B gnus $B$,5/F0$9$k$H$-!"$=$l$O$=$l$i(B -$B$N%9%l!<%V%U%!%$%k$rFI$_9~$_!J$=$7$F>C$7!K!"$=$l$i$+$i$9$Y$F$N>pJs$rpJs$OIaDL$N!J$9$J$o$A!"%^%9%?!<$N!K%U%!(B +$B$7$^$9!#%9%l!<%V$OIaDL$N(B @file{.newsrc} $B$OJ]B8$7$^$;$s$,!"Be$o$j(B +$B$K(B @dfn{$B%9%l!<%V%U%!%$%k(B} $B$K%9%l!<%V$N5/F0Cf$K$I$N$h$&$J%0%k!<%W$,FI$^$l(B +$B$?$+$H$$$&>pJs$@$1$rJ]B8$7$^$9!#%^%9%?!<(B gnus $B$,5/F0$9$k$H$-!"$=$l$O$=$l(B +$B$i$N%9%l!<%V%U%!%$%k$rFI$_9~$_(B ($B$=$7$F>C$7(B)$B!"$=$l$i$+$i$9$Y$F$N>pJs$rpJs$OIaDL$N(B ($B$9$J$o$A!"%^%9%?!<$N(B) $B%U%!(B $B%$%k$h$j$bM%@h$5$l$^$9!#(B - @node Fetching a Group @section $B%0%k!<%W$rA0$r0z?t$H$7$F$H$j$^$9!#(B - @node New Groups @section $B?7$7$$%0%k!<%W(B @cindex new groups @@ -1140,20 +1169,20 @@ Gnus $B$O!"?.Mj$G$-$k%W%m%0%i%`$N0l$D$H$7$F!"%5!<%P!<$H@\B3$G$-$J$$$H$-$O(B @vindex gnus-check-new-newsgroups $B?7$7$$%K%e!<%9%0%k!<%W$rA4$/8+$J$$$GK~B-$G$"$k$J$i$P!"(B @code{gnus-check-new-newsgroups} $B$r(B @code{nil} $B$K@_Dj$9$k$3$H$,$G$-$^$9!#(B -$B$3$l$r@_Dj$7$?>l9g!"5/F0$K$+$+$k;~4V$,C;$/$J$j$^$9!#$3$NJQ?t$,(B -@code{nil} $B$K@_Dj$5$l$F$$$F$b!"%0%k!<%W%P%C%U%!$G(B @kbd{U} $B$r2!$;$P$$$D$G(B -$B$b?7$7$$%0%k!<%W$r9XFI$9$k$3$H$,$G$-$^$9(B (@pxref{Group Maintenance})$B!#=i(B -$B4|@_Dj$G$O$3$NJQ?t$O(B @code{ask-server} $B$G$9!#$3$NJQ?t$,(B @code{always} $B$K(B -$B@_Dj$5$l$F$$$k$H!"L?Na(B @kbd{g} $B$rl9g!"5/F0$K$+$+$k;~4V$,C;$/$J$j$^$9!#$3$NJQ?t(B +$B$,(B @code{nil} $B$K@_Dj$5$l$F$$$F$b!"%0%k!<%W%P%C%U%!$G(B @kbd{U} $B$r2!$;$P$$(B +$B$D$G$b?7$7$$%0%k!<%W$r9XFI$9$k$3$H$,$G$-$^$9(B (@pxref{Group Maintenance})$B!#(B +$B=i4|@_Dj$G$O$3$NJQ?t$O(B @code{ask-server} $B$G$9!#$3$NJQ?t(B +$B$,(B @code{always} $B$K@_Dj$5$l$F$$$k$H!"L?Na(B @kbd{g} $B$rJ}!"$=$7$FA4BN$K$o$?$C$F;~4V$r@aLs$G$-$^$9!#%G%#(B $B%9%/>CHqNL$b>/$J$/$J$j$^$9!#$=$l$J$i!"$I$&$7$F$3$l$,=i4|@_Dj$G$O$J$$$N$G(B -$B$7$g$&!);DG0$J$,$i!"$9$Y$F$N%5!<%P!<$,$3$NL?Na$rM}2r$9$k$o$1$G$O$J$$$N$G(B +$B$7$g$&(B? $B;DG0$J$,$i!"$9$Y$F$N%5!<%P!<$,$3$NL?Na$rM}2r$9$k$o$1$G$O$J$$$N$G(B $B$9!#(B -$B;d$O:#$"$J$?$,2?$r9M$($F$$$k$+$rEv$F$i$l$^$9!#$I$&$9$l$P%5!<%P!<$,(B -@code{ask-server} $B$rM}2r$9$k$+$,$o$+$k$N$G$7$g$&!)$(!"0c$&$N$G$9$+!)$"$!!"(B -$BNI$+$C$?!#$H$$$&$N$O!"3N$NJ}K!$H$7$F$O!"%5!<%P!<$K(B -@code{telnet} $B$r$7$F!"(B@code{HELP} $B$HBG$A!"%5!<%P!<$,M}2r$9$k%3%^%s%I$NCf(B -$B$K(B @samp{NEWGROUPS} $B$,$"$k$+$I$&$+$rD4$Y$k$3$H$b$G$-$^$9!#$b$7$"$l$P!"$*(B -$B$=$i$/F0:n$9$k$G$7$g$&!J$7$+$7!"E,@Z$K5!G=$rDs6!$9$k$3$H$J$/(B -@samp{NEWGROUPS} $B$r%j%9%H$K4^$a$k%5!<%P!<$b$"$j$^$9!K!#(B +$B;d$O:#$"$J$?$,2?$r9M$($F$$$k$+$rEv$F$i$l$^$9!#$I$&$9$l$P%5!<%P!<(B +$B$,(B @code{ask-server} $B$rM}2r$9$k$+$,$o$+$k$N$G$7$g$&(B? $B$(!"0c$&$N$G$9(B +$B$+(B? $B$"$!!"NI$+$C$?!#$H$$$&$N$O!"3N$NJ}K!$H$7$F$O!"%5!<%P!<(B +$B$K(B @code{telnet} $B$r$7$F!"(B@code{HELP} $B$HBG$A!"%5!<%P!<$,M}2r$9$k%3%^%s%I(B +$B$NCf$K(B @samp{NEWGROUPS} $B$,$"$k$+$I$&$+$rD4$Y$k$3$H$b$G$-$^$9!#$b$7$"$l$P!"(B +$B$*$=$i$/F0:n$9$k$G$7$g$&(B ($B$7$+$7!"E,@Z$K5!G=$rDs6!$9$k$3$H$J(B +$B$/(B @samp{NEWGROUPS} $B$r%j%9%H$K4^$a$k%5!<%P!<$b$"$j$^$9(B)$B!#(B $B$3$NJQ?t$O!"A*BrJ}K!$N%j%9%H$G$"$k$3$H$b$G$-$^$9!#$=$N$H$-$O!"(Bgnus $B$OL?(B $BNa(B @code{ask-server} $B$r$=$l$>$l$NA*BrJ}K!$KBP$7$FA0(B $B$rM#0l$N0z?t$H$7$F8F$P$l$^$9!#(B @@ -1208,8 +1236,8 @@ Gnus $B$O!"IaDL$O%0%k!<%W$,?7$7$$$+$I$&$+$r!"9XFI$7$F$$$k%0%k!<%W$H:o=|$5(B @item gnus-subscribe-zombies @vindex gnus-subscribe-zombies $B$9$Y$F$N?7$7$$%0%k!<%W$r%>%s%S(B (zombie) $B$K$7$^$9!#$3$l$,=i4|@_Dj(B $B$K$J$C(B -$B$F$$$^$9!#8e$G%>%s%S$r(B (@kbd{A z} $B$K$h$C$F(B) $B354Q$7$?$j!"!J(B@kbd{S z} $B$K$h$C(B -$B$F!KE,@Z$KA4$F$r:o=|$7$?$j!"!J(B@kbd{u} $B$K$h$C$F!K9XFI$7$?$j$G$-$^$9!#(B +$B$F$$$^$9!#8e$G%>%s%S$r(B (@kbd{A z} $B$K$h$C$F(B) $B354Q$7$?$j!"(B(@kbd{S z} $B$K$h$C(B +$B$F(B) $BE,@Z$KA4$F$r:o=|$7$?$j!"(B(@kbd{u} $B$K$h$C$F(B) $B9XFI$7$?$j$G$-$^$9!#(B @item gnus-subscribe-randomly @vindex gnus-subscribe-randomly @@ -1222,8 +1250,8 @@ Gnus $B$O!"IaDL$O%0%k!<%W$,?7$7$$$+$I$&$+$r!"9XFI$7$F$$$k%0%k!<%W$H:o=|$5(B @item gnus-subscribe-hierarchically @vindex gnus-subscribe-hierarchically -$B$9$Y$F$N?7$7$$%0%k!<%W$r3,AXE*$K9XFI$7$^$9!#$3$N4X?t$H(B -@code{gnus-subscribe-alphabetically} $B$N0c$$$O>/$7$7$+$"$j$^$;$s!#(B +$B$9$Y$F$N?7$7$$%0%k!<%W$r3,AXE*$K9XFI$7$^$9!#$3$N4X?t(B +$B$H(B @code{gnus-subscribe-alphabetically} $B$N0c$$$O>/$7$7$+$"$j$^$;$s!#(B @code{gnus-subscribe-alphabetically} $B$O?7$7$$%0%k!<%W$r87L)$K%"%k%U%!%Y%C(B $B%H=g$K$J$i$Y$^$9$,!"$3$N4X?t$O%0%k!<%W$r$=$N3,AX$NCf$KF~$l$^$9!#$G$9$+$i!"(B @samp{rec} $B$N3,AX$r(B @samp{comp} $B$N3,AX$NA0$K;}$C$F$-$?$$>l9g!"$3$N4X?t$O(B @@ -1242,8 +1270,8 @@ Gnus $B$O!"IaDL$O%0%k!<%W$,?7$7$$$+$I$&$+$r!"9XFI$7$F$$$k%0%k!<%W$H:o=|$5(B @item gnus-subscribe-topics @vindex gnus-subscribe-topics $B%0%k!<%W$r9gCW$9$k(B @code{subscribe} $B%H%T%C%/%Q%i%a!<%?$N$"$k%0%k!<%W$KF~(B -$B$l$^$9(B (@pxref{Topc Parameters})$B!#Nc$($P!"0J2<$N$h$&$J(B @code{subscribe} -$B%Q%i%a!<%?(B +$B$l$^$9(B (@pxref{Topc Parameters})$B!#Nc$($P!"0J2<$N$h$&(B +$B$J(B @code{subscribe} $B%Q%i%a!<%?(B @example "nnslashdot" @@ -1259,21 +1287,20 @@ Gnus $B$O!"IaDL$O%0%k!<%W$,?7$7$$$+$I$&$+$r!"9XFI$7$F$$$k%0%k!<%W$H:o=|$5(B @vindex gnus-subscribe-hierarchical-interactive $B>e$NJQ?t$HNI$/4X78$7$?JQ?t$O!"(B -@code{gnus-subscribe-hierarchical-interactive} $B$G$9!#$3$NJQ?t$,(B -@code{nil} $B$G$J$$$H!"(Bgnus $B$O3,AXE*$JJ}K!$G?7$7$$%0%k!<%W$r9XFI$9$k$+$I$&$+(B -$B$r?R$M$^$9!#(Bgnus $B$O$=$l$>$l$N3,AX$G!"$=$l$r2<$K9_$j$k$+$I$&$+$r?R$M$^$9!#(B - -$B$h$/$"$k4V0c$$$O!"?tCJMnA0$NJQ?t(B -(@code{gnus-subscribe-newsgroup-method}) $B$r(B -@code{gnus-subscribe-herarchical-interactive} $B$K@_Dj$9$k$3$H$G$9!#$3$l$O(B -$B8m$j$G$9!#$3$l$OF0:n$7$^$;$s!#$3$l$O$*$a$G$?$$?M$N$9$k$3$H$G$9!#$G$9$+$i!"(B -$B@dBP$K$7$J$$$G$/$@$5$$!#(B +@code{gnus-subscribe-hierarchical-interactive} $B$G$9!#$3$NJQ?t(B +$B$,(B @code{nil} $B$G$J$$$H!"(Bgnus $B$O3,AXE*$JJ}K!$G?7$7$$%0%k!<%W$r9XFI$9$k$+(B +$B$I$&$+$r?R$M$^$9!#(Bgnus $B$O$=$l$>$l$N3,AX$G!"$=$l$r2<$K9_$j$k$+$I$&$+$r?R(B +$B$M$^$9!#(B +$B$h$/$"$k4V0c$$$O!"?tCJMnA0$NJQ(B +$B?t(B (@code{gnus-subscribe-newsgroup-method}) $B$r(B @code{gnus-subscribe-herarchical-interactive} $B$K(B +$B@_Dj$9$k$3$H$G$9!#$3$l$O8m$j$G$9!#$3$l$OF0:n$7$^$;$s!#$3$l$O$*$a$G$?$$?M(B +$B$N$9$k$3$H$G$9!#$G$9$+$i!"@dBP$K$7$J$$$G$/$@$5$$!#(B @node Filtering New Groups @subsection $B?7$7$$%0%k!<%W$rA*JL$9$k(B -$B$I$N?7$7$$%0%k!<%W$,9XFI!J$b$7$/$O!"L5;k!K$5$l$k$Y$-$+$r4IM}$9$k2wE,$GA0$r;}$D%0%k!<%W$OA4$FL5;k$5$l!"(B@samp{sci} $B$G;O$^$kL>A0$r;}$D%0%k!<(B $B%W$OA4$F9XFI$9$k!"$H$$$&$3$H$rI=$7$F$$$k$+$i$G$9!#(BGnus $B$O$3$l$i$N%0%k!<(B $B%W$r9XFI$9$k$N$K!"IaDL$N9XFIJ}K!$rMQ$$$^$;$s!#Be$o$j$K!"(B @@ -1293,26 +1320,25 @@ options -n !alt.all !rec.all sci.all @vindex gnus-options-not-subscribe @vindex gnus-options-subscribe $B%U%!%$%k(B @file{.newsrc} $B$r$$$8$j$?$/$J$$>l9g$O!"(B -@code{gnus-options-subscribe} $B$H(B @code{gnus-options-not-subscribe} $B$N(B2 -$B$D$NJQ?t$@$1$r@_Dj$9$k$3$H$b$G$-$^$9!#$3$N(B2$B$D$NJQ?t$O%U%!%$%k(B -@file{.newsrc} $B$N(B @samp{optinos -n} $B9T$HA4$/F1$8$3$H$r$7$^$9!#$I$A$i$NJQ(B -$B?t$b@55,I=8=$G!"?7$7$$%0%k!<%W$OA0r7o$K9XFI$5$l!"8er7o$K9XFI$5$l!"8e(B +$BJ,$J$b$N$G$9!#$7$+$7!";d$O$3$NFs$D$,$"$C$?J}$,NI$$$H;W$$$^$7(B -$B$?!#$b$&0lJ}$NJQ?t$O%f!<%6$,$$$8$/$k$N$K;H$o$l$k$N$KBP$7$F!"$3$NJQ?t$O$$(B -$B$/$D$+$N4pK\E*$J5,B'$r@_Dj$9$k$?$a$N$b$N$G$9!#=i4|@_Dj$G$O$3$NJQ?t$O%a!<(B -$B%k%P%C%/%(%s%I(B (@code{nnml} $B!"(B@code{nnbabyl} $B!"(B@code{nnfolder} $B!"(B -@code{nnmbox} $B$H(B@code{nnmh}) $B$+$i$G$-$kA4$F$N?7$7$$%0%k!<%W$r9XFI$9$k$h(B -$B$&$K$J$C$F$$$^$9!#$=$l$,7y$G$"$l$P!"$3$NJQ?t$r(B @code{nil} $B$K@_Dj$7$F$/$@(B -$B$5$$!#(B - -$B$3$N@55,I=8=$K9gCW$9$k?7$7$$%0%k!<%W$O(B -@code{gnus-subscribe-options-newsgroup-method} $B$r;H$C$F9XFI$5$l$^$9!#(B - +$B$5$i$K$3$3$G$*$;$C$+$$$r$9$kJQ?t$O!"(B +@code{gnus-auto-subscribed-groups} $B$G$9!#$=$l(B +$B$O(B @code{gnus-options-subscribe} $B$HA4$/F1$8$h$&$KF0:n$7$^$9$N$G!"K\Ev$O(B +$BM>J,$J$b$N$G$9!#$7$+$7!";d$O$3$NFs$D$,$"$C$?J}$,NI$$$H;W$$$^$7$?!#$b$&0l(B +$BJ}$NJQ?t$O%f!<%6$,$$$8$/$k$N$K;H$o$l$k$N$KBP$7$F!"$3$NJQ?t$O$$$/$D$+$N4p(B +$BK\E*$J5,B'$r@_Dj$9$k$?$a$N$b$N$G$9!#=i4|@_Dj$G$O$3$NJQ?t$O%a!<%k%P%C%/%((B +$B%s%I(B (@code{nnml}, @code{nnbabyl}, @code{nnfolder}, @code{nnmbox}@ $B$H(B +@code{nnmh}) $B$+$i$G$-$kA4$F$N?7$7$$%0%k!<%W$r9XFI$9$k$h$&$K$J$C$F$$$^$9!#(B +$B$=$l$,7y$G$"$l$P!"$3$NJQ?t$r(B @code{nil} $B$K@_Dj$7$F$/$@$5$$!#(B + +$B$3$N@55,I=8=$K9gCW$9$k?7$7$$%0%k!<%W(B +$B$O(B @code{gnus-subscribe-options-newsgroup-method} $B$r;H$C$F9XFI$5$l$^$9!#(B @node Changing Servers @section $B%5!<%P!<$r49$($k(B @@ -1323,36 +1349,35 @@ options -n !alt.all !rec.all sci.all $B;E;v$rJQ$($?$j!";H$C$F$$$k%5!<%P!<$,$H$F$bIT0BDj$G!"JL$N$b$N$K>h$j49$($?(B $B$$$H$$$&$H$-$KI,MW$K$J$k$G$7$g$&!#(B -$B%5!<%P!<$rJQ99$9$k$N$O$H$F$b4JC1$G$9$h$M!)(B -@code{gnus-select-method} $B$r?7$7$$%5!<%P!<$r;X$7<($9$h$&$KJQ99$9$l$P$$$$(B -$B$@$1$G$9$M!)(B +$B%5!<%P!<$rJQ99$9$k$N$O$H$F$b4JC1$G$9$h$M(B? @code{gnus-select-method} $B$r?7(B +$B$7$$%5!<%P!<$r;X$7<($9$h$&$KJQ99$9$l$P$$$$$@$1$G$9$M(B? -@emph{$B0c$$$^$9!*(B} +@emph{$B0c$$$^$9(B!} $B5-;v$NHV9f$O0c$C$?(B @sc{nntp} $B%5!<%P!<$G$b(B ($B$I$&$K$+$7$F(B) $BF1$8$K$7$F$"$k!"(B -$B$H$$$&$3$H$O$"$j$^$;$s!#$=$7$F!"(B gnus $B$,$I$N5-;v$rFI$s$@$+$r5-O?$9$kM#0l(B +$B$H$$$&$3$H$O$"$j$^$;$s!#$=$7$F!"(Bgnus $B$,$I$N5-;v$rFI$s$@$+$r5-O?$9$kM#0l(B $B$NJ}K!$O!"5-;vHV9f$r5-O?$9$k$3$H$G$9!#$G$9$+$i!"(B @code{gnus-select-method} $B$rJQ99$7$?$H$-$O!"%U%!%$%k(B @file{.newsrc} $B$O0U(B $BL#$,$J$/$J$j$^$9!#(B -Gnus$B$O%U%!%$%k(B @file{.newsrc} $B$r$"$k%5!<%P!J}$N%5!<%P!<$K@\B3$G$-$k$J$i!"(Bgnus$B$O$"$J$?$,FI$s$@5-;vA4$F$KBP$7$F(B -$B%X%C%@!<(B (headers) $B$rMW5a$7$F!"(B@code{Message-ID} $B$rHf3S$7!"FI$s$@5-;v$H(B -$B5-;v$N0u$r?7$7$/5-O?$7$^$9!#%3%^%s%I(B @kbd{M-x gnus-change-server} $B$O$3$l(B -$B$r$9$Y$F$N4pK\%0%k!<%W$KBP$7$F9T$$$^$9!#$=$N%3%^%s%I$O0\F0@h$NJ}K!$NF~NO(B -$B$rB%$7$^$9!#(B +$B$b$7N>J}$N%5!<%P!<$K@\B3$G$-$k$J$i!"(Bgnus $B$O$"$J$?$,FI$s$@5-;vA4$F$KBP$7(B +$B$F%X%C%@!<(B (headers) $B$rMW5a$7$F!"(B@code{Message-ID} $B$rHf3S$7!"FI$s$@5-;v(B +$B$H5-;v$N0u$r?7$7$/5-O?$7$^$9!#%3%^%s%I(B @kbd{M-x gnus-change-server} $B$O$3(B +$B$l$r$9$Y$F$N4pK\%0%k!<%W$KBP$7$F9T$$$^$9!#$=$N%3%^%s%I$O0\F0@h$NJ}K!$NF~(B +$BNO$rB%$7$^$9!#(B @kindex M-x gnus-group-move-group-to-server @findex gnus-group-move-group-to-server $B8D!9$N%0%k!<%W$rL?Na(B @kbd{M-x gnus-group-move-group-to-server} $B$G0\(B -$BF0$9$k$3$H$b$G$-$^$9!#$3$l$O$"$k%5!<%P!<$+$iJL$N%5!<%P!<$X0l$D$N(B ($B30It(B) -$B%0%k!<%W$r0\F0$7$?$$$H$-$KLr$KN)$A$^$9!#(B +$BF0$9$k$3$H$b$G$-$^$9!#$3$l$O$"$k%5!<%P!<$+$iJL$N%5!<%P!<$X0l$D(B +$B$N(B ($B30It(B) $B%0%k!<%W$r0\F0$7$?$$$H$-$KLr$KN)$A$^$9!#(B @kindex M-x gnus-group-clear-data-on-native-groups @findex gnus-group-clear-data-on-native-groups @@ -1362,9 +1387,8 @@ gnus-group-clear-data-on-native-groups} $B$r;H$C$F!"4pK\%0%k!<%W$K4X$9$k%G!<(B $B%?$r$9$Y$F>C5n$9$k$3$H$,$G$-$^$9!#$3$N%3%^%s%I$OCm0U$7$F;H$C$F$/$@$5$$!#(B $B%5!<%P!<$rJQ99$7$?8e$G!"%-%c%C%7%e3,AX$r0\F0$5$;$J$1$l$P(B@strong{$B$J$j$^$;(B -$B$s(B}$B!#$H$$$&$N$O!"%-%c%C%7%e5-;v$O4V0c$C$?5-;vHV9f$K$J$C$F$*$j!"$=$l$O(B -gnus $B$,$I$N5-;v$rFI$s$@$H$_$J$9$+$K1F6A$7$^$9!#(B - +$B$s(B}$B!#$H$$$&$N$O!"%-%c%C%7%e5-;v$O4V0c$C$?5-;vHV9f$K$J$C$F$*$j!"$=$l(B +$B$O(B gnus $B$,$I$N5-;v$rFI$s$@$H$_$J$9$+$K1F6A$7$^$9!#(B @node Startup Files @section $B5/F0%U%!%$%k(B @@ -1378,55 +1402,57 @@ gnus $B$,$I$N5-;v$rFI$s$@$H$_$J$9$+$K1F6A$7$^$9!#(B @sc{gnus} $B$G$OJ*;v$,>/!9J#;($K$J$C$F$$$^$9!#%U%!%$%k(B @file{.newsrc} $B$r:G(B $B?7$N$b$N$K$9$k$@$1$G$O$J$/!"%U%!%$%k(B @file{.newsrc} $B$K$O9g$o$J$$>pJs$rJ](B -$BB8$7$F$*$/$?$a$K(B @file{.newsrc.el} $B$H8F$P$l$k%U%!%$%k$r;H$$$^$9!#(B ($BpJs$rJ#@=$7$FJ];}$7$F$$$^$9!#(B) -@sc{gnus}$B$O$3$l$i$NCf$G0lHV:G8e$KJ]B8$5$l$?$b$N$r;H$$$^$9!#$3$l$r$9$k$3(B -$B$H$K$h$j!"(B@sc{gnus} $B$HB>$N%K%e!<%9%j!<%@!<$r@Z$jBX$($F;H$&$3$H$,$G$-$^$9!#(B +$BB8$7$F$*$/$?$a$K(B @file{.newsrc.el} $B$H8F$P$l$k%U%!%$%k$r;H$$$^$9!#(B($BpJs$rJ#@=$7$FJ];}$7$F$$$^(B +$B$9!#(B) @sc{gnus}$B$O$3$l$i$NCf$G0lHV:G8e$KJ]B8$5$l$?$b$N$r;H$$$^$9!#$3$l$r(B +$B$9$k$3$H$K$h$j!"(B@sc{gnus} $B$HB>$N%K%e!<%9%j!<%@!<$r@Z$jBX$($F;H$&$3$H$,$G(B +$B$-$^$9!#(B $B$3$l$O$A$g$C$H$P$+$JJ}K!$J$N$G!"(Bgnus $B$O$b$C$HNI$$J}K!$rJT$_=P$7$^$7$?!#(B -@file{.newsrc} $B$H(B @file{.newsrc.el} $B%U%!%$%k$K2C$($F!"(Bgnus $B$O(B -@file{.newsrc.eld} $B$H8F$P$l$k%U%!%$%k$b;}$C$F$$$^$9!#(BGnus $B$O$3$l$i$NCf$G(B -$B0lHV?7$7$$%U%!%$%k$rFI$_$^$9$,!"%U%!%$%k(B @file{.newsrc.el} $B$K=q$-9~$`$3(B -$B$H$O$"$j$^$;$s!#%U%!%$%k(B @file{.newsrc.eld} $B$O@dBP$K>C$9$Y$-$G$O$"$j$^$;(B -$B$s!#(B---$B$=$l$O%U%!%$%k(B @file{.newsrc} $B$K$O$J$$$?$/$5$s$N>pJs$rJ];}$7$F$$(B -$B$^$9!#(B - +@file{.newsrc} $B$H(B @file{.newsrc.el} $B%U%!%$%k$K2C$($F!"(B +gnus $B$O(B @file{.newsrc.eld} $B$H8F$P$l$k%U%!%$%k$b;}$C$F$$$^$9!#(BGnus $B$O$3$l(B +$B$i$NCf$G0lHV?7$7$$%U%!%$%k$rFI$_$^$9$,!"%U%!%$%k(B @file{.newsrc.el} $B$K=q(B +$B$-9~$`$3$H$O$"$j$^$;$s!#%U%!%$%k(B @file{.newsrc.eld} $B$O@dBP$K>C$9$Y$-$G$O(B +$B$"$j$^$;$s!#(B---$B$=$l$O%U%!%$%k(B @file{.newsrc} $B$K$O$J$$$?$/$5$s$N>pJs$rJ](B +$B;}$7$F$$$^$9!#(B @vindex gnus-save-newsrc-file @vindex gnus-read-newsrc-file -@code{gnus-save-newsrc-file} $B$r(B @code{nil} $B$K$9$k$3$H$K$h$C$F%U%!%$%k(B -@file{.newsrc} $B$K=q$-9~$`$N$r;_$a$k$3$H$,$G$-$^$9!#$=$&$9$l$P!"$=$N%U%!(B +@code{gnus-save-newsrc-file} $B$r(B @code{nil} $B$K$9$k$3$H$K$h$C$F%U%!%$(B +$B%k(B @file{.newsrc} $B$K=q$-9~$`$N$r;_$a$k$3$H$,$G$-$^$9!#$=$&$9$l$P!"$=$N%U%!(B $B%$%k$r:o=|$9$k$3$H$,$G$-!"%G%#%9%/MFNL$r@aLs$9$k$3$H$,$G$-!"(Bgnus $B$N=*N;(B $B$,B.$/$J$j$^$9!#$7$+$7!"$=$&$9$k$HB>$N%K%e!<%9%j!<%@!<$r;H$($J$/$J$j$^$9!#(B -$B$G$b!"$A$g$C$H!"C/$+$=$&$7$?$$?M$,$$$k$G$7$g$&$+!#(B -$BF1$8$h$&$K(B @code{gnus-read-newsrc-file} $B$r(B @code{nil} $B$K$9$k$3$H$K$h$C$F(B -@file{.newsrc} $B$H$9$Y$F$N(B @file{.newsrc-SERVER} $B$r:n$i$J$$$h$&$K$J$j$^$9!#(B -$B$b$7$"$J$?$,;~!9(B Netscape $B$r;H$&$N$J$i$P!"$3$&$9$k$N$,ET9g$,NI$$$G$7$g$&!#(B +$B$G$b!"$A$g$C$H!"C/$+$=$&$7$?$$?M$,$$$k$G$7$g$&$+!#F1$8$h$&(B +$B$K(B @code{gnus-read-newsrc-file} $B$r(B @code{nil} $B$K$9$k$3$H$K$h$C(B +$B$F(B @file{.newsrc} $B$H$9$Y$F$N(B @file{.newsrc-SERVER} $B$r:n$i$J$$$h$&$K$J$j(B +$B$^$9!#$b$7$"$J$?$,;~!9(B Netscape $B$r;H$&$N$J$i$P!"$3$&$9$k$N$,ET9g$,NI$$$G(B +$B$7$g$&!#(B @vindex gnus-save-killed-list @code{gnus-save-killed-list} ($B=i4|@_Dj$G$O(B @code{t}) $B$,(B @code{nil} $B$G$"(B $B$k$H!"(Bgnus $B$O:o=|$5$l$?%0%k!<%W$r5/F0%U%!%$%k$KJ]B8$7$^$;$s!#$3$l$O!"(B($B5/(B -$BF0;~$H=*N;;~$N(B) $B;~4V$H!"(B($B%G%#%9%/$N(B) $BMFNL$r@aLs$7$^$9!#$3$&$9$k$H!"(Bgnus -$B$,$I$N%0%k!<%W$,?7$7$$$+$N5-O?$r;}$C$F$$$J$$$3$H$K$J$j$^$9$N$G!"?7$7$$%0(B -$B%k!<%W$N<+F09XFIJ}K!$O0UL#$,L5$/$J$j$^$9!#$3$NJQ?t$r(B @code{nil} $B$K$7$?$H(B -$B$-$O!"(B@code{gnus-check-new-newsgroups} $B$r>o$K(B @code{nil} $B$+(B -@code{ask-server} $B$K$7$F$*$/$Y$-$G$7$g$&(B (@pxref{New Groups})$B!#$3$NJQ?t(B -$B$O@55,I=8=$G$"$k$3$H$b$G$-$^$9!#$=$N$h$&$J>l9g$O!"%U%!%$%k$rJ]B8$9$kD>A0(B -$B$K$=$N@55,I=8=$K9gCW$7$J$$$9$Y$F$N%0%k!<%W$r>C5n$7$^$9!#$3$l$O!"$9$Y$F$N(B -$B%5!<%P!<$,(B @code{ask-server} $B$rM}2r$9$k$o$1$G$O$J$$!"$H$$$C$?$h$&$J!"FC(B -$BDj$N$"$$$^$$$J>u67$N$H$-$KLr$KN)$D$G$7$g$&!#(B +$BF0;~$H=*N;;~$N(B) $B;~4V$H!"(B($B%G%#%9%/$N(B) $BMFNL$r@aLs$7$^$9!#$3$&$9$k$H!"(B +gnus $B$,$I$N%0%k!<%W$,?7$7$$$+$N5-O?$r;}$C$F$$$J$$$3$H$K$J$j$^$9$N$G!"?7(B +$B$7$$%0%k!<%W$N<+F09XFIJ}K!$O0UL#$,L5$/$J$j$^$9!#$3$NJQ?t$r(B @code{nil} $B$K(B +$B$7$?$H$-$O!"(B@code{gnus-check-new-newsgroups} $B$r>o(B +$B$K(B @code{nil} $B$+(B @code{ask-server} $B$K$7$F$*$/$Y$-$G$7$g(B +$B$&(B (@pxref{New Groups})$B!#$3$NJQ?t$O@55,I=8=$G$"$k$3$H$b$G$-$^$9!#$=$N$h(B +$B$&$J>l9g$O!"%U%!%$%k$rJ]B8$9$kD>A0$K$=$N@55,I=8=$K9gCW$7$J$$$9$Y$F$N%0%k!<(B +$B%W$r>C5n$7$^$9!#$3$l$O!"$9$Y$F$N%5!<%P!<$,(B @code{ask-server} $B$rM}2r$9$k(B +$B$o$1$G$O$J$$!"$H$$$C$?$h$&$J!"FCDj$N$"$$$^$$$J>u67$N$H$-$KLr$KN)$D$G$7$g(B +$B$&!#(B @vindex gnus-startup-file $BJQ?t(B @code{gnus-startup-file} $B$O5/F0%U%!%$%k$,$I$3$K$"$k$+$r;XDj$7$^$9!#(B -$B=i4|CM$O(B @file{~/.newsrc} $B$G!"$=$l$,$I$N$h$&$J$b$N$G$"$l!"KvHx$K(B -@samp{.eld} $B$r$D$1$?$b$N$,(B gnus (El Dingo) $B$N5/F0%U%!%$%k$K$J$j$^$9!#(B +$B=i4|CM$O(B @file{~/.newsrc} $B$G!"$=$l$,$I$N$h$&$J$b$N$G$"$l!"KvHx(B +$B$K(B @samp{.eld} $B$r$D$1$?$b$N$,(B gnus (El Dingo) $B$N5/F0%U%!%$%k$K$J$j$^$9!#(B @vindex gnus-save-newsrc-hook @vindex gnus-save-quick-newsrc-hook @vindex gnus-save-standard-newsrc-hook @code{gnus-save-newsrc-hook} $B$O(B newsrc $B%U%!%$%k$NCf$N$I$l$+$rJ]B8$9$kA0(B -$B$KA0(B -$B$N%U%!%$%k$rD4$Y$^$9$,!"@\Hx8l(B @file{.elc} $B$H(B @file{.el} $B$,$D$$$F$$$k$b(B -$B$N$bD4$Y$^$9!#8@$$49$($l$P!"(B@code{gnus-init-file} $B$r(B @file{~/.gnus} $B$K@_(B -$BDj$9$k$H!"(Bgnus $B$O(B ($B$3$N=gHV$K(B) @file{~/.gnus.elc} $B!"(B@file{~/.gnus.el} $B$r(B -$BC5$7!":G8e$K(B @file{~/.gnus} $B$rC5$7$^$9!#(B - - +Gnus $B$,5/F0$9$k$H!"(B@code{gnus-site-init-file} ($B=i4|@_Dj$G(B +$B$O(B @file{.../site-lisp/gnus}) $B$H(B @code{gnus-init-file} ($B=i4|@_Dj$G(B +$B$O(B @file{~/.gnus}) $B$N%U%!%$%k$rFI$_9~$_$^$9!#$3$l$i$OIaDL(B +$B$N(B Emacs Lisp $B%U%!%$%k$G!"(B@file{~/.emacs} $B$d(B @file{site-init} $B%U%!%$%k(B +$B$r(B gnus $B4X78$N$b$N$GMp;($K$7$J$$$h$&$K$9$k$?$a$K;H$&$3$H$,$G$-$^$9!#(B +Gnus $B$O$3$l$i$HF1$8L>A0$N%U%!%$%k$rD4$Y$^$9$,!"@\Hx(B +$B8l(B @file{.elc} $B$H(B @file{.el} $B$,$D$$$F$$$k$b$N$bD4$Y$^$9!#8@$$49$($l$P!"(B +@code{gnus-init-file} $B$r(B @file{~/.gnus} $B$K@_Dj$9$k$H!"(Bgnus $B$O(B ($B$3$N=gHV(B +$B$K(B) @file{~/.gnus.elc}, @file{~/.gnus.el} $B$rC5$7!":G8e(B +$B$K(B @file{~/.gnus} $B$rC5$7$^$9!#(B @node Auto Save @section $B<+F0J]B8(B @@ -1480,10 +1505,8 @@ gnus $B$O%U%!%$%k(B@file{.newsrc} $B$NCV$+$l$F$$$k%G%#%l%/%H%j(B ($B$3$l$OI $B%I%j%V%k%U%!%$%k$O(B @code{.newsrc} $B$HF1$85v2DB0@-$rM?$($i$l$^$9!#(B @vindex gnus-always-read-dribble-file -$B$b$7(B @code{gnus-always-read-dribble-file} $B$,(B @code{nil} $B$G$J$1$l$P!"(Bgnus -$B$OMxMQA0$r;}$D%0%k!<%W$rGS=|$9$k$?$a$K;H$o$l$F$-$^$7$?$,!"6=L#$NL5$$%0%k!<(B -$B%W$N3,AX$rL5;k$9$k$?$a$K;H$&$3$H$b$G$-$^$9!#$7$+$7!"$3$l$O$*4+$a$G$-$^$;(B -$B$s!#K\Ev$N$3$H$r8@$&$H!"A4$/;?@.$G$-$^$;$s!#Be$o$j$K!"$=$N$h$&$JMQES$KMQ(B -$B$$$i$l$kJQ?t$N35N,$rCN$k$?$a$K!"(B@pxref{New Groups} $B$r;2>H$7$F$/$@$5$$!#(B +$B%"%/%F%#%V%U%!%$%k$r8!::$9$kA0$K!"(Bgnus $B$O@55,I=(B +$B8=(B @code{gnus-ignored-newsgroups} $B$K9g$&$9$Y$F$N9T$r:o=|$7$^$9!#$3$l$OA0$r;}$D%0%k!<%W$rGS=|$9$k$?$a$K;H$o$l$F$-$^$7$?$,!"6=L#$NL5$$%0(B +$B%k!<%W$N3,AX$rL5;k$9$k$?$a$K;H$&$3$H$b$G$-$^$9!#$7$+$7!"$3$l$O$*4+$a$G$-(B +$B$^$;$s!#K\Ev$N$3$H$r8@$&$H!"A4$/;?@.$G$-$^$;$s!#Be$o$j$K!"$=$N$h$&$JMQES(B +$B$KMQ$$$i$l$kJQ?t$N35N,$rCN$k$?$a$K!"(B@pxref{New Groups} $B$r;2>H$7$F$/$@$5(B +$B$$!#(B @c This variable is @c @code{nil} by default, and will slow down active file handling somewhat @@ -1509,9 +1533,9 @@ Gnus $B$O5/F0$7$?$H$-$d!"pJs$@$1$rF@(B $B$F$d$C$F$$$3$&$H$7$^$9!#(B @@ -1523,14 +1547,14 @@ Gnus $B$O5/F0$7$?$H$-$d!"u$N>pJs$r9XFI$5$l$F$$$k%0%k!<%W$N$b$N$@$1$rF@$h$&$H$7$^$9!#$$$/$D$+$N%5!<(B -$B%P!<(B ($BL?Na(B@code{LIST ACTIVE group} $B$r;H$&$3$H$N$G$-$k!":G?71T$N(B INN $B%5!<(B +$B%P!<(B ($BL?Na(B @code{LIST ACTIVE group} $B$r;H$&$3$H$N$G$-$k!":G?71T$N(B INN $B%5!<(B $B%P!<(B) $B$G$O!"Hs>o$KAa$/$J$k$G$7$g$&$,!"B>$N%5!<%P!<$G$OB.$/$O$"$j$^$;$s!#(B $B$I$N$h$&$K$;$h!"CY$$2s@~$G$O(B @code{some} $B$O(B @code{nil} $B$h$j$bB.$/!"$=$l(B $B$O$b$A$m$s(B@code{t} $B$h$j$bB.$/$J$j$^$9!#(B -$B$$$/$D$+$N%K%e!<%9%5!<%P!<(B ($BNc$($P(B Leafnode $B$d8E$$(B INN) $B$K$OL?Na(B -@code{LIST ACTIVE group} $B$,$"$j$^$;$s!#$=$&$$$&%5!<%P!<$K$O(B @code{nil} $B$r(B -$B$3$NJQ?t$NCM$K@_Dj$9$k$N$,!"$*$=$i$/$b$C$H$bM-8z$G$7$g$&!#(B +$B$$$/$D$+$N%K%e!<%9%5!<%P!<(B ($BNc$($P(B Leafnode $B$d8E$$(B INN) $B$K$OL?(B +$BNa(B @code{LIST ACTIVE group} $B$,$"$j$^$;$s!#$=$&$$$&%5!<%P!<$K(B +$B$O(B @code{nil} $B$r$3$NJQ?t$NCM$K@_Dj$9$k$N$,!"$*$=$i$/$b$C$H$bM-8z$G$7$g$&!#(B $B$b$7$3$NJQ?t$,(B @code{nil} $B$G$"$k$H!"(Bgnus $B$O40A4$K$,$s$8$,$i$a$NJ}K!$G%0(B $B%k!<%W$N>pJs$rF@$h$&$H$7$^$9!#$=$7$F!"$3$l$O$"$^$jB.$/$"$j$^$;$s!#$b$7$=(B @@ -1539,15 +1563,14 @@ Gnus $B$O5/F0$7$?$H$-$d!"e$2$k$?$a(B $B$K$9$Y$F$N6=L#$NL5$$%0%k!<%W$rI,$::o=|$9$k$Y$-$G$7$g$&!#(B -$B$3$NJQ?t$O(B2$Be$NJQ?t$,(B @code{nil} $B$G$J$$$H$-$K1iAU$5$l$kC;$$6J$G$9!#=i4|CM$O(B -@samp{Tuxdemoon.Jingle4.au} $B$G$9!#(B +$B>e$NJQ?t$,(B @code{nil} $B$G$J$$$H$-$K1iAU$5$l$kC;$$6J$G$9!#=i4|CM(B +$B$O(B @samp{Tuxdemoon.Jingle4.au} $B$G$9!#(B @end table - @node The Group Buffer @chapter $B%0%k!<%W%P%C%U%!(B @cindex group buffer -$B%0%k!<%W%P%C%U%!(B (@dfn{group buffer}) $B$OM-8z$J%0%k!<%W$rA4It!J$"$k$$$O0l(B -$BIt$r!K0lMwI=<($7$^$9!#$3$l$O(B gnus $B$r5/F0$7$?$H$-$K:G=i$KI=<($5$l$k%P%C%U%!(B +$B%0%k!<%W%P%C%U%!(B (@dfn{group buffer}) $B$OM-8z$J%0%k!<%W$rA4It(B ($B$"$k$$$O0l(B +$BIt$r(B) $B0lMwI=<($7$^$9!#$3$l$O(B gnus $B$r5/F0$7$?$H$-$K:G=i$KI=<($5$l$k%P%C%U%!(B $B$G!"(Bgnus $B$,@8$-$F$$$k8B$j7h$7$F>C$5$l$k$3$H$O$"$j$^$;$s!#(B - @iftex @iflatex \gnusfigure{The Group Buffer}{320}{ @@ -1635,42 +1656,40 @@ Gnus $B$N5/F0$K@.8y$7$?8e$K!"0lHV:G8e$KpJs$HJQ99$NJ}K!!#(B -* Group Maneuvering:: $B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I!#(B -* Selecting a Group:: $BpJs$rJQ99$9$k!#(B -* Subscription Commands:: $B9XFI!"9XFICf;_!">C5n!#(B -* Group Levels:: $B%l%Y%k!)$=$l$C$F2?!)(B -* Group Score:: $B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!!#(B -* Marking Groups:: $B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-$^$9!#(B -* Foreign Groups:: $B%0%k!<%W$N:n@.$H=$@5!#(B -* Group Parameters:: $B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l$^$9!#(B -* Listing Groups:: Gnus $B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<($G$-$^$9!#(B -* Sorting Groups:: $B%0%k!<%W$N=gHV$NG[CVBX$(!#(B -* Group Maintenance:: $B$-$l$$$J(B @file{.newsrc} $B$NJ]$AJ}!#(B -* Browse Foreign Server:: $B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_$h$&!#(B -* Exiting Gnus:: $B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&!#(B -* Group Topics:: $B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d$9$k!#(B -* Misc Group Stuff:: $BB>$K$G$-$k$3$H!#(B +* Group Buffer Format:: $BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!(B +* Group Maneuvering:: $B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I(B +* Selecting a Group:: $BpJs$rJQ99$9$k(B +* Subscription Commands:: $B9XFI!"9XFICf;_!">C5n(B +* Group Levels:: $B%l%Y%k(B? $B$=$l$C$F2?(B? +* Group Score:: $B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!(B +* Marking Groups:: $B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-$^$9(B +* Foreign Groups:: $B%0%k!<%W$N:n@.$H=$@5(B +* Group Parameters:: $B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l$^$9(B +* Listing Groups:: Gnus $B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<($G$-$^$9(B +* Sorting Groups:: $B%0%k!<%W$N=gHV$NG[CVBX$((B +* Group Maintenance:: $B$-$l$$$J(B @file{.newsrc} $B$NJ]$AJ}(B +* Browse Foreign Server:: $B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_$h$&(B +* Exiting Gnus:: $B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&(B +* Group Topics:: $B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d$9$k(B +* Misc Group Stuff:: $BB>$K$G$-$k$3$H(B @end menu - @node Group Buffer Format @section $B%0%k!<%W%P%C%U%!$N7A<0(B @menu -* Group Line Specification:: $B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k!#(B -* Group Modeline Specification:: $B%0%k!<%W%P%C%U%!$N%b!<%I9T!#(B -* Group Highlighting:: $B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k!#(B +* Group Line Specification:: $B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k(B +* Group Modeline Specification:: $B%0%k!<%W%P%C%U%!$N%b!<%I9T(B +* Group Highlighting:: $B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k(B @end menu - @node Group Line Specification @subsection $B%0%k!<%W9T$N;EMM(B @cindex group buffer format -$B%0%k!<%W%P%C%U%!$N=i4|@_Dj7A<0$O$-$l$$$G$D$^$s$J$$$1$I!"$3(B -$B$l$O7/$N9%$-$J$h$&$K!"%5%$%3!<$K%@%5$/$9$k$3$H$b$G$-$^$9!#(B +$B%0%k!<%W%P%C%U%!$N=i4|@_Dj7A<0$O$-$l$$$G$D$^$s$J$$$1$I!"$3$l$O7/$N9%$-$J(B +$B$h$&$K!"%5%$%3!<$K%@%5$/$9$k$3$H$b$G$-$^$9!#(B $B$3$l$,%0%k!<%W9T$NNc$G$9!#(B @@ -1679,30 +1698,29 @@ Gnus $B$N5/F0$K@.8y$7$?8e$K!"0lHV:G8e$Ke5-$N9T$r@8@.$7$^$9!#(B -$B%3%m%s$O!"$3$N9T$NCf$KI,$:L5$/$F$O$$$1$^$;$s!#%+!<%=%k$O!"2?$+$NA`:n$r$7$?(B -$B8e$O>o$K%3%m%s$N$H$3$m$K0\F0$9$k$+$i$G$9!#B>$K$O2?$bI,MW$G$O$"$j$^$;$s!=!=(B -$B%0%k!<%WL>$5$($b$G$9!#I=<($5$l$F$$$kJ8;z$OA4$F$?$@$N2hLL$N>~$j$G$"$j!"(B -gnus $B$,$=$l$rD4$Y$k$3$H$O$"$j$^$;$s!#(BGnus $B$OI,MW$H$9$kA4$F$NpJs$r!"%F%-(B -$B%9%HB0@-$r;H$C$F21$($F$$$^$9!#(B - +$B%3%m%s$O!"$3$N9T$NCf$KI,$:L5$/$F$O$$$1$^$;$s!#%+!<%=%k$O!"2?$+$NA`:n$r$7(B +$B$?8e$O>o$K%3%m%s$N$H$3$m$K0\F0$9$k$+$i$G$9!#B>$K$O2?$bI,MW$G$O$"$j$^$;(B +$B$s!=!=%0%k!<%WL>$5$($b$G$9!#I=<($5$l$F$$$kJ8;z$OA4$F$?$@$N2hLL$N>~$j$G$"(B +$B$j!"(Bgnus $B$,$=$l$rD4$Y$k$3$H$O$"$j$^$;$s!#(BGnus $B$OI,MW$H$9$kA4$F$NpJs$r!"(B +$B%F%-%9%HB0@-$r;H$C$F21$($F$$$^$9!#(B -$B!J$b$77/$,!"$9$4$/%X%s$J!"AG@2$i$7$$!"I=7W;;Iw$N%l%$%"%&%H$r:n$C$?$H$7$?$i!"(B -$B$_$s$J!"7/$O2q7W$N;E;v$,K;$7$/$C$F!"%K%e!<%9$rFI$s$G;~4V$rL5BL;H$$$7$?$j$J(B -$B$s$+$7$F$J$$!"$C$F?.$8$F$/$l$k$h!#!K(B +($B$b$77/$,!"$9$4$/%X%s$J!"AG@2$i$7$$!"I=7W;;Iw$N%l%$%"%&%H$r:n$C$?$H$7$?(B +$B$i!"$_$s$J!"7/$O2q7W$N;E;v$,K;$7$/$C$F!"%K%e!<%9$rFI$s$G;~4V$rL5BL;H$$$7(B +$B$?$j$J$s$+$7$F$J$$!"$C$F?.$8$F$/$l$k$h!#(B) $B0J2<$,;HMQ$G$-$k%U%)!<%^%C%HJ8;z$N%j%9%H$G$9!#(B @@ -1730,7 +1748,7 @@ gnus $B$,$=$l$rD4$Y$k$3$H$O$"$j$^$;$s!#(BGnus $B$OI,MW$H$9$kA4$F$NpJs$r!"% $B4{FI5-;v$N?t!#(B @item t -$B?dDjA45-;v?t!J$3$l$OpJs$r!"% @item c @vindex gnus-group-uncollapsed-levels -$BC;$$!J>JN,$7$?!K%0%k!<%WL>!#(B@code{gnus-group-uncollapsed-levels} $BJQ?t$O!"(B +$BC;$$(B ($B>JN,$7$?(B) $B%0%k!<%WL>!#(B@code{gnus-group-uncollapsed-levels} $BJQ?t$O!"(B $B$I$N%l%Y%k$^$G%0%k!<%WL>$rA4It;D$9$+$r<($7$^$9!#=i4|CM$O(B 1 $B$G$9!=!=$3(B -$B$N0UL#$O!"(B@samp{gnu.emacs.gnus} $B$N$h$&$J%0%k!<%WL>$r(B @samp{g.e.gnus} -$B$KC;=L$9$k$H$$$&$3$H$G$9!#(B +$B$N0UL#$O!"(B@samp{gnu.emacs.gnus} $B$N$h$&$J%0%k!<%WL>(B +$B$r(B @samp{g.e.gnus} $B$KC;=L$9$k$H$$$&$3$H$G$9!#(B @item m @vindex gnus-new-mail-mark @cindex % -$B$=$N%0%k!<%W$K:G6a?7Ce%a!<%k$,FO$$$F$$$k>l9g$O(B @samp{%} -(@code{gnus-new-mail-mark})$B!#(B +$B$=$N%0%k!<%W$K:G6a?7Ce%a!<%k$,FO$$$F$$$k>l9g(B +$B$O(B @samp{%} (@code{gnus-new-mail-mark})$B!#(B @item d $B:G8e$K$$$D$3$N%0%k!<%W$rFI$s$@$+$r<($9J8;zNs(B (@pxref{Group Timestamp})$B!#(B @item u -$BMxMQ$N3F;XDjJ8;z(B -$B$N>pJs$HF1MM$K!"%P%C%U%!$KA^F~$5$l$kJ8;zNs$rJV$5$J$1$l$P$J$j$^$;$s!#(B +$BMxMQ$N3F;XDjJ8;z$N>pJs$HF1MM$K!"(B +$B%P%C%U%!$KA^F~$5$l$kJ8;zNs$rJV$5$J$1$l$P$J$j$^$;$s!#(B @end table @cindex * -$BA4$F$N!V!A$N?t!W$N;XDj$G!"$b$7$=$N>pJs$,MxMQ$G$-$J$$>l9g$K$O%"%9%?%j%9%/(B -(@samp{*}) $B$,Kd$a$i$l$^$9!=!=Nc$($P!"5/F0$5$l$F$$$J$$30It%0%k!<%W$d!"IT@5(B -$B$J4pK\%0%k!<%W$N>l9g$G$9!#(B - +$BA4$F$N!V!A$N?t!W$N;XDj$G!"$b$7$=$N>pJs$,MxMQ$G$-$J$$>l9g$K$O%"%9%?%j%9(B +$B%/(B (@samp{*}) $B$,Kd$a$i$l$^$9!=!=Nc$($P!"5/F0$5$l$F$$$J$$30It%0%k!<%W$d!"(B +$BIT@5$J4pK\%0%k!<%W$N>l9g$G$9!#(B @node Group Modeline Specification @subsection $B%0%k!<%W%b!<%I9T$N;EMM(B @cindex group modeline @vindex gnus-group-mode-line-format -$B%b!<%I9T$O(B @code{gnus-group-mode-line-format} (@pxref{Mode Line -Formatting}) $B$r@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s$^$j$?(B -$B$/$5$sCN$C$F$^$;$s!#(B +$B%b!<%I9T(B +$B$O(B @code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}) $B$r(B +$B@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s$^$j$?$/$5$sCN$C$F$^$;(B +$B$s!#(B @table @samp @item S @@ -1811,7 +1830,6 @@ Formatting}) $B$r@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s$^$j$?(B $B4pK\A*BrJ}K!!#(B @end table - @node Group Highlighting @subsection $B%0%k!<%W$N%O%$%i%$%H(B @cindex highlighting @@ -1823,8 +1841,8 @@ Formatting}) $B$r@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s$^$j$?(B $BMWAG$K;}$DO"A[%j%9%H$G$9!#(B@var{form} $B$,2?$+(B @code{nil} $B0J30$KI>2A$5$l$k(B $B$b$N$J$i!"$=$N9T$KBP$7$F(B @var{face} $B$,;HMQ$5$l$^$9!#(B -$B0J2<$,$3$NJQ?t$NCM$NNc$G$9!#$3$l$OGX7J$,0E$$@_Dj$G$O$-$l$$$K8+$((B -$B$k$+$bCN$l$^$;$s!#(B +$B0J2<$,$3$NJQ?t$NCM$NNc$G$9!#$3$l$OGX7J$,0E$$@_Dj$G$O$-$l$$$K8+$($k$+$bCN(B +$B$l$^$;$s!#(B @lisp (cond (window-system @@ -1850,9 +1868,8 @@ Formatting}) $B$r@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s$^$j$?(B @pxref{Faces and Fonts} $B$b;2>H$7$F$/$@$5$$!#(B -$B$3$N(B form $B$,I>2A$5$l$k$H$-$KF0E*$KB+G{$5$l$F$$$kJQ?t$K$O0J2<$N$b(B -$B$N$,$"$j$^$9!#(B - +$B$3$N(B form $B$,I>2A$5$l$k$H$-$KF0E*$KB+G{$5$l$F$$$kJQ?t$K$O0J2<$N$b$N$,$"$j(B +$B$^$9!#(B @table @code @item group @@ -1873,43 +1890,42 @@ Formatting}) $B$r@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s$^$j$?(B $B$=$N%0%k!<%WCf$NA45-;v?t!#$b$C$H@53N$K8@$&$H!"(BMAX-NUMBER - MIN_NUMBER + 1. @item topic -$B%H%T%C%/%^%$%J!<%b!<%I$r;HMQ$7$F$$$k;~!"$3$NJQ?t$OA^F~$5$l$F$$(B -$B$k8=:_$N%H%T%C%/$KB+G{$5$l$^$9!#(B +$B%H%T%C%/%^%$%J!<%b!<%I$r;HMQ$7$F$$$k;~!"$3$NJQ?t$OA^F~$5$l$F$$$k8=:_$N%H(B +$B%T%C%/$KB+G{$5$l$^$9!#(B @end table -$B$3$N(B form $B$,I>2A(B (@code{eval}) $B$5$l$k$H$-$O!"%]%$%s%H$OLdBj$N%0%k!<%W$N9T(B -$BF,$K$"$j$^$9!#=>$C$F!"DL>o$N(B gnus $B$N4X?t$N$[$H$s$I$r;H$C$F$=$N%0%k!<%W$N>p(B -$BJs$r2A(B (@code{eval}) $B$5$l$k$H$-$O!"%]%$%s%H$OLdBj$N%0%k!<%W$N(B +$B9TF,$K$"$j$^$9!#=>$C$F!"DL>o$N(B gnus $B$N4X?t$N$[$H$s$I$r;H$C$F$=$N%0%k!<%W(B +$B$N>pJs$r.$5$$%l%Y%k!K$NL$FI%0%k!<%W$K0\F0$7$^(B -$B$9(B(@code{gnus-group-prev-unread-group-same-level})$B!#(B +$B0l$DA0$NF1$8%l%Y%k(B ($B$b$7$/$O$=$l$h$j>.$5$$%l%Y%k(B) $B$NL$FI%0%k!<%W$K0\F0$7(B +$B$^$9(B (@code{gnus-group-prev-unread-group-same-level})$B!#(B @item M-p @kindex M-p (Group) @findex gnus-group-next-unread-group-same-level -$B.$5$$%l%Y%k(B)$B$NL$FI%0%k!<%W$K0\F0$7$^$9(B -(@code{gnus-group-next-unread-group-same-level})$B!#(B +$B.$5$$%l%Y%k(B)$B$NL$FI%0%k!<%W$K0\F0$7$^(B +$B$9(B (@code{gnus-group-next-unread-group-same-level})$B!#(B @end table -$B.$5$$%l%Y%k$NL$FI%0%k!<%W$K%8%c%s%W$7$^$9(B -(@code{gnus-group-best-unread-group})$B!#(B +$B:G$b>.$5$$%l%Y%k$NL$FI%0%k!<%W$K%8%c%s%W$7$^(B +$B$9(B (@code{gnus-group-best-unread-group})$B!#(B @item . @kindex . (Group) @findex gnus-group-first-unread-group -$B:G=i$NL$FI5-;v$N$"$k%0%k!<%W$K%8%c%s%W$7$^$9(B -(@code{gnus-group-first-unread-group})$B!#(B +$B:G=i$NL$FI5-;v$N$"$k%0%k!<%W$K%8%c%s%W$7$^(B +$B$9(B (@code{gnus-group-first-unread-group})$B!#(B @end table @vindex gnus-group-goto-unread -@code{gnus-group-goto-unread} $B$r(B @code{nil} $B$K$9$k$H!"A4$F$N0\F0(B -$B%3%^%s%I$O!"e5-$N%3%^%s%I$HF1$8F0:n$r$7$^$9$,!"!V%4%?%4%?!W$O:GDc8B$K$7$h$&$H$7(B -$B$^$9(B (@code{gnus-group-quick-select-group})$B!#%9%3%"!&(Bkill $B$N=hM}$O9T$o$l$:!"(B -$B%O%$%i%$%H$b5-;v>C5n$b$7$^$;$s!#$3$l$O!"$"$J$?$,K\Ev$K5^$$$G$$$F!"$I$C$+$N(B -$B$d$?$i$G$C$+$$%0%k!<%W$KF~$i$J$1$l$P$$$1$J$$$H$-$KLr$KN)$D$+$b$7$l$^$;$s!#(B -$B$^$?!"@\F,<-$K(B 0 $B$rM?$($l$P!J$9$J$o$A(B @kbd{0 M-RET}$B!K!"(Bgnus $B$O35N,%P%C%U%!(B -$B$r:n$m$&$H$5$($7$^$;$s!#$3$l$O35N,%P%C%U%!$r:n$kA0$K%9%l%C%II=(B -$B<($r@Z$jBX$($?$$$H$-Lr$KN)$A$^$9(B (@pxref{Summary Generation Commands})$B!#(B +$B$3$l$O>e5-$N%3%^%s%I$HF1$8F0:n$r$7$^$9$,!"!V%4%?%4%?!W$O:GDc8B$K$7$h$&$H(B +$B$7$^$9(B (@code{gnus-group-quick-select-group})$B!#%9%3%"!&(Bkill $B$N=hM}$O9T$o(B +$B$l$:!"%O%$%i%$%H$b5-;v>C5n$b$7$^$;$s!#$3$l$O!"$"$J$?$,K\Ev$K5^$$$G$$$F!"(B +$B$I$C$+$N$d$?$i$G$C$+$$%0%k!<%W$KF~$i$J$1$l$P$$$1$J$$$H$-$KLr$KN)$D$+$b$7(B +$B$l$^$;$s!#$^$?!"@\F,<-$K(B 0 $B$rM?$($l$P(B ($B$9$J$o$A(B @kbd{0 M-RET})$B!"(Bgnus $B$O(B +$B35N,%P%C%U%!$r:n$m$&$H$5$($7$^$;$s!#$3$l$O35N,%P%C%U%!$r:n$kA0$K%9%l%C%I(B +$BI=<($r@Z$jBX$($?$$$H$-Lr$KN)$A$^$9(B (@pxref{Summary Generation Commands})$B!#(B @item M-SPACE @kindex M-SPACE (Group) @findex gnus-group-visible-select-group -$B$3$l$O(B @kbd{RET} $B%3%^%s%I$HF1$8F0:n$r$9$k$5$i$K$b$&0l$D$N%3%^%s(B -$B%I$G$9$,!"$3$N%3%^%s%I$O5-;v>C5n$HJ]N15-;v$r1#$9=hM}$r9T$$$^$;$s(B -(@code{gnus-group-visible-select-group})$B!#(B +$B$3$l$O(B @kbd{RET} $B%3%^%s%I$HF1$8F0:n$r$9$k$5$i$K$b$&0l$D$N%3%^%s%I$G$9$,!"(B +$B$3$N%3%^%s%I$O5-;v>C5n$HJ]N15-;v$r1#$9=hM}$r9T$$$^$;(B +$B$s(B (@code{gnus-group-visible-select-group})$B!#(B @item M-C-RET @kindex M-C-RET (Group) @findex gnus-group-select-group-ephemerally -$B:G8e$K$3$N%3%^%s%I$O!"8=:_$N%0%k!<%W$r0lEY8B$j!"$=$NFbMF$K0l@Z$N(B -$B=hM}$r$9$k$3$H$N$J$$$h$&$KA*Br$7$^$9(B -(@code{gnus-group-select-group-ephemerally})$B!#(B $B%9%l%C%II=<($5(B -$B$($b9T$o$l$^$;$s!#$3$NJ}K!$GA*Br$7$?8e$K$3$N%0%k!<%W$KBP$7$F9T$C(B -$B$?$3$H$OA4$F!"$=$N8e$K1F6A$rM?$($k$3$H$O$"$j$^$;$s!#(B +$B:G8e$K$3$N%3%^%s%I$O!"8=:_$N%0%k!<%W$r0lEY8B$j!"$=$NFbMF$K0l@Z$N=hM}$r$9(B +$B$k$3$H$N$J$$$h$&$KA*Br$7$^(B +$B$9(B (@code{gnus-group-select-group-ephemerally})$B!#%9%l%C%II=<($5$($b9T$o(B +$B$l$^$;$s!#$3$NJ}K!$GA*Br$7$?8e$K$3$N%0%k!<%W$KBP$7$F9T$C$?$3$H$OA4$F!"$=(B +$B$N8e$K1F6A$rM?$($k$3$H$O$"$j$^$;$s!#(B @end table @vindex gnus-large-newsgroup -@code{gnus-large-newsgroup} $BJQ?t$O!"2?$rBg$-$J%0%k!<%W$H9M$($k$Y$-$+!"$r(B -gnus $B$KM?$($^$9!#$3$l$O=i4|@_Dj$G$O(B 200 $B$G$9!#%0%k!<%W$K!JL$FI$H0uIU$-(B -$B$N!K5-;v$,$3$N?t0J>e$"$l$P!"(Bgnus $B$O$=$N%0%k!<%W$KF~$kA0$KMxMQe$"$l$P!"(Bgnus $B$O$=$N%0%k!<%W$KF~$kA0$KMxMQl9g$O!"$=$N4X?t$OI=Bj$N9T$K%]%$(B @@ -2061,12 +2083,10 @@ gnus $B$KM?$($^$9!#$3$l$O=i4|@_Dj$G$O(B 200 $B$G$9!#%0%k!<%W$K!JL$FI$H0uIU$- $B:G9b%9%3%"$NL$FI5-;v$rA*Br$7$^$9!#(B @end table - -$B$b$7$"$k%0%k!<%W$G<+F05-;vA*Br$r$d$a$?$$$N$G$"$l$P!JNc$($P$G$C$+$$5-;v$N$"(B -$B$k%P%$%J%j%0%k!<%W$G$O!"$H$+!K!"%0%k!<%W$,A*Br$5$l$?$H$-$K8F$S=P$5$l$k(B -@code{gnus-select-group-hook} $B$NCf$G$3$NJQ?t$r(B @code{nil} $B$K@_Dj$9$k$3$H$,(B -$B$G$-$^$9!#(B - +$B$b$7$"$k%0%k!<%W$G<+F05-;vA*Br$r$d$a$?$$$N$G$"$l$P(B ($BNc$($P$G$C$+$$5-;v$N(B +$B$"$k%P%$%J%j%0%k!<%W$G$O!"$H$+(B)$B!"%0%k!<%W$,A*Br$5$l$?$H$-$K8F$S=P$5$l$k(B +@code{gnus-select-group-hook} $B$NCf$G$3$NJQ?t$r(B @code{nil} $B$K@_Dj$9$k$3$H(B +$B$,$G$-$^$9!#(B @node Subscription Commands @section $B9XFI@)8f%3%^%s%I(B @@ -2080,17 +2100,16 @@ gnus $B$KM?$($^$9!#$3$l$O=i4|@_Dj$G$O(B 200 $B$G$9!#%0%k!<%W$K!JL$FI$H0uIU$- @kindex u (Group) @findex gnus-group-unsubscribe-current-group @c @icon{gnus-group-unsubscribe} -$B8=:_$N%0%k!<%W$N9XFI$r@Z$jBX$($^$9(B -(@code{gnus-group-unsubscribe-current-group})$B!#(B +$B8=:_$N%0%k!<%W$N9XFI$r@Z$jBX$($^(B +$B$9(B (@code{gnus-group-unsubscribe-current-group})$B!#(B @item S s @itemx U @kindex S s (Group) @kindex U (Group) @findex gnus-group-unsubscribe-group -$B%0%k!<%W$r9XFI$9$k$+$I$&$+$r3NG'$7!"9XFI$7$^$9!#$9$G$K9XFI$9$k$h(B -$B$&$K$J$C$F$$$k>l9g$K$O!"9XFI$r;_$a$^$9(B -(@code{gnus-group-unsubscribe-group})$B!#(B +$B%0%k!<%W$r9XFI$9$k$+$I$&$+$r3NG'$7!"9XFI$7$^$9!#$9$G$K9XFI$9$k$h$&$K$J$C(B +$B$F$$$k>l9g$K$O!"9XFI$r;_$a$^$9(B (@code{gnus-group-unsubscribe-group})$B!#(B @item S k @itemx C-k @@ -2105,47 +2124,42 @@ gnus $B$KM?$($^$9!#$3$l$O=i4|@_Dj$G$O(B 200 $B$G$9!#%0%k!<%W$K!JL$FI$H0uIU$- @kindex S y (Group) @kindex C-y (Group) @findex gnus-group-yank-group -$B:G8e$K(B kill $B$7$?%0%k!<%W$r(B yank $B$7$^$9(B -(@code{gnus-group-yank-group})$B!#(B +$B:G8e$K(B kill $B$7$?%0%k!<%W$r(B yank $B$7$^$9(B (@code{gnus-group-yank-group})$B!#(B @item C-x C-t @kindex C-x C-t (Group) @findex gnus-group-transpose-groups -$BFs$D$N%0%k!<%W$N=g=x$rCV$-49$($^$9(B -(@code{gnus-group-transpose-groups})$B!#(B $B$3$l$O%[%s%H$O9XFI%3%^%s(B -$B%I$G$O$"$j$^$;$s$,!"(Bkill $B$H(B yank $B$r2?EY$+B3$1$kBe$o$j$K$3$N%3%^(B -$B%s%I$,;H$($^$9!#(B +$BFs$D$N%0%k!<%W$N=g=x$rCV$-49$($^$9(B (@code{gnus-group-transpose-groups})$B!#(B +$B$3$l$O%[%s%H$O9XFI%3%^%s%I$G$O$"$j$^$;$s$,!"(Bkill $B$H(B yank $B$r2?EY$+B3$1$k(B +$BBe$o$j$K$3$N%3%^%s%I$,;H$($^$9!#(B @item S w @itemx C-w @kindex S w (Group) @kindex C-w (Group) @findex gnus-group-kill-region -$B%j!<%8%g%sFb$NA4$F$N%0%k!<%W$r(B kill $B$7$^$9(B -(@code{gnus-group-kill-region})$B!#(B +$B%j!<%8%g%sFb$NA4$F$N%0%k!<%W$r(B kill $B$7$^(B +$B$9(B (@code{gnus-group-kill-region})$B!#(B @item S z @kindex S z (Group) @findex gnus-group-kill-all-zombies -$BA4$F$N%>%s%S%0%k!<%W$r(B kill $B$7$^$9(B -(@code{gnus-group-kill-all-zombies})$B!#(B +$BA4$F$N%>%s%S%0%k!<%W$r(B kill $B$7$^$9(B (@code{gnus-group-kill-all-zombies})$B!#(B @item S C-k @kindex S C-k (Group) @findex gnus-group-kill-level -$B$"$k%l%Y%k$N%0%k!<%W$rA4$F(B kill $B$7$^$9(B -(@code{gnus-group-kill-level})$B!#(B kill $B$7$?8e!"$3$l$i$N%0%k!<%W$r(B -yank $B$GLa$9$3$H$O$G$-$J$$$N$G!"$3$N%3%^%s%I$O$$$/$i$+Cm0U$7$F;H$C(B -$B$F$/$@$5$$!#$3$N%3%^%s%I$,K\Ev$KJXMx$K$J$k$N$O!"(B@file{.newsrc} -$B$KH$7$F$/$/$@$5$$!#(B - @node Group Data @section $B%0%k!<%W%G!<%?(B @@ -2156,44 +2170,42 @@ yank $B$GLa$9$3$H$O$G$-$J$$$N$G!"$3$N%3%^%s%I$O$$$/$i$+Cm0U$7$F;H$C(B @findex gnus-group-catchup-current @vindex gnus-group-catchup-group-hook @c @icon{gnus-group-catchup-current} -$B$=$N%0%k!<%WFb$NA4$F$NL50u$N5-;v$r4{FI$K$9$k(B -(@code{gnus-group-catchup-current})$B!#%0%k!<%W%P%C%U%!$+$i4{FI$K$7$?>l9g$O(B -@code{gnus-group-catchup-group-hook} $B$,8F$S=P$5$l$^$9!#(B +$B$=$N%0%k!<%WFb$NA4$F$NL50u$N5-;v$r4{FI$K$9(B +$B$k(B (@code{gnus-group-catchup-current})$B!#%0%k!<%W%P%C%U%!$+$i4{FI$K$7$?>l(B +$B9g$O(B @code{gnus-group-catchup-group-hook} $B$,8F$S=P$5$l$^$9!#(B @item C @kindex C (Group) @findex gnus-group-catchup-current-all -$B$=$N%0%k!<%W$NA45-;v$r!"0uIU$-$N5-;v$b4^$a$F4{FI$K$7$^$9(B -(@code{gnus-group-catchup-current-all})$B!#(B +$B$=$N%0%k!<%W$NA45-;v$r!"0uIU$-$N5-;v$b4^$a$F4{FI$K$7$^(B +$B$9(B (@code{gnus-group-catchup-current-all})$B!#(B @item M-c @kindex M-c (Group) @findex gnus-group-clear-data -$B8=:_$N%0%k!<%W$NA4$F$N%G!<%?$r%/%j%"$7$^$9!=!=%^!<%/$H4{FI5-;v$N%j%9%H$r>C(B -$B$75n$j$^$9(B (@code{gnus-group-clear-data})$B!#(B +$B8=:_$N%0%k!<%W$NA4$F$N%G!<%?$r%/%j%"$7$^$9!=!=%^!<%/$H4{FI5-;v$N%j%9%H$r(B +$B>C$75n$j$^$9(B (@code{gnus-group-clear-data})$B!#(B @item M-x gnus-group-clear-data-on-native-groups @kindex M-x gnus-group-clear-data-on-native-groups @findex gnus-group-clear-data-on-native-groups -$B$b$7(B @sc{nntp} $B%5!<%P$rJL$N$b$N$K@Z$jBX$($?$H$9$k$H!"A4$F$N%^!<%/$H4{FI>p(B -$BJs$O$b$&Lr$K$ON)$A$^$;$s!#$3$N%3%^%s%I$r;H$C$F4pK\%0%k!<%W$NA4$F$N%G!<(B +$B$b$7(B @sc{nntp} $B%5!<%P$rJL$N$b$N$K@Z$jBX$($?$H$9$k$H!"A4$F$N%^!<%/$H4{FI(B +$B>pJs$O$b$&Lr$K$ON)$A$^$;$s!#$3$N%3%^%s%I$r;H$C$F4pK\%0%k!<%W$NA4$F$N%G!<(B $B%?$r%/%j%"$9$k$3$H$,$G$-$^$9!#Cm0U$7$F;H$C$F$M!#(B @end table - @node Group Levels @section $B%0%k!<%W%l%Y%k(B @cindex group level @cindex level $BA4$F$N%0%k!<%W$O(B @dfn{$B9XFIEY(B} (@dfn{subscribedness}) $B$N%l%Y%k$r;}$A$^$9!#(B -$BNc$($P!"$"$k%0%k!<%W$,%l%Y%k(B 2 $B$@$H$9$l$P!"$=$l$O%l%Y%k(B 5 $B$N%0%k!<(B -$B%W$h$j$b!V$h$j9XFI$7$F$$$k!W$H$$$&$3$H$G$9!#(BGnus $B$KBP$7$F!"$"$k(B -$B%l%Y%k$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<%W$N$_0lMwI=<($9$k$h$&$KMj$`(B -$B$3$H$b$G$-$k$7(B (@pxref{Listing Groups})$B!"$"$k%l%Y%k$+$=$l$h$j>.(B -$B$5$$%l%Y%k$N%0%k!<%W$N?7Ce5-;v$N$_$r3NG'$9$k$3$H$b$G$-$^$9(B -(@pxref{Scanning New Messages})$B!#(B +$BNc$($P!"$"$k%0%k!<%W$,%l%Y%k(B 2 $B$@$H$9$l$P!"$=$l$O%l%Y%k(B 5 $B$N%0%k!<%W$h$j(B +$B$b!V$h$j9XFI$7$F$$$k!W$H$$$&$3$H$G$9!#(BGnus $B$KBP$7$F!"$"$k%l%Y%k$+$=$l$h(B +$B$j>.$5$$%l%Y%k$N%0%k!<%W$N$_0lMwI=<($9$k$h$&$KMj$`$3$H$b$G$-$k(B +$B$7(B (@pxref{Listing Groups})$B!"$"$k%l%Y%k$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<%W(B +$B$N?7Ce5-;v$N$_$r3NG'$9$k$3$H$b$G$-$^$9(B(@pxref{Scanning New Messages})$B!#(B $BK:$l$J$$$G(B: $B%0%k!<%W$N%l%Y%k$,Bg$-$$$[$I!"=EMWEY$ODc$/$J$k$H$$$&$3$H!#(B @@ -2202,9 +2214,9 @@ yank $B$GLa$9$3$H$O$G$-$J$$$N$G!"$3$N%3%^%s%I$O$$$/$i$+Cm0U$7$F;H$C(B @item S l @kindex S l (Group) @findex gnus-group-set-current-level -$B8=:_$N%0%k!<%W$N%l%Y%k$r@_Dj$9$k!#?t;z%W%l%U%#%C%/%9$,M?$($i$l$k(B -$B$H!"$=$3$+$i(B @var{n} $B8D$N%0%k!<%W$N%l%Y%k$,@_Dj$5$l$^$9!#%l%Y%k(B -$B$rF~NO$9$k$?$a$N%W%m%s%W%H$,=P$^$9!#(B +$B8=:_$N%0%k!<%W$N%l%Y%k$r@_Dj$9$k!#?t;z%W%l%U%#%C%/%9$,M?$($i$l$k$H!"$=$3(B +$B$+$i(B @var{n} $B8D$N%0%k!<%W$N%l%Y%k$,@_Dj$5$l$^$9!#%l%Y%k$rF~NO$9$k$?$a$N(B +$B%W%m%s%W%H$,=P$^$9!#(B @end table @@ -2212,64 +2224,82 @@ yank $B$GLa$9$3$H$O$G$-$J$$$N$G!"$3$N%3%^%s%I$O$$$/$i$+Cm0U$7$F;H$C(B @vindex gnus-level-zombie @vindex gnus-level-unsubscribed @vindex gnus-level-subscribed -Gnus $B$O%l%Y%k(B 1 $B$+$i(B @code{gnus-level-subscribed}$B!J$3$NCM$r4^$`!K!J=i4|(B -$BCM$O(B 5$B!K$^$G$N%0%k!<%W$r9XFI!"(B@code{gnus-level-subscribed}$B!J$3$NCM$r4^$^(B -$B$J$$!K$+$i(B@code{gnus-level-unsubscribed}$B!J$3$NCM$r4^$`!K!J=i4|CM$O(B 7$B!K(B -$B$^$G$N%0%k!<%W$rHs9XFI!"(B@code{gnus-level-zombie} $B$r%>%s%S!JJb$/;S!K!J=i(B -$B4|CM$O(B 8$B!K!"(B@code{gnus-level-killed} $B$r(B kill $B$5$l$F$$$k!J40A4$K;`$s$G$k!K(B -$B!J=i4|CM$O(B 9$B!K$HH=CG$7$^$9!#(BGnus $B$O9XFI$HHs9XFI$N%0%k!<%W$OA4$/F1MM$K(B -$B07$$$^$9$,!"%>%s%S$H(B kill $B%0%k!<%W$O!"$I$N5-;v$rFI$s$@$+!"B8:_$9$k$+$J$I$N(B -$B>pJs$r0l@Z;}$A$^$;$s!#$3$N;`$s$G$k%0%k!<%W$H@8$-$F$k%0%k!<%W$N6hJL$O!"JL$K(B -$B$=$l$,$-$l$$$@$+$i$H$+8-$$$+$i$H$$$&$o$1$G$O$J$/!"=c?h$K8zN(E*$JM}M3$N$?$a(B -$B$G$9!#(B - -$B%a!<%kMQ$N%0%k!<%W$O!J$b$7$"$l$P!KHs>o$K>.$5$$%l%Y%k!JNc$($P(B 1 $B$+(B 2$B!K$K$7(B -$B$F$*$/$3$H$r$*4+$a$7$^$9!#(B - -$B$b$7%l%Y%kJQ?t$GM7$S$?$$$N$G$"$l$P!"B?>/Cm0U$r$7$F$^$o$kI,MW$,$"(B -$B$j$^$9!#0lC6$=$l$r@_Dj$7$?$i!"FsEY$H$=$l$K?($i$J$$$G$/$@$5$$!#$5(B -$B$i$K8@$($P!"<+J,$G2?$r$d$C$F$$$k$+$r@53N$KM}2r$7$F$$$J$$8B$j!"0l(B -$B@Z?($i$J$$$G$/$@$5$$!#(B +Gnus $B$O%l%Y%k(B 1 $B$+$i(B @code{gnus-level-subscribed} ($B$3$NCM$r4^$`(B) ($B=i4|CM(B +$B$O(B 5) $B$^$G$N%0%k!<%W$r9XFI!"(B@code{gnus-level-subscribed} ($B$3$NCM$r4^$^$J(B +$B$$(B) $B$+$i(B@code{gnus-level-unsubscribed} ($B$3$NCM$r4^$`(B) ($B=i4|CM$O(B 7) $B$^$G(B +$B$N%0%k!<%W$rHs9XFI!"(B@code{gnus-level-zombie} $B$r%>%s%S(B ($BJb$/;S(B) ($B=i4|CM(B +$B$O(B 8)$B!"(B@code{gnus-level-killed} $B$r(B kill $B$5$l$F$$$k(B ($B40A4$K;`$s$G(B +$B$k(B) ($B=i4|CM$O(B 9) $B$HH=CG$7$^$9!#(BGnus $B$O9XFI$HHs9XFI$N%0%k!<%W$OA4$/F1MM$K(B +$B07$$$^$9$,!"%>%s%S$H(B kill $B%0%k!<%W$O!"$I$N5-;v$rFI$s$@$+!"B8:_$9$k$+$J$I(B +$B$N>pJs$r0l@Z;}$A$^$;$s!#$3$N;`$s$G$k%0%k!<%W$H@8$-$F$k%0%k!<%W$N6hJL$O!"(B +$BJL$K$=$l$,$-$l$$$@$+$i$H$+8-$$$+$i$H$$$&$o$1$G$O$J$/!"=c?h$K8zN(E*$JM}M3(B +$B$N$?$a$G$9!#(B + +$B%a!<%kMQ$N%0%k!<%W$O(B ($B$b$7$"$l$P(B) $BHs>o$K>.$5$$%l%Y%k(B ($BNc$($P(B 1 $B$+(B 2) $B$K(B +$B$7$F$*$/$3$H$r$*4+$a$7$^$9!#(B + +$B%s%S$H(B kill $B%0%k!<%W$O!"%G%#%U%)%k%H$G$O1#$5$l$F$$$kE@$GHs9VFI$N%0%k!<(B +$B%W$K;w$F$$$^$9!#$7$+$7!"(Bgnus $B$,%K%e!<%9%5!<%P!<$KBP$7$F%>%s%S$H(B kill $B%0(B +$B%k!<%W$K4X$9$k>pJs(B ($B5-;v?t!"L$FI5-;v?t(B) $B$NLd$$9g$o$;$r$7$J$$E@$G!"9XFI$*(B +$B$h$SHs9XFI$N%0%k!<%W$H$O0c$C$F$$$^$9!#$U$D$&!"$"$J$?$O6=L#$NL5$$%0%k!<%W(B +$B$r(B @kbd{C-k} $B$G(B kill $B$7$^$9$h$M!#$b$7!"$[$H$s$I$N%0%k!<%W$,(B kill $B$5$l$F(B +$B$$$k$H!"(Bgnus $B$OB.$/$J$j$^$9!#(B + +$B$J$<(B gnus $B$O%>%s%S$H(B kill $B%0%k!<%W$r6hJL$9$k$N$G$7$g$&(B? $B$($($H!"%5!<%P!<(B +$B$K?7$7$$%0%k!<%W$,$G$-$k$H!"(Bgnus $B$O%G%#%U%)%k%H$G$=$l$r%>%s%S$K$7$^$9!#(B +$B$3$l$O!"$"$J$?$,$U$D$&$O?7$7$$%0%k!<%W$KHQ$o$5$l$J$$$3$H$r0UL#$7$^$9$,!"(B +$B$"$J$?$O(B @kbd{A z} $B$G?7$7$$%0%k!<%W$N%j%9%H$rF@$k$3$H$,$G$-$^$9!#$"$J$?(B +$B$O9%$_$N$b$N$r9VFI$7!"MW$i$J$$$b$N$O(B kill $B$9$l$PNI$$$N$G$9!#(B +(@kbd{A k} $B$G(B kill $B$5$l$?%0%k!<%W$N%j%9%H$rI=<($7$^$9!#(B) + +$B$b$7%l%Y%kJQ?t$GM7$S$?$$$N$G$"$l$P!"B?>/Cm0U$r$7$F$^$o$kI,MW$,$"$j$^$9!#(B +$B0lC6$=$l$r@_Dj$7$?$i!"FsEY$H$=$l$K?($i$J$$$G$/$@$5$$!#$5$i$K8@$($P!"<+J,(B +$B$G2?$r$d$C$F$$$k$+$r@53N$KM}2r$7$F$$$J$$8B$j!"0l@Z?($i$J$$$G$/$@$5$$!#(B @vindex gnus-level-default-unsubscribed @vindex gnus-level-default-subscribed -$B?H6a$K4X78$9$k(B2$B$D$NJQ?t$O(B @code{gnus-level-default-subscribed}$B!J=i4|CM(B -$B$O(B 3$B!K$H(B @code{gnus-level-default-unsubscribed}$B!J=i4|CM$O(B 6$B!K$G$9!#$3(B -$B$l$i$O?7$7$$%0%k!<%W$,!JHs!K9XFI$5$l$?$H$-$N%l%Y%k$G$9!#$b$A$m(B -$B$s!"$3$l$i(B2$B$D$NJQ?t$NCM$O!"0UL#$N$"$k@5$7$$HO0O$G$J$/$F$O$J$j$^$;$s!#(B +$B?H6a$K4X78$9$kFs$D$NJQ?t$O(B @code{gnus-level-default-subscribed} ($B=i4|CM(B +$B$O(B 3) $B$H(B @code{gnus-level-default-unsubscribed} ($B=i4|CM$O(B 6) $B$G$9!#$3$l(B +$B$i$O?7$7$$%0%k!<%W$,(B ($BHs(B) $B9XFI$5$l$?$H$-$N%l%Y%k$G$9!#$b$A$m$s!"$3$l(B +$B$iFs$D$NJQ?t$NCM$O!"0UL#$N$"$k@5$7$$HO0O$G$J$/$F$O$J$j$^$;$s!#(B @vindex gnus-keep-same-level -@code{gnus-keep-same-level} $B$,(B @code{nil} $B0J30$G$"$l$P!"0\F0%3%^%s%I$N$$$/(B -$B$D$+$OF10l!J$"$k$$$O$=$l$h$j>.$5$$!K%l%Y%k$N%0%k!<%W$N$_$N0\F0$K$J$j$^$9!#(B -$BFC$K!"$"$k%0%k!<%W$N:G8e$N5-;v$+$i.$5$$!K%l%Y%k$N%0%k!<%W$K0\F0$7$^$9!#$3$l$O;D$j$N%0%k!<%W$rFI$`(B -$B$h$j@h$K!"$h$j=EMW$J%0%k!<%W$rFI$s$G$*$-$?$$$H$-$K$OJXMx$+$b$7$l$^$;$s!#(B +@code{gnus-keep-same-level} $B$,(B @code{nil} $B0J30$G$"$l$P!"0\F0%3%^%s%I$N$$(B +$B$/$D$+$OF10l(B ($B$"$k$$$O$=$l$h$j>.$5$$(B) $B%l%Y%k$N%0%k!<%W$N$_$N0\F0$K$J$j$^(B +$B$9!#FC$K!"$"$k%0%k!<%W$N:G8e$N5-;v$+$i.$5$$(B) $B%l%Y%k$N%0%k!<%W$K0\F0$7$^$9!#$3$l$O;D$j$N%0(B +$B%k!<%W$rFI$`$h$j@h$K!"$h$j=EMW$J%0%k!<%W$rFI$s$G$*$-$?$$$H$-$K$OJXMx$+$b(B +$B$7$l$^$;$s!#(B -$B$b$7$3$NCM$,(B @code{best} $B$@$C$?$i!":G$b=EMW$J(B ($B:G$b%l%Y%k$NCM$,>.$5$$(B) -$B%0%k!<%W$K0\F0$7$^$9!#(B +$B$b$7$3$NCM$,(B @code{best} $B$@$C$?$i!":G$b=EMW$J(B ($B:G$b%l%Y%k$NCM$,>.$5(B +$B$$(B) $B%0%k!<%W$K0\F0$7$^$9!#(B @vindex gnus-group-default-list-level -$B=i4|@_Dj$G$O(B @code{gnus-group-default-list-level} $B$HF1$8$+$=$l(B -$B$h$j>.$5$$%l%Y%k$N%0%k!<%W$,!"%0%k!<%W%P%C%U%!$K0lMwI=<($5$l$^$9!#(B +$B=i4|@_Dj$G$O(B @code{gnus-group-default-list-level} $B$HF1$8$+$=$l$h$j>.$5$$(B +$B%l%Y%k$N%0%k!<%W$,!"%0%k!<%W%P%C%U%!$K0lMwI=<($5$l$^$9!#(B @vindex gnus-group-list-inactive-groups -@code{gnus-group-list-inactive-groups} $B$,(B @code{nil} $B0J30$G$"$l(B -$B$P!"L$FI$N%0%k!<%W$K0l=o$K%"%/%F%#%V$G$J$$%0%k!<%W$bI=<($7$^$9!#(B -$B$3$NJQ?t$O=i4|@_Dj$G$O(B @code{t} $B$G$9!#$b$7$3$l$,(B @code{nil} $B$G$"(B -$B$l$P!"%"%/%F%#%V$G$J$$%0%k!<%W$OI=<($5$l$^$;$s!#(B +@code{gnus-group-list-inactive-groups} $B$,(B @code{nil} $B0J30$G$"$l$P!"L$FI(B +$B$N%0%k!<%W$K0l=o$K%"%/%F%#%V$G$J$$%0%k!<%W$bI=<($7$^$9!#$3$NJQ?t$O=i4|@_(B +$BDj$G$O(B @code{t} $B$G$9!#$b$7$3$l$,(B @code{nil} $B$G$"$l$P!"%"%/%F%#%V$G$J$$%0(B +$B%k!<%W$OI=<($5$l$^$;$s!#(B @vindex gnus-group-use-permanent-levels -@code{gnus-group-use-permanent-levels} $B$,(B @code{nil} $B0J30$G$"$l(B -$B$P!"0lC6%l%Y%k$r(B @kbd{g} $B$d(B @kbd{l} $B$N%W%l%U%#%C%/%9$KM?$($k$H!"(B -$B$=$N8e$NA4$F$N%3%^%s%I$K$*$$$F$=$N%l%Y%k$,!V:nMQ$9$k!W%l%Y%k$K$J(B -$B$j$^$9!#(B - +@code{gnus-group-use-permanent-levels} $B$,(B @code{nil} $B0J30$G$"$l$P!"0lC6(B +$B%l%Y%k$r(B @kbd{g} $B$d(B @kbd{l} $B$N%W%l%U%#%C%/%9$KM?$($k$H!"$=$N8e$NA4$F$N%3(B +$B%^%s%I$K$*$$$F$=$N%l%Y%k$,!V:nMQ$9$k!W%l%Y%k$K$J$j$^$9!#(B @vindex gnus-activate-level -Gnus $B$ODL>o!"(B@code{gnus-activate-level} $B$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<%W$N(B -$B$_$r5/F0$7$^$9!J$D$^$j%5!<%P$KLd$$9g$o$;$r$9$k!K!#9XFI$7$F$$$J$$%0%k!<%W$r(B -$B5/F0$7$?$/$J$1$l$P!"$3$NJQ?t$rNc$($P(B 5 $B$K@_Dj$9$k$H$h$$$+$b$7$l$^$;$s!#%G(B -$B%U%)%k%H$O(B 6 $B$G$9!#(B +Gnus $B$ODL>o!"(B@code{gnus-activate-level} $B$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<%W(B +$B$N$_$r5/F0$7$^$9(B ($B$D$^$j%5!<%P$KLd$$9g$o$;$r$9$k(B)$B!#9XFI$7$F$$$J$$%0%k!<(B +$B%W$r5/F0$7$?$/$J$1$l$P!"$3$NJQ?t$rNc$($P(B 5 $B$K@_Dj$9$k$H$h$$$+$b$7$l$^$;(B +$B$s!#%G%U%)%k%H$O(B 6 $B$G$9!#(B @node Group Score @section $B%0%k!<%W$N%9%3%"(B @@ -2277,30 +2307,28 @@ Gnus $B$ODL>o!"(B@code{gnus-activate-level} $B$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<% @cindex group rank @cindex rank -$BIaDL$O=EMW$J%0%k!<%W$O9b%l%Y%k$K$7$F$*$/$G$7$g$&$1$l$I$b!"$3$NJ}(B -$BK!$G$O>/!9@)8B$,$-$D$$$G$9$h$M!#$R$g$C$H$7$?$i!"%0%k!<%W$r$I$l$/(B -$B$i$$IQHK$KFI$`$+$K$h$C$F%0%k!<%W%P%C%U%!$r%=!<%H$7$?$$$J$"!"$J$s(B -$B$F;W$o$J$$!)M}$K$+$J$C$F$k$G$7$g!)(B +$BIaDL$O=EMW$J%0%k!<%W$O9b%l%Y%k$K$7$F$*$/$G$7$g$&$1$l$I$b!"$3$NJ}K!$G$O>/!9(B +$B@)8B$,$-$D$$$G$9$h$M!#$R$g$C$H$7$?$i!"%0%k!<%W$r$I$l$/$i$$IQHK$KFI$`$+$K(B +$B$h$C$F%0%k!<%W%P%C%U%!$r%=!<%H$7$?$$$J$"!"$J$s$F;W$o$J$$(B? $BM}$K$+$J$C$F$k(B +$B$G$7$g(B? @dfn{$B%0%k!<%W%9%3%"(B} (@dfn{group score}) $B$O$=$N$?$a$N$b$N$G$9!#(BGnus $B$K0J(B $B2<$G@bL@$5$l$F$$$k5!9=$G!"$=$l$>$l$N%0%k!<%W$KBP$7$F%9%3%"$r;XDj$5$;$k$3(B $B$H$,$G$-$^$9!#$=$7$F%0%k!<%W%P%C%U%!$r$3$N%9%3%"$r4p$K%=!<%H$9$k$3$H$,$G(B $B$-$^$9!#$"$k$$$O!"%9%3%"=g$G%=!<%H$7$F$=$N8e%l%Y%k$G%=!<%H$9$k$3$H$b$G$-(B -$B$^$9!#!J%l%Y%k$H%9%3%"$r$R$H$^$H$a$K$7$F!"%0%k!<%W$N(B@dfn{$B%i%s%/(B} -(@dfn{rank}) $B$H8F$S$^$9!#%l%Y%k$,(B 4 $B$G%9%3%"$,(B 1 $B$N%0%k!<%W$O!"%l%Y%k$,(B -5 $B$G%9%3%"$,(B 300 $B$N%0%k!<%W$h$j$b9b$$%i%s%/$H$J$j$^$9!#!J%l%Y%k$NJ}$,=E(B -$BMWEY$,9b$/!"%9%3%"$NJ}$O=EMWEY$,Dc$/$J$j$^$9!#!K!K(B +$B$^$9!#(B($B%l%Y%k$H%9%3%"$r$R$H$^$H$a$K$7$F!"%0%k!<%W(B +$B$N(B @dfn{$B%i%s%/(B} (@dfn{rank}) $B$H8F$S$^$9!#%l%Y%k$,(B 4 $B$G%9%3%"$,(B 1 $B$N%0%k!<(B +$B%W$O!"%l%Y%k$,(B 5 $B$G%9%3%"$,(B 300 $B$N%0%k!<%W$h$j$b9b$$%i%s%/$H$J$j$^$9!#(B +($B%l%Y%k$NJ}$,=EMWEY$,9b$/!"%9%3%"$NJ}$O=EMWEY$,Dc$/$J$j$^$9!#(B)) @findex gnus-summary-bubble-group -$BIQHK$KFI$`%0%k!<%W$K!"$a$C$?$KFI$^$J$$%0%k!<%W$h$j$b9b$$%9%3%"$rM?$($?$$$H(B -$B$-$O!"(B@code{gnus-summary-exit-hook} $B%U%C%/$K(B -@code{gnus-summary-bubble-group} $B4X?t$rDI2C$9$k$3$H$,$G$-$^$9!#$3$l$G%P%V(B -$B%k%=!<%H$No!"(B@code{gnus-activate-level} $B$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<% @item M w @kindex M w (Group) @findex gnus-group-mark-region -$B%]%$%s%H$H%^!<%/$N4V$NA4$F$N%0%k!<%W$K0u$r$D$1$k(B -(@code{gnus-group-mark-region})$B!#(B +$B%]%$%s%H$H%^!<%/$N4V$NA4$F$N%0%k!<%W$K0u$r$D$1(B +$B$k(B (@code{gnus-group-mark-region})$B!#(B @item M b @kindex M b (Group) @findex gnus-group-mark-buffer -$B%P%C%U%!Fb$NA4$F$N%0%k!<%W$K0u$r$D$1$k(B -(@code{gnus-group-mark-buffer})$B!#(B +$B%P%C%U%!Fb$NA4$F$N%0%k!<%W$K0u$r$D$1$k(B (@code{gnus-group-mark-buffer})$B!#(B @item M r @kindex M r (Group) @findex gnus-group-mark-regexp -$B$"$k@55,I=8=$K9gCW$9$kA4$F$N%0%k!<%W$K0u$r$D$1$k(B -(@code{gnus-group-mark-regexp})$B!#(B +$B$"$k@55,I=8=$K9gCW$9$kA4$F$N%0%k!<%W$K0u$r$D$1(B +$B$k(B (@code{gnus-group-mark-regexp})$B!#(B @end table @ref{Process/Prefix} $B$b;2>H$7$F$/$@$5$$!#(B @findex gnus-group-universal-argument -$B%W%m%;%90u$,IU$1$i$l$F$$$kA4$F$N%0%k!<%W$KBP$7$F2?$+$NL?Na$rR2p$7$^$9!#$3$l(B -$B$i$NL?Na$OA4$F!"?75,$K:n@.$7$?%0%k!<%W$r%]%$%s%H0LCV$KA^F~$7$^$9!=!=(B -@code{gnus-subscribe-newsgroup-method} $B$O;2>H$5$l$^$;$s!#(B +$B$i$NL?Na$OA4$F!"?75,$K:n@.$7$?%0%k!<%W$r%]%$%s%H0LCV$KA^F~$7$^(B +$B$9!=!=(B@code{gnus-subscribe-newsgroup-method} $B$O;2>H$5$l$^$;$s!#(B @table @kbd @@ -2379,18 +2405,18 @@ Gnus $B$ODL>o!"(B@code{gnus-activate-level} $B$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<% @findex gnus-group-make-group @cindex making groups $B?7$7$$%0%k!<%W$r:n@.$7$^$9(B (@code{gnus-group-make-group})$B!#(BGnus $B$O%W%m%s(B -$B%W%H$rI=<($7$F!"L>A0$HJ}K!$H!">l9g$K$h$C$F$O(B @dfn{address} $B$NF~NO$r(B -$B5a$a$F$-$^$9!#$h$j4JC1$K(B @sc{nntp} $B%0%k!<%W$r9XFI$9$kJ}K!$O!"(B +$B%W%H$rI=<($7$F!"L>A0$HJ}K!$H!">l9g$K$h$C$F$O(B @dfn{address} $B$NF~NO$r5a$a(B +$B$F$-$^$9!#$h$j4JC1$K(B @sc{nntp} $B%0%k!<%W$r9XFI$9$kJ}K!$O!"(B @pxref{Browse Foreign Server}$B!#(B @item G r @kindex G r (Group) @findex gnus-group-rename-group @cindex renaming groups -$B8=:_$N%0%k!<%W$NL>A0$r!"2?$+JL$N$b$N$KJQ99$7$^$9(B -(@code{gnus-group-rename-group})$B!#$3$l$O$"$ko$KCY$$$3$H(B -$B$bM-$jF@$^$9!#(B +$B8=:_$N%0%k!<%W$NL>A0$r!"2?$+JL$N$b$N$KJQ99$7$^(B +$B$9(B (@code{gnus-group-rename-group})$B!#$3$l$O$"$ko(B +$B$KCY$$$3$H$bM-$jF@$^$9!#(B @item G c @kindex G c (Group) @@ -2402,27 +2428,27 @@ Gnus $B$ODL>o!"(B@code{gnus-activate-level} $B$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<% @kindex G e (Group) @findex gnus-group-edit-group-method @cindex renaming groups -$B8=:_$N%0%k!<%W$NA*BrJ}K!$r=$@5$9$k$?$a$N%P%C%U%!$K0\F0$7$^$9(B -(@code{gnus-group-edit-group-method})$B!#(B +$B8=:_$N%0%k!<%W$NA*BrJ}K!$r=$@5$9$k$?$a$N%P%C%U%!$K0\F0$7$^(B +$B$9(B (@code{gnus-group-edit-group-method})$B!#(B @item G p @kindex G p (Group) @findex gnus-group-edit-group-parameters -$B%0%k!<%W%Q%i%a!<%?$r=$@5$9$k$?$a$N%P%C%U%!$K0\F0$7$^$9(B -(@code{gnus-group-edit-group-parameters})$B!#(B +$B%0%k!<%W%Q%i%a!<%?$r=$@5$9$k$?$a$N%P%C%U%!$K0\F0$7$^(B +$B$9(B (@code{gnus-group-edit-group-parameters})$B!#(B @item G E @kindex G E (Group) @findex gnus-group-edit-group -$B%0%k!<%W>pJs$r=$@5$9$k$?$a$N%P%C%U%!$K0\F0$7$^$9(B -(@code{gnus-group-edit-group})$B!#(B +$B%0%k!<%W>pJs$r=$@5$9$k$?$a$N%P%C%U%!$K0\F0$7$^(B +$B$9(B (@code{gnus-group-edit-group})$B!#(B @item G d @kindex G d (Group) @findex gnus-group-make-directory-group @cindex nndir -$B%G%#%l%/%H%j%0%k!<%W$r:n@.$7$^$9(B (@pxref{Directory Groups})$B!#%G%#%l%/%H%j(B -$BL>$r%W%m%s%W%H$GF~NO$7$^$9(B (@code{gnus-group-make-directory-group})$B!#(B +$B%G%#%l%/%H%j%0%k!<%W$r:n@.$7$^$9(B (@pxref{Directory Groups})$B!#%G%#%l%/%H(B +$B%jL>$r%W%m%s%W%H$GF~NO$7$^$9(B (@code{gnus-group-make-directory-group})$B!#(B @item G h @kindex G h (Group) @@ -2438,20 +2464,20 @@ Gnus $B%X%k%W%0%k!<%W$r:n@.$7$^$9(B (@code{gnus-group-make-help-group})$B!#( @findex gnus-group-make-archive-group @vindex gnus-group-archive-directory @vindex gnus-group-recent-archive-directory -Gnus $B%"!<%+%$%V%0%k!<%W$r:n@.$7$^$9(B -(@code{gnus-group-make-archive-group})$B!#=i4|@_Dj$G$O:G$b:G6a$N5-;v$r;X(B -$B$7$F$$$k%0%k!<%W$,:n@.$5$l$^$9$,(B -(@code{gnus-group-recent-archive-directory})$B!"@\F,0z?t$rM?$($k$HA4(B -$B$F$N5-;v$r4^$`%0%k!<%W$,(B @code{gnus-group-archive-directory} $B$r4p$K:n@.(B -$B$5$l$^$9!#(B +Gnus $B%"!<%+%$%V%0%k!<%W$r:n@.$7$^(B +$B$9(B (@code{gnus-group-make-archive-group})$B!#=i4|@_Dj$G$O:G$b:G6a$N5-;v$r(B +$B;X$7$F$$$k%0%k!<%W$,:n@.$5$l$^$9(B +$B$,(B (@code{gnus-group-recent-archive-directory})$B!"@\F,0z?t$rM?$($k$HA4$F(B +$B$N5-;v$r4^$`%0%k!<%W$,(B @code{gnus-group-archive-directory} $B$r4p$K:n@.$5(B +$B$l$^$9!#(B @item G k @kindex G k (Group) @findex gnus-group-make-kiboze-group @cindex nnkiboze kiboze $B%0%k!<%W$r:n@.$7$^$9!#%W%m%s%W%H$GL>A0$H!"(Bkiboze $B%0%k!<%W$K!V4^$a(B -$B$?$$!W%0%k!<%W$K9g$&@55,I=8=$H!"%X%C%@!<$K9g$&J8;zNs$NAH$rF~NO$7$^$9(B -(@code{gnus-group-make-kiboze-group})$B!#(B@xref{Kibozed Groups}. +$B$?$$!W%0%k!<%W$K9g$&@55,I=8=$H!"%X%C%@!<$K9g$&J8;zNs$NAH$rF~NO$7$^(B +$B$9(B (@code{gnus-group-make-kiboze-group})$B!#(B@xref{Kibozed Groups}. @item G D @kindex G D (Group) @@ -2466,21 +2492,21 @@ kiboze $B%0%k!<%W$r:n@.$7$^$9!#%W%m%s%W%H$GL>A0$H!"(Bkiboze $B%0%k!<%W$K!V4^$ @findex gnus-group-make-doc-group @cindex ClariNet Briefs @cindex nndoc -$B%U%!%$%k$J$I$r$b$H$K%0%k!<%W$r:n@.$7$^$9(B -(@code{gnus-group-make-doc-group})$B!#$3$N%3%^%s%I$K@\F,<-$rM?$($?>l9g!"%U%!(B -$B%$%kL>$H%U%!%$%k%?%$%W$r%W%m%s%W%H$GF~NO$7$^$9!#8=:_%5%]!<%H$5$l$F$$$k%U%!(B -$B%$%k%?%$%W$O!"(B@code{babyl}, @code{mbox}, @code{digest}, @code{mmdf}, -@code{news}, @code{rnews}, @code{clari-briefs}, @code{rfc934}, -@code{rfc822-forward}, @code{nsmail}, @code{forward} $B$G$9!#@\F,<-$J$7$G(B -$B$3$N%3%^%s%I$rl9g!"(B +$B%U%!%$%kL>$H%U%!%$%k%?%$%W$r%W%m%s%W%H$GF~NO$7$^$9!#8=:_%5%]!<%H$5$l$F$$(B +$B$k%U%!%$%k%?%$%W$O!"(B +@code{babyl}, @code{mbox}, @code{digest}, @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs}, @code{rfc934}, @code{rfc822-forward}, @code{nsmail}, @code{forward} $B$G(B +$B$9!#@\F,<-$J$7$G$3$N%3%^%s%I$rA0$H!"(Bkiboze $B%0%k!<%W$K!V4^$ @cindex Alta Vista @cindex InReference @cindex nnweb -$B%&%'%V8!:w7k2L$r$b$H$K0l;~E*$J%0%k!<%W$r:n@.$7$^$9(B -(@code{gnus-group-make-web-group})$B!#$3$N%3%^%s%I$K@\F,<-$rM?$($k$H!"(B -$B0l;~E*$G$O$J$/8GDj$7$?%0%k!<%W$r:n@.$7$^$9!#%W%m%s%W%H$G8!:w5!4X$Nl9g$K$O!"(B@samp{~g -alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B -$B$F!"8!:wBP>]$rFCDj$N%0%k!<%W$K8BDj$9$k$3$H$,2DG=$G$9!#(B +$B$b$7!"(B@code{dejanews} $B8!:w5!4X$rMQ$$$k>l9g$K$O!"(B +@samp{~g alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3(B +$B$H$K$h$C$F!"8!:wBP>]$rFCDj$N%0%k!<%W$K8BDj$9$k$3$H$,2DG=$G$9!#(B @item G DEL @kindex G DEL (Group) @findex gnus-group-delete-group $B$3$N4X?t$O8=:_$N%0%k!<%W$r:o=|$7$^$9(B (@code{gnus-group-delete-group})$B!#(B -$B@\F,<-$,M?$($i$l$k$H!"$3$N4X?t$O$=$N%0%k!<%WFb$NA45-;v$rK\Ev$K:o=|$7!"(B -$B%0%k!<%W<+?H$r$3$N@$$+$i6/@)E*$KKu;&$7$F$7$^$$$^$9!#@\F,<-$O!"$"$J(B -$B$?$,2?$r$d$m$&$H$7$F$$$k$+!"K\Ev$K<+?.$,$"$k$H$-$K$N$_;H$C$F$/$@$5$$!#$^$"!"(B -$B$3$N%3%^%s%I$O!J(B@code{nntp} $B%0%k!<%W$N$h$&$J!KFI$_=P$7@lMQ%0%k!<%W$K$O;H$((B -$B$^$;$s$1$I!#(B +$B@\F,<-$,M?$($i$l$k$H!"$3$N4X?t$O$=$N%0%k!<%WFb$NA45-;v$rK\Ev$K:o=|$7!"%0(B +$B%k!<%W<+?H$r$3$N@$$+$i6/@)E*$KKu;&$7$F$7$^$$$^$9!#@\F,<-$O!"$"$J$?$,2?$r(B +$B$d$m$&$H$7$F$$$k$+!"K\Ev$K<+?.$,$"$k$H$-$K$N$_;H$C$F$/$@$5$$!#$^$"!"$3$N(B +$B%3%^%s%I$O(B (@code{nntp} $B%0%k!<%W$N$h$&$J(B) $BFI$_=P$7@lMQ%0%k!<%W$K$O;H$($^(B +$B$;$s$1$I!#(B @item G V @kindex G V (Group) @findex gnus-group-make-empty-virtual -$B?7$7$$!"?7A/$J!"6u$N(B @code{nnvirtual} $B%0%k!<%W$r:n@.$7$^$9(B -(@code{gnus-group-make-empty-virtual})$B!#(B@xref{Virtual Groups}. +$B?7$7$$!"?7A/$J!"6u$N(B @code{nnvirtual} $B%0%k!<%W$r:n@.$7$^(B +$B$9(B (@code{gnus-group-make-empty-virtual})$B!#(B@xref{Virtual Groups}. @item G v @kindex G v (Group) @findex gnus-group-add-to-virtual -$B8=:_$N%0%k!<%W$r(B @code{nnvirtual} $B%0%k!<%W$KDI2C$7$^$9(B -(@code{gnus-group-add-to-virtual})$B!#$3$l$O%W%m%;%90u(B/$B@\F,0z?t$N=,47$K=>(B -$B$$$^$9!#(B +$B8=:_$N%0%k!<%W$r(B @code{nnvirtual} $B%0%k!<%W$KDI2C$7$^(B +$B$9(B (@code{gnus-group-add-to-virtual})$B!#$3$l$O%W%m%;%90u(B/$B@\F,0z?t$N=,47$K(B +$B=>$$$^$9!#(B @end table -$B$5$^$6$^$JA*BrJ}K!$K4X$9$k$5$i$J$k>pJs$O(B @xref{Select Methods} $B$r;2(B -$B>H$7$F$/$@$5$$!#(B +$B$5$^$6$^$JA*BrJ}K!$K4X$9$k$5$i$J$k>pJs$O(B @xref{Select Methods} $B$r;2>H$7(B +$B$F$/$@$5$$!#(B @vindex gnus-activate-foreign-newsgroups $B$b$7(B @code{gnus-activate-foreign-newsgroups} $B$,@5$N?t$G$"$l$P!"(Bgnus $B$O5/(B @@ -2536,24 +2562,23 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B $B$7$F2<$5$$!#(B@code{gnus-activate-level} $B$b30It%K%e!<%9%0%k!<%W$N3hF02=$K(B $B1F6A$r5Z$\$7$^$9!#(B - @node Group Parameters @section $B%0%k!<%W%Q%i%a!<%?(B @cindex group parameters $B%0%k!<%W%Q%i%a!<%?$O!"$"$kFCDj$N%0%k!<%W$K8GM-$J>pJs$r3JG<$7$^$9!#0J2<$O(B -$B%0%k!<%W%Q%i%a!<%?%j%9%H$NNc$G$9!'(B +$B%0%k!<%W%Q%i%a!<%?%j%9%H$NNc$G$9(B: @example ((to-address . "ding@@gnus.org") (auto-expire . t)) @end example -$B$=$l$>$l$NMWAG$O!XE@BP!Y(B(dotted pair)$B!=!=$D$^$jE@(B (dot) $B$NA0$K80!"E@$N8e$m(B -$B$KCM$,$"$k$b$N!"$G9=@.$5$l$^$9!#A4$F$N%Q%i%a!<%?$O$3$N7A<0$r$l$NMWAG$O!XE@BP!Y(B(dotted pair)$B!=!=$D$^$jE@(B (dot) $B$NA0$K80!"E@$N8e(B +$B$m$KCM$,$"$k$b$N!"$G9=@.$5$l$^$9!#A4$F$N%Q%i%a!<%?$O$3$N7A<0$ro$N%j%9%H$K$J$j$^$9!#(B -$B0J2<$OMxMQ2DG=$J%0%k!<%W%Q%i%a!<%?$G$9!'(B +$B0J2<$OMxMQ2DG=$J%0%k!<%W%Q%i%a!<%?$G$9(B: @table @code @item to-address @@ -2561,14 +2586,14 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B $B%U%)%m!<%"%C%W$H%K%e!<%9$X$NEj9F$r$9$k$H$-$K;HMQ$5$l$k%"%I%l%9!#(B @example -(to-address . "some@@where.com") +(to-address . "some@@where.com") @end example $B$3$l$OZ$5$l$k$N$G!";22Cl9g$KM-8z$G$7$g$&!#$3$l$O$*$+$7$J?6$kIq$$$G$9!#$@$+(B -$B$i$3$l$,MW$k$s$G$9!*(B +@code{(broken-reply-to . t)} $B$H$$$&MWAG$,$"$l$P!"$=$N%0%k!<%W$G(B +$B$O(B @code{Reply-To} $B$OL5;k$5$l$k!"$H$$$&0UL#$G$9!#$3$l$O$"$k(B listserv $B$K(B +$B$h$k%a!<%j%s%0%j%9%H$r9XFI$7$F$$$F!"$=$l$,(B @code{Reply-To} $BMs(B +$B$r(B listserv $B<+?H$KJV$9$h$&$K$D$1$i$l$F$$$k>l9g$KM-8z$G$7$g$&!#$3$l$O$*$+(B +$B$7$J?6$kIq$$$G$9!#$@$+$i$3$l$,MW$k$s$G$9(B! @item to-group @cindex to-group @@ -2626,12 +2651,12 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B @item gcc-self @cindex gcc-self -$B%0%k!<%W%Q%i%a!<%?%j%9%H$K(B @code{(gcc-self . t)} $B$,$"$l$P!"?7$7$/:n@.$9$k(B -$B%a%C%;!<%8$O8=:_$N%0%k!<%W$K(B @code{Gcc} $B$5$l$^$9!#$b$7(B @code{(gcc-self -. none)} $B$,$"$l$P!"(B@code{Gcc:} $BMs$O@8@.$5$l$:!"(B@code{(gcc-self -. "string")} $B$,$"$l$P$3$NJ8;zNs$O$=$N$^$^(B @code{gcc} $BMs$KA^F~$5$l$^$9!#$3(B -$B$N%Q%i%a!<%?$O0J2<$G@bL@$9$kA4$F$N(B @code{Gcc} $B$N=i4|5,B'$h$j$bM%@h(B -$B$5$l$^$9(B (@pxref{Archived Messages})$B!#(B +$B%0%k!<%W%Q%i%a!<%?%j%9%H$K(B @code{(gcc-self . t)} $B$,$"$l$P!"?7$7$/:n@.$9(B +$B$k%a%C%;!<%8$O8=:_$N%0%k!<%W$K(B @code{Gcc} $B$5$l$^$9!#$b(B +$B$7(B @code{(gcc-self . none)} $B$,$"$l$P!"(B@code{Gcc:} $BMs$O@8@.$5$l$:!"(B +@code{(gcc-self . "string")} $B$,$"$l$P$3$NJ8;zNs$O$=$N$^$^(B @code{gcc} $BMs(B +$B$KA^F~$5$l$^$9!#$3$N%Q%i%a!<%?$O0J2<$G@bL@$9$kA4$F$N(B @code{Gcc} $B$N=i4|5,(B +$BB'$h$j$bM%@h$5$l$^$9(B (@pxref{Archived Messages})$B!#(B @item auto-expire @cindex auto-expire @@ -2650,10 +2675,10 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B @cindex expiry-wait @vindex nnmail-expiry-wait-function $B%0%k!<%W%Q%i%a!<%?$K(B @code{(expiry-wait . 10)} $B$N$h$&$JMWAG$,$"$l$P!"$3(B -$B$NCM$O5-;v$r;~8B>C5n$9$k$H$-$K(B @code{nnmail-expiry-wait} $B$H(B -@code{nnmail-expiry-wait-function} $B$N@_Dj$h$j$bM%@h$5$l$^$9!#$3$NCM$O;~(B -$B8B>C5n$NF|?t!J@0?t$G$"$kI,MW$O$J$$!K$+$b$7$/$O(B @code{never} $B$+(B -@code{immediate} $B$N%7%s%\%k$r;XDj$G$-$^$9!#(B +$B$NCM$O5-;v$r;~8B>C5n$9$k$H$-(B +$B$K(B @code{nnmail-expiry-wait} $B$H(B @code{nnmail-expiry-wait-function} $B$N@_(B +$BDj$h$j$bM%@h$5$l$^$9!#$3$NCM$O;~8B>C5n$NF|?t(B ($B@0?t$G$"$kI,MW$O$J$$(B) $B$+$b(B +$B$7$/$O(B @code{never} $B$+(B @code{immediate} $B$N%7%s%\%k$r;XDj$G$-$^$9!#(B @item score-file @cindex score file group parameter @@ -2663,17 +2688,18 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B @item adapt-file @cindex adapt file group parameter -@code{(adapt-file . "file")} $B$N$h$&$JMWAG$O!"(B@file{file} $B$r8=:_$N%0%k!<%W(B -$B$NE,1~%U%!%$%k$K$7$^$9!#A4$F$NE,1~%9%3%"EPO?$O$3$N%U%!%$%k$KF~$j$^$9!#(B +@code{(adapt-file . "file")} $B$N$h$&$JMWAG$O!"(B@file{file} $B$r8=:_$N%0%k!<(B +$B%W$NE,1~%U%!%$%k$K$7$^$9!#A4$F$NE,1~%9%3%"EPO?$O$3$N%U%!%$%k$KF~$j$^$9!#(B @item admin-address $B%a!<%j%s%0%j%9%H$+$iC&2q$9$k$H$-$O!"C&2qDLCN%a!<%k$r$=$N%a!<%j%s%0%j%9%H(B $B<+?H$KAw?.$7$F$O$$$1$^$;$s!#Be$o$j$K4IM}MQ%"%I%l%9$K%a%C%;!<%8$rAw?.$7$^(B -$B$9!#$3$N%Q%i%a!<%?$K$O$I$3$+JXMx$J4IM}MQ%"%I%l%9$r=q$$$F$*$/$3$H$,$G$-$^$9!#(B +$B$9!#$3$N%Q%i%a!<%?$K$O$I$3$+JXMx$J4IM}MQ%"%I%l%9$r=q$$$F$*$/$3$H$,$G$-$^(B +$B$9!#(B @item display - @code{(display . MODE)} $B$N$h$&$JMWAG$O!"%0%k!<%W$KF~$k$H$-$K$I$N5-;v$r(B -$BI=<($9$k$+$r;XDj$7$^$9!#M-8z$JCM$O!"(B +@code{(display . MODE)} $B$N$h$&$JMWAG$O!"%0%k!<%W$KF~$k$H$-$K$I$N5-;v$rI=(B +$B<($9$k$+$r;XDj$7$^$9!#M-8z$JCM$O!"(B @table @code @item all @@ -2684,9 +2710,9 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B @end table @item comment -@code{(comment . "This is a comment")} $B$N$h$&$JMWAG$O!"$=$N%0%k!<%W$KBP$9(B -$B$kG$0U$N%3%a%s%H$G$9!#$3$l$O8=:_$N(B gnus $B$G$OL5;k$5$l$^$9$,!"FCDj$N%0%k!<%W(B -$B$KBP$9$k>pJs$r3JG<$9$k>l=j$rDs6!$7$^$9!#(B +@code{(comment . "This is a comment")} $B$N$h$&$JMWAG$O!"$=$N%0%k!<%W$KBP(B +$B$9$kG$0U$N%3%a%s%H$G$9!#$3$l$O8=:_$N(B gnus $B$G$OL5;k$5$l$^$9$,!"FCDj$N%0%k!<(B +$B%W$KBP$9$k>pJs$r3JG<$9$k>l=j$rDs6!$7$^$9!#(B @c FIXTGNUS Is this true? @c @item charset @@ -2697,23 +2723,23 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B @item (@var{variable} @var{form}) $B%0%k!<%W$KF~$k$H$-$K!"$=$N%0%k!<%W%m!<%+%k$NJQ?t$r@_Dj$9$k%0%k!<%W%Q%i%a!<(B $B%?$r;HMQ$9$k$3$H$,$G$-$^$9!#(B@samp{news.answers} $B$K$*$$$F%9%l%C%II=<($r9T(B -$B$$$?$/$J$$$H$-$O!"$=$N%0%k!<%W$K%0%k!<%W%Q%i%a!<%?$K(B -@code{(gnus-show-threads nil)} $B$H=q$1$^$9!#(B @code{gnus-show-threads} $B$O!"(B -$B$=$N35N,%P%C%U%!$NCf$N%m!<%+%kJQ?t$K$J$j!"(Bform $B$N(B @code{nil} $B$O$=$3$G(B -$BI>2A$5$l$^$9!#(B +$B$$$?$/$J$$$H$-$O!"$=$N%0%k!<%W$K%0%k!<%W%Q%i%a!<%?(B +$B$K(B @code{(gnus-show-threads nil)} $B$H=q$1$^$9!#(B +@code{gnus-show-threads} $B$O!"$=$N35N,%P%C%U%!$NCf$N%m!<%+%kJQ?t$K$J$j!"(B +form $B$N(B @code{nil} $B$O$=$3$GI>2A$5$l$^$9!#(B -$B$3$l$O$b$7I,MW$G$"$l$P!"%0%k!<%WKh$N%U%C%/4X?t$H$7$F$b;HMQ$G$-$^$9!#$b$7$"(B -$B$k%0%k!<%W$KF~$C$?$H$-$K%S!<%W2;$rLD$i$7$?$1$l$P!"$=$N%0%k!<%W$N%Q%i%a!<%?(B -$B$K(B @code{(dummy-variable (ding))} $B$_$?$$$J$b$N$r=q$$$F$*$/$3$H$b$G$-$^$9!#(B -@code{dummy-variable} $B$H$$$&JQ?t$K(B @code{(ding)} $B$NI>2A7k2L$,@_Dj$5$l$^$9(B -$B$,!"$^$"!"C/$b5$$K$7$J$$$G$7$g!)(B +$B$3$l$O$b$7I,MW$G$"$l$P!"%0%k!<%WKh$N%U%C%/4X?t$H$7$F$b;HMQ$G$-$^$9!#$b$7(B +$B$"$k%0%k!<%W$KF~$C$?$H$-$K%S!<%W2;$rLD$i$7$?$1$l$P!"$=$N%0%k!<%W$N%Q%i%a!<(B +$B%?$K(B @code{(dummy-variable (ding))} $B$_$?$$$J$b$N$r=q$$$F$*$/$3$H$b$G$-$^(B +$B$9!#(B@code{dummy-variable} $B$H$$$&JQ?t$K(B @code{(ding)} $B$NI>2A7k2L$,@_Dj$5(B +$B$l$^$9$,!"$^$"!"C/$b5$$K$7$J$$$G$7$g(B? @item posting-style -$B$3$N%0%k!<%W$NDI2C$NEj9FMM<0$r$3$3$N$_$KJ]B8$9$k$3$H$,$G$-$^$9(B -(@pxref{Posting Styles})$B!#(B $B=q<0$O(B @code{gnus-posting-style} $BO"A[%j%9%H$H(B -$BF1$8$G$9$,!"$3$3$K$O%0%k!<%WL>$K9gCW$9$k@55,I=8=$O$"$j$^$;$s(B ($BEvA3$G$9(B)$B!#(B -$B$3$N%0%k!<%W$NMM<0$NMWAG$O(B @code{gnus-posting-styles} $B$G8+$D$+$C$?$b$N$h(B -$B$j$bM%@h$5$l$^$9!#(B +$B$3$N%0%k!<%W$NDI2C$NEj9FMM<0$r$3$3$N$_$KJ]B8$9$k$3$H$,$G$-$^(B +$B$9(B (@pxref{Posting Styles})$B!#=q<0$O(B @code{gnus-posting-style} $BO"A[%j%9%H(B +$B$HF1$8$G$9$,!"$3$3$K$O%0%k!<%WL>$K9gCW$9$k@55,I=8=$O$"$j$^$;$s(B ($BEvA3$G(B +$B$9(B)$B!#$3$N%0%k!<%W$NMM<0$NMWAG$O(B @code{gnus-posting-styles} $B$G8+$D$+$C$?(B +$B$b$N$h$j$bM%@h$5$l$^$9!#(B $BNc$($P!"$3$N%0%k!<%W$N$_!"$+$C$3$$$$L>A0$H=pL>$K$7$?$$$J$i!"(B @code{gnus-posting-styles} $B$r$$$8$i$:$K!"$3$N$h$&$J$b$N$r%0%k!<%W%Q%i%a!<(B @@ -2727,9 +2753,9 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B @end table -$B%0%k!<%W%Q%i%a!<%?$N=$@5$K$O(B @kbd{G p} $BL?Na$r;H$C$F$/$@$5$$!#%H%T%C%/%Q%i(B -$B%a!<%?$K$D$$$FFI$s$G$_$k$3$H$bLLGr$$$G$7$g$&(B (@pxref{Topic Parameters})$B!#(B - +$B%0%k!<%W%Q%i%a!<%?$N=$@5$K$O(B @kbd{G p} $BL?Na$r;H$C$F$/$@$5$$!#%H%T%C%/%Q(B +$B%i%a!<%?$K$D$$$FFI$s$G$_$k$3$H$bLLGr$$$G$7$g(B +$B$&(B (@pxref{Topic Parameters})$B!#(B @node Listing Groups @section $B%0%k!<%W$N0lMwI=<((B @@ -2745,36 +2771,35 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B @kindex l (Group) @findex gnus-group-list-groups $BL$FI5-;v$r;}$DA4$F$N%0%k!<%W$rI=<($7$^$9(B (@code{gnus-group-list-groups})$B!#(B -$B?t;z@\F,0z?t$r;H$&$H!"$3$N%3%^%s%I$O0z?t$N?t$+$=$l$h$j$b>.$5$$%l%Y%k(B -$B$N%0%k!<%W$N$_$rI=<($7$^$9!#=i4|@_Dj$G$O!"$3$l$O%l%Y%k(B 5$B!J$D$^$j(B -@code{gnus-group-default-list-level}$B!K$+$=$l$h$j>.$5$$%l%Y%k!J$9$J$o$A9XFI(B -$B$7$F$$$k%0%k!<%W$N$_!K$rI=<($7$^$9!#(B +$B?t;z@\F,0z?t$r;H$&$H!"$3$N%3%^%s%I$O0z?t$N?t$+$=$l$h$j$b>.$5$$%l%Y%k$N%0(B +$B%k!<%W$N$_$rI=<($7$^$9!#=i4|@_Dj$G$O!"$3$l$O%l%Y%k(B 5 ($B$D$^(B +$B$j(B @code{gnus-group-default-list-level}) $B$+$=$l$h$j>.$5$$%l%Y%k(B ($B$9$J$o(B +$B$A9XFI$7$F$$$k%0%k!<%W$N$_(B) $B$rI=<($7$^$9!#(B @item L @itemx A u @kindex A u (Group) @kindex L (Group) @findex gnus-group-list-all-groups -$BL$FI5-;v$N$"$k$J$7$K4X$o$i$:!"A4$F$N%0%k!<%W$rI=<($7$^$9(B -(@code{gnus-group-list-all-groups})$B!#?t;z@\F,0z?t$r;HMQ$9$k$H!"$3(B -$B$N%3%^%s%I$O0z?t$N?t$+$=$l$h$j$b>.$5$$%l%Y%k$N%0%k!<%W$N$_$rI=<($7$^$9!#(B -$B=i4|@_Dj$G$O(B 7 $B$+$=$l$h$j$b>.$5$$%l%Y%k$N%0%k!<%W!J$9$J$o$A9XFI!"Hs9XFI(B -$B$N%0%k!<%W$N$_!K$,I=<($5$l$^$9!#(B +$BL$FI5-;v$N$"$k$J$7$K4X$o$i$:!"A4$F$N%0%k!<%W$rI=<($7$^(B +$B$9(B (@code{gnus-group-list-all-groups})$B!#?t;z@\F,0z?t$r;HMQ$9$k$H!"$3$N%3(B +$B%^%s%I$O0z?t$N?t$+$=$l$h$j$b>.$5$$%l%Y%k$N%0%k!<%W$N$_$rI=<($7$^$9!#=i4|(B +$B@_Dj$G$O(B 7 $B$+$=$l$h$j$b>.$5$$%l%Y%k$N%0%k!<%W(B ($B$9$J$o$A9XFI!"Hs9XFI$N%0(B +$B%k!<%W$N$_(B) $B$,I=<($5$l$^$9!#(B @item A l @kindex A l (Group) @findex gnus-group-list-level -$B$"$kFCDj$N%l%Y%k$NL$FI5-;v$N$"$k%0%k!<%W$rI=<($7$^$9(B -(@code{gnus-group-list-level})$B!#@\F,<-$rM?$($k$H!"L$FI5-;v$N$J$$(B -$B%0%k!<%W$b4^$a$FI=<($7$^$9!#(B +$B$"$kFCDj$N%l%Y%k$NL$FI5-;v$N$"$k%0%k!<%W$rI=<($7$^(B +$B$9(B (@code{gnus-group-list-level})$B!#@\F,<-$rM?$($k$H!"L$FI5-;v$N$J$$%0%k!<(B +$B%W$b4^$a$FI=<($7$^$9!#(B @item A k @kindex A k (Group) @findex gnus-group-list-killed kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$B!#@\(B -$BF,0z?t$rM?$($k$H!"8=:_9XFI!"Hs9XFI$H$J$C$F$$$J$$A4$F$NMxMQ2DG=(B -$B$J%0%k!<%W$rI=<($7$^$9!#$3$l$O%5!<%P$+$i%"%/%F%#%V%U%!%$%k$rFI$`$3$H$K$J(B -$B$k$G$7$g$&!#(B +$BF,0z?t$rM?$($k$H!"8=:_9XFI!"Hs9XFI$H$J$C$F$$$J$$A4$F$NMxMQ2DG=$J%0%k!<%W(B +$B$rI=<($7$^$9!#$3$l$O%5!<%P$+$i%"%/%F%#%V%U%!%$%k$rFI$`$3$H$K$J$k$G$7$g$&!#(B @item A z @kindex A z (Group) @@ -2784,42 +2809,42 @@ kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$B!#@\ @item A m @kindex A m (Group) @findex gnus-group-list-matching -$B@55,I=8=$K9gCW$9$kL>A0$r;}$D%0%k!<%W$G!"L$FI5-;v$N$"$k9XFI%0%k!<%W$rA4(B -$B$FI=<($7$^$9(B (@code{gnus-group-list-matching})$B!#(B +$B@55,I=8=$K9gCW$9$kL>A0$r;}$D%0%k!<%W$G!"L$FI5-;v$N$"$k9XFI%0%k!<%W$rA4$F(B +$BI=<($7$^$9(B (@code{gnus-group-list-matching})$B!#(B @item A M @kindex A M (Group) @findex gnus-group-list-all-matching -$B@55,I=8=$K9gCW$9$k%0%k!<%W$rI=<($9$k(B -(@code{gnus-group-list-all-matching})$B!#(B +$B@55,I=8=$K9gCW$9$k%0%k!<%W$rI=<($9(B +$B$k(B (@code{gnus-group-list-all-matching})$B!#(B @item A A @kindex A A (Group) @findex gnus-group-list-active -$B:#@\B3$7$F$$$k%5!<%P$N%"%/%F%#%V%U%!%$%k$K$"$k%0%k!<%W$r!"K\Ev$KA4ItI=<($7(B -$B$^$9(B (@code{gnus-group-list-active})$B!#$3$l$O$7$P$i$/;~4V$,$+$+$k$3$H$bM-$j(B -$BF@$^$9!#$?$V$s(B @kbd{A M} $B$r/3d$j0z$$$F/3d$j0z$$$FA0$r;}$D%0%k!<%W$rA4$FI=<($9$k(B -(@code{gnus-group-apropos})$B!#(B +$B@55,I=8=$K9gCW$9$kL>A0$r;}$D%0%k!<%W$rA4$FI=<($9(B +$B$k(B (@code{gnus-group-apropos})$B!#(B @item A d @kindex A d (Group) @findex gnus-group-description-apropos -$B@55,I=8=$K9gCW$9$kL>A0$+@bL@J8$r;}$D%0%k!<%W$rA4$FI=<($9$k(B -(@code{gnus-group-description-apropos})$B!#(B +$B@55,I=8=$K9gCW$9$kL>A0$+@bL@J8$r;}$D%0%k!<%W$rA4$FI=<($9(B +$B$k(B (@code{gnus-group-description-apropos})$B!#(B @item A c @kindex A c (Group) @findex gnus-group-list-cached -$B%-%c%C%7%e5-;v$r;}$D%0%k!<%W$rA4$FI=<($9$k(B -(@code{gnus-group-list-cached})$B!#(B +$B%-%c%C%7%e5-;v$r;}$D%0%k!<%W$rA4$FI=<($9(B +$B$k(B (@code{gnus-group-list-cached})$B!#(B @item A ? @kindex A ? (Group) @@ -2830,17 +2855,16 @@ kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$B!#@\ @vindex gnus-permanently-visible-groups @cindex visible group parameter -@code{gnus-permanently-visible-groups} $B@55,I=8=$K9gCW$9$k%0%k!<%W$O!"(B -$BL$FI5-;v$,$"$k$+$J$$$+$K4X$o$i$:>o$KI=<($5$l$^$9!#$"$k$$$O%0%k!<%W%Q%i%a!<(B +@code{gnus-permanently-visible-groups} $B@55,I=8=$K9gCW$9$k%0%k!<%W$O!"L$(B +$BFI5-;v$,$"$k$+$J$$$+$K4X$o$i$:>o$KI=<($5$l$^$9!#$"$k$$$O%0%k!<%W%Q%i%a!<(B $B%?$K$*$$$F(B @code{visible} $BMWAG$rDI2C$9$k$3$H$G$bF1MM$N8z2L$rF@$k$3$H$,$G(B $B$-$^$9!#(B @vindex gnus-list-groups-with-ticked-articles -$B0uIU$-$N5-;v$N$_$r;}$D%0%k!<%W$ODL>o%0%k!<%W%P%C%U%!$KI=<($5$l$^$9!#$b$7(B -@code{gnus-list-groups-with-ticked-articles} $B$,(B @code{nil} $B$G$"$l$P!"$=(B -$B$N%0%k!<%W$O40A4$K6u$N%0%k!<%W$G$"$k$+$N$h$&$K07$o$l$^$9!#=i4|CM$O(B -@code{t} $B$G$9!#(B - +$B0uIU$-$N5-;v$N$_$r;}$D%0%k!<%W$ODL>o%0%k!<%W%P%C%U%!$KI=<($5$l$^$9!#$b(B +$B$7(B @code{gnus-list-groups-with-ticked-articles} $B$,(B @code{nil} $B$G$"$l$P!"(B +$B$=$N%0%k!<%W$O40A4$K6u$N%0%k!<%W$G$"$k$+$N$h$&$K07$o$l$^$9!#=i4|CM(B +$B$O(B @code{t} $B$G$9!#(B @node Sorting Groups @section $B%0%k!<%W$N%=!<%H(B @@ -2849,9 +2873,10 @@ kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$B!#@\ @kindex C-c C-s (Group) @findex gnus-group-sort-groups @vindex gnus-group-sort-function -@kbd{C-c C-s} (@code{gnus-group-sort-groups}) $BL?Na$O!"%0%k!<%W%P%C%U%!$r(B -@code{gnus-group-sort-function} $BJQ?t$GM?$($i$l$k4X?t$K=>$C$FJB$YBX$($^$9!#(B -$BMxMQ2DG=$JJB$YBX$(4X?t(B (sorting function) $B$K$O0J2<$N$b$N$,$"$j$^$9!'(B +@kbd{C-c C-s} (@code{gnus-group-sort-groups}) $BL?Na$O!"%0%k!<%W%P%C%U%!(B +$B$r(B @code{gnus-group-sort-function} $BJQ?t$GM?$($i$l$k4X?t$K=>$C$FJB$YBX$((B +$B$^$9!#MxMQ2DG=$JJB$YBX$(4X?t(B (sorting function) $B$K$O0J2<$N$b$N$,$"$j$^(B +$B$9(B: @table @code @@ -2861,8 +2886,8 @@ kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$B!#@\ @item gnus-group-sort-by-real-name @findex gnus-group-sort-by-real-name -$B%0%k!<%W$rK\Ev$N!JA0$K2?$b$D$$$F$$$J$$!K%0%k!<%WL>$G%"%k%U%!%Y%C%H=g$KJB$Y(B -$BJQ$($^$9!#(B +$B%0%k!<%W$rK\Ev$N(B ($BA0$K2?$b$D$$$F$$$J$$(B) $B%0%k!<%WL>$G%"%k%U%!%Y%C%H=g$KJB(B +$B$YJQ$($^$9!#(B @item gnus-group-sort-by-level @findex gnus-group-sort-by-level @@ -2874,8 +2899,8 @@ kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$B!#@\ @item gnus-group-sort-by-rank @findex gnus-group-sort-by-rank -$B%0%k!<%W$N%9%3%"$GJB$YBX$(!"l9g!"$b$C$H$b=EMW$JJB$YBX$($N80$r;}$D4X?t$O:G8e$G$J$/$F$O$J$j$^$;$s!#(B - +@code{gnus-group-sort-function} $B$OJB$YBX$(4X?t$N%j%9%H$G$"$C$F$b9=$$$^$;(B +$B$s!#$3$N>l9g!"$b$C$H$b=EMW$JJB$YBX$($N80$r;}$D4X?t$O:G8e$G$J$/$F$O$J$j$^(B +$B$;$s!#(B $B$"$k@\JB$YBX$($kL?Na$b$$$/$D$+$"$j$^$9!#(B @@ -2898,43 +2922,43 @@ kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$B!#@\ @item G S a @kindex G S a (Group) @findex gnus-group-sort-groups-by-alphabet -$B%0%k!<%W%P%C%U%!$r%0%k!<%WL>$N%"%k%U%!%Y%C%H=g$GJB$YBX$($^$9(B -(@code{gnus-group-sort-groups-by-alphabet})$B!#(B +$B%0%k!<%W%P%C%U%!$r%0%k!<%WL>$N%"%k%U%!%Y%C%H=g$GJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-groups-by-alphabet})$B!#(B @item G S u @kindex G S u (Group) @findex gnus-group-sort-groups-by-unread -$B%0%k!<%W%P%C%U%!$rL$FI5-;v$N?t$GJB$YBX$($^$9(B -(@code{gnus-group-sort-groups-by-unread})$B!#(B +$B%0%k!<%W%P%C%U%!$rL$FI5-;v$N?t$GJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-groups-by-unread})$B!#(B @item G S l @kindex G S l (Group) @findex gnus-group-sort-groups-by-level -$B%0%k!<%W%P%C%U%!$r%0%k!<%W%l%Y%k$GJB$YBX$($^$9(B -(@code{gnus-group-sort-groups-by-level})$B!#(B +$B%0%k!<%W%P%C%U%!$r%0%k!<%W%l%Y%k$GJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-groups-by-level})$B!#(B @item G S v @kindex G S v (Group) @findex gnus-group-sort-groups-by-score -$B%0%k!<%W%P%C%U%!$r%0%k!<%W$N%9%3%"$GJB$YBX$($^$9(B -(@code{gnus-group-sort-groups-by-score})$B!#(B@xref{Group Score}. +$B%0%k!<%W%P%C%U%!$r%0%k!<%W$N%9%3%"$GJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-groups-by-score})$B!#(B@xref{Group Score}. @item G S r @kindex G S r (Group) @findex gnus-group-sort-groups-by-rank -$B%0%k!<%W%P%C%U%!$r%0%k!<%W$N%i%s%/$GJB$YBX$($^$9(B -(@code{gnus-group-sort-groups-by-rank})$B!#(B@xref{Group Score}. +$B%0%k!<%W%P%C%U%!$r%0%k!<%W$N%i%s%/$GJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-groups-by-rank})$B!#(B@xref{Group Score}. @item G S m @kindex G S m (Group) @findex gnus-group-sort-groups-by-method -$B%0%k!<%W%P%C%U%!$r%P%C%/%(%s%I$NL>A0$G%"%k%U%!%Y%C%H=g$KJB$YBX$($^$9(B -(@code{gnus-group-sort-groups-by-method})$B!#(B +$B%0%k!<%W%P%C%U%!$r%P%C%/%(%s%I$NL>A0$G%"%k%U%!%Y%C%H=g$KJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-groups-by-method})$B!#(B @end table -$B0J2<$NA4$F$NL?Na$O%W%m%;%9(B/$B@\F,<-$N=,47$K=>$$$^$9(B -(@pxref{Process/Prefix})$B!#(B +$B0J2<$NA4$F$NL?Na$O%W%m%;%9(B/$B@\F,<-$N=,47$K=>$$$^(B +$B$9(B (@pxref{Process/Prefix})$B!#(B $B%7%s%\%k@\F,<-(B (@pxref{Symbolic Prefixes}) $B$,M?$($i$l$?$H$-$O!"$3$l$iA4(B $B$F$NL?Na$O5U=g$GJB$S49$($^$9!#(B @@ -2945,43 +2969,42 @@ kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$B!#@\ @item G P a @kindex G P a (Group) @findex gnus-group-sort-selected-groups-by-alphabet -$B%0%k!<%W$r!"%0%k!<%WL>$N%"%k%U%!%Y%C%H=g$GJB$YBX$($^$9(B -(@code{gnus-group-sort-selected-groups-by-alphabet})$B!#(B +$B%0%k!<%W$r!"%0%k!<%WL>$N%"%k%U%!%Y%C%H=g$GJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-selected-groups-by-alphabet})$B!#(B @item G P u @kindex G P u (Group) @findex gnus-group-sort-selected-groups-by-unread -$B%0%k!<%W$r!"L$FI5-;v$N?t$GJB$YBX$($^$9(B -(@code{gnus-group-sort-selected-groups-by-unread})$B!#(B +$B%0%k!<%W$r!"L$FI5-;v$N?t$GJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-selected-groups-by-unread})$B!#(B @item G P l @kindex G P l (Group) @findex gnus-group-sort-selected-groups-by-level -$B%0%k!<%W$r!"%0%k!<%W%l%Y%k$GJB$YBX$($^$9(B -(@code{gnus-group-sort-selected-groups-by-level})$B!#(B +$B%0%k!<%W$r!"%0%k!<%W%l%Y%k$GJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-selected-groups-by-level})$B!#(B @item G P v @kindex G P v (Group) @findex gnus-group-sort-selected-groups-by-score -$B%0%k!<%W$r!"%0%k!<%W$N%9%3%"$GJB$YBX$($^$9(B -(@code{gnus-group-sort-selected-groups-by-score})$B!#(B@xref{Group Score}. +$B%0%k!<%W$r!"%0%k!<%W$N%9%3%"$GJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-selected-groups-by-score})$B!#(B +@xref{Group Score}. @item G P r @kindex G P r (Group) @findex gnus-group-sort-selected-groups-by-rank -$B%0%k!<%W$r!"%0%k!<%W$N%i%s%/$GJB$YBX$($^$9(B -(@code{gnus-group-sort-selected-groups-by-rank})$B!#(B@xref{Group Score}. +$B%0%k!<%W$r!"%0%k!<%W$N%i%s%/$GJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-selected-groups-by-rank})$B!#(B@xref{Group Score}. @item G P m @kindex G P m (Group) @findex gnus-group-sort-selected-groups-by-method -$B%0%k!<%W$r!"%P%C%/%(%s%I$NL>A0$G%"%k%U%!%Y%C%H=g$KJB$YBX$($^$9(B -(@code{gnus-group-sort-selected-groups-by-method})$B!#(B +$B%0%k!<%W$r!"%P%C%/%(%s%I$NL>A0$G%"%k%U%!%Y%C%H=g$KJB$YBX$($^(B +$B$9(B (@code{gnus-group-sort-selected-groups-by-method})$B!#(B @end table - - @node Group Maintenance @section $B%0%k!<%W$N4IM}(B @cindex bogus groups @@ -2990,34 +3013,33 @@ kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$B!#@\ @item b @kindex b (Group) @findex gnus-group-check-bogus-groups -$BIT@5$J%0%k!<%W$r8+$D$1$F!":o=|$7$^$9(B -(@code{gnus-group-check-bogus-groups})$B!#(B +$BIT@5$J%0%k!<%W$r8+$D$1$F!":o=|$7$^(B +$B$9(B (@code{gnus-group-check-bogus-groups})$B!#(B @item F @kindex F (Group) @findex gnus-group-find-new-groups -$B?7$7$$%0%k!<%W$r8+$D$1$F!"$=$l$i$r=hM}$7$^$9(B -(@code{gnus-group-find-new-groups})$B!#(B1$B2s$N(B @kbd{C-u} $B$N8e$G2!$5$l$k$H!"(B -$B%5!<%P!<$K?7$7$$%0%k!<%W$r?R$M$k$?$a$KJ}K!(B @code{ask-server} $B$r;H$$$^$9!#(B -2$B2s$N(B @kbd{C-u} $B$N8e$G2!$5$l$k$H!"%5!<%P!<$K?7$7$$%0%k!<%W$r?R$M$k$?$a$K(B -$B:G$b40A4$G$"$k$H;W$o$l$kJ}K!$rMQ$$!"?7$7$$%0%k!<%W$r%>%s%S$H$7$F9XFI$7$^(B -$B$9!#(B +$B?7$7$$%0%k!<%W$r8+$D$1$F!"$=$l$i$r=hM}$7$^(B +$B$9(B (@code{gnus-group-find-new-groups})$B!#0l2s$N(B @kbd{C-u} $B$N8e$G2!$5$l$k(B +$B$H!"%5!<%P!<$K?7$7$$%0%k!<%W$r?R$M$k$?$a$KJ}K!(B @code{ask-server} $B$r;H$$(B +$B$^$9!#Fs2s$N(B @kbd{C-u} $B$N8e$G2!$5$l$k$H!"%5!<%P!<$K?7$7$$%0%k!<%W$r?R$M(B +$B$k$?$a$K:G$b40A4$G$"$k$H;W$o$l$kJ}K!$rMQ$$!"?7$7$$%0%k!<%W$r%>%s%S$H$7$F(B +$B9XFI$7$^$9!#(B @item C-c C-x @kindex C-c C-x (Group) @findex gnus-group-expire-articles -$B8=:_$N%0%k!<%W$N%(%/%9%Q%$%"5-;v$KBP$7$F!J$b$7$"$l$P!KA4$F%(%/%9%Q%$%"=hM}(B -$B$r9T$$$^$9(B (@code{gnus-group-expire-articles})$B!#(B +$B8=:_$N%0%k!<%W$N%(%/%9%Q%$%"5-;v$KBP$7$F(B ($B$b$7$"$l$P(B) $BA4$F%(%/%9%Q%$%"=h(B +$BM}$r9T$$$^$9(B (@code{gnus-group-expire-articles})$B!#(B @item C-c M-C-x @kindex C-c M-C-x (Group) @findex gnus-group-expire-all-groups -$BA4$F$N%0%k!<%W$NA4$F$N5-;v$KBP$7$F!"%(%/%9%Q%$%"=hM}$r9T$$$^$9(B -(@code{gnus-group-expire-all-groups})$B!#(B +$BA4$F$N%0%k!<%W$NA4$F$N5-;v$KBP$7$F!"%(%/%9%Q%$%"=hM}$r9T$$$^(B +$B$9(B (@code{gnus-group-expire-all-groups})$B!#(B @end table - @node Browse Foreign Server @section $B30It%5!<%P$N1\Mw(B @cindex foreign servers @@ -3034,9 +3056,9 @@ kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$B!#@\ @findex gnus-browse-mode $BMxMQ2DG=$J%0%k!<%W$N%j%9%H$r;}$C$??7$7$$%P%C%U%!$,8=$l$^$9!#$3$N%P%C%U%!(B $B$O(B @code{gnus-browse-mode} $B$r;HMQ$7$^$9!#$3$N%P%C%U%!$ODL>o$N%0%k!<%W%P%C(B -$B%U%!$K$A$g$C$H!J$H$$$&$+!"$H$C$F$b!K;w$F$$$^$9!#(B +$B%U%!$K$A$g$C$H(B ($B$H$$$&$+!"$H$C$F$b(B) $B;w$F$$$^$9!#(B -$B0J2<$,1\Mw%b!<%I(B (browse mode) $B$G;HMQ$G$-$k%-!C$9$@$1$G$9!#KM$O$3$l$N$&$l(B -$B$7$5$,$h$/$o$+$s$J$$$s$@$1$I!"C/$+J,$+$k?M$$$k!)(B +Gnus $B$rCfCG$7$^$9(B (@code{gnus-group-suspend})$B!#$3$l$O(B gnus $B$rC$9$@$1$G$9!#KM$O$3$l$N(B +$B$&$l$7$5$,$h$/$o$+$s$J$$$s$@$1$I!"C/$+J,$+$k?M$$$k(B? @item q @kindex q (Group) @@ -3105,43 +3126,42 @@ Gnus $B$r=*N;$7$^$9(B(@code{gnus-group-exit})$B!#(B @item Q @kindex Q (Group) @findex gnus-group-quit -@file{.newsrc} $B%U%!%$%k$r%;!<%V$;$:$K(B gnus $B$r=*N;$7$^$9(B -(@code{gnus-group-quit})$B!#%I%j%V%k%U%!%$%k$O%;!<%V$5$l$^$9$1$I(B -(@pxref{Auto Save})$B!#(B +@file{.newsrc} $B%U%!%$%k$r%;!<%V$;$:$K(B gnus $B$r=*N;$7$^(B +$B$9(B (@code{gnus-group-quit})$B!#%I%j%V%k%U%!%$%k$O%;!<%V$5$l$^$9$1(B +$B$I(B (@pxref{Auto Save})$B!#(B @end table @vindex gnus-exit-gnus-hook @vindex gnus-suspend-gnus-hook Gnus $B$rCfCG$9$k$H$-$O(B @code{gnus-suspend-gnus-hook} $B$,8F$S=P$5$l$^$9!#(B -Gnus$B$r=*N;$9$k$H$-$O(B @code{gnus-exit-gnus-hook} $B$,8F$S=P$5$l!"$5$i$K(B -gnus $B$r=*N;$9$k$H$-$N:G8e$H$7$F(B @code{gnus-after-exiting-gnus-hook} $B$,8F$S(B -$B=P$5$l$^$9!#(B +Gnus$B$r=*N;$9$k$H$-$O(B @code{gnus-exit-gnus-hook} $B$,8F$S=P$5$l!"$5$i(B +$B$K(B gnus $B$r=*N;$9$k$H$-$N:G8e$H$7(B +$B$F(B @code{gnus-after-exiting-gnus-hook} $B$,8F$S=P$5$l$^$9!#(B @findex gnus-unload @cindex unloading $B$b$7(B gnus $B$H$=$l$K4XO"$9$k$b$N$r40A4$K=hJ,$7$?$$$N$G$"$l$P!"(B -@code{gnus-unload} $B%3%^%s%I$,;H$($^$9!#$3$N%3%^%s%I$O!"%a%?JQ?t$r%+%9%?%^(B -$B%$%:$7$h$&$H$7$F$$$k$H$-$K$bJXMx$G$9!#(B +@code{gnus-unload} $B%3%^%s%I$,;H$($^$9!#$3$N%3%^%s%I$O!"%a%?JQ?t$r%+%9%?(B +$B%^%$%:$7$h$&$H$7$F$$$k$H$-$K$bJXMx$G$9!#(B Note: @quotation -$B%_%9(B Lisa Cannifax $B$O1Q8l$N/G/$,H`=w$N(B -$B%W%i%9%F%#%C%/$N0X;R$NGX1[$7$K!"1tI.$G7+$jJV$7@~$rIA$/$N$K$D$i$l(B -$B$F!"B-$,$7$S$l$F=E$/$J$j!"0U<1$,[/[0$H$7$F$-$^$7$?!#(B +$B%_%9(B Lisa Cannifax $B$O1Q8l$N/G/$,H`=w$N%W%i%9%F%#%C(B +$B%/$N0X;R$NGX1[$7$K!"1tI.$G7+$jJV$7@~$rIA$/$N$K$D$i$l$F!"B-$,$7$S$l$F=E$/(B +$B$J$j!"0U<1$,[/[0$H$7$F$-$^$7$?!#(B @end quotation - @node Group Topics @section Group Topics @cindex topics -$B$b$7$"$J$?$,$?!<$/$5$s$N%0%k!<%W$rFI$s$G$$$k$N$G$"$l$P!"%0%k!<%W$r%H%T%C%/(B -$BKh$K3,AXJ,$1$G$-$k$HJXMx$G$7$g$&!#(BEmacs $B$N%0%k!<%W$r$3$C$A$X!"%;%C%/%9$N%0(B -$B%k!<%W$r$"$C$A$X!"$G!";D$j$r!J$(!)%0%k!<%W$,(B2$B$D$/$i$$$7$+$J$$$N!)!K$N%;%/%7%g%s$KF~$l$^$7$g$&!#$"$k$$$O(B Emacs $B%;%C%/%9$N(B -$B%0%k!<%W$r(B Emacs $B%0%k!<%W!"%;%C%/%9%0%k!<%W$N$I$A$i$+$NI{%H%T%C%/$H$9$k$3(B -$B$H$5$($b$G$-$^$9!=!=$"$k$$$ON>J}$K!*$9$s$4$$$G$7$g$&!*(B +$B$b$7$"$J$?$,$?!<$/$5$s$N%0%k!<%W$rFI$s$G$$$k$N$G$"$l$P!"%0%k!<%W$r%H%T%C(B +$B%/Kh$K3,AXJ,$1$G$-$k$HJXMx$G$7$g$&!#(BEmacs $B$N%0%k!<%W$r$3$C$A$X!"%;%C%/%9(B +$B$N%0%k!<%W$r$"$C$A$X!"$G!";D$j$r(B ($B$((B? $B%0%k!<%W$,Fs(B $B$D$/$i$$$7$+$J$$(B +$B$N(B?) $B$N%;%/%7%g%s$KF~$l$^$7$g$&!#$"$k$$(B +$B$O(B Emacs $B%;%C%/%9$N%0%k!<%W$r(B Emacs $B%0%k!<%W!"%;%C%/%9%0%k!<%W$N$I$A$i$+(B +$B$NI{%H%T%C%/$H$9$k$3$H$5$($b$G$-$^$9!=!=$"$k$$$ON>J}$K(B! $B$9$s$4$$$G$7$g$&(B! @iftex @iflatex @@ -3151,7 +3171,7 @@ Note: @end iflatex @end iftex -$B$3$l$,Nc$G$9!'(B +$B$3$l$,Nc$G$9(B: @example Gnus @@ -3168,15 +3188,15 @@ Gnus @findex gnus-topic-mode @kindex t (Group) -$B$3$N(B@emph{$BAG@2$i$7$$(B}$B5!G=$r;H$&$K$O!"(B@code{gnus-topic} $B%^%$%J!<%b!<%I$r(B -$B!J2?$H!*!KC1$K%9%$%C%A%*%s$9$k$@$1!=!=%0%k!<%W%P%C%U%!$G!"(B@kbd{t} $B$r2!$7$F(B -$B$/$@$5$$!J$3$l$O%H%0%k%3%^%s%I$G$9!K!#(B +$B$3$N(B@emph{$BAG@2$i$7$$(B}$B5!G=$r;H$&$K$O!"(B@code{gnus-topic} $B%^%$%J!<%b!<%I(B +$B$r(B ($B2?$H(B!) $BC1$K%9%$%C%A%*%s$9$k$@$1!=!=%0%k!<%W%P%C%U%!$G!"(B@kbd{t} $B$r2!(B +$B$7$F$/$@$5$$(B ($B$3$l$O%H%0%k%3%^%s%I$G$9(B)$B!#(B -$B$5$"$d$C$F$_$h$&!#$H$K$+$/;n$7$F$_$F!#7/$,La$C$F$/$k$^$G!"KM$O$3$3$GBT$C$F(B -$B$k$+$i$5!#%i%i!"%?%i%i%s!D$s!"$$$$6J$@$M!"$3$l!D%i!"%i!"%i!D$((B? $BLa$C$F$-$?!)(B -$B$h$7!"$8$cv$^$l$^$9!#$3$l!"$H$C$F$b(B -$B%9%F%-$@$H;W$&$s$@$1$I!#(B +$B$5$F!"%H%T%C%/$rA*$V$H!"%H%T%C%/$O@^$j>v$^$l$^$9!#$3$l!"$H$C$F$b%9%F%-$@(B +$B$H;W$&$s$@$1$I!#(B @vindex gnus-topic-line-format -$B%H%T%C%/9T$O!"(B@code{gnus-topic-line-format} $BJQ?t$NCM$K=>$C$F:n@.$5$l$^$9(B -(@pxref{Formatting Variables})$B!#M-8z$JMWAG$O!"(B +$B%H%T%C%/9T$O!"(B@code{gnus-topic-line-format} $BJQ?t$NCM$K=>$C$F:n@.$5$l$^(B +$B$9(B (@pxref{Formatting Variables})$B!#M-8z$JMWAG$O!"(B @table @samp @item i @@ -3223,8 +3242,8 @@ Gnus @end table @vindex gnus-topic-indent-level -$B3FI{%H%T%C%/!J$HI{%H%T%C%/Fb$N%0%k!<%W!K$O!"%H%T%C%/%l%Y%k?t$N(B -@code{gnus-topic-indent-level} $BG\$N6uGrJ,$N;z2<$2$,9T$o$l$^$9!#=i4|CM(B +$B3FI{%H%T%C%/(B ($B$HI{%H%T%C%/Fb$N%0%k!<%W(B) $B$O!"%H%T%C%/%l%Y%k?t(B +$B$N(B @code{gnus-topic-indent-level} $BG\$N6uGrJ,$N;z2<$2$,9T$o$l$^$9!#=i4|CM(B $B$O(B 2 $B$G$9!#(B @vindex gnus-topic-mode-hook @@ -3232,32 +3251,31 @@ Gnus $B$^$9!#(B @vindex gnus-topic-display-empty-topics -@code{gnus-topic-display-empty-topics} $B$O%H%T%C%/$NCf$KL$FI5-;v(B -$B$,L5$$>l9g$G$b$=$N%H%T%C%/$rI=<($9$k$h$&$K$7$^$9!#=i4|CM$O(B -@code{t} $B$G$9!#(B +@code{gnus-topic-display-empty-topics} $B$O%H%T%C%/$NCf$KL$FI5-;v$,L5$$>l(B +$B9g$G$b$=$N%H%T%C%/$rI=<($9$k$h$&$K$7$^$9!#=i4|CM$O(B @code{t} $B$G$9!#(B @node Topic Commands @subsection $B%H%T%C%/L?Na(B @cindex topic commands -$B%H%T%C%/%^%$%J!<%b!<%I$,M-8z$G$"$k$H$-$O!"(B@kbd{T} $B%5%V%^%C%W$,?7(B -$B$7$/MxMQ$G$-$k$h$&$K$J$j$^$9!#$5$i$KI8=`%-!<$NCf$G$b!"Dj5A$,$A$g$C(B -$B$HJQ$o$k$b$N$,>/$7$"$j$^$9!#(B +$B%H%T%C%/%^%$%J!<%b!<%I$,M-8z$G$"$k$H$-$O!"(B@kbd{T} $B%5%V%^%C%W$,?7$7$/MxMQ(B +$B$G$-$k$h$&$K$J$j$^$9!#$5$i$KI8=`%-!<$NCf$G$b!"Dj5A$,$A$g$C$HJQ$o$k$b$N$,(B +$B>/$7$"$j$^$9!#(B @table @kbd @item T n @kindex T n (Topic) @findex gnus-topic-create-topic -$B?7$7$$%H%T%C%/$NL>A0$r%W%m%s%W%HF~NO$7!"$=$l$r:n@.$7$^$9(B -(@code{gnus-topic-create-topic})$B!#(B +$B?7$7$$%H%T%C%/$NL>A0$r%W%m%s%W%HF~NO$7!"$=$l$r:n@.$7$^(B +$B$9(B (@code{gnus-topic-create-topic})$B!#(B @item T m @kindex T m (Topic) @findex gnus-topic-move-group -$B8=:_$N%0%k!<%W$r!"$I$3$+B>$N%H%T%C%/$K0\F0$5$;$^$9(B -(@code{gnus-topic-move-group})$B!#$3$N%3%^%s%I$O%W%m%;%9%^!<%/!&%W(B -$B%l%U%#%C%/%9%k!<%k$K=>$$$^$9(B (@pxref{Process/Prefix})$B!#(B +$B8=:_$N%0%k!<%W$r!"$I$3$+B>$N%H%T%C%/$K0\F0$5$;$^(B +$B$9(B (@code{gnus-topic-move-group})$B!#$3$N%3%^%s%I$O%W%m%;%9%^!<%/!&%W%l%U%#%C(B +$B%/%9%k!<%k$K=>$$$^$9(B (@pxref{Process/Prefix})$B!#(B @item T j @kindex T j (Topic) @@ -3267,18 +3285,30 @@ Gnus @item T c @kindex T c (Topic) @findex gnus-topic-copy-group -$B8=:_$N%0%k!<%W$r!"$I$3$+B>$N%H%T%C%/$K%3%T!<$7$^$9(B -(@code{gnus-topic-copy-group})$B!#$3$N%3%^%s%I$O%W%m%;%9%^!<%/!&%W(B -$B%l%U%#%C%/%9%k!<%k$K=>$$$^$9(B (@pxref{Process/Prefix})$B!#(B +$B8=:_$N%0%k!<%W$r!"$I$3$+B>$N%H%T%C%/$K%3%T!<$7$^(B +$B$9(B (@code{gnus-topic-copy-group})$B!#$3$N%3%^%s%I$O%W%m%;%9%^!<%/!&%W%l%U%#%C(B +$B%/%9%k!<%k$K=>$$$^$9(B (@pxref{Process/Prefix})$B!#(B + +@item T h +@kindex T h (Topic) +@findex gnus-topic-hide-topic +$B8=:_$N%H%T%C%/$r1#$7$^$9!#$b$7%W%l%U%#%C%/%9$,M?$($i$l$?$J$i!"$=$N%H%T%C(B +$B%/$r1J5W$K1#$7$^$9!#(B + +@item T s +@kindex T s (Topic) +@findex gnus-topic-show-topic +$B8=:_$N%H%T%C%/$rI=<($7$^$9!#$b$7%W%l%U%#%C%/%9$,M?$($i$l$?$J$i!"$=$N%H%T%C(B +$B%/$r1J5W$KI=<($7$^$9!#(B @item T D @kindex T D (Topic) @findex gnus-topic-remove-group -$B%0%k!<%W$r8=:_$N%H%T%C%/$+$i:o=|$7$^$9(B(@code{gnus-topic-remove-group})$B!#(B +$B%0%k!<%W$r8=:_$N%H%T%C%/$+$i:o=|$7$^$9(B (@code{gnus-topic-remove-group})$B!#(B $B$3$NL?Na$Ol9g$O!"(Bgnus $B$O$"$J$?$,l9g$O!"(Bgnus $B$O$"$J$?$,C$7$^$9(B -(@code{gnus-topic-unmark-topic})$B!#(B +$B8=:_$N%H%T%C%/$K$"$kA4$F$N%0%k!<%W$+$i%W%m%;%9%^!<%/$r>C$7$^(B +$B$9(B (@code{gnus-topic-unmark-topic})$B!#(B @item T TAB @itemx TAB @kindex T TAB (Topic) @kindex TAB (Topic) @findex gnus-topic-indent -$B8=:_$N%H%T%C%/$N(B ``$B;z2<$2(B'' $B$r9T$$!"$=$NA0$N%H%T%C%/$NI{%H%T%C%/$K$7$^$9(B -(@code{gnus-topic-indent})$B!#@\F,0z?t$rM?$($k$H!"H?BP$K$=$N%H%T%C%/(B -$B$N;z2<$2$rLa$7$^$9!#(B +$B8=:_$N%H%T%C%/$N(B ``$B;z2<$2(B'' $B$r9T$$!"$=$NA0$N%H%T%C%/$NI{%H%T%C%/$K$7$^(B +$B$9(B (@code{gnus-topic-indent})$B!#@\F,0z?t$rM?$($k$H!"H?BP$K$=$N%H%T%C%/$N(B +$B;z2<$2$rLa$7$^$9!#(B @item M-TAB @kindex M-TAB (Topic) @@ -3333,44 +3363,32 @@ gnus $B$r5/F0$7$?$H$-$K$=$l$r%k!<%H%H%T%C%/$KIU$12C$($^$9!#e$G$3$N%3%^%s%I$roDL$j$=$N%0%k!<%W$KF~$j$^$9!#%H%T%C%/9T$N>e$G9T$&$H!"$=$N%H%T%C%/$O!J4{(B -$B$KI=<($5$l$F$$$k$H$-$O!K@^$j$?$?$^$l$k$+!"!J4{$K@^$j$?$?$^$l$F$$$k$H$-$O!K(B -$BE83+$5$l$^$9!#$D$^$j%H%T%C%/$KBP$7$F$O$3$l$O%H%0%k%3%^%s%I$G$9!#$5$i$K!"?t(B -$B;z%W%l%U%#%C%/%9$rM?$($k$H!"$=$N%l%Y%k!J$H$=$l$h$j$b>.$5$$%l%Y%k!K$N%0%k!<(B -$B%W$,I=<($5$l$^$9!#(B - -@item RET -@kindex RET (Topic) -@findex gnus-topic-select-group -@itemx SPACE -$B%0%k!<%W$rA*Br$9$k$+!"$"$k$$$O%H%T%C%/$r@^$j$?$?$_$^$9(B -(@code{gnus-topic-select-group})$B!#%0%k!<%W$N>e$G$3$N%3%^%s%I$roDL$j$=$N%0%k!<%W$KF~$j$^$9!#%H%T%C%/9T$N>e$G9T$&$H!"$=$N%H%T%C%/$O!J4{(B -$B$KI=<($5$l$F$$$k$H$-$O!K@^$j$?$?$^$l$k$+!"!J4{$K@^$j$?$?$^$l$F$$$k$H$-$O!K(B -$BE83+$5$l$^$9!#$D$^$j%H%T%C%/$KBP$7$F$O$3$l$O%H%0%k%3%^%s%I$G$9!#$5$i$K!"?t(B -$B;z%W%l%U%#%C%/%9$rM?$($k$H!"$=$N%l%Y%k!J$H$=$l$h$j$b>.$5$$%l%Y%k!K$N%0%k!<(B -$B%W$,I=<($5$l$^$9!#(B +$B%0%k!<%W$rA*Br$9$k$+!"$"$k$$$O%H%T%C%/$r@^$j$?$?$_$^(B +$B$9(B (@code{gnus-topic-select-group})$B!#%0%k!<%W$N>e$G$3$N%3%^%s%I$roDL$j$=$N%0%k!<%W$KF~$j$^$9!#%H%T%C%/9T$N>e$G9T$&$H!"$=$N%H%T%C(B +$B%/$O(B ($B4{$KI=<($5$l$F$$$k$H$-$O(B) $B@^$j$?$?$^$l$k$+!"(B($B4{$K@^$j$?$?$^$l$F$$(B +$B$k$H$-$O(B) $BE83+$5$l$^$9!#$D$^$j%H%T%C%/$KBP$7$F$O$3$l$O%H%0%k%3%^%s%I$G$9!#(B +$B$5$i$K!"?t;z%W%l%U%#%C%/%9$rM?$($k$H!"$=$N%l%Y%k(B ($B$H$=$l$h$j$b>.$5$$%l%Y(B +$B%k(B) $B$N%0%k!<%W$,I=<($5$l$^$9!#(B @item C-c C-x @kindex C-c C-x (Topic) @findex gnus-topic-expire-articles ($B$b$7$"$l$P(B) $B8=:_$N%0%k!<%W$+%H%T%C%/$+$NA4$F$N;~8B>C5n2DG=5-;v$r;~8B>C(B -$B5n$7$^$9(B (@code{gnus-topic-expire-articles})$B!#(B +$B5n$7$^$9(B (@code{gnus-topic-expire-articles})$B!#(B @item C-k @kindex C-k (Topic) @findex gnus-topic-kill-group -$B%0%k!<%W$"$k$$$O%H%T%C%/$r(B kill $B$7$^$9(B(@code{gnus-topic-kill-group})$B!#%H(B -$B%T%C%/Fb$K$"$C$?%0%k!<%W$bA4$F!"%H%T%C%/$H0l=o$K:o=|$5$l$^$9!#(B +$B%0%k!<%W$"$k$$$O%H%T%C%/$r(B kill $B$7$^$9(B (@code{gnus-topic-kill-group})$B!#(B +$B%H%T%C%/Fb$K$"$C$?%0%k!<%W$bA4$F!"%H%T%C%/$H0l=o$K:o=|$5$l$^$9!#(B @item C-y @kindex C-y (Topic) @findex gnus-topic-yank-group -$BD>A0$N(B kill $B$5$l$?%0%k!<%W$"$k$$$O%H%T%C%/$r(B yank $B$7$^$9(B -(@code{gnus-topic-yank-group})$B!#A4$F$N%H%T%C%/$O!"A4$F$N%0%k!<%W(B -$B$NA0$K(B yank $B$5$l$k$3$H$K5$$r$D$1$F$/$@$5$$!#(B +$BD>A0$N(B kill $B$5$l$?%0%k!<%W$"$k$$$O%H%T%C%/$r(B yank $B$7$^(B +$B$9(B (@code{gnus-topic-yank-group})$B!#A4$F$N%H%T%C%/$O!"A4$F$N%0%k!<%W$NA0(B +$B$K(B yank $B$5$l$k$3$H$K5$$r$D$1$F$/$@$5$$!#(B @item T r @kindex T r (Topic) @@ -3385,8 +3403,8 @@ gnus $B$r5/F0$7$?$H$-$K$=$l$r%k!<%H%H%T%C%/$KIU$12C$($^$9!#$N%"%k%U%!%Y%C%H=g$KJB$YBX$($^$9(B -(@code{gnus-topic-sort-groups-by-alphabet})$B!#(B +$B8=:_$N%H%T%C%/$r%0%k!<%WL>$N%"%k%U%!%Y%C%H=g$KJB$YBX$($^(B +$B$9(B (@code{gnus-topic-sort-groups-by-alphabet})$B!#(B @item T S u @kindex T S u (Topic) @findex gnus-topic-sort-groups-by-unread -$B8=:_$N%H%T%C%/$rL$FI5-;v$N?t$GJB$YBX$($^$9(B -(@code{gnus-topic-sort-groups-by-unread})$B!#(B +$B8=:_$N%H%T%C%/$rL$FI5-;v$N?t$GJB$YBX$($^(B +$B$9(B (@code{gnus-topic-sort-groups-by-unread})$B!#(B @item T S l @kindex T S l (Topic) @findex gnus-topic-sort-groups-by-level -$B8=:_$N%H%T%C%/$r%0%k!<%W$N%l%Y%k$GJB$YBX$($^$9(B -(@code{gnus-topic-sort-groups-by-level})$B!#(B +$B8=:_$N%H%T%C%/$r%0%k!<%W$N%l%Y%k$GJB$YBX$($^(B +$B$9(B (@code{gnus-topic-sort-groups-by-level})$B!#(B @item T S v @kindex T S v (Topic) @findex gnus-topic-sort-groups-by-score -$B8=:_$N%H%T%C%/$r%0%k!<%W$N%9%3%"$GJB$YBX$($^$9(B -(@code{gnus-topic-sort-groups-by-score})$B!#(B@xref{Group Score}. +$B8=:_$N%H%T%C%/$r%0%k!<%W$N%9%3%"$GJB$YBX$($^(B +$B$9(B (@code{gnus-topic-sort-groups-by-score})$B!#(B@xref{Group Score}. @item T S r @kindex T S r (Topic) @findex gnus-topic-sort-groups-by-rank -$B8=:_$N%H%T%C%/$r%0%k!<%W$N%i%s%/$GJB$YBX$($^$9(B -(@code{gnus-topic-sort-groups-by-rank})$B!#(B@xref{Group Score}. +$B8=:_$N%H%T%C%/$r%0%k!<%W$N%i%s%/$GJB$YBX$($^(B +$B$9(B (@code{gnus-topic-sort-groups-by-rank})$B!#(B@xref{Group Score}. @item T S m @kindex T S m (Topic) @findex gnus-topic-sort-groups-by-method -$B8=:_$N%H%T%C%/$r%P%C%/%(%s%I$NL>A0$G%"%k%U%!%Y%C%H=g$KJB$YBX$($^$9(B -(@code{gnus-topic-sort-groups-by-method})$B!#(B +$B8=:_$N%H%T%C%/$r%P%C%/%(%s%I$NL>A0$G%"%k%U%!%Y%C%H=g$KJB$YBX$($^(B +$B$9(B (@code{gnus-topic-sort-groups-by-method})$B!#(B @end table -$B%0%k!<%W$N%=!<%H$K$D$$$F$N$5$i$J$k>pJs$O(B @xref{Sorting Groups} $B$r;2>H$7$F(B -$B$/$@$5$$!#(B - +$B%0%k!<%W$N%=!<%H$K$D$$$F$N$5$i$J$k>pJs$O(B @xref{Sorting Groups} $B$r;2>H$7(B +$B$F$/$@$5$$!#(B @node Topic Topology @subsection $B%H%T%C%/$N0LAj9=B$(B @@ -3470,10 +3485,10 @@ Gnus 13: comp.sources.unix @end example -$B$D$^$j!"$3$3$G$O0l$D$N%H%C%W%l%Y%k$N%H%T%C%/(B (@samp{Gnus}) $B$,$"$j!"$=$N2<(B -$B$K(B2$B$D$N%H%T%C%/$,$"$j!"$=$N$&$A$N0lJ}$NI{%H%T%C%/Cf$K0l$DI{%H%T%C%/$,$"$j(B -$B$^$9!J%H%C%W%l%Y%k%H%T%C%/$O>o$K0l$D$7$+$"$j$^$;$s!K!#$3$N9=B$$O!"0J2<$N$h(B -$B$&$KI=8=$G$-$^$9!'(B +$B$D$^$j!"$3$3$G$O0l$D$N%H%C%W%l%Y%k$N%H%T%C%/(B (@samp{Gnus}) $B$,$"$j!"$=$N(B +$B2<$KFs$D$N%H%T%C%/$,$"$j!"$=$N$&$A$N0lJ}$NI{%H%T%C%/Cf$K0l$DI{%H%T%C%/$,(B +$B$"$j$^$9(B ($B%H%C%W%l%Y%k%H%T%C%/$O>o$K0l$D$7$+$"$j$^$;$s(B)$B!#$3$N9=B$$O!"0J(B +$B2<$N$h$&$KI=8=$G$-$^$9(B: @lisp (("Gnus" visible) @@ -3483,41 +3498,40 @@ Gnus @end lisp @vindex gnus-topic-topology -$B$3$l$Oe5-$NI=<($r9T$&$?$a$N!"JQ?t(B @code{gnus-topic-topology} $B$NCM$=(B -$B$N$b$N$J$N$G$9!#$3$NJQ?t$O(B@file{.newsrc.eld} $B%U%!%$%k$KJ]B8$5$l!"$N%9%?!<%H%"%C%W%U%!(B -$B%$%k$N@_Dj$K$OA4$/1F6A$rM?$($^$;$s!#(B - -$B$3$N9=B$$O!"$I$N%H%T%C%/$,$I$N%H%T%C%/$NI{%H%T%C%/$G$"$k$+$H!"$I$N%H%T%C%/(B -$B$,I=<($5$l$F$$$k$+$r<($7$F$$$^$9!#8=:_$OFs$D$N@_DjCM!=!=(B@code{visible} $B$H(B -@code{invisible} $B$,5v$5$l$F$$$^$9!#(B +$B$3$l$Oe5-$NI=<($r9T$&$?$a$N!"JQ?t(B @code{gnus-topic-topology} $B$NCM(B +$B$=$N$b$N$J$N$G$9!#$3$NJQ?t$O(B @file{.newsrc.eld} $B%U%!%$%k$KJ]B8$5$l!"$N%9%?!<%H%"%C(B +$B%W%U%!%$%k$N@_Dj$K$OA4$/1F6A$rM?$($^$;$s!#(B +$B$3$N9=B$$O!"$I$N%H%T%C%/$,$I$N%H%T%C%/$NI{%H%T%C%/$G$"$k$+$H!"$I$N%H%T%C(B +$B%/$,I=<($5$l$F$$$k$+$r<($7$F$$$^$9!#8=:_$OFs$D$N@_Dj(B +$BCM!=!=(B@code{visible} $B$H(B @code{invisible} $B$,5v$5$l$F$$$^$9!#(B @node Topic Parameters @subsection $B%H%T%C%/%Q%i%a!<%?(B @cindex topic parameters -$B%H%T%C%/Fb$NA4$F$N%0%k!<%W$O%0%k!<%W%Q%i%a!<%?$r!"$=$N?F!J$H@hAD!K$N%H%T%C(B -$B%/%Q%i%a!<%?$+$i7Q>5$7$^$9!#%0%k!<%W%Q%i%a!<%?$H$7$F@5$7$$$b$N$OA4$F!"%H%T%C(B -$B%/%Q%i%a!<%?$H$7$F$b@5$7$$$b$N$G$9(B(@pxref{Group Parameters})$B!#(B +$B%H%T%C%/Fb$NA4$F$N%0%k!<%W$O%0%k!<%W%Q%i%a!<%?$r!"$=$N?F(B ($B$H@hAD(B) $B$N%H%T%C(B +$B%/%Q%i%a!<%?$+$i7Q>5$7$^$9!#%0%k!<%W%Q%i%a!<%?$H$7$F@5$7$$$b$N$OA4$F!"%H(B +$B%T%C%/%Q%i%a!<%?$H$7$F$b@5$7$$$b$N$G$9(B(@pxref{Group Parameters})$B!#(B $B$5$i$K!"0J2<$N%Q%i%a!<%?$O%H%T%C%/%Q%i%a!<%?$H$7$F$N$_M-8z$G$9(B: @table @code @item subscribe -$B%H%T%C%/$G?7$7$$%0%k!<%W$r9XFI$7$F$$$k>l9g(B (@pxref{Subscription -Methods}) $B!"(B@code{subscribe} $B%H%T%C%/%Q%i%a!<%?$O$I$N%0%k!<%W$,$I$N%H%T%C(B -$B%/$K9T$/$+$r;XDj$7$^$9!#CM$O$=$N%H%T%C%/$K9T$/%0%k!<%W$K9gCW$9$k@55,I=8=(B -$B$G$"$kI,MW$,$"$j$^$9!#(B +$B%H%T%C%/$G?7$7$$%0%k!<%W$r9XFI$7$F$$$k>l(B +$B9g(B (@pxref{Subscription Methods}), @code{subscribe} $B%H%T%C%/%Q%i%a!<%?$O(B +$B$I$N%0%k!<%W$,$I$N%H%T%C%/$K9T$/$+$r;XDj$7$^$9!#CM$O$=$N%H%T%C%/$K9T$/%0(B +$B%k!<%W$K9gCW$9$k@55,I=8=$G$"$kI,MW$,$"$j$^$9!#(B @end table -$B%0%k!<%W%Q%i%a!<%?$O!J$b$A$m$s!K%H%T%C%/%Q%i%a!<%?$h$j$bM%@h$5$l!"I{%H%T%C(B +$B%0%k!<%W%Q%i%a!<%?$O(B ($B$b$A$m$s(B) $B%H%T%C%/%Q%i%a!<%?$h$j$bM%@h$5$l!"I{%H%T%C(B $B%/$N%H%T%C%/%Q%i%a!<%?$O?F%H%T%C%/$N%H%T%C%/%Q%i%a!<%?$h$j$bM%@h$5$l$^$9!#(B -$BJ,$+$k$h$M!#$4$/IaDL$N7Q>5%k!<%k$G$9!J%k!<%k(B (@dfn{Rules}) $B$O$3$3$G$OL>;l(B -$B$G$"$C$F!"F0;l$N!V@~$r0z$/!W$G$O$"$j$^$;$s!#$3$N%k!<%k$K$OH?BP$7$?$/$J$k$+(B -$B$bCN$l$J$$$1$I!"$=$l$O$4<+M3$K!K!#(B +$BJ,$+$k$h$M!#$4$/IaDL$N7Q>5%k!<%k$G$9(B ($B%k!<%k(B (@dfn{Rules}) $B$O$3$3$G$OL>(B +$B;l$G$"$C$F!"F0;l$N!V@~$r0z$/!W$G$O$"$j$^$;$s!#$3$N%k!<%k$K$OH?BP$7$?$/$J(B +$B$k$+$bCN$l$J$$$1$I!"$=$l$O$4<+M3$K(B)$B!#(B @example Gnus @@ -3534,40 +3548,40 @@ Gnus 452: alt.sex.emacs @end example -@samp{Emacs} $B%H%T%C%/$O%H%T%C%/%Q%i%a!<%?(B @code{(score-file -. "emacs.SCORE")} $B$r;}$C$F$$$^$9!#(B@samp{$BB)H4$-(B} $B%H%T%C%/$O%H%T%C(B -$B%/%Q%i%a!<%?(B @code{(score-file . "relief.SCORE")} $B$r;}$A!"(B -@samp{$B$=$NB>(B} $B%H%T%C%/$O%H%T%C%/%Q%i%a!<%?(B @code{(score-file -. "emacs.SCORE")} $B$r;}$C$F$$$^$9!#$5$i$K!"(B -@samp{alt.religion.emacs} $B$O%0%k!<%W%Q%i%a!<%?(B @code{(score-file -. "religion.SCORE")} $B$r;}$C$F$$$^$9!#(B - -$B$5$F!"$3$3$G(B @samp{$BB)H4$-(B} $B%H%T%C%/$N(B @samp{alt.sex.emacs} $B%0%k!<(B -$B%W$KF~$C$?$H$-!"(B@file{relief.SCORE} $B$,4pK\%9%3%"%U%!%$%k$H$J$j$^(B -$B$9!#$b$7(B @samp{Emacs} $B%H%T%C%/$NF1$8%0%k!<%W$KF~$k$H!"(B -@file{emacs.SCORE} $B$,4pK\%9%3%"%U%!%$%k$K$J$k$G$7$g$&!#(B -@* @samp{alt.religion.emacs} $B%0%k!<%W$KF~$l$P!"(B -@file{religion.SCORE} $B$,4pK\%9%3%"%U%!%$%k$K$J$k$G$7$g$&!#(B - -$B$3$l$C$F$H$C$F$b4JC1$G<+L@$N$3$H$N$h$&$K8+$($k$G$7$g!)$^$"!"$=$NDL$j$G$9!#(B -$B$G$9$,LdBj$,$"$k>l9g$b$"$j$^$9!#FC$K(B@code{total-expiry} $B%Q%i%a!<%?$K4X$7$F(B -$B$G$9!#Nc$($P$"$k%a!<%k%0%k!<%W$rFs$D$N%H%T%C%/$NCf$K!"0lJ}$O(B -@code{total-expiry} $B$"$j$G!"$b$&0lJ}$O$=$l$J$7$G;}$C$F$$$k$H$7$^$7$g$&!#$3(B -$B$3$G(B @kbd{M-x gnus-expire-all-expirable-groups} $B$rl9g$K$O==J,Cm0U$7$J$1$l$P$J$j$^$;$s!#(B - +@samp{Emacs} $B%H%T%C%/$O%H%T%C%/%Q%i%a!<(B +$B%?(B @code{(score-file . "emacs.SCORE")} $B$r;}$C$F$$$^$9!#(B +@samp{$BB)H4$-(B} $B%H%T%C%/$O%H%T%C%/%Q%i%a!<(B +$B%?(B @code{(score-file . "relief.SCORE")} $B$r;}$A!"(B +@samp{$B$=$NB>(B} $B%H%T%C%/$O%H%T%C%/%Q%i%a!<(B +$B%?(B @code{(score-file . "emacs.SCORE")} $B$r;}$C$F$$$^$9!#(B +$B$5$i$K!"(B@samp{alt.religion.emacs} $B$O%0%k!<%W%Q%i%a!<(B +$B%?(B @code{(score-file . "religion.SCORE")} $B$r;}$C$F$$$^$9!#(B + +$B$5$F!"$3$3$G(B @samp{$BB)H4$-(B} $B%H%T%C%/$N(B @samp{alt.sex.emacs} $B%0%k!<%W$KF~$C(B +$B$?$H$-!"(B@file{relief.SCORE} $B$,4pK\%9%3%"%U%!%$%k$H$J$j$^$9!#$b(B +$B$7(B @samp{Emacs} $B%H%T%C%/$NF1$8%0%k!<%W$KF~$k$H!"(B@file{emacs.SCORE} $B$,4p(B +$BK\%9%3%"%U%!%$%k$K$J$k$G$7$g$&!#(B +@samp{alt.religion.emacs} $B%0%k!<%W$KF~$l$P!"(B@file{religion.SCORE} $B$,4pK\(B +$B%9%3%"%U%!%$%k$K$J$k$G$7$g$&!#(B + +$B$3$l$C$F$H$C$F$b4JC1$G<+L@$N$3$H$N$h$&$K8+$($k$G$7$g(B? $B$^$"!"$=$NDL$j$G$9!#(B +$B$G$9$,LdBj$,$"$k>l9g$b$"$j$^$9!#FC$K(B@code{total-expiry} $B%Q%i%a!<%?$K4X$7(B +$B$F$G$9!#Nc$($P$"$k%a!<%k%0%k!<%W$rFs$D$N%H%T%C%/$NCf$K!"0lJ}(B +$B$O(B @code{total-expiry} $B$"$j$G!"$b$&0lJ}$O$=$l$J$7$G;}$C$F$$$k$H$7$^$7$g(B +$B$&!#$3$3$G(B @kbd{M-x gnus-expire-all-expirable-groups} $B$rl9g$K$O==J,Cm0U$7$J$1$l$P$J$j$^$;$s!#(B @node Misc Group Stuff @section $B$=$NB>$N%0%k!<%W4XO"(B @menu -* Scanning New Messages:: Gnus $B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&$+$rJ9$/!#(B -* Group Information:: $B%0%k!<%W$H(B gnus $B$K4X$9$k>pJs$H%X%k%W!#(B -* Group Timestamp:: Gnus $B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k!#(B -* File Commands:: Gnus $B$N%U%!%$%k$NFI$_=q$-!#(B +* Scanning New Messages:: Gnus $B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&$+$rJ9$/(B +* Group Information:: $B%0%k!<%W$H(B gnus $B$K4X$9$k>pJs$H%X%k%W(B +* Group Timestamp:: Gnus $B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k(B +* File Commands:: Gnus $B$N%U%!%$%k$NFI$_=q$-(B @end menu @table @kbd @@ -3581,8 +3595,8 @@ Gnus @item a @kindex a (Group) @findex gnus-group-post-news -$B$"$k%0%k!<%W$K5-;v$rEj9F$9$k(B (@code{gnus-group-post-news})$B!#%W%l(B -$B%U%#%C%/%9$rM?$($k$H!"8=:_$N%0%k!<%WL>$,=i4|CM$H$7$F;HMQ$5$l$^$9!#(B +$B$"$k%0%k!<%W$K5-;v$rEj9F$9$k(B (@code{gnus-group-post-news})$B!#%W%l%U%#%C%/(B +$B%9$rM?$($k$H!"8=:_$N%0%k!<%WL>$,=i4|CM$H$7$F;HMQ$5$l$^$9!#(B @item m @kindex m (Group) @@ -3591,7 +3605,7 @@ Gnus @end table -$B0J2<$O%0%k!<%W%P%C%U%!$N$?$a$NJQ?t$G$9!'(B +$B0J2<$O%0%k!<%W%P%C%U%!$N$?$a$NJQ?t$G$9(B: @table @code @@ -3601,18 +3615,18 @@ Gnus @item gnus-group-prepare-hook @vindex gnus-group-prepare-hook -$B%0%k!<%W%P%C%U%!$,@8@.$5$l$?$"$H$K8F$S=P$5$l$^$9!#$3$l$O%P%C%U%!$r2?$+JQ$J!"(B -$B<+A3$8$c$J$$J}K!$G=$@5$7$?$$$H$-$K;H$o$l$k$+$b$7$l$^$;$s!#(B +$B%0%k!<%W%P%C%U%!$,@8@.$5$l$?$"$H$K8F$S=P$5$l$^$9!#$3$l$O%P%C%U%!$r2?$+JQ(B +$B$J!"<+A3$8$c$J$$J}K!$G=$@5$7$?$$$H$-$K;H$o$l$k$+$b$7$l$^$;$s!#(B @item gnus-group-prepared-hook @vindex gnus-group-prepare-hook -$B%0%k!<%W%P%C%U%!$,@8@.$5$l$?8e$N0lHV:G8e$K8F$S=P$5$l$^$9!#Nc$($P(B -$B%]%$%s%H$r$I$3$+$K0\F0$5$;$?$$$H$-$J$I$K;H$($^$9!#(B +$B%0%k!<%W%P%C%U%!$,@8@.$5$l$?8e$N0lHV:G8e$K8F$S=P$5$l$^$9!#Nc$($P%]%$%s%H(B +$B$r$I$3$+$K0\F0$5$;$?$$$H$-$J$I$K;H$($^$9!#(B @item gnus-permanently-visible-groups @vindex gnus-permanently-visible-groups -$B$3$N@55,I=8=$K%^%C%A$9$k%0%k!<%W$O!"$=$l$,6u$G$"$k$+$I$&$+$K4X$o(B -$B$i$:!">o$K%0%k!<%W%P%C%U%!$KI=<($5$l$^$9!#(B +$B$3$N@55,I=8=$K%^%C%A$9$k%0%k!<%W$O!"$=$l$,6u$G$"$k$+$I$&$+$K4X$o$i$:!">o(B +$B$K%0%k!<%W%P%C%U%!$KI=<($5$l$^$9!#(B @item gnus-group-name-charset-method-alist @vindex gnus-group-name-charset-method-alist @@ -3649,20 +3663,21 @@ Gnus @kindex g (Group) @findex gnus-group-get-new-news @c @icon{gnus-group-get-new-news} -$B%5!<%P$N?7Ce5-;v$r%A%'%C%/$7$^$9!#?t;z%W%l%U%#%C%/%9$r;HMQ$9$k$H!"$3$NL?Na(B -$B$O0z?t(B @var{arg} $B$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<%W$N$_$r%A%'%C%/$7$^$9(B -(@code{gnus-group-get-new-news})$B!#?t;z0J30$N%W%l%U%#%C%/%9$rM?$($k$H!"$3$N(B -$BL?Na$O$=$N%P%C%/%(%s%I$+$i%"%/%F%#%V%U%!%$%k$r6/@)E*$KA4ItFI$_D>$7$^$9!#(B +$B%5!<%P$N?7Ce5-;v$r%A%'%C%/$7$^$9!#?t;z%W%l%U%#%C%/%9$r;HMQ$9$k$H!"$3$NL?(B +$BNa$O0z?t(B @var{arg} $B$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<%W$N$_$r%A%'%C%/$7$^(B +$B$9(B (@code{gnus-group-get-new-news})$B!#?t;z0J30$N%W%l%U%#%C%/%9$rM?$($k$H!"(B +$B$3$NL?Na$O$=$N%P%C%/%(%s%I$+$i%"%/%F%#%V%U%!%$%k$r6/@)E*$KA4ItFI$_D>$7$^(B +$B$9!#(B @item M-g @kindex M-g (Group) @findex gnus-group-get-new-news-this-group @vindex gnus-goto-next-group-when-activating @c @icon{gnus-group-get-new-news-this-group} -$B8=:_$N%0%k!<%W$K?7Ce5-;v$,$"$k$+$I$&$+$r%A%'%C%/$7$^$9(B -(@code{gnus-group-get-new-news-this-group})$B!#(B -@code{gnus-goto-next-group-when-activating} $B$O$3$NL?Na$,A0$K(B -$BA0$KpJs(B @@ -3696,7 +3710,6 @@ Gnus $B$r%j%9%?!<%H$7$^$9(B (@code{gnus-group-restart})$B!#$3$l$O(B @table @kbd - @item H f @kindex H f (Group) @findex gnus-group-fetch-faq @@ -3704,15 +3717,15 @@ Gnus $B$r%j%9%?!<%H$7$^$9(B (@code{gnus-group-restart})$B!#$3$l$O(B @cindex FAQ @cindex ange-ftp $B8=:_$N%0%k!<%W$N(B FAQ $B$ro%j%b!<%H%^%7%s>e$N%G%#%l%/%H%j$G$9!#$3$NJQ?t$O%G%#%l%/%H%j$N%j%9%H$G(B -$B$"$C$F$b9=$$$^$;$s!#$3$N>l9g!"$3$N%3%^%s%I$K%W%l%U%#%C%/%9$rM?$($k$3$H$G$$(B -$B$/$D$+$N%5%$%H$NCf$+$iA*$V$3$H$,$G$-$^$9!#%U%!%$%k$Nl9g!"(Bgnus $B$O(B -@code{gnus-group-faq-directory} $B$NCM$rA4$F!"0l$D0l$D%*!<%W%s$7$F$_$h$&$H$7(B -$B$^$9!#(B +Gnus $B$O(B FAQ $B$r(B@code{gnus-group-faq-directory} $B$+$io%j%b!<%H%^%7%s>e$N%G%#%l%/%H%j$G$9!#$3$NJQ?t$O%G%#%l%/%H%j$N%j%9(B +$B%H$G$"$C$F$b9=$$$^$;$s!#$3$N>l9g!"$3$N%3%^%s%I$K%W%l%U%#%C%/%9$rM?$($k$3(B +$B$H$G$$$/$D$+$N%5%$%H$NCf$+$iA*$V$3$H$,$G$-$^$9!#%U%!%$%k$Nl9g!"(B +gnus $B$O(B @code{gnus-group-faq-directory} $B$NCM$rA4$F!"0l$D0l$D%*!<%W%s$7$F(B +$B$_$h$&$H$7$^$9!#(B @item H d @itemx C-c C-d @@ -3722,16 +3735,15 @@ Gnus $B$O(B FAQ $B$r(B@code{gnus-group-faq-directory} $B$+$ipJs$O$5$^$6$^$JJ}K!$GI=<($G$-$^$9!=!=$b$C$H$b4JC1$J$N$O!"%0%k!<%W9T%U%)!<(B -$B%^%C%H$G(B @samp{%d} $B;XDj$r;H$&J}K!$G$9!'(B +$B$3$N>pJs$O$5$^$6$^$JJ}K!$GI=<($G$-$^$9!=!=$b$C$H$b4JC1$J$N$O!"%0%k!<%W9T(B +$B%U%)!<%^%C%H$G(B @samp{%d} $B;XDj$r;H$&J}K!$G$9(B: @lisp (setq gnus-group-line-format "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n") @end lisp -$B$3$N7k2L$H$7$F!"3F9T$O0J2<$N$h$&$KI=<($5$l$^$9!'(B +$B$3$N7k2L$H$7$F!"3F9T$O0J2<$N$h$&$KI=<($5$l$^$9(B: @example * 0: mail.ding 19961002T012943 @@ -3796,7 +3808,6 @@ Gnus $B$K!"$"$J$?$,:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k$HJXMx(B "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n") @end lisp - @node File Commands @subsection $B%U%!%$%kL?Na(B @cindex file commands @@ -3815,8 +3826,8 @@ Gnus $B$K!"$"$J$?$,:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k$HJXMx(B @kindex s (Group) @findex gnus-group-save-newsrc @cindex saving .newsrc -@file{.newsrc.eld}$B%U%!%$%k!J$H!"$b$7$=$&$7$?$1$l$P(B@file{.newsrc} $B%U%!%$%k!K(B -$B$r%;!<%V$9$k(B(@code{gnus-group-save-newsrc})$B!#(B +@file{.newsrc.eld} $B%U%!%$%k(B ($B$H!"$b$7$=$&$7$?$1$l$P(B @file{.newsrc} $B%U%!(B +$B%$%k(B) $B$r%;!<%V$9$k(B (@code{gnus-group-save-newsrc})$B!#(B @c @item Z @c @kindex Z (Group) @@ -3826,7 +3837,6 @@ Gnus $B$K!"$"$J$?$,:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k$HJXMx(B @end table - @node The Summary Buffer @chapter $B35N,%P%C%U%!(B @cindex summary buffer @@ -3840,37 +3850,37 @@ Gnus $B$K!"$"$J$?$,:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k$HJXMx(B $B35N,%P%C%U%!$OK>$`$@$1$?$/$5$s3+$$$?>uBV$K$7$F$*$/$3$H$,$G$-$^$9!#(B @menu -* Summary Buffer Format:: $B35N,%P%C%U%!$N304Q$r7hDj$9$k!#(B -* Summary Maneuvering:: $B35N,%P%C%U%!$rF0$-2s$k!#(B -* Choosing Articles:: $B5-;v$rFI$`!#(B -* Paging the Article:: $BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k!#(B -* Reply Followup and Post:: $B5-;v$rEj9F$9$k!#(B -* Marking Articles:: $B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1$k!#(B -* Limiting:: $B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k!#(B -* Threading:: $B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+!#(B -* Sorting:: $B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+!#(B -* Asynchronous Fetching:: Gnus $B$O5-;v$r@h$KC5n$7$J$/$5$;$k!#(B -* Article Backlog:: $B4{$KFI$s$@5-;v$r;D$7$F$*$/!#(B -* Saving Articles:: $B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!!#(B -* Decoding Articles:: Gnus $B$O0lO"$N(B (uu)encode $B$5$l$?5-;v$r07$($k!#(B -* Article Treatment:: $B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G$-$k!#(B -@c * MIME Commands:: Doing MIMEy things with the articles. -@c * Charsets:: Character set issues. -* Article Commands:: $B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k!#(B -* Summary Sorting:: $B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k!#(B -* Finding the Parent:: $B;R5-;v$K1g=u$,L5$$$C$F(B? $B?F5-;v$r$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N!#(B -* Exiting the Summary Buffer:: $B%0%k!<%W%P%C%U%!$KLa$k!#(B -* Crosspost Handling:: $B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l$k$+!#(B -* Duplicate Suppression:: $B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBXC5n$7$J$/$5$;$k(B +* Article Backlog:: $B4{$KFI$s$@5-;v$r;D$7$F$*$/(B +* Saving Articles:: $B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!(B +* Decoding Articles:: Gnus $B$O0lO"$N(B (uu)encode $B$5$l$?5-;v$r07$($k(B +* Article Treatment:: $B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G$-$k(B +@c * MIME Commands:: Doing MIMEy things with the articles. +@c * Charsets:: Character set issues. +* Article Commands:: $B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k(B +* Summary Sorting:: $B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k(B +* Finding the Parent:: $B;R5-;v$K1g=u$,L5$$$C$F(B? $B?F5-;v$r$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N(B +* Exiting the Summary Buffer:: $B%0%k!<%W%P%C%U%!$KLa$k(B +* Crosspost Handling:: $B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l$k$+(B +* Duplicate Suppression:: $B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBXA0$rI=<($7$J$$J}K!!#(B -* Summary Buffer Mode Line:: $B%b!<%I9T$N8+$(J}$r7h$a$i$l$k!#(B -* Summary Highlighting:: $B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k!#(B +* Summary Buffer Lines:: $B35N,%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$G$-$k(B +* To From Newsgroups:: $B<+J,<+?H$NL>A0$rI=<($7$J$$J}K!(B +* Summary Buffer Mode Line:: $B%b!<%I9T$N8+$(J}$r7h$a$i$l$k(B +* Summary Highlighting:: $B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k(B @end menu @findex std11-extract-address-components @@ -3897,8 +3907,9 @@ Gnus $B$K!"$"$J$?$,:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k$HJXMx(B @vindex gnus-extract-address-components Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From} $B%X%C(B $B%@!<$NL>A0$H%"%I%l%9$NItJ,$ro$KB.$/F0:n$7$^$9!#(B +$B5A$5$l$F$$$k4X?t$,;0$DB8:_$7$^$9(B: +@code{gnus-extract-address-components} $B$O=i4|CM$G$9$,!"$H$F$b4JC1$K3d$j(B +$B@Z$C$?2r7hK!$G!"Hs>o$KB.$/F0:n$7$^$9!#(B @code{mail-extract-address-components} $B$ONI$/F0:n$7$^$9$,!"$d$dCY$/$J$j(B $B$^$9!#$=$7$F!"(B@code{std11-extract-address-components} $B$O$H$F$bNI$/F0:n$7(B $B$^$9$,!"CY$/$J$j$^$9!#%G%#%U%)%k%H$N4X?t$O(B 5% $B$N3d9g$G4V0c$C$FEz$($^$9!#(B @@ -3914,15 +3925,14 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From $B$8I=Bj(B (subject) $B$G$"$k$3$H$r<($9J8;zNs$G$9!#$3$NJ8;zNs$O;EMM$,$3$l$rMW(B $B5a$9$k$H$-$K;H$o$l$^$9!#=i4|@_Dj$G$O(B @code{""} $B$G$9!#(B - @node Summary Buffer Lines @subsection $B35N,%P%C%U%!$N9T(B @vindex gnus-summary-line-format $BJQ?t(B @code{gnus-summary-line-format} $B$NCM$rJQ$($k$3$H$K$h$C$F!"35N,%P%C(B -$B%U%!$G$N9T$NMM<0(B (format) $B$rJQ99$9$k$3$H$,$G$-$^$9!#$$$/$D$+$N3HD%(B -(@pxref{Formatting Variables}) $B$r=|$$$F!"IaDL$N(B @code{format} $BJ8;zNs$HF1(B -$B$8$h$&$KF0:n$7$^$9!#(B +$B%U%!$G$N9T$NMM<0(B (format) $B$rJQ99$9$k$3$H$,$G$-$^$9!#$$$/$D$+$N3H(B +$BD%(B (@pxref{Formatting Variables}) $B$r=|$$$F!"IaDL$N(B @code{format} $BJ8;zNs(B +$B$HF1$8$h$&$KF0:n$7$^$9!#(B $B=i4|CM$NJ8;zNs$O(B @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n} $B$G$9!#(B @@ -3932,8 +3942,8 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From @item N $B5-;v?t!#(B @item S -$BI=Bj$NJ8;zNs!#(B@code{gnus-list-identifiers} $B$N@_Dj$K$h$C$F%a!<%j%s%0%j%9%H(B -$B$NI8<1$,:o=|$5$l$^$9!#(B@xref{Article Hiding}$B!#(B +$BI=Bj$NJ8;zNs!#(B@code{gnus-list-identifiers} $B$N@_Dj$K$h$C$F%a!<%j%s%0%j%9(B +$B%H$NI8<1$,:o=|$5$l$^$9!#(B@xref{Article Hiding}$B!#(B @item s $B%9%l%C%I(B (thread) $B$N4p5-;v$G$"$k$H$-$+D>A0$N5-;v$,0c$&I=Bj$N$H$-$O$=$NBj(B $BL>$G!"$=$l0J30$O(B @code{gnus-summary-same-subject}$B!#(B @@ -3941,16 +3951,16 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From @item F $B40A4$J(B @code{From} $BMs!#(B @item n -$BL>A0!J(B@code{From} $BMs$h$j!K!#(B +$BL>A0(B (@code{From} $BMs$h$j(B)$B!#(B @item f -$BL>A0!"(B@code{To} $B%X%C%@!<$+(B @code{Newsgroups} $B%X%C%@!<$G$9(B (@pxref{To -From Newsgroups})$B!#(B +$BL>A0!"(B@code{To} $B%X%C%@!<$+(B @code{Newsgroups} $B%X%C%@!<$G(B +$B$9(B (@pxref{To From Newsgroups})$B!#(B @item a -$BL>A0!J(B@code{From} $BMs$h$j!K!#$3$l$H(B @code{n} $B$H$N0c$$$O!"$3$l$OJQ?t(B -@code{gnus-extract-address-components} $B$G;XDj$5$l$F$$$k4X?t$r;H$C$FL>A0$r(B -$BA0(B (@code{From} $BMs$h$j(B)$B!#$3$l$H(B @code{n} $B$H$N0c$$$O!"$3$l$OJQ(B +$B?t(B @code{gnus-extract-address-components} $B$G;XDj$5$l$F$$$k4X?t$r;H$C$FL>(B +$BA0$rA0!J(B@code{From} $BMs$h$j!K!#$3$l$O(B @code{a} $B$HF1$8$h$&$KF0:n$7$^$9!#(B +$BL>A0(B (@code{From} $BMs$h$j(B)$B!#$3$l$O(B @code{a} $B$HF1$8$h$&$KF0:n$7$^$9!#(B @item L $B5-;v$N9T?t!#(B @item c @@ -3959,8 +3969,8 @@ From Newsgroups})$B!#(B @item I $B%9%l%C%I$N%l%Y%k$K$h$k;z2<$2(B (@pxref{Customizing Threading})$B!#(B @item T -$B5-;v$,K\5-;v$G$"$l$P2?$bI=<($;$:!"$=$&$G$J$$>l9g$O$?$/$5$s$N6uGr$G$9!J8e$N(B -$B$b$N$r$9$Y$F2hLL$N30$KDI$$=P$7$F$7$^$$$^$9!K!#(B +$B5-;v$,K\5-;v$G$"$l$P2?$bI=<($;$:!"$=$&$G$J$$>l9g$O$?$/$5$s$N6uGr$G$9(B ($B8e(B +$B$N$b$N$r$9$Y$F2hLL$N30$KDI$$=P$7$F$7$^$$$^$9(B)$B!#(B @item [ $B3+$-3g8L!#IaDL$O(B @samp{[} $B$G$9$,!"M\;R5-;v$K$O(B @samp{<} $B$K$9$k$3$H$,$G$-(B $B$^$9(B (@pxref{Customizing Threading})$B!#(B @@ -3975,18 +3985,18 @@ From Newsgroups})$B!#(B $BL$FI!#(B @item R -$B$3$NJ6$i$o$7$$L>A0;XDj;R$O(B @dfn{secondary mark} $B$K$h$C$FDj5A$5$l$^$9!#$3$N(B -$B%^!<%/$O5-;v$,4{$KJVEz:Q$_$N$b$N$+!"%-%c%C%7%e$5$l$?$b$N$+!"$"$k$$$OJ]B8$5(B -$B$l$?$b$N$+$rI=$7$^$9!#(B +$B$3$NJ6$i$o$7$$L>A0;XDj;R$O(B @dfn{secondary mark} $B$K$h$C$FDj5A$5$l$^$9!#$3(B +$B$N%^!<%/$O5-;v$,4{$KJVEz:Q$_$N$b$N$+!"%-%c%C%7%e$5$l$?$b$N$+!"$"$k$$$OJ](B +$BB8$5$l$?$b$N$+$rI=$7$^$9!#(B @item i $B?t;z$H$7$F$N%9%3%"(B (@pxref{Scoring})$B!#(B @item z @vindex gnus-summary-zcore-fuzz $B$3$l$O!"(Bzcore $B$G=i4|@_Dj$N%l%Y%k$h$j$b>e$G$"$l$P(B @samp{+} $B$G!"=i4|@_Dj$N(B -$B%l%Y%k$h$j$b2<$G$"$l$P(B @samp{-} $B$G$9!#(B@code{gnus-summary-default-score} -$B$H$N:9$,(B @code{gnus-summary-zcore-fuzz}$B$h$j$b>.$5$$$H!"$3$N;EMM$O;H$o$l(B -$B$^$;$s!#(B +$B%l%Y%k$h$j$b2<$G$"$l$P(B @samp{-} $B$G$9!#(B +@code{gnus-summary-default-score} $B$H$N:9(B +$B$,(B @code{gnus-summary-zcore-fuzz} $B$h$j$b>.$5$$$H!"$3$N;EMM$O;H$o$l$^$;$s!#(B @item V $B%9%l%C%IA4BN$N%9%3%"!#(B @item x @@ -4012,34 +4022,34 @@ From Newsgroups})$B!#(B @item O $B%@%&%s%m!<%I$N0u!#(B @item u -$BMxMQ$N35N,;XDj$HF1(B -$BMM$K35N,$KA^F~$5$l$^$9!#(B +$BMxMQ$N35N,;XDj$HF1MM$K35N,$KA^F~(B +$B$5$l$^$9!#(B @end table -@samp{%U}$B!J>uBV!K!"(B@samp{%R}$B!JJVEz:Q$_!K!"(B@samp{%z} (zcore) $B$N07$$$K$O5$$r(B -$BIU$1$kI,MW$,$"$j$^$9!#8zN($N$?$a$K!"(Bgnus $B$O$3$l$i$NJ8;z$,$I$N7e$K8=$l$k$+(B -$B$r7W;;$7!"!X%O!<%I!&%3!<%I!Y$7$^$9!#$3$l$O!"2DJQD9$N;EMM$N8e$G$O!"$3$l$i$O(B -$B0UL#$r;}$?$J$$$H$$$&$3$H$G$9!#$^$!!"$5$9$,$KBaJa$O$5$l$J$$$G$7$g$&$,!"35N,(B -$B%P%C%U%!$OJQ$K$J$j$^$9!#$=$l$G$b==J,Ha$7$$$G$7$g$&$1$I!#(B +@samp{%U} ($B>uBV(B), @samp{%R} ($BJVEz:Q$_(B), @samp{%z} (zcore) $B$N07$$$K$O5$$r(B +$BIU$1$kI,MW$,$"$j$^$9!#8zN($N$?$a$K!"(Bgnus $B$O$3$l$i$NJ8;z$,$I$N7e$K8=$l$k(B +$B$+$r7W;;$7!"!X%O!<%I!&%3!<%I!Y$7$^$9!#$3$l$O!"2DJQD9$N;EMM$N8e$G$O!"$3$l(B +$B$i$O0UL#$r;}$?$J$$$H$$$&$3$H$G$9!#$^$!!"$5$9$,$KBaJa$O$5$l$J$$$G$7$g$&$,!"(B +$B35N,%P%C%U%!$OJQ$K$J$j$^$9!#$=$l$G$b==J,Ha$7$$$G$7$g$&$1$I!#(B -$B8-$$A*Br$O$3$l$i$N;XDj$r$G$-$k$@$1:8$K;}$C$F$/$k$3$H$G$9!#!J$G$b!"$=$&$$(B -$B$&$3$H$O$9$Y$F$KEv$F$O$^$k$N$G$O$J$$$G$7$g$&$+!#4WOC5YBj!#!K(B +$B8-$$A*Br$O$3$l$i$N;XDj$r$G$-$k$@$1:8$K;}$C$F$/$k$3$H$G$9!#(B($B$G$b!"$=$&$$(B +$B$&$3$H$O$9$Y$F$KEv$F$O$^$k$N$G$O$J$$$G$7$g$&$+!#4WOC5YBj!#(B) $B$3$N@)8B$O>-Mh$NHG$G$OL5$/$J$k$+$bCN$l$^$;$s!#(B - @node To From Newsgroups @subsection To From Newsgroups @cindex To @cindex Newsgroups -$B$$$/$D$+$N%0%k!<%W$G$O(B ($BFC$K%"!<%+%$%V%0%k!<%W(B)$B!"(B@code{From} $B%X%C%@!<$O(B +$B$$$/$D$+$N%0%k!<%W$G$O(B ($BFC$K%"!<%+%$%V%0%k!<%W(B), @code{From} $B%X%C%@!<$O(B $B$"$^$j6=L#$r0z$-$^$;$s!#$=$3$NA4$F$N5-;v$O$"$J$?$K$h$C$F=q$+$l$?$b$N$G$9(B $B$+$i!#Be$o$j$K!"(B@code{To} $B$d(B @code{Newsgroups} $B%X%C%@!<$N>pJs$rI=<($9$k(B -$B$?$a$K$O!"(B3$B$D$N$3$H$r7h$a$kI,MW$,$"$j$^$9(B: $B$I$N>pJs$r=8$a$k$+(B, $B$I$3$KI=(B +$B$?$a$K$O!";0$D$N$3$H$r7h$a$kI,MW$,$"$j$^$9(B: $B$I$N>pJs$r=8$a$k$+(B, $B$I$3$KI=(B $B<($9$k$+(B, $B$$$DI=<($9$k$+!#(B @enumerate @@ -4053,8 +4063,8 @@ From Newsgroups})$B!#(B '(To Newsgroups X-Newsreader)) @end lisp -$B$3$l$O!"(Bgnus $B$,$3$l$i$N(B3$B$D$N%X%C%@!<$r$l$NMWAG$G$9!'(B +$B0J2<$,$"$J$?$,M7$V$3$H$N$G$-$k$=$l$>$l$NMWAG$G$9(B: @table @samp @item G @@ -4135,8 +4144,8 @@ Gnus $B%P!<%8%g%s!#(B $B35N,%P%C%U%!$KI=<($5$l$F$$$J$$L$FI5-;v$N?t!#(B @item Z $BL$FI$HL$A*Br$N5-;v$N?t$H$H$b$KI=$5$l$kJ8;zNs$G!"L$FI$+$DL$A*Br$N5-;v$,$"(B -$B$k>l9g$O(B @samp{<%U(+%e) more>} $B$G!"L$FI5-;v$N$_$N>l9g$O(B @samp{<%U more>} -$B$G$9!#(B +$B$k>l9g$O(B @samp{<%U(+%e) more>} $B$G!"L$FI5-;v$N$_$N>l9g(B +$B$O(B @samp{<%U more>} $B$G$9!#(B @item g $BC;=L%0%k!<%WL>!#Nc$($P!"(B@samp{rec.arts.anime} $B$O(B @samp{r.a.anime} $B$KC;=L(B $B$5$l$^$9!#(B @@ -4156,7 +4165,6 @@ Gnus $B%P!<%8%g%s!#(B $B%9%3%"%U%!%$%k$K$h$C$FKu>C$5$l$?5-;v$N?t!#(B @end table - @node Summary Highlighting @subsection $B35N,$N%O%$%i%$%H(B @@ -4165,35 +4173,36 @@ Gnus $B%P!<%8%g%s!#(B @item gnus-visual-mark-article-hook @vindex gnus-visual-mark-article-hook $B$3$N%U%C%/$O5-;v$rA*Br$7$?8e$Kl9g$Ol9g$Ol9g$Ol9g$O score default) . bold)) @end lisp + $B$4A[A|$N$H$*$j!"$b$7(B @var{form} $B$,(B @code{nil} $B$G$J$$CM$rJV$9$H!"(B @var{face} $B$,$=$N9T$KE,MQ$5$l$^$9!#(B @end table - @node Summary Maneuvering @section $B35N,4V$N0\F0(B @cindex summary movement @@ -4206,37 +4215,36 @@ Gnus $B%P!<%8%g%s!#(B @table @kbd @item G M-n @item M-n -@kindex M-n $B!J35N,!K(B -@kindex G M-n $B!J35N,!K(B +@kindex M-n ($B35N,(B) +@kindex G M-n ($B35N,(B) @findex gnus-summary-next-unread-subject $B35N,9T$N)$a$^$9!#$3$NJQ?t$,(B @code{t}$B$Gl9g$H$7$F!"$3$NJQ?t$,(B -@code{quietly} $B$G$"$k$H!"(Bgnus $B$O3NG'$r$;$:$K!"H$7$F$/$@$5$$!#(B +$B$b$70\F0L?Na$N0l$D(B (@kbd{n} $B$N$h$&$J(B) $B$r=P$7!"8=:_$N5-;v$N8e$KL$FI$,L5$1(B +$B$l$P!"(Bgnus $B$O)$a$^$9!#$3$NJQ?t(B +$B$,(B @code{t} $B$Gl(B +$B9g$H$7$F!"$3$NJQ?t$,(B @code{quietly} $B$G$"$k$H!"(Bgnus $B$O3NG'$r$;$:$K!"H$7$F$/$@$5$$!#(B @item gnus-auto-select-same @vindex gnus-auto-select-same @code{nil} $B$G$J$$$H!"$9$Y$F$N0\F0L?Na$O8=:_$N5-;v$HF1$8I=Bj$N5-;v$K0\F0(B $B$7$h$&$H$7$^$9!#(B(@dfn{$BF1$8(B} $B$O$3$3$G$O(B @dfn{$BBgBNF1$8(B} $B$H$$$&0UL#$+$bCN$l(B -$B$^$;$s!#>\:Y$O(B @code{gnus-summary-gather-subject-limit} $B$r8+$F$/$@$5$$(B -(@pxref{Customizing Threading} $B$b;2>H$7$F$/$@$5$$(B)$B!#(B) $BF1$8I=Bj$N5-;v$,L5(B -$B$$$H$-$O:G=i$NL$FI5-;v$K0\F0$7$^$9!#(B +$B$^$;$s!#>\:Y$O(B @code{gnus-summary-gather-subject-limit} $B$r8+$F$/$@$5(B +$B$$(B (@pxref{Customizing Threading} $B$b;2>H$7$F$/$@$5$$(B)$B!#(B) $BF1$8I=Bj$N5-;v(B +$B$,L5$$$H$-$O:G=i$NL$FI5-;v$K0\F0$7$^$9!#(B $B$3$NJQ?t$O!"%9%l%C%II=<($r9T$C$F$$$k$H$-$O$"$^$jLr$KN)$?$J$$$G$7$g$&!#(B @item gnus-summary-check-current @vindex gnus-summary-check-current -@code{nil} $B$G$J$$$H!"$9$Y$F$N!XL$FI!Y0\F0L?Na$O!"l9g$Ol9g$OA0$N5-;v$K0\F0$7$^$9(B (@code{gnus-summary-goto-last-article})$B!#(B @item G o -@kindex G o$B!J35N,!K(B +@kindex G o ($B35N,(B) @findex gnus-summary-pop-article $B35N,$NMzNr(B (history) $B$+$i:G8e$N5-;v$r0l$De$NL?Na$H0c$&$N$O!"(B@kbd{l} -$B$,:G=*(B2$B$D$N5-;v$N4V$r0\F0$9$k$N$KBP$7$F!"$3$l$O9%$-$J$@$1A0$N5-;v$rMzNr$+(B -$B$iA*$S=P$9$3$H$,$G$-$kE@$G$9!#2?$i$+$N$3$l$K4X78$7$?$3$H$O!J$b$7$3$l$i$NL?(B -$BNa$r$?$/$5$s;H$&$N$G$"$l$P!K!"(B@pxref{Article Backlog} $B$r;2>H$7$F$/$@$5$$!#(B +(@code{gnus-summary-pop-article})$B!#$3$NL?Na$,>e$NL?Na$H0c$&$N$O!"(B +@kbd{l} $B$,:G=*Fs$D$N5-;v$N4V$r0\F0$9$k$N$KBP$7$F!"$3$l$O9%$-$J$@$1A0$N5-(B +$B;v$rMzNr$+$iA*$S=P$9$3$H$,$G$-$kE@$G$9!#2?$i$+$N$3$l$K4X78$7$?$3$H(B +$B$O(B ($B$b$7$3$l$i$NL?Na$r$?$/$5$s;H$&$N$G$"$l$P(B)$B!"(B +@pxref{Article Backlog} $B$r;2>H$7$F$/$@$5$$!#(B @end table - @node Choosing Variables @subsection $BA*$V$?$a$NJQ?t(B @@ -4385,9 +4391,9 @@ Gnus $B$,l9g$G$b!"A0!J$b$7$/$Ol9g$G$b!"A0(B ($B$b$7$/$Oo$K8F$P$l$^$9!#$=$l$O5-;v$K4{FI$N0u$r(B -$BIU$1$k$?$a$K$"$j$^$9!#=i4|CM$O(B -@code{gnus-summary-mark-read-and-unread-as-read} $B$G!"$[$H$s$I$9$Y$F$NFI(B -$B$s$@5-;v$N0u$r(B @code{gnus-read-mark} $B$KJQ99$7$^$9!#$3$N4X?t$K1F6A$5$l$J(B -$B$$5-;v$O!"2D;k!"J]N1!"4|8B@Z$l:o=|2DG=5-;v$@$1$G$9!#$b$7!"L$FI$K4{FI$N0u(B -$B$rIU$1$?$$$@$1$G$"$l$P!"Be$o$j$K(B @code{gnus-summary-mark-unread-as-read} -$B$r;H$&$3$H$,$G$-$^$9!#$=$l$O!"(B@code{gnus-low-score-mark} $B$d(B -@code{gnus-del-mark}$B!J$J$I$J$I!K$N0u$r$=$N$^$^;D$7$^$9!#(B +$BIU$1$k$?$a$K$"$j$^$9!#=i4|CM(B +$B$O(B @code{gnus-summary-mark-read-and-unread-as-read} $B$G!"$[$H$s$I$9$Y$F$N(B +$BFI$s$@5-;v$N0u$r(B @code{gnus-read-mark} $B$KJQ99$7$^$9!#$3$N4X?t$K1F6A$5$l(B +$B$J$$5-;v$O!"2D;k!"J]N1!"4|8B@Z$l:o=|2DG=5-;v$@$1$G$9!#$b$7!"L$FI$K4{FI$N(B +$B0u$rIU$1$?$$$@$1$G$"$l$P!"Be$o$j(B +$B$K(B @code{gnus-summary-mark-unread-as-read} $B$r;H$&$3$H$,$G$-$^$9!#$=$l$O!"(B +@code{gnus-low-score-mark} $B$d(B @code{gnus-del-mark} ($B$J$I$J$I(B) $B$N0u$r$=$N(B +$B$^$^;D$7$^$9!#(B @end table - @node Paging the Article @section $B5-;v$N%9%/%m!<%k(B @cindex article scrolling @@ -4418,18 +4424,18 @@ Gnus $B$,l9g$O(B $B @itemx > -@kindex > $B!J35N,!K(B -@kindex A > $B!J35N,!K(B +@kindex > ($B35N,(B) +@kindex A > ($B35N,(B) @findex gnus-summary-end-of-article $B5-;v$N:G8e$^$G%9%/%m!<%k$7$^$9(B (@code{gnus-summary-end-of-article})$B!#(B @item A s @itemx s -@kindex A s $B!J35N,!K(B -@kindex s $B!J35N,!K(B +@kindex A s ($B35N,(B) +@kindex s ($B35N,(B) @findex gnus-summary-isearch-article -$B5-;v%P%C%U%!$G%$%s%/%j%a%s%?%k%5!<%A(B (isearch) $B$r9T$$$^$9(B -(@code{gnus-summary-isearch-article})$B!#(B +$B5-;v%P%C%U%!$G%$%s%/%j%a%s%?%k%5!<%A(B (isearch) $B$r9T$$$^(B +$B$9(B (@code{gnus-summary-isearch-article})$B!#(B @item h -@kindex h $B!J35N,!K(B +@kindex h ($B35N,(B) @findex gnus-summary-select-article-buffer $B5-;v%P%C%U%!$rA*Br$7$^$9(B (@code{gnus-summary-select-article-buffer})$B!#(B @end table - @node Reply Followup and Post @section $BJVEz!"%U%)%m!<%"%C%W!"Ej9F(B @menu -* Summary Mail Commands:: $B%a!<%k$rAw$k!#(B -* Summary Post Commands:: $B%K%e!<%9$rAw$k!#(B -* Summary Message Commands:: $BB>$N%a%C%;!<%84XO"$NL?Na!#(B -* Canceling and Superseding:: $B!X$"$!!"$"$s$J$U$&$K8@$&$s$8$c$J$+$C$?!#!Y(B +* Summary Mail Commands:: $B%a!<%k$rAw$k(B +* Summary Post Commands:: $B%K%e!<%9$rAw$k(B +* Summary Message Commands:: $BB>$N%a%C%;!<%84XO"$NL?Na(B +* Canceling and Superseding:: $B!X$"$!!"$"$s$J$U$&$K8@$&$s$8$c$J$+$C$?!Y(B @end menu - @node Summary Mail Commands @subsection $B35N,$G$N%a!<%k$NL?Na(B @cindex mail @@ -4512,8 +4516,8 @@ Gnus $B$,$N?M$K%a!<%k$rAw$j$^$9(B (@code{gnus-summary-mail-other-window})$B!#(B @item S D b -@kindex S D b $B!J35N,!K(B +@kindex S D b ($B35N,(B) @findex gnus-summary-resend-bounced-mail @cindex bouncing mail -$B%a!<%k$rAw$C$?$N$K!"2?$i$+$NM}M3!J%"%I%l%9$N4V0c$$!"E>Aw$NITD4!K$GLa$C$F$-(B -$B$?$H$-$K!"$3$NL?Na$r;H$C$FLa$C$F$-$?%a!<%k$r$b$&0l2sAw$k$3$H$,$G$-$^$9(B -(@code{gnus-summary-resend-bonced-mail})$B!#$b$&0lEY%a!<%k$rAw$kA0$K%X%C%@!<(B -$B$rJT=8$G$-$k$h$&$K!"%a!<%k%P%C%U%!$K$=$N%a!<%k$,8=$l$k$G$7$g$&!#$3$NL?Na$K(B -$B@\F,0z?t$rM?$($F!"La$C$F$-$?%a!<%k$,C/$+$X$NJVEz$G$"$C$?>l9g!"(Bgnus $B$O$=$N(B -$B%a!<%k$rAw$NITD4(B) $B$GLa$C$F(B +$B$-$?$H$-$K!"$3$NL?Na$r;H$C$FLa$C$F$-$?%a!<%k$r$b$&0l2sAw$k$3$H$,$G$-$^(B +$B$9(B (@code{gnus-summary-resend-bonced-mail})$B!#$b$&0lEY%a!<%k$rAw$kA0$K%X%C(B +$B%@!<$rJT=8$G$-$k$h$&$K!"%a!<%k%P%C%U%!$K$=$N%a!<%k$,8=$l$k$G$7$g$&!#$3$N(B +$BL?Na$K@\F,0z?t$rM?$($F!"La$C$F$-$?%a!<%k$,C/$+$X$NJVEz$G$"$C$?>l9g!"(B +gnus $B$O$=$N%a!<%k$re$NL?Na$H:.F1$7$J$$$h$&$K!"(B@code{gnus-summary-resend-message} $B$O8=:_$N%a%C(B -$B%;!<%8$rAw$k@h$N%"%I%l%9$NF~NO$rB%$7!"$=$l$+$i$=$N>l=j$K%a!<%k$rAw$j$^$9!#(B -$B%a%C%;!<%8$N%X%C%@!<$OJQ99$5$l$^$;$s!=!=$7$+$7!"(B@code{Resent-To}, -@code{Resent-From} $BEy$N%X%C%@!<$,IU$12C$($i$l$^$9!#$3$l$O!"!J$*$=$i$/!K$"(B -$B$J$?<+?H$r(B @code{To} $BMs$K=q$$$?K\?M$K$b%a!<%k$rAw$C$F$7$^$&$H$$$&$3$H$G$9!#(B -$B$3$l$O:.Mp$r>7$/$G$7$g$&!#$G$9$+$i!"$b$A$m$s!"K\Ev$K(B $Be$NL?Na$H:.F1$7$J$$$h$&$K!"(B@code{gnus-summary-resend-message} $B$O8=:_$N(B +$B%a%C%;!<%8$rAw$k@h$N%"%I%l%9$NF~NO$rB%$7!"$=$l$+$i$=$N>l=j$K%a!<%k$rAw$j(B +$B$^$9!#%a%C%;!<%8$N%X%C%@!<$OJQ99$5$l$^$;$s!=!=$7$+$7!"(B +@code{Resent-To}, @code{Resent-From} $BEy$N%X%C%@!<$,IU$12C$($i$l$^$9!#$3(B +$B$l$O!"(B($B$*$=$i$/(B) $B$"$J$?<+?H$r(B @code{To} $BMs$K=q$$$?K\?M$K$b%a!<%k$rAw$C$F(B +$B$7$^$&$H$$$&$3$H$G$9!#$3$l$O:.Mp$r>7$/$G$7$g$&!#$G$9$+$i!"$b$A$m$s!"K\Ev(B +$B$K(B $BAw$7$?$$$H$-$KMQ$$$i$l$^$9!#(B -($B$b$7$"$J$?$,!"(B@code{$B%k!<%H(B} (root) $B$G$"$j!"(B@code{$B%]%9%H%^%9%?!<(B} -(postmaster) $B$G$b$"$j!"(B@code{$B%k!<%H(B} $B$K(B @code{$B%]%9%H%^%9%?!<(B} $B$X$N%a!<%k(B -$B$rl9g$O!"$=$l$r(B @code{$B%]%9%H%^%9%?!<(B} $B$K$b:FAw$7$?$$$H;W$&$G(B -$B$7$g$&!#(BOrdnung mu.AN_ sein!) +($B$b$7$"$J$?$,!"(B@code{$B%k!<%H(B} (root) $B$G$"$j!"(B +@code{$B%]%9%H%^%9%?!<(B} (postmaster) $B$G$b$"$j!"(B@code{$B%k!<%H(B} $B$K(B @code{$B%]%9(B +$B%H%^%9%?!<(B} $B$X$N%a!<%k$rl9g$O!"$=$l(B +$B$r(B @code{$B%]%9%H%^%9%?!<(B} $B$K$b:FAw$7$?$$$H;W$&$G$7$g(B +$B$&!#(BOrdnung mu.AN_ sein!) $B$3$NL?Na$O%W%m%;%9(B/$B@\F,0z?t$N=,47$K=>$$$^$9(B (@pxref{Process/Prefix})$B!#(B @item S O m -@kindex S O m $B!J35N,!K(B +@kindex S O m ($B35N,(B) @findex gnus-uu-digest-mail-forward -$B8=:_$N0lO"$N5-;v(B (@pxref{Decoding Articles}) $B$NMWLs$r:n$j!"%a!<%k$G$=$N7k(B -$B2L$rAw$j$^$9(B (@code{gnus-uu-digest-mail-forward})$B!#$3$NL?Na$O%W%m%;%9(B/$B@\F,(B -$B0z?t$N=,47$K=>$$$^$9(B (@pxref{Process/Prefix})$B!#(B +$B8=:_$N0lO"$N5-;v(B (@pxref{Decoding Articles}) $B$NMWLs$r:n$j!"%a!<%k$G$=$N(B +$B7k2L$rAw$j$^$9(B (@code{gnus-uu-digest-mail-forward})$B!#$3$NL?Na$O%W%m%;(B +$B%9(B/$B@\F,0z?t$N=,47$K=>$$$^$9(B (@pxref{Process/Prefix})$B!#(B @item S M-c -@kindex S M-c $B!J35N,!K(B +@kindex S M-c ($B35N,(B) @findex gnus-summary-mail-crosspost-complaint @cindex crossposting @cindex excessive crossposting -$B8=:_$N5-;v$N=q$-j%/%m%9%]%9%H$X$N6l>p$N%a!<%k$rAw$j$^$9(B -(@code{gnus-summary-mail-crosspost-complaint})$B!#(B +$B8=:_$N5-;v$N=q$-j%/%m%9%]%9%H$X$N6l>p$N%a!<%k$rAw$j$^(B +$B$9(B (@code{gnus-summary-mail-crosspost-complaint})$B!#(B @findex gnus-crosspost-complaint $B$3$NL?Na$O!"8=:_(B Usenet $B$K2#9T$7$F$$$k!"%/%m%9%]%9%H$N@$3&E*N.9T$KBP$7$F(B -$BH?7b$r9T$&$$!"$=$l$>$l$N%a!<(B -$B%k$rAw$kA0$KAw?.$9$k$+$I$&$+$N3NG'$r$7$^$9!#(B +$BH?7b$r9T$&$$!"$=$l$>$l(B +$B$N%a!<%k$rAw$kA0$KAw?.$9$k$+$I$&$+$N3NG'$r$7$^$9!#(B @end table $B$^$?(B @pxref{(message)Header Commands} $B$K$5$i$J$k>pJs$,$"$j$^$9!#(B - @node Summary Post Commands @subsection $B35N,$NEj9FL?Na(B @cindex post @cindex composing news -$B%K%e!<%9$N5-;v$rEj9F$9$k$?$a$NL?Na!'(B +$B%K%e!<%9$N5-;v$rEj9F$9$k$?$a$NL?Na(B: @table @kbd @item S p @itemx a -@kindex a $B!J35N,!K(B -@kindex S p $B!J35N,!K(B +@kindex a ($B35N,(B) +@kindex S p ($B35N,(B) @findex gnus-summary-post-news @c @icon{gnus-summary-post-news} $B8=:_$N%0%k!<%W$K5-;v$rEj9F$7$^$9(B (@code{gnus-summary-post-news})$B!#(B @item S f @itemx f -@kindex f $B!J35N,!K(B -@kindex S f $B!J35N,!K(B +@kindex f ($B35N,(B) +@kindex S f ($B35N,(B) @findex gnus-summary-followup @c @icon{gnus-summary-followup} $B8=:_$N5-;v$N%U%)%m!<%"%C%W$rEj9F$7$^$9(B (@code{gnus-summary-followup})$B!#(B @item S F @itemx F -@kindex S F $B!J35N,!K(B -@kindex F $B!J35N,!K(B +@kindex S F ($B35N,(B) +@kindex F ($B35N,(B) @c @icon{gnus-summary-followup-with-original} @findex gnus-summary-followup-with-original -$BK\5-;v$rAw$7$^$9(B -(@code{gnus-summary-post-forward})$B!#@\F,0z?t$,M?$($i$l$?$H$-$O!"E>Aw5-;v(B -$B$N%X%C%@!<$r40A4$KAw$7$^(B +$B$9(B (@code{gnus-summary-post-forward})$B!#@\F,0z?t$,M?$($i$l$?$H$-$O!"E>Aw(B +$B5-;v$N%X%C%@!<$r40A4$KpJs$,$"$j$^$9!#(B - @c FIXME this is not implemented @node Summary Message Commands @subsection $B35N,%a%C%;!<%8L?Na(B @@ -4705,14 +4708,13 @@ Gnus $B$,C$9(B @cindex canceling articles @@ -4725,45 +4727,46 @@ Gnus $B$,C$7$?$$5-;v$r8+$D$1$F$/$@$5$$!JC$9$3$H$,$G$-$k$N$O<+J,$N5-;v$@$1(B -$B$G$9!#JQ$J$3$H$O;n$5$J$$$G$/$@$5$$!K!#$=$l$+$i!"(B @kbd{C} $B$+(B @kbd{S c}$B$r2!(B -$B$7$F$/$@$5$$(B (@code{gnus-summary-cancel-article})$B!#$"$J$?$N5-;v$,C$5(B -$B$l$^$9!=!=@$3&Cf$N5!3#$,$"$J$?$N5-;v$rC$7$^$9!#$3$NL?Na$O%W%m%;%9(B/$B@\(B -$BF,0z?t$N=,47$rMQ$$$^$9(B (@pxref{Process/Prefix})$B!#(B +$BC$7$?$$5-;v$r8+$D$1$F$/$@$5$$(B ($BC$9$3$H$,$G$-$k$N$O<+J,$N5-;v$@(B +$B$1$G$9!#JQ$J$3$H$O;n$5$J$$$G$/$@$5$$(B)$B!#$=$l$+$i!"(B +@kbd{C} $B$+(B @kbd{S c} $B$r2!$7$F$/$@$5(B +$B$$(B (@code{gnus-summary-cancel-article})$B!#$"$J$?$N5-;v$,C$5$l$^(B +$B$9!=!=@$3&Cf$N5!3#$,$"$J$?$N5-;v$rC$7$^$9!#$3$NL?Na$O%W%m%;%9(B/$B@\F,(B +$B0z?t$N=,47$rMQ$$$^$9(B (@pxref{Process/Prefix})$B!#(B $B$7$+$7!"Cm0U$7$F$[$7$$$N$O$9$Y$F$N%5%$%H(B (site) $B$,C$7$r07$C$F$$$k$o(B $B$1$G$O$J$$$3$H$G$9!#$G$9$+$i!"$?$$$F$$$N%5%$%H$,LdBj$N5-;v$rC$7$F$b!"(B $B$"$A$3$A$G$"$J$?$N5-;v$O@8$-;D$k$+$b$7$l$^$;$s!#(B -Gnus $B$O!"C$9$H$-$K!X8=:_!Y$NA*BrJ}K!$r;H$$$^$9!#I8=`$NEj9FJ}K!$r;H$$(B -$B$?$$$N$G$"$l$P!"J8;z@\F,0z?t(B @samp{a} $B$r;H$C$F$/$@$5$$(B(@pxref{Symbolic -Prefixes})$B!#(B +Gnus $B$O!"C$9$H$-$K!X8=:_!Y$NA*BrJ}K!$r;H$$$^$9!#I8=`$NEj9FJ}K!$r;H(B +$B$$$?$$$N$G$"$l$P!"J8;z@\F,0z?t(B @samp{a} $B$r;H$C$F$/$@$5(B +$B$$(B (@pxref{Symbolic Prefixes})$B!#(B -$B$b$72?$+4V0c$$$r$7$?$N$K5$IU$$$F!"D{@5$r$7$?$$$N$G$"$l$P!"(B@dfn{$BBeBX(B} -(@dfn{superseding}) $B5-;v$rEj9F$7$FK\5-;v$rCV$-49$($k$3$H$,$G$-$^$9!#(B +$B$b$72?$+4V0c$$$r$7$?$N$K5$IU$$$F!"D{@5$r$7$?$$$N$G$"$l$P!"(B +@dfn{$BBeBX(B} (@dfn{superseding}) $B5-;v$rEj9F$7$FK\5-;v$rCV$-49$($k$3$H$,$G(B +$B$-$^$9!#(B @findex gnus-summary-supersede-article -@kindex S $B!J35N,!K(B -$BK\5-;v$N$H$3$m$X0\F0$7$F!"(B@kbd{S s} $B$r2!$7$F$/$@$5$$(B -(@code{gnus-summary-supersede-article})$B!#IaDL$NJ}K!$G$=$l$rAw$kA0$K!"5-;v(B -$B$r9%$-$J$h$&$KJT=8$9$k$3$H$,$G$-$^$9!#BeBX$K4X$7$F$b!"C$7$HF1$8$3$H$,(B -$BEv$F$O$^$j$^$9!#$3$A$i$NJ}$,$b$C$H$h$/Ev$F$O$^$k$+$b$7$l$^$;$s!'$$$/$D$+$N(B -$B%5%$%H$OBeBX$rC$7$HF1$8(B +$B$3$H$,Ev$F$O$^$j$^$9!#$3$A$i$NJ}$,$b$C$H$h$/Ev$F$O$^$k$+$b$7$l$^$;(B +$B$s(B: $B$$$/$D$+$N%5%$%H$OBeBX$rl9g!"5-;v$,:G=i$K$"(B $B$J$?$N%5%$%H$K8=$l$kA0$KC$7(B/$BBeBX$r$9$k$?$a$N9*L/$Jj$J$/$i$$$NL?Na$,$"$j$^$9!'(B +$B$3$l$i$N0u$rA`:n$9$k2a>j$J$/$i$$$NL?Na$,$"$j$^$9(B: @end ifinfo @menu -* Setting Marks:: $B0u$NIU$1J}$H>C$7J}(B -* Generic Mark Commands:: $B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+!#(B -* Setting Process Marks:: $B8e$NC$7J}(B +* Generic Mark Commands:: $B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+(B +* Setting Process Marks:: $B8e$No$K2D;k>uBV$G$"$k5-;v$N$3$H$G$9!#$*$b$7$m$$$H;W$&5-;v(B -$B$,$"$C$?>l9g$d!"C1$KFI$`$N$r@h$K1d$P$7$?$$$H$-$d!"8e$GJVEz$r$7$?$$$H$-$K!"(B -$BIaDL$O2D;k0u$rIU$1$^$9!#$7$+$7!"5-;v$O4|8B@Z$l>C5n$5$l$k$3$H$b$"$j$^$9$N$G!"(B -$B1J1s$K5-;v$rJ]B8$7$F$*$-$?$$>l9g$O!"$=$N5-;v$r1JB3$K$9$kI,MW$,$"$j$^$9(B -(@pxref{Persistent Articles})$B!#(B +@dfn{$B2D;k5-;v(B}$B$H$O!">o$K2D;k>uBV$G$"$k5-;v$N$3$H$G$9!#$*$b$7$m$$$H;W$&5-(B +$B;v$,$"$C$?>l9g$d!"C1$KFI$`$N$r@h$K1d$P$7$?$$$H$-$d!"8e$GJVEz$r$7$?$$$H$-(B +$B$K!"IaDL$O2D;k0u$rIU$1$^$9!#$7$+$7!"5-;v$O4|8B@Z$l>C5n$5$l$k$3$H$b$"$j$^(B +$B$9$N$G!"1J1s$K5-;v$rJ]B8$7$F$*$-$?$$>l9g$O!"$=$N5-;v$r1JB3$K$9$kI,MW$,$"(B +$B$j$^$9(B (@pxref{Persistent Articles})$B!#(B @item ? @vindex gnus-dormant-mark $BJ]N1$H$7$F0u$rIU$1$^$9(B (@code{gnus-dormant-mark})$B!#(B -@dfn{$BJ]N15-;v(B}$B$O%U%)%m!<%"%C%W$,$"$C$?$H$-$K$@$135N,%P%C%U%!$K8=$l$^$9!#%U%)(B -$B%m!<%"%C%W$,L5$$$H$-$bI=<($5$;$?$$$H$-$O!"L?Na(B @kbd{/ D} $B$r;H$&$3$H$,$G$-(B -$B$^$9!#(B +@dfn{$BJ]N15-;v(B}$B$O%U%)%m!<%"%C%W$,$"$C$?$H$-$K$@$135N,%P%C%U%!$K8=$l$^$9!#(B +$B%U%)%m!<%"%C%W$,L5$$$H$-$bI=<($5$;$?$$$H$-$O!"L?Na(B @kbd{/ D} $B$r;H$&$3$H(B +$B$,$G$-$^$9!#(B @item SPACE @vindex gnus-unread-mark @@ -4827,7 +4829,6 @@ Prefixes})$B!#(B @dfn{$BL$FI5-;v(B}$B$O:#$^$GA4$/FI$^$l$F$$$J$$5-;v$N$3$H$G$9!#(B @end table - @node Read Articles @subsection $B4{FI5-;v(B @cindex expirable mark @@ -4855,18 +4856,18 @@ Prefixes})$B!#(B @item X @vindex gnus-kill-file-mark -$B:o=|%U%!%$%k$K$h$C$F:o=|$N0u$,$D$$$?5-;v(B -(@code{gnus-kill-file-mark})$B!#(B +$B:o=|%U%!%$%k$K$h$C$F:o=|$N0u$,$D$$$?5-(B +$B;v(B (@code{gnus-kill-file-mark})$B!#(B @item Y @vindex gnus-low-score-mark -$BDc$9$.$k%9%3%"$N$?$a$K4{FI$N0u$,$D$$$?5-;v(B -(@code{gnus-low-score-mark})$B!#(B +$BDc$9$.$k%9%3%"$N$?$a$K4{FI$N0u$,$D$$$?5-(B +$B;v(B (@code{gnus-low-score-mark})$B!#(B @item C @vindex gnus-catchup-mark -$B%-%c%C%A%"%C%W$K$h$C$F4{FI$N0u$,$D$$$?5-;v(B -(@code{gnus-catchup-mark})$B!#(B +$B%-%c%C%A%"%C%W$K$h$C$F4{FI$N0u$,$D$$$?5-(B +$B;v(B (@code{gnus-catchup-mark})$B!#(B @item G @vindex gnus-canceled-mark @@ -4874,7 +4875,7 @@ Prefixes})$B!#(B @item F @vindex gnus-souped-mark -@sc{soup} $B$5$l$F$$$k5-;v(B (@code{gnus-souped-mark})$B!#(B @xref{SOUP}. +@sc{soup} $B$5$l$F$$$k5-;v(B (@code{gnus-souped-mark})$B!#(B@xref{SOUP}. @item Q @vindex gnus-sparse-mark @@ -4892,21 +4893,20 @@ Prefixes})$B!#(B $B$9$k$@$1$G$9!#E,1~%9%3%"%j%s%0$r$7$?$H$-$K$O0c$C$?$h$&$K2r$N0u(B @cindex process mark @@ -4925,43 +4925,44 @@ Prefixes})$B!#(B @item @vindex gnus-replied-mark -$BJVEz$r$7$?$+!"%U%)%m!<%"%C%W$r$7$?!JNc$($P!"Ez$($?!K5-;v$O$9$Y$F(B2$B7eL\$K(B -@samp{A} $B$N0u$,$D$-$^$9(B (@code{gnus-replied-mark})$B!#(B +$BJVEz$r$7$?$+!"%U%)%m!<%"%C%W$r$7$?(B ($BNc$($P!"Ez$($?(B) $B5-;v$O$9$Y$FFs7eL\(B +$B$K(B @samp{A} $B$N0u$,$D$-$^$9(B (@code{gnus-replied-mark})$B!#(B @item @vindex gnus-cached-mark -$B5-;v%-%c%C%7%e$KCy$a$i$l$F$$$k5-;v$O(B2$B7eL\$K(B @samp{*} $B$N0u$,$D$-$^$9(B -(@code{gnus-replied-mark})$B!#(B @xref{Article Caching}. +$B5-;v%-%c%C%7%e$KCy$a$i$l$F$$$k5-;v$OFs7eL\$K(B @samp{*} $B$N0u$,$D$-$^(B +$B$9(B (@code{gnus-replied-mark})$B!#(B@xref{Article Caching}. @item @vindex gnus-saved-mark -$B!J2?$i$+$NJ}K!$K$h$C$F!(I,$:$7$b=!65E*$H$$$&$o$1$G$O$J$/!K!XJ]B8$5$l$?!Y5-(B -$B;v$O(B2$B7eL\$K(B @samp{S} $B$N0u$,$D$-$^$9(B (@code{gnus-saved-mark})$B!#(B +($B2?$i$+$NJ}K!$K$h$C$F!(I,$:$7$b=!65E*$H$$$&$o$1$G$O$J$/(B) $B!XJ]B8$5$l$?!Y(B +$B5-;v$OFs7eL\$K(B @samp{S} $B$N0u$,$D$-$^$9(B (@code{gnus-saved-mark})$B!#(B @item @vindex gnus-not-empty-thread-mark @vindex gnus-empty-thread-mark -$B$b$7(B @samp{%e} $B$N;EMM$,;H$o$l$k$H!"%9%l%C%I$,$"$k$+$I$&$+$O!"#37eL\$K(B -@code{gnus-not-empty-thread-mark} $B$H(B @code{gnus-empty-thread-mark} $B$N$=$l(B -$B$>$l$K$h$C$F0u$,$D$-$^$9!#(B +$B$b$7(B @samp{%e} $B$N;EMM$,;H$o$l$k$H!"%9%l%C%I$,$"$k$+$I$&$+$O!";07eL\(B +$B$K(B @code{gnus-not-empty-thread-mark} $B$H(B @code{gnus-empty-thread-mark} $B$N(B +$B$=$l$>$l$K$h$C$F0u$,$D$-$^$9!#(B @item @vindex gnus-process-mark -$B:G8e$K(B @dfn{$B%W%m%;%90u(B} $B$,$"$j$^$9(B(@code{gnus-process-mark})$B!#$$$m$$$m$Jl9g!"$I$N$h$&$K$J$k$N$G$7$g$&!)(B - -$B$?$$$7$?$3$H$O$"$j$^$;$s!#M%@h=g0L$Ol9g!"%-%c%C%7%e0u$,$"$k$@$1$G!"JVEz:Q$_0u$O$"$j$^$;$s!#(B +$BJVEz$r$7$?5-;v$K%W%m%;%90u$,IU$$$F$$$k>l9g!"$I$N$h$&$K$J$k$N$G$7$g$&(B? +$B$?$$$7$?$3$H$O$"$j$^$;$s!#M%@h=g0L$Ol9g!"%-%c%C%7%e0u$,$"$k$@$1$G!"JVEz:Q$_0u$O$"$j$^(B +$B$;$s!#(B @node Setting Marks @subsection $B0u$rIU$1$k(B @@ -4972,139 +4973,138 @@ Prefixes})$B!#(B @table @kbd @item M c @itemx M-u -@kindex M c $B!J35N,!K(B -@kindex M-u $B!J35N,!K(B +@kindex M c ($B35N,(B) +@kindex M-u ($B35N,(B) @findex gnus-summary-clear-mark-forward @cindex mark as read -$B8=:_$N5-;v$+$i!"$9$Y$F$N9XFIEY0u$r>C5n$7$^$9(B -(@code{gnus-summary-clear-mark-forward})$B!#MW$9$k$K!"5-;v$KL$FI$N0u$rIU$1(B -$B$^$9!#(B +$B8=:_$N5-;v$+$i!"$9$Y$F$N9XFIEY0u$r>C5n$7$^(B +$B$9(B (@code{gnus-summary-clear-mark-forward})$B!#MW$9$k$K!"5-;v$KL$FI$N0u$r(B +$BIU$1$^$9!#(B @item M t @itemx ! -@kindex ! $B!J35N,!K(B -@kindex M t $B!J35N,!K(B +@kindex ! ($B35N,(B) +@kindex M t ($B35N,(B) @findex gnus-summary-tick-article-forward -$B8=:_$N5-;v$K2D;k5-;v0u$rIU$1$^$9(B -(@code{gnus-summary-tick-article-forward})$B!#(B @xref{Article Caching}. +$B8=:_$N5-;v$K2D;k5-;v0u$rIU$1$^(B +$B$9(B (@code{gnus-summary-tick-article-forward})$B!#(B@xref{Article Caching}. @item M ? @itemx ? -@kindex ? $B!J35N,!K(B -@kindex M ? $B!J35N,!K(B +@kindex ? ($B35N,(B) +@kindex M ? ($B35N,(B) @findex gnus-summary-mark-as-dormant -$B8=:_$N5-;v$KJ]N15-;v0u$rIU$1$^$9(B -(@code{gnus-summary-mark-as-read-forward})$B!#(B@xref{Article Caching}. +$B8=:_$N5-;v$KJ]N15-;v0u$rIU$1$^(B +$B$9(B (@code{gnus-summary-mark-as-read-forward})$B!#(B@xref{Article Caching}. @item D -@kindex D $B!J35N,!K(B +@kindex D ($B35N,(B) @findex gnus-summary-mark-as-read-backward -$B8=:_$N5-;v$K4{FI$N0u$rIU$1!"A0$N9T$K%]%$%s%H$r0\F0$7$^$9(B -(@code{gnus-summary-mark-as-read-backward})$B!#(B +$B8=:_$N5-;v$K4{FI$N0u$rIU$1!"A0$N9T$K%]%$%s%H$r0\F0$7$^(B +$B$9(B (@code{gnus-summary-mark-as-read-backward})$B!#(B @item M k @itemx k -@kindex k $B!J35N,!K(B -@kindex M k $B!J35N,!K(B +@kindex k ($B35N,(B) +@kindex M k ($B35N,(B) @findex gnus-summary-kill-same-subject-and-select $B8=:_$N5-;v$HF1$8I=Bj$r;}$D$9$Y$F$N5-;v$r4{FI$H$7$F0u$rIU$1!"C5n$7$^$9(B (@code{gnus-summary-clar-above})$B!#(B @item M V u -@kindex M V u $B!J35N,!K(B +@kindex M V u ($B35N,(B) @findex gnus-summary-tick-above -$B=i4|@_Dj$N%9%3%"!J$b$7$/$O?tCM@\F,0z?t!K$h$j$bBg$-$$%9%3%"$r;}$D$9$Y$F$N(B +$B=i4|@_Dj$N%9%3%"(B ($B$b$7$/$O?tCM@\F,0z?t(B) $B$h$j$bBg$-$$%9%3%"$r;}$D$9$Y$F$N(B $B5-;v$K2D;k0u$rIU$1$^$9(B (@code{gnus-summary-tick-above})$B!#(B @item M V m -@kindex M V m $B!J35N,!K(B +@kindex M V m ($B35N,(B) @findex gnus-summary-mark-above -$B0u$NF~NO$rB%$7!"=i4|@_Dj$N%9%3%"!J$b$7$/$O?tCM@\F,0z?t!K$h$j$bBg$-$J%9%3(B +$B0u$NF~NO$rB%$7!"=i4|@_Dj$N%9%3%"(B ($B$b$7$/$O?tCM@\F,0z?t(B) $B$h$j$bBg$-$J%9%3(B $B%"$r;}$D$9$Y$F$N5-;v$K$=$N0u$rIU$1$^$9(B (@code{gnus-summary-mark-above})$B!#(B @end table @vindex gnus-summary-goto-unread -$BJQ?t(B @code{gnus-summary-goto-unread} $B$O0u$,IU$1$i$l$?8e$K$I$N$h$&$JF0:n$,(B -$B$J$5$l$k$+$r7hDj$7$^$9!#$b$7(B @code{nil} $B$G$J$$$H!"%]%$%s%H$Oe$+2<$K9T$/$@$1$G(B -$B$9!#FCJL$J>l9g$H$7$F!"$3$NJQ?t$,(B @code{never} $B$G$"$k$H!"$9$Y$F$N0u$rIU$1$k(B -$BL?Na$H!J(B@kbd{SPACE} $B$N$h$&$J!KB>$NL?Na$Oe$+2<$K9T$/(B +$B$@$1$G$9!#FCJL$J>l9g$H$7$F!"$3$NJQ?t$,(B @code{never} $B$G$"$k$H!"$9$Y$F$N0u(B +$B$rIU$1$kL?Na$H(B (@kbd{SPACE} $B$N$h$&$J(B) $BB>$NL?Na$O$N(B -$B8=:_$N5-;v$KN1$^$C$F$b$i$$$?$$?M$b$$$k$G$7$g$&!#$=$7$F!"$^$@A0$N(B ($BL$FI(B) -$B5-;v$K9T$C$F$[$7$$?M$,$$$k$H$OJ9$$$?$3$H$O$"$j$^$;$s$,!"$=$&$7$?$$$H;W$&(B -$B?M$b4V0c$$$J$/$$$k$H;W$$$^$9!#(B +$B8=:_$N5-;v$KN1$^$C$F$b$i$$$?$$?M$b$$$k$G$7$g$&!#$=$7$F!"$^$@A0$N(B ($BL$(B +$BFI(B) $B5-;v$K9T$C$F$[$7$$?M$,$$$k$H$OJ9$$$?$3$H$O$"$j$^$;$s$,!"$=$&$7$?$$$H(B +$B;W$&?M$b4V0c$$$J$/$$$k$H;W$$$^$9!#(B -$B$3$N(B5$B$D$NF0:n$r(B5$B$D$N0c$C$?0uIU$1L?Na$H3]$1;;$9$k$H!"$I$NL?Na$,2?$r$9$Y$-(B -$B$+$NHs>o$KJ#;($JJQ?t$NAH$r$b$D$3$H$K$J$j$^$9!#(B +$B$3$N8^$D$NF0:n$r8^$D$N0c$C$?0uIU$1L?Na$H3]$1;;$9$k$H!"$I$NL?Na$,2?$r$9$Y(B +$B$-$+$NHs>o$KJ#;($JJQ?t$NAH$r$b$D$3$H$K$J$j$^$9!#(B $B$3$NHa7`$+$iF($l$k$?$a$K!"(Bgnus $B$O$3$l$i$9$Y$F$N0c$C$?$3$H$r$9$kL?Na$rDs(B $B6!$7$^$9!#$3$l$i$O35N,%P%C%U%!$N(B @kbd{M M} $B%^%C%W$K$"$j$^$9!#A4$F$r$_$k(B @@ -5128,7 +5128,6 @@ Prefixes})$B!#(B (local-set-key "!" "MM!n")) @end lisp - @node Setting Process Marks @subsection $B%W%m%;%90u$rIU$1$k(B @cindex setting process marks @@ -5137,120 +5136,122 @@ Prefixes})$B!#(B @item M P p @itemx # -@kindex # $B!J35N,!K(B -@kindex M P p $B!J35N,!K(B +@kindex # ($B35N,(B) +@kindex M P p ($B35N,(B) @findex gnus-pick-unmark-article-or-thread -$B%9%l%C%I$+5-;v$rL$A*Br$K$7$^$9(B -@code{gnus-pick-unmark-article-or-thread})$B!#JQ?t(B -@code{gnus-thread-hide-subtree} $B$,(B true $B$G$"$l$P!"$3$N%-!<$O%9%l%C%I$N:G(B -$B=i$N5-;v$G;H$o$l$?$H$-$O%9%l%C%I$rL$A*Br$K$7$^$9!#$=$&$G$J$$>l9g$O!"$=$N(B -$B5-;v$@$1$rL$A*Br$K$7$^$9!#$=$N9T$N%9%l%C%I$+5-;v$rL$A*Br$K$9$k$?$a$K$3$N(B -$B%-!<$K?tCM@\F,0z?t$rM?$($k;v$,$G$-$^$9!#(B +$B%9%l%C%I$+5-;v$rL$A*Br$K$7$^(B +$B$9(B (@code{gnus-pick-unmark-article-or-thread})$B!#JQ(B +$B?t(B @code{gnus-thread-hide-subtree} $B$,(B true $B$G$"$l$P!"$3$N%-!<$O%9%l%C%I(B +$B$N:G=i$N5-;v$G;H$o$l$?$H$-$O%9%l%C%I$rL$A*Br$K$7$^$9!#$=$&$G$J$$>l9g$O!"(B +$B$=$N5-;v$@$1$rL$A*Br$K$7$^$9!#$=$N9T$N%9%l%C%I$+5-;v$rL$A*Br$K$9$k$?$a$K(B +$B$3$N%-!<$K?tCM@\F,0z?t$rM?$($k;v$,$G$-$^$9!#(B @item M P u @itemx M-# -@kindex M P u $B!J35N,!K(B -@kindex M-# $B!J35N,!K(B -$B$b$78=:_$N5-;v$K%W%m%;%90u$,$"$l$PH$7$F2<$5$$!#(B @node Limiting @section $B@)8B$r$9$k(B @cindex limiting -$B35N,%P%C%U%!$,8=:_%0%k!<%W$K$"$k5-;v$N0lIt$@$1$rI=<($9$k$h$&$K@)8B$G$-$l$P(B -$BJXMx$J$3$H$,$"$j$^$9!#B?$/$N@)8BL?Na$,;}$D8z2L$O35N,%P%C%U%!$+$i>/$7!J$b$7(B -$B$/$OB?$/!K$N5-;v$r35N,%P%C%U%!$+$i:o=|$9$k$3$H$G$9!#(B +$B35N,%P%C%U%!$,8=:_%0%k!<%W$K$"$k5-;v$N0lIt$@$1$rI=<($9$k$h$&$K@)8B$G$-$l(B +$B$PJXMx$J$3$H$,$"$j$^$9!#B?$/$N@)8BL?Na$,;}$D8z2L$O35N,%P%C%U%!$+$i>/(B +$B$7(B ($B$b$7$/$OB?$/(B) $B$N5-;v$r35N,%P%C%U%!$+$i:o=|$9$k$3$H$G$9!#(B $B$9$Y$F$N@)8BL?Na$O%5!<%P!<$+$i4{$KC5n$5$l$?5-;v$rI=<($7$^$9(B -(@code{gnus-summary-limit-include-expunged})$B!#(B +$B$9$Y$F$N>C5n$5$l$?5-;v$rI=<($7$^(B +$B$9(B (@code{gnus-summary-limit-include-expunged})$B!#(B @item / D -@kindex / D $B!J35N,!K(B +@kindex / D ($B35N,(B) @findex gnus-summary-limit-include-dormant $B$9$Y$F$NJ]N15-;v$rI=<($7$^$9(B (@code{gnus-summary-limit-include-dormant})$B!#(B @item / * -@kindex / * $B!J35N,!K(B +@kindex / * ($B35N,(B) @findex gnus-summary-limit-include-cached -$B$9$Y$F$N%-%c%C%7%e$KF~$C$F$$$k5-;v$rI=<($7$^$9(B -(@code{gnus-summary-limit-include-cached})$B!#(B +$B$9$Y$F$N%-%c%C%7%e$KF~$C$F$$$k5-;v$rI=<($7$^(B +$B$9(B (@code{gnus-summary-limit-include-cached})$B!#(B @item / d -@kindex / d $B!J35N,!K(B +@kindex / d ($B35N,(B) @findex gnus-summary-limit-exclude-dormant $B$9$Y$F$NJ]N15-;v$r1#$7$^$9(B (@code{gnus-summary-limit-exclude-dormant})$B!#(B @@ -5349,28 +5350,26 @@ Prefixes})$B!#(B $BA4$F$N0uIU$-5-;v$r=|30$7$^$9(B (@code{gnus-summary-limit-exclude-marks})$B!#(B @item / T -@kindex / T $B!J35N,!K(B +@kindex / T ($B35N,(B) @findex gnus-summary-limit-include-thread -$B8=:_$N%9%l%C%I$N$9$Y$F$N5-;v$rI=<($7$^$9(B -(@code{gnus-summary-limit-include-thread})$B!#(B +$B8=:_$N%9%l%C%I$N$9$Y$F$N5-;v$rI=<($7$^(B +$B$9(B (@code{gnus-summary-limit-include-thread})$B!#(B @item / c -@kindex / c $B!J35N,!K(B +@kindex / c ($B35N,(B) @findex gnus-summary-limit-exclude-childless-dormant -$B;R5-;v$NL5$$$9$Y$F$NJ]N15-;v$r1#$7$^$9(B -(@code{gnus-summary-limit-exclude-childless-dormant})$B!#(B - +$B;R5-;v$NL5$$$9$Y$F$NJ]N15-;v$r1#$7$^(B +$B$9(B (@code{gnus-summary-limit-exclude-childless-dormant})$B!#(B @item / C -@kindex / C $B!J35N,!K(B +@kindex / C ($B35N,(B) @findex gnus-summary-limit-mark-excluded-as-read -$B$9$Y$F$NL$FI$N$_$N0u$N5-;v$r4{FI$H$7$F0u$rIU$1$^$9(B -(@code{gnus-summary-limit-mark-excluded-as-read})$B!#$b$7@\F,0z?t$,M?$($i(B -$B$l$l$P!"2D;k$HJ]N1$N$_$N0u$N5-;v$b4{FI$H$7$F0u$rIU$1$^$9!#(B +$B$9$Y$F$NL$FI$N$_$N0u$N5-;v$r4{FI$H$7$F0u$rIU$1$^(B +$B$9(B (@code{gnus-summary-limit-mark-excluded-as-read})$B!#$b$7@\F,0z?t$,M?$((B +$B$i$l$l$P!"2D;k$HJ]N1$N$_$N0u$N5-;v$b4{FI$H$7$F0u$rIU$1$^$9!#(B @end table - @node Threading @section $B%9%l%C%I(B @cindex threading @@ -5379,14 +5378,15 @@ Prefixes})$B!#(B Gnus $B$O=i4|@_Dj$G5-;v$r%9%l%C%I$K$7$^$9!#(B@dfn{$B%9%l%C%I$K$9$k(B} $B$H$O!"$"$k(B $B5-;v$X$N1~Ez$r1~Ez$7$?5-;v$ND>8e$KCV$/!=!=3,AXE*N.57$G(B $B$H$$$&$3$H$G$9!#(B -$B%9%l%C%I$O5-;v$N(B @code{References} $BMs$rD4$Y$k$3$H$K$h$C$F9T$o$l$^$9!#40A4(B -$B$J@$3&$G$O!"$3$l$@$1$GNI$$LZ$r:n$j>e$2$k$N$K==J,$J$N$G$9$,!"IT1?$J$3$H$K!"(B -@code{References} $BMs$O$7$P$7$P2u$l$F$$$k$+!";~$K$OC1$K$J$$$H$$$&$3$H$,$"$j(B -$B$^$9!#IT;W5D$J%K%e!<%9$NA}?#$,LdBj$rA}$d$7$^$9$N$G!"4n$P$7$$7k2L$rF@$k$?$a(B -$B$K$OB>$NH/8+K!$r:NMQ$7$J$1$l$P$J$j$^$;$s!#2a>j$JBP:vK!$OB8:_$7$F$$$F!"$=$N(B -$B62$k$Y$->\:Y$O(B @pxref{Customizing Threading} $B$K>\$7$/=q$$$F$"$j$^$9!#(B +$B%9%l%C%I$O5-;v$N(B @code{References} $BMs$rD4$Y$k$3$H$K$h$C$F9T$o$l$^$9!#40(B +$BA4$J@$3&$G$O!"$3$l$@$1$GNI$$LZ$r:n$j>e$2$k$N$K==J,$J$N$G$9$,!"IT1?$J$3$H(B +$B$K!"(B@code{References} $BMs$O$7$P$7$P2u$l$F$$$k$+!";~$K$OC1$K$J$$$H$$$&$3$H(B +$B$,$"$j$^$9!#IT;W5D$J%K%e!<%9$NA}?#$,LdBj$rA}$d$7$^$9$N$G!"4n$P$7$$7k2L$r(B +$BF@$k$?$a$K$OB>$NH/8+K!$r:NMQ$7$J$1$l$P$J$j$^$;$s!#2a>j$JBP:vK!$OB8:_$7$F(B +$B$$$F!"$=$N62$k$Y$->\:Y$O(B @pxref{Customizing Threading} $B$K>\$7$/=q$$$F$"(B +$B$j$^$9!#(B -$B$^$:!"35G0$N354Q$G$9!'(B +$B$^$:!"35G0$N354Q$G$9(B: @table @dfn @item $B:,K\(B (root) @@ -5396,14 +5396,14 @@ Gnus $B$O=i4|@_Dj$G5-;v$r%9%l%C%I$K$7$^$9!#(B@dfn{$B%9%l%C%I$K$9$k(B} $B$H$ $BLZ$N$h$&$J5-;v$N9=@.$G$9!#(B @item $BItJ,%9%l%C%I(B (sub-thread) -$BLZ$N$h$&$J9=B$$N!J$h$j!K>.$5$JItJ,$G$9!#(B +$BLZ$N$h$&$J9=B$$N(B ($B$h$j(B) $B>.$5$JItJ,$G$9!#(B @item $BL5B+G{%9%l%C%I(B (loose threads) -$B5-;v$N4|8B@Z$l:o=|$d!":,K\$,4{$KA02s$N%;%C%7%g%s$GFI$^$l$?$3$H$K$h$j35N,%P%C(B -$B%U%!$KI=<($5$l$J$$!"Ey$NM}M3$K$h$j!"%9%l%C%I$O$7$P$7$P:,K\$r<:$$$^$9!#$=$N(B -$B$h$&$J$H$-$K$O!"IaDL$OB?$/$NItJ,%9%l%C%I$,$"$C$F!"K\Ev$O#1$D$N%9%l%C%I$KB0(B -$B$7$F$$$k$N$G$9$,!":,K\$K$O$D$J$,$C$F$$$J$$!"$H$$$&$3$H$K$J$j$^$9!#$3$&$$$&(B -$B%9%l%C%I$,L5B+G{%9%l%C%I$H8F$P$l$F$$$^$9!#(B +$B5-;v$N4|8B@Z$l:o=|$d!":,K\$,4{$KA02s$N%;%C%7%g%s$GFI$^$l$?$3$H$K$h$j35N,(B +$B%P%C%U%!$KI=<($5$l$J$$!"Ey$NM}M3$K$h$j!"%9%l%C%I$O$7$P$7$P:,K\$r<:$$$^$9!#(B +$B$=$N$h$&$J$H$-$K$O!"IaDL$OB?$/$NItJ,%9%l%C%I$,$"$C$F!"K\Ev$O0l$D$N%9%l%C(B +$B%I$KB0$7$F$$$k$N$G$9$,!":,K\$K$O$D$J$,$C$F$$$J$$!"$H$$$&$3$H$K$J$j$^$9!#(B +$B$3$&$$$&%9%l%C%I$,L5B+G{%9%l%C%I$H8F$P$l$F$$$^$9!#(B @item $B%9%l%C%I=8$a(B (thread gathering) $B$^$P$i%9%l%C%I$rBg$-$J%9%l%C%I$K=8$a$h$&$H$9$k;n$_$G$9!#(B @@ -5413,25 +5413,23 @@ Gnus $B$O=i4|@_Dj$G5-;v$r%9%l%C%I$K$7$^$9!#(B@dfn{$B%9%l%C%I$K$9$k(B} $B$H$ @end table - @menu -* Customizing Threading:: $BJQ992DG=$J%9%l%C%I$K1F6A$9$kJQ?t(B -* Thread Commands:: $B35N,%P%C%U%!$G$N%9%l%C%I$K4p$E$$$?L?Na(B +* Customizing Threading:: $BJQ992DG=$J%9%l%C%I$K1F6A$9$kJQ?t(B +* Thread Commands:: $B35N,%P%C%U%!$G$N%9%l%C%I$K4p$E$$$?L?Na(B @end menu - @node Customizing Threading @subsection $B%9%l%C%I$r%+%9%?%^%$%:$9$k(B @cindex customizing threading @menu -* Loose Threads:: Gnus $B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C%I$K$9$kJ}K!(B -* Filling In Threads:: $B%9%l%C%I$rKd$a$k(B -* More Threading:: $B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t(B -* Low-Level Threading:: $B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&(B... $B$G$b$"$J$?$O4V0c$C$F$$$?!*(B +* Loose Threads:: Gnus $B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C%I$K$9$kJ}K!(B +* Filling In Threads:: $B%9%l%C%I$rKd$a$k(B +* More Threading:: $B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t(B +* Low-Level Threading:: $B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&(B... $B$G$b$"$J$?$O4V(B + $B0c$C$F$$$?(B! @end menu - @node Loose Threads @subsubsection $BL5B+G{%9%l%C%I(B @cindex < @@ -5441,15 +5439,15 @@ Gnus $B$O=i4|@_Dj$G5-;v$r%9%l%C%I$K$7$^$9!#(B@dfn{$B%9%l%C%I$K$9$k(B} $B$H$ @table @code @item gnus-summary-make-false-root @vindex gnus-summary-make-false-root -$B$b$7(B @code{nil} $B$G$J$$$H!"(Bgnus $B$OA4$F$N$D$J$,$C$F$$$J$$ItJ,LZ$r#1$D$NBg$-(B -$B$JLZ$K$7$F!"D:>e$K$_$;$+$1$N:,K\$r:n$j$^$9!#!J$A$g$C$HBT$C$F$/$@$5$$!#D:(B -$B>e$K:,85(B (root) $B$G$9$C$F!)$($(!"$=$&$J$N$G$9!#!K$D$J$,$C$F$$$J$$ItJ,LZ$OK\(B -$BEv$N:,K\$,4|8B@Z$l:o=|$5$l$?$+!"A02s$N%;%C%7%g%s$G:,K\$rFI$s$@$j:o=|$7(B -$B$?$H$-$K$G$-$^$9!#(B +$B$b$7(B @code{nil} $B$G$J$$$H!"(Bgnus $B$OA4$F$N$D$J$,$C$F$$$J$$ItJ,LZ$r0l$D$NBg(B +$B$-$JLZ$K$7$F!"D:>e$K$_$;$+$1$N:,K\$r:n$j$^$9!#(B($B$A$g$C$HBT$C$F$/$@$5$$!#(B +$BD:>e$K:,85(B (root) $B$G$9$C$F(B? $B$($(!"$=$&$J$N$G$9!#(B) $B$D$J$,$C$F$$$J$$ItJ,LZ(B +$B$OK\Ev$N:,K\$,4|8B@Z$l:o=|$5$l$?$+!"A02s$N%;%C%7%g%s$G:,K\$rFI$s$@$j:o=|(B +$B$7$?$H$-$K$G$-$^$9!#(B -$BK\Ev$N%9%l%C%I$,L5$$$H$-$O!"(Bgnus $B$O2?$+$G$C$A>e$2$r$9$kI,MW$,$"$j$^$9!#$3(B -$B$NJQ?t$O(B gnus $B$,;H$&$Y$-$4$^$+$7$NJ}K!$r<($7$F$$$^$9!#CM$H$7$F$H$k$3$H$,$G(B -$B$-$k#4$D$N8uJd$,$"$j$^$9!#(B +$BK\Ev$N%9%l%C%I$,L5$$$H$-$O!"(Bgnus $B$O2?$+$G$C$A>e$2$r$9$kI,MW$,$"$j$^$9!#(B +$B$3$NJQ?t$O(B gnus $B$,;H$&$Y$-$4$^$+$7$NJ}K!$r<($7$F$$$^$9!#CM$H$7$F$H$k$3$H(B +$B$,$G$-$k;M$D$N8uJd$,$"$j$^$9!#(B @iftex @iflatex @@ -5468,22 +5466,23 @@ Gnus $B$O=i4|@_Dj$G5-;v$r%9%l%C%I$K$7$^$9!#(B@dfn{$B%9%l%C%I$K$9$k(B} $B$H$ @item $BM\;R(B (adopt) Gnus $B$O:G=i$N8I;y$r?F$K$7$^$9!#$3$N?F$O$9$Y$F$NB>$N5-;v$rM\;R$K$7$^$9!#(B -$B$3$NM\;R5-;v$O!"I8=`$N3Q3g8L(B (@samp{[]}) $B$NBe$o$j$K!"@h$N@m$C$?3g8L(B -(@samp{<>}) $B$G0uIU$1$i$l$^$9!#$3$l$,=i4|@_Dj$NJ}K!$G$9!#(B +$B$3$NM\;R5-;v$O!"I8=`$N3Q3g8L(B (@samp{[]}) $B$NBe$o$j$K!"@h$N@m$C$?3g(B +$B8L(B (@samp{<>}) $B$G0uIU$1$i$l$^$9!#$3$l$,=i4|@_Dj$NJ}K!$G$9!#(B @item $B$_$;$+$1(B (dummy) @vindex gnus-summary-dummy-line-format Gnus $B$O?F$N$U$j$r$9$k$_$;$+$1$N35N,9T$r$D$/$j$^$9!#$_$;$+$1$N9T$O$I$NK\(B $BEv$N5-;v$K$bBP1~$7$^$;$s$N$G!"$=$l$rA*Br$9$k$3$H$O!"$_$;$+$1$N5-;v$N8e$N(B $B:G=i$NK\Ev$N5-;v$rA*Br$r$9$k$@$1$K$J$j$^$9!#$_$;$+$1$N:,K\$NMM<0$r;XDj(B -$B$9$k$?$a$K!"(B @code{gnus-summary-dummy-line-format} $B$,;H$o$l$^$9!#$3$l$O(B -$B$?$C$?0l$D$@$1$N%U%)!<%^%C%H$N;EMM$r$N5-;v$r(B @@ -5495,15 +5494,15 @@ Gnus $B$O @lisp @@ -5541,15 +5540,17 @@ Gnus $B$Oe=q$-$7$^$9!#$3$NJQ?t$OJ8;zNs(B @code{Subject} $B$rH?I|$7$F4JC1$J7A$K$?$I(B -$B$jCe$/$?$a$KE,MQ$9$k4X?t$N%j%9%H$G$"$kI,MW$,$"$j$^$9!#(B +@code{nil} $B$G$J$$$H!"$3$NJQ?t(B +$B$O(B @code{gnus-summary-gather-subject-limit} $B$r>e=q$-$7$^$9!#$3$NJQ?t$OJ8(B +$B;zNs(B @code{Subject} $B$rH?I|$7$F4JC1$J7A$K$?$I$jCe$/$?$a$KE,MQ$9$k4X?t$N%j(B +$B%9%H$G$"$kI,MW$,$"$j$^$9!#(B -$B$3$N%j%9%H$KF~$l$FLr$KN)$D$h$&$J4X?t$Ou67$r>/$7$h$/$9$k$?$a$K!"$I$NI=Bj$,=8$a$k2aDx$+$i=|$+$l$k(B -$B$+$r7h$a$k@55,I=8=(B @code{gnus-summary-gather-exclude-subject} $B$r;H$&$3$H(B -$B$,$G$-$^$9!#%G%#%U%)%k%H$O(B @samp{^ *$\\|^(none)$} $B$G$9!#(B +$BL5B+G{%9%l%C%I=8$a$OI=Bj$N$_$K9T$o$l$^$9$N$G!"FC(B +$B$K(B @samp{} $B$d(B @samp{(none)}$B$N$h$&$JNI$/$"$kI=Bj$N$H$-$O!"B?$/$N4V0c$$$r(B +$B5/$3$92DG=@-$,$"$j$^$9!#$3$N>u67$r>/$7$h$/$9$k$?$a$K!"$I$NI=Bj$,=8$a$k2a(B +$BDx$+$i=|$+$l$k$+$r7h$a$k@55,I=(B +$B8=(B @code{gnus-summary-gather-exclude-subject} $B$r;H$&$3$H$,$G$-$^$9!#%G%#(B +$B%U%)%k%H$O(B @samp{^ *$\\|^(none)$} $B$G$9!#(B @item gnus-summary-thread-gathering-function @vindex gnus-summmary-thread-gathering-function -Gnus $B$O(B @code{Subject} $BMs$r8+$k$3$H$K$h$C$F%9%l%C%I$r=8$a$^$9!#$3$l$O!"7k(B -$B2LE*$KA4$/4X78$NL5$$5-;v$,F1$8!X%9%l%C%I!Y$K4^$^$l$k$3$H$,$"$k$H$$$&$3$H$G!"(B -$B$3$l$O:.Mp$N85$G$9!#BeBXZ$7$^$9(B -$B$,!"$3$o$l$?%K%e!<%9%j!<%@!<$GEj9F$7$?5-;v$OE,@Z$K=8$a$i$l$J$$$H$$$&$3$H$G(B -$B$b$"$j$^$9!#A*Br8"$O$"$J$?$K$"$j$^$9!=!=1VIB$+%3%l%i$+!#(B +Gnus $B$O(B @code{Subject} $BMs$r8+$k$3$H$K$h$C$F%9%l%C%I$r=8$a$^$9!#$3$l$O!"(B +$B7k2LE*$KA4$/4X78$NL5$$5-;v$,F1$8!X%9%l%C%I!Y$K4^$^$l$k$3$H$,$"$k$H$$$&$3(B +$B$H$G!"$3$l$O:.Mp$N85$G$9!#BeBXZ(B +$B$7$^$9$,!"$3$o$l$?%K%e!<%9%j!<%@!<$GEj9F$7$?5-;v$OE,@Z$K=8$a$i$l$J$$$H$$(B +$B$&$3$H$G$b$"$j$^$9!#A*Br8"$O$"$J$?$K$"$j$^$9!=!=1VIB$+%3%l%i$+!#(B @table @code @item gnus-gather-threads-by-subject @@ -5596,7 +5597,7 @@ Gnus $B$O(B @code{Subject} $BMs$r8+$k$3$H$K$h$C$F%9%l%C%I$r=8$a$^$9!#$3$l$O!" @end table @code{References} $B$K$h$C$F=8$a$k$3$H$r;n$7$F$_$?$$$N$G$"$l$P!"/$J$$35N,9T$rI=<($7$?$$$1$l$I!"$G$-$k$@$1$?$/$5$s$NHsL)%9%l%C%I$K(B -$B@\B3$7$F$*$-$?$$$H$-$O!"$3$NJQ?t$r(B @code{some} $B$+?t;z$K@_Dj$9$k$3$H$,$G$-(B -$B$^$9!#$b$7?t;z$K@_Dj$7$?$H$-$O!"$=$l$h$jB?$$DI2C$N%X%C%@!<$Ol9g$G$b!"8E$$%X%C%@!<$N/$J$$35N,9T$rI=<($7$?$$$1$l$I!"$G$-$k$@$1$?$/$5$s$NHsL)%9%l%C(B +$B%I$K@\B3$7$F$*$-$?$$$H$-$O!"$3$NJQ?t$r(B @code{some} $B$+?t;z$K@_Dj$9$k$3$H(B +$B$,$G$-$^$9!#$b$7?t;z$K@_Dj$7$?$H$-$O!"$=$l$h$jB?$$DI2C$N%X%C%@!<$Ol9g$G$b!"8E$$%X%C%@!<$N/$J$$Am9gE*%9%3%"(B (@code{gnus-thread-score-function}) $B$r;}(B -$B$D$9$Y$F$N%9%l%C%I$O>C5n$5$l$^$9!#$3$NJQ?t$O%G%#%U%)%k%H$G$O(B @code{nil} -$B$G!"$3$l$O$I$N%9%l%C%I$b>C5n$5$l$J$$$H$$$&$3$H$G$9!#(B +$B$D$9$Y$F$N%9%l%C%I$O>C5n$5$l$^$9!#$3$NJQ?t$O%G%#%U%)%k%H$G(B +$B$O(B @code{nil} $B$G!"$3$l$O$I$N%9%l%C%I$b>C5n$5$l$J$$$H$$$&$3$H$G$9!#(B @item gnus-thread-hide-killed @vindex gnus-thread-hide-killed -$B$b$7%9%l%C%I$r:o=|$7$F!"$3$NJQ?t$,(B @code{nil} $B$G$J$$$H!"ItJ,LZ$O1#$5$l$^$9!#(B +$B$b$7%9%l%C%I$r:o=|$7$F!"$3$NJQ?t$,(B @code{nil} $B$G$J$$$H!"ItJ,LZ$O1#$5$l$^(B +$B$9!#(B @item gnus-thread-ignore-subject @vindex gnus-thread-ignore-subject -$B;~!9!"C/$+$,%9%l%C%I$N??Cf$GI=Bj$rJQ99$9$k$3$H$,$"$j$^$9!#$b$7$3$NJQ?t$,(B -@code{nil} $B$G$J$$$H!"I=Bj$NJQ99$OL5;k$5$l$^$9!#$b$7(B @code{nil} $B$@$H!"$3(B -$B$l$,%G%#%U%)%k%H$G$9$,!"I=Bj$NJQ99$r$9$k$HJL$N%9%l%C%I$K$J$j$^$9!#(B +$B;~!9!"C/$+$,%9%l%C%I$N??Cf$GI=Bj$rJQ99$9$k$3$H$,$"$j$^$9!#$b$7$3$NJQ?t(B +$B$,(B @code{nil} $B$G$J$$$H!"I=Bj$NJQ99$OL5;k$5$l$^$9!#$b$7(B @code{nil} $B$@$H!"(B +$B$3$l$,%G%#%U%)%k%H$G$9$,!"I=Bj$NJQ99$r$9$k$HJL$N%9%l%C%I$K$J$j$^$9!#(B @item gnus-thread-indent-level @vindex gnus-thread-indent-level @@ -5691,7 +5690,6 @@ gnus $B$OA4$F$N5-;v$N40A4$J(B @code{References} $BMs$r8+$F!"F1$8%9%l%C%I$KB0$ @end table - @node Low-Level Threading @subsubsection $BDc%l%Y%k$K$*$1$k%9%l%C%I:n@.(B @@ -5699,19 +5697,17 @@ gnus $B$OA4$F$N5-;v$N40A4$J(B @code{References} $BMs$r8+$F!"F1$8%9%l%C%I$KB0$ @item gnus-parse-headers-hook @vindex gnus-parse-headers-hook -$B$9$Y$F$N%X%C%@!<$r2r@O$9$kA0$K$N$b$N$rIU$12C$($k$3(B -$B$H$K$h$k!KBN7OE*$JJ}K!$G(B @code{Message-ID} $B$r8r49$9$k%a!<%k$+$i%K%e!<%9$X(B -$B$N%2!<%H%&%'%$$,$"$k>l9g!"(B@code{Message-ID} $B$,$b$C$H0UL#$N$"$k$b$N$K$9$k$?(B -$B$a$K!"$3$NJQ?t$r@_Dj$7$F85$KLa$9$3$H$,$G$-$^$9!#$3$l$O0l$D$NNc$G$9!'(B +$B$3$l$,(B @code{nil} $B$G$J$$$H!"%X%C%@!<9=B$$N8r49$r2DG=$K$9$k$h$&$K$3$N4X?t(B +$B$,8F$P$l$^$9!#4X?t$O0l$D$N0z?t!"5-;v%X%C%@!<$N%Y%/%H%k!"$H$H$b$K8F$P$l!"(B +$B$=$l$,2?$i$+$NJ}K!$G8r49$5$l$^$9!#Nc$($P!"(B($B@\F,8l$d$=$NB>$N$b$N$rIU$12C(B +$B$($k$3$H$K$h$k(B) $BBN7OE*$JJ}K!$G(B @code{Message-ID} $B$r8r49$9$k%a!<%k$+$i(B +$B%K%e!<%9$X$N%2!<%H%&%'%$$,$"$k>l9g!"(B@code{Message-ID} $B$,$b$C$H0UL#$N$"$k(B +$B$b$N$K$9$k$?$a$K!"$3$NJQ?t$r@_Dj$7$F85$KLa$9$3$H$,$G$-$^$9!#$3$l$O0l$D$N(B +$BNc$G$9(B: @lisp (setq gnus-alter-header-function 'my-alter-message-id) @@ -5727,7 +5723,6 @@ gnus $B$OA4$F$N5-;v$N40A4$J(B @code{References} $BMs$r8+$F!"F1$8%9%l%C%I$KB0$ @end table - @node Thread Commands @subsection $B%9%l%C%I$NL?Na(B @cindex thread commands @@ -5736,78 +5731,79 @@ gnus $B$OA4$F$N5-;v$N40A4$J(B @code{References} $BMs$r8+$F!"F1$8%9%l%C%I$KB0$ @item T k @itemx M-C-k -@kindex T k $B!J35N,!K(B -@kindex M-C-k $B!J35N,!K(B +@kindex T k ($B35N,(B) +@kindex M-C-k ($B35N,(B) @findex gnus-summary-kill-thread -$B8=:_$N!JItJ,!K%9%l%C%I$K4{FI$N0u$rIU$1$^$9(B -(@code{gnus-summary-kill-thread})$B!#$b$7@\F,0z?t$,@5$G$"$k$H!"Be$o$j$K$9$Y(B -$B$F$N0u$re$2$^$9(B -(@code{gnus-summary-raise-thread})$B!#(B +$B8=:_$N(B ($BItJ,(B) $B%9%l%C%I$N%9%3%"$r>e$2$^(B +$B$9(B (@code{gnus-summary-raise-thread})$B!#(B @item T # -@kindex T # $B!J35N,!K(B +@kindex T # ($B35N,(B) @findex gnus-uu-mark-thread -$B%W%m%;%90u$r8=:_$N!JItJ,!K%9%l%C%I$KIU$1$^$9(B -(@code{gnus-uu-mark-thread})$B!#(B +$B%W%m%;%90u$r8=:_$N(B ($BItJ,(B) $B%9%l%C%I$KIU$1$^(B +$B$9(B (@code{gnus-uu-mark-thread})$B!#(B @item T M-# -@kindex T M-# $B!J35N,!K(B +@kindex T M-# ($B35N,(B) @findex gnus-uu-unmark-thread -$B8=:_$N!JItJ,!K%9%l%C%I$+$i%W%m%;%90u$r$7$^$9(B -(@code{gnus-summary-rethread-current})$B!#$3$l$O35N,%P%C%U%!$,%9%l%C%II=<($5(B -$B$l$F$$$J$$$H$-$G$bF0:n$7$^$9!#(B +$B8=:_$N5-;v$N%9%l%C%I$r$b$&0lEY:n$jD>$7$^(B +$B$9(B (@code{gnus-summary-rethread-current})$B!#$3$l$O35N,%P%C%U%!$,%9%l%C%I(B +$BI=<($5$l$F$$$J$$$H$-$G$bF0:n$7$^$9!#(B @item T ^ -@kindex T ^ $B!J35N,!K(B +@kindex T ^ ($B35N,(B) @findex gnus-summary-reparent-thread -$B8=:_$N5-;v$r0uIU$-!J$b$7$/$OA0$N!K5-;v$N;R5-;v$K$7$^$9(B -(@code{gnus-summary-reparent-thread})$B!#(B +$B8=:_$N5-;v$r0uIU$-(B ($B$b$7$/$OA0$N(B) $B5-;v$N;R5-;v$K$7$^(B +$B$9(B (@code{gnus-summary-reparent-thread})$B!#(B @end table @@ -5817,7 +5813,7 @@ gnus $B$OA4$F$N5-;v$N40A4$J(B @code{References} $BMs$r8+$F!"F1$8%9%l%C%I$KB0$ @table @kbd @item T n -@kindex T n $B!J35N,!K(B +@kindex T n ($B35N,(B) @itemx M-C-n @kindex M-C-n (Summary) @itemx M-down @@ -5826,7 +5822,7 @@ gnus $B$OA4$F$N5-;v$N40A4$J(B @code{References} $BMs$r8+$F!"F1$8%9%l%C%I$KB0$ $Be>:$7$^$9(B (@code{gnus-summary-up-thread})$B!#(B @item T o -@kindex T o $B!J35N,!K(B +@kindex T o ($B35N,(B) @findex gnus-summary-top-thread $B%9%l%C%I$ND:>e$K0\F0$7$^$9(B (@code{gnus-summary-top-thread})$B!#(B @end table @vindex gnus-thread-operation-ignore-subject $B%9%l%C%I$r:n@.$9$k$H$-$KI=Bj$rL5;k$9$k$H!"<+A3$K%9%l%C%I$K$O$$$/$D$+$N0c$C(B -$B$?I=Bj$,$"$k$3$H$K$J$j$^$9!#$=$l$+$i(B `T k' -(@code{gnus-summary-kill-thread}) $B$N$h$&$JL?Na$rH/$9$k$H$-$K!"A4BN$N%9%l%C(B -$B%I$r:o=|$9$k$N$G$O$J$/!"8=:_$N5-;v$HF1$8I=Bj$r;}$DItJ,$@$1$r:o=|$7$?$$$H$-(B -$B$,$"$k$+$b$7$l$^$;$s!#$b$7$3$NH/A[$,NI$$$H;W$&$N$G$"$l$P!"(B -@code{gnus-thread-operation-ignore-subject} $B$r$$$8$/$k$3$H$,$G$-$^$9!#$3$l(B -$B$,(B @code{nil} $B$G$J$$$H!J$3$l$,%G%#%U%)%k%H$G$9$,!K!"%9%l%C%I$NL?Na$r$N%9%l%C%I$h$j@h$KJB$SBX$((B -$B$i$l$k$Y$-$G$"$l$P!"(B@code{nil} $B$G$J$$CM$r$+$($7$^$9!#IaDL!"JB$SBX$($OK\Ev(B -$B$O$=$l$>$l$N%9%l%C%I$N:,K\$r8+$k$@$1$K$h$j$J$5$l$k$3$H$K5$$rIU$1$F$/$@$5$$!#(B -$B$b$7(B2$B$D0J>e$N4X?t$r;H$&>l9g!"M%@hE*JB$SBX$(%-!<$O%j%9%H$N:G8e$N4X?t$G$9!#(B -$B$*$=$i$/$$$D$b(B @code{gnus-thread-sort-by-number} $B$rJB$SBX$(4X?t$N%j%9%H!=!=(B -$B:G=i$,9%$^$7$$(B $B$KF~$l$F$*$/$Y$-$G$7$g$&!#$3$l$OB>$NJB$SBX$(4p=`$K4X$7$FEy(B -$B$7$$%9%l%C%I$O5-;v$,>e$,$C$F$$$/=gHV$KI=<($5$l$k$3$H$rJ]>Z$7$^$9!#(B +$B3F4X?t$OFs$D$N%9%l%C%I$r$H$j!":G=i$N%9%l%C%I$,B>$N%9%l%C%I$h$j@h$KJB$SBX(B +$B$($i$l$k$Y$-$G$"$l$P!"(B@code{nil} $B$G$J$$CM$r$+$($7$^$9!#IaDL!"JB$SBX$($O(B +$BK\Ev$O$=$l$>$l$N%9%l%C%I$N:,K\$r8+$k$@$1$K$h$j$J$5$l$k$3$H$K5$$rIU$1$F$/(B +$B$@$5$$!#$b$7Fs$D0J>e$N4X?t$r;H$&>l9g!"M%@hE*JB$SBX$(%-!<$O%j%9%H$N:G8e$N(B +$B4X?t$G$9!#$*$=$i$/$$$D$b(B @code{gnus-thread-sort-by-number} $B$rJB$SBX$(4X(B +$B?t$N%j%9%H!=!=:G=i$,9%$^$7$$(B $B$KF~$l$F$*$/$Y$-$G$7$g$&!#$3$l$OB>$NJB$SBX(B +$B$(4p=`$K4X$7$FEy$7$$%9%l%C%I$O5-;v$,>e$,$C$F$$$/=gHV$KI=<($5$l$k$3$H$rJ](B +$B>Z$7$^$9!#(B $B%9%3%"$N5U=g!"I=Bj!"$=$7$F:G8e$KHV9f!"$N=g$KJB$SBX$($?$$$N$G$"$l$P!"l9g$O!"1Q;z=g$KJB$S$+$($i$l$^$9!#%9%3%"$HI=Bj$,F1$8%9%l%C%I$OHV9f(B -$B$GJB$SBX$($i$l!"!JIaDL$O!K5-;v$,E~Ce$7$?=gHV$K$J$j$^$9!#(B +$B$GJB$SBX$($i$l!"(B($BIaDL$O(B) $B5-;v$,E~Ce$7$?=gHV$K$J$j$^$9!#(B -$B%9%3%"!"E~Ce$N5U=g$KJB$SBX$($?$$$N$G$"$l$P!"h!"$b$7$/$O$"$J$?$N9%4q?4$r$/$9$0$k(B -$B$h$&$J2?$+$G$7$g$&!#(B +$BJQ?t(B @code{gnus-thread-score-function} ($B%G%#%U%)%k%H$O(B @code{+}) $B$KF~$C(B +$B$F$$$k4X?t$O%9%l%C%I$NAm9g$N%9%3%"$r7W;;$9$k$?$a$KMQ$$$i$l$^$9!#Lr$KN)$D(B +$B4X?t$O!"(B@code{max}, @code{min}, $B$b$7$/$OFs>h!"$b$7$/$O$"$J$?$N9%4q?4$r$/(B +$B$9$0$k$h$&$J2?$+$G$7$g$&!#(B @findex gnus-article-sort-functions @findex gnus-article-sort-by-date @@ -5926,16 +5919,15 @@ gnus $B$OA4$F$N5-;v$N40A4$J(B @code{References} $BMs$r8+$F!"F1$8%9%l%C%I$KB0$ @findex gnus-article-sort-by-subject @findex gnus-article-sort-by-author @findex gnus-article-sort-by-number -$B2?$+4qL/$JM}M3$J$I$G%9%l%C%II=<($r;H$C$F$$$J$$$N$J$i!"JQ?t(B -@code{gnus-article-sort-functions} $B$r$$$8$/$kI,MW$,$"$j$^$9!#$3$l$O(B -@code{gnus-thread-sort-functions} $B$HHs>o$K;w$F$$$^$9$,!"5-;v$NHf3S$K$O>/!9(B -$B0c$C$?4X?t$r;H$$$^$9!#;HMQ2DG=$JJB$SBX$(=R8l4X?t$O(B -@code{gnus-article-sort-by-number}, @code{gnus-article-sort-by-author}, -@code{gnus-article-sort-by-subject}, @code{gnus-article-sort-by-date} $B$*$h(B -$B$S(B @code{gnus-article-sort-by-score} $B$G$9!#(B +$B2?$+4qL/$JM}M3$J$I$G%9%l%C%II=<($r;H$C$F$$$J$$$N$J$i!"JQ(B +$B?t(B @code{gnus-article-sort-functions} $B$r$$$8$/$kI,MW$,$"$j$^$9!#$3$l(B +$B$O(B @code{gnus-thread-sort-functions} $B$HHs>o$K;w$F$$$^$9$,!"5-;v$NHf3S$K(B +$B$O>/!90c$C$?4X?t$r;H$$$^$9!#;HMQ2DG=$JJB$SBX$(=R8l4X?t(B +$B$O(B @code{gnus-article-sort-by-number}, @code{gnus-article-sort-by-author}, @code{gnus-article-sort-by-subject}, @code{gnus-article-sort-by-date} $B$*(B +$B$h$S(B @code{gnus-article-sort-by-score} $B$G$9!#(B $B%9%l%C%I$r;H$C$F$$$J$$I=Bj$N35N,I=<($rJB$SBX$($?$$$N$G$"$l$P!"u67$rHr$1$k$?$a$K!"(Bgnus $B$O%5!<%P!<$K(B2$B$D$N!J$=$l$O(B2$B$H?t$($F$/$@$5$$!K(B -$B@\B3$rD%$k$3$H$,$G$-$^$9!#$3$l$O$"$^$j$7$FNI$$$3$H$G$O$J$$$H9M$($k?M$b$$$k(B -$B$G$7$g$&$,!";d$K$OJ,$J@\B3$r$9$k$?$a(B -$B$K$O2?$i$+$N;~4V$,$+$+$j$^$9$N$G!"(Bgnus $B$N5/F0$OCY$/$J$j$^$9!#(B +$B$3$N>u67$rHr$1$k$?$a$K!"(Bgnus $B$O%5!<%P!<$KFs$D$N(B ($B$=$l$O(B 2 $B$H?t$($F$/$@$5(B +$B$$(B) $B@\B3$rD%$k$3$H$,$G$-$^$9!#$3$l$O$"$^$j$7$FNI$$$3$H$G$O$J$$$H9M$($k?M(B +$B$b$$$k$G$7$g$&$,!";d$K$OJ,$J@\B3$r(B +$B$9$k$?$a$K$O2?$i$+$N;~4V$,$+$+$j$^$9$N$G!"(Bgnus $B$N5/F0$OCY$/$J$j$^$9!#(B Gnus $B$O$"$J$?$,FI$`$G$"$m$&5-;v$h$j$b$?$/$5$s$N5-;v$ro$K(B}$BCY$$(B @sc{nntp} $B@\B3$G$"$k$J$i$P!"5-;v%-%c%C%7%e$r$9$k$3$H(B -$B$r9M$($k$+$b$7$l$^$;$s!#$=$&$9$k$H!"$=$l$>$l$N5-;v$O$"$J$?$N%[!<%`%G%#%l%/(B -$B%H%j$N2<$K%m!<%+%k$KN/$a$i$^$9!#4{$K?dB,$5$l$F$$$k$+$bCN$l$^$;$s$,!"$3$l$O(B -@emph{$B5pBg$J(B}$B%G%#%9%/%9%Z!<%9$r?)$$!"(Bi$B%N!<%I$bHs>o$KB.$/?)$$$D$V$92DG=@-$,(B -$B$"$k$?$a!"$=$l$O$"$J$?$NF,$r1K$,$;$k;v$K$J$k$+$b$7$l$^$;$s!#%&%)%C%+$NCf$G!#(B +$B$b$7(B@emph{$BHs>o$K(B}$BCY$$(B @sc{nntp} $B@\B3$G$"$k$J$i$P!"5-;v%-%c%C%7%e$r$9$k$3(B +$B$H$r9M$($k$+$b$7$l$^$;$s!#$=$&$9$k$H!"$=$l$>$l$N5-;v$O$"$J$?$N%[!<%`%G%#(B +$B%l%/%H%j$N2<$K%m!<%+%k$KN/$a$i$^$9!#4{$K?dB,$5$l$F$$$k$+$bCN$l$^$;$s$,!"(B +$B$3$l$O(B @emph{$B5pBg$J(B}$B%G%#%9%/%9%Z!<%9$r?)$$!"(Bi$B%N!<%I$bHs>o$KB.$/?)$$$D$V(B +$B$92DG=@-$,$"$k$?$a!"$=$l$O$"$J$?$NF,$r1K$,$;$k;v$K$J$k$+$b$7$l$^$;$s!#(B +$B%&%)%C%+$NCf$G!#(B $B$G$bCm0U?<$/;H$o$l$l$P!"$=$l$O5-;v$rJ]B8$9$k4JC1$JJ}K!$K$J$jF@$^$9!#(B @@ -6067,74 +6057,73 @@ Gnus $B$O$"$J$?$,FI$`$G$"$m$&5-;v$h$j$b$?$/$5$s$N5-;v$rJ}$H$b%7(B -$B%s%\%k$N%j%9%H$G$9!#A0J}$H$b%7%s%\%k$N%j%9%H$G$9!#A0/$J$/$9$k0l$D$NJ}(B -$BK!$O!"M_$7$/$J$$5-;v$N%9%3%"$rDc$/$7!"4{FI$N0u$rIU$1$k;v$G$9!#$=$&$7$?>l9g!"(B -$B$=$l$i$O$3$NL?Na$G$O%@%&%s%m!<%I$5$l$^$;$s!#(B +$B$=$l$G!"$I$&$d$C$FBgNL$N5-;v/(B +$B$J$/$9$k0l$D$NJ}K!$O!"M_$7$/$J$$5-;v$N%9%3%"$rDc$/$7!"4{FI$N0u$rIU$1$k;v(B +$B$G$9!#$=$&$7$?>l9g!"$=$l$i$O$3$NL?Na$G$O%@%&%s%m!<%I$5$l$^$;$s!#(B @vindex gnus-uncacheable-groups @vindex gnus-cacheable-groups -$B$$$/$D$+$N%0%k!<%W$G$O%-%c%C%7%e$r$7$?$/$J$$$H$$$&$N$ONI$/$"$k;v$G$9!#Nc$((B -$B$P!"(B@code{nnml} $B%a!<%k%G%#%l%/%H%j!<$,%[!<%`%G%#%l%/%H%j!<$N2<$K$"$l$P!"$=(B -$B$l$r$"$J$?$N%[!<%`%G%#%l%/%H%j!<$N2<$NJL$N>l=j$K%-%c%C%7%e$9$k$N$O0UL#$NL5(B -$B$$;v$G$9!#$"$J$?$,(B2$BG\$NMFNL$r;H$&;v$,NI$$$H46$8$J$$8B$j$O!#(B +$B$$$/$D$+$N%0%k!<%W$G$O%-%c%C%7%e$r$7$?$/$J$$$H$$$&$N$ONI$/$"$k;v$G$9!#Nc(B +$B$($P!"(B@code{nnml} $B%a!<%k%G%#%l%/%H%j!<$,%[!<%`%G%#%l%/%H%j!<$N2<$K$"$l$P!"(B +$B$=$l$r$"$J$?$N%[!<%`%G%#%l%/%H%j!<$N2<$NJL$N>l=j$K%-%c%C%7%e$9$k$N$O0UL#(B +$B$NL5$$;v$G$9!#$"$J$?$,FsG\$NMFNL$r;H$&;v$,NI$$$H46$8$J$$8B$j$O!#(B $B%-%c%C%7%e$r@)8B$9$k$?$a$K!"(B@code{gnus-cacheable-groups} $B$r(B $B$r%-%c%C%7%e(B -$B$9$k%0%k!<%W$NO"A[%j%9%H!"Nc$($P(B @samp{^nntp}$B!"$H$9$k$+!"@55,I=8=(B -@code{gnus-uncacheable-groups} $B$rNc$($P!"(B@samp{^nnml} $B$K@_Dj$7$F2<$5$$!#(B -$BN>J}$NJQ?t$N=i4|CM$O(B @code{nil} $B$G$9!#$b$7%0%k!<%W$,N>J}$N@55,I=8=$K9gCW(B -$B$9$k$H!"$=$N%0%k!<%W$O%-%c%C%7%e$5$l$^$;$s!#(B +$B$9$k%0%k!<%W$NO"A[%j%9%H!"Nc$($P(B @samp{^nntp}$B!"$H$9$k$+!"@55,I=(B +$B8=(B @code{gnus-uncacheable-groups} $B$rNc$($P!"(B@samp{^nnml} $B$K@_Dj$7$F2<$5(B +$B$$!#N>J}$NJQ?t$N=i4|CM$O(B @code{nil} $B$G$9!#$b$7%0%k!<%W$,N>J}$N@55,I=8=$K(B +$B9gCW$9$k$H!"$=$N%0%k!<%W$O%-%c%C%7%e$5$l$^$;$s!#(B @findex gnus-cache-generate-nov-databases @findex gnus-cache-generate-active @vindex gnus-cache-active-file -$B%-%c%C%7%e$O$I$N5-;v$,4^$^$l$F$$$k$+$N>pJs$r%"%/%F%#%V%U%!%$%k(B -(@code{gnus-cache-active-file}) $B$KN/$a$^$9!#$3$N%U%!%$%k!J$b$7$/$O%-%c%C(B -$B%7%e$NB>$NItJ,!K$,2?$i$+$NM}M3$G$0$A$c$0$A$c$K$J$C$F$7$^$C$?>l9g!"(Bgnus -$B$OJ*;v$r@5$7$/$9$k$?$a$K(B2$B$D$N4X?t$r$*4+$a$7$^$9!#(B@kbd{M-x -gnus-cache-generate-nov-databases} $B$O$9$Y$F$N(B @sc{nov} $B%U%!%$%k$r!J:F!K(B -$B:n@.$7!"(B@kbd{gnus-cache-generate-active} $B$O%"%/%F%#%V%U%!%$%k$r!J:F!K:n(B -$B@.$7$^$9!#(B - +$B%-%c%C%7%e$O$I$N5-;v$,4^$^$l$F$$$k$+$N>pJs$r%"%/%F%#%V%U%!%$(B +$B%k(B (@code{gnus-cache-active-file}) $B$KN/$a$^$9!#$3$N%U%!%$%k(B ($B$b$7$/$O%-%c%C(B +$B%7%e$NB>$NItJ,(B) $B$,2?$i$+$NM}M3$G$0$A$c$0$A$c$K$J$C$F$7$^$C$?>l9g!"(B +gnus $B$OJ*;v$r@5$7$/$9$k$?$a$KFs$D$N4X?t$r$*4+$a$7$^$9!#(B +@kbd{M-x gnus-cache-generate-nov-databases} $B$O$9$Y$F$N(B @sc{nov} $B%U%!%$%k(B +$B$r(B ($B:F(B) $B:n@.$7!"(B@kbd{gnus-cache-generate-active} $B$O%"%/%F%#%V%U%!%$%k(B +$B$r(B ($B:F(B) $B:n@.$7$^$9!#(B @node Persistent Articles @section $B1JB35-;v(B @cindex persistent articles -$B5-;v$N%-%c%C%7%e$H6a$$4X78$K$"$k$b$K!"(B@dfn{$B1JB35-;v(B}$B$,$"$j$^$9!#l=j$K1J1s$K;D$C$F$$$k$Y$-$G$7$g(B -$B$&!#%K%e!<%9%5!<%P!<$K$*$1$k4|8B:o=|$K$O1F6A$5$l$J$$$G!#(B +$BNc$($P!"%K%e!<%9%0%k!<%W$rFI$s$G$$$F!"$=$N$^$^1J1s$KJ]B8$7$FHkB"$7$?$$!"(B +$B$$$/$D$+$N2ACM$"$kJu@P$K=P2q$C$?$H$7$^$7$g$&!#IaDL$O$=$l$r%U%!%$%k$KJ]B8(B +$B$7$^$9(B ($BB?$/$NJ]B8L?Na$N0l$D$r;H$C$F(B)$B!#$=$l$NLdBj$O!"C1$K$"$N!"7y$J$@$1(B +$B$G$9!#M}A[E*$K$O!"5-;v$O%0%k!<%W$G$"$J$?$,8+$D$1$?>l=j$K1J1s$K;D$C$F$$$k(B +$B$Y$-$G$7$g$&!#%K%e!<%9%5!<%P!<$K$*$1$k4|8B:o=|$K$O1F6A$5$l$J$$$G!#(B -$B$3$l$,(B@dfn{$B1JB35-;v(B}$B$G$9!=!=5-;v$O:o=|$5$l$^$;$s!#$=$l$OIaDL$N%-%c%C%7%eL?(B -$BNa$r;H$C$FJ}$H$b%W%m%;%9(B/$B@\F,0z?t$N=,47$rM}2r$7$^$9!#(B -$B$b$71JB35-;v$K$@$16=L#$,$"$k$N$G$7$?$i!"2D;k5-;v!J$d$=$NB>$N$b$N!K$,%-%c%C(B -$B%7%e$KF~$k$N$rHr$1$k$?$a$K!"(B@code{gnus-use-cache} $B$r(B @code{passive} $B$K@_Dj(B -$B$9$k$N$,NI$$$G$7$g$&!'(B +$B$b$71JB35-;v$K$@$16=L#$,$"$k$N$G$7$?$i!"2D;k5-;v(B ($B$d$=$NB>$N$b$N(B) $B$,%-%c%C(B +$B%7%e$KF~$k$N$rHr$1$k$?$a$K!"(B@code{gnus-use-cache} $B$r(B @code{passive} $B$K@_(B +$BDj$9$k$N$,NI$$$G$7$g$&(B: @lisp (setq gnus-use-cache 'passive) @end lisp - @node Article Backlog @section $B5-;v$N%P%C%/%m%0(B @cindex backlog @cindex article backlog -$B$b$7CY$$@\B3$7$+$J$$>l9g$G!"%-%c%C%7%e$r;H$&$H$$$&H/A[$O$"$^$jL%NOE*$G$O$J(B -$B$$$H$-!Ju67$r(B -$B2?$H$+$9$k$3$H$,$G$-$^$9!#$3$l$O4{$KFI$s$@5-;v$r:F/$7CY$/$7!"%a%b%j!<$N;H(B -$BMQNL$r$$$/$i$+A}$d$7$^$9!#(B +$B$b$7CY$$@\B3$7$+$J$$>l9g$G!"%-%c%C%7%e$r;H$&$H$$$&H/A[$O$"$^$jL%NOE*$G$O(B +$B$J$$$H$-(B ($Bu67$r2?$H$+$9$k$3$H$,$G$-$^$9!#$3$l$O4{$KFI$s$@5-;v$r:F/$7CY$/$7!"(B +$B%a%b%j!<$N;HMQNL$r$$$/$i$+A}$d$7$^$9!#(B @vindex gnus-keep-backlog -$B$b$7(B @code{gnus-keep-backlog} $B$r?t;z(B @var{n} $B$K@_Dj$9$k$H!"(Bgnus $B$O:GBg$G(B -@var{n} $B$N8E$$5-;v$r8e$N:Fl9g!"(Bgnus $B$O(B@emph{$BA4$F(B}$B$N4{FI5-;v$r$?$/(B -$B$o$($^$9!#$3$l$O$"$J$?$N(B Emacs $B$,!"K=H/$7$F$"$J$?$N%^%7%s$,Mn$A$k$^$G@)8B(B -$B$J$/KD$l>e$,$k$H$$$&$3$H$G$9!#;d$O$"$J$?J}A4$F$,855$$G$$$i$l$k$h$&$K$3$3$K(B -$B=q$-2C$($^$7$?!#(B +$B$b$7(B @code{gnus-keep-backlog} $B$r?t;z(B @var{n} $B$K@_Dj$9$k$H!"(Bgnus $B$O:GBg(B +$B$G(B @var{n} $B$N8E$$5-;v$r8e$N:Fl9g!"(Bgnus $B$O(B@emph{$BA4$F(B}$B$N4{FI5-(B +$B;v$r$?$/$o$($^$9!#$3$l$O$"$J$?$N(B Emacs $B$,!"K=H/$7$F$"$J$?$N%^%7%s$,Mn$A(B +$B$k$^$G@)8B$J$/KD$l>e$,$k$H$$$&$3$H$G$9!#;d$O$"$J$?J}A4$F$,855$$G$$$i$l$k(B +$B$h$&$K$3$3$K=q$-2C$($^$7$?!#(B $B$3$NJQ?t$O%G%#%U%)%k%H$G$O(B @code{nil} $B$G$9!#(B - @node Saving Articles @section $B5-;v$NJ]B8(B @cindex saving articles -Gnus $B$O$?$/$5$s$NJ}K!$G5-;v$rJ]B8$9$k;v$,$G$-$^$9!#0J2<$N$b$N$OHs>o$KN(D>(B -$B$JJ}K!!JNc$($P!"5-;v$,J]B8$9$kA0$K$[$H$s$I2?$b$J$5$l$J$$!K$G5-;v$rJ]B8$9$k(B -$B$?$a$N@bL@$G$9!#0c$C$?o$KN((B +$BD>$JJ}K!(B ($BNc$($P!"5-;v$,J]B8$9$kA0$K$[$H$s$I2?$b$J$5$l$J$$(B) $B$G5-;v$rJ]B8(B +$B$9$k$?$a$N@bL@$G$9!#0c$C$?$^$7$/$J$$%X%C%@!<$r>C5n$7$^$;$s!#(B @vindex gnus-saved-headers -$B$b$7>e$NJQ?t$,(B @code{nil} $B$G$"$k$H!"@55,I=8=(B @code{gnus-saved-headers} -$B$K9gCW$9$k$9$Y$F$N%X%C%@!<$O;D$5$l!";D$j$N$b$N$OJ]B8$9$kA0$K:o=|$5$l$^$9!#(B +$B$b$7>e$NJQ?t$,(B @code{nil} $B$G$"$k$H!"@55,I=(B +$B8=(B @code{gnus-saved-headers} $B$K9gCW$9$k$9$Y$F$N%X%C%@!<$O;D$5$l!";D$j$N(B +$B$b$N$OJ]B8$9$kA0$K:o=|$5$l$^$9!#(B @table @kbd @item O o @itemx o -@kindex O o $B!J35N,!K(B -@kindex o $B!J35N,!K(B +@kindex O o ($B35N,(B) +@kindex o ($B35N,(B) @findex gnus-summary-save-article @c @icon{gnus-summary-save-article} -$B%G%#%U%)%k%H$N5-;vJ]B8$rMQ$$$F8=:_$N5-;v$rJ]B8$7$^$9(B -(@code{gnus-summary-save-article})$B!#(B +$B%G%#%U%)%k%H$N5-;vJ]B8$rMQ$$$F8=:_$N5-;v$rJ]B8$7$^(B +$B$9(B (@code{gnus-summary-save-article})$B!#(B @item O m -@kindex O m $B!J35N,!K(B +@kindex O m ($B35N,(B) @findex gnus-summary-save-article-mail -$B8=:_$N5-;v$r%a!<%k$NMM<0$GJ]B8$7$^$9(B -(@code{gnus-summary-save-article-mail})$B!#(B +$B8=:_$N5-;v$r%a!<%k$NMM<0$GJ]B8$7$^(B +$B$9(B (@code{gnus-summary-save-article-mail})$B!#(B @item O r -@kindex O r $B!J35N,!K(B +@kindex O r ($B35N,(B) @findex gnus-summary-save-article-rmail -$B8=:_$N5-;v$r(B rmail $B$NMM<0$GJ]B8$7$^$9(B -(@code{gnus-summary-save-article-rmail})$B!#(B +$B8=:_$N5-;v$r(B rmail $B$NMM<0$GJ]B8$7$^(B +$B$9(B (@code{gnus-summary-save-article-rmail})$B!#(B @item O f -@kindex O f $B!J35N,!K(B +@kindex O f ($B35N,(B) @findex gnus-summary-save-article-file @c @icon{gnus-summary-save-article-file} -$B8=:_$N5-;v$rIaDL$N%U%!%$%k(B (plain file) $BMM<0$GJ]B8$7$^$9(B -(@code{gnus-summary-save-article-file})$B!#(B +$B8=:_$N5-;v$rIaDL$N%U%!%$%k(B (plain file) $BMM<0$GJ]B8$7$^(B +$B$9(B (@code{gnus-summary-save-article-file})$B!#(B @item O F -@kindex O F $B!J35N,!K(B +@kindex O F ($B35N,(B) @findex gnus-summary-write-article-file $B8=:_$N5-;v$rIaDL$N%U%!%$%kMM<0$GJ]B8$7!"0JA0$N%U%!%$%k$NFbMF$r>e=q$-$7$^(B $B$9(B (@code{gnus-summary-write-article-file})$B!#(B @item O b -@kindex O b $B!J35N,!K(B +@kindex O b ($B35N,(B) @findex gnus-summary-save-article-body-file -$B8=:_$N5-;v$NK\J8(B (body) $B$rIaDL$N%U%!%$%kMM<0$GJ]B8$7$^$9(B -(@code{gnus-summary-save-article-body-file})$B!#(B +$B8=:_$N5-;v$NK\J8(B (body) $B$rIaDL$N%U%!%$%kMM<0$GJ]B8$7$^(B +$B$9(B (@code{gnus-summary-save-article-body-file})$B!#(B @item O h -@kindex O h $B!J35N,!K(B +@kindex O h ($B35N,(B) @findex gnus-summary-save-article-folder -$B8=:_$N5-;v$r(B mh $B$N%U%)%k%@!<$NMM<0$GJ]B8$7$^$9(B -(@code{gnus-summary-save-article-folder})$B!#(B +$B8=:_$N5-;v$r(B mh $B$N%U%)%k%@!<$NMM<0$GJ]B8$7$^(B +$B$9(B (@code{gnus-summary-save-article-folder})$B!#(B @item O v -@kindex O v $B!J35N,!K(B +@kindex O v ($B35N,(B) @findex gnus-summary-save-article-vm -$B8=:_$N5-;v$r(B VM $B%U%)%k%@!<$KJ]B8$7$^$9(B -(@code{gnus-summary-save-article-vm})$B!#(B +$B8=:_$N5-;v$r(B VM $B%U%)%k%@!<$KJ]B8$7$^(B +$B$9(B (@code{gnus-summary-save-article-vm})$B!#(B @item O p -@kindex O p $B!J35N,!K(B +@kindex O p ($B35N,(B) @findex gnus-summary-pipe-output -$B8=:_$N5-;v$r%Q%$%W$KJ]B8$7$^$9!#$&!<$s$H!"$"$N$)!";d$,8@$*$&$H$7$F$$$k;v$O!=!=(B -$B8=:_$N5-;v$r%W%m%;%9$K%Q%$%W$9$k$H$$$&$3$H$G$9(B -(@code{gnus-summary-pipe-output})$B!#(B +$B8=:_$N5-;v$r%Q%$%W$KJ]B8$7$^$9!#$&!<$s$H!"$"$N$)!";d$,8@$*$&$H$7$F$$$k;v(B +$B$O!=!=8=:_$N5-;v$r%W%m%;%9$K%Q%$%W$9$k$H$$$&$3$H$G(B +$B$9(B (@code{gnus-summary-pipe-output})$B!#(B @end table @vindex gnus-prompt-before-saving -$B$9$Y$F$N$3$l$i$NL?Na$O%W%m%;%9(B/$B@\F,0z?t$N=,47$r;H$$$^$9(B -(@pxref{Process/Prefix})$B!#$b$7$3$l$i$N4X?t$r;H$C$F$?$/$5$s$N5-;v$rJ]B8$7(B -$B$?>l9g!"$=$l$>$l$N$9$Y$F$N5-;v$KBP$7$F%U%!%$%kL>$NF~NO$rMW5a$5$l$k;v$KK0(B -$B$-K0$-$9$k$G$7$g$&!#F~NOB%?JF0:n$OJQ?t(B @code{gnus-prompt-before-saving} -$B$K$h$C$F@)8f$5$l$^$9!#$3$l$O%G%#%U%)%k%H$G$O(B @code{always} $B$G!"$"$J$?$,(B -$BCN$C$F$$$F7y$,$C$F$$$k!"2a>j$JB%?JF0:n$r$7$^$9!#Be$o$j$K$3$NJQ?t$r(B -@code{t} $B$K@_Dj$9$k$H!"$"$J$?$,J]B8$9$k$=$l$>$l$N0lO"$N5-;v$KBP$7$F0l2s(B -$B$@$1B%$5$l$^$9!#K\Ev$K(B gnus $B$K$9$Y$F$N;W9M$r$5$;$?$$$N$G$"$l$P!"$3$NJQ?t(B -$B$r(B@code{nil} $B$K$9$k$3$H$5$($G$-$^$9!#$=$7$F!"5-;v$rJ]B8$9$k$?$a$N%U%!%$(B -$B%k$rB%$5$l$k;v$O$"$j$^$;$s!#(BGnus $B$OC1=c$K$9$Y$F$N5-;v$r%G%#%U%)%k%H$N%U%!(B -$B%$%k$KJ]B8$7$^$9!#(B - +$B$9$Y$F$N$3$l$i$NL?Na$O%W%m%;%9(B/$B@\F,0z?t$N=,47$r;H$$$^(B +$B$9(B (@pxref{Process/Prefix})$B!#$b$7$3$l$i$N4X?t$r;H$C$F$?$/$5$s$N5-;v$rJ](B +$BB8$7$?>l9g!"$=$l$>$l$N$9$Y$F$N5-;v$KBP$7$F%U%!%$%kL>$NF~NO$rMW5a$5$l$k;v(B +$B$KK0$-K0$-$9$k$G$7$g$&!#F~NOB%?JF0:n$OJQ(B +$B?t(B @code{gnus-prompt-before-saving} $B$K$h$C$F@)8f$5$l$^$9!#$3$l$O%G%#%U%)(B +$B%k%H$G$O(B @code{always} $B$G!"$"$J$?$,CN$C$F$$$F7y$,$C$F$$$k!"2a>j$JB%?JF0(B +$B:n$r$7$^$9!#Be$o$j$K$3$NJQ?t$r(B @code{t} $B$K@_Dj$9$k$H!"$"$J$?$,J]B8$9$k$=(B +$B$l$>$l$N0lO"$N5-;v$KBP$7$F0l2s$@$1B%$5$l$^$9!#K\Ev$K(B gnus $B$K$9$Y$F$N;W9M(B +$B$r$5$;$?$$$N$G$"$l$P!"$3$NJQ?t$r(B @code{nil} $B$K$9$k$3$H$5$($G$-$^$9!#$=$7(B +$B$F!"5-;v$rJ]B8$9$k$?$a$N%U%!%$%k$rB%$5$l$k;v$O$"$j$^$;$s!#(BGnus $B$OC1=c$K(B +$B$9$Y$F$N5-;v$r%G%#%U%)%k%H$N%U%!%$%k$KJ]B8$7$^$9!#(B @vindex gnus-default-article-saver -Gnus $B$,$"$J$?$NK>$`$H$*$j$K$J$k$h$&$K!"JQ?t(B -@code{gnus-default-article-saver} $B$r%+%9%?%^%$%:$9$k;v$,$G$-$^$9!#2<$N#6$D(B -$B$N4{@=4X?t$r;H$&;v$,$G$-$^$9$7!"<+J,<+?H$N4X?t$r:n$k;v$b$G$-$^$9!#(B +Gnus $B$,$"$J$?$NK>$`$H$*$j$K$J$k$h$&$K!"JQ(B +$B?t(B @code{gnus-default-article-saver} $B$r%+%9%?%^%$%:$9$k;v$,$G$-$^$9!#2<(B +$B$NO;$D$N4{@=4X?t$r;H$&;v$,$G$-$^$9$7!"<+J,<+?H$N4X?t$r:n$k;v$b$G$-$^$9!#(B @table @code @@ -6278,18 +6266,18 @@ Gnus $B$,$"$J$?$NK>$`$H$*$j$K$J$k$h$&$K!"JQ?t(B @findex gnus-summary-save-in-rmail @vindex gnus-rmail-save-name @findex gnus-plain-save-name -$B$3$l$O%G%#%U%)%k%H$NMM<0!"(B@dfn{babyl} $B$G$9!#JQ?t(B -@code{gnus-ramil-save-name} $B$KF~$C$F$$$k4X?t$r!"5-;v$rJ]B8$9$k$?$a$N%U%!(B -$B%$%kL>$r$r$r$ro$N%U%!%$%k$N8e$KDI2C$7$^$9!#JQ?t(B -@code{gnus-file-save-name} $B$KF~$C$F$$$k4X?t$r!"5-;v$rJ]B8$9$k$?$a$N%U%!(B -$B%$%kL>$ro$N%U%!%$%k$N8e$KDI2C$7$^$9!#JQ(B +$B?t(B @code{gnus-file-save-name} $B$KF~$C$F$$$k4X?t$r!"5-;v$rJ]B8$9$k$?$a$N%U%!(B +$B%$%kL>$r$r.J8;z$K$J$C$?L>A0$r$D$/$j$^$9!#(B +$B$rJ]B8$9$k%U%!%$%kL>$r.J8;z$K$J$C$?L>A0$r$D$/$j$^(B +$B$9!#(B @item gnus-summary-save-in-vm @findex gnus-summary-save-in-vm @@ -6332,8 +6320,8 @@ MH $B%i%$%V%i%j!<$N(B @code{rcvstore} $B$rMQ$$$k;v$K$h$C$F5-;v$r(B MH $B%U% $B$O%G%#%U%)%k%H$G$O(B @file{~/News/} $B$G$9!#(B $B>e$K$"$k$h$&$K!"5-;v$rJ]B8$9$k$?$a$N%U%!%$%k$NE,@Z$JL>A0$r8+$D$1$k$?$a$K!"(B -$B4X?t$O0c$C$?4X?t$rMQ$$$^$9!#0J2<$OL>A0$r@8@.$9$k$?$a$K;HMQ2DG=$J4X?t$N%j%9(B -$B%H$G$9!'(B +$B4X?t$O0c$C$?4X?t$rMQ$$$^$9!#0J2<$OL>A0$r@8@.$9$k$?$a$K;HMQ2DG=$J4X?t$N%j(B +$B%9%H$G$9(B: @table @code @@ -6356,9 +6344,10 @@ MH $B%i%$%V%i%j!<$N(B @code{rcvstore} $B$rMQ$$$k;v$K$h$C$F5-;v$r(B MH $B%U% @vindex gnus-split-methods $BO"A[%j%9%H(B @code{gnus-split-methods} $B$K@55,I=8=$rJ|$j9~$`;v$K$h$C$F!"(B -gnus $B$K5-;v$rJ]B8$9$k>l=j$rDs0F$9$k;v$,$G$-$^$9!#Nc$($P!"(Bgnus $B$K4XO"$7$?5-(B -$B;v$r%U%!%$%k(B @file{gnus-stuff} $B$K!"(BVM $B$K4XO"$7$?5-;v$r(B @code{vm-stuff} $BJ](B -$BB8$7$?$1$l$P!"$3$NJQ?t$r0J2<$N$h$&$K$9$k;v$,$G$-$^$9!'(B +gnus $B$K5-;v$rJ]B8$9$k>l=j$rDs0F$9$k;v$,$G$-$^$9!#Nc$($P!"(Bgnus $B$K4XO"$7$?(B +$B5-;v$r%U%!%$%k(B @file{gnus-stuff} $B$K!"(BVM $B$K4XO"$7$?5-;v(B +$B$r(B @code{vm-stuff} $BJ]B8$7$?$1$l$P!"$3$NJQ?t$r0J2<$N$h$&$K$9$k;v$,$G$-$^(B +$B$9(B: @lisp (("^Subject:.*gnus\\|^Newsgroups:.*gnus" "gnus-stuff") @@ -6367,28 +6356,28 @@ gnus $B$K5-;v$rJ]B8$9$k>l=j$rDs0F$9$k;v$,$G$-$^$9!#Nc$($P!"(Bgnus $B$K4XO"$7$ ((equal gnus-newsgroup-name "mail.misc") "mail-stuff")) @end lisp -$B$3$l$O$=$l$>$l$NMWAG$,!"(B2$B$D$NMWAG!=!=(B@dfn{$B9gCW(B} $B$H(B @dfn{$B%U%!%$%k(B} $B$r;}$D(B -$B%j%9%H$G$"$k%j%9%H$G$"$k$H$$$&;v$,$o$+$j$^$9!#9gCW$OJ8;zNs!J$3$N>l9g$O5-;v(B -$B$N%X%C%@!<$K9gCW$9$k@55,I=8=$H$7$F;H$o$l$^$9!K$*$h$S!"%7%s%\%k!J%0%k!<%WL>(B -$B$r0z?t$H$7$F!"4X?t$H$7$F8F$P$l$^$9!K$*$h$S!"%j%9%H!J$3$l$OI>2A(B -(@code{eval}) $B$5$l$^$9!K$G$"$k$3$H$,$G$-$^$9!#$b$7$3$l$i$NF0:n$N0l$D$G$b(B -@code{nil} $B$G$J$$7k2L$rJV$9$H!"(B@dfn{$B%U%!%$%k(B}$B$,%G%#%U%)%k%H$NB%?J$H$7$F;H(B -$B$o$l$^$9!#2C$($F!"8F$P$l$?4X?t$+<0$,J8;zNs$+J8;zNs$N%j%9%H$rJV$7$?$H$-$O!"(B -$B1i;;$N7k2L<+BN$,;H$o$l$^$9!#(B +$B$3$l$O$=$l$>$l$NMWAG$,!"Fs$D$NMWAG!=!=(B@dfn{$B9gCW(B} $B$H(B @dfn{$B%U%!%$%k(B} $B$r;}(B +$B$D%j%9%H$G$"$k%j%9%H$G$"$k$H$$$&;v$,$o$+$j$^$9!#9gCW$OJ8;zNs(B ($B$3$N>l9g$O(B +$B5-;v$N%X%C%@!<$K9gCW$9$k@55,I=8=$H$7$F;H$o$l$^$9(B) $B$*$h$S!"%7%s%\%k(B ($B%0%k!<(B +$B%WL>$r0z?t$H$7$F!"4X?t$H$7$F8F$P$l$^$9(B) $B$*$h$S!"%j%9%H(B ($B$3$l$OI>(B +$B2A(B (@code{eval}) $B$5$l$^$9(B) $B$G$"$k$3$H$,$G$-$^$9!#$b$7$3$l$i$NF0:n$N0l$D(B +$B$G$b(B @code{nil} $B$G$J$$7k2L$rJV$9$H!"(B@dfn{$B%U%!%$%k(B}$B$,%G%#%U%)%k%H$NB%?J$H(B +$B$7$F;H$o$l$^$9!#2C$($F!"8F$P$l$?4X?t$+<0$,J8;zNs$+J8;zNs$N%j%9%H$rJV$7$?(B +$B$H$-$O!"1i;;$N7k2L<+BN$,;H$o$l$^$9!#(B -$B4pK\E*$K$O!"8=:_$N5-;v$rJ]B8$9$k$N$K;H$o$l$k2DG=@-$N$"$k%U%!%$%kL>$N%j%9%H(B -$B$rA0$H$7$F;H$$$?$$$b$N$rB%$5$l!"$3$NJQ?t$rE,MQ$9$k;v$K$h$jF@$i$l$?7k2L$+$i(B -$B%U%!%$%kL>Jd40$r$7$FF~NO$7$^$9!#(B +$B4pK\E*$K$O!"8=:_$N5-;v$rJ]B8$9$k$N$K;H$o$l$k2DG=@-$N$"$k%U%!%$%kL>$N%j%9(B +$B%H$rA0$H$7$F;H$$$?$$$b$N$rB%$5$l!"$3$NJQ?t$rE,MQ$9$k;v$K$h$jF@$i$l$?7k(B +$B2L$+$i%U%!%$%kL>Jd40$r$7$FF~NO$7$^$9!#(B -$B$3$NJQ?t$O%G%#%U%)%k%H$G$O(B @code{((gnus-article-archive-name))} $B$G!"(Bgnus -$BJ]B8$9$k5-;v$N(B @code{Archive-name} $B9T$rD4$Y$F!"$=$l$r%U%!%$%kL>$NDs0F$H(B -$B$7$F;H$&$H$$$&;v$G$9!#(B +$B$3$NJQ?t$O%G%#%U%)%k%H$G$O(B @code{((gnus-article-archive-name))} $B$G!"(B +gnus $B$,J]B8$9$k5-;v$N(B @code{Archive-name} $B9T$rD4$Y$F!"$=$l$r%U%!%$%kL>$N(B +$BDs0F$H$7$F;H$&$H$$$&;v$G$9!#(B $B$3$l$O%U%!%$%kL>$r>/$7$-$l$$$K$9$k4X?t$NNc$G$9!#(B @samp{nnml:mail.whatever} $B$N$h$&$J%a!<%k%0%k!<%W$,$?$/$5$s$"$k$N$G$"$l$P!"(B $BJ]B8$9$k$?$a$N%U%!%$%kL>$r:n$kA0$K$3$l$i$N%0%k!<%WL>$N:G=i$r@Z$jMn$H$7$?(B -$B$$$+$b$7$l$^$;$s!#l=j$rDs0F$9$k;v$,$G$-$^$9!#Nc$($P!"(Bgnus $B$K4XO"$7$ (my-save-name))) @end lisp - @vindex gnus-use-long-file-name -$B:G8e$K(B @code{gnus-use-long-file-name} $B$H$$$&JQ?t$,$"$j$^$9!#$3$l$,(B -@code{nil} $B$G$"$k$H!"$9$Y$F$N>e5-$N4X?t$O%0%k!<%WL>$N$9$Y$F$N%T%j%*%I(B -(@samp{.}) $B$r%9%i%C%7%e(B (@samp{/}) $B$GCV$-49$($^$9!=!=$3$l$O4X?t$O$9$Y$F$N(B -$B%U%!%$%k$r0lHV>e$N%G%#%l%/%H%j!<$KCV$/$N$G$O$J$/!"3,AXE*$J%G%#%l%/%H%j!<$r(B -$B:n$k$H$$$&;v$G$9!J(B@file{~/News/alt.andrea-dworkin} $B$NBe$o$j$K(B -@file{~/News/alt/andrea-dworkin}$B!#!K$3$NJQ?t$O$?$$$F$$$N%7%9%F%`$K$*$$$F%G%#(B -$B%U%)%k%H$G(B @code{t} $B$G$9!#$7$+$7!"Nr;KE*$JM}M3$+$i(B Xenix $B$H(B usg-unix-v $B%^(B -$B%7%s$G$O%G%#%U%)%k%H$G(B @code{nil} $B$G$9!#(B +$B:G8e$K(B @code{gnus-use-long-file-name} $B$H$$$&JQ?t$,$"$j$^$9!#$3$l(B +$B$,(B @code{nil} $B$G$"$k$H!"$9$Y$F$N>e5-$N4X?t$O%0%k!<%WL>$N$9$Y$F$N%T%j%*(B +$B%I(B (@samp{.}) $B$r%9%i%C%7%e(B (@samp{/}) $B$GCV$-49$($^$9!=!=$3$l$O4X?t$O$9$Y(B +$B$F$N%U%!%$%k$r0lHV>e$N%G%#%l%/%H%j!<$KCV$/$N$G$O$J$/!"3,AXE*$J%G%#%l%/%H(B +$B%j!<$r:n$k$H$$$&;v$G$9(B (@file{~/News/alt.andrea-dworkin} $B$NBe$o$j(B +$B$K(B @file{~/News/alt/andrea-dworkin}$B!#(B) $B$3$NJQ?t$O$?$$$F$$$N%7%9%F%`$K$*(B +$B$$$F%G%#%U%)%k%H$G(B @code{t} $B$G$9!#$7$+$7!"Nr;KE*$JM}M3$+(B +$B$i(B Xenix $B$H(B usg-unix-v $B%^%7%s$G$O%G%#%U%)%k%H$G(B @code{nil} $B$G$9!#(B $B$3$N4X?t$O:o=|$H%9%3%"$N%U%!%$%kL>$K1F6A$7$^$9!#$3$NJQ?t$,%j%9%H$G!"%j%9(B $B%H$KMWAG(B @code{not-score} $B$,$"$k$H!"D9$$%U%!%$%kL>$O%9%3%"%U%!%$%k$K$O;H(B @@ -6417,56 +6405,54 @@ gnus $B$K5-;v$rJ]B8$9$k>l=j$rDs0F$9$k;v$,$G$-$^$9!#Nc$($P!"(Bgnus $B$K4XO"$7$ $B;H$o$l$:!"MWAG(B @code{not-kill} $B$,$"$k$H!"D9$$%U%!%$%kL>$O:o=|%U%!%$%k$K(B $B$O;H$o$l$^$;$s!#(B -$B$b$75-;v$r%9%W!<%k$N$h$&$J3,AX$KJ]B8$7$?$$$N$G$"$l$P!"e$N%G%#%l%/%H%j!<$r0z?t(B (@file{~/News/}) $B$H$7$FEO$7$^(B -$B$9!#(B - +$B$=$l$+$i(B @kbd{o} $B$K$h$C$F5-;v$rJ]B8$9$k$@$1$G$9!#$=$l$+$i$3$N3,AX$rC;L?(B +$B$J(B @code{nneething} $B%0%k!<%W$K$h$C$FFI$`;v$,$G$-$^$9!=!=%0%k!<%W%P%C%U%!(B +$B$G(B @kbd{G D} $B$H$7!"0lHV>e$N%G%#%l%/%H%j!<$r0z?t(B (@file{~/News/}) $B$H$7$F(B +$BEO$7$^$9!#(B @node Decoding Articles @section $B5-;v$NI|9f2=(B @cindex decoding articles -$B$H$-$I$-MxMQA0!"(B -@samp{[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)} $B$K%O!<%I%3!<%I$5$l$k!"$r(B -$B;}$D5-;v$rI|9f2=$7$h$&$H$7$?$H$-$O!"(B@code{gnus-uu} $B$OLdBj$N5-;v$r$A$g$&$I(B -$B1\Mw$7$?;v$rCN$i$;$k$?$a$K!"<+F0E*$K(B @samp{comp.unix.wizards} $B$K5-;v$rEj9F(B -$B$7$^$9!#$3$N5!G=$r;H$o$J$$$h$&$K$9$k;v$O$G$-$^$;$s!#(B - +$BCm0U(B: @code{gnus-uu-notify-files} $B$K9gCW$9$kL>A0!"(B +@samp{[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)} $B$K%O!<%I%3!<%I$5$l$k!"(B +$B$r;}$D5-;v$rI|9f2=$7$h$&$H$7$?$H$-$O!"(B@code{gnus-uu} $B$OLdBj$N5-;v$r$A$g(B +$B$&$I1\Mw$7$?;v$rCN$i$;$k$?$a$K!"<+F0E*$K(B @samp{comp.unix.wizards} $B$K5-;v(B +$B$rEj9F$7$^$9!#$3$N5!G=$r;H$o$J$$$h$&$K$9$k;v$O$G$-$^$;$s!#(B @node Shell Archives @subsection $B%7%'%k%"!<%+%$%V(B @@ -6522,35 +6508,34 @@ Gnus $B$O0J2<$N4JC1$J5,B'$KB'$C$F$I$N5-;v$,72$KB0$9$k$N$+$r?dB,$7$^$9!'(B $BI @cindex shell archives @cindex shared articles -$B%7%'%k%"!<%+%$%V!J!X(Bshar $B%U%!%$%k!Y!K$O%=!<%9$rG[I[$9$k$?$a$N?M5$$N$"$kJ}(B -$BK!$G$7$?$,!":#F|$G$O$=$s$J$K;H$o$l$F$$$^$;$s!#$H$K$+$/$3$l$i$r07$&$?$a$NL?(B -$BNa$,$"$j$^$9!'(B +$B%7%'%k%"!<%+%$%V(B ($B!X(Bshar $B%U%!%$%k!Y(B) $B$O%=!<%9$rG[I[$9$k$?$a$N?M5$$N$"$k(B +$BJ}K!$G$7$?$,!":#F|$G$O$=$s$J$K;H$o$l$F$$$^$;$s!#$H$K$+$/$3$l$i$r07$&$?$a(B +$B$NL?Na$,$"$j$^$9(B: @table @kbd @item X s -@kindex X s $B!J35N,!K(B +@kindex X s ($B35N,(B) @findex gnus-uu-decode-unshar $B8=:_$N72$r2rE`$7$^$9(B (@code{gnus-uu-decode-unshar})$B!#(B @item X S -@kindex X S $B!J35N,!K(B +@kindex X S ($B35N,(B) @findex gnus-uu-decode-unshar-and-save $B8=:_$N72$r2rE`$7J]B8$7$^$9(B (@code{gnus-uu-decode-unshar-and-save})$B!#(B @item X v s -@kindex X v s $B!J35N,!K(B +@kindex X v s ($B35N,(B) @findex gnus-uu-decode-unshar-view $B8=:_$N72$r2rE`$7I=<($7$^$9(B (@code{gnus-uu-decode-unshar-view})$B!#(B @item X v S -@kindex X v S $B!J35N,!K(B +@kindex X v S ($B35N,(B) @findex gnus-uu-decode-unshar-and-save-view -$B8=:_$N72$r2rE`$7!"I=<($7$FJ]B8$7$^$9(B -(@code{gnus-uu-decode-unshar-and-save-view})$B!#(B +$B8=:_$N72$r2rE`$7!"I=<($7$FJ]B8$7$^(B +$B$9(B (@code{gnus-uu-decode-unshar-and-save-view})$B!#(B @end table - @node PostScript Files @subsection $B%]%9%H%9%/%j%W%H%U%!%$%k(B @cindex PostScript @@ -6558,65 +6543,62 @@ Gnus $B$O0J2<$N4JC1$J5,B'$KB'$C$F$I$N5-;v$,72$KB0$9$k$N$+$r?dB,$7$^$9!'(B $BI @table @kbd @item X p -@kindex X p $B!J35N,!K(B +@kindex X p ($B35N,(B) @findex gnus-uu-decode-postscript $B8=:_$N%]%9%H%9%/%j%W%H72$rE83+$7$^$9(B (@code{gnus-uu-decode-postscript})$B!#(B @item X P -@kindex X P $B!J35N,!K(B +@kindex X P ($B35N,(B) @findex gnus-uu-decode-postscript-and-save -$B8=:_$N%]%9%H%9%/%j%W%H72$rE83+$7$FJ]B8$7$^$9(B -(@code{gnus-uu-decode-postscript-and-save})$B!#(B +$B8=:_$N%]%9%H%9%/%j%W%H72$rE83+$7$FJ]B8$7$^(B +$B$9(B (@code{gnus-uu-decode-postscript-and-save})$B!#(B @item X v p -@kindex X v p $B!J35N,!K(B +@kindex X v p ($B35N,(B) @findex gnus-uu-decode-postscript-view -$B8=:_$N%]%9%H%9%/%j%W%H72$rI=<($7$^$9(B -(@code{gnus-uu-decode-postscript-view})$B!#(B +$B8=:_$N%]%9%H%9%/%j%W%H72$rI=<($7$^(B +$B$9(B (@code{gnus-uu-decode-postscript-view})$B!#(B @item X v P -@kindex X v P $B!J35N,!K(B +@kindex X v P ($B35N,(B) @findex gnus-uu-decode-ostscript-and-save-view -$B8=:_$N%]%9%H%9%/%j%W%H72$rI=<($7J]B8$7$^$9(B -(@code{gnus-uu-decode-postscript-and-save-view})$B!#(B +$B8=:_$N%]%9%H%9%/%j%W%H72$rI=<($7J]B8$7$^(B +$B$9(B (@code{gnus-uu-decode-postscript-and-save-view})$B!#(B @end table - @node Other Files @subsection $BB>$N%U%!%$%k(B @table @kbd @item X o -@kindex X o $B!J35N,!K(B +@kindex X o ($B35N,(B) @findex gnus-uu-decode-save $B8=:_$N72$rJ]B8$7$^$9(B (@code{gnus-uu-decode-save})$B!#(B @item X b -@kindex X b $B!J35N,!K(B +@kindex X b ($B35N,(B) @findex gnus-uu-decode-binhex $B8=:_$N5-;v$r(B binhex $B2rE`$7$^$9(B (@code{gnus-uu-decode-binhex})$B!#$3$l$OK\(B $BEv$OF0:n$7$^$;$s!#(B @end table - @node Decoding Variables @subsection $BI|9f2=$N$?$a$NJQ?t(B $B7AMF;l$G$9!#F0;l$G$O$"$j$^$;$s!#(B @menu -* Rule Variables:: $B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$kJQ?t!#(B -* Other Decode Variables:: $BB>$NI|9f2=$NJQ?t!#(B -* Uuencoding and Posting:: uuencode $B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t!#(B +* Rule Variables:: $B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$kJQ?t(B +* Other Decode Variables:: $BB>$NI|9f2=$NJQ?t(B +* Uuencoding and Posting:: uuencode $B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t(B @end menu - @node Rule Variables @subsubsection $B5,B'JQ?t(B @cindex rule variables -Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9!#$3$l$i(B -$B$NJQ?t$O$9$Y$F0J2<$N$h$&$JMM<0$G$9(B +Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9!#$3$l(B +$B$i$NJQ?t$O$9$Y$F0J2<$N$h$&$JMM<0$G$9!#(B @lisp (list '(regexp1 command2) @@ -6629,9 +6611,10 @@ Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9 @item gnus-uu-user-view-rules @vindex gnus-uu-user-view-rules @cindex sox -$B$3$NJQ?t$O%U%!%$%k$r1\Mw$9$k$H$-$K:G=i$KD4$Y$i$l$^$9!#Nc$($P!"$b$7(B -@samp{.au} $B2;%U%!%$%k$rJQ49$9$k$?$a$K(B @code{sox} $B$r;H$$$?$$$H$-$O!" /dev/audio"))) @@ -6648,7 +6631,6 @@ Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9 $B$K;H$&;v$,$G$-$^$9!#(B @end table - @node Other Decode Variables @subsubsection $BB>$NI|9f2=$NJQ?t(B @@ -6656,10 +6638,10 @@ Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9 @vindex gnus-uu-grabbed-file-functions @item gnus-uu-grabbed-file-functions -$B$3$N%j%9%H$N$9$Y$F$N4X?t$O$=$l$>$l$N%U%!%$%k$,>e8e$K8F$P(B -$B$l$^$9!=!=$G$9$+$i!"$9$0$K%U%!%$%k$r0\F0$d1\Mw$7$?$j$9$k$3$H$,$G$-!"2?$+$r(B -$B$9$kA0$K$9$Y$F$N%U%!%$%k$,I|9f2=$5$l$k$N$rBT$DI,MW$O$"$j$^$;$s!#$3$N%j%9%H(B -$B$KF~$l$k;v$N$G$-$k4{@=4X?t$O!'(B +$B$3$N%j%9%H$N$9$Y$F$N4X?t$O$=$l$>$l$N%U%!%$%k$,>e8e$K8F(B +$B$P$l$^$9!=!=$G$9$+$i!"$9$0$K%U%!%$%k$r0\F0$d1\Mw$7$?$j$9$k$3$H$,$G$-!"2?(B +$B$+$r$9$kA0$K$9$Y$F$N%U%!%$%k$,I|9f2=$5$l$k$N$rBT$DI,MW$O$"$j$^$;$s!#$3$N(B +$B%j%9%H$KF~$l$k;v$N$G$-$k4{@=4X?t$O(B: @table @code @@ -6669,15 +6651,15 @@ Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9 @item gnus-uu-grab-move @findex gnus-uu-grab-move -$B%U%!%$%k$r0\F0$7$^$9!J$b$7J]B84X?t$r;H$C$F$$$k$N$G$"$l$P!K!#(B +$B%U%!%$%k$r0\F0$7$^$9(B ($B$b$7J]B84X?t$r;H$C$F$$$k$N$G$"$l$P(B)$B!#(B @end table @item gnus-uu-be-dangerous @vindex gnus-uu-be-dangerous -$BI|9f2=$N:GCf$KJQ$J>u67$,5/$3$C$?$H$-$K2?$r$9$k$+$r;XDj$7$^$9!#$b$7(B -@code{nil} $B$G$"$k$H!"$G$-$k$@$1J]e=q$-$7$^$9!#$=$NB>$N>l9g$O!"(B -$B$=$l$>$l$N$H$-$K?R$M$^$9!#(B +$BI|9f2=$N:GCf$KJQ$J>u67$,5/$3$C$?$H$-$K2?$r$9$k$+$r;XDj$7$^$9!#$b(B +$B$7(B @code{nil} $B$G$"$k$H!"$G$-$k$@$1J]e=q$-$7$^$9!#$=$NB>$N>l(B +$B9g$O!"$=$l$>$l$N$H$-$K?R$M$^$9!#(B @item gnus-uu-ignore-files-by-name @vindex gnus-uu-ignore-files-by-name @@ -6685,9 +6667,10 @@ Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9 @item gnus-uu-ignore-files-by-type @vindex gnus-uu-ignore-files-by-type -$B$3$NJQ?t$K9gCW$9$k(B @sc{mime} $B$N7?$r;}$D%U%!%$%k$O1\Mw$5$l$^$;$s!#(BGnus $B$O%U%!(B -$B%$%kL>$K4p$E$$$F7?$r?dB,$7$F$$$k;v$KCm0U$7$F$/$@$5$$!#(B@code{gnus-uu} $B$O(B -$B!J$^$@!K(B@sc{mime} $B%Q%C%1!<%8$G$O$"$j$^$;$s$N$G!"$3$l$O>/$7JQ$G$9!#(B +$B$3$NJQ?t$K9gCW$9$k(B @sc{mime} $B$N7?$r;}$D%U%!%$%k$O1\Mw$5$l$^$;$s!#(BGnus $B$O(B +$B%U%!%$%kL>$K4p$E$$$F7?$r?dB,$7$F$$$k;v$KCm0U$7$F$/$@$5$$!#(B +@code{gnus-uu} $B$O(B ($B$^$@(B) @sc{mime} $B%Q%C%1!<%8$G$O$"$j$^$;$s$N$G!"$3$l$O(B +$B>/$7JQ$G$9!#(B @item gnus-uu-tmp-dir @vindex gnus-uu-tmp-dir @@ -6725,8 +6708,8 @@ Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9 @item gnus-uu-correct-stripped-uucode @vindex gnus-uu-correct-stripped-uucode -@code{nil} $B$G$J$$$H$$$&$N$O!"(B@code{gnus-uu} $B$OB3$/6uGr$,:o=|$5$l$F$7$^$C$F(B -$B$$$k(B uuencode $B$5$l$?%U%!%$%k$r=$I|$7$h$&$H(B@emph{$B;n$9(B}$B$H$$$&;v$G$9!#(B +@code{nil} $B$G$J$$$H$$$&$N$O!"(B@code{gnus-uu} $B$OB3$/6uGr$,:o=|$5$l$F$7$^$C(B +$B$F$$$k(B uuencode $B$5$l$?%U%!%$%k$r=$I|$7$h$&$H(B @emph{$B;n$9(B} $B$H$$$&;v$G$9!#(B @item gnus-uu-pre-uudecode-hook @vindex gnus-uu-pre-uudecode-hook @@ -6744,12 +6727,11 @@ Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9 @code{nil} $B$G$J$$$N$O!"(B@code{gnus-uu} $B$,I|9f2=$r$7$J$$$GJ]B8$r$9$k$h$&$K(B $B8@$o$l$?$H$-$K!"MWLs$rJ]B8$9$k$H$$$&;v$G$9!#$3$NJQ?t$,(B @code{nil} $B$G$"$k(B $B$H!"(B@code{gnus-uu} $B$O(B $B2?$b>~$j$r$7$J$$$GA4$F$r%U%!%$%k$KJ]B8$7$^$9!#MWLs(B -$B$O(B RFC1153 $B=`$8$F$$$^$9!=!=0UL#$N$"$kNL$r;XDj$7$F!"HV9f$rH/9T$9$k4JC1$JJ}(B -$BK!$,8+$D$+$i$J$+$C$?$N$G!"C1=c$K$=$l$i$O@Z$jMn$H$7$F$$$^$9!#(B +$B$O(B RFC1153 $B=`$8$F$$$^$9!=!=0UL#$N$"$kNL$r;XDj$7$F!"HV9f$rH/9T$9$k4JC1$J(B +$BJ}K!$,8+$D$+$i$J$+$C$?$N$G!"C1=c$K$=$l$i$O@Z$jMn$H$7$F$$$^$9!#(B @end table - @node Uuencoding and Posting @subsubsection uuencode $B$HEj9F(B @@ -6769,39 +6751,40 @@ Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9 @item gnus-uu-post-threaded @vindex gnus-uu-post-threaded -@code{nil} $B$G$J$$$N$O!"(B@code{gnus-uu} $B$,Id9f2=$5$l$?%U%!%$%k$r%9%l%C%I$GEj(B -$B9F$9$k$H$$$&;v$G$9!#$3$l$O$"$^$j8-$$J}K!$G$O$J$$$+$bCN$l$^$;$s!#$H$$$&$N$O!"(B -$B:#$^$G;d$,8+$?Cf$G(B uuencode $B$5$l$?5-;v$r=8$a$k$N$K!"%9%l%C%I$rDI$C$F$$$/;v(B -$B$N$G$-$kB>$NI|9fAuCV$,B8:_$7$J$$$+$i$G$9!#!J$(!<$H!";d$O$=$l$r$9$k0l$D$N%Q%C(B -$B%1!<%8$r8+$?;v$,$"$j$^$9!=!=(B@code{gnus-uu} $B$G$9!#$7$+$7$J$<$+!"$=$l$,?t$N(B -$B$&$A$KF~$k$H$O;W$($J$$$N$G$9(B...$B!K%G%#%U%)%k%H$O(B @code{nil} $B$G$9!#(B +@code{nil} $B$G$J$$$N$O!"(B@code{gnus-uu} $B$,Id9f2=$5$l$?%U%!%$%k$r%9%l%C%I$G(B +$BEj9F$9$k$H$$$&;v$G$9!#$3$l$O$"$^$j8-$$J}K!$G$O$J$$$+$bCN$l$^$;$s!#$H$$$&(B +$B$N$O!":#$^$G;d$,8+$?Cf$G(B uuencode $B$5$l$?5-;v$r=8$a$k$N$K!"%9%l%C%I$rDI$C(B +$B$F$$$/;v$N$G$-$kB>$NI|9fAuCV$,B8:_$7$J$$$+$i$G$9!#(B($B$(!<$H!";d$O$=$l$r$9(B +$B$k0l$D$N%Q%C%1!<%8$r8+$?;v$,$"$j$^$9!=!=(B@code{gnus-uu} $B$G$9!#$7$+$7$J$<(B +$B$+!"$=$l$,?t$N$&$A$KF~$k$H$O;W$($J$$$N$G$9(B...) $B%G%#%U%)%k%H(B +$B$O(B @code{nil} $B$G$9!#(B @item gnus-uu-post-separate-description @vindex gnus-uu-post-separate-description @code{nil} $B$G$J$$$N$O!"5-=R$OJL$N5-;v$GEj9F$5$l$k$H$$$&;v$G$9!#:G=i$N5-(B -$B;v$OIaDL$O(B (0/x) $B$N$h$&$KHV9f$,IU$1$i$l$^$9!#$b$7$3$NJQ?t$,(B @code{nil} -$B$G$"$k$H!"MxMQl9g!"(Bgnus $B$O%"!<%+%$%V$r(B -$BE83+$7$h$&$H;n$_!"%"!<%+%$%V$NCf$K1\Mw$G$-$k%U%!%$%k$,$"$k$+$rD4$Y$^$9!#Nc(B -$B$($P!"(Bgzip $B$5$l$?(B tar $B%U%!%$%k(B @file{pics.tar.gz} $B$,$"$C$F!"%U%!%$%k(B -@file{pic1.jpg} $B$H(B @file{pic2.gif} $B$r4^$s$G$$$k>l9g!"(Bgnus $B$O$l$NCj=P$5$l$?5-;v$4$H$K(B@dfn{$B5?;w5-;v(B}$B$r35N,%P%C(B -$B%U%!$KA^F~$7$^$9!#$3$l$i$N!X5-;v!Y$K0\F0$7$?>l9g$O!"l9g!"(Bgnus $B$O%"!<%+%$%V(B +$B$rE83+$7$h$&$H;n$_!"%"!<%+%$%V$NCf$K1\Mw$G$-$k%U%!%$%k$,$"$k$+$rD4$Y$^$9!#(B +$BNc$($P!"(Bgzip $B$5$l$?(B tar $B%U%!%$%k(B @file{pics.tar.gz} $B$,$"$C$F!"%U%!%$(B +$B%k(B @file{pic1.jpg} $B$H(B @file{pic2.gif} $B$r4^$s$G$$$k>l9g!"(Bgnus $B$O$l$NCj=P$5$l$?5-;v$4$H$K(B@dfn{$B5?;w5-;v(B}$B$r35N,(B +$B%P%C%U%!$KA^F~$7$^$9!#$3$l$i$N!X5-;v!Y$K0\F0$7$?>l9g$O!"pJs$O>C$75n$j$?$$$H$b;W$&!#(B -* Article Washing:: $B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?4X?t!#(B -* Article Buttons:: URL $B$d(B Message-ID $B$d(B $B%"%I%l%9$J$I$r%/%j%C%/$9$k!#(B -* Article Date:: $B$0$:$0$:8@$&$J!"@$3&;~$@!*(B -* Article Signature:: $B=pL>$C$F2?!)(B -* Article Miscellanina:: $BB>$N$$$m$$$m$J$b$N!#(B +* Article Highlighting:: $B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?$$(B +* Article Fontisizing:: $B6/D4$5$l$?J8$rAGE($K$9$k(B +* Article Hiding:: $BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&(B +* Article Washing:: $B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?4X?t(B +* Article Buttons:: URL $B$d(B Message-ID $B$d(B $B%"%I%l%9$J$I$r%/%j%C%/$9$k(B +* Article Date:: $B$0$:$0$:8@$&$J!"@$3&;~$@(B! +* Article Signature:: $B=pL>$C$F2?(B? +* Article Miscellanina:: $BB>$N$$$m$$$m$J$b$N(B @end menu - @node Article Highlighting @subsection $B5-;v$N%O%$%i%$%H(B @cindex highlighting @@ -6858,14 +6840,14 @@ gnus $B$,Ds0F$r$7$^$9!K$rF~NO$9$k$h$&$KB%$5$l!"$=$l$+$iL?Na$,$r%O%$%i%$%H$7!"K\BN(B (body) $B$HF,(B (head) $B$K%\%?%s$r2C$($^$9!#(B @item W H h -@kindex W H h $B!J35N,!K(B +@kindex W H h ($B35N,(B) @findex gnus-article-highlight-headers @vindex gnus-header-face-alist $B%X%C%@!<$r%O%$%i%$%H$7$^$9(B (@code{gnus-article-highlight-headers})$B!#%O%$(B @@ -6879,26 +6861,26 @@ gnus $B$,Ds0F$r$7$^$9!K$rF~NO$9$k$h$&$KB%$5$l!"$=$l$+$iL?Na$,(B (signature) $B$r%O%$%i%$%H$7$^$9(B -(@code{gnus-article-highlight-signature})$B!#(B +$B=pL>(B (signature) $B$r%O%$%i%$%H$7$^(B +$B$9(B (@code{gnus-article-highlight-signature})$B!#(B @code{gnus-signature-separator} (@pxref{Article Signature}) $B$N8e$NA4$F$N(B $B$b$N$O=pL>$H9M$($i$l!"(B@code{gnus-signature-face} $B$G%O%$%i%$%H$5$l$^$9!#(B $B$=$l$O%G%#%U%)%k%H$G$O(B @code{italic} $B$G$9!#5-;v$r<+F0E*$K%O%$%i%$%H$9$k(B $BJ}K!$K$D$$$F$O(B @xref{Customizing Articles} $B$r;2>H$7$F2<$5$$!#(B @end table - @node Article Fontisizing @subsection $B5-;v$N%U%)%s%HJQ99(B @cindex emphasis @cindex article emphasis @cindex gnus-article-emphasize -@kindex W e $B!J35N,!K(B -$B?M!9$O$h$/%K%e!<%9$N5-;v$G(B @samp{_$B$3$l(B_} $B$d(B @samp{*$B$3$l(B*} $B$^$?$O(B -@samp{/$B$3$l(B/} $B$N$h$&$J$b$N$r;H$C$FC18l$r6/D4$7$^$9!#(BGnus $B$O(B $B5-;v$rL?Na(B -@kbd{W e} (@code{gnus-article-emphasize}) $B$K$+$1$k;v$K$h$C$FAGE($K8+$($k(B -$B$h$&$K$G$-$^$9!#(B +@kindex W e ($B35N,(B) +$B?M!9$O$h$/%K%e!<%9$N5-;v$G(B @samp{_$B$3$l(B_} $B$d(B @samp{*$B$3$l(B*} $B$^$?(B +$B$O(B @samp{/$B$3$l(B/} $B$N$h$&$J$b$N$r;H$C$FC18l$r6/D4$7$^$9!#(BGnus $B$O(B $B5-;v$rL?(B +$BNa(B @kbd{W e} (@code{gnus-article-emphasize}) $B$K$+$1$k;v$K$h$C$FAGE($K8+(B +$B$($k$h$&$K$G$-$^$9!#(B @vindex gnus-emphasis-alist $B6/D4$,$I$N$h$&$K1i;;$5$l$k$+$OJQ?t(B @code{gnus-emphasis-alist} $B$K$h$C$F@)(B $B8f$5$l$^$9!#$3$l$O:G=i$NMWAG$,9gCW$9$k$Y$-@55,I=8=$G$"$kO"A[%j%9%H$G$9!#(B -2$BHVL\$NMWAG$O$I$N@55,I=8=$N%0%k!<%W$,6/D48lA4BN$r8+$D$1$k$?$a$K;H$o$l$k(B -$B$+$r<($9?t;z$G$9!##3HVL\$O$I$N@55,I=8=$N%0%k!<%W$,I=<($5$l%O%$%i%$%H$5$l(B -$B$k$+$r7h$a$k?t;z$G$9!#!J$3$N(B2$B$D$N%0%k!<%W$N4V$N5-;v$O1#$5$l$^$9!#!K#4HV(B -$BL\$O%O%$%i%$%H$N%U%'%$%9$G$9!#(B +$BFsHVL\$NMWAG$O$I$N@55,I=8=$N%0%k!<%W$,6/D48lA4BN$r8+$D$1$k$?$a$K;H$o$l$k(B +$B$+$r<($9?t;z$G$9!#;0HVL\$O$I$N@55,I=8=$N%0%k!<%W$,I=<($5$l%O%$%i%$%H$5$l(B +$B$k$+$r7h$a$k?t;z$G$9!#(B +($B$3$NFs$D$N%0%k!<%W$N4V$N5-;v$O1#$5$l$^$9!#(B) $B;MHVL\$O%O%$%i%$%H$N%U%'%$(B +$B%9$G$9!#(B @lisp (setq gnus-emphasis-alist @@ -6988,16 +6969,13 @@ Fonts})$B!#F1$8%a%C%;!<%8$NCf$KJ#?t$N5-;v$+$i$N0zMQ$,$"$k$H!"(Bgnus $B$O$=$l$ @vindex gnus-emphasis-underline-italic @vindex gnus-emphasis-bold-italic @vindex gnus-emphasis-underline-bold-italic -$B=i4|@_Dj$G$O#7$D$N5,B'$,$"$j!"$=$l$i$O0J2<$N%U%'%$%9$rMQ$$$^$9!'(B -@code{gnus-emphasis-bold}, @code{gnus-emphasis-italic}, -@code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic}, -@code{gnus-emphasis-underline-italic}, -@code{gnus-emphasis-underline-bold}, -@code{gnus-emphasis-underline-bold-italic}. +$B=i4|@_Dj$G$O<7$D$N5,B'$,$"$j!"$=$l$i$O0J2<$N%U%'%$%9$rMQ$$$^(B +$B$9(B: @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic}, @code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic}, @code{gnus-emphasis-underline-italic}, @code{gnus-emphasis-underline-bold}, @code{gnus-emphasis-underline-bold-italic}. -$B$3$l$i$N%U%'%$%9$rJQ99$7$?$$$N$G$"$l$P!"(B@kbd{M-x customize} $B$+(B -@code{copy-face} $B$r;H$&;v$,$G$-$^$9!#Nc$($P!"(B@code{gnus-emphasis-italic} -$B$KBe$o$j$K@V$N%U%'%$%9$r;H$&$h$&$K$7$?$$$H$-$O!"H$7$F2<$5$$!#(B - @node Article Hiding @subsection $B5-;v$r1#$9(B @cindex article hiding @@ -7023,38 +7000,39 @@ Fonts})$B!#F1$8%a%C%;!<%8$NCf$KJ#?t$N5-;v$+$i$N0zMQ$,$"$k$H!"(Bgnus $B$O$=$l$ @table @kbd @item W W a -@kindex W W a $B!J35N,!K(B +@kindex W W a ($B35N,(B) @findex gnus-article-hide $B5-;v%P%C%U%!$G$?$/$5$s$N1#F?$r$7$^$9(B (@kbd{gnus-article-hide})$B!#FC$K!"$3(B $B$N4X?t$O%X%C%@!$r1#$7$^$9!#(B @item W W h -@kindex W W h $B!J35N,!K(B +@kindex W W h ($B35N,(B) @findex gnus-article-toggle-headers -$B%X%C%@!<$r1#$7$^$9(B (@code{gnus-article-toggle-headers})$B!#(B @xref{Hiding -Headers}. +$B%X%C%@!<$r1#$7$^$9(B (@code{gnus-article-toggle-headers})$B!#(B +@xref{Hiding Headers}. @item W W b -@kindex W W b $B!J35N,!K(B +@kindex W W b ($B35N,(B) @findex gnus-article-hide-boring-headers -$B$"$^$j6=L#$N$b$F$J$$%X%C%@!<$r1#$7$^$9(B -(@code{gnus-article-hide-boring-headers})$B!#(B @xref{Hiding Headers}. +$B$"$^$j6=L#$N$b$F$J$$%X%C%@!<$r1#$7$^(B +$B$9(B (@code{gnus-article-hide-boring-headers})$B!#(B@xref{Hiding Headers}. @item W W s -@kindex W W s $B!J35N,!K(B +@kindex W W s ($B35N,(B) @findex gnus-article-hide-signature -$B=pL>$r1#$7$^$9(B (@code{gnus-article-hide-signature})$B!#(B @xref{Article -Signature}. +$B=pL>$r1#$7$^$9(B (@code{gnus-article-hide-signature})$B!#(B +@xref{Article Signature}. @item W W l @kindex W W l (Summary) @findex gnus-article-hide-list-identifiers @vindex gnus-list-identifiers @code{gnus-list-identifiers} $B$G;XDj$5$l$F$$$k%a!<%j%s%0%j%9%H$NI8<1$r:o(B -$B=|$7$^$9!#$3$l$i$O$$$/$D$+$N%a!<%j%s%0%j%9%H$N%5!<%P!<$,A4$F$N(B -@code{Subject} $B%X%C%@!<$N:G=i$K$D$1$kJ8;zNs$G$9(B---$BNc$($P!"(B +$B=|$7$^$9!#$3$l$i$O$$$/$D$+$N%a!<%j%s%0%j%9%H$N%5!<%P!<$,A4$F(B +$B$N(B @code{Subject} $B%X%C%@!<$N:G=i$K$D$1$kJ8;zNs$G$9(B---$BNc$($P!"(B @samp{[zebra 4711]}$B!#J8;zNs$N=i$a$K$"$k(B @samp{Re: } $B$O!":o=|$r9T$J$&A0$K(B -$BD7$S1[$5$l$^$9!#(B +$BD7$S1[$5$l$^$9!#(B@code{gnus-list-identifiers} $B$K(B @code{\\(..\\)} $B$r4^$a$F(B +$B$O$$$1$^$;$s!#(B @table @code @@ -7066,12 +7044,13 @@ Signature}. @end table @item W W p -@kindex W W p $B!J35N,!K(B +@kindex W W p ($B35N,(B) @findex gnus-article-hide-pgp @vindex gnus-article-hide-pgp-hook -@sc{pgp} $B=pL>$r1#$7$^$9(B (@code{gnus-article-hide-pgp})$B!#(B @sc{pgp} $B=pL>$,(B +@sc{pgp} $B=pL>$r1#$7$^$9(B (@code{gnus-article-hide-pgp})$B!#(B@sc{pgp} $B=pL>$,(B $B1#$5$l$?8e$K%U%C%/(B @code{gnus-article-hide-pgp-hook} $B$,$r;}$D5-;v$r<+F0E*$KG'>Z$9$k$K$O(B: + @lisp ;;; Hide pgp cruft if any. @@ -7088,9 +7067,9 @@ Signature}. @end lisp @item W W P -@kindex W W P $B!J35N,!K(B +@kindex W W P ($B35N,(B) @findex gnus-article-hide-pem -@sc{pem} (privacy enhanced messages$B!J%W%i%$%P%7!<3HD%%a%C%;!<%8!K(B) $BItJ,$r(B +@sc{pem} (privacy enhanced messages ($B%W%i%$%P%7!<3HD%%a%C%;!<%8(B)) $BItJ,$r(B $B1#$7$^$9(B (@code{gnus-article-hide-pem})$B!#(B @item W W B @@ -7100,20 +7079,22 @@ Signature}. @cindex OneList @cindex stripping advertisments @cindex advertisments -@code{banner} $B%0%k!<%W%Q%i%a!<%?$G;XDj$5$l$?%P%J!<$r$r1#$9$?$a$K;EMM$5$l$^$9!#$3$N4X?t$r;H$&J}K!$O(B @code{banner} -$B%0%k!<%W%Q%i%a!<%?(B (@pxref{Group Parameters}) $B$r%P%J!<$rC5n$5$l$k%F%-%9%H$K9gCW$9$k@55,I=8=$H$7$F2r$,>C5n$5$l$k$H$$$&0UL#$G$"$k%7%s%\%k(B -@code{signature} $B$G$"$k$3$H$,$G$-$^$9!#(B +$B$7$/$O=pL>$r1#$9$?$a$K;EMM$5$l$^$9!#$3$N4X?t$r;H$&J}K!(B +$B$O(B @code{banner} $B%0%k!<%W%Q%i%a!<%?(B (@pxref{Group Parameters}) $B$r%P%J!<(B +$B$rC5n$5$l$k%F%-%9%H$K9gCW$9(B +$B$k@55,I=8=$H$7$F2r$,>C5n$5$l$k$H$$$&0UL#(B +$B$G$"$k%7%s%\%k(B @code{signature}$B!"$^$?(B +$B$O(B @code{gnus-article-banner-alist} $B$N@55,I=8=$KBP1~$7$?%7%s%\%k$G$"$k$3(B +$B$H$,$G$-$^$9!#(B @item W W c -@kindex W W c $B!J35N,!K(B +@kindex W W c ($B35N,(B) @findex gnus-article-hide-citation -$B0zMQ$r1#$7$^$9(B (@code{gnus-article-hide-citation})$B!#1#JC$r%+%9%?%^%$%:$9$k(B -$B$$$/$D$+$NJQ?t$O!'(B +$B0zMQ$r1#$7$^$9(B (@code{gnus-article-hide-citation})$B!#1#JC$r%+%9%?%^%$%:$9(B +$B$k$$$/$D$+$NJQ?t$O(B: @table @code @item gnus-cited-opend-text-button-line-format @@ -7124,7 +7105,7 @@ Signature}. Gnus $B$O$I$3$N0zMQJ8$,1#$5$l$F$$$k$+$r<($9$?$a$K%\%?%s$rIU$12C$(!"J8>O$N(B $B1#JC$r@Z$jBX$($i$l$k$h$&$K$7$^$9!#$3$NJQ?t$NMM<0$O$3$l$i$N%U%)!<%^%C%H$N(B $B$h$&$JJQ?t$K$h$C$F;XDj$5$l$^$9(B (@pxref{Formatting Variables})$B!#O$N(B @end table @item W W C -@kindex W W C $B!J35N,!K(B +@kindex W W C ($B35N,(B) @findex gnus-article-hide-citation-in-followups -$B:,K\$G$J$$5-;v$N0zMQJ8$r1#$7$^$9(B -(@code{gnus-article-hide-citation-in-followups})$B!#$3$l$OBPOCE*L?Na$H$7$F(B -$B$O$"$^$jLr$KN)$?$J$$$+$b$7$l$^$;$s$,!"<+F0E*$K5/$3$kO$N(B @end table -$B$3$l$i$NA4$F$N!X1#JC!YL?Na$O@Z$jBX$(L?Na$G$9$,!"$3$l$i$NL?Na$KIi$N@\F,0z?t(B -$B$rM?$($k$H!"$=$l$i$OA0$K1#$5$l$F$$$?$b$N$rI=<($7$^$9!#@5$N@\F,0z?t$rM?$($l(B -$B$P!"$=$l$i$O>o$K1#$7$^$9!#(B +$B$3$l$i$NA4$F$N!X1#JC!YL?Na$O@Z$jBX$(L?Na$G$9$,!"$3$l$i$NL?Na$KIi$N@\F,0z(B +$B?t$rM?$($k$H!"$=$l$i$OA0$K1#$5$l$F$$$?$b$N$rI=<($7$^$9!#@5$N@\F,0z?t$rM?(B +$B$($l$P!"$=$l$i$O>o$K1#$7$^$9!#(B -$B0zMQ%+%9%?%^%$%:$N$?$a$NB>$NJQ?t$N>pJs$N$?$a$K(B @pxref{Article -Highlighting} $B$b;2>H$7$F$/$@$5$$!#(B +$B0zMQ%+%9%?%^%$%:$N$?$a$NB>$NJQ?t$N>pJs$N$?$a(B +$B$K(B @pxref{Article Highlighting} $B$b;2>H$7$F$/$@$5$$!#(B $B<+F0E*$K5-;v$NMWAG$r1#$9$?$a$NJ}K!$O(B @xref{Customizing Articles} $B$r;2>H(B $B$7$F2<$5$$!#(B - @node Article Washing @subsection $B5-;v@vBu(B @cindex washing @cindex article washing -$B;d$?$A$O$3$l$r$b$C$H$b$JM}M3$N2<$G!X5-;v@vBu!Y(B(article washing) $B$H8F$s$G$$(B -$B$^$9!#$9$J$o$A!"%-!<(B @kbd{A} $B$O;H$o$l$F$$$k$N$G!"Be$o$j$K%-!<(B @kbd{W} $B$r;H(B -$B$&I,MW$,$"$k$N$G$9!#(B +$B;d$?$A$O$3$l$r$b$C$H$b$JM}M3$N2<$G!X5-;v@vBu!Y(B(article washing) $B$H8F$s$G(B +$B$$$^$9!#$9$J$o$A!"%-!<(B @kbd{A} $B$O;H$o$l$F$$$k$N$G!"Be$o$j$K(B +$B%-!<(B @kbd{W} $B$r;H$&I,MW$,$"$k$N$G$9!#(B -$B;d$?$A$O(B@dfn{$B@vBu(B}$B$r!X2?$+$N2?$+$r2?$+JL$N$b$N$KJQ49$9$k!Y$HDj5A$7$F$$$^$9(B -$B$,!"IaDL$O$b$C$HNI$/8+$($k2?$+$KMn$ACe$-$^$9!#$=$l$K$b$C$H$-$l$$$G$9!"$?$V(B -$B$s!#(B +$B;d$?$A$O(B @dfn{$B@vBu(B} $B$r!X2?$+$N2?$+$r2?$+JL$N$b$N$KJQ49$9$k!Y$HDj5A$7$F$$(B +$B$^$9$,!"IaDL$O$b$C$HNI$/8+$($k2?$+$KMn$ACe$-$^$9!#$=$l$K$b$C$H$-$l$$$G$9!"(B +$B$?$V$s!#(B @table @kbd @item W l -@kindex W l $B!J35N,!K(B +@kindex W l ($B35N,(B) @findex gnus-summary-stop-page-breaking -$B%Z!<%8$N6h@Z$j$r8=:_$N5-;v$+$iH$7$F2<$5$$!#(B +$B%Z!<%8$N6h@Z$j$r8=:_$N5-;v$+$iH$7$F2<$5$$!#(B @item W r -@kindex W r $B!J35N,!K(B +@kindex W r ($B35N,(B) @findex gnus-summary-caesar-message @c @icon{gnus-summary-caesar-message} -$B5-;v%P%C%U%!$G%+%(%5%kJQ49(B (Caesar rotate) (rot13) $B$r$7$^$9(B -(@code{gnus-summary-caesar-message})$B!#%+%(%5%kJQ49$+(B rot13 $B$rMQ$$$FFI$`;v(B -$B$N$G$-$k!"H=FIIT2DG=$J5-;v$G$9!JE57?E*$K$O!"967bE*$J>iCL$J$I$G$9!#!K(B - -$BIaDL$O(B ``rot13'' $B$H8F$P$l$F$$$^$9!#$=$l$O%"%k%U%!%Y%C%H$N0LCV$,(B 13 $B8D2sE>(B -$B$9$k$+$i$G$9!#Nc$($P!"(B@samp{B}$B!J(B2$BHVL\$NJ8;z!K(B $B"*(B @samp{O}$B!J(B15$BHVL\$NJ8;z!K!#(B -$B$3$l$O;~!9!X%+%(%5%kJQ49!Y$H8F$P$l$k;v$b$"$j$^$9!#$H$$$&$N$O!"%+%(%5%k$,$3(B -$B$N7A<0$N!"$(!<$H!"$A$g$C$H4JC1$J0E9f2=$r:NMQ$7$?$H$$$&1=$,$"$k$+$i$G$9!#(B +$B5-;v%P%C%U%!$G%+%(%5%kJQ49(B (Caesar rotate) (rot13) $B$r$7$^(B +$B$9(B (@code{gnus-summary-caesar-message})$B!#%+%(%5%kJQ49$+(B rot13 $B$rMQ$$$FFI(B +$B$`;v$N$G$-$k!"H=FIIT2DG=$J5-;v$G$9(B ($BE57?E*$K$O!"967bE*$J>iCL$J$I$G$9!#(B) + +$BIaDL$O(B ``rot13'' $B$H8F$P$l$F$$$^$9!#$=$l$O%"%k%U%!%Y%C%H$N0LCV$,(B 13 $B8D2s(B +$BE>$9$k$+$i$G$9!#Nc$($P!"(B@samp{B} (2 $BHVL\$NJ8;z(B) $B"*(B @samp{O} (15 $BHVL\$NJ8(B +$B;z(B)$B!#$3$l$O;~!9!X%+%(%5%kJQ49!Y$H8F$P$l$k;v$b$"$j$^$9!#$H$$$&$N$O!"%+%((B +$B%5%k$,$3$N7A<0$N!"$(!<$H!"$A$g$C$H4JC1$J0E9f2=$r:NMQ$7$?$H$$$&1=$,$"$k$+(B +$B$i$G$9!#(B @item W t -@kindex W t $B!J35N,!K(B -@findex gnus-summary-toggle-header -$B5-;v%P%C%U%!$K$9$Y$F$N%X%C%@!<$rI=<($9$k$+$I$&$+$r@Z$jBX$($^$9(B -(@code{gnus-summary-toggle-header})$B!#(B +@item t +@kindex W t ($B35N,(B) +@kindex t ($B35N,(B) +@findex gnus-article-toggle-headers +$B5-;v%P%C%U%!$K$9$Y$F$N%X%C%@!<$rI=<($9$k$+$I$&$+$r@Z$jBX$($^(B +$B$9(B (@code{gnus-article-toggle-headers})$B!#(B @item W v -@kindex W v $B!J35N,!K(B +@kindex W v ($B35N,(B) @findex gnus-summary-verbose-header -$B5-;v%P%C%U%!$K$9$Y$F$N%X%C%@!<$r1J1s$KI=<($9$k$+$I$&$+$r@Z$jBX$($^$9(B -(@code{gnus-summary-verbose-header})$B!#(B +$B5-;v%P%C%U%!$K$9$Y$F$N%X%C%@!<$r1J1s$KI=<($9$k$+$I$&$+$r@Z$jBX$($^(B +$B$9(B (@code{gnus-summary-verbose-header})$B!#(B @item W m -@kindex W m $B!J35N,!K(B +@kindex W m ($B35N,(B) @findex gnus-summary-toggle-mime -$BI=<($9$kA0$K5-;v$K(B @sc{mime} $B=hM}$r!H$7$F$/$@$5$$!#(B @item W C @kindex W C ($B35N,(B) @findex gnus-article-capitalize-sentences -$B$=$l$>$l$NJ,$N:G=i$N8l$rBgJ8;z$K$7$^$9(B -(@code{gnus-article-capitalize-sentences})$B!#(B +$B$=$l$>$l$NJ,$N:G=i$N8l$rBgJ8;z$K$7$^(B +$B$9(B (@code{gnus-article-capitalize-sentences})$B!#(B @item W c -@kindex W c $B!J35N,!K(B +@kindex W c ($B35N,(B) @findex gnus-article-remove-cr -CRLF $B$NAH(B ($B$9$J$o$A!"9T$N:G8e$N(B @samp{^M}) $B$r(B LF $B$KJQ49$7$^$9(B ($B$3$l$O(B -DOS $B$N9TKv$N@$OC$r$7$^$9(B)$B!"$=$7$F$=$l$+$i;D$j$N(B CR $B$r(B LF $B$KJQ49$7$^$9(B -($B$3$l$O(B MAC $B$N9TKv$N@$OC$r$7$^$9(B) (@code{gnus-article-remove-cr})$B!#(B +CRLF $B$NAH(B ($B$9$J$o$A!"9T$N:G8e$N(B @samp{^M}) $B$r(B LF $B$KJQ49$7$^$9(B ($B$3$l(B +$B$O(B DOS $B$N9TKv$N@$OC$r$7$^$9(B)$B!"$=$7$F$=$l$+$i;D$j$N(B CR $B$r(B LF $B$KJQ49$7$^(B +$B$9(B ($B$3$l$O(B MAC $B$N9TKv$N@$OC$r$7$^$9(B) (@code{gnus-article-remove-cr})$B!#(B @c @item W 6 @c @kindex W 6 (Summary) @@ -7297,13 +7285,13 @@ HZ $B$^$?$O(B HZP $B$r=hM}$7$^$9!#(BHZ ($B$^$?$O(B HZP) $B$OCf9q8l$N5-;v$ @c @item W h @c @kindex W h (Summary) @c @findex gnus-article-wash-html -@c Treat HTML (@code{gnus-article-wash-html}). +@c Treat HTML (@code{gnus-article-wash-html}). @c Note that the this is usually done automatically by Gnus if the message @c in question has a @code{Content-Type} header that says that this type @c has been done. @item W f -@kindex W f $B!J35N,!K(B +@kindex W f ($B35N,(B) @cindex x-face @findex gnus-article-display-x-face @findex gnus-article-x-face-command @@ -7315,33 +7303,34 @@ HZ $B$^$?$O(B HZP $B$r=hM}$7$^$9!#(BHZ ($B$^$?$O(B HZP) $B$OCf9q8l$N5-;v$ @end iflatex @end iftex $B$9$Y$F$N(B X-Face $BMs$rC5$7$FI=<($7$^$9(B(@code{gnus-article-display-x-face})$B!#(B -$B$3$NL?Na$OJQ?t(B @code{gnus-article-x-face-command} $B$K$h$C$FM?$($i$l$?4X?t$K(B -$B$h$C$F%W%m%0(B -$B%i%`$K$D$$$F$O!"(B`compface' $B$d(B GNU/Linux $B%7%9%F%`$K$*$1$k(B `faces-xface' - $B$N$h$&$J%Q%C%1!<%8$rC5$7$F2<$5$$!#(B} $B$r%U%)!<%/$7$F8+$h$&$H$7$^$9!#(B -XEmacs $B$G$N%G%#%U%)%k%H$NF0:n$O(B @code{From} $BMs$NA0$K4i$rI=<($7$^$9!#(B -$B!J(BXEmacs $B$,(B X-Face $B5!G=IU$-$G%3%s%Q%$%k$5$l$F$$$k$HNI$$$G$7$g$&!=!=$=$l(B -$B$OI=<($r>/$7Aa$/$7$^$9!#$b$7:,K\E*(B X-Face $B5!G=$,$J$$$N$G$"$l$P!"(Bgnus $B$O(B - @code{pbmplus} $B$d$=$NCg4V$N30It%W%m%0%i%`$r;H$C$F(B @code{X-Face} $BMs$rJQ(B -$B49$7$h$&$H;n$_$^$9!#!K$3$N4X?t$rI=<(%U%C%/$KF~$l$?$$$N$G$"$l$P!"$*$=$i$/(B -$B$=$l$O:G8e$K$J$k$Y$-$G$7$g$&!#(B +$B$3$NL?Na$OJQ?t(B @code{gnus-article-x-face-command} $B$K$h$C$FM?$($i$l$?4X?t(B +$B$K$h$C$F%W%m%0%i%`$K$D$$$F$O!"(B +`compface' $B$d(B GNU/Linux $B%7%9%F%`$K$*$1$k(B `faces-xface' $B$N$h$&$J%Q%C%1!<(B +$B%8$rC5$7$F2<$5$$!#(B} $B$r%U%)!<%/$7$F8+$h$&$H$7$^$9!#(BXEmacs $B$G$N%G%#%U%)%k(B +$B%H$NF0:n$O(B @code{From} $BMs$NA0$K4i$rI=<($7$^$9!#(B(XEmacs $B$,(B X-Face $B5!G=IU(B +$B$-$G%3%s%Q%$%k$5$l$F$$$k$HNI$$$G$7$g$&!=!=$=$l$OI=<($r>/$7Aa$/$7$^$9!#$b(B +$B$7:,K\E*(B X-Face $B5!G=$,$J$$$N$G$"$l$P!"(Bgnus $B$O(B @code{pbmplus} $B$d$=$NCg4V(B +$B$N30It%W%m%0%i%`$r;H$C$F(B @code{X-Face} $BMs$rJQ49$7$h$&$H;n$_$^$9!#(B) $B$3$N(B +$B4X?t$rI=<(%U%C%/$KF~$l$?$$$N$G$"$l$P!"$*$=$i$/$=$l$O:G8e$K$J$k$Y$-$G$7$g(B +$B$&!#(B @item W b -@kindex W b $B!J35N,!K(B +@kindex W b ($B35N,(B) @findex gnus-article-add-buttons $B%/%j%C%/$G$-$k%\%?%s$r5-;v$K2C$($^$9(B (@code{gnus-article-add-buttons})$B!#(B @xref{Article Buttons}. @item W B -@kindex W B $B!J35N,!K(B +@kindex W B ($B35N,(B) @findex gnus-article-add-buttons-to-head -$B%/%j%C%/$G$-$k%\%?%s$r5-;v$N%X%C%@!<$K2C$($^$9(B -(@code{gnus-article-add-buttons-to-head})$B!#(B +$B%/%j%C%/$G$-$k%\%?%s$r5-;v$N%X%C%@!<$K2C$($^(B +$B$9(B (@code{gnus-article-add-buttons-to-head})$B!#(B @item W W H @kindex W W H ($B35N,(B) @@ -7350,51 +7339,50 @@ XEmacs $B$G$N%G%#%U%)%k%H$NF0:n$O(B @code{From} $BMs$NA0$K4i$rI=<($7$^$9!#(B $B=|$-$^$9(B (@code{gnus-article-strip-headers-from-body})$B!#(B @item W E l -@kindex W E l $B!J35N,!K(B +@kindex W E l ($B35N,(B) @findex gnus-article-strip-leading-blank-lines -$B5-;v$N;O$a$+$i$N$9$Y$F$N6uGr9T$re$N#3$D$NL?Na$r$9$Y$F9T$$$^$9(B (@code{gnus-article-strip-blank-lines})$B!#(B +$B>e$N;0$D$NL?Na$r$9$Y$F9T$$$^$9(B (@code{gnus-article-strip-blank-lines})$B!#(B @item W E A -@kindex W E A $B!J35N,!K(B +@kindex W E A ($B35N,(B) @findex gnus-article-strip-all-blank-lines $B$9$Y$F$N6uGr9T$rC5n$7$^$9(B -(@code{gnus-article-strip-trailing-space})$B!#(B +$B5-;v$NK\J8$NA4$F$N9T$N:G8e$+$i6uGr$r>C5n$7$^(B +$B$9(B (@code{gnus-article-strip-trailing-space})$B!#(B @end table $B5-;v$N@vBu$r<+F0E*$K$9$k$?$a$NJ}K!$O(B @xref{Customizing Articles} $B$r;2>H(B $B$7$F2<$5$$!#(B - @node Article Buttons @subsection $B5-;v$N%\%?%s(B @cindex buttons @@ -7403,15 +7391,15 @@ XEmacs $B$G$N%G%#%U%)%k%H$NF0:n$O(B @code{From} $BMs$NA0$K4i$rI=<($7$^$9!#(B $B$=$l$K4X$9$k;v$r!"$=$l$i$N;2>H$N>e$G(B @kbd{RET} $B$rBG$D$+!"%^%&%9$N??Cf$N(B $B%\%?%s$r;H$&;v$K$h$C$F!":G>.8B$NEXNO$GH$K(B@dfn{$B%\%?%s(B}$B$rIU$1$^$9!'(B $B$A$c$s$H$7(B -$B$?(B URL$B!"%a!<%k%"%I%l%9!"(BMessage-ID $B$G$9!#$3$l$O(B2$B$D$NJQ?t$K$h$C$F@)8f$5$l(B -$B$F$$$F!"$=$N0l$D$O5-;v$NK\BN$r07$$!"$b$&0l$D$O5-;v$N%X%C%@!<$r07$$$^$9!#(B - +Gnus $B$O%G%#%U%)%k%H$GFCDj$NI8=`$N;2>H$K(B@dfn{$B%\%?%s(B}$B$rIU$1$^$9(B: $B$A$c$s$H(B +$B$7$?(B URL$B!"%a!<%k%"%I%l%9!"(BMessage-ID $B$G$9!#$3$l$OFs$D$NJQ?t$K$h$C$F@)8f(B +$B$5$l$F$$$F!"$=$N0l$D$O5-;v$NK\BN$r07$$!"$b$&0l$D$O5-;v$N%X%C%@!<$r07$$$^(B +$B$9!#(B @table @code @item gnus-button-alist @vindex gnus-button-alist -$B$=$l$>$l$NF~NOMWAG$,$l$NF~NOMWAG$,H$K(B@dfn{$B%\%?%s(B}$B$rIU$1$^$9!'( @item regexp $B$3$N@55,I=8=(B (regexp) $B$K9gCW$9$k$9$Y$F$NJ8$O30It;2>H$G$"$k$H$_$J$5$l$^$9!#(B -$B$3$l$OKd$a9~$^$l$?(B URL $B$K9gCW$9$kE57?E*$J@55,I=8=$G$9(B -@samp{]*\\)>}$B!#(B +$B$3$l$OKd$a9~$^$l$?(B URL $B$K9gCW$9$kE57?E*$J@55,I=8=$G(B +$B$9(B @samp{]*\\)>}$B!#(B @item button-par Gnus $B$O9gCW$7$?$b$N$N$I$NItJ,$,%O%$%i%$%H$5$l$k$N$+$rCN$i$J$1$l$P$J$j$^(B @@ -7438,8 +7426,8 @@ Gnus $B$O9gCW$7$?$b$N$N$I$NItJ,$,%O%$%i%$%H$5$l$k$N$+$rCN$i$J$1$l$P$J$j$^(B $B$3$N4X?t(B (function) $B$O$3$N%\%?%s$r%/%j%C%/$7$?$H$-$K8F$P$l$^$9!#(B @item data-par -@var{button-par} $B$N$h$&$K!"$3$l$OItJ,I=8=$NHV9f$G$9$,!"$3$l$O9gCW$N$I$NIt(B -$BJ,$,(B @var{function} $B$K%G!<%?$H$7$FAw$i$l$k$+$r;XDj$7$^$9!#(B +@var{button-par} $B$N$h$&$K!"$3$l$OItJ,I=8=$NHV9f$G$9$,!"$3$l$O9gCW$N$I$N(B +$BItJ,$,(B @var{function} $B$K%G!<%?$H$7$FAw$i$l$k$+$r;XDj$7$^$9!#(B @end table @@ -7453,7 +7441,7 @@ Gnus $B$O9gCW$7$?$b$N$N$I$NItJ,$,%O%$%i%$%H$5$l$k$N$+$rCN$i$J$1$l$P$J$j$^(B @vindex gnus-header-button-alist $B$=$l$,5-;v$N%X%C%@!<$@$1$KE,MQ$5$l!"$=$l$>$l$NF~NOMWAG$,$I$N%X%C%@!<$K%\(B $B%?%s2=$rE,MQ$9$k$+$r<($9DI2C$NMWAG$,$"$k;v$r=|$-!"$3$l$OB>$NO"A[%j%9%H$H(B -$BF1$8$h$&$J$b$N$G$9!'(B +$BF1$8$h$&$J$b$N$G$9(B: @lisp (HEADER REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR) @@ -7479,35 +7467,34 @@ Gnus $B$O9gCW$7$?$b$N$N$I$NItJ,$,%O%$%i%$%H$5$l$k$N$+$rCN$i$J$1$l$P$J$j$^(B $B5-;v$r<+F0E*$K%\%?%s2=$9$kJ}K!$O(B @xref{Customizing Articles} $B$r;2>H$7$F(B $B2<$5$$!#(B - @node Article Date @subsection $B5-;v$NF|IU(B -$BF|IU$OJ9$$$?;v$NL5$$2?$+JUnA$J;~4VBS(B (timezone) $B$G:n@.$5$l$F$$$k;v$,NI$/$"(B -$B$k$N$G!"5-;v$,Aw$i$l$?$H$-$K2?;~$G$"$C$?$+$rCN$k;v$,$G$-$k$N$OHs>o$KNI$$;v(B -$B$G$7$g$&!#(B +$BF|IU$OJ9$$$?;v$NL5$$2?$+JUnA$J;~4VBS(B (timezone) $B$G:n@.$5$l$F$$$k;v$,NI$/(B +$B$"$k$N$G!"5-;v$,Aw$i$l$?$H$-$K2?;~$G$"$C$?$+$rCN$k;v$,$G$-$k$N$OHs>o$KNI(B +$B$$;v$G$7$g$&!#(B @table @kbd @item W T u -@kindex W T u $B!J35N,!K(B +@kindex W T u ($B35N,(B) @findex gnus-article-date-ut UT ($BJLL>(B GMT, ZULU) $B$GF|IU$rI=<($7$^$9(B (@code{gnus-article-date-ut})$B!#(B @item W T i -@kindex W T i $B!J35N,!K(B +@kindex W T i ($B35N,(B) @findex gnus-article-date-iso-8601 @cindex ISO 8601 -$BF|IU$r9q:]E*$J7A<0!"(BISO 8601 $B$GI=<($7$^$9(B -(@code{gnus-article-date-iso8601})$B!#(B +$BF|IU$r9q:]E*$J7A<0!"(BISO 8601 $B$GI=<($7$^(B +$B$9(B (@code{gnus-article-date-iso8601})$B!#(B @item W T l -@kindex W T l $B!J35N,!K(B +@kindex W T l ($B35N,(B) @findex gnus-article-date-local $BF|IU$r$=$NCO0h$N;~4VBS$GI=<($7$^$9(B (@code{gnus-article-date-local})$B!#(B @item W T s -@kindex W T s $B!J35N,!K(B +@kindex W T s ($B35N,(B) @vindex gnus-article-time-format @findex gnus-article-date-user @findex format-time-string @@ -7517,19 +7504,19 @@ UT ($BJLL>(B GMT, ZULU) $B$GF|IU$rI=<($7$^$9(B (@code{gnus-article-date-ut}) $B0lMw$OJQ?t$N@bL@J8$r8+$F$/$@$5$$!#(B @item W T e -@kindex W T e $B!J35N,!K(B +@kindex W T e ($B35N,(B) @findex gnus-article-date-lapsed @findex gnus-start-date-timer @findex gnus-stop-date-timer -$B5-;v$,Ej9F$5$l$F$+$i:#$^$G$I$l$/$i$$$N;~4V$,7P2a$7$?$+$rI=<($7$^$9(B -(@code{gnus-article-date-lapsed})$B!#$3$s$J$U$&$K!#(B +$B5-;v$,Ej9F$5$l$F$+$i:#$^$G$I$l$/$i$$$N;~4V$,7P2a$7$?$+$rI=<($7$^(B +$B$9(B (@code{gnus-article-date-lapsed})$B!#$3$s$J$U$&$K!#(B @example X-Sent: 9 years, 6 weeks, 4 days, 9 hours, 3 minutes, 28 seconds ago @end example -@code{gnus-article-date-lapsed-new-header} $B$NCM$G$3$N%X%C%@!<$r4{B8$N(B -Date $B$N2<$KDI2C$9$k$+!"CV$-BX$($k$+$r;XDj$7$^$9!#(B +@code{gnus-article-date-lapsed-new-header} $B$NCM$G$3$N%X%C%@!<$r4{B8(B +$B$N(B Date $B$N2<$KDI2C$9$k$+!"CV$-BX$($k$+$r;XDj$7$^$9!#(B gnus $B$G%a!<%k$rFI$`$3$H$NM-Mx$JE@$O!"C1=c$J%P%0$rAG@2$i$7$$IT>rM}$KCV$-(B $B49$($k$3$H$G$9!#(B @@ -7541,47 +7528,46 @@ gnus $B$G%a!<%k$rFI$`$3$H$NM-Mx$JE@$O!"C1=c$J%P%0$rAG@2$i$7$$IT>rM}$KCV$-(B @end lisp $B$r$"$J$?$N(B @file{.gnus.el} $B%U%!%$%k$KF~$l$k$+!"2?$+$N%U%C%/$G$NJQ494X?t$r;H$C$F$$$F!"$=$l$,40A4$K4V0c$C$?;v$r$7$F$$$k$N$G$O$J$$(B -$B$+$H?4G[$7$F$$$k$H$-$KLr$KN)$A$^$9!#Nc$($P!"5-;v$,(B 1854 $BG/$KEj9F$5$l$?$H$J$C(B -$B$F$$$k$H$7$^$7$g$&!#$7$+$7!"$=$N$h$&$J;v$O(B@emph{$B40A4$K(B}$BIT2DG=$G$9!#;d$,(B -$B?.MQ$G$-$^$;$s$+!)(B *$B$/$9$/$9(B($B>P(B)* +$BK\Mh$NF|IU$rI=<($7$^$9(B (@code{gnus-article-date-original})$B!#$3$l$O$"$J$?(B +$B$,IaDL$OB>$NJQ494X?t$r;H$C$F$$$F!"$=$l$,40A4$K4V0c$C$?;v$r$7$F$$$k$N$G$O(B +$B$J$$$+$H?4G[$7$F$$$k$H$-$KLr$KN)$A$^$9!#Nc$($P!"5-;v$,(B 1854$BG/$KEj9F$5$l(B +$B$?$H$J$C$F$$$k$H$7$^$7$g$&!#$7$+$7!"$=$N$h$&$J;v$O(B @emph{$B40A4$K(B }$BIT2DG=(B +$B$G$9!#;d$,?.MQ$G$-$^$;$s$+(B? *$B$/$9$/$9(B($B>P(B)* @end table $B<+F0E*$K9%$`=q<0$GF|IU$rI=<($9$kJ}K!$O(B @xref{Customizing Articles} $B$r;2(B $B>H$7$F2<$5$$!#(B - @node Article Signature @subsection $B5-;v$N=pL>(B @cindex signatures @cindex article signature @vindex gnus-signature-separator -$B$=$l$>$l$N5-;v$O(B2$B$D$NItJ,$KJ,$1$i$l$^$9!=!=8+=P$7(B (header) $B$HK\BN(B -(body) $B$G$9!#K\BN$O=pL>ItJ,$HJ8>OItJ,$KJ,$1$i$l$^$9!#$I$l$,=pL>$H$_$J$5$l(B -$B$k$+$r7h$a$kJQ?t$O(B @code{gnus-signature-separator} $B$G$9!#$3$l$OIaDL$O(B -son-of-RFC 1036 $B$G;X<($5$l$F$$$kI8=`$N(B @samp{^-- $} $B$G$9!#$7$+$7!"B?$/$N?M(B -$B$,I8=`$G$J$$=pL>J,N%$rMQ$$$^$9$N$G!"$3$NJQ?t$O0l$D0l$D;n$5$l$k!"@55,I=8=$N(B -$B%j%9%H$G$"$k$3$H$b$G$-$^$9!#!JC5:w$OK\BN$N:G8e$+$i;O$a$X$H$J$5$l$^$9!#!K$h(B -$B$/$"$j$=$&$JCM$O!'(B +$B$=$l$>$l$N5-;v$OFs$D$NItJ,$KJ,$1$i$l$^$9!=!=8+=P$7(B (header) $B$HK\(B +$BBN(B (body) $B$G$9!#K\BN$O=pL>ItJ,$HJ8>OItJ,$KJ,$1$i$l$^$9!#$I$l$,=pL>$H$_$J(B +$B$5$l$k$+$r7h$a$kJQ?t$O(B @code{gnus-signature-separator} $B$G$9!#$3$l$OIaDL(B +$B$O(B son-of-RFC 1036 $B$G;X<($5$l$F$$$kI8=`$N(B @samp{^-- $} $B$G$9!#$7$+$7!"B?(B +$B$/$N?M$,I8=`$G$J$$=pL>J,N%$rMQ$$$^$9$N$G!"$3$NJQ?t$O0l$D0l$D;n$5$l$k!"@5(B +$B5,I=8=$N%j%9%H$G$"$k$3$H$b$G$-$^$9!#(B($BC5:w$OK\BN$N:G8e$+$i;O$a$X$H$J$5$l(B +$B$^$9!#(B) $B$h$/$"$j$=$&$JCM$O(B: @lisp (setq gnus-signature-separator '("^-- $" ; $BI8=`(B "^-- *$" ; $BIaDL$N2u$7J}(B "^-------*$" ; $BB?$/$N?M$OD9!$O$3$N@0?t$h$j!JJ8;z$G!KD9$/$J$C$F$$$F$O$$$1$^$;$s!#(B +$B$3$l$,@0?t$G$"$l$P!"=pL>$O$3$N@0?t$h$j(B ($BJ8;z$G(B) $BD9$/$J$C$F$$$F$O$$$1$^$;(B +$B$s!#(B @item -$B$3$l$,IbF0>.?tE@?t$G$"$l$P!"=pL>$O$=$N?t;z$h$j!J9T$G!KD9$/$J$C$F$$$F$O$$$1(B -$B$^$;$s!#(B +$B$3$l$,IbF0>.?tE@?t$G$"$l$P!"=pL>$O$=$N?t;z$h$j(B ($B9T$G(B) $BD9$/$J$C$F$$$F$O$$(B +$B$1$^$;$s!#(B @item $B$3$l$,4X?t$G$"$l$P!"$=$N4X?t$O0z?t$J$7$G8F$P$l!"$=$l$,(B @code{nil} $B$rJV$;(B $B$P!"%P%C%U%!$K$O=pL>$,$"$j$^$;$s!#(B @@ -7604,17 +7591,16 @@ son-of-RFC 1036 $B$G;X<($5$l$F$$$kI8=`$N(B @samp{^-- $} $B$G$9!#$7$+$7!"B?$/$ $B$P!"$=$NEv$NJ8;zNs$O=pL>$G$O$"$j$^$;$s!#(B @end enumerate -$B$3$NJQ?t$OMWAG$,>e$K5s$2$i$l$?7?$N%j%9%H$G$"$k;v$b$G$-$^$9!#$3$l$ONc$G$9!'(B +$B$3$NJQ?t$OMWAG$,>e$K5s$2$i$l$?7?$N%j%9%H$G$"$k;v$b$G$-$^$9!#$3$l$ONc$G$9(B: @lisp (setq gnus-signature-limit '(200.0 "^---*Forwarded article")) @end lisp -$B$3$l$O=pL>J,N%J*$N8e$K(B 200 $B$rD6$($k9T$+!"=pL>J,N%J*$N8e$NJ8>O$,@55,I=8=(B -@samp{^---*Forwarded article} $B$K9gCW$9$l$P!"7k6I$=$l$O=pL>$G$O$J$$$H$$$&;v(B -$B$G$9!#(B - +$B$3$l$O=pL>J,N%J*$N8e$K(B 200 $B$rD6$($k9T$+!"=pL>J,N%J*$N8e$NJ8>O$,@55,I=(B +$B8=(B @samp{^---*Forwarded article} $B$K9gCW$9$l$P!"7k6I$=$l$O=pL>$G$O$J$$$H(B +$B$$$&;v$G$9!#(B @node Article Miscellania @subsection $B5-;v$$$m$$$m(B @@ -7623,12 +7609,11 @@ son-of-RFC 1036 $B$G;X<($5$l$F$$$kI8=`$N(B @samp{^-- $} $B$G$9!#$7$+$7!"B?$/$ @item A t @kindex A t (Summary) @findex gnus-article-babel -$B5-;v$r$"$k8@8l$+$iJL$N$b$N$XJQ49$7$^$9!#(B -(@code{gnus-article-babel}). +$B5-;v$r$"$k8@8l$+$iJL$N$b$N$XJQ49$7$^(B +$B$9(B (@code{gnus-article-babel})$B!#(B @end table - @c node `MIME Commands' and node `Charsets' is stripped, which is @c pGnus specific. @@ -7640,16 +7625,15 @@ son-of-RFC 1036 $B$G;X<($5$l$F$$$kI8=`$N(B @samp{^-- $} $B$G$9!#$7$+$7!"B?$/$ @item A P @cindex PostScript @cindex printing -@kindex A P $B!J35N,!K(B +@kindex A P ($B35N,(B) @vindex gnus-ps-print-article @findex gnus-summary-print-article -$B5-;v%P%C%U%!$N%]%9%H%9%/%j%W%H(B (PostScript) $B%$%a!<%8$r:n@.$7$F0u:~$7$^$9(B -(@code{gnus-summary-print-article})$B!#(B@code{gnus-ps-print-hook} $B$,%P%C%U%!(B -$B$r0u:~$9$kD>A0$KA0$KC5n$5$l$F$$$J$$>e!"8=:_$N5-;v$N(B -@code{References} $B$,$V$A2u$5$l$F$$$J$1$l$P!"$?$@!"(B@kbd{^} $B$+(B @kbd{A r} -$B$r2!$;$PNI$$$@$1$G$9(B (@code{gnus-summary-refer-parent-article})$B!#$b$7A4(B -$B$F$,>eC5n$5$l$F$$$J$$>e!"8=:_$N5-(B +$B;v$N(B @code{References} $B$,$V$A2u$5$l$F$$$J$1$l$P!"$?$@!"(B +@kbd{^} $B$+(B @kbd{A r} $B$r2!$;$PNI$$$@$1$G(B +$B$9(B (@code{gnus-summary-refer-parent-article})$B!#$b$7A4$F$,>e/$7;~4V$,$+$+(B -$B$j$^$9!#$b$7!"$3$l$r$7$P$7$P9T$&$N$G$"$l$P!"(B +@kindex A T ($B35N,(B) +$B8=:_$N5-;v$,=P$F$-$F$$$k%9%l%C%I$N!"40A4$J%9%l%C%I$rI=<($7$^(B +$B$9(B (@code{gnus-summary-refer-thread})$B!#$3$NL?Na$OF0:n$9$k$?$a$K8=:_$N%0(B +$B%k!<%W$N$9$Y$F$N%X%C%@!<$r/$7;~4V$,(B +$B$+$+$j$^$9!#$b$7!"$3$l$r$7$P$7$P9T$&$N$G$"$l$P!"(B @code{gnus-fetch-old-headers} $B$r(B @code{invisible} $B$K@_Dj$9$k$3$H$r9M$($?(B $B$[$&$,NI$$$G$7$g$&(B (@pxref{Filling In Threads})$B!#$3$l$OIaDL$O;k3PE*$J8z(B $B2L$O$"$j$^$;$s$,!"$3$NL?Na$NF0:n$r$+$J$jB.$/$9$k$G$7$g$&!#$b$A$m$s!"%0%k!<(B $B%W$KF~$k$N$O>/$7CY$/$J$j$^$9!#(B @vindex gnus-refer-thread-limit -$BJQ?t(B @code{gnus-refer-thread-limit} $B$O$3$NL?Na$re=q$-$9$k;v$,$G$-$^$9!#(B +$BJQ?t(B @code{gnus-refer-thread-limit} $B$O$3$NL?Na$re=q$-$9$k;v$,$G$-$^$9!#(B -@item M-^ $B!J35N,!K(B +@item M-^ ($B35N,(B) @findex gnus-summary-refer-article -@kindex M-^ $B!J35N,!K(B +@kindex M-^ ($B35N,(B) @cindex Message-ID @cindex fetching by Message-ID $B$I$N%0%k!<%W$KB0$7$F$$$k$+$K4X$o$i$:!"G$0U$N5-;v$r(B @sc{nntp} $B%5!<%P!<$K(B -$B?R$M$k;v$,$G$-$^$9!#(B@kbd{M-^} (@code{gnus-summary-refer-article}) $B$O(B -@code{Message-ID}$B!"$=$l$O$"$ND9$/!"$J$+$J$+FI$`;v$N$G$-$J$$(B -@samp{<38o6up$6f2@@hymir.ifi.uio.no>} $B$N$h$&$J;2>H$r$"$J$?$K?R$M$^$9!#(B +$B?R$M$k;v$,$G$-$^$9!#(B +@kbd{M-^} (@code{gnus-summary-refer-article}) $B$O(B @code{Message-ID}$B!"$=$l(B +$B$O$"$ND9$/!"$J$+$J$+FI$`;v$N$G$-$J(B +$B$$(B @samp{<38o6up$6f2@@hymir.ifi.uio.no>} $B$N$h$&$J;2>H$r$"$J$?$K?R$M$^$9!#(B $B$"$J$?$O$9$Y$F$r@53N$KBG$A9~$^$J$1$l$P$J$j$^$;$s!#;DG0$J$,$i!"$"$$$^$$$J(B $B8!:w$O$G$-$J$$$N$G$9!#(B @end table -$B%K%e!<%9$G$J$$A*BrJ}K!$+$i(B @code{Message-ID} $B$Ge=q$-$9$k;v$,$G$-(B -$B$^$9!#(B +$B%K%e!<%9$G$J$$A*BrJ}K!$+$i(B @code{Message-ID} $B$Ge=q$-$9$k;v$,(B +$B$G$-$^$9!#(B @vindex gnus-refer-article-method -$B$b$7$"$J$?$NFI$s$G$$$k%0%k!<%W$,(B @code{Message-ID} $B$G$Nl9g!"(B -@code{gnus-refer-article-method} $B$r(B @sc{nntp} $B$K@_Dj$9$k;v$,$G$-$^$9!#$*$=(B -$B$i$/!"$"$J$?$,2qOC$7$F$$$k(B @sc{nntp} $B%5!<%P!<$,$"$J$?$NFI$s$G$$$k%9%W!<%k(B -$B$r99?7$7$F$$$k$HHs>o$KNI$$$G$7$g$&!#$7$+$7!"$=$l$O$I$&$7$F$bI,MW$J$o$1$G$O(B -$B$"$j$^$;$s!#(B +$B$b$7$"$J$?$NFI$s$G$$$k%0%k!<%W$,(B @code{Message-ID} $B$G$Nl9g!"(B +@code{gnus-refer-article-method} $B$r(B @sc{nntp} $B$K@_Dj$9$k;v$,$G$-$^$9!#$*(B +$B$=$i$/!"$"$J$?$,2qOC$7$F$$$k(B @sc{nntp} $B%5!<%P!<$,$"$J$?$NFI$s$G$$$k%9%W!<(B +$B%k$r99?7$7$F$$$k$HHs>o$KNI$$$G$7$g$&!#$7$+$7!"$=$l$O$I$&$7$F$bI,MW$J$o$1(B +$B$G$O$"$j$^$;$s!#(B $B$=$l$OA*BrJ}K!$N%j%9%H$G$"$k$3$H$b$G$-!"FCJL$J%7%s%\%k(B @code{current} $B$G(B $B$"$k$3$H$b$G$-$^$9!#8e$N$b$N$O;~4V$,$+$+$j$9$.$^$9!#!K(B@code{nnmh} -$B$G$OA4$/IT2DG=$G$9!#(B +$B$"$^$jM%2m$JJ}K!$G$d$C$F$$$k$o$1$G$O$"$j$^$;$s!#(B +@code{nnmbox} $B$H(B @code{nnbabyl} $B$O$I$N%0%k!<%W$+$i$N5-;v$b0LCV$rF@$k$3$H(B +$B$,$G$-$^$9$,!"(B@code{nnml} $B$H(B @code{nnfolder} $B$O8=:_$N%0%k!<%W$KEj9F$7$?(B +$B5-;v$N0LCV$7$+F@$k;v$,$G$-$^$;$s!#$=$NB>$N$b$N$O;~4V$,$+$+$j$9$.$^$9!#(B) +@code{nnmh} $B$G$OA4$/IT2DG=$G$9!#(B @node Alternative Approaches @section $BBeBX/$7$NA*Br;h$rM?$($F$"$j$^$9!#(B @menu -* Pick and Read:: $B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`(B -* Binary Groups:: $B$9$Y$F$N5-;v$r<+F0(B-$BI|9f2=$9$k(B +* Pick and Read:: $B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`(B +* Binary Groups:: $B$9$Y$F$N5-;v$r<+F0(B-$BI|9f2=$9$k(B @end menu - @node Pick and Read @subsection $BA*$s$GFI$`(B @cindex pick and read -$B$$$/$D$+$N%K%e!<%9%j!<%@!/$7(B -$B$N%W%m%;%90uL?Na$,#1BG80L?Na$K$J$j!"35N,%P%C%U%!$X@Z$jBX$($k$?$a$NDI2CL?Na(B -$B$r(B1$B$DDs6!$7$^$9!#(B +@code{gnus-pick-mode} $B$G$9!#$3$l$O4pK\E*$K$O4JC1$K0u$rIU$1$i$l$k$h$&$K>/(B +$B$7$N%W%m%;%90uL?Na$,0lBG80L?Na$K$J$j!"35N,%P%C%U%!$X@Z$jBX$($k$?$a$NDI2C(B +$BL?Na$r0l$DDs6!$7$^$9!#(B -$B$3$l$,(B pick mode $B$r;H$C$?$H$-$K;HMQ2DG=$J%-!<$G$9!'(B +$B$3$l$,(B pick mode $B$r;H$C$?$H$-$K;HMQ2DG=$J%-!<$G$9(B: @table @kbd @item . -@kindex . $B!JA*Br!K(B +@kindex . ($BA*Br(B) @findex gnus-pick-article-or-thread -$B8=:_$N9T$N5-;v$+%9%l%C%I$rA*Br$7$^$9(B -(@code{gnus-pickd-article-or-thread})$B!#$b$7JQ?t(B -@code{gnus-thread-hide-subtree} $B$,(B true $B$G$"$l$P!"$3$N%-!<$O%9%l%C%I$N:G(B -$B=i$N5-;v$G;H$o$l$?$H$-$O%9%l%C%IA4BN$rA*Br$7$^$9!#$=$&$G$J$1$l$P!"$=$l$O(B -$B$=$N5-;v$@$1$rA*Br$7$^$9!#$b$7?tCM@\F,0z?t$rM?$($i$l$l$P$=$N%9%l%C%I$+5-(B -$B;v$X$H@8$s$G$$$-!"$=$l$rA*Br$7$^$9!#(B ($B9T?t$OIaDL$O35N,A*Br9T$N:G=i$KI=<((B -$B$5$l$F$$$^$9!#(B) +$B8=:_$N9T$N5-;v$+%9%l%C%I$rA*Br$7$^(B +$B$9(B (@code{gnus-pickd-article-or-thread})$B!#$b$7JQ(B +$B?t(B @code{gnus-thread-hide-subtree} $B$,(B true $B$G$"$l$P!"$3$N%-!<$O%9%l%C%I(B +$B$N:G=i$N5-;v$G;H$o$l$?$H$-$O%9%l%C%IA4BN$rA*Br$7$^$9!#$=$&$G$J$1$l$P!"$=(B +$B$l$O$=$N5-;v$@$1$rA*Br$7$^$9!#$b$7?tCM@\F,0z?t$rM?$($i$l$l$P$=$N%9%l%C%I(B +$B$+5-;v$X$H@8$s$G$$$-!"$=$l$rA*Br$7$^$9!#(B($B9T?t$OIaDL$O35N,A*Br9T$N:G=i$K(B +$BI=<($5$l$F$$$^$9!#(B) @item SPACE -@kindex SPACE$B!JA*Br!K(B +@kindex SPACE ($BA*Br(B) @findex gnus-pick-next-page $B35N,%P%C%U%!$r0l%Z!<%8l9g$O$=$l$O5-;v$@$1$rL$A*Br$K$7$^$9!#$=$N9T$K$"$k%9%l%C%I$+5-;v$rL$A*Br$K$9$k$?$a$K$3$N%-!<$K?tCM@\F,0z?t$rM?$($k;v$,$G$-$^$9!#(B +$B%9%l%C%I$+5-;v$rL$A*Br$K$7$^(B +$B$9(B (@code{gnus-pick-unmark-article-or-thread})$B!#JQ(B +$B?t(B @code{gnus-thread-hide-subtree} $B$,(B true $B$G$"$l$P!"$3$N%-!<$O%9%l%C%I(B +$B$N:G=i$G;H$o$l$l$P%9%l%C%I$rL$A*Br$K$7$^$9!#$=$&$G$J$$>l9g$O$=$l$O5-;v$@(B +$B$1$rL$A*Br$K$7$^$9!#$=$N9T$K$"$k%9%l%C%I$+5-;v$rL$A*Br$K$9$k$?$a$K$3$N%-!<(B +$B$K?tCM@\F,0z?t$rM?$($k;v$,$G$-$^$9!#(B @item RET -@kindex RET $B!JA*Br!K(B +@kindex RET ($BA*Br(B) @findex gnus-pick-start-reading @vindex gnus-pick-display-summary $BA*Br$5$l$?5-;v$rFI$_;O$a$^$9(B (@code{gnus-pick-start-reading})$B!#@\F,0z?t(B @@ -7859,11 +7848,11 @@ Gnus $B$O$3$l$r$9$k$?$a$N35N,%P%C%U%!%^%$%J!<%b!<%I$rDs6!$7$^$9!=!=(B @end table $BA4$F$NIaDL$N35N,%b!<%IL?Na$OA*Br%b!<%I(B (pick-mode)$B$G$b;HMQ2DG=$G$9$,!"(B -@kbd{u} $B$ONc30$G$9!#$7$+$7!"F1$84X?t(B -@code{gnus-summary-tick-article-forward} $B$K3d$jEv$F$i$l$F$$$k(B @kbd{!} $B$r(B -$B;H$&;v$,$G$-$^$9!#(B +@kbd{u} $B$ONc30$G$9!#$7$+$7!"F1$84X(B +$B?t(B @code{gnus-summary-tick-article-forward} $B$K3d$jEv$F$i$l$F$$(B +$B$k(B @kbd{!} $B$r;H$&;v$,$G$-$^$9!#(B -$B$3$l$,NI$$9M$($@$H;W$&$N$G$"$l$P!"/$70c$$$^$9!#$=$l$>$l$N9T$N(B -$B:G=i$K9T?t$,I=<($5$l$^$9!#(B Pick $B%b!<%I$N9T$NMM<0$OJQ?t(B -@code{gnus-summary-pick-line-format} $B$G@)8f$5$l$^$9(B (@pxref{Formatting -Variables})$B!#$3$l$O(B @code{gnus-summary-line-format} $B$HF1$8MM<0;XDj$r/$7$"$j$^$9!'(B +$B$b$A$m$s!"LZI=<($r%+%9%?%^%$%:$9$kJQ?t$,>/$7$"$j$^$9(B: @table @code @item gnus-tree-mode-hook @@ -7933,13 +7921,13 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= @item gnus-tree-line-format @vindex gnus-tree-line-format -$BLZ$N@a$N$?$a$N%U%)!<%^%C%HJ8;zNs$G$9!#$G$b$3$NL>A0$O>/$78m$C$?L>>N$G$9!=!=(B -$B$=$l$O9T$G$O$J$/!"$?$@@a$rDj5A$9$k$@$1$G$9!#%G%#%U%)%k%H$NCM$O(B -@samp{%(%[%3,3n%]%)} $B$G!"$=$l$OEj9FA0$N:G=i$N#3J8;z$rI=<($7$^$9!#$9(B -$B$Y$F$N@a$,F1$8D9$5$G$"$k$N$O=EMW$G$9$N$G!"(B@samp{%4,4n} $B$N$h$&$J;XDj$r(B -@emph{$B;H$o$J$1$l$P$J$i$J$$(B} $B$N$G$9!#(B +$BLZ$N@a$N$?$a$N%U%)!<%^%C%HJ8;zNs$G$9!#$G$b$3$NL>A0$O>/$78m$C$?L>>N$G(B +$B$9!=!=$=$l$O9T$G$O$J$/!"$?$@@a$rDj5A$9$k$@$1$G$9!#%G%#%U%)%k%H$NCM(B +$B$O(B @samp{%(%[%3,3n%]%)} $B$G!"$=$l$OEj9FA0$N:G=i$N;0J8;z$rI=<($7$^$9!#(B +$B$9$Y$F$N@a$,F1$8D9$5$G$"$k$N$O=EMW$G$9$N$G!"(B@samp{%4,4n} $B$N$h$&$J;XDj(B +$B$r(B @emph{$B;H$o$J$1$l$P$J$i$J$$(B} $B$N$G$9!#(B -$BM-8z$J;XDj$O!'(B +$BM-8z$J;XDj$O(B: @table @samp @item n @@ -7958,15 +7946,15 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= @xref{Formatting Variables}$B!#(B -$BI=<($K4XO"$7$?JQ?t$O!'(B +$BI=<($K4XO"$7$?JQ?t$O(B: @table @code @item gnus-tree-brackets @vindex gnus-tree-brackets -$B$3$l$O!XK\Ev$N!Y5-;v$H!X$^$P$i5-;v!Y$K0c$$$rIU$1$k$?$a$K;H$o$l$^$9!#(B -$BMM<0$O(B @code{((@var{$BK\Ev$N3+(B} . @var{$BK\Ev$NJD(B}) (@var{$B$^$P$i3+(B} . -@var{$B$^$P$iJD(B}) (@var{$B56$N3+(B} . @var{$B56$NJD(B}))} $B$H$J$C$F$$$F!"%G%#%U%)(B -$B%k%H$O(B @code{((?[ . ?]) (?( . ?)) (?@{ . ?@}) (?< . ?>))} $B$G$9!#(B +$B$3$l$O!XK\Ev$N!Y5-;v$H!X$^$P$i5-;v!Y$K0c$$$rIU$1$k$?$a$K;H$o$l$^$9!#MM<0(B +$B$O(B @code{((@var{$BK\Ev$N3+(B} . @var{$BK\Ev$NJD(B}) (@var{$B$^$P$i3+(B} . @var{$B$^$P$iJD(B}) (@var{$B56$N3+(B} . @var{$B56$NJD(B}))} $B$H(B +$B$J$C$F$$$F!"%G%#%U%)%k%H(B +$B$O(B @code{((?[ . ?]) (?( . ?)) (?@{ . ?@}) (?< . ?>))} $B$G$9!#(B @item gnus-tree-parent-child-edges @vindex gnus-tree-parent-child-edges @@ -7989,13 +7977,13 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= @vindex gnus-generate-tree-function @findex gnus-generate-horizontal-tree @findex gnus-generate-vertical-tree -$BLZ%P%C%U%!(B (vertical tree buffer) $B$GI=<($5$l$?$b$N$G$9!'(B +$BF1$8%9%l%C%I$,?bD>LZ%P%C%U%!(B (vertical tree buffer) $B$GI=<($5$l$?$b$N$G$9(B: @example @{***@} @@ -8024,7 +8012,7 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= $B$b$7?eJ?LZ$r;H$C$F$$$k$N$J$i!"35N,%P%C%U%!$GLZ$rNY$j9g$o$;$GI=<($G$-$l$P(B $B4r$7$$$G$7$g$&!#C$(5n$k(B -$B$H$$$&;v$G$9!#(B +$B%0%k!<%W$N$9$Y$F$N4|8B:o=|2DG=$J5-;v:o=|$7$^(B +$B$9(B (@code{gnus-summay-expire-articles-now})$B!#$3$l$O8=:_$N%0%k!<%W$N3:Ev(B +$B$9$k(B @strong{$BA4$F(B}$B$N4|8B:o=|5-;v$O1J1s$K6u$NBg$-$J(B @file{/dev/null} $B$X>C(B +$B$(5n$k$H$$$&;v$G$9!#(B @item B DEL -@kindex B DEL $B!J35N,!K(B +@kindex B DEL ($B35N,(B) @findex gnus-summary-delete-article @c @icon{gnus-summary-mail-delete} $B%a!<%k5-;v$r:o=|$7$^$9!#$3$l$O!X$"$J$?$N%G%#%9%/$+$i:#$+$i1J1s$K:o=|$7$F!"(B -$BFsEY$HLa$i$J$$!Y$N!X:o=|!Y$G$9!#Cm0U$7$F;H$C$F$/$@$5$$(B -(@code{gnus-summary-delete-article})$B!#(B +$BFsEY$HLa$i$J$$!Y$N!X:o=|!Y$G$9!#Cm0U$7$F;H$C$F$/$@$5(B +$B$$(B (@code{gnus-summary-delete-article})$B!#(B @item B m -@kindex B m $B!J35N,!K(B +@kindex B m ($B35N,(B) @cindex move mail @findex gnus-summary-move-article @vindex gnus-preserve-marks -$B$"$k%a!<%k%0%k!<%W$+$iJL$N$H$3$m$X5-;v$r0\F0$7$^$9(B -(@code{gnus-summary-move-article})$B!#(B@var{gnus-preserve-marks} $B$NCM$,(B nil -$B$G$O$J$$$J$i$P(B ($B$3$l$,=i4|CM$G$9$,(B)$B!"%^!<%/$OJ]B8$5$l$^$9!#(B +$B$"$k%a!<%k%0%k!<%W$+$iJL$N$H$3$m$X5-;v$r0\F0$7$^(B +$B$9(B (@code{gnus-summary-move-article})$B!#(B@var{gnus-preserve-marks} $B$NCM(B +$B$,(B nil $B$G$O$J$$$J$i$P(B ($B$3$l$,=i4|CM$G$9$,(B)$B!"%^!<%/$OJ]B8$5$l$^$9!#(B @item B c -@kindex B c $B!J35N,!K(B +@kindex B c ($B35N,(B) @cindex copy mail @findex gnus-summary-copy-article @c @icon{gnus-summary-mail-copy} -$B$"$k%0%k!<%W!J%a!<%k%0%k!<%W$dB>$N$b$N!K$+$i%a!<%k%0%k!<%W$K5-;v$rJ#@=$7(B +$B$"$k%0%k!<%W(B ($B%a!<%k%0%k!<%W$dB>$N$b$N(B) $B$+$i%a!<%k%0%k!<%W$K5-;v$rJ#@=$7(B $B$^$9(B (@code{gnus-summary-copy-article})$B!#(B@var{gnus-preserve-marks} $B$NCM(B $B$,(B nil $B$G$O$J$$$J$i$P(B ($B$3$l$,=i4|CM$G$9$,(B)$B!"%^!<%/$OJ]B8$5$l$^$9!#(B @item B B -@kindex B B $B!J35N,!K(B +@kindex B B ($B35N,(B) @cindex crosspost mail @findex gnus-summary-crosspost-article -$B8=:_$N5-;v$rB>$N%0%k!<%W$K%/%m%9%]%9%H$7$^$9(B -(@code{gnus-summary-crosspost-article})$B!#$3$l$OB>$N%0%k!<%W5-;v$N?7$7$$J#(B -$B@=$r:n@.$7!"5-;v$N(B Xref $BMs$bE,@Z$K99?7$5$l$^$9!#(B +$B8=:_$N5-;v$rB>$N%0%k!<%W$K%/%m%9%]%9%H$7$^(B +$B$9(B (@code{gnus-summary-crosspost-article})$B!#$3$l$OB>$N%0%k!<%W5-;v$N?7$7(B +$B$$J#@=$r:n@.$7!"5-;v$N(B Xref $BMs$bE,@Z$K99?7$5$l$^$9!#(B @item B i -@kindex B i $B!J35N,!K(B +@kindex B i ($B35N,(B) @findex gnus-summary-import-article -$BG$0U$N%U%!%$%k$r8=:_$N%a!<%k%0%k!<%W$K$H!"(B@code{From} $BMs(B -$B$H(B @code{Subject} $BMs$NF~NO$rB%$5$l$^$9!#(B +$BG$0U$N%U%!%$%k$r8=:_$N%a!<%k%0%k!<%W$K$H!"(B +@code{From} $BMs$H(B @code{Subject} $BMs$NF~NO$rB%$5$l$^$9!#(B @item B r -@kindex B r $B!J35N,!K(B +@kindex B r ($B35N,(B) @findex gnus-summary-respool-article $B%a!<%k5-;v$r%9%W!<%k$7D>$7$^$9(B (@code{gnus-summary-move-article})$B!#(B @code{gnus-summary-respool-default-method} $B$,:F%9%W!<%k$9$k$H$-$N%G%#%U%)(B @@ -8121,21 +8108,21 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= @item B w @itemx e -@kindex B w $B!J35N,!K(B -@kindex e $B!J35N,!K(B +@kindex B w ($B35N,(B) +@kindex e ($B35N,(B) @findex gnus-summary-edit-article -@kindex C-c C-c $B!J5-;v!K(B +@kindex C-c C-c ($B5-;v(B) $B8=:_$N5-;v$rJT=8$7$^$9(B (@code{gnus-summary-edit-article})$B!#JT=8$r=*N;$7(B -$B$FJQ99$r1J1s$K$9$k$?$a$K!"(B@kbd{C-c C-c} $B$rBG$A$^$9!#$b$7L?Na(B -@kbd{C-c C-c} $B$K?tCM@\F,0z?t$rM?$($k$H!"(Bgnus $B$O5-;v$r:F%O%$%i%$%H$7$^$;(B -$B$s!#(B +$B$FJQ99$r1J1s$K$9$k$?$a$K!"(B@kbd{C-c C-c} $B$rBG$A$^$9!#$b$7L?(B +$BNa(B @kbd{C-c C-c} $B$K?tCM@\F,0z?t$rM?$($k$H!"(Bgnus $B$O5-;v$r:F%O%$%i%$%H$7$^(B +$B$;$s!#(B @item B q -@kindex B q $B!J35N,!K(B +@kindex B q ($B35N,(B) @findex gnus-summary-respool-query $B$b$75-;v$r:F%9%W!<%k$7$?$$$H$-$O!":F%9%W!<%k$r$9$kA0$K$I$N%0%k!<%W$K5-;v(B -$B$,0\$k$+$K6=L#$,$"$k$G$7$g$&!#$3$NL?Na$G$=$l$,$o$+$j$^$9(B -(@code{gnus-summary-respool-query})$B!#(B +$B$,0\$k$+$K6=L#$,$"$k$G$7$g$&!#$3$NL?Na$G$=$l$,$o$+$j$^(B +$B$9(B (@code{gnus-summary-respool-query})$B!#(B @item B t @kindex B t ($B35N,(B) @@ -8144,27 +8131,30 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= $B$7$=$l$,$"$l$PI=<($7$^$9(B (@code{gnus-summary-respool-trace})$B!#(B @item B p -@kindex B p $B!J35N,!K(B +@kindex B p ($B35N,(B) @findex gnus-summary-article-posted-p -$B0lIt$N?M$O$"$J$?$NEj9F$X$N%U%)%m!<%"%C%W$r$9$k$H$-$K!"!X?F@Z$J!YJ#@=$rAw$k(B -$B798~$,$"$j$^$9!#$3$l$i$OIaDL$O$=$3$K(B @code{Newsgroups} $BMs$,IU$$$F$$$k$N$G(B -$B$9$,!"$$$D$b$=$&$G$"$k$H$O8B$j$^$;$s!#$3$NL?Na(B -(@code{gnus-summary-article-posted-p}) $B$O8=:_$N5-;v$r$"$J$?$N%K%e!<%9%5!<(B -$B%P!<$+$i!J$H$$$&$h$j$O!"$`$7$m(B @code{gnus-refer-article-method} $B$d(B -@code{gnus-select-method} $B$+$i!K$r;H$&$N$KBP$7(B +$B$F(B @code{gnus-move-split-methods} $B$O%0%k!<%WL>$r;H$&$3$H$KCm0U$7$F2<$5(B +$B$$!#(B) @lisp (setq gnus-move-split-methods @@ -8173,15 +8163,14 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= (".*" "nnml:misc"))) @end lisp - @node Various Summary Stuff @section $B$$$m$$$m$J35N,$NJ*7o(B @menu -* Summary Group Information:: $B>pJs;X8~$NL?Na!#(B -* Searching for Articles:: $BJ#?t5-;vL?Na!#(B -* Summary Generation Commands:: $B35N,%P%C%U%!$N!J:F!K:n@.!#(B -* Really Various Summary Commands:: $B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na!#(B +* Summary Group Information:: $B>pJs;X8~$NL?Na(B +* Searching for Articles:: $BJ#?t5-;vL?Na(B +* Summary Generation Commands:: $B35N,%P%C%U%!$N(B ($B:F(B) $B:n@.(B +* Really Various Summary Commands:: $B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na(B @end menu @table @code @@ -8208,14 +8197,14 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= @vindex gnus-summary-ignore-duplicates @item gnus-summary-ignore-duplicates -Gnus $B$,F1$8(B @code{Message-ID} $B$r;}$D(B2$B$D$N5-;v$rH/8+$7$?$H$-$O!"2?$+;W$$@Z$C(B -$B$?;v$r$7$J$1$l$P$J$j$^$;$s!#JL$N5-;v$,F1$8(B @code{Message-ID} $B$r;}$D;v$O5v(B -$B$5$l$F$$$^$;$s$,!"$=$l$O2?$i$+$N=P=j$+$i%a!<%k$rFI$s$G$$$k$H$-$K5/$3$k$+$b(B -$B$7$l$^$;$s!#(BGnus $B$O$3$NJQ?t$K$h$C$F2?$,5/$3$k$+$r%+%9%?%^%$%:$G$-$k$h$&$K(B -$B$J$C$F$$$^$9!#$b$7$=$l$,(B @code{nil}$B!J$3$l$,%G%#%U%)%k%H$G$9!K$G$"$l$P!"(B -gnus $B$O(B @code{Message-ID} $B$rIU$1BX$($F!JI=<($N$?$a$@$1$K!K5-;v$rB>$N5-;v$H(B -$BF1$8$h$&$KI=<($7$^$9!#$3$NJQ?t$,(B @code{t} $B$G$"$k$H!"$=$l$O5-;v$rI=<($7$^$;(B -$B$s(B---$B:G=i$+$iB8:_$7$J$+$C$?$+$N$h$&$K!#(B +Gnus $B$,F1$8(B @code{Message-ID} $B$r;}$DFs$D$N5-;v$rH/8+$7$?$H$-$O!"2?$+;W$$(B +$B@Z$C$?;v$r$7$J$1$l$P$J$j$^$;$s!#JL$N5-;v$,F1$8(B @code{Message-ID} $B$r;}$D(B +$B;v$O5v$5$l$F$$$^$;$s$,!"$=$l$O2?$i$+$N=P=j$+$i%a!<%k$rFI$s$G$$$k$H$-$K5/(B +$B$3$k$+$b$7$l$^$;$s!#(BGnus $B$O$3$NJQ?t$K$h$C$F2?$,5/$3$k$+$r%+%9%?%^%$%:$G(B +$B$-$k$h$&$K$J$C$F$$$^$9!#$b$7$=$l$,(B @code{nil} ($B$3$l$,%G%#%U%)%k%H$G(B +$B$9(B) $B$G$"$l$P!"(Bgnus $B$O(B @code{Message-ID} $B$rIU$1BX$($F(B ($BI=<($N$?$a$@$1(B +$B$K(B) $B5-;v$rB>$N5-;v$HF1$8$h$&$KI=<($7$^$9!#$3$NJQ?t$,(B @code{t} $B$G$"$k$H!"(B +$B$=$l$O5-;v$rI=<($7$^$;$s(B---$B:G=i$+$iB8:_$7$J$+$C$?$+$N$h$&$K!#(B @vindex gnus-alter-articles-to-read-function @item gnus-alter-articles-to-read-function @@ -8234,73 +8223,75 @@ gnus $B$O(B @code{Message-ID} $B$rIU$1BX$($F!JI=<($N$?$a$@$1$K!K5-;v$rB>$N5-; @end table - @node Summary Group Information @subsection $B35N,%0%k!<%W>pJs(B @table @kbd @item H f -@kindex H f $B!J35N,!K(B +@kindex H f ($B35N,(B) @findex gnus-summary-fetch-faq @vindex gnus-grou-faq-directory -$B8=:_$N%0%k!<%W$N(B FAQ$B!J(Bfrequently asked questions$B!JIQHK$K$5$l$kl9g$O!"$3$NL?Na$K@\F,0z?t$rM?$($k;v$G$$$m$$$m$J%5%$%H(B (site) $B$+$iA*$V;v$,(B -$B$G$-$^$9!#$*$=$i$/(B @code{ange-ftp} $B$b$7$/$O(B @code{efs} $B$,%U%!%$%k$Nl9g$O!"$3$NL?Na$K@\F,0z?t$rM?$($k;v$G$$$m$$$m$J%5%$(B +$B%H(B (site) $B$+$iA*$V;v$,$G$-$^$9!#$*$=$i$/(B @code{ange-ftp} $B$b$7$/(B +$B$O(B @code{efs} $B$,%U%!%$%k$No$KC;$$5-=R$rM?$($^$9(B -(@code{gnus-summary-describe-briefly})$B!#(B +$B:G=EMW35N,BG80$NHs>o$KC;$$5-=R$rM?$($^(B +$B$9(B (@code{gnus-summary-describe-briefly})$B!#(B @item H i -@kindex H i $B!J35N,!K(B +@kindex H i ($B35N,(B) @findex gnus-info-find-node Gnus $B$N(B info $B$N@a(B (node) $B$K0\F0$7$^$9(B (@code{gnus-info-find-node})$B!#(B @end table - @node Searching for Articles @subsection $B5-;v$rC5$9(B @table @kbd @item M-s -@kindex M-s $B!J35N,!K(B +@kindex M-s ($B35N,(B) @findex gnus-summary-search-article-forward -$BD>8e$K$"$kA4$F$N5-;v$r@55,I=8=$G8!:w$7$^$9(B -(@code{gnus-summary-search-article-forward})$B!#(B +$BD>8e$K$"$kA4$F$N5-;v$r@55,I=8=$G8!:w$7$^(B +$B$9(B (@code{gnus-summary-search-article-forward})$B!#(B @item M-r -@kindex M-r $B!J35N,!K(B +@kindex M-r ($B35N,(B) @findex gnus-summary-search-article-backward -$BA0$K$"$kA4$F$N5-;v$r@55,I=8=$G8!:w$7$^$9(B -(@code{gnus-summary-search-article-backward})$B!#(B +$BA0$K$"$kA4$F$N5-;v$r@55,I=8=$G8!:w$7$^(B +$B$9(B (@code{gnus-summary-search-article-backward})$B!#(B @item & -@kindex & $B!J35N,!K(B +@kindex & ($B35N,(B) @findex gnus-summary-execute-command $B$3$NL?Na$O$"$J$?$K%X%C%@!l9g(B $B$K$N5-;v$N=8$^$j$G$"$k$J$i$P!JNc$($P!"E&MW(B (digest)$B!K!"(B -$B$=$N$h$&$J5-;v$G$G$-$F$$$k%0%k!<%W$KF~$k$?$a$K$3$NL?Na$r;H$&$+$b$7$l$^$;$s(B -(@code{gnus-summary-enter-digest-group})$B!#(BGnus $B$O$3$NL?Na$K@\F,0z?t$rM?$((B -$B$J$$8B$j!"$I$N$h$&$J7?$N5-;v$,8=:_I=<($5$l$F$$$k$+$r?dB,$7$h$&$H$7!"$=$l$O(B -$B6/@)E*$K!XE&MW!Y$H$$$&2r$NMM<0$+$i$J$kB>$N%a%C%;!<(B -$B%8$N=89g$G$"$C$?$H$-$O!"(B@kbd{C-d} $B$H$9$k$3$H$K$h$j$b$C$HJXMx$JJ}K!$G$=$l$i(B -$B$N%a%C%;!<%8$rFI$`;v$,$G$-$k$h$&$K$J$j$^$9!#(B +$B$b$78=:_$N%0%k!<%W$,B>$N5-;v$N=8$^$j$G$"$k$J$i$P(B ($BNc$($P!"E&MW(B (digest))$B!"(B +$B$=$N$h$&$J5-;v$G$G$-$F$$$k%0%k!<%W$KF~$k$?$a$K$3$NL?Na$r;H$&$+$b$7$l$^$;(B +$B$s(B(@code{gnus-summary-enter-digest-group})$B!#(BGnus $B$O$3$NL?Na$K@\F,0z?t$r(B +$BM?$($J$$8B$j!"$I$N$h$&$J7?$N5-;v$,8=:_I=<($5$l$F$$$k$+$r?dB,$7$h$&$H$7!"(B +$B$=$l$O6/@)E*$K!XE&MW!Y$H$$$&2r$NMM<0$+$i$J$kB>(B +$B$N%a%C%;!<%8$N=89g$G$"$C$?$H$-$O!"(B@kbd{C-d} $B$H$9$k$3$H$K$h$j$b$C$HJXMx$J(B +$BJ}K!$G$=$l$i$N%a%C%;!<%8$rFI$`;v$,$G$-$k$h$&$K$J$j$^$9!#(B @item M-C-d -@kindex M-C-d $B!J35N,!K(B +@kindex M-C-d ($B35N,(B) @findex gnus-summary-read-document $B$3$NL?Na$O>e$N$b$N$KHs>o$K;w$F$$$^$9$,!"$$$/$D$+$NJ8=q$r0l$D$NBg!<$-$$%0(B $B%k!<%W$K=8$a$^$9(B (@code{gnus-summary-read-read-document})$B!#$=$l$O$$$/$D(B $B$+$N(B @code{nndoc} $B%0%k!<%W$r$=$l$>$l$NJ8=q$N$?$a$K(B $B3+$-!"$=$l$+$i$3$l$i(B $B$N(B @code{nndoc} $B%0%k!<%W$N>e$K(B @code{nnvirtual} $B%0%k!<%W$r3+$/;v$K$h$C$F(B -$B$3$N;v$r2DG=$K$7$F$$$^$9!#$3$NL?Na$O%W%m%;%9(B/$B@\F,0z?t$N=,47$rM}2r$7$^$9(B -(@pxref{Process/Prefix})$B!#(B +$B$3$N;v$r2DG=$K$7$F$$$^$9!#$3$NL?Na$O%W%m%;%9(B/$B@\F,0z?t$N=,47$rM}2r$7$^(B +$B$9(B (@pxref{Process/Prefix})$B!#(B @item C-t -@kindex C-t $B!J35N,!K(B +@kindex C-t ($B35N,(B) @findex gnus-summary-togle-truncation $B35N,9T$N@ZCG$r@Z$jBX$($^$9(B (@code{gnus-summary-toggle-truncation})$B!#$3$l(B $B$O$*$=$i$/35N,%P%C%U%!$N9TCf1{I=<(4X?t$r:.Mp$5$;$^$9$N$G!"5-;v$rFI$s$G$$(B $B$k4V$K@ZCG$r@Z$C$F$$$k$N$ONI$$9M$($G$O$J$$$G$7$g$&!#(B @item = -@kindex = $B!J35N,!K(B +@kindex = ($B35N,(B) @findex gnus-summary-expand-window -$B35N,%P%C%U%!$N%&%#%s%I%&$r3HBg$7$^$9(B -(@code{gnus-summary-expand-window})$B!#@\F,0z?t$rM?$($i$l$l$P!"(B@code{$B5-;v(B} -$B%&%#%s%I%&$r3HBg$7$^$9!#(B +$B35N,%P%C%U%!$N%&%#%s%I%&$r3HBg$7$^(B +$B$9(B (@code{gnus-summary-expand-window})$B!#@\F,0z?t$rM?$($i$l$l$P!"(B +@code{$B5-;v(B} $B%&%#%s%I%&$r3HBg$7$^$9!#(B @item M-C-e -@kindex M-C-e $B!J35N,!K(B +@kindex M-C-e ($B35N,(B) @findex gnus-summary-edit-parameters $B8=:_$N%0%k!<%W$N%0%k!<%W$NG^2pJQ?t(B (parameter) (@pxref{Group Parameters}) $B$rJT=8$7$^$9(B (@code{gnus-summary-edit-parameters})$B!#(B @@ -8391,79 +8381,79 @@ Parameters}) $B$rJT=8$7$^$9(B (@code{gnus-summary-edit-parameters})$B!#(B @item Z Z @itemx q @kindex Z Z (Summary) -@findex q $B!J35N,!K(B +@findex q ($B35N,(B) @findex gnus-summary-exit @vindex gnus-summary-exit-hook @vindex gnus-summary-prepare-exit-hook @c @icon{gnus-summary-exit} -$B8=:_$N%0%k!<%W$r=P$F!"%0%k!<%W$NA4$F$N>pJs$r99?7$7$^$9(B -(@code{gnus-summary-exit})$B!#H4$1=P$k$?$a$N$?$$$F$$$N;v$r$9$kA0$K(B -@code{gnus-summary-prepare-exit-hook} $B$,8F$P$l!"$=$l$O%G%#%U%)%k%H$G(B -@code{gnus-summary-expire-articles} $B$r8F$S$^$9!#H4$1=P$k2aDx$rDI$($?8e$K(B -@code{gnus-summary-exit-hook} $B$,8F$P$l$^$9!#(B($BL$FI$N(B) $B%0%k!<%W$,;D$C$F$$(B -$B$J$$$H$-$K%0%k!<%W%b!<%I$KLa$k$H$-$K(B -@code{gnus-group-no-more-groups-hook} $B$,pJs$r99?7$7$^(B +$B$9(B (@code{gnus-summary-exit})$B!#H4$1=P$k$?$a$N$?$$$F$$$N;v$r$9$kA0(B +$B$K(B @code{gnus-summary-prepare-exit-hook} $B$,8F$P$l!"$=$l$O%G%#%U%)%k%H(B +$B$G(B @code{gnus-summary-expire-articles} $B$r8F$S$^$9!#H4$1=P$k2aDx$rDI$($?(B +$B8e$K(B @code{gnus-summary-exit-hook} $B$,8F$P$l$^$9!#(B($BL$FI$N(B) $B%0%k!<%W$,;D$C(B +$B$F$$$J$$$H$-$K%0%k!<%W%b!<%I$KLa$k$H$-(B +$B$K(B @code{gnus-group-no-more-groups-hook} $B$,pJs$b99?7$;$:$K8=:_$N%0%k!<%W$rH4$1=P$^$9(B -(@code{gnus-summary-exit-no-update})$B!#(B +$B%0%k!<%W$N$I$N>pJs$b99?7$;$:$K8=:_$N%0%k!<%W$rH4$1=P$^(B +$B$9(B (@code{gnus-summary-exit-no-update})$B!#(B @item Z c @itemx c -@kindex Z c $B!J35N,!K(B -@kindex c $B!J35N,!K(B +@kindex Z c ($B35N,(B) +@kindex c ($B35N,(B) @findex gnus-summary-catchup-and-exit @c @icon{gnus-summary-catchup-and-exit} $B%0%k!<%W$NA4$F$NJ]N1$G$J$$5-;v(B (unticked article) $B$K4{FI$N0u$rIU$1$F!"$=(B $B$l$+$iH4$1$^$9(B (@code{gnus-summary-catchup-and-exit})$B!#(B @item Z C -@kindex Z C $B!J35N,!K(B +@kindex Z C ($B35N,(B) @findex gnus-summary-catchup-all-and-exit -$BJ]N15-;v$b4^$a$F!"A4$F$N5-;v$K4{FI$N0u$rIU$1$F!"$=$l$+$iH4$1$^$9(B -(@code{gnus-summary-catchup-all-and-exit})$B!#(B +$BJ]N15-;v$b4^$a$F!"A4$F$N5-;v$K4{FI$N0u$rIU$1$F!"$=$l$+$iH4$1$^(B +$B$9(B (@code{gnus-summary-catchup-all-and-exit})$B!#(B @item Z n -@kindex Z n $B!J35N,!K(B +@kindex Z n ($B35N,(B) @findex gnus-summary-catchup-and-goto-next-group -$BA4$F$N5-;v$K4{FI$N0u$rIU$1$F$7$^$9(B -(@code{gnus-summary-reselect-current-group})$B!#$b$7@\F,0z?t$rM?$($i$l$l$P!"(B -$B4{FI$HL$FI$NN>J}$NA4$F$N5-;v$rA*Br$7$^$9!#(B +$B8=:_$N%0%k!<%W$r=P$F!"$=$l$+$iF~$jD>$7$^(B +$B$9(B (@code{gnus-summary-reselect-current-group})$B!#$b$7@\F,0z?t$rM?$($i$l(B +$B$l$P!"4{FI$HL$FI$NN>J}$NA4$F$N5-;v$rA*Br$7$^$9!#(B @item Z G @itemx M-g -@kindex Z G $B!J35N,!K(B -@kindex M-g $B!J35N,!K(B +@kindex Z G ($B35N,(B) +@kindex M-g ($B35N,(B) @findex gnus-summary-rescan-group @c @icon{gnus-summary-mail-get} -$B%0%k!<%W$rH4$1!"%0%k!<%W$N?7$7$$5-;v$rD4$Y!"%0%k!<%W$rA*Br$7$^$9(B -(@code{gnus-summary-rescan-group})$B!#$b$7@\F,0z?t$rM?$($i$l$l$P!"4{FI$HL$(B -$BFI$NN>J}$NA4$F$N5-;v$rA*Br$7$^$9!#(B +$B%0%k!<%W$rH4$1!"%0%k!<%W$N?7$7$$5-;v$rD4$Y!"%0%k!<%W$rA*Br$7$^(B +$B$9(B (@code{gnus-summary-rescan-group})$B!#$b$7@\F,0z?t$rM?$($i$l$l$P!"4{FI(B +$B$HL$FI$NN>J}$NA4$F$N5-;v$rA*Br$7$^$9!#(B @item Z N -@kindex Z N $B!J35N,!K(B +@kindex Z N ($B35N,(B) @findex gnus-summary-next-group -$B%0%k!<%W$rH4$1$F!"pJs$r99?7$7$FH4$1$k$H$-$K(B -@code{gnus-exit-group-hook} $B$,8F$P$l$^$9!#(B +$B8=:_$N%0%k!<%W$r!"%0%k!<%W$NA4$F$N>pJs$r99?7$7$FH4$1$k$H$-(B +$B$K(B @code{gnus-exit-group-hook} $B$,8F$P$l$^$9!#(B @kbd{Q} $BL?Na(B (@code{gnus-summary-exit-no-update}) $B$G$O!"$3$N%U%C%/$r8F$S(B $B$^$;$s!#(B @@ -8481,67 +8471,68 @@ Parameters}) $B$rJT=8$7$^$9(B (@code{gnus-summary-edit-parameters})$B!#(B @findex gnus-dead-summary-mode @vindex gnus-kill-summary-on-exit $B$"$J$?$K%0%k!<%W$rH4$1$F!"$=$l$+$i9M$($rJQ$($kJJ$,$"$k$N$G$"$l$P!"(B -@code{gnus-kill-summary-on-exit} $B$r(B @code{nil} $B$K@_Dj$9$k$N$,NI$$$+$b$7$l(B -$B$^$;$s!#$b$7$=$&$9$l$P!"(Bgnus $B$O$=$l$+$iH4$1=P$k$H$-$K35N,%P%C%U%!$r:o=|$7(B -$B$^$;$s!#!J2?$H$$$&6C$-!*!K$=$NBe$o$j$K!"$=$l$O%P%C%U%!$NL>A0$r(B -@samp{*Dead Summary ... *} $B$N$h$&$J$b$N$KJQ99$7!"(B +@code{gnus-kill-summary-on-exit} $B$r(B @code{nil} $B$K@_Dj$9$k$N$,NI$$$+$b$7(B +$B$l$^$;$s!#$b$7$=$&$9$l$P!"(Bgnus $B$O$=$l$+$iH4$1=P$k$H$-$K35N,%P%C%U%!$r:o(B +$B=|$7$^$;$s!#(B($B2?$H$$$&6C$-(B!) $B$=$NBe$o$j$K!"$=$l$O%P%C%U%!$NL>A0(B +$B$r(B @samp{*Dead Summary ... *} $B$N$h$&$J$b$N$KJQ99$7!"(B @code{gnus-dead-summary-mode} $B$H8F$P$l$k%^%$%J!<%b!<%I$rF3F~$7$^$9!#:#$d!"(B -$B$=$N%P%C%U%!$K@Z$jBX$($l$P!"A4$F$N%-!<$,4X?t(B -@code{gnus-summary-wake-up-the-dead} $B$K3d$jEv$F$i$l$F$$$k$3$H$K5$IU$/$G$7$g(B -$B$&!#;`$s$@35N,%P%C%U%!(B (dead summary buffer) $B$G$I$l$+$N%-!<$rC!$/;v$H!"@8(B -$B$-$?IaDL$N35N,%P%C%U%!$K$J$k$G$7$g$&!#(B +$B$=$N%P%C%U%!$K@Z$jBX$($l$P!"A4$F$N%-!<$,4X(B +$B?t(B @code{gnus-summary-wake-up-the-dead} $B$K3d$jEv$F$i$l$F$$$k$3$H$K5$IU$/(B +$B$G$7$g$&!#;`$s$@35N,%P%C%U%!(B (dead summary buffer) $B$G$I$l$+$N%-!<$rC!$/(B +$B;v$H!"@8$-$?IaDL$N35N,%P%C%U%!$K$J$k$G$7$g$&!#(B $B;`$s$@35N,%P%C%U%!$OF1;~$K0l$D$7$+B8:_$9$k;v$O$G$-$^$;$s!#(B @vindex gnus-use-cross-reference -$B35N,%P%C%U%!$rH4$1=P$k$H!"8=:_$N%0%k!<%W$N%G!<%?$O99?7$5$l$^$9!J$I$N5-;v$r(B -$BFI$s$G!"$I$N5-;v$KJVEz$7$?$+!"$J$I$J$I!#!K$b$7JQ?t(B -@code{gnus-use-cross-reference} $B$,(B @code{t} $B$G$"$k$H!J$=$l$,%G%#%U%)%k%H$G(B -$B$9!K!"$=$N%0%k!<%W$KAj8_;2>H$5$l$?(B (cross referenced) $B5-;v$O4{FI$N0u$,IU$-!"(B -$B$=$l$,Aj8_Ej9F(B (cross post) $B$5$l$?B>$N9XFI$7$F$$$k%0%k!<%W$G$b4{FI$N0u$,IU(B -$B$-$^$9!#$3$NJQ?t$,(B @code{nil} $B$G$b(B @code{t} $B$G$J$1$l$P!"5-;v$O9XFI$HL$9XFI(B -$B$NN>J}$N%0%k!<%W$G4{FI$N0u$,IU$-$^$9(B (@pxref{Crosspost Handling})$B!#(B - +$B35N,%P%C%U%!$rH4$1=P$k$H!"8=:_$N%0%k!<%W$N%G!<%?$O99?7$5$l$^$9(B ($B$I$N5-;v(B +$B$rFI$s$G!"$I$N5-;v$KJVEz$7$?$+!"$J$I$J$I!#(B) $B$b$7JQ(B +$B?t(B @code{gnus-use-cross-reference} $B$,(B @code{t} $B$G$"$k$H(B ($B$=$l$,%G%#%U%)(B +$B%k%H$G$9(B)$B!"$=$N%0%k!<%W$KAj8_;2>H$5$l$?(B (cross referenced) $B5-;v$O4{FI$N(B +$B0u$,IU$-!"$=$l$,Aj8_Ej9F(B (cross post) $B$5$l$?B>$N9XFI$7$F$$$k%0%k!<%W$G$b(B +$B4{FI$N0u$,IU$-$^$9!#$3$NJQ?t$,(B @code{nil} $B$G$b(B @code{t} $B$G$J$1$l$P!"5-;v(B +$B$O9XFI$HL$9XFI$NN>J}$N%0%k!<%W$G4{FI$N0u$,IU$-$^(B +$B$9(B (@pxref{Crosspost Handling})$B!#(B @node Crosspost Handling @section $BAj8_Ej9F$N07$$(B @cindex velveeta @cindex spamming -$BAj8_Ej9F(B (cross post) $B$5$l$?5-;v$K4{FI$N0u$rIU$1$k;v$O!"F1$85-;v$r(B2$B2s0J>e(B -$BFI$^$J$$$G$9$`$H$$$&;v$rJ]>Z$7$^$9!#$b$A$m$s!"$@$l$+$,$=$l$r$$$/$D$+$N%0%k!<(B -$B%W$KJL!9$KEj9F$7$J$$8B$j$O!#F1$85-;v$r$$$/$D$+$N%0%k!<%W$KEj9F$9$k;v!JAj8_(B -$BEj9F$G$J$/$F!K$O(B @dfn{spamming} $B$H8F$P$l!"$"$J$?$O$=$N$h$&$JA~$`$Y$-HH:a$r(B -$B9T$&$b$N$K$KBP$7$F!"K!N'$K$h$C$FIT2w$J5-;v$rAw$k$3$H$,5AL3$E$1$i$l$F$$$^$9!#(B -spam $B$rA*JL$9$k$?$a$K!"(BNoCeM $BjAj8_Ej9F$KBP$7$FITK~$r8@$&$?$a$KL?Na(B -@code{gnus-summary-mail-crosspost-complaint} $B$r;H$&$3$H$5$($G$-$^$9!#(B +$BAj8_Ej9F(B (cross post) $B$5$l$?5-;v$K4{FI$N0u$rIU$1$k;v$O!"F1$85-;v$rFs2s0J(B +$B>eFI$^$J$$$G$9$`$H$$$&;v$rJ]>Z$7$^$9!#$b$A$m$s!"$@$l$+$,$=$l$r$$$/$D$+$N(B +$B%0%k!<%W$KJL!9$KEj9F$7$J$$8B$j$O!#F1$85-;v$r$$$/$D$+$N%0%k!<%W$KEj9F$9$k(B +$B;v(B ($BAj8_Ej9F$G$J$/$F(B) $B$O(B @dfn{spamming} $B$H8F$P$l!"$"$J$?$O$=$N$h$&$JA~$`(B +$B$Y$-HH:a$r9T$&$b$N$K$KBP$7$F!"K!N'$K$h$C$FIT2w$J5-;v$rAw$k$3$H$,5AL3$E$1(B +$B$i$l$F$$$^$9!#(Bspam $B$rA*JL$9$k$?$a$K!"(BNoCeM $BjAj8_Ej9F$KBP$7$FITK~$r8@$&$?$a$KL?(B +$BNa(B @code{gnus-summary-mail-crosspost-complaint} $B$r;H$&$3$H$5$($G$-$^$9!#(B @cindex cross-posting @cindex Xref @cindex @sc{nov} -$BAj8_Ej9F$r(B gnus $B$,@5$7$/07$($J$$$h$&$K$J$k860x$N0l$D$O!"(B@sc{nov} $B9T$K(B -@code{Xref} $BMs$r4^$^$J$$!"(B@sc{xover}$B!J$3$l$OHs>o$KNI$$$G$9!"$H$$$&$N$O$=$l(B -$B$OB.EY$r$H$F$bB.$/$9$k$+$i$G$9!K$N;HMQ2DG=$J(B @sc{nntp} $B%5!<%P!<$r;H$C$F$$(B -$B$k$3$H$G$9!#$3$l$O320-$J$N$G$9$,!"$"$!!"Ha$7$$$+$J!"Hs>o$KNI$/$"$k;v$G$9!#(B -Gnus $B$O$"$J$?$,FI$s$@A4$F$N5-;v$K(B @code{Xref} $B9T$rEPO?$9$k;v$G!"@5$7$$;v$r(B -$B$7$h$&(B $B$H$7$^$9$,!"5-;v$r:o=|$9$k$+!"FI$^$J$$$G4{FI$N0u$rIU$1$k$H!"(Bgnus $B$O(B -$B$3$l$i$N5-;v$K(B @code{Xref} $B$N9T$r$N$>$-$^$o$k5!2q$rF@$k;v$,L5$/!"Aj8_;2>H(B -$B5!9=$rMQ$$$k;v$,$G$-$^$;$s!#(B +$BAj8_Ej9F$r(B gnus $B$,@5$7$/07$($J$$$h$&$K$J$k860x$N0l$D$O!"(B@sc{nov} $B9T(B +$B$K(B @code{Xref} $BMs$r4^$^$J$$!"(B@sc{xover} ($B$3$l$OHs>o$KNI$$$G$9!"$H$$$&$N(B +$B$O$=$l$OB.EY$r$H$F$bB.$/$9$k$+$i$G$9(B) $B$N;HMQ2DG=$J(B @sc{nntp} $B%5!<%P!<$r(B +$B;H$C$F$$$k$3$H$G$9!#$3$l$O320-$J$N$G$9$,!"$"$!!"Ha$7$$$+$J!"Hs>o$KNI$/$"(B +$B$k;v$G$9!#(BGnus $B$O$"$J$?$,FI$s$@A4$F$N5-;v$K(B @code{Xref} $B9T$rEPO?$9$k;v$G!"(B +$B@5$7$$;v$r$7$h$&(B $B$H$7$^$9$,!"5-;v$r:o=|$9$k$+!"FI$^$J$$$G4{FI$N0u$rIU$1(B +$B$k$H!"(Bgnus $B$O$3$l$i$N5-;v$K(B @code{Xref} $B$N9T$r$N$>$-$^$o$k5!2q$rF@$k;v$,(B +$BL5$/!"Aj8_;2>H5!9=$rMQ$$$k;v$,$G$-$^$;$s!#(B @cindex LIST overview.fmt @cindex overview.fmt -$B$"$J$?$N(B @sc{nntp} $B%5!<%P!<$,$=$N354Q%U%!%$%k(B (overview file) $B$K(B -@code{Xref} $BMs$r4^$s$G$$$k$+$rD4$Y$k$K$O!"(B@samp{telnet your.nntp.server -nntp} $B$H$7$F!"(B@code{inn} $B%5!<%P!<$G(B @samp{More READER} $B$H$7!"$=$l$+$i(B -@samp{LIST overview.fmt} $B$H$9$k;v$r;n$7$F$/$@$5$$!#$3$l$OF0:n$7$J$$$G$7$g(B -$B$&$,!"$b$7F0:n$7$F!"H$7$F$/$@$5$$!#(B - @node Duplicate Suppression @section $B=EJ#$NM^@)(B -$B%G%#%U%)%k%H$G$O(B gnus $B$OAj8_Ej9F5!9=$rMxMQ$9$k;v$K$h$C$F!"F1$85-;v$r(B2$B2s0J(B -$B>eFI$^$J$$$h$&$K$7$h$&$H$7$^$9(B (@pxref{Crosspost Handling})$B!#$7$+$7!"$=$N(B -$BC1=c$G8z2LE*$JJ}K!$O!"$$$m$$$m$JM}M3$K$h$j!"K~B-$9$k7k2L$r$b$?$i$5$J$$$+$b(B -$BCN$l$^$;$s!#(B +$B%G%#%U%)%k%H$G$O(B gnus $B$OAj8_Ej9F5!9=$rMxMQ$9$k;v$K$h$C$F!"F1$85-;v(B +$B$rFs2s0J>eFI$^$J$$$h$&$K$7$h$&$H$7$^$9(B (@pxref{Crosspost Handling})$B!#$7(B +$B$+$7!"$=$NC1=c$G8z2LE*$JJ}K!$O!"$$$m$$$m$JM}M3$K$h$j!"K~B-$9$k7k2L$r$b$?(B +$B$i$5$J$$$+$bCN$l$^$;$s!#(B @enumerate @item -@sc{nntp} $B%5!<%P!<$O(B @code{Xref} $BMs$N@8@.$K<:GT$9$k$+$bCN$l$^$;$s!#$3$l$O(B -$B0-$$;v$G!"$"$^$j5/$3$j$^$;$s!#(B +@sc{nntp} $B%5!<%P!<$O(B @code{Xref} $BMs$N@8@.$K<:GT$9$k$+$bCN$l$^$;$s!#$3$l(B +$B$O0-$$;v$G!"$"$^$j5/$3$j$^$;$s!#(B @item -@sc{nntp} $B%5!<%P!<$O(B @file{.overview} $B%G!<%?%Y!<%9$K(B @code{Xref} $BMs$r4^$a(B -$B$k$N$K<:GT$9$k$+$bCN$l$^$;$s!#$3$l$O0-$$;v$G!"Hs>o$KNI$/$"$k;v$G$9!"$"$!Ha(B -$B$7$$!#(B +@sc{nntp} $B%5!<%P!<$O(B @file{.overview} $B%G!<%?%Y!<%9$K(B @code{Xref} $BMs$r4^(B +$B$a$k$N$K<:GT$9$k$+$bCN$l$^$;$s!#$3$l$O0-$$;v$G!"Hs>o$KNI$/$"$k;v$G$9!"$"$!(B +$BHa$7$$!#(B @item -$BF1$8%0%k!<%W!J$b$7$/$O$$$/$D$+$N4XO"$7$?%0%k!<%W!K$r0c$C$?(B @sc{nntp} $B%5!<(B +$BF1$8%0%k!<%W(B ($B$b$7$/$O$$$/$D$+$N4XO"$7$?%0%k!<%W(B) $B$r0c$C$?(B @sc{nntp} $B%5!<(B $B%P!<$+$iFI$s$G$$$k$+$b$7$l$^$;$s!#(B @item $B%0%k!<%W$KEj9F$5$l$?5-;v$H=EJ#$9$k%a!<%k$ru67$OB>$K$b$"$j$^$9$,!"$3$l$i#4$D$,$H$F$bNI$/(B -$B$"$k>u67$G$9!#(B +@code{Xref} $B$N07$$$K<:GT$9$k>u67$OB>$K$b$"$j$^$9$,!"$3$l$i;M$D$,$H$F$bNI(B +$B$/$"$k>u67$G$9!#(B -$B$b$7!"K\Ev$K$b$7$b(B @code{Xref} $B$N07$$$K<:GT$7$?$i!"(B@dfn{$B=EJ#M^@)(B}$B$K@Z$jBX(B -$B$($k;v$r9M$($k$+$b$7$l$^$;$s!#$=$&$9$l$P!"(Bgnus $B$O$"$J$?$,FI$s$@A4$F$N5-;v(B -$B$+$=$&$G$J$1$l$P!"4{FI$N0u$,IU$$$?A4$F$N5-;v$N(B @code{Message-ID} $B$r5-21$7!"(B -$B$=$l$+$i!"KbK!$N$h$&$K!"$=$N8e$N$=$l$i$H=P2q$C$?A4$F$N>l9g$K!"4{FI$N0u$rIU(B -$B$1$^$9!=!=(B@emph{$BA4$F(B}$B$N%0%k!<%W$G!#$3$N5!9=$r;H$&$N$OHs>o$KHs8zN(E*$G$9$,!"(B -$B2aEY$KHs8zN($J$o$1$G$O$"$j$^$;$s!#$b$A$m$sF1$85-;v$r0l2s0J>eFI$`$[$&$,9%$^(B -$B$7$$$G$9!#(B +$B$b$7!"K\Ev$K$b$7$b(B @code{Xref} $B$N07$$$K<:GT$7$?$i!"(B@dfn{$B=EJ#M^@)(B}$B$K@Z$j(B +$BBX$($k;v$r9M$($k$+$b$7$l$^$;$s!#$=$&$9$l$P!"(Bgnus $B$O$"$J$?$,FI$s$@A4$F$N(B +$B5-;v$+$=$&$G$J$1$l$P!"4{FI$N0u$,IU$$$?A4$F$N5-;v$N(B @code{Message-ID} $B$r(B +$B5-21$7!"$=$l$+$i!"KbK!$N$h$&$K!"$=$N8e$N$=$l$i$H=P2q$C$?A4$F$N>l9g$K!"4{(B +$BFI$N0u$rIU$1$^$9!=!=(B@emph{$BA4$F(B}$B$N%0%k!<%W$G!#$3$N5!9=$r;H$&$N$OHs>o$KHs(B +$B8zN(E*$G$9$,!"2aEY$KHs8zN($J$o$1$G$O$"$j$^$;$s!#$b$A$m$sF1$85-;v$r0l2s0J(B +$B>eFI$`$[$&$,9%$^$7$$$G$9!#(B -$B=EJ#M^@)$O$"$^$jA!:Y$J$b$N$G$O$"$j$^$;$s!#$I$A$i$+$H$$$&$H!"BgDH$N$h$&$J$b(B -$B$N$G$9!#$=$l$OHs>o$KC1=c$JJ}K!$GF0:n$7$F$$$^$9!=!=$b$75-;v$K4{FI$N0u$rIU$1(B -$B$l$P!"$=$l$O$3$N(B Message-ID $B$r(B $B%-%c%C%7%e$K2C$($^$9!#o$KC1=c$JJ}K!$GF0:n$7$F$$$^$9!=!=$b$75-;v$K4{FI$N0u$r(B +$BIU$1$l$P!"$=$l$O$3$N(B Message-ID $B$r(B $B%-%c%C%7%e$K2C$($^$9!#uBV$G$O(B @code{nil} $B$G$9!#$7$+$7!"$3$l$OC10l(B -$B$N(B gnus $B$NuBV$G$O(B @code{nil} $B$G$9!#$7$+$7!"$3$l$O(B +$BC10l$N(B gnus $B$NA0$G$9!#%G%#%U%)%k%H$O(B -@file{~/News/suppression} $B$G$9!#(B +$B=EJ#M^@)$N%j%9%H$rC_@Q$7$F$*$/%U%!%$%k$NL>A0$G$9!#%G%#%U%)%k%H(B +$B$O(B @file{~/News/suppression} $B$G$9!#(B @end table -$B2?EY$b(B gnus $B$r=*N;$7$F5/F0$9$k798~$,$"$k$N$G$"$l$P!"$*$=$i$/(B -@code{gnus-save-duplicate-list} $B$r(B @code{t} $B$K$9$k$N$ONI$$9M$($G$7$g$&!#(B -$B$b$7(B gnus $B$rB3$1$F2?=54V$bAv$i$;$F$*$/$N$G$"$l$P!"$=$l$r(B @code{nil} $B$K$9(B -$B$k$+$b$7$l$^$;$s!#0lJ}$G!"%j%9%H$rJ]B8$9$k;v$O5/F0$H=*N;$r$:$C$HCY$/$7$^(B -$B$9$N$G!"$h$/(B gnus $B$r=*N;$7$F5/F0$9$k$N$G$"$l$P!"(B +$B2?EY$b(B gnus $B$r=*N;$7$F5/F0$9$k798~$,$"$k$N$G$"$l$P!"$*$=$i(B +$B$/(B @code{gnus-save-duplicate-list} $B$r(B @code{t} $B$K$9$k$N$ONI$$9M$($G$7$g(B +$B$&!#$b$7(B gnus $B$rB3$1$F2?=54V$bAv$i$;$F$*$/$N$G$"$l$P!"$=$l(B +$B$r(B @code{nil} $B$K$9$k$+$b$7$l$^$;$s!#0lJ}$G!"%j%9%H$rJ]B8$9$k;v$O5/F0$H=*(B +$BN;$r$:$C$HCY$/$7$^$9$N$G!"$h$/(B gnus $B$r=*N;$7$F5/F0$9$k$N$G$"$l$P!"(B @code{gnus-save-duplicate-list} $B$r(B @code{nil} $B$K@_Dj$9$k$Y$-$G$"$k$H$$$&(B $B;v$K$J$j$^$9!#$&!<$`!#;d$O$"$J$?$,$I$&$9$k$+$KG$$;$?$$!"$H;W$$$^$9!#(B - @node The Article Buffer @chapter $B5-;v%P%C%U%!(B @cindex article buffer -$B5-;v$O0l$D$7$+$J$$5-;v%P%C%U%!$KI=<($5$l$^$9!#A4$F$N35N,%P%C%U%!$O!J(Bgnus -$B$K6&M-$7$J$$$h$&$K;X<($7$J$$8B$j!KF1$85-;v%P%C%U%!$r6&M-$7$^$9!#(B +$B5-;v$O0l$D$7$+$J$$5-;v%P%C%U%!$KI=<($5$l$^$9!#A4$F$N35N,%P%C%U%!(B +$B$O(B (gnus $B$K6&M-$7$J$$$h$&$K;X<($7$J$$8B$j(B) $BF1$85-;v%P%C%U%!$r6&M-$7$^$9!#(B @menu -* Hiding Headers:: $B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k!#(B -* Using MIME:: @sc{mime} $B5-;v$H$7$F8+$;$k!#(B -* Customizing Articles:: $B5-;v$N8+1I$($r;EN)$F$k!#(B -* Article Keymap:: $B5-;v%P%C%U%!$G;H$($k%-!!#(B +* Hiding Headers:: $B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k(B +* Using MIME:: @sc{mime} $B5-;v$H$7$F8+$;$k(B +* Customizing Articles:: $B5-;v$N8+1I$($r;EN)$F$k(B +* Article Keymap:: $B5-;v%P%C%U%!$G;H$($k%-!(B @end menu - @node Hiding Headers @section $BM>J,$J%X%C%@!<$r1#$9(B @cindex hiding headers @cindex deleting headers -$B3F5-;v$NF,$NItJ,$O%X%C%@!<(B(@dfn{head})$B$H8F$P$l$^$9!J;D$j$NItJ,$O%\%G%#(B -(@dfn{body})$B$G$9!#$9$G$K$*5$$E$-$G$7$g$&$,!K!#(B +$B3F5-;v$NF,$NItJ,$O%X%C%@!<(B(@dfn{head})$B$H8F$P$l$^$9(B ($B;D$j$NItJ,$O%\(B +$B%G%#(B (@dfn{body})$B$G$9!#$9$G$K$*5$$E$-$G$7$g$&$,(B)$B!#(B @vindex gnus-show-all-headers -$B%X%C%@!<$K$O$?$/$5$s$NJXMx$J>pJs$,4^$^$l$F$$$^$9!#5-;v$r=q$$$??M$NL>A0!"$=(B -$B$l$,=q$+$l$?F|IU!"5-;v$NI=Bj$J$I$G$9!#$3$l$O$H$F$bNI$$$s$G$9$,!"%X%C%@!<$K(B -$B$OBgItJ,$N?M$K$O8+$?$/$b$J$$>pJs!=!=5-;v$,$"$J$?$N$H$3$m$KCe$/$^$G$I$s$J%7(B -$B%9%F%`$r7PM3$7$F$-$?$+!"(B@code{Message-ID}, @code{References} $B$J$I$J$I!D$b(B -$B$&$d$s$J$C$A$c$&$/$i$$!=!=$b$?$/$5$s4^$^$l$F$$$^$9!#$?$V$s$"$J$?$O$3$l$i$N(B -$B9T$O$$$/$D$+pJs$,4^$^$l$F$$$^$9!#5-;v$r=q$$$??M$NL>A0!"(B +$B$=$l$,=q$+$l$?F|IU!"5-;v$NI=Bj$J$I$G$9!#$3$l$O$H$F$bNI$$$s$G$9$,!"%X%C%@!<(B +$B$K$OBgItJ,$N?M$K$O8+$?$/$b$J$$>pJs!=!=5-;v$,$"$J$?$N$H$3$m$KCe$/$^$G$I$s(B +$B$J%7%9%F%`$r7PM3$7$F$-$?$+!"(B@code{Message-ID}, @code{References} $B$J$I$J(B +$B$I!D$b$&$d$s$J$C$A$c$&$/$i$$!=!=$b$?$/$5$s4^$^$l$F$$$^$9!#$?$V$s$"$J$?$O(B +$B$3$l$i$N9T$O$$$/$D$+A0$HI=Bj$N$_$r8+$?$1$l$P!"$3$&;XDj$7$^$9!#(B @@ -8682,13 +8670,13 @@ Gnus $B$O%X%C%@!<$rA*$jJ,$1$k$?$a$K(B2$B$D$NJQ?t$rMQ0U$7$F$$$^$9!#(B @item gnus-ignored-headers @vindex gnus-ignored-headers -$B$3$NJQ?t$O(B @code{gnus-visible-headers} $B$NH?BP$G$9!#$3$NJQ?t$,@_Dj$5$l$F$$(B -$B$l$P!J$+$D(B @code{gnus-visible-headers} $B$,(B @code{nil} $B$G$"$l$P!K!"$3$l$O1#(B -$B$7$?$$%X%C%@!<9TA4$F$K%^%C%A$9$k@55,I=8=$G$"$k$H$_$J$5$l$^$9!#$3$NJQ?t$K%^%C(B -$B%A$7$J$$A4$F$N%X%C%@!<9T$OI=<($5$l$^$9!#(B +$B$3$NJQ?t$O(B @code{gnus-visible-headers} $B$NH?BP$G$9!#$3$NJQ?t$,@_Dj$5$l$F(B +$B$$$l$P(B ($B$+$D(B @code{gnus-visible-headers} $B$,(B @code{nil} $B$G$"$l$P(B)$B!"$3$l$O(B +$B1#$7$?$$%X%C%@!<9TA4$F$K%^%C%A$9$k@55,I=8=$G$"$k$H$_$J$5$l$^$9!#$3$NJQ?t(B +$B$K%^%C%A$7$J$$A4$F$N%X%C%@!<9T$OI=<($5$l$^$9!#(B $BNc$($P!"C1$K(B @code{References} $BMs$H(B @code{Xref} $BMs$N$_$r>C$75n$j$?$1$l$P!"(B -$B0J2<$N$h$&$K$7$^$9!'(B +$B0J2<$N$h$&$K$7$^$9(B: @lisp (setq gnus-ignored-headers "^References:\\|^Xref:") @@ -8703,10 +8691,10 @@ Gnus $B$O%X%C%@!<$rA*$jJ,$1$k$?$a$K(B2$B$D$NJQ?t$rMQ0U$7$F$$$^$9!#(B @end table @vindex gnus-sorted-header-list -Gnus $B$O%X%C%@!<$NJB$YBX$((B(sort)$B$b9T$$$^$9!J$3$l$O%G%#%U%)%k%H$G9T$o$l$^$9!K!#(B -$B$3$NJB$YBX$($O(B @code{gnus-sorted-header-list} $BJQ?t$r@_Dj$9$k$3$H$G@)8f$9$k(B -$B$3$H$,$G$-$^$9!#$3$l$O%X%C%@!<$r$I$&$$$&=g=x$GI=<($9$k$+$r;XDj$9$k@55,I=8=(B -$B$N%j%9%H$G$9!#(B +Gnus $B$O%X%C%@!<$NJB$YBX$((B(sort)$B$b9T$$$^$9(B ($B$3$l$O%G%#%U%)%k%H$G9T$o$l$^(B +$B$9(B)$B!#$3$NJB$YBX$($O(B @code{gnus-sorted-header-list} $BJQ?t$r@_Dj$9$k$3$H$G(B +$B@)8f$9$k$3$H$,$G$-$^$9!#$3$l$O%X%C%@!<$r$I$&$$$&=g=x$GI=<($9$k$+$r;XDj$9(B +$B$k@55,I=8=$N%j%9%H$G$9!#(B $BNc$($P!"5-;v$NCx$r:G=i$K!"A0$,F~$k$N$G$O$"$j$^$;$s!#Be$o$j$K(B -gnus $B$,%A%'%C%/$7$F;k3&$+$i>C$75n$k$?$a$N$5$^$6$^$J!V$D$^$i$J$$>r7o!W(B +@code{gnus-article-hide-boring-headers} $B$r(B @code{head} $B$K@_Dj$9$k$3$H$K(B +$B$h$C$F!"$b$C$H$D$^$i$J$$%X%C%@!<$r1#$9$3$H$,$G$-$^$9!#$3$N4X?t$,2?$r$9$k(B +$B$+$O(B @code{gnus-boring-article-headers} $BJQ?t$K0MB8$7$^$9!#$3$NJQ?t$O%j%9(B +$B%H$G$9$,!"$3$N%j%9%H$K$OA0$,F~$k$N$G$O$"$j$^$;$s!#Be$o(B +$B$j$K(B gnus $B$,%A%'%C%/$7$F;k3&$+$i>C$75n$k$?$a$N$5$^$6$^$J!V$D$^$i$J$$>r7o!W(B @dfn{boring conditions} $B$N%j%9%H$r;XDj$7$^$9!#(B $B$3$N>r7o$K$O0J2<$N$h$&$J$b$N$,$"$j$^$9!#(B @@ -8735,19 +8723,20 @@ gnus $B$,%A%'%C%/$7$F;k3&$+$i>C$75n$k$?$a$N$5$^$6$^$J!V$D$^$i$J$$>r7o!W(B @item newsgroups @code{Newsgroups} $BMs$,8=:_$N%0%k!<%WL>$7$+4^$s$G$$$J$$>l9g$K$O>C5n$7$^$9!#(B @item followup-to -@code{Followup-To} $BMs$,(B @code{Newsgroups} $BMs$HF10l$G$"$k>l9g$K$O>C5n$7$^$9!#(B +@code{Followup-To} $BMs$,(B @code{Newsgroups} $BMs$HF10l$G$"$k>l9g$K$O>C5n$7$^(B +$B$9!#(B @item reply-to -@code{Reply-To} $BMs$,(B @code{From} $BMs$HF1$8%"%I%l%9$r<($7$F$$$k>l9g$K$O>C5n(B -$B$7$^$9!#(B +@code{Reply-To} $BMs$,(B @code{From} $BMs$HF1$8%"%I%l%9$r<($7$F$$$k>l9g$K$O>C(B +$B5n$7$^$9!#(B @item date -$B$=$N5-;v$,2a5n#3F|0JFb$N$b$N$G$"$l$P!"(B@code{Date} $BMs$r>C5n$7$^$9!#(B +$B$=$N5-;v$,2a5n;0F|0JFb$N$b$N$G$"$l$P!"(B@code{Date} $BMs$r>C5n$7$^$9!#(B @item long-to @code{To} $BMs$,$"$^$j$K$bD9$$>l9g$K$O>C5n$7$^$9!#(B @item many-to @code{To} $BMs$,0l$D$h$j$bB?$1$l$P!"$=$l$i$rA4$F>C5n$7$^$9!#(B @end table -$B>e5-$N:G=i$N#4$D$NMWAG$rF~$l$?$1$l$P!"$3$s$JIw$K$J$j$^$9!#(B +$B>e5-$N:G=i$N;M$D$NMWAG$rF~$l$?$1$l$P!"$3$s$JIw$K$J$j$^$9!#(B @lisp (setq gnus-boring-article-headers @@ -8756,7 +8745,6 @@ gnus $B$,%A%'%C%/$7$F;k3&$+$i>C$75n$k$?$a$N$5$^$6$^$J!V$D$^$i$J$$>r7o!W(B $B$3$l$O$3$NJQ?t$N%G%#%U%)%k%HCM$G$b$"$j$^$9!#(B - @node Using MIME @section @sc{mime} $B$r;H$&(B @cindex @sc{mime} @@ -8767,49 +8755,49 @@ gnus $B$,%A%'%C%/$7$F;k3&$+$i>C$75n$k$?$a$N$5$^$6$^$J!V$D$^$i$J$$>r7o!W(B $B0lJ}!"(B@sc{mime} $B$H$O!"0UL#$bL5$/5-;v$rId9f2=$9$kI8=`$G$"$j!"$=$N(B $B$?$a$KA4$F$N%K%e!<%9%j!<%@$,62I]$G;`$s$G$7$^$&$b$N$G$9!#(B -@sc{mime} $B$O$=$N5-;v$,$I$s$JJ8;z=89g$r;HMQ$7$F$$$k$+!"$=$NJ8;z$r$I$&Id9f2=(B -$B$7$F$$$k$+$r;XDj$9$k$3$H$,$G$-!"$5$i$K$O3($d$=$NB>$N$_$@$i$J$b$N$rL5$N$_$@$i$J$b$N$rL5\$7(B -$B$$>pJs$O!"%^%K%e%"%k$r;2>H$7$F$/$@$5$$!J$^$@$J$$$1$I(B(;_;)$B!K!#(B - -@sc{mime} $B$r>o$K;HMQ$7$?$1$l$P!"(B@code{gnus-show-mime} $B$r(B -@code{t} $B$K@_Dj$7$F$/$@$5$$!#$7$+$7!"(B@code{gnus-strict-mime} $B$,(B -@code{nil} $B0J30$G$"$l$P!"(B@sc{mime} $B=hM}$O5-;vCf$K(B @sc{mime} $B%X%C(B -$B%@!<$,$"$k$H$-$N$_;HMQ$5$l$^$9!#(B@code{gnus-show-mime} $B$r@_Dj$7$F(B -$B$$$k$H!"1?$,0-$$$H5-;v%P%C%U%!$K$O8N>c$7$?$h$&$J2hLL$,8+$($k$3$H(B -$B$b$"$k$G$7$g$&!#$3$l$OHr$1$h$&$,$"$j$^$;$s!#(B - -GNUS $B$d(B Gnus $B$G$O!"$3$N$?$A$N0-$$LdBj$G6C$+$5$l$J$$$h$&$K$9$k$K$O!"35N,%P%C(B -$B%U%!$K$*$$$F@Z$jBX$(5!G=$r;H$&$H$$$&$N$,:GA1$+$bCN$l$^$;$s!JNc$($P!"(B -@samp{alt.sing-a-long} $B%0%k!<%W$KF~$k$H!"$"$J$?$N5$$E$+$J$$$&$A$K(B -@sc{mime} $B$O5-;vCf$N%5%&%s%I%U%!%$%k$rI|9f$7$F!"2?$d$i2x$7$2$JD9$$D9$$2N$,(B -$B$"$J$?$N%9%T!<%+!<$+$iBg2;6A$GN.$l=P$7!"$"$J$?$O%\%j%e!<%`%\%?%s$r8+$D$1$i(B -$B$l$:!"$H$$$&$N$O$=$s$J$b$N$O$b$H$b$H$D$$$F$J$$$+$i$G!"$_$s$J$O$"$J$?$NJ}$r(B -$BbK$_$O$8$a!"$"$J$?$O%W%m%0%i%`$r;_$a$h$&$H$9$k$1$I$G$-$J$/$F!"%\%j%e!<%`$r(B -$B@)8f$9$k%W%m%0%i%`$b8+$D$1$i$l$J$/$F!"$=$7$FIt20Cf$NA40w$OFMA3$"$J$?$N$3$H(B -$B$r7ZJN$N4c:9$7$G8+$k$h$&$K$J$C$F$7$^$$!"$"$J$?$O$A$g$C$HLLGr$/$J$$;W$$$r$9(B -$B$k!"$H$+!K!#(B - -$B8=o$K(B @code{gnus-show-mime} $B$r(B @code{nil} $B0J30$K$7(B -$B$F$*$-!"<~$j$K?M$,$$$J$$;~$r8+7W$i$C$F5-;v%P%C%U%!$K8=$o$l$k%\%?%s$r2!$7$^(B -$B$7$g$&!#(B +$B$H$G(B @sc{mime} $B$r07$$$^$9!#$3$N=i4|CM(B +$B$O(B @code{gnus-article-display-mime-message} $B$G$9!#$3$N4X?t(B +$B$O(B SEMI MIME-View $B%W%m%0%i%`$r8F$S=P$7$F\$7$$>pJs$O!"%^%K%e%"%k$r;2>H$7$F$/$@$5$$(B ($B$^$@(B +$B$J$$$1$I(B (;_;))$B!#(B + +@sc{mime} $B$r>o$K;HMQ$7$?$1$l$P!"(B +@code{gnus-show-mime} $B$r(B @code{t} $B$K@_Dj$7$F$/$@$5$$!#$7$+$7!"(B +@code{gnus-strict-mime} $B$,(B @code{nil} $B0J30$G$"$l$P!"(B@sc{mime} $B=hM}$O5-;v(B +$BCf$K(B @sc{mime} $B%X%C%@!<$,$"$k$H$-$N$_;HMQ$5$l$^$9!#(B +@code{gnus-show-mime} $B$r@_Dj$7$F$$$k$H!"1?$,0-$$$H5-;v%P%C%U%!$K$O8N>c$7(B +$B$?$h$&$J2hLL$,8+$($k$3$H$b$"$k$G$7$g$&!#$3$l$OHr$1$h$&$,$"$j$^$;$s!#(B + +GNUS $B$d(B Gnus $B$G$O!"$3$N$?$A$N0-$$LdBj$G6C$+$5$l$J$$$h$&$K$9$k$K$O!"35N,(B +$B%P%C%U%!$K$*$$$F@Z$jBX$(5!G=$r;H$&$H$$$&$N$,:GA1$+$bCN$l$^$;$s(B ($BNc$($P!"(B +@samp{alt.sing-a-long} $B%0%k!<%W$KF~$k$H!"$"$J$?$N5$$E$+$J$$$&$A(B +$B$K(B @sc{mime} $B$O5-;vCf$N%5%&%s%I%U%!%$%k$rI|9f$7$F!"2?$d$i2x$7$2$JD9$$D9(B +$B$$2N$,$"$J$?$N%9%T!<%+!<$+$iBg2;6A$GN.$l=P$7!"$"$J$?$O%\%j%e!<%`%\%?%s$r(B +$B8+$D$1$i$l$:!"$H$$$&$N$O$=$s$J$b$N$O$b$H$b$H$D$$$F$J$$$+$i$G!"$_$s$J$O$"(B +$B$J$?$NJ}$rbK$_$O$8$a!"$"$J$?$O%W%m%0%i%`$r;_$a$h$&$H$9$k$1$I$G$-$J$/$F!"(B +$B%\%j%e!<%`$r@)8f$9$k%W%m%0%i%`$b8+$D$1$i$l$J$/$F!"$=$7$FIt20Cf$NA40w$OFM(B +$BA3$"$J$?$N$3$H$r7ZJN$N4c:9$7$G8+$k$h$&$K$J$C$F$7$^$$!"$"$J$?$O$A$g$C$HLL(B +$BGr$/$J$$;W$$$r$9$k!"$H$+(B)$B!#(B + +$B8=o$K(B @code{gnus-show-mime} $B$r(B @code{nil} $B0J30(B +$B$K$7$F$*$-!"<~$j$K?M$,$$$J$$;~$r8+7W$i$C$F5-;v%P%C%U%!$K8=$o$l$k%\%?%s$r(B +$B2!$7$^$7$g$&!#(B @c Also see @pxref{MIME Commands}. - @node Customizing Articles @section $B5-;v$N%+%9%?%^%$%:(B @cindex article customization @@ -8920,7 +8908,6 @@ GNUS $B$d(B Gnus $B$G$O!"$3$N$?$A$N0-$$LdBj$G6C$+$5$l$J$$$h$&$K$9$k$K$O!"35N, $B$"$j$^$;$s(B---$B2?$G$bJQ$($k$3$H$,$G$-$^$9!#$7$+$7!"%X%C%@!<$r>C$7$F$O$$$1(B $B$^$;$s!#(B - @node Article Keymap @section $B5-;v$N%-!(B @@ -8993,9 +8978,9 @@ GNUS $B$d(B Gnus $B$G$O!"$3$N$?$A$N0-$$LdBj$G6C$+$5$l$J$$$h$&$K$9$k$K$O!"35N, @item gnus-single-article-buffer @vindex gnus-single-article-buffer -@code{nil} $B0J30$G$"$l$P!"A4$F$N%0%k!<%W$KBP$7$FF1$85-;v%P%C%U%!$r;HMQ$7$^(B -$B$9!J$3$l$O%G%#%U%)%k%H$G$9!K!#(B@code{nil} $B$G$"$l$P!"3F%0%k!<%WKh$N8GM-$N5-(B -$B;v%P%C%U%!$r;}$D$h$&$K$J$j$^$9!#(B +@code{nil} $B0J30$G$"$l$P!"A4$F$N%0%k!<%W$KBP$7$FF1$85-;v%P%C%U%!$r;HMQ$7(B +$B$^$9(B ($B$3$l$O%G%#%U%)%k%H$G$9(B)$B!#(B@code{nil} $B$G$"$l$P!"3F%0%k!<%WKh$N8GM-$N(B +$B5-;v%P%C%U%!$r;}$D$h$&$K$J$j$^$9!#(B @c FIXMETGNUS Default value is nil for T-gnus. @vindex gnus-article-decode-hook @@ -9005,10 +8990,9 @@ GNUS $B$d(B Gnus $B$G$O!"$3$N$?$A$N0-$$LdBj$G6C$+$5$l$J$$$h$&$K$9$k$K$O!"35N, @vindex gnus-article-prepare-hook @item gnus-article-prepare-hook -$B$3$N%U%C%/$O5-;v$,5-;v%P%C%U%!$K=q$-9~$^$l$?D>8e$K8F$S=P$5$l$^$9!#(B -$B$3$l$O8e$K8F$S=P$5$l$^$9!#$3$l$O(B +$Bl=j$4$H$K(B -$BJGJ,3d$7$^$9!#$3$NJQ?t$,(B @code{nil} $B$G$"$l$PJGJ,$1$O9T$o$l$^$;$s!#(B +$B2~JG(B @dfn{page breaking} $B$r9T$&$+$I$&$+$r@)8f$7$^$9!#$3$NJQ?t(B +$B$,(B @code{nil} $B0J30$G$"$l$P!"5-;vCf$KJG6h@Z$jJ8;z$,8=$l$?>l=j$4$H$KJGJ,3d(B +$B$7$^$9!#$3$NJQ?t$,(B @code{nil} $B$G$"$l$PJGJ,$1$O9T$o$l$^$;$s!#(B @item gnus-page-delimiter @vindex gnus-page-delimiter -$B$3$l$,>e$G?($l$?6h@Z$jJ8;z$G$9!#%G%#%U%)%k%H$G$O(B @samp{^L} ($B%U%)!<(B -$B%`%U%#!<%I!"2~JG(B) $B$G$9!#(B +$B$3$l$,>e$G?($l$?6h@Z$jJ8;z$G$9!#%G%#%U%)%k%H$G$O(B @samp{^L} ($B%U%)!<%`(B +$B%U%#!<%I!"2~JG(B) $B$G$9!#(B @end table - @node Composing Messages @chapter $B%a%C%;!<%8$N:n@.(B @cindex composing messages @@ -9059,30 +9042,29 @@ GNUS $B$d(B Gnus $B$G$O!"$3$N$?$A$N0-$$LdBj$G6C$+$5$l$J$$$h$&$K$9$k$K$O!"35N, @cindex post @kindex C-c C-c ($BEj9F(B) -$BA4$F$NEj9F$H%a!<%k$NL?Na$O!"(B@kbd{C-c C-c} $B$r2!$9;v$K$h$C$F!"5-;v$rAw?.$9$k(B -$BA0$K5-;v$r9%$-$J$h$&$KJT=8$9$k;v$N$G$-$k!"%a%C%;!<%8%P%C%U%!$K0\F0$7$^$9!#(B -@xref{Top, , Top, message, The Message Manual}$B!#5-;v$O$"$J$?$N@_Dj$K4p$E(B -$B$$$FAw?.$5$l$^$9(B (@pxref{Posting Server})$B!#(B +$BA4$F$NEj9F$H%a!<%k$NL?Na$O!"(B@kbd{C-c C-c} $B$r2!$9;v$K$h$C$F!"5-;v$rAw?.$9(B +$B$kA0$K5-;v$r9%$-$J$h$&$KJT=8$9$k;v$N$G$-$k!"%a%C%;!<%8%P%C%U%!$K0\F0$7$^(B +$B$9!#(B@xref{Top, , Top, message, The Message Manual}$B!#5-;v$O$"$J$?$N@_Dj$K(B +$B4p$E$$$FAw?.$5$l$^$9(B (@pxref{Posting Server})$B!#(B @menu -* Mail:: $B%a!<%k$HJVEz!#(B -* Post:: $BEj9F$H%U%)%m!<%"%C%W!#(B -* Posting Server:: $B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+!)(B -* Mail and Post:: $BF1;~$K%a!<%k$r=P$7JVEz$9$k!#(B -* Archived Messages:: $BAw$C$?%a%C%;!<%8$r(B gnus $B$,Cy$a$F$*$/$H$3$m!#(B -* Posting Styles:: $B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}K!!#(B -* Drafts:: $B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8!#(B -* Rejected Articles:: $B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K2?$,5/$3$k!)(B +* Mail:: $B%a!<%k$HJVEz(B +* Post:: $BEj9F$H%U%)%m!<%"%C%W(B +* Posting Server:: $B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+(B? +* Mail and Post:: $BF1;~$K%a!<%k$r=P$7JVEz$9$k(B +* Archived Messages:: $BAw$C$?%a%C%;!<%8$r(B gnus $B$,Cy$a$F$*$/$H$3$m(B +* Posting Styles:: $B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}K!(B +* Drafts:: $B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8(B +* Rejected Articles:: $B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K2?$,5/$3$k(B? @end menu $BEj9F$9$k$Y$-$G$J$+$C$?5-;v$r:o=|$9$k$?$a$N>pJs$O(B @pxref{Canceling and Superseding} $B$r;2>H$7$F$/$@$5$$!#(B - @node Mail @section $B%a!<%k(B -$B=P$F9T$/%a!<%k$r%+%9%?%^%$%:$9$kJQ?t$G$9!'(B +$B=P$F9T$/%a!<%k$r%+%9%?%^%$%:$9$kJQ?t$G$9(B: @table @code @item gnus-uu-digest-headers @@ -9098,27 +9080,27 @@ Superseding} $B$r;2>H$7$F$/$@$5$$!#(B @c @item message-send-mail-partially-limit @c @vindex message-send-mail-partially-limit @c The limitation of messages sent as message/partial. -@c The lower bound of message size in characters, beyond which the message +@c The lower bound of message size in characters, beyond which the message @c should be sent in several parts. If it is nil, the size is unlimited. @end table - @node Post @section $BEj9F(B -$B%K%e!<%95-;v:n@.$N$?$a$NJQ?t!'(B +$B%K%e!<%95-;v:n@.$N$?$a$NJQ?t(B: @table @code @item gnus-sent-message-ids-file @vindex gnus-sent-message-ids-file -Gnus $B$OAw?.$7$?A4$F$N%a!<%k$N(B @code{Message-ID} $BMzNr%U%!%$%k(B (history -file) $B$rJ]B8$7$^$9!#$b$7%a!<%k$r4{$KAw$C$?;v$,H/8+$5$l$?$J$i!"MxMQ$^$J$$$N$G$"$l$P!"$3$NJQ?t$r(B @code{nil} $B$K@_Dj$9$k;v$,$G$-$^$9!#(B +Gnus $B$OAw?.$7$?A4$F$N%a!<%k$N(B @code{Message-ID} $BMzNr%U%!%$(B +$B%k(B (history file) $B$rJ]B8$7$^$9!#$b$7%a!<%k$r4{$KAw$C$?;v$,H/8+$5$l$?$J$i!"(B +$BMxMQ$^$J$$$N$G$"$l$P!"$3$NJQ?t$r(B @code{nil} $B$K@_Dj$9(B +$B$k;v$,$G$-$^$9!#(B @item gnus-sent-message-ids-length @vindex gnus-sent-messages-ids-length @@ -9127,43 +9109,41 @@ file) $B$rJ]B8$7$^$9!#$b$7%a!<%k$r4{$KAw$C$?;v$,H/8+$5$l$?$J$i!"MxMQo$KCNE*$J!K5-;v$rAw$j=P$9$?$a$K!"$"$NKbK!$N$h$&$J(B -@kbd{C-c C-c} $B%-!<$r2!$7$?;~!"$=$l$O$I$3$K$$$/$N$G$7$g$&!)(B +$B:G?7$N(B ($B$b$A$m$s!"Hs>o$KCNE*$J(B) $B5-;v$rAw$j=P$9$?$a$K!"$"$NKbK!$N$h$&(B +$B$J(B @kbd{C-c C-c} $B%-!<$r2!$7$?;~!"$=$l$O$I$3$K$$$/$N$G$7$g$&(B? $B?R$M$F$/$l$F$"$j$,$H$&!#$"$J$?$r:($_$^$9!#(B @vindex gnus-post-method -$B$=$l$OHs>o$KJ#;($K$J$jF@$^$9!#IaDL$O!"(Bgnus $B$OF1$84pK\%5!<%P!<$r;HMQ$7$^$9!#(B -$B$7$+$7!#$"$J$?$N4pK\%5!<%P!<$,Ej9F$r5v2D$;$:!"FI$`$3$H$N$_$r5v2D$7$F$$$k$N(B -$B$J$i$P!"$*$=$i$/$"$J$?$N!JHs>o$KCNE*$G$H$s$G$b$J$/6=L#?<$$!K5-;v$rEj9F$9$k(B -$B$?$a$K!"B>$N%5!<%P!<$r;H$$$?$$$H;W$&$G$7$g$&!#(B@code{gnus-post-method} $B$rB>(B -$B$NJ}K!$K@_Dj$9$k;v$,$G$-$^$9!#(B +$B$=$l$OHs>o$KJ#;($K$J$jF@$^$9!#IaDL$O!"(Bgnus $B$OF1$84pK\%5!<%P!<$r;HMQ$7$^(B +$B$9!#$7$+$7!#$"$J$?$N4pK\%5!<%P!<$,Ej9F$r5v2D$;$:!"FI$`$3$H$N$_$r5v2D$7$F(B +$B$$$k$N$J$i$P!"$*$=$i$/$"$J$?$N(B ($BHs>o$KCNE*$G$H$s$G$b$J$/6=L#?<$$(B) $B5-;v$r(B +$BEj9F$9$k$?$a$K!"B>$N%5!<%P!<$r;H$$$?$$$H;W$&$G$7$g$&!#(B +@code{gnus-post-method} $B$rB>$NJ}K!$K@_Dj$9$k;v$,$G$-$^$9!#(B @lisp (setq gnus-post-method '(nnspool "")) @end lisp -$B$5$F!"$3$N@_Dj$r$7$?8e$G%5!<%P!<$,$"$J$?$N5-;v$r5qH]$7$?$j!"%5!<%P!<$,Mn$A(B -$B$F$$$?$j$7$?$i!"$I$&$7$?$i$h$$$N$G$7$g$&!)$3$NJQ?t$r>e=q$-$9$k$?$a$K!"L?Na(B -@kbd{C-c C-c} $B$KNm$G$J$$@\F,0z?t$rM?$($k;v$G!"Ej9F$K!X8=:_$N!Y%5!<%P!<$r;H(B -$B$o$;$k;v$,$G$-$^$9!#(B +$B$5$F!"$3$N@_Dj$r$7$?8e$G%5!<%P!<$,$"$J$?$N5-;v$r5qH]$7$?$j!"%5!<%P!<$,Mn(B +$B$A$F$$$?$j$7$?$i!"$I$&$7$?$i$h$$$N$G$7$g$&(B? $B$3$NJQ?t$r>e=q$-$9$k$?$a$K!"(B +$BL?Na(B @kbd{C-c C-c} $B$KNm$G$J$$@\F,0z?t$rM?$($k;v$G!"Ej9F$K!X8=:_$N!Y%5!<(B +$B%P!<$r;H$o$;$k;v$,$G$-$^$9!#(B -$B$b$7!"Nm@\F,0z?t$r$=$NL?Na$KM?$($?$J$i!J$9$J$o$A!"(B@kbd{C-u 0 C-c C-c}$B!K!"(B +$B$b$7!"Nm@\F,0z?t$r$=$NL?Na$KM?$($?$J$i(B ($B$9$J$o$A!"(B@kbd{C-u 0 C-c C-c})$B!"(B gnus $B$OEj9F$K$I$NJ}K!$r;H$&$+$r$"$J$?$K?R$M$^$9!#(B @code{gnus-post-method} $B$rA*BrJ}K!$N%j%9%H$K$9$k;v$b$G$-$^$9!#$=$N>l9g$O!"(B gnus $B$O>o$KEj9F$K$I$NJ}K!$r;H$&$+$r$"$J$?$K?R$M$^$9!#(B - @node Mail and Post @section $B%a!<%k$HEj9F(B -$B$3$l$O%a!<%k$r=P$9;v$HEj9F$9$k;v$NN>J}$K4XO"$9$kJQ?t$N%j%9%H$G$9!'(B +$B$3$l$O%a!<%k$r=P$9;v$HEj9F$9$k;v$NN>J}$K4XO"$9$kJQ?t$N%j%9%H$G$9(B: @table @code @item gnus-mailing-list-groups @@ -9173,18 +9153,19 @@ gnus $B$O>o$KEj9F$K$I$NJ}K!$r;H$&$+$r$"$J$?$K?R$M$^$9!#(B $B$b$7$"$J$?$N%K%e!<%9%5!<%P!<$,K\Ev$K%a!<%j%s%0%j%9%H$+$i(B @sc{nntp} $B%5!<(B $B%P!<$X$N%2!<%H%&%'%$$rDs6!$7$F$$$k$N$G$"$l$P!"$=$l$i$N%0%k!<%W$OLdBj$J$/(B $BFI$a$k$G$7$g$&!#$7$+$74JC1$K$O$=$l$i$KEj9F(B/$B%U%)%m!<%"%C%W$9$k$3$H$O$G$-(B -$B$^$;$s!#0l$D$N2r7hK!$O(B $B%0%k!<%W%Q%i%a!<%?(B (@pxref{Group Parameters}) $B$K(B -@code{to-address} $B$r2C$($k;v$G$9!#4JC1$K$G$-$k$N$O!"(B -@code{gnus-mailing-list-groups} $B$r!"K\Ev$K%a!<%j%s%0%j%9%H$G$"$k$h$&$J%0(B -$B%k!<%W$K9gCW$9$k@55,I=8=$K@_Dj$9$k$3$H$G$9!#$=$N8e$O!"$9$/$J$/$H$b!"%a!<(B -$B%j%s%0%j%9%H$X$N%U%)%m!<%"%C%W$O$?$$$F$$$N$H$-$KF0:n$7$^$9!#$3$l$i$N%0%k!<(B -$B%W$KEj9F$9$k;v$O(B (@kbd{a}) $B$=$l$G$b6lDK$r0z$-5/$3$9$G$7$g$&$1$I!#(B +$B$^$;$s!#0l$D$N2r7hK!$O(B $B%0%k!<%W%Q%i%a!<(B +$B%?(B (@pxref{Group Parameters}) $B$K(B @code{to-address} $B$r2C$($k;v$G$9!#4JC1(B +$B$K$G$-$k$N$O!"(B@code{gnus-mailing-list-groups} $B$r!"K\Ev$K%a!<%j%s%0%j%9%H(B +$B$G$"$k$h$&$J%0%k!<%W$K9gCW$9$k@55,I=8=$K@_Dj$9$k$3$H$G$9!#$=$N8e$O!"$9$/(B +$B$J$/$H$b!"%a!<%j%s%0%j%9%H$X$N%U%)%m!<%"%C%W$O$?$$$F$$$N$H$-$KF0:n$7$^$9!#(B +$B$3$l$i$N%0%k!<%W$KEj9F$9$k;v$O(B (@kbd{a}) $B$=$l$G$b6lDK$r0z$-5/$3$9$G$7$g(B +$B$&$1$I!#(B @end table $B$"$J$?$O<+J,$,Aw$k%a%C%;!<%8$NDV$j$rD4$Y$?$$$H;W$&$+$bCN$l$^$;$s!#$b$7$/(B -$B$O!"$b$7o$KEj9F$K$I$NJ}K!$r;H$&$+$r$"$J$?$K?R$M$^$9!#(B $B$"$J$?$NI,MW$K1~$8$FJQ99$7$F2<$5$$!#(B - @node Archived Messages @section $B%a%C%;!<%8$NJ]4I(B @cindex archived messages @cindex sent messages -Gnus $B$O$"$J$?$,Aw$C$?%a!<%k$H%K%e!<%9$rCy$a$F$*$/$?$a$N$$$/$D$+$N0c$C$?J}(B -$BK!$rDs6!$7$^$9!#%G%#%U%)%k%H$NJ}K!$O%a%C%;!<%8$rJ]B8$9$k$?$a$K(B@dfn{$B;ve(B -$B$N=q8K%5!<%P!<(B}(archive virtual server)$B$r;H$$$^$9!#$3$l$r40A4$K6X;_$7$?$$(B -$B$N$G$"$l$P!"JQ?t(B @code{gnus-message-archive-group} $B$O(B @code{nil} $B$K$J$k$Y(B -$B$-$G!"$3$l$,%G%#%U%)%k%H$G$9!#(B +Gnus $B$O$"$J$?$,Aw$C$?%a!<%k$H%K%e!<%9$rCy$a$F$*$/$?$a$N$$$/$D$+$N0c$C$?(B +$BJ}K!$rDs6!$7$^$9!#%G%#%U%)%k%H$NJ}K!$O%a%C%;!<%8$rJ]B8$9$k$?$a(B +$B$K(B @dfn{$B;ve$N=q8K%5!<%P!<(B}(archive virtual server) $B$r;H$$$^$9!#$3$l$r(B +$B40A4$K6X;_$7$?$$$N$G$"$l$P!"(B +$BJQ?t(B @code{gnus-message-archive-group} $B$O(B @code{nil} $B$K$J$k$Y$-$G!"$3$l(B +$B$,%G%#%U%)%k%H$G$9!#(B @vindex gnus-message-archive-method -@code{gnus-message-archive-method} $B$OAw$C$?%a%C%;!<%8$rC_@Q$9$k$?$a$K$I$N(B -$B;ve$N%5!<%P!<$r(B gnus $B$,;H$&$Y$-$+$r;XDj$7$^$9!#%G%#%U%)%k%H$O!'(B +@code{gnus-message-archive-method} $B$OAw$C$?%a%C%;!<%8$rC_@Q$9$k$?$a$K$I(B +$B$N;ve$N%5!<%P!<$r(B gnus $B$,;H$&$Y$-$+$r;XDj$7$^$9!#%G%#%U%)%k%H$O(B: @lisp (nnfolder "archive" @@ -9231,10 +9212,10 @@ Gnus $B$O$"$J$?$,Aw$C$?%a!<%k$H%K%e!<%9$rCy$a$F$*$/$?$a$N$$$/$D$+$N0c$C$?J}(B (nnfolder-inhibit-expiry t)) @end lisp -$B$7$+$7!"$I$N%a!<%kA*BrJ}K!$G$b;H$&;v$,$G$-$^$9!J(B@code{nnml}, -@code{nnmbox} $B$J$I$J$I!K!#$7$+$7(B @code{nnfolder} $B$O$3$N$h$&$J;v$r$9$k$N$K(B -$B$H$F$b9%$^$7$$A*BrJ}K!$G$9!#%G%#%U%)%k%H$N%G%#%l%/%H%j!e$N$=$N%5!<%P!<$N%0%k!<(B -$B%W$X8~$+$&(B @code{Gcc} $BMs$rA^F~$7$^$9!#$I$N%0%k!<%W$r;H$&$+$OJQ?t(B -@code{gnus-message-archive-group} $B$K$h$C$F7h$^$j$^$9!#(B +Gnus $B$O30$X=P$F9T$/A4$F$N%a%C%;!<%8$K!"0l$D$+$=$l0J>e$N$=$N%5!<%P!<$N%0(B +$B%k!<%W$X8~$+$&(B @code{Gcc} $BMs$rA^F~$7$^$9!#$I$N%0%k!<%W$r;H$&$+$OJQ(B +$B?t(B @code{gnus-message-archive-group} $B$K$h$C$F7h$^$j$^$9!#(B -$B$3$NJQ?t$O$KA*BrJ}K!$r4^$a$k$3$H$,$G$-$^$9$,!"$=$&$9$k$H$=$N%a%C(B +$B%;!<%8$O(B @code{gnus-message-archive-method} $B$G;XDj$7$?A*BrJ}K!$G$O$J$/$F!"(B +$BBe$o$j$K%0%k!<%WL>$NA*BrJ}K!$GJ]B8$5$l$k$3$H$KCm0U$7$^$7$g$&!#>e$K<($7$?(B +$B$h$&$K(B @code{gnus-message-archive-method} $B$O!"%G%#%U%)%k%HCM$r;}$D$b$N$G(B +$B$"$k$H9M$($F2<$5$$!#$G$9$+(B +$B$i(B @code{gnus-message-archive-group} $B$r(B @code{"foo"} $B$K$7$F$*$1$P!"30$X(B +$B=P$F9T$/%a%C%;!<%8$O(B @samp{nnfolder+archive:foo} $B$KJ]B8$5$l$^$9$,!"$b$7(B +$B$"$J$?$,(B @code{"nnml:foo"} $B$H$$$&CM$r;H$&$H!"(B@samp{nnml:foo} $B$KJ]B8$5$l(B +$B$^$9!#(B +@samp{nnml:foo}. @item $BJ8;zNs$N%j%9%H(B $B%a%C%;!<%8$O$=$l$i$NA4$F$N%0%k!<%W$KJ]B8$5$l$^$9!#(B @item $B@55,I=8=!"4X?t!"MM<0$NO"A[%j%9%H(B @@ -9263,19 +9255,19 @@ Gnus $B$O30$X=P$F9T$/A4$F$N%a%C%;!<%8$K!"0l$D$+$=$l0J>e$N$=$N%5!<%P!<$N%0%k!<( $B%a%C%;!<%8$NJ]B8$O9T$o$l$^$;$s!#$3$l$,%G%#%U%)%k%H$G$9!#(B @end itemize -$B;n$7$F$_$^$7$g$&!'(B +$B;n$7$F$_$^$7$g$&(B: -@samp{MisK} $B$H8F$P$l$k0l$D$N%0%k!<%W$KJ]B8$9$k$J$i$P!'(B +@samp{MisK} $B$H8F$P$l$k0l$D$N%0%k!<%W$KJ]B8$9$k$J$i$P(B: @lisp (setq gnus-message-archive-group "MisK") @end lisp -2$B$D$N%0%k!<%W!"(B@samp{MisK} $B$H(B @samp{safe} $B$KJ]B8$9$k$J$i$P!'(B +$BFs$D$N%0%k!<%W!"(B@samp{MisK} $B$H(B @samp{safe} $B$KJ]B8$9$k$J$i$P(B: @lisp (setq gnus-message-archive-group '("MisK" "safe")) @end lisp -$B$I$N%0%k!<%W$K$$$k$+$K$h$C$F0c$C$?%0%k!<%W$KJ]B8$9$k$J$i!'(B +$B$I$N%0%k!<%W$K$$$k$+$K$h$C$F0c$C$?%0%k!<%W$KJ]B8$9$k$J$i(B: @lisp (setq gnus-message-archive-group '(("^alt" "sent-to-alt") @@ -9283,7 +9275,7 @@ Gnus $B$O30$X=P$F9T$/A4$F$N%a%C%;!<%8$K!"0l$D$+$=$l0J>e$N$=$N%5!<%P!<$N%0%k!<( (".*" "sent-to-misc"))) @end lisp -$B$b$C$HJ#;($J$b$N!'(B +$B$b$C$HJ#;($J$b$N(B: @lisp (setq gnus-message-archive-group '((if (message-news-p) @@ -9291,8 +9283,8 @@ Gnus $B$O30$X=P$F9T$/A4$F$N%a%C%;!<%8$K!"0l$D$+$=$l0J>e$N$=$N%5!<%P!<$N%0%k!<( "misc-mail"))) @end lisp -$BA4$F$N%K%e!<%9%a%C%;!<%8$r0l$D$N%U%!%$%k$KJ]B8$7$F!"%a!<%k%a%C%;!<%8$r0l7n(B -$B$K$D$-0l$D$N%U%!%$%k$KJ]B8$9$k$K$O!'(B +$BA4$F$N%K%e!<%9%a%C%;!<%8$r0l$D$N%U%!%$%k$KJ]B8$7$F!"%a!<%k%a%C%;!<%8$r0l(B +$B7n$K$D$-0l$D$N%U%!%$%k$KJ]B8$9$k$K$O(B: @lisp (setq gnus-message-archive-group @@ -9302,18 +9294,19 @@ Gnus $B$O30$X=P$F9T$/A4$F$N%a%C%;!<%8$K!"0l$D$+$=$l0J>e$N$=$N%5!<%P!<$N%0%k!<( "%Y-%m" (current-time)))))) @end lisp -$B!J(BXEmacs 19.13 $B$K$O(B @code{format-time-string} $B$O$"$j$^$;$s$N$G!"$=$N(B -@code{gnus-message-archive-group} $B$N$?$a$K0c$C$?CM$r;H$o$J$1$l$P$J$j$^$;$s!#!K(B +(XEmacs 19.13 $B$K$O(B @code{format-time-string} $B$O$"$j$^$;$s$N$G!"$=(B +$B$N(B @code{gnus-message-archive-group} $B$N$?$a$K0c$C$?CM$r;H$o$J$1$l$P$J$j(B +$B$^$;$s!#(B) -$B:#$d!"%a%C%;!<%8$rAw$k$H!"$=$l$OE,@Z$J%0%k!<%W$KJ]B8$5$l$^$9!#!J$b$7FCDj$N(B -$B%a%C%;!<%8$KBP$7$FJ]B8$r$7$?$/$J$$$N$G$"$l$P!"A^F~$5$l$?(B @code{Gcc} $BMs$r$N%0%k!<%W(B -$B$HF1$8$h$&$K$=$N%0%k!<%W$KF~$C$F!"5-;v$rFI$`;v$,$G$-$^$9!#$=$N%0%k!<%W$,K\(B -$BEv$KBg$-$/$J$C$F7y$K$J$C$?$i!"$J$K$+NI$$$b$N$K$=$NL>A0$rJQ99$9$k;v$,$G$-$^(B -$B$9!J%0%k!<%W%P%C%U%!$G(B @kbd{G r} $B$r;H$&;v$K$h$C$F!K!=!=(B -@samp{misc-mail-september-1995} $B$dB>$N$b$K!#?7$7$$%a%C%;!<%8$O8E$$!J:#$O6u(B -$B$K$J$C$?!K%0%k!<%W$KN/$a$i$l$^$9!#(B +$B:#$d!"%a%C%;!<%8$rAw$k$H!"$=$l$OE,@Z$J%0%k!<%W$KJ]B8$5$l$^$9!#(B($B$b$7FCDj(B +$B$N%a%C%;!<%8$KBP$7$FJ]B8$r$7$?$/$J$$$N$G$"$l$P!"A^F~$5$l$?(B @code{Gcc} $BMs(B +$B$r$N(B +$B%0%k!<%W$HF1$8$h$&$K$=$N%0%k!<%W$KF~$C$F!"5-;v$rFI$`;v$,$G$-$^$9!#$=$N%0(B +$B%k!<%W$,K\Ev$KBg$-$/$J$C$F7y$K$J$C$?$i!"$J$K$+NI$$$b$N$K$=$NL>A0$rJQ99$9(B +$B$k;v$,$G$-$^$9(B ($B%0%k!<%W%P%C%U%!$G(B @kbd{G r} $B$r;H$&;v$K$h$C$F(B) $B!=!=(B +@samp{misc-mail-september-1995} $B$dB>$N$b$K!#?7$7$$%a%C%;!<%8$O8E$$(B ($B:#$O(B +$B6u$K$J$C$?(B) $B%0%k!<%W$KN/$a$i$l$^$9!#(B $B0J>e$,Aw$C$?%a%C%;!<%8$rJ]4I$9$k%G%#%U%)%k%H$NJ}K!$G$9!#(BGnus $B$O%G%#%U%)(B $B%k%H$NJ}K!$r9%$-$G$O$J$$?M$K$O0c$C$?$d$jJ}$r4+$a$F$$$^$9!#$=$N$h$&$J>l9g(B @@ -9328,15 +9321,14 @@ Gnus $B$O30$X=P$F9T$/A4$F$N%a%C%;!<%8$K!"0l$D$+$=$l0J>e$N$=$N%5!<%P!<$N%0%k!<( $BJQ?t$r$=$NCM$K@_Dj$9$k;v$,$G$-$^$9!#$3$NJQ?t$O%0%k!<%WL>$N%j%9%H$G$"$k;v(B $B$b$G$-$^$9!#(B -$B$b$7$=$l$>$l$N%a%C%;!<%8$r$I$N%0%k!<%W$KF~$l$k$+$r$b$C$H@)8f$7$?$$$N$G$"$l(B -$B$P!"$3$NJQ?t$r8=:_$N%K%e!<%9%0%k!<%WL>$rD4$Y$F!"E,@Z$J%0%k!<%WL>!J$b$7$/$O(B -$BL>A0$N%j%9%H!K$rJV$94X?t$K@_Dj$9$k;v$,$G$-$^$9!#(B +$B$b$7$=$l$>$l$N%a%C%;!<%8$r$I$N%0%k!<%W$KF~$l$k$+$r$b$C$H@)8f$7$?$$$N$G$"(B +$B$l$P!"$3$NJQ?t$r8=:_$N%K%e!<%9%0%k!<%WL>$rD4$Y$F!"E,@Z$J%0%k!<%WL>(B ($B$b$7(B +$B$/$OL>A0$N%j%9%H(B) $B$rJV$94X?t$K@_Dj$9$k;v$,$G$-$^$9!#(B $B$3$NJQ?t$O(B @code{gnus-message-archive-group} $B$NBe$o$j$K;H$&;v$,$G$-$^$9(B $B$,!"8ee$N$=$N%5!<%P!<$N%0%k!<( $B$=$l$i$O$9$Y$FJQ?t$G!"$=$l$O;d$NF,$r1K$,$;$^$9!#(B -$B$=$l$G!"$J$<$I$N%0%k!<%W$KEj9F$9$k$+$K$h$C$F0c$C$?(B @code{Organization} -$B$H=pL>$rK>$`$N$G$7$g$&$+!)$=$7$F!"$"$J$?$O2HDm$N%^%7%s$H?&>l$N%^%7%s$NN>(B -$BJ}$+$iEj9F$7$F!"0c$C$?(B @code{From} $B9T$d$=$NB>$N$b$N$rK>$`$N$G$9$+!)(B +$B$=$l$G!"$J$<$I$N%0%k!<%W$KEj9F$9$k$+$K$h$C$F0c$C(B +$B$?(B @code{Organization} $B$H=pL>$rK>$`$N$G$7$g$&$+(B? $B$=$7$F!"$"$J$?$O2HDm$N(B +$B%^%7%s$H?&>l$N%^%7%s$NN>J}$+$iEj9F$7$F!"0c$C$?(B @code{From} $B9T$d$=$NB>$N(B +$B$b$N$rK>$`$N$G$9$+(B? @vindex gnus-posting-styles $B$=$N$h$&$J;v$r$9$kJ}K!$N0l$D$OJQ99$5$l$kI,MW$N$"$kJQ?t$rJQ99$9$k8-$$%U%C(B $B%/$r=q$/;v$G$9!#$=$l$O>/$7B`6~$J$N$G!"MxMQe$N$=$N%5!<%P!<$N%0%k!<( (organization "Emacs is it"))) @end lisp -$B$3$NNc$+$i?dB,$5$l$k$h$&$K!"$3$NO"A[%j%9%H$O$$$/$D$+$N(B @dfn{$BMM<0(B} -(style) $B$+$i$J$C$F$$$^$9!#$=$l$>$l$NMM<0$O:G=i$NMWAG$,2?$i$+$N7A$G(B ``$B9g(B -$BCW(B'' $B$7$?$H$-$KE,MQ$5$l$^$9!#O"A[%j%9%HA4BN$O:G=i$+$i:G8e$^$GH?I|$7$F$l$N9gCW$,E,MQ$5$l$^$9!#$3$l$O!"8e$NMM<0$NB0@-$,A0$K9gCW$7(B -$B$?MM<0$NB0@-$r>e=q$-$9$k$H8@$&;v$G$9!#$G$9$+$i!"(B -@samp{comp.programming.literate} $B$O!"=pL>(B @samp{Death to everybody} $B$H(B -@code{Organization} $B%X%C%@!<(B @samp{What me?} $B$r;}$A$^$9!#(B +$B$3$NNc$+$i?dB,$5$l$k$h$&$K!"$3$NO"A[%j%9%H$O$$$/$D$+(B +$B$N(B @dfn{$BMM<0(B} (style) $B$+$i$J$C$F$$$^$9!#$=$l$>$l$NMM<0$O:G=i$NMWAG$,2?$i(B +$B$+$N7A$G(B ``$B9gCW(B'' $B$7$?$H$-$KE,MQ$5$l$^$9!#O"A[%j%9%HA4BN$O:G=i$+$i:G8e$^(B +$B$GH?I|$7$F$l$N9gCW$,E,MQ$5$l$^$9!#$3$l$O!"8e$NMM<0$NB0@-(B +$B$,A0$K9gCW$7$?MM<0$NB0@-$r>e=q$-$9$k$H8@$&;v$G$9!#$G$9$+$i!"(B +@samp{comp.programming.literate} $B$O!"=p(B +$BL>(B @samp{Death to everybody} $B$H(B @code{Organization} $B%X%C(B +$B%@!<(B @samp{What me?} $B$r;}$A$^$9!#(B $B$=$l$>$l$NMM<0$N:G=i$NMWAG$O(B @code{$B9gCW(B} (match) $B$H8F$P$l$^$9!#$b$7$=$l(B $B$,J8;zNs$G$"$l$P!"(Bgnus $B$O$=$l$r%0%k!<%WL>$K@55,I=8=$H$7$F9gCWA`:n$r9T$$(B @@ -9383,22 +9377,22 @@ Gnus $B$O30$X=P$F9T$/A4$F$N%a%C%;!<%8$K!"0l$D$+$=$l0J>e$N$=$N%5!<%P!<$N%0%k!<( $B$=$l$>$l$NMM<0$OG$0U$NNL$N(B @dfn{$BB0@-(B} $B$r;}$D;v$,$G$-$^$9!#$=$l$>$l$NB0@-(B $B$O(B @code{(@var{name} . @var{value})} $B$NBP$K$h$j@.$jN)$C$F$$$^$9!#B0@-L>(B -$B$O!"(B@code{signature}, @code{signature-file}, @code{organization}, -@code{address}, @code{name}, @code{body} $B$N$I$l$+$G$"$k;v$,$G$-$^$9!#B0(B -$B@-L>$OJ8;zNs$G$"$k;v$b$G$-$^$9!#$=$N>l9g$O!"$3$l$O%X%C%@!$H$7$F;H$o$l!"(B -$B$=$NCM$,5-;v$N%X%C%@!<$KA^F~$5$l$^$9!#$b$7B0@-L>$,(B @code{nil} $B$@$C$?$i$=(B -$B$N%X%C%@!$O:o=|$5$l$^$9!#$b$7B0@-L>$,(B @code{eval} $B$@$C$?$i$=$NMM<0$,(B -$BI>2A$5$l!"7k2L$O$OJ8;zNs$G$"$k;v$b$G$-$^$9!#$=$N>l9g$O!"(B +$B$3$l$O%X%C%@!$H$7$F;H$o$l!"$=$NCM$,5-;v$N%X%C%@!<$KA^F~$5$l$^$9!#$b$7(B +$BB0@-L>$,(B @code{nil} $B$@$C$?$i$=$N%X%C%@!$O:o=|$5$l$^$9!#$b$7B0@-L>(B +$B$,(B @code{eval} $B$@$C$?$i$=$NMM<0$,I>2A$5$l!"7k2L$O2A(B} $B$5$l$F!"JV$j(B -$BCM$,;H$o$l$^$9(B) $B$G$"$k;v$,$G$-$^$9!#4X?t$O%;%C%H%"%C%W$5$l$?%a%C%;!<%8(B -$B%P%C%U%!$G8F$P$l(B (@code{eval} $B$5$l(B) $B$^$9!#8=:_$N5-;v$N%X%C%@!<$OJQ?t(B -@code{message-reply-headers} $B$+$iF@$i$l$^$9!#(B +$BCM$,;H$o$l$^$9(B) $B$G$"$k;v$,$G$-$^$9!#4X?t$O%;%C%H%"%C%W$5$l$?%a%C%;!<%8%P%C(B +$B%U%!$G8F$P$l(B (@code{eval} $B$5$l(B) $B$^$9!#8=:_$N5-;v$N%X%C%@!<$OJQ(B +$B?t(B @code{message-reply-headers} $B$+$iF@$i$l$^$9!#(B $B$b$7!":n@.$7$h$&$H$7$F$$$k%a%C%;!<%8$,%K%e!<%95-;v$+%a!<%k%a%C%;!<%8$G$"(B -$B$k$+$rD4$Y$?$$$H$-$O!"(B2$B$D$N4X?t(B @code{message-news-p} $B$H(B -@code{message-mail-p} $B$r;H$&$3$H$K$h$C$FCN$k;v$,$G$-$^$9!#(B +$B$k$+$rD4$Y$?$$$H$-$O!"Fs$D$N4X(B +$B?t(B @code{message-news-p} $B$H(B @code{message-mail-p} $B$r;H$&$3$H$K$h$C$FCN$k(B +$B;v$,$G$-$^$9!#(B @findex message-mail-p @findex message-news-p @@ -9418,42 +9412,49 @@ Gnus $B$O30$X=P$F9T$/A4$F$N%a%C%;!<%8$K!"0l$D$+$=$l0J>e$N$=$N%5!<%P!<$N%0%k!<( (signature my-quote-randomizer)) ((message-news-p) (signature my-news-signature)) - (header "From.*To" "larsi.*org" + (header "From\\|To" "larsi.*org" (Organization "Somewhere, Inc.")) ((posting-from-work-p) (signature-file "~/.work-signature") (address "user@@bar.foo") (body "You are fired.\n\nSincerely, your boss.") (organization "Important Work, Inc")) + ("nnml:.*" + (From (save-excursion + (set-buffer gnus-article-buffer) + (message-fetch-field "to")))) ("^nn.+:" (signature-file "~/.mail-signature")))) @end lisp +@samp{nnml:.*} $B$N5,B'$O!"$"$J$?$,=P$9$9$Y$F$NJV;v$N(B @code{To} $B%"%I%l%9(B +$B$r(B @code{From} $B%"%I%l%9$H$7$F;H$&$3$H$r0UL#$7$^$9!#$3$l$O!"$"$J$?$,$?$/(B +$B$5$s$N%a!<%j%s%0%j%9%H$K;22C$7$F$$$k>l9g$KJXMx$G$7$g$&!#(B @node Drafts @section $B2<=q$-(B @cindex drafts -$B$b$7%a%C%;!<%8!J%a!<%k$b$7$/$O%K%e!<%9!K$r=q$$$F$$$k$H$-$K!"FMA3%*!<%V%s(B -$B$K%9%F!<%-$,F~$C$F$$$k;v$r;W$$=P$7$?$J$i!J$b$7$/$O!"$"$J$?$,$H!<$C$F$b$9(B -$B$4$$:Z?)C$75n$kM#0l$NJ}K!$O!"$=$l$rL$9XFI$K$9$k$3$H$G$9!#(B @@ -9478,48 +9479,46 @@ Gnus $B$O30$X=P$F9T$/A4$F$N%a%C%;!<%8$K!"0l$D$+$=$l0J>e$N$=$N%5!<%P!<$N%0%k!<( @c @code{gnus-use-draft} to @code{nil}. It is @code{t} by default. @findex gnus-draft-edit-message -@kindex D e$B!J2<=q$-!K(B -$B5-;v$NJT=8$rB3$1$?$$$H$-$O!"2<=q$-%0%k!<%W$KF~$C$F(B @kbd{D e} -(@code{gnus-draft-edit-message}) $B$r2!$9$@$1$G$9!#$"$J$?$,;D$7$?>uBV$N%P%C(B -$B%U%!$K0\F0$7$^$9!#(B +@kindex D e ($B2<=q$-(B) +$B5-;v$NJT=8$rB3$1$?$$$H$-$O!"2<=q$-%0%k!<%W$KF~$C(B +$B$F(B @kbd{D e} (@code{gnus-draft-edit-message}) $B$r2!$9$@$1$G$9!#$"$J$?$,;D(B +$B$7$?>uBV$N%P%C%U%!$K0\F0$7$^$9!#(B -$B5qH]$5$l$?5-;v$b$3$N2<=q$-%0%k!<%W$KF~$l$i$l$^$9(B (@pxref{Rejected -Articles})$B!#(B +$B5qH]$5$l$?5-;v$b$3$N2<=q$-%0%k!<%W$KF~$l$i$l$^(B +$B$9(B (@pxref{Rejected Articles})$B!#(B @findex gnus-draft-send-all-messages @findex gnus-draft-send-message -$B$=$l0J>eJT=8$7$J$$$GEj9F!J$b$7$/$O%a!<%k!K$7$?$$5qH]$5$l$?%a%C%;!<%8$,$?$/(B -$B$5$s$"$k$N$G$"$l$P!"L?Na(B @kbd{D s} $B$r;H$&;v$,$G$-$^$9!#$3$NL?Na$O%W%m%;%9(B -/$B@\F,0z?t$N=,47$rM}2r$7$^$9(B (@pxref{Process/Prefix})$B!#L?Na(B @kbd{D S} -(@code{gnus-draft-send-all-messages}) $B$O%P%C%U%!$NA4$F$N%a%C%;!<%8$rAw$j=P(B -$B$7$^$9!#(B - -$BAw$j$?$/$J$$%a%C%;!<%8$,$$$/$D$+$"$k$N$G$"$l$P!"L?Na(B @kbd{D t} -(@code{gnus-draft-toggle-sending}) $B$r;H$C$F%a%C%;!<%8$rG[AwIT2D$N0u$rIU(B -$B$1$k;v$,$G$-$^$9!#$3$l$O@Z$jBX$(L?Na$G$9!#(B +$B$=$l0J>eJT=8$7$J$$$GEj9F(B ($B$b$7$/$O%a!<%k(B) $B$7$?$$5qH]$5$l$?%a%C%;!<%8$,$?(B +$B$/$5$s$"$k$N$G$"$l$P!"L?Na(B @kbd{D s} $B$r;H$&;v$,$G$-$^$9!#$3$NL?Na$O%W%m(B +$B%;%9(B/$B@\F,0z?t$N=,47$rM}2r$7$^$9(B (@pxref{Process/Prefix})$B!#L?(B +$BNa(B @kbd{D S} (@code{gnus-draft-send-all-messages}) $B$O%P%C%U%!$NA4$F$N%a%C(B +$B%;!<%8$rAw$j=P$7$^$9!#(B +$BAw$j$?$/$J$$%a%C%;!<%8$,$$$/$D$+$"$k$N$G$"$l$P!"L?(B +$BNa(B @kbd{D t} (@code{gnus-draft-toggle-sending}) $B$r;H$C$F%a%C%;!<%8$rG[Aw(B +$BIT2D$N0u$rIU$1$k;v$,$G$-$^$9!#$3$l$O@Z$jBX$(L?Na$G$9!#(B @node Rejected Articles @section $B5qH]$5$l$?5-;v(B @cindex rejected articles -$B;~!9%K%e!<%9%5!<%P!<$O5-;v$r5qH]$7$^$9!#$*$=$i$/%5!<%P!<$O$"$J$?$N4i$r9%$-(B -$B$G$O$J$$$N$G$7$g$&!#$*$=$i$/$=$l$O;4$a$K46$8$?$+$i$G$7$g$&!#$*$=$i$/(B -@emph{$B0-Kb(B (demon) $B$,$$$k$N$G$7$g$&(B}$B!#(B $B$*$=$i$/0zMQJ8$rF~$l$9$.$?$N$G$7$g(B -$B$&!#$*$=$i$/%G%#%9%/$,0lGU$@$C$?$N$G$7$g$&!#$*$=$i$/%5!<%P!<$,Mn$A$F$$$?$N(B -$B$G$7$g$&!#(B +$B;~!9%K%e!<%9%5!<%P!<$O5-;v$r5qH]$7$^$9!#$*$=$i$/%5!<%P!<$O$"$J$?$N4i$r9%(B +$B$-$G$O$J$$$N$G$7$g$&!#$*$=$i$/$=$l$O;4$a$K46$8$?$+$i$G$7$g$&!#$*$=$i(B +$B$/(B @emph{$B0-Kb(B (demon) $B$,$$$k$N$G$7$g$&(B}$B!#$*$=$i$/0zMQJ8$rF~$l$9$.$?$N$G(B +$B$7$g$&!#$*$=$i$/%G%#%9%/$,0lGU$@$C$?$N$G$7$g$&!#$*$=$i$/%5!<%P!<$,Mn$A$F(B +$B$$$?$N$G$7$g$&!#(B -$B$3$l$i$N>u67$O!"$b$A$m$s!"40A4$K(B gnus $B$N07$($kHO0O30$G$9!#!J(BGnus $B$O!"$b$A(B +$B$3$l$i$N>u67$O!"$b$A$m$s!"40A4$K(B gnus $B$N07$($kHO0O30$G$9!#(B(Gnus $B$O!"$b$A(B $B$m$s!"$"$J$?$N308+$r0&$7$F$*$j!"$$$D$b5!7y$,NI$/!"Cf$rHt$S2s$kE7;H$,$$$F!"(B $B$I$l$/$i$$0zMQJ8$,4^$^$l$F$$$h$&$H5$$K$;$:!"0lGU$K$J$C$?$j!"Mn$C$3$A$?$j(B -$B$7$^$;$s!#!K$G$9$+$i!"(Bgnus $B$O$3$l$i$N5-;v$r8e$G%5!<%P!<$N5$J,$,$h$/$J$k(B +$B$7$^$;$s!#(B) $B$G$9$+$i!"(Bgnus $B$O$3$l$i$N5-;v$r8e$G%5!<%P!<$N5$J,$,$h$/$J$k(B $B$^$GJ]B8$7$^$9!#(B $B5qH]$5$l$?5-;v$O<+F0E*$KFCJL$J2<=q$-%0%k!<%W(B (@pxref{Drafts}) $B$KF~$l$i$l(B $B$^$9!#%5!<%P!<$,La$C$F$-$?$J$i!"IaDL$O$=$N%0%k!<%W$KF~$C$FA4$F$N5-;v$rAw(B $B$j$^$9!#(B - @node Select Methods @chapter $BA*BrJ}K!(B @cindex foreign groups @@ -9530,35 +9529,35 @@ Articles})$B!#(B $B$N%0%k!<%W$G$"$C$?$j!";ve$N%0%k!<%W$G$"$C$?$j!"8D?ME*$J%a!<%k%0%k!<%W(B $B$G$"$C$?$j$9$k$G$7$g$&!#(B -$B30It%0%k!<%W(B ($B$b$7$/$O!"K\Ev$KA4$F%0%k!<%W(B) $B$O(B @dfn{$BL>A0(B} $B$H(B - @dfn{$BA*BrJ}K!(B} $B$G;XDj$5$l$^$9!#8e(B} $B$G$"$kO"A[%j%9%H$G$9!#A*(B -$BBrJ}K!$K$O!"$=$NEv$N%P%C%/%(%s%I$K$H$C$FFCJL$N0UL#$r;}$DCM$G$"$kDI2C$NMW(B -$BAG$,$"$k$+$bCN$l$^$;$s!#(B +$B30It%0%k!<%W(B ($B$b$7$/$O!"K\Ev$KA4$F%0%k!<(B +$B%W(B) $B$O(B @dfn{$BL>A0(B} $B$H(B @dfn{$BA*BrJ}K!(B} $B$G;XDj$5$l$^$9!#8e(B} $B$G$"$kO"A[%j%9%H$G$9!#A*BrJ}K!$K$O!"$=$N(B +$BEv$N%P%C%/%(%s%I$K$H$C$FFCJL$N0UL#$r;}$DCM$G$"$kDI2C$NMWAG$,$"$k$+$bCN$l(B +$B$^$;$s!#(B $BA*BrJ}K!$O(B @dfn{$B;ve$N%5!<%P!<(B} $B$rDj5A$9$k$H8@$&$3$H$,$G$-$k$+$b$7$l$^(B -$B$;$s(B---$B$G$9$+$i;d$?$A$O$A$g$&$I$=$l$r$7$^$7$?(B (@pxref{The Server -Buffer})$B!#(B +$B$;$s(B---$B$G$9$+$i;d$?$A$O$A$g$&$I$=$l$r$7$^$7(B +$B$?(B (@pxref{The Server Buffer})$B!#(B $B%0%k!<%W$N(B @dfn{$BL>A0(B} $B$O%P%C%/%(%s%I$,%0%k!<%W$rG'<1$9$kL>A0$G$9!#(B -$B$?$H$($P!"(B@sc{nntp} $B%5!<%P!<$N%0%k!<%W(B @samp{soc.motss} $B$OL>A0(B -@samp{soc.motss} $B$HA*BrJ}K!(B @code{(nntp "some.where.edu")} $B$r;}$A$^$9!#(B +$B$?$H$($P!"(B@sc{nntp} $B%5!<%P!<$N%0%k!<%W(B @samp{soc.motss} $B$OL>(B +$BA0(B @samp{soc.motss} $B$HA*BrJ}K!(B @code{(nntp "some.where.edu")} $B$r;}$A$^$9!#(B @code{nntp} $B%P%C%/%(%s%I$O$3$N%0%k!<%W$r(B @samp{soc.motss} $B$H$7$FCN$C$F$$(B -$B$k$@$1$G$9$,!"(Bgnus $B$O$3$N%0%k!<%W$r(B @samp{nntp+some.where.edu:soc.motss} -$B$H8F$S$^$9!#(B +$B$k$@$1$G$9$,!"(Bgnus $B$O$3$N%0%k!<%W(B +$B$r(B @samp{nntp+some.where.edu:soc.motss}$B$H8F$S$^$9!#(B $B$b$A$m$s!"0c$C$?J}K!$OA4$F$=$lFCM-$N$b$N$,$"$j$^$9!#(B @menu -* The Server Buffer:: $B;ve$N%5!<%P!<$r:n$C$FJT=8$9$k!#(B -* Getting News:: USENET $B%K%e!<%9$r(B gnus $B$GFI$`!#(B -* Getting Mail:: $B8D?ME*$J%a!<%k$r(B gnus $B$GFI$`!#(B -* Browsing the Web:: $B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$re$N%5!<%P!<$r:n$C$FJT=8$9$k(B +* Getting News:: USENET $B%K%e!<%9$r(B gnus $B$GFI$`(B +* Getting Mail:: $B8D?ME*$J%a!<%k$r(B gnus $B$GFI$`(B +* Browsing the Web:: $B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k!#(B -* Unavailable Servers:: $B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn$A$F$$$k$+$b$7$l$J$$!#(B +* Server Buffer Format:: $B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k(B +* Server Commands:: $B%5!<%P!<$rA`$kL?Na(B +* Example Methods:: $B%5!<%P!<;XDj$NNc(B +* Creating a Virtual Server:: $B%;%C%7%g%s$NNc(B +* Server Variables:: $B$I$NJQ?t$r@_Dj$9$k$+(B +* Servers and Methods:: $B%5!<%P!$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k(B +* Unavailable Servers:: $B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn$A(B + $B$F$$$k$+$b$7$l$J$$(B @end menu @vindex gnus-server-mode-hook -$B%5!<%P!<%P%C%U%!$r:n@.$9$k$H$-$K(B @code{gnus-server-mode-hook} $B$,H$7$F$/$@$5$$!#(B - @node Server Commands @subsection $B%5!<%P!A0$G!"(B2$BHVL\$O(B -@dfn{$B%"%I%l%9(B} (address) $B!"$b$7$/$O$=$&8F$S$?$$$N$G$"$l$P!"(B@dfn{$BL>A0(B} $B$G(B -$B$9!#(B +$B8+$?$H$*$j!"A*BrJ}K!$N:G=i$NMWAG$O%P%C%/%(%s%I$NL>A0$G!"FsHVL\(B +$B$O(B @dfn{$B%"%I%l%9(B} (address)$B!"$b$7$/$O$=$&8F$S$?$$$N$G$"$l$P!"(B +@dfn{$BL>A0(B} $B$G$9!#(B -$B$3$l$i$N(B2$B$D$NMWAG$N8e$K$O!"G$0U$N?t$N(B @code{(@var{$BJQ?t(B} @var{$BMM<0(B})} $B$N(B -$BBP$rF~$l$k;v$,$G$-$^$9!#(B +$B$3$l$i$NFs$D$NMWAG$N8e$K$O!"G$0U$N?t(B +$B$N(B @code{(@var{$BJQ?t(B} @var{$BMM<0(B})} $B$NBP$rF~$l$k;v$,$G$-$^$9!#(B -$B:G=i$NNc$KLa$j$^$7$g$&(B---$B$=$N%^%7%s$N%]!<%H(B15$B$+$iFI$_$?$+$C$?$H;W$C$F$/(B -$B$@$5$$!#$3$l$,$=$N;~$K!"$J$k$Y$-A*BrJ}K!$G$9(B: +$B:G=i$NNc$KLa$j$^$7$g$&(B---$B$=$N%^%7%s$N%]!<%H(B 15 $B$+$iFI$_$?$+$C$?$H;W$C$F(B +$B$/$@$5$$!#$3$l$,$=$N;~$K!"$J$k$Y$-A*BrJ}K!$G$9(B: @lisp (nntp "news.funet.fi" (nntp-port-number 15)) @@ -9717,7 +9716,7 @@ Buffer})$B!#(B $BFI$`$Y$-$G$7$g$&$,!"$3$l$O(B @code{nnmh} $B$NNc$G$9!#(B @code{nnml} $B$O%9%W!<%k$N$h$&$J9=B$$GFI$`%a!<%k%P%C%/%(%s%I$G$9!#Nc$($P!"(B -$B@\?($r?^$j$?$$(B2$B$D$N9=B$$,$"$k$H$7$^$7$g$&(B: $B0l$D$O$"$J$?$N;dE*$J%a!<%k%9(B +$B@\?($r?^$j$?$$Fs$D$N9=B$$,$"$k$H$7$^$7$g$&(B: $B0l$D$O$"$J$?$N;dE*$J%a!<%k%9(B $B%W!<%k$G!"B>J}$O8xE*$J$b$N$G$9!#$3$l$O;dE*$J%a!<%k$N$?$a$K;HMQ2DG=$J;XDj(B $B$G$9(B: @@ -9736,9 +9735,12 @@ Buffer})$B!#(B (nnmh-get-new-mail nil)) @end lisp +@cindex proxy +@cindex firewall + $BKIJI(B (firewall) $B$NCf$K$$$F!"KIJI%^%7%s$+$i$N(B @sc{nntp} $B%5!<%P!<$X$N@\B3(B -$B$7$+$J$$$N$G$"$l$P!"(Bgnus $B$KKIJI%^%7%s$K(B @code{rlogin} $B$7$F!"$=$3$+$i(B -@sc{nntp} $B%5!<%P!<$K(B telnet $B$r$9$k$h$&$K;X<($9$k;v$,$G$-$^$9!#(B +$B$7$+$J$$$N$G$"$l$P!"(Bgnus $B$KKIJI%^%7%s$K(B @code{rlogin} $B$7$F!"$=$3$+(B +$B$i(B @sc{nntp} $B%5!<%P!<$K(B telnet $B$r$9$k$h$&$K;X<($9$k;v$,$G$-$^$9!#(B $B$3$l$r$9$k;v$O>/$7$P$+$i$7$$$G$9$,!";ve$N%5!<%P!<$NDj5A$O$*$=$i$/$3$N(B $B$h$&$J$b$N$K$J$k$Y$-$G$9(B: @@ -9766,9 +9768,8 @@ Buffer})$B!#(B @end lisp $B$3$l$O$b$A$m$s!"<+F0G'>Z$rDs6!$9$k$?$a$K(B @code{ssh-agent} $B$rE,@Z$K@_Dj$7(B -$B$J$1$l$P$J$j$^$;$s!#05=L$5$l$?@\B3$rF@$k$?$a$K$O!"(B@code{ssh}$B$N%U%!%$%k(B -@file{config} $B$G(B @samp{Compression} $B%*%W%7%g%s$,$"$kI,MW$,$"$j$^$9!#(B - +$B$J$1$l$P$J$j$^$;$s!#05=L$5$l$?@\B3$rF@$k$?$a$K$O!"(B@code{ssh}$B$N%U%!%$(B +$B%k(B @file{config} $B$G(B @samp{Compression} $B%*%W%7%g%s$,$"$kI,MW$,$"$j$^$9!#(B @node Creating a Virtual Server @subsection $B;ve$N%5!<%P!<$r:n@.$9$k(B @@ -9805,7 +9806,6 @@ Buffer})$B!#(B $Be$N%5!<%P!<$G(B @kbd{RET} $B$r2!$9$H!"1\Mw%P%C%U%!$KF~$k$Y$-$G!"I=<($5$l(B $B$F$$$k$I$N%0%k!<%W$K$G$bF~$k;v$,$G$-$k$O$:$G$9!#(B - @node Server Variables @subsection $B%5!<%P!e$N(B @code{nnml} $B%5!<%P!<$rDj5A$7$?>l9g!"(B@code{nnml-directory} $B$r@_Dj(B $B$9$k$@$1$G$O=$s$@>uBV$K$J$k$h$&$K!"(B @@ -9832,7 +9832,6 @@ Buffer})$B!#(B (nnml-newsgroups-file "~/my-mail/newsgroups")) @end lisp - @node Servers and Methods @subsection $B%5!<%P!<$HJ}K!(B @@ -9842,7 +9841,6 @@ Buffer})$B!#(B $B%I$rC!$+$J$/$F$9$`2DG=@-$,$"$j$^$9!#$=$7$F!"A4$F$K$o$?$C$F!"$=$NJ}$,NI$$(B $B$G$9!#(B - @node Unavailable Servers @subsection $B;HMQIT2DG=$J%5!<%P!<(B @@ -9853,18 +9851,18 @@ Buffer})$B!#(B $B$2$^$9!#(B $B$=$l$O9T57$,0-$$$H;W$&;v$,$"$k$+$b$7$l$^$;$s$,!"$=$l$O$?$$$F$$$N$H$-$K$O(B -$BNI$$J}K!$G$9!#Nc$($P!"%5!<%P!<(B @samp{nephelococcdyia.com} $B$K(B10$B8D9XFI$7$F(B -$B$$$k%0%k!<%W$,$"$k$H$7$^$7$g$&!#%5!<%P!<$O$I$3$+Hs>o$K1s$/$K$"$j!"%^%7%s(B -$B$O$H$F$bCY$$$N$G!"$=$l$,:#F|$O$"$J$?$H$N@\B3$r5qH]$9$k$+$I$&$+$rD4$Y$k$@(B -$B$1$G(B1$BJ,$+$+$j$^$9!#$b$7(B gnus $B$,$=$l$r(B10$B2s;n$9$h$&$K$J$C$F$$$?$J$i!"$"$J(B -$B$?$OHs>o$K$&$k$5$/;W$&$G$7$g$&!#$G$9$+$i!"(Bgnus $B$O$=$l$r;n$=$&$H$O$7$^$;(B -$B$s!#(B1$BEY(B ``connection refused'' ($B@\B3$O5qH]$5$l$^$7$?(B) $B$ro$K1s$/$K$"$j!"%^%7(B +$B%s$O$H$F$bCY$$$N$G!"$=$l$,:#F|$O$"$J$?$H$N@\B3$r5qH]$9$k$+$I$&$+$rD4$Y$k(B +$B$@$1$G0lJ,$+$+$j$^$9!#$b$7(B gnus $B$,$=$l$r(B 10 $B2s;n$9$h$&$K$J$C$F$$$?$J$i!"(B +$B$"$J$?$OHs>o$K$&$k$5$/;W$&$G$7$g$&!#$G$9$+$i!"(Bgnus $B$O$=$l$r;n$=$&$H$O$7(B +$B$^$;$s!#0lEY(B ``connection refused'' ($B@\B3$O5qH]$5$l$^$7$?(B) $B$rC5n$7$^(B $B$9(B (@code{gnus-server-remove-denials})$B!#(B @end table - @node Getting News @section $B%K%e!<%9$NpJs$rJT=8$7$J$1$l$P$J$j$^$;$s(B -(@pxref{Foreign Groups})$B!#(B +$BA*BrJ}K!$N;0HVL\$NMWAG$r$3$N%]!<%H$N?t;z$K@_Dj$9$k;v$G@5$7$$%]!<%H$K@\B3(B +$B$9$k;v$,$G$-$k$G$7$g$&!#$=$N$?$a$K%0%k!<%W>pJs$rJT=8$7$J$1$l$P$J$j$^$;(B +$B$s(B (@pxref{Foreign Groups})$B!#(B $B30It%0%k!<%W$NL>A0$O4pK\%0%k!<%W$HF1$8$G$"$k;v$,$G$-$^$9!#C5n$7$^(B @findex nntp-send-authinfo @findex nntp-send-mode-reader $B$O@\B3$,$G$-$?8e$Ko$K$3$N%U%C%/$K$"$k$Y$-$G$9!#(B @item nntp-authinfo-function @@ -9954,28 +9950,29 @@ Gnus $B$,$I$l$+$N%5!<%P!<$+$i@\B35qH]$rC5n$7$^(B @findex nntp-send-authoinfo @vindex nntp-authinfo-file $B$3$N4X?t$O(B @sc{nntp} $B%5!<%P!<$K(B @samp{AUTHINFO} $B$rAw$k$?$a$K;H$o$l$^$9!#(B -$B%G%#%U%)%k%H$N4X?t$O(B @code{nntp-send-authinfo} $B$G!"(B@file{~/.authinfo} -($B$b$7$/$OJQ?t(B @code{nntp-authinfo-file} $B$K@_Dj$7$?$I$N$h$&$J$b$N$G$b(B) $B$r(B -$B;HMQ2DG=$J5-:\$rD4$Y$k$?$a$KC5$7$^$9!#$b$70l$D$b8+$D$+$i$J$+$C$?$i!"$"$J(B -$B$?$K%m%0%$%sL>$H%Q%9%o!<%I$NF~NO$rB%?J$7$^$9!#%U%!%$%k(B -@file{~/.authinfo} $B$NMM<0$O(B ($B$[$H$s$I(B) @code{ftp} $B$N%U%!%$%k(B -@file{~/.netrc} $B$HF1$8$G!"$=$l$O(B @code{ftp} $B$N%^%K%e%"%k%Z!<%8$KDj5A$5$l(B -$B$F$$$^$9$,!"$3$3$N$b$N$O82Cx$J;v$H%Q%9%o!<%I$NF~NO$rB%?J$7$^$9!#%U%!%$(B +$B%k(B @file{~/.authinfo} $B$NMM<0$O(B ($B$[$H$s$I(B) @code{ftp} $B$N%U%!%$(B +$B%k(B @file{~/.netrc} $B$HF1$8$G!"$=$l$O(B @code{ftp} $B$N%^%K%e%"%k%Z!<%8$KDj5A(B +$B$5$l$F$$$^$9$,!"$3$3$N$b$N$O82Cx$J;ve$N9T$r4^$_!"$=$l$>$l$O0l$D$N%5!<%P!<$rDj5A$7$^$9!#(B @item -$B$=$l$>$l$N9T$OG$0U$N?t$N(B $B6h@Z$j0u(B/$BCM(B $B$NBP$r4^$`;v$,$G$-$^$9!#M-8z$J6h@Z(B -$B$j0u$O(B @samp{machine}$B!"(B@samp{login}$B!"(B@samp{password}$B!"(B@samp{default}$B!"(B -@samp{port}$B!"(B@samp{force} $B$G$9!#(B -($B:G8e$N$b$N$OM-8z$J(B @code{.netrc}/@code{ftp} $B$N6h@Z$j0u$G$O$"$j$^$;$s!#(B -$B$3$l$,%U%!%$%k(B @file{.authinfo} $B$,(B @file{.netrc} $B%U%!%$%kMM<0$+$i0o$l$k(B -$B$[$H$s$IM#0l$NJ}K!$G$9!#(B) - +$B$=$l$>$l$N9T$OG$0U$N?t$N(B $B6h@Z$j0u(B/$BCM(B $B$NBP$r4^$`;v$,$G$-$^$9!#(B @end enumerate +$BM-8z$J6h@Z$j0u$O(B @samp{machine}, @samp{login}, @samp{password}, +@samp{default} $B$G$9!#(Bgnus $B$O(B @file{.netrc}/@code{ftp} $B$N9=J8$N867?$K$O8=(B +$B$l$J$$Fs$D$N?7$7$$6h@Z$j0u!"L>IU$1$F(B @samp{port} $B$H(B @samp{force} $B$rF3F~(B +$B$7$^$9!#(B($B$3$l$,(B @file{.authinfo} $B%U%!%$%k$NMM<0$,(B @file{.netrc} $B%U%!%$%k(B +$B$NMM<0$+$i0o$l$kM#0l$NJ}K!$G$9!#(B) @samp{port} $B$O%5!<%P!<$N$I$N%]!<%H$rG'(B +$B>Z$KMQ$$$k$+$r<($7!"(B@samp{force} $B$O0J2<$G@bL@$7$^$9!#(B + $B$3$l$,$=$N%U%!%$%k$NNc$G$9(B: @example @@ -9988,13 +9985,13 @@ machine nntp.ifi.uio.no login larsi force yes $B$3$NNc$G$O!"%m%0%$%sL>$H%Q%9%o!<%I$NN>J}$,A0$@$1$r5s$2$F$$$F!"MxMQZ>pJs(B (authinfo) $B$,Aw$i$l$k$H$$$&;v$G$9!#%G%#%U%)(B -$B%k%H(B ($B$9$P$o$A!"(B@samp{force} $B%?%0$,L5$$$H$-(B) $B$G$O(B @var{nntp} $B%5!<%P!<$,(B -$BG'>Z>pJs$r?R$M$J$$8B$j$=$l$r(B @var{nntp} $B%5!<%P!<$KAw$j$^$;$s!#(B +$B$rB%?J$5$l$^$9!#8eZ>pJs(B (authinfo) $B$,Aw$i$l$k$H$$$&;v$G$9!#%G%#(B +$B%U%)%k%H(B ($B$9$P$o$A!"(B@samp{force} $B%?%0$,L5$$$H$-(B) $B$G$O(B @var{nntp} $B%5!<%P!<(B +$B$,G'>Z>pJs$r?R$M$J$$8B$j$=$l$r(B @var{nntp} $B%5!<%P!<$KAw$j$^$;$s!#(B -@samp{machine} $B9T$K9gCW$7$J$$A4$F$N%5!<%P!<$KE,MQ$5$l$k(B @samp{default} -$B9T$rDI2C$9$k;v$b$G$-$^$9!#(B +@samp{machine} $B9T$K9gCW$7$J$$A4$F$N%5!<%P!<$KE,MQ$5$l(B +$B$k(B @samp{default} $B9T$rDI2C$9$k;v$b$G$-$^$9!#(B @example default force yes @@ -10035,9 +10032,10 @@ default force yes $B$b$7(B @sc{nntp} $B%5!<%P!<$,(B @sc{nov} $B%X%C%@!<$N5!G=$rDs6!$7$F$$$J$$$N$G$"(B $B$l$P!"$3$N%P%C%/%(%s%I$OL?Na(B @code{head} $B$r$$$/$D$bAw$C$F!"%X%C%@!<$r=8(B $B$a$^$9!#$3$NF0:n$rB.$/$9$k$?$a$K!"%P%C%/%(%s%I$OJVEz$rBT$?$:$K$3$NL?Na$r(B -$B$?$/$5$sAw$j!"$=$l$+$iA4$F$NJVEz$rFI$_$^$9!#$3$l$OJQ?t(B -@code{nntp-maximum-request} $B$K$h$C$F@)8f$5$l!"%G%#%U%)%k%H$G(B400$B$G$9!#$b(B -$B$7%M%C%H%o!<%/$,8N>c$,$A$G$"$k$J$i!"$3$NJQ?t$r(B1$B$K@_Dj$9$k$Y$-$G$7$g$&!#(B +$B$?$/$5$sAw$j!"$=$l$+$iA4$F$NJVEz$rFI$_$^$9!#$3$l$OJQ(B +$B?t(B @code{nntp-maximum-request} $B$K$h$C$F@)8f$5$l!"%G%#%U%)%k%H$G(B 400 $B$G$9!#(B +$B$b$7%M%C%H%o!<%/$,8N>c$,$A$G$"$k$J$i!"$3$NJQ?t$r(B 1 $B$K@_Dj$9$k$Y$-$G$7$g(B +$B$&!#(B @item nntp-connection-timeout @vindex nntp-connection-timeout @@ -10046,9 +10044,8 @@ default force yes $BJVEz$G$-$J$$$/$i$$Ii2Y$,$+$+$C$F$$$k!"$J$I$NLdBj$,$"$k$G$7$g$&!#$3$l$O:$$C(B $B$?LdBj$K$J$k$3$H$,$"$j$^$9$,!"(B@code{nntp-connection-timeout} $B$r@_Dj$9$k(B $B;v$K$h$j$"$kDxEY2r>C$9$k;v$,$G$-$^$9!#$3$l$O@\B3$r$"$-$i$a$k$^$($K!"(B -@code{nntp} $B%P%C%/%(%s%I$,2?ICBT$D$+$r<($9@0?t$G$9!#$b$7$3$l$,(B -@code{nil} $B$G$"$k$H!"$3$l$,=i4|@_Dj$G$9$,!";~4V@Z$l@ZCG$O$J$5$l$^$;(B -$B$s!#(B +@code{nntp} $B%P%C%/%(%s%I$,2?ICBT$D$+$r<($9@0?t$G$9!#$b$7$3$l(B +$B$,(B @code{nil} $B$G$"$k$H!"$3$l$,=i4|@_Dj$G$9$,!";~4V@Z$l@ZCG$O$J$5$l$^$;$s!#(B @c @item nntp-command-timeout @c @vindex nntp-command-timeout @@ -10079,7 +10076,7 @@ default force yes @findex nntp-open-network-stream @item nntp-open-connection-function @vindex nntp-open-connection-function -$B$3$N4X?t$O1s3V%7%9%F%`$K@\B3$9$k$?$a$K;H$o$l$^$9!#(B4$B$D$N4{@=4X?t$,Ds6!$5(B +$B$3$N4X?t$O1s3V%7%9%F%`$K@\B3$9$k$?$a$K;H$o$l$^$9!#;M$D$N4{@=4X?t$,Ds6!$5(B $B$l$F$$$^$9(B: @table @code @@ -10096,8 +10093,8 @@ default force yes @item nntp-rlogin-program @vindex nntp-rlogin-program -$B1s3V%^%7%s$K%m%0%$%s$r$9$k$?$a$K;H$o$l$k%W%m%0%i%`$G$9!#%G%#%U%)%k%H$O(B -@samp{rsh} $B$G$9$,!"(B@samp{ssh} $B$,?M5$$N$"$kBeBX *\r?} $B$G$9!#(B +$B1s3V%^%7%s$G$N%7%'%k$N%W%m%s%W%H$K9gCW$9$k@55,I=8=$G$9!#%G%#%U%)%k%H(B +$B$O(B @samp{bash\\|\$ *\r?$\\|> *\r?} $B$G$9!#(B @item nntp-open-telnet-envuser @vindex nntp-open-telnet-envuser @@ -10153,9 +10150,10 @@ default force yes @findex nntp-open-ssl-stream @item nntp-open-ssl-stream $B%5!<%P!<$K(B @dfn{$B0BA4$J(B} $B%A%c%s%M%k$r;H$C$F%5!<%P!<$K@\B3$7$^$9!#$3$l$r;H(B -$B$&$?$a$K$O!"(BSSLay $B$,%$%s%9%H!<%k$5$l$F$$$J$1$l$P$J$j$^$;$s(B -(@file{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL} $B$H!"(B@file{ssl.el} ($BNc$($P!"(B -W3 $B$NG[I[$+$i(B) $B$,I,MW$K$J$j$^$9(B)$B!#$=$l$+$i%5!<%P!<$rl9g$O!"$3$NJQ?t$rK\Ev(B -$B$K>.$5$J?t;z$K@_Dj$9$k$H$*$=$i$/l(B +$B9g$O!"$3$NJQ?t$rK\Ev$K>.$5$J?t;z$K@_Dj$9$k$H$*$=$i$/o$K4JC1$G!"Lr$KN)$A$^$9!#(B -$B$?$H$($P!"Hs>o$KBg$-$J5-;v$,$"$k%0%k!<%W(B---$BNc$($P(B -@samp{alt.binaries.pictures.furniture} $B$rFI$`B.EY$,B.$/$J$j$^$9!#(B +$B$?$H$($P!"Hs>o$KBg$-$J5-;v$,$"$k%0%k!<%W(B---$BNc$((B +$B$P(B @samp{alt.binaries.pictures.furniture} $B$rFI$`B.EY$,B.$/$J$j$^$9!#(B -$B$H$K$+$/!"(B@code{nnspool} $B$rJ}K!$H$7$F!"(B @code{""} ($B$b$7$/$O2?$G$b(B) $B$r%"(B -$B%I%l%9$H$7$F;XDj$9$k$@$1$G$9!#(B +$B$H$K$+$/!"(B@code{nnspool} $B$rJ}K!$H$7$F!"(B@code{""} ($B$b$7$/$O2?$G$b(B) $B$r%"%I(B +$B%l%9$H$7$F;XDj$9$k$@$1$G$9!#(B $B$b$7%m!<%+%k%9%W!<%k$K$D$J$0;v$,2DG=$J$i!"$*$=$i$/$=$l$r4pK\A*BrJ}K!$H$7(B -$B$F;H$&$Y$-$G$7$g$&(B (@pxref{Finding the News})$B!#$=$l$OIaDL$O(B @code{nntp} -$BA*BrJ}K!$h$jB.$$$G$9$,!"$=$&$G$J$$$+$b$7$l$^$;$s!#$=$l$O>u67$K0MB8$7$^$9!#(B -$B2?$,$"$J$?$N%5%$%H$G0lHVNI$$$+$r8+$D$1$k$?$a$K!"$$$m$$$m$H;n$7$F$_$J$1$l(B -$B$P$J$j$^$;$s!#(B +$B$F;H$&$Y$-$G$7$g$&(B (@pxref{Finding the News})$B!#$=$l$OIaDL(B +$B$O(B @code{nntp} $BA*BrJ}K!$h$jB.$$$G$9$,!"$=$&$G$J$$$+$b$7$l$^$;$s!#$=$l$O(B +$B>u67$K0MB8$7$^$9!#2?$,$"$J$?$N%5%$%H$G0lHVNI$$$+$r8+$D$1$k$?$a$K!"$$$m$$(B +$B$m$H;n$7$F$_$J$1$l$P$J$j$^$;$s!#(B @table @code @@ -10309,18 +10306,18 @@ LIST $B%3%^%s%I$N%*%W%7%g%s$K;H$C$F!"(B($B%5!<%P!<$N(B) $B%j%9%H=PNO$r@_Dj$ $B5-;v$rEj9F$9$k$H$-$K(B inews $B%W%m%0%i%`$KM?$($i$l$k%Q%i%a!<%?$G$9!#(B @item nnspool-spool-directory -@code{nnspool} $B$,5-;v$rC5$9$H$3$m$G$9!#$3$l$OIaDL$O(B -@file{/usr/spool/news/} $B$G$9!#(B +@code{nnspool} $B$,5-;v$rC5$9$H$3$m$G$9!#$3$l$OIaDL(B +$B$O(B @file{/usr/spool/news/} $B$G$9!#(B @item nnspool-nov-directory @vindex nnspool-nov-directory -@code{nnspool} $B$,(B @sc{nov} $B%U%!%$%k$rC5$9$H$3$m$G$9!#$3$l$OIaDL$O(B -@file{/usr/spool/news/over.view/} $B$G$9!#(B +@code{nnspool} $B$,(B @sc{nov} $B%U%!%$%k$rC5$9$H$3$m$G$9!#$3$l$OIaDL(B +$B$O(B @file{/usr/spool/news/over.view/} $B$G$9!#(B @item nnspool-lib-dir @vindex nnspool-lib-dir -$B%K%e!<%9$N%i%$%V%i%j!<%G%#%l%/%H%j!<$N>l=j$G$9(B ($B%G%#%U%)%k%H$G(B -@file{/usr/lib/news/} $B$G$9(B)$B!#(B +$B%K%e!<%9$N%i%$%V%i%j!<%G%#%l%/%H%j!<$N>l=j$G$9(B ($B%G%#%U%)%k%H(B +$B$G(B @file{/usr/lib/news/} $B$G$9(B)$B!#(B @item nnspool-active-file @vindex nnspool-active-file @@ -10352,33 +10349,34 @@ LIST $B%3%^%s%I$N%*%W%7%g%s$K;H$C$F!"(B($B%5!<%P!<$N(B) $B%j%9%H=PNO$r@_Dj$ @end table - @node Getting Mail @section $B%a!<%k$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(%s%I$r;H$&!#(B -* Choosing a Mail Backend:: Gnus $B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k!#(B +* Expiring Mail:: $BM_$7$/$J$$%a!<%k$r$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%((B + $B%s%I$r;H$&(B +* Choosing a Mail Backend:: Gnus $B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k(B @end menu - @node Mail in a Newsreader @subsection $B%K%e!<%9%j!<%@$G%a!<%k(B @@ -10439,7 +10437,6 @@ gnus $B$O%a!<%k$r%K%e!<%9%0%k!<%W$N$h$&$K(B ``$B%0%k!<%W(B'' $B$KJB$YJQ$($F $B$F$/$l$??M$O$=$l$rJ]>Z$7$F$$$^$9!#$"$J$?$bF12=$7$^$9!#$"$J$?$O(B gnus $B$r0&(B $B$7$^$9!#$"$J$?$O(B gnus $B$G$N%a!<%k$NJ}K!$r0&$7$^$9!#@dBP$K!#(B) - @node Getting Started Reading Mail @subsection $B%a!<%k$rFI$`;v$r;O$a$k(B @@ -10457,8 +10454,9 @@ Gnus $B$r;H$C$F?7$7$$%a!<%k$rFI$`;v$OHs>o$K4JC1$G$9!#$"$J$?$N%a!<%k%P%C%/(B $B:#$d!"$N%0%k!<%W$HF1$8$h$&$KFI$`;v$,$G$-$^$9!#(B +$B%U%)%k%H$G$O(B @code{~/Mail/}$B!"$K0\F0$7$^$9!#:n@.$5$l$??7$7$$%0%k!<(B +$B%W(B (@samp{mail.misc}) $B$,9XFI$5$l!"B>$N%0%k!<%W$HF1$8$h$&$KFI$`;v$,$G$-$^(B +$B$9!#(B $B$"$J$?$O$*$=$i$/%a!<%k$r$$$/$D$+$N%0%k!<%W$KJ,3d$7$?$$$G$7$g$&$1$I(B: @@ -10469,14 +10467,13 @@ Gnus $B$r;H$C$F?7$7$$%a!<%k$rFI$`;v$OHs>o$K4JC1$G$9!#$"$J$?$N%a!<%k%P%C%/(B ("other" ""))) @end lisp -$B$3$l$O7k2L$H$7$F(B3$B$D$N?7$7$$(B @code{nnml} $B%a!<%k%0%k!<%W$r:n$j$^$9(B: -@samp{nnml:junk}$B!"(B@samp{nnml:crazy}$B!"(B@samp{nnml:other} $B$G$9!#:G=i$N(B2$B$D$N(B -$B%0%k!<%W$K9g$o$J$$%a!<%k$OA4$F:G8e$N%0%k!<%W$KF~$l$i$l$^$9!#(B +$B$3$l$O7k2L$H$7$F;0$D$N?7$7$$(B @code{nnml} $B%a!<%k%0%k!<%W$r:n$j$^(B +$B$9(B: @samp{nnml:junk}, @samp{nnml:crazy}, @samp{nnml:other} $B$G$9!#:G=i(B +$B$NFs$D$N%0%k!<%W$K9g$o$J$$%a!<%k$OA4$F:G8e$N%0%k!<%W$KF~$l$i$l$^$9!#(B $B$3$l$O(B gnus $B$G%a!<%k$rFI$`$?$a$K=$N9`$r=OFI$7$?$$$H;W$&$+$b$7$l$^$;$s$,!#FC$K(B @pxref{Choosing a Mail -Backend} $B$H(B @pxref{Expiring Mail} $B$r!#(B - +$B$NB>$N9`$r=OFI$7$?$$$H;W$&$+$b$7$l$^$;$s$,!#FC(B +$B$K(B @pxref{Choosing a Mail Backend} $B$H(B @pxref{Expiring Mail} $B$r!#(B @node Splitting Mail @subsection $B%a!<%k$NJ,3d(B @@ -10496,8 +10493,8 @@ Backend} $B$H(B @pxref{Expiring Mail} $B$r!#(B $B$3$NJQ?t$O%j%9%H$N%j%9%H$G!"$3$l$i$N%j%9%H$N:G=i$N$=$l$>$l$NMWAG$,%a!<%k(B $B%0%k!<%W$NL>A0$G(B ($B$H$3$m$G!"$=$l$i$O(B @samp{mail} $B$G;O$^$kI,MW$O$"$j$^$;(B -$B$s(B)$B!"(B2$B$D$a$NMWAG$,$=$l$>$l$N%a!<%k$N%X%C%@!<$+$i$=$l$,$I$N%0%k!<%W$KB0$9(B -$B$k$+$r7hDj$9$k@55,I=8=$G$9!#:G=i$NJ8;zNs$O!"(B@code{replace-match} $B$K$h$C(B +$B$s(B)$B!"Fs$D$a$NMWAG$,$=$l$>$l$N%a!<%k$N%X%C%@!<$+$i$=$l$,$I$N%0%k!<%W$KB0(B +$B$9$k$+$r7hDj$9$k@55,I=8=$G$9!#:G=i$NJ8;zNs$O!"(B@code{replace-match} $B$K$h$C(B $B$F!"9gCW$7$?J8>O$+$i$NI{I=8=$rA^F~$9$k$?$a$K;H$o$l$k$h$&$J!"(B @code{samp\\1} $B$NMM<0$r4^$`$+$b$7$l$^$;$s!#$?$H$($P(B: @@ -10505,7 +10502,7 @@ Backend} $B$H(B @pxref{Expiring Mail} $B$r!#(B ("list.\\1" "From:.* \\(.*\\)-list@@majordomo.com") @end lisp -2$BHVL\$NMWAG$O4X?t$G$"$k;v$b$G$-$^$9!#$=$N>l9g$O!"$=$l$OK!B'$N:G=i$NMWAG(B +$BFsHVL\$NMWAG$O4X?t$G$"$k;v$b$G$-$^$9!#$=$N>l9g$O!"$=$l$OK!B'$N:G=i$NMWAG(B $B$r0z?t$H$7$F!"%X%C%@!<$KHO0O$r69$a$F(B (narrowed to headers) $B8F$P$l$^$9!#(B $B$=$l$O!"%a!<%k$,$=$N%0%k!<%W$KB0$9$k$H9M$($k$N$G$"$l$P!"(B@code{nil} $B$G$J(B $B$$CM$r5"$9I,MW$,$"$j$^$9!#(B @@ -10539,38 +10536,40 @@ Backend} $B$H(B @pxref{Expiring Mail} $B$r!#(B @code{nnmh} $B$H(B @code{nnml} $B$OAj8_Ej9F$5$l$?5-;v$K%O!<%I%j%s%/(B (hardlink) $B$r:n$k;v$K$h$C$FAj8_Ej9F$r9T$$$^$9!#$7$+$7!"A4$F$N%U%!%$%k%7%9%F%`$,%O!<(B $B%I%j%s%/$N5!G=$rDs6!$7$F$$$k$o$1$G$O$"$j$^$;$s!#$b$7$"$J$?$,$=$N>l9g$KEv(B -$B$F$O$^$k$N$G$"$l$P!"(B@code{nnmail-crosspost-link-function} $B$r(B -@code{copy-file} $B$K@_Dj$7$F$/$@$5$$!#(B ($B$3$NJQ?t$O%G%#%U%)%k%H$G(B -@code{add-name-to-file} $B$G$9!#(B) +$B$F$O$^$k$N$G$"$l$P!"(B +@code{nnmail-crosspost-link-function} $B$r(B @code{copy-file} $B$K@_Dj$7$F$/$@(B +$B$5$$!#(B($B$3$NJQ?t$O%G%#%U%)%k%H$G(B @code{add-name-to-file} $B$G$9!#(B) @kindex M-x nnmail-split-history @kindex nnmail-split-history $BA0$N%a!<%kJ,3d$,%a%C%;!<%8$r$I$3$KF~$l$?$+$r8+$?$$>l9g$O!"L?Na(B @kbd{M-x -nnmail-split-history} $B$r;H$&;v$,$G$-$^$9!#(B +nnmail-split-history} $B$r;H$&;v$,$G$-$^$9!#$3$l$+$i%9%W!<%k$7D>$=$&$H$9$k(B +$B%a%C%;!<%8$,$I$3$KF~$k$+$r8+$?$$>l9g$O!"(B +@code{gnus-summary-respool-trace} $B$H4XO"$9$kL?(B +$BNa(B (@pxref{Mail Group Commands}) $B$r;H$&;v$,$G$-$^$9!#(B Gnus $B$O$"$J$?$K<+J,<+?H$KD7$MJV$C$F$/$k$h$&$J2DG=@-$N$"$kA4$F$N5!2q$rDs(B $B6!$7$^$9!#Nc$($P!"$"$J$?$N>e;J$+$i$/$kA4$F$N%a!<%k$r4^$s$@%0%k!<%W$r:n$C(B $B$?$H$7$^$7$g$&!#$=$l$+$i!"6vH/E*$K$=$N%0%k!<%W$N9XFIe;J$+$i$NA4$F$N%a!<%k$rL$9XFI$N%0%k!<%W$KF~$l$^(B -$B$9$N$G!">e;J$,(B ''$B7nMKF|$^$G$K$=$NJs9p=q$r=`Hw$7$J$$$He;J$,(B ''$B7nMKF|$^$G$K$=$NJs9p=q$r=`Hw$7$J$$$H/dev/null && cat $TMP @end example $BL\E*$K9g$&$h$&$K;HMQ$7$?$$(B @samp{movemail} $B$K9g$o$;$F%9%/%j%W%H$r=q$-49(B $B$($F$/$@$5$$!#(B - @item directory -$B%G%#%l%/%H%j!A0$G$9!#=i4|CM$O(B @code{MAILHOST} $B4D6-JQ?t$+$i$G$J$1$l$P$J$j$^$;$s!#=i(B +$B4|CM$O(B @samp{pop3} $B$G$9!#(B @item :user POP $B%5!<%P!<$KM?$($kMxMQ$G$9!#=i4|CM$O%m%0%$%sL>$G$9!#(B @@ -10702,8 +10703,8 @@ POP $B%5!<%P!<$KM?$($k%Q%9%o!<%I$G$9!#;XDj$5$l$J$$>l9g$O!"MxMQ$l$N%U%!%$%k$,(B -$B@53N$K(B1$B%a!<%k$H$J$C$F$$$^$9!#(B +$B@53N$K(B 1 $B%a!<%k$H$J$C$F$$$^$9!#(B $B%-!<%o!<%I(B: @table @code @item :path -$B%a!<%k$,J]B8$5$l$k%G%#%l%/%H%j!<$N%Q%9$G$9!#=i4|CM$O4D6-JQ?t(B -@code{MAILDIR} $B$+$ie$G%a!<%k$rFI$`%W%m%H%3%k$H$7$F07$$$?$/$J$$$H$-$O!"(Bgnus -$B$G$O(B POP $B%5!<%P!<$HF1MM$K07$&$3$H$,$G$-!"M?$($i$l$?(B IMAP $B%a!<%k%\%C%/%9(B -$B$+$i5-;v$re$G%a!<%k$rFI$`%W%m%H%3%k$H$7$F07$$$?$/$J$$$H$-$O!"(B +gnus $B$G$O(B POP $B%5!<%P!<$HF1MM$K07$&$3$H$,$G$-!"M?$($i$l$?(B IMAP $B%a!<%k%\%C(B +$B%/%9$+$i5-;v$rA0!#=i4|CM$O4D6-JQ?t(B @code{MAILHOST} $B$+$iF@$^$9!#(B @item :port -IMAP $B%5!<%P!<$N%]!<%HHV9f!#IaDL$O=i4|CM$O(B @samp{143} $B$G!"(BSSL $B@\B3$K$O(B -@samp{993} $B$G$9!#(B +IMAP $B%5!<%P!<$N%]!<%HHV9f!#IaDL$O=i4|CM$O(B @samp{143} $B$G!"(BSSL $B@\B3$K(B +$B$O(B @samp{993} $B$G$9!#(B @item :user IMAP $B%5!<%P!<$KEO$9MxMQ$G$9!#=i4|CM$O%m%0%$%sL>$G$9!#(B @@ -10830,14 +10831,14 @@ IMAP $B%5!<%P!<$KEO$9%Q%9%o!<%I$G$9!#;XDj$5$l$F$$$J$$$H$-$O!"MxMQu$G$O!"(B@samp{kerberos4} $B$+(B -@samp{ssl} $B$+=i4|CM$N(B @samp{network} $B$K$J$j$^$9!#(B +$B%7%s%\%k$NCf$N$R$H$D$r@_Dj$7$^$9!#8=>u$G$O!"(B +@samp{kerberos4} $B$+(B @samp{ssl} $B$+=i4|CM$N(B @samp{network} $B$K$J$j$^$9!#(B -@item :authenticator -$B%5!<%P!<$G$NG'>Z$K$I$NG'>ZK!$r;H$&$+!#$3$l$O(B -@code{imap-authenticator-alist} $B$N%7%s%\%k$N0l$D$r@_Dj$7$^$9!#8=>u$G$O!"(B -@samp{kerberos4}$B!"(B@samp{cram-md5}$B!"(B@samp{anonymous} $B$+=i4|CM$N(B -@samp{login} $B$K$J$j$^$9!#(B +@item :authentication +$B%5!<%P!<$G$NG'>Z$K$I$NG'>ZK!$r;H$&$+!#$3$l(B +$B$O(B @code{imap-authenticator-alist} $B$N%7%s%\%k$N0l$D$r@_Dj$7$^$9!#8=>u$G(B +$B$O!"(B@samp{kerberos4}, @samp{cram-md5}, @samp{anonymous} $B$+=i4|CM(B +$B$N(B @samp{login} $B$K$J$j$^$9!#(B @item :mailbox $B%a!<%k$rA0!#=i4|CM$O(B @samp{INBOX} $B$G!"$3$l$OIa(B @@ -10845,15 +10846,15 @@ IMAP $B%5!<%P!<$KEO$9%Q%9%o!<%I$G$9!#;XDj$5$l$F$$$J$$$H$-$O!"MxMQC5n$N0u$rIU$1$^$9$,!"B>$K(B @samp{Seen} $B$G$OC1$K4{FI$N0u$rIU$1$^$9!#(B +$B%5!<%P!<$G!"C5n$N0u$rIU$1$^$9$,!"B>$K(B @samp{\Seen} $B$G$OC1$K4{FI$N0u$rIU$1$^$9!#(B $B$3$l$i$O:G$b$"$j$=$&$JFs$D$NA*Br$G$9$,!"B>$N0u$b(B RFC2060 .AN'2.3.2 $B$GDj5A$5(B $B$l$F$$$^$9!#(B @@ -10873,8 +10874,8 @@ IMAP $B%a!<%k%=!<%9$NNc(B: www.hotmail.com, webmail.netscape.com, www.netaddress.com, www.my-deja.com $B$J$I$N%&%'%V%a!<%k%5!<%P!<$+$i%a!<%k$rl9g(B $B$O(B "one-line-cookie" $B%Q%C%A$rEv$F$kI,MW$,$"$j$^$9!#(B @@ -10885,8 +10886,8 @@ www.my-deja.com $B$J$I$N%&%'%V%a!<%k%5!<%P!<$+$i%a!<%k$r$N8uJd$O(B -@code{netscape}, @code{netaddress}, @code{my-deja} $B$G$9!#(B +$B%&%'%V%a!<%k%5!<%P!<$N7?$G$9!#=i4|CM$O(B @code{hotmail} $B$G$9!#B>$N8uJd(B +$B$O(B @code{netscape}, @code{netaddress}, @code{my-deja} $B$G$9!#(B @item :user $B%&%'%V%a!<%k%5!<%P!<$NMxMQ$G$9!#=i4|CM$O%m%0%$%sL>$G$9!#(B @@ -10923,7 +10924,7 @@ www.my-deja.com $B$J$I$N%&%'%V%a!<%k%5!<%P!<$+$i%a!<%k$re5-$N$$$/$D$+$N%-!<%o!<%I$O!"$l$N%-!<%o!<%I(B @code{:foo} $B$NCM$H$7$F(B Lisp + $BJQ?t(B @code{foo} $B$,;H$o$l$^$9!#Nc$($P!"0J2<$N%a!<%k%=!<%9$N@_DjNc$K$D$$(B +$B$F9M$($F$_$F2<$5$$!#(B + +@lisp +(setq mail-sources '((pop :user "jrl" + :server "pophost" :function fetchfunc))) +@end lisp + +$B4X?t(B @code{fetchfunc} $B$,$l$N7?$N%a!<%k%=!<%9$N$?$a$N%-!<%o!<%I$N%j%9%H$K$D$$$F$O!">e5-$r;2(B +$B>H$7$F2<$5$$!#(B + @node Mail Source Customization @subsubsection $B%a!<%k%=!<%9$N%+%9%?%^%$%:(B @@ -10943,8 +10965,8 @@ www.my-deja.com $B$J$I$N%&%'%V%a!<%k%5!<%P!<$+$i%a!<%k$rl=j$G$9!#=i4|CM$O(B -@file{~/.emacs-mail-crash-box} $B$G$9!#(B +$B%a!<%k$rA`:n$7$F$$$k4V$KJ]B8$5$l$F$$$k>l=j$G$9!#=i4|CM(B +$B$O(B @file{~/.emacs-mail-crash-box} $B$G$9!#(B @item mail-source-delete-incoming @vindex mail-source-delete-incoming @@ -10953,26 +10975,32 @@ www.my-deja.com $B$J$I$N%&%'%V%a!<%k%5!<%P!<$+$i%a!<%k$rl9g!"F~$C$F$-$?%U%!%$%k$,J]B8$5$l$k>l=j$N;XDj$G$9!#(B +$B%U%!%$%k$,(B ($B$b$7$"$l$P(B) $BJ]B8$5$l$k%G%#%l%/%H%j!<$G$9!#=i4|CM(B +$B$O(B @file{~/Mail/} $B$G$9!#8=;~E@$G$O!"$3$l$,;H$o$l$kM#0l$N$b$N$OA0$NJQ?t(B +$B$,(B @code{nil} $B$G$"$C$?>l9g!"F~$C$F$-$?%U%!%$%k$,J]B8$5$l$k>l=j$N;XDj$G$9!#(B + +@item mail-source-incoming-file-prefix +@vindex mail-source-incoming-file-prefix +$BF~$C$F$-$?%a!<%k$rJ]B8$9$k%U%!%$%k$N%W%l%U%#%C%/%9$G$9!#=i4|CM(B +$B$O(B @file{Incoming} $B$G!"$3$N>l9g%U%!%$%k(B +$B$O(B @file{Incoming30630D_} $B$d(B @file{Incoming298602ZD} $B$N$h$&$K$J$j$^$9!#(B +@code{mail-source-delete-incoming} $B$,(B @code{nil} $B$N>l9g$@$1$G$9$,!#(B @item mail-source-default-file-modes @vindex mail-source-default-file-modes -$BA4$F$N?7$7$$%a!<%k%U%!%$%k$O$3$N%U%!%$%k%b!<%I$K$J$j$^$9!#=i4|CM$O(B 384 -$B$G$9!#(B +$BA4$F$N?7$7$$%a!<%k%U%!%$%k$O$3$N%U%!%$%k%b!<%I$K$J$j$^$9!#=i4|CM(B +$B$O(B 384 $B$G$9!#(B @end table - @node Fetching Mail @subsubsection $B%a!<%k$Ne$2(B $B$F!"%[!<%`%G%#%l%/%H%j!<$KJ|$jEj$2$^$9!#$"$J$?$,%a!<%k%P%C%/%(%s%I$r;H$C(B -$B$F$$$J$$>l9g$O!"(Bgnus $B$O(B1$BDL$b%a!<%k$r0\F0$7$^$;$s(B---$B:G=i$KKbK!$N8F$S=P$7(B -$B$r$?$/$5$s$7$J$1$l$P$J$j$^$;$s!#$^$:(B5$B3Q7A$rIA$-!"O9?$$K2P$rIU$1!";3MS$r(B +$B$F$$$J$$>l9g$O!"(Bgnus $B$O0lDL$b%a!<%k$r0\F0$7$^$;$s(B---$B:G=i$KKbK!$N8F$S=P$7(B +$B$r$?$/$5$s$7$J$1$l$P$J$j$^$;$s!#$^$:8^3Q7A$rIA$-!"O9?$$K2P$rIU$1!";3MS$r(B $B@8$1lS$H$7$FJ{$2=*$($?8e$G!"(Bgnus $B$,$"$J$?$N%a!<%k$r0\F0$7$F$bK\Ev$K$"$^(B $B$j6C$$$F$O$$$1$^$;$s!#(B @@ -11032,11 +11059,11 @@ www.my-deja.com $B$J$I$N%&%'%V%a!<%k%5!<%P!<$+$i%a!<%k$rA0$K8F$P(B -$B$l$^$9(B) $B$H(B @code{nnmail-post-get-new-mail-hook} ($B$3$l$O%a!<%k$N07$$$,=*(B -$B$o$C$?$H$-$K8F$P$l$^$9(B) $B$G$9!#A0$K(B +$B8F$P$l$^$9(B) $B$H(B @code{nnmail-post-get-new-mail-hook} ($B$3$l$O%a!<%k$N07$$(B +$B$,=*$o$C$?$H$-$K8F$P$l$^$9(B) $B$G$9!#$r;H$$$^$9!#(B@samp{mail.misc} $B$N$h$&$J%0%k!<%WL>$O(B @file{mail.misc} $B$H(B $B$$$&%G%#%l%/%H%j!<(B (@code{nnml} $B%P%C%/%(%s%I$,;H$o$l$F$$$k$H$_$J$9$H(B) $B$+(B $B%U%!%$%k(B (@code{nnfolder} $B%P%C%/%(%s%I$,;H$o$l$F$$$k$H$_$J$9$H(B) $B$H$$$&7k(B -$B2L$K$J$j$^$9!#$b$7$=$l$,(B @code{nil} $B$G$"$k$J$i!"F1$8%0%k!<%W$O(B -@file{mail/misc} $B$H$$$&7k2L$K$J$j$^$9!#(B +$B2L$K$J$j$^$9!#$b$7$=$l$,(B @code{nil} $B$G$"$k$J$i!"F1$8%0%k!<%W(B +$B$O(B @file{mail/misc} $B$H$$$&7k2L$K$J$j$^$9!#(B @item nnmail-delete-file-function @vindex nnmail-delete-file-function @findex delete-file -$B%U%!%$%k$r>C5n$9$k$?$a$K8F$P$l$k4X?t$G$9!#=i4|CM$O(B -@code{delete-file} $B$G$9!#(B +$B%U%!%$%k$r>C5n$9$k$?$a$K8F$P$l$k4X?t$G$9!#=i4|CM(B +$B$O(B @code{delete-file} $B$G$9!#(B @item nnmail-cache-accepted-message-ids @vindex nnmail-cache-accepted-message-ids @@ -11108,7 +11135,7 @@ www.my-deja.com $B$J$I$N%&%'%V%a!<%k%5!<%P!<$+$i%a!<%k$r$l$N(B -$BJ,3d$,B>$NJ,3d$r4^$`:F5"E*9=B$$G$9!#$3$l$O;HMQ2DG=$J(B5$B$D$NJ,3d9=J8$G$9(B: +$BJ,3d$,B>$NJ,3d$r4^$`:F5"E*9=B$$G$9!#$3$l$O;HMQ2DG=$J8^$D$NJ,3d9=J8$G$9(B: @enumerate @@ -11117,20 +11144,19 @@ www.my-deja.com $B$J$I$N%&%'%V%a!<%k%5!<%P!<$+$i%a!<%k$rl9g!"%a%C%;!<%8$r(B @var{split} $B$G;XDj$5$l$?$H$3$m$KC_(B -$B@Q$7$^$9!#(B@var{restrict} ($B$^$?B>$N@55,I=8=(B) $B$,(B @var{field} $B$N8e$G!"9gCW(B -$B$7$?(B @var{value} $B$N:G8e$NA0$N$N$$$/$D$+$NJ8;zNs$K9gCW$7$?$i!"(B@var{split} -$B$OL5;k$5$l$^$9!#(B@var{restrict} $B$NJDJq$N$I$l$b$,9gCW$7$J$1$l$P(B @var{split} -$B$,l9g!"%a%C%;!<%8(B +$B$r(B @var{split} $B$G;XDj$5$l$?$H$3$m$KC_@Q$7$^$9!#(B@var{restrict} ($B$^$?B>$N(B +$B@55,I=8=(B) $B$,(B @var{field} $B$N8e$G!"9gCW$7$?(B @var{value} $B$N:G8e$NA0$N$$$/$D(B +$B$+$NJ8;zNs$K9gCW$7$?$i!"(B@var{split} $B$OL5;k$5$l$^$9!#(B@var{restrict} $B$NJD(B +$BJq$N$I$l$b$,9gCW$7$J$1$l$P(B @var{split} $B$,K@(B) $B$G$"$k$H!"$=$l$>$l$N(B @var{split} $B$r$=$N$&$A$N0l$D$,9gCW$9$k$^$G(B -$Be$N%0%k!<%W$KC_@Q$5$l(B -$B$?$H$-$K(B ``$B9gCW$7$?(B'' $B$H$7$^$9!#(B +@code{(| @var{split}@dots{})}: $BJ,3d$,%j%9%H$G!":G=i$NMWAG(B +$B$,(B @code{|} ($B?bD>K@(B) $B$G$"$k$H!"$=$l$>$l$N(B @var{split} $B$r$=$N$&$A$N0l$D$,(B +$B9gCW$9$k$^$Ge$N%0%k!<(B +$B%W$KC_@Q$5$l$?$H$-$K(B ``$B9gCW$7$?(B'' $B$H$7$^$9!#(B @item @code{(& @var{split}@dots{})}: $BJ,3d$,%j%9%H$G!":G=i$NMWAG$,(B @code{&} $B$G(B @@ -11142,13 +11168,25 @@ www.my-deja.com $B$J$I$N%&%'%V%a!<%k%5!<%P!<$+$i%a!<%k$r$C$F40A4$K9gCW$7$J$1$l$P$J$j$^$;$s!#@55,I=8=$G%U%#!<%k%IL>$+(B @code{nnmail-split-fancy-syntax-table} $B$,$3$l$i$NA4$F$NJ,3d$,pJs$K4p$E$$$F!"(Bgnus $B$KF0E*$K%0%k!<%W$r:n$i$;$?$$$N$G$"$l$P(B ($BNc$($P!"%0%k!<%WL>$G(B @code{replace-match} $B$N$h$&$JBeMQ$r$9$k(B)$B!"pJs$K4p$E$$$F!"(Bgnus $B$KF0E*$K%0%k!<%W$r:n$i$;$?$$$N(B +$B$G$"$l$P(B ($BNc$($P!"%0%k!<%WL>$G(B @code{replace-match} $B$N$h$&$JBeMQ$r$9$k(B)$B!"(B +$Be;J$+$i8D?M08$F(B +$B$N%a!<%k$,FO$$$?$H$7$^$9!#<+J,$,7H$C$F$$$k%W%m%8%'%/%H$H$OJL$NOC$G$9!#$1(B +$B$l$I!VB>$N%a!<%k$H6hJL$G$-$k$h$&$K$3$l$3$l$3$&$$$&8@MU$rI=Bj$K=q$$$F$/$@(B +$B$5$$!W$H>e;J$K8~$+$C$F;X?^$9$k$o$1$K$O$$$-$^$;$s$+$i!"7k6I<+J,$Nl9g!"(BGnus $B$O8+$D$1$?A45-(B +$B;v$N%a%C%;!<%8(B ID $B$r(B $BJQ?t(B @code{nnmail-message-id-cache-file} $B$,;XDj$9$k(B +$B%U%!%$%k$K5-O?$7$^$9!#$3$N$H$-!"$=$l$>$l$N5-;v$,B8:_$9$k%0%k!<%W$NL>A0$r(B +$BJ;5-$7$^$9(B ($B$?$@$7%a!<%k$N>l9g$@$1!"$5$b$J$1$l$P%0%k!<%WL>$OD4$Y$^$;$s(B)$B!#(B +$B$5$F!"$$$h$$$h%a!<%k$N?6$jJ,$1$,;O$^$k$H!"4X?t(B +@code{nnmail-split-fancy-with-parent} $B$O!"BP>]$H$J$k3F5-;v$N(B References +($B$H(B In-Reply-To) $B%X%C%@$rD4$Y!"(B@code{nnmail-message-id-cache-file} $B$K;X(B +$BDj$5$l$F$$$k%U%!%$%k$K$=$l$i$N%a%C%;!<%8(B ID $B$,$"$k$+$I$&$+D4$Y$^$9!#?F5-(B +$B;v$,8+$D$+$k$H!"$3$N4X?t$OBP1~$9$k%0%k!<%WL>$rJV$9$o$1$G$9!#$3$3$G!"JQ?t(B +@code{nnmail-message-id-cache-length} $B$NCM$r4{DjCM$h$j$b4v$i$+Bg$-$JCM$K(B +$B@_Dj$9$k$3$H$r$*4+$a$7$^$9!#$=$&$9$k$H!":#D4$Y$i$l$?%a%C%;!<%8(B ID $BC#$O:#(B +$B$7$P$i$/%-%c%C%7%e$NCf$KB8B3$G$-$^$9(B (5000 $B$K@_Dj$9$k$H%-%c%C%7%e%U%!%$(B +$B%k$NBg$-$5$O$@$$$?$$(B 300 $B%-%m%P%$%H$0$i$$$K$J$k$_$?$$$G$9(B)$B!#$5$i$K!"(B +$BJQ?t(B @code{nnmail-cache-accepted-message-ids} $B$NCM$rHs(B nil $B$K@_Dj$9$l$P!"(B +Gnus $B$O0\F0$5$l$?5-;v$N%a%C%;!<%8(B ID $B$r$b5-O?$9$k$N$G!"%U%)%m!<%"%C%W5-(B +$B;v$O?F5-;v$N0\F0@h$HF1$8%0%k!<%W$KF~$k$h$&$K$J$j$^$9!#(B @node Group Mail Splitting @subsection $B%0%k!<%W%a!<%kJ,3d(B @@ -11193,13 +11272,13 @@ table) $B$K=>$C$F40A4$K9gCW$7$J$1$l$P$J$j$^$;$s!#@55,I=8=$G%U%#!<%k%IL>$+(B @findex gnus-group-split $B$?!<$/$5$s$N%a!<%j%s%0%j%9%H$r9XFI$7$F$$$k$1$l$I!"J}$b$7$/$O$I$A$i$+$r@_Dj$7$F(B -@code{nnmail-split-methods} $B$r(B @code{gnus-group-split} $B$K@_Dj$9$k$@$1$G(B -$B$9!#J,3d4X?t$OA4$F$N%0%k!<%W$G$3$l$i$N%Q%i%a!<%?$rAv::$7!"$=$l$K=>$C$FJ,(B -$B3d$7$^$9!#$9$J$o$A!"%a!<%k%0%k!<%W$N%Q%i%a!<%?(B @var{to-list} $B$+(B -@var{to-address} $B$G;XDj$5$l$?%"%I%l%9$+$iEj9F$5$l$?$b$N$+!"$=$N%"%I%l%9(B -$B$XEj9F$5$l$?%a%C%;!<%8$,$=$N%0%k!<%W$KJ]B8$5$l$^$9!#(B +$B%0%k!<%W%Q%i%a!<%?$+%0%k!<%W%+%9%?%^%$%:(B +$B$G(B @var{to-list}, @var{to-address} $B$NN>J}$b$7$/$O$I$A$i$+$r@_Dj$7(B +$B$F(B @code{nnmail-split-methods} $B$r(B @code{gnus-group-split} $B$K@_Dj$9$k$@$1(B +$B$G$9!#J,3d4X?t$OA4$F$N%0%k!<%W$G$3$l$i$N%Q%i%a!<%?$rAv::$7!"$=$l$K=>$C$F(B +$BJ,3d$7$^$9!#$9$J$o$A!"%a!<%k%0%k!<%W$N%Q%i%a!<(B +$B%?(B @var{to-list} $B$+(B @var{to-address} $B$G;XDj$5$l$?%"%I%l%9$+$iEj9F$5$l$?(B +$B$b$N$+!"$=$N%"%I%l%9$XEj9F$5$l$?%a%C%;!<%8$,$=$N%0%k!<%W$KJ]B8$5$l$^$9!#(B $B$H$-$K$O!"%a!<%j%s%0%j%9%H$K$OJ#?t$N%"%I%l%9$,$"$j!"%a!<%kJ,3d$K$=$l$iA4(B $B$F$rG'<1$5$;$?$$$H;W$&$H$-$,$"$k$+$b$7$l$^$;$s(B: @var{extra-aliases} $B%0%k!<(B @@ -11207,29 +11286,34 @@ table) $B$K=>$C$F40A4$K9gCW$7$J$1$l$P$J$j$^$;$s!#@55,I=8=$G%U%#!<%k%IL>$+(B $B;H$$$?$1$l$P!"(B@var{split-regexp} $B$r@_Dj$7$F$/$@$5$$!#(B $B$3$l$i$NA4$F$N%0%k!<%W$N%Q%i%a!<%?$O!"(B@code{nnmail-split-fancy} $BJ,3d$r:n(B -$B@.$9$k$?$a$K;HMQ$5$l!"$=$l$O(B @var{field} $B$,(B @samp{any} $B$G!"(B@var{value} -$B$,(B@var{to-list}, @var{to-address}, @var{extra-aliases} $B$NA4$F!"(B -@var{split-regexp} $B$NA4$F$N9gCW$K9gCW$9$kC1FH$N@55,I=8=!"(B@var{split} $B$,(B -$B%0%k!<%W$NL>A0$K$J$j$^$9!#(B@var{restrict} $B$b;HMQ$G$-$^$9(B: +$B@.$9$k$?$a$K;HMQ$5$l!"$=$l$O(B @var{field} $B$,(B @samp{any} $B$G!"(B +@var{value} $B$,(B @var{to-list}, @var{to-address}, @var{extra-aliases} $B$NA4(B +$B$F!"(B@var{split-regexp} $B$NA4$F$N9gCW$K9gCW$9$kC1FH$N@55,I=8=!"(B +@var{split} $B$,%0%k!<%W$NL>A0$K$J$j$^$9!#(B@var{restrict} $B$b;HMQ$G$-$^$9(B: @var{split-exclude} $B%Q%i%a!<%?$r@55,I=8=$N%j%9%H$K@_Dj$9$k$@$1$G$9!#(B $B$3$l$i$NA4$F$N%Q%i%a!<%?$r;H$C$F@5$7$$J,3d$,@8@.$5$l$J$$$H$-$d!"2?$+0c$C(B -$B$?$b$N$,I,MW$J$H$-$O!"%Q%i%a!<%?(B @var{split-spec} $B$r(B -@code{nnmail-split-fancy} $BJ,3d$K@_Dj$9$k$3$H$,$G$-$^$9!#$3$N>l9g$O!"B>$N(B -$BA0$K=q$$$?A4$F$N%Q%i%a!<%?$O(B @code{gnus-group-split} $B$KL5;k$5$l$^$9!#FC(B -$B$K!"(B@var{split-spec} $B$O(B @code{nil} $B$K@_Dj$9$k$3$H$,$G$-!"$=$N>l9g$O%0%k!<(B -$B%W$O(B @code{gnus-group-split} $B$KL5;k$5$l$^$9!#(B +$B$?$b$N$,I,MW$J$H$-$O!"%Q%i%a!<(B +$B%?(B @var{split-spec} $B$r(B @code{nnmail-split-fancy} $BJ,3d$K@_Dj$9$k$3$H$,$G(B +$B$-$^$9!#$3$N>l9g$O!"B>$NA0$K=q$$$?A4$F$N%Q%i%a!<%?(B +$B$O(B @code{gnus-group-split} $B$KL5;k$5$l$^$9!#FC$K!"(B +@var{split-spec} $B$O(B @code{nil} $B$K@_Dj$9$k$3$H$,$G$-!"$=$N>l9g$O%0%k!<%W(B +$B$O(B @code{gnus-group-split} $B$KL5;k$5$l$^$9!#(B @vindex gnus-group-split-default-catch-all-group -@code{gnus-group-split} $B$O$=$l$>$l$N%0%k!<%W$K0l$D$NJ,3d$r4^$`C10l$N(B -@code{&} $BFC5iJ,3d$rDj5A$9$k$3$H$G9gCW$9$kA4$F$N%0%k!<%W$KAj8_Ej9F$r$7$^(B -$B$9!#%a%C%;!<%8$,$I$NJ,3d$K$b9gCW$7$J$1$l$P!"$I$l$+$N%0%k!<%W$G(B -@var{split-spec} $B$,(B @code{catch-all} $B$K@_Dj$5$l$F$$$J$$>l9g$O(B -@code{gnus-group-split-default-catch-all-group} $B$G;XDj$5$l$F$$$k%0%k!<%W(B -$B$KJ]B8$5$l$^$9!#(B@var{split-spec} $B$,(B @code{catch-all} $B$K@_Dj$5$l$F$$$k%0(B -$B%k!<%W$,$"$k>l9g$O!"$=$N%0%k!<%W$,A4$F$rJa3M$9$k%0%k!<%W$H$7$F;HMQ$5$l$^(B -$B$9!#$3$N>l9g$O!"(B@code{|} $BFC5iJ,3d$,(B @code{&} $BJ,3d$HA4$F$rJa3M$9$k%0%k!<(B -$B%W$rJDJq$9$k$h$&$K!"Aj8_Ej9F$O9T$o$l$J$$$3$H$KCm0U$7$F$/$@$5$$!#(B +@code{gnus-group-split} $B$O$=$l$>$l$N%0%k!<%W$K0l$D$NJ,3d$r4^$`C10l(B +$B$N(B @code{&} $BFC5iJ,3d$rDj5A$9$k$3$H$G9gCW$9$kA4$F$N%0%k!<%W$KAj8_Ej9F$r$7(B +$B$^$9!#%a%C%;!<%8$,$I$NJ,3d$K$b9gCW$7$J$1$l$P!"$I$l$+$N%0%k!<%W(B +$B$G(B @var{split-spec} $B$,(B @code{catch-all} $B$K@_Dj$5$l$F$$$J$$>l9g(B +$B$O(B @code{gnus-group-split-default-catch-all-group} $B$G;XDj$5$l$F$$$k%0%k!<(B +$B%W$KJ]B8$5$l$^$9!#(B@var{split-spec} $B$,(B @code{catch-all} $B$K@_Dj$5$l$F$$$k(B +$B%0%k!<%W$,$"$k>l9g$O!"$=$N%0%k!<%W$,A4$F$rJa3M$9$k%0%k!<%W$H$7$F;HMQ$5$l(B +$B$^$9!#$3$NJQ?t$O$7$P$7$PC1$K%0%k!<%W$r;XDj$9$k$?$a$K;H$o$l$^$9$,!"G$0U$N(B +$BJ#;($JFC5iJ,3d$r$b@_Dj$9$k(B ($B7k6I!"%0%k!<%WL>$OFC5iJ,3d$J$N$G$9(B) $B$N$G!"8D(B +$B?M$N%a!<%k%U%)%k%@!<$N$I$N%a!<%j%s%0%j%9%H$K$bEv$F$O$^$i$J$$%a!<%k$rJ,3d(B +$B$9$k$N$KJXMx$G$7$g$&!#$J$*$3$NFC5iJ,3d$O!"(B@code{|} $BJ,3d%j%9%H$N:G8e$NMW(B +$BAG(B - $B%0%k!<%W%Q%i%a!<%?$+$iCj=P$5$l$?5,B'$r;}$D(B @code{&} $BJ,3d$r4^$`(B - $B$H(B +$B$7$FDI2C$5$l$k$3$H$KCm0U$7$F$/$@$5$$!#(B $B$=$m$=$mNc$r=P$9$Y$-$G$7$g$&!#0J2<$N%0%k!<%W%Q%i%a!<%?$,Dj5A$5$l$F$$$k$H(B $B$7$^$9(B: @@ -11248,8 +11332,9 @@ nnml:mail.others: @end example @code{nnmail-split-methods} $B$r(B @code{gnus-group-split} $B$K@_Dj$9$k$H!"(B -@code{nnmail-split-fancy} $B$,A*Br$5$l$F!"JQ?t(B @code{nnmail-split-fancy} -$B$,0J2<$N$h$&$K@_Dj$5$l$F$$$k$+$N$h$&$K?6Iq$$$^$9(B: +@code{nnmail-split-fancy} $B$,A*Br$5$l$F!"JQ(B +$B?t(B @code{nnmail-split-fancy} $B$,0J2<$N$h$&$K@_Dj$5$l$F$$$k$+$N$h$&$K?6Iq(B +$B$$$^$9(B: @lisp (| (& (any "\\(bar@@femail\\.com\\|.*@@femail\\.com\\)" "mail.bar") @@ -11270,18 +11355,19 @@ nnml:mail.others: @var{groups} $B$O=PNO$NJ,3d$r@8@.$9$k$?$a$K%Q%i%a!<%?$,Av::$5$l$k%0%k!<%W(B $BL>$N%j%9%H$+@55,I=8=$G$9!#(B@var{no-crosspost} $B$OAj8_Ej9F$r;HMQ6X;_$K$k$?(B $B$a$K;H$&$3$H$,$G$-$^$9!#$=$N>l9g!"C10l$N(B @code{|} $BJ,3d$,=PNO$5$l$^$9!#(B -@var{catch-all} $B$O=i4|A4Ja3M%0%k!<%W$H$7$F;HMQ$5$l$k%0%k!<%WL>$G$9!#(B -@var{catch-all} $B$,(B @code{nil} $B$G$"$k$+!"(B@var{split-regexp} $B$,$I$l$+$NA*(B -$BBr$5$l$?%0%k!<%W6uJ8;zNs$K9gCW$9$k$H!"A4Ja3MJ,3d$O9T$o$l$^$;$s!#$=$&$G$J(B -$B$$>l9g!"%0%k!<%W$K(B @var{split-spec} $B$,(B @code{catch-all} $B$K@_Dj$5$l$F$$$k(B -$B$b$N$,$"$k$H!"$3$N%0%k!<%W$,(B @var{catch-all} $B0z?t$r>e=q$-$7$^$9!#(B +@var{catch-all} $B$O(B @var{gnus-group-split-default-catch-all-group} $B$N$h$&(B +$B$K!":G8e$Nl9g!"%0%k!<%W(B +$B$K(B @var{split-spec} $B$,(B @code{catch-all} $B$K@_Dj$5$l$F$$$k$b$N$,$"$k$H!"$3(B +$B$N%0%k!<%W$,(B @var{catch-all} $B0z?t$r>e=q$-$7$^$9!#(B @findex gnus-group-split-setup $BIT1?$J$3$H$K!"A4$F$N%0%k%W$H%Q%i%a!<%?$rAv::$9$k$3$H$OHs>o$KCY$$$G$9!#FC(B -$B$KA4$F$N%a%C%;!<%8$KBP$7$F$J$5$l$k$3$H$r9M$($k$H!#$1$l$I$b!"@dK>$7$J$$$G(B! -$B4X?t(B @code{gnus-group-split-setup} $B$,(B @code{gnus-group-split} $B$r$h$j$:$C(B -$B$H8zN(E*$JJ}K!$GA*Br$9$k$h$&$K;H$&$3$H$,$G$-$^$9!#$=$l$O(B -@code{nnmail-split-methods} $B$r(B @code{nnmail-split-fancy} $B$K@_Dj$7!"(B +$B$KA4$F$N%a%C%;!<%8$KBP$7$F$J$5$l$k$3$H$r9M$($k$H!#$1$l$I$b!"@dK>$7$J$$(B +$B$G(B! $B4X?t(B @code{gnus-group-split-setup} $B$,(B @code{gnus-group-split} $B$r$h$j(B +$B$:$C$H8zN(E*$JJ}K!$G;H$&$3$H$,$G$-$^$9!#$=$l(B +$B$O(B @code{nnmail-split-methods} $B$r(B @code{nnmail-split-fancy} $B$K@_Dj$7!"(B @code{nnmail-split-fancy} $B$r(B @code{gnus-group-split-fancy} $B$G@8@.$5$l$?(B $BJ,3d$K@_Dj$7$^$9!#$3$&$7$F$I$s$J$KJ,3d$9$k%a%C%;!<%8$,$?$/$5$s$"$C$F$b!"(B $B%0%k!<%W%Q%i%a!<%?$O0lEY$@$1Av::$5$l$^$9!#(B @@ -11297,16 +11383,16 @@ nnml:mail.others: (gnus-group-split-setup AUTO-UPDATE CATCH-ALL) @end lisp -@var{auto-update} $B$,(B @code{nil} $B$GL5$$$H!"(B@code{gnus-group-split-update} -$B$,(B @code{nnmail-pre-get-new-mail-hook} $B$KDI2C$5$l!"FsEY$H(B -@code{nnmail-split-fancy} $B$N99?7$r?4G[$9$kI,MW$O$"$j$^$;$s!#(B -@var{catch-all} $B$r>JN,$7$J$$>l9g$O(B ($B$=$l$O%*%W%7%g%s$G$9(B) +@var{auto-update} $B$,(B @code{nil} $B$GL5$$$H!"(B +@code{gnus-group-split-update} $B$,(B @code{nnmail-pre-get-new-mail-hook} $B$K(B +$BDI2C$5$l!"FsEY$H(B @code{nnmail-split-fancy} $B$N99?7$r?4G[$9$kI,MW$O$"$j$^(B +$B$;$s!#(B@var{catch-all} $B$r>JN,$7$J$$>l9g$O(B ($B$=$l$O%*%W%7%g%s$G(B nil $B$HF1$8(B)$B!"(B @code{gnus-group-split-default-catch-all-group} $B$O$=$NCM$K@_Dj$5$l$^$9!#(B @vindex gnus-group-split-updated-hook @code{nnmail-split-fancy} $B$,(B @code{gnus-group-split-update} $B$G@_Dj$5$l$?(B -$B8e$K!"JQ99$7$?$$$H$-$N$?$a$K!"$3$N4X?t$O(B -@code{gnus-group-split-update-hook} $B$r=*N;$9$kD>A0$KA0$KC5n(B @cindex article expiry $BEAE}E*$J%a!<%k%j!<%@!<$O!"2?$+!"4{FI$N0u$rIU$1$k$H5-;v$r:o=|$9$k798~$,$"(B -$B$j$^$9!#(B Gnus $B$O%a!<%k$rFI$`;v$KBP$7$F!"4pK\E*$KA4$/0c$C$?J}K!$rC$98"NO$,$"(B @@ -11371,11 +11456,11 @@ Gnus $B$KK>$^$7$/$J$$%a!<%k$r:o=|$5$;$k$?$a$K$O!"5-;v$r(B @dfn{$B4|8B@Z$l>C5n $B2DG=(B} (expirable) $B$H$7$F0u$rIU$1$J$1$l$P$J$j$^$;$s!#$7$+$7$J$,$i!"$3$l$O(B $B5-;v$,B(:B$K>C$(5n$k$H$$$&;v$G$O$"$j$^$;$s!#0lHLE*$K!"%a!<%k5-;v$Ol9g$K%7%9%F%`$K$h$C$F:o=|$5$l$^$9(B 1) $B4|8B@Z$l>C5n2DG=$N0u$rIU$1$i$l(B -$B$k(B 2) 1$B=54V0J>e7P$C$?5-;v$G$"$k!#(B $B$b$75-;v$r4|8B@Z$l>C5n2DG=$K$7$J$1$l$P!"(B +$B$k(B 2) $B0l=54V0J>e7P$C$?5-;v$G$"$k!#$b$75-;v$r4|8B@Z$l>C5n2DG=$K$7$J$1$l$P!"(B $B$=$l$OCO9v$,E`$j$D$/$^$G%7%9%F%`$K;D$j$D$E$1$^$9!#$3$l$O$b$&0lEY6/D4IU$-(B -$B$G7+$jJV$5$l$k$KB-$k$b$N$G$9(B: ``$B$b$7(B'' $B$"$J$?$,5-;v$r(B ``$B4|8B@Z$l>C5n2DG=(B'' -$B$G$"$k$H(B ``$B$7$J$$(B'' $B$J$i!"(Bgnus $B$O(B ``$B7h$7$F(B'' $B$=$l$i$N(B ``$B5-;v(B'' $B$r>C5n$7(B -$B$^$;$s!#(B +$B$G7+$jJV$5$l$k$KB-$k$b$N$G$9(B: ``$B$b$7(B'' $B$"$J$?$,5-;v(B +$B$r(B ``$B4|8B@Z$l>C5n2DG=(B'' $B$G$"$k$H(B ``$B$7$J$$(B'' $B$J$i!"(Bgnus $B$O(B ``$B7h$7$F(B'' $B$=(B +$B$l$i$N(B ``$B5-;v(B'' $B$r>C5n$7$^$;$s!#(B @vindex gnus-auto-expirable-newsgroups $BC5n2DG=$N0u$rIU$1$J$1$l$P$J$i$J$$$o$1$G$O$"$j$^$;$s!#(B @@ -11419,12 +11504,12 @@ Gnus $B$KK>$^$7$/$J$$%a!<%k$r:o=|$5$;$k$?$a$K$O!"5-;v$r(B @dfn{$B4|8B@Z$l>C5n $BJQ?t(B @code{nnmail-expiry-wait} $B$O4|8B@Z$l>C5n2DG=5-;v$,$I$l$/$i$$$N4|4V(B $B@8B8$7$F$$$k$+$N%G%#%U%)%k%H$N;~4V@_Dj$rDs6!$7$^$9!#(BGnus $B$O%a%C%;!<%8$,(B $BAw$i$l$?$H$-$G$O$J$/!"$=$l$,(B @emph{$BE~Ce(B} $B$7$F$+$i$NF|$r7W;;$7$^$9!#%G%#(B -$B%U%)%k%H$O(B7$BF|4V$G$9!#(B +$B%U%)%k%H$O(B 7 $BF|4V$G$9!#(B Gnus $B$O5-;v$,$I$N%0%k!<%W$KB0$7$F$$$k$+$K4p$E$$$F!"$=$l$,$I$N$/$i$$@8B8(B -$B$9$k$+$r@.8y$K@_Dj$9$k4X?t$bDs6!$7$F$$$^$9!#%0%k!<%W(B @samp{mail.private} -$B$O4|8B$r(B1$B%v7n$K!"%0%k!<%W(B @samp{mail.junk} $B$G$O4|8B$r(B1$BF|$K!"$=$NB>$N$b$N(B -$B$K$O4|8B$r(B6$BF|4V$K$9$k$K$O(B: +$B$9$k$+$r@.8y$K@_Dj$9$k4X?t$bDs6!$7$F$$$^$9!#%0%k!<(B +$B%W(B @samp{mail.private} $B$O4|8B$r(B 1$B%v7n$K!"%0%k!<%W(B @samp{mail.junk} $B$G$O(B +$B4|8B$r(B 1 $BF|$K!"$=$NB>$N$b$N$K$O4|8B$r(B 6 $BF|4V$K$9$k$K$O(B: @vindex nnmail-expiry-wait-function @lisp @@ -11443,22 +11528,30 @@ Gnus $B$O5-;v$,$I$N%0%k!<%W$KB0$7$F$$$k$+$K4p$E$$$F!"$=$l$,$I$N$/$i$$@8B8(B $B$3$N4X?t$KM?$($i$l$k%0%k!<%WL>$O(B ``$BAu>~L5$7(B'' $B$N%0%k!<%WL>$G$9(B--- @samp{nnml:} $B$d$=$NB>$N;w$?$h$&$J$b$N$OIU$-$^$;$s!#(B -$BJQ?t(B @code{nnmail-expiry-wait} $B$H4X?t(B @code{nnmail-expiry-wait-function} -$B$O?t;z(B ($B@0?t$G$"$kI,MW$O$"$j$^$;$s(B) $B$+%7%s%\%k(B @code{immediate} $B$+(B -@code{never} $B$N$I$A$i$+$G$"$k;v$,$G$-$^$9!#(B +$BJQ?t(B @code{nnmail-expiry-wait} $B$H4X(B +$B?t(B @code{nnmail-expiry-wait-function} $B$O?t;z(B ($B@0?t$G$"$kI,MW$O$"$j$^$;(B +$B$s(B) $B$+%7%s%\%k(B @code{immediate} $B$+(B @code{never} $B$N$I$A$i$+$G$"$k;v$,$G$-(B +$B$^$9!#(B -$B4|8B@Z$l4|4V$rA*BrE*$KJQ99$9$k$?$a$K%0%k!<%W%Q%i%a!<%?(B -@code{expiry-wait} $B$r;H$&;v$b$G$-$^$9(B (@pxref{Group Parameters})$B!#(B +$B4|8B@Z$l4|4V$rA*BrE*$KJQ99$9$k$?$a$K%0%k!<%W%Q%i%a!<(B +$B%?(B @code{expiry-wait} $B$r;H$&;v$b$G$-$^$9(B (@pxref{Group Parameters})$B!#(B @vindex nnmail-expiry-target $B5-;v$N4|8B@Z$l>C5n$NIaDL$NF0:n$O$=$l$i$r>C5n$9$k$3$H$G$9!#$7$+$7!">l9g$K(B $B$h$C$F$O$=$l$i$r>C5n$9$k$h$j$bJL$N%0%k!<%W$K0\F0$7$?J}$,M-0U5A$+$b$7$l$^(B -$B$;$s!#(B@code{nnmail-expiry-target} ($B$H%0%k!<%W%Q%i%a!<%?(B -@code{expiry-target}) $B$O$3$l$r@)8f$7$^$9!#%G%#%U%)%k%H$NCM$O(B -@code{delete} $B$G$9$,!"J8;zNs(B ($B5-;v$r0\F0$9$k@h$N%0%k!<%WL>(B) $B$^$?$O0\F0@h(B -$B$N%0%k!<%WL>$+(B @code{delete} $B$rJV$94X?t(B ($B5-;v$KHO0O$r69$a$?%P%C%U%!$G!"(B -$B$=$N5-;v$,B8:_$7$F$$$k%0%k!<%WL>$,0z?t$H$7$FM?$($i$l$^$9(B) $B$K$9$k$3$H$,$G(B -$B$-$^$9!#(B +$B$;$s!#JQ?t(B @code{nnmail-expiry-target} ($B$H%0%k!<%W%Q%i%a!<(B +$B%?(B @code{expiry-target}) $B$O$3$l$r@)8f$7$^$9!#$3$NJQ?t$NCM$O$9$Y$F$N%0%k!<(B +$B%W$KBP$9$k%G%#%U%)%k%H$K$J$j$^$9$,!"FCDj$N%0%k!<%W$4$H$K%0%k!<%W%Q%i%a!<(B +$B%?$r;H$C$F;XDj$9$l$P>e=q$-$9$k$3$H$,$G$-$^$9!#%G%#%U%)%k%H$NCM(B +$B$O(B @code{delete} $B$G$9$,!"J8;zNs(B ($B5-;v$r0\F0$9$k@h$N%0%k!<%WL>(B) $B$^$?$O0\(B +$BF0@h$N%0%k!<%WL>$+(B @code{delete} $B$rJV$94X?t(B ($B5-;v$KHO0O$r69$a$?%P%C%U%!(B +$B$G!"$=$N5-;v$,B8:_$7$F$$$k%0%k!<%WL>$,0z?t$H$7$FM?$($i$l$^$9(B) $B$K$9$k$3$H(B +$B$,$G$-$^$9!#(B + +$B%0%k!<%WL>$r;XDj$9$k>l9g$NNc(B: +@lisp +(setq nnmail-expiry-target "nnml:expired") +@end lisp @vindex nnmail-keep-last-article @code{nnmail-keep-last-article} $B$,(B @code{nil} $B$G$J$$$H!"(Bgnus $B$O%a!<%k%K%e!<(B @@ -11475,9 +11568,9 @@ Gnus $B$O5-;v$,$I$N%0%k!<%W$KB0$7$F$$$k$+$K4p$E$$$F!"$=$l$,$I$N$/$i$$@8B8(B $B$^$9!#$3$l$O!"Ev$N%0%k!<%W$N(B @emph{$BA4$F(B} $B$N8E$$%a!<%k5-;v$O>/$78e$G:o=|(B $B$5$l$k$H$$$&;v$G$9!#Hs>o$KCm0U$7$F;H$C$F!"$"$J$?$,;HMQ$7$?@55,I=8=$,4V0c$C(B $B$?%0%k!<%W$K9gCW$7$F!"$"$J$?$NA4$F$N=EMW$J%a!<%k$,>C$($F$7$^$C$?$H8@$C$F!"(B -$B;d$N$H$3$m$K5c$-IU$$$FMh$J$$$G$/$@$5$$!#(B@emph{$BCK(B}$B$K$J$j$J$5$$!*(B $B$b$7$/$O!"(B -@emph{$B=w(B} $B$K$J$j$J$5$$!*(B $B$"$J$?$,5$;}$A$h$$$H46$8$kA4$F$N$b$N$H!*(B $B$G$9$+(B -$B$i$=$3$K!*(B +$B;d$N$H$3$m$K5c$-IU$$$FMh$J$$$G$/$@$5$$!#(B@emph{$BCK(B}$B$K$J$j$J$5$$(B! $B$b$7$/$O!"(B +@emph{$B=w(B} $B$K$J$j$J$5$$(B! $B$"$J$?$,5$;}$A$h$$$H46$8$kA4$F$N$b$N$H(B! $B$G$9$+$i(B +$B$=$3$K(B! $B$?$$$F$$$N?M$O$[$H$s$I$N%a!<%k%0%k!<%W$r(B total-expirable ($BA4BN4|8B@Z$l>C(B $B5n2DG=(B) $B$K$7$^$9$,!#(B @@ -11494,7 +11587,7 @@ Gnus $B$O5-;v$,$I$N%0%k!<%W$KB0$7$F$$$k$+$K4p$E$$$F!"$=$l$,$I$N$/$i$$@8B8(B @cindex incoming mail treatment $B%a%$%i!<(B (mailer) $B$d%j%9%H%5!<%P!<(B (list server) $B$OK\Ev$KK\Ev$KGO9b$$$G$9!#(B ``$B$o$!!"(BRFC822 $B$O2f!9$N%5!<%P!<$rDL$C$F$$$/(B +$B;v$r$9$k$3$H$G0-L>9b$$$G$9!#(B``$B$o$!!"(BRFC822 $B$O2f!9$N%5!<%P!<$rDL$C$F$$$/(B $B%a%C%;!<%8$NA4$F$N9T$N:G8e$K(B @code{wE aRe ElIte!!!!!1!!} $B$r2C$($k;v$rL@(B $B<(E*$K6X;_$O$7$F$$$J$$$>!#$5$!!"$d$C$F$_$h$&(B!!!!1'' $B$($'!"$=$N$H$*$j$G$9(B $B$,!"(BRFC822 $B$OG=NO$NDc$$?M$K$h$C$FFI$^$l$k$h$&$K$O=q$+$l$F$$$^$;$s!#L@Gr(B @@ -11506,7 +11599,7 @@ Gnus $B$O5-;v$,$I$N%0%k!<%W$KB0$7$F$$$k$+$K4p$E$$$F!"$=$l$,$I$N$/$i$$@8B8(B Gnus $B$O5-;v$rI=<($9$k$H$-$K$=$l$r@vBu$9$k$?$a$K2aEY$N4X?t$rDs6!$7$F$$$^(B $B$9$,!"%a!<%k$r%G%#%9%/$KJ]B8$9$kA0$KA*JL$r$9$k$3$H$,$G$-$?J}$,NI$$$G$7$g(B -$B$&!#$=$NL\E*$N$?$a$K!"(B3$B$D$N%U%C%/$H$=$N%U%C%/$KF~$l$k;v$N$G$-$k?'!9$J4X(B +$B$&!#$=$NL\E*$N$?$a$K!";0$D$N%U%C%/$H$=$N%U%C%/$KF~$l$k;v$N$G$-$k?'!9$J4X(B $B?t$,$"$j$^$9!#(B @table @code @@ -11542,6 +11635,7 @@ Gnus $B$O5-;v$rI=<($9$k$H$-$K$=$l$r@vBu$9$k$?$a$K2aEY$N4X?t$rDs6!$7$F$$$^(B $B@P4o;~Be$N%a!<%k%X%C%@!<$r;H$C$F$$$k?M$K$ONI$$;v$@$H;W$$$^$9!#$3$N4X?t$O(B $B@55,I=8=(B @code{nnmail-list-identifiers} $B$K9gCW$9$kJ8;zNs$rC5n$7$^$;$s!#$=$NBe$o$j$K!"%a!<%k$N@hF,$K$3$l$O0c$C$?%a%C%;!<%8$N=E(B $BJ#$G$"$k$H$$$&7Y9p$rA^F~$7$^$9!#(B -$B$3$NJQ?t$O4X?t$G$"$k;v$b$G$-$^$9!#$=$N>l9g$O!"4X?t$O(B @code{Message-ID} -$B$r0z?t$H$7$F!"Ev$N%a%C%;!<%8$KHO0O$r69$a$i$l$?%P%C%U%!$+$i8F$P$l$^$9!#$3(B -$B$N4X?t$O(B @code{nil}$B!"(B@code{warn}$B!"(B@code{delete} $B$N$I$l$+$rJV$5$J$1$l$P$J(B -$B$j$^$;$s!#(B +$B$3$NJQ?t$O4X?t$G$"$k;v$b$G$-$^$9!#$=$N>l9g$O!"4X?t(B +$B$O(B @code{Message-ID} $B$r0z?t$H$7$F!"Ev$N%a%C%;!<%8$KHO0O$r69$a$i$l$?%P%C(B +$B%U%!$+$i8F$P$l$^$9!#$3$N4X?t$O(B @code{nil}, @code{warn}, @code{delete} $B$N(B +$B$I$l$+$rJV$5$J$1$l$P$J$j$^$;$s!#(B $BJQ?t$r(B @code{nil} $B$K@_Dj$9$k;v$K$h$C$F!"$3$N5!G=$r40A4$K;H$o$J$$$h$&$K$9(B $B$k;v$,$G$-$^$9!#(B @@ -11634,8 +11728,7 @@ Quoted Readable $BId9f2=$rI|9f2=$7$^$9!#(B $B$F$$$F!"(B@code{nnmail-treat-duplicates} $B$,(B @code{delete} $B$K@_Dj$7$F$"$k$H!"(B $B$"$J$?$NCN$C$F$$$k!"$=$N?M$,4{$Ko$KK~B-$7$F$$$F!"8E$$(B -@sc{rmail} $B%U%!%$%k$,(B @code{nnbabyl} $B$G1#$5$l$F$$$k$N$r$5$C$H8+$?$$$@$1(B -$B$J$i!"$3$l$OM>J,$G$7$g$&!#$9$Y$F$N%P%C%/%(%s%I$O(B $B%P%C%/%(%s%I(B- +$BNc$($P!"(B@code{nnml} $B$G%a!<%k$rFI$`;v$KHs>o$KK~B-$7$F$$$F!"8E(B +$B$$(B @sc{rmail} $B%U%!%$%k$,(B @code{nnbabyl} $B$G1#$5$l$F$$$k$N$r$5$C$H8+$?$$$@(B +$B$1$J$i!"$3$l$OM>J,$G$7$g$&!#$9$Y$F$N%P%C%/%(%s%I$O(B $B%P%C%/%(%s%I(B- @code{get-new-mail} $B$H$$$&JQ?t$r;}$C$F$$$^$9!#$b$7(B @code{nnbabyl} $B$N%a!<(B -$B%kFI$_9~$_$r;HMQIT2D$K$7$?$$$N$G$"$l$P!"%0%k!<%W$N;ve$N%5!<%P!<$r(B -@code{nnbabyl-get-new-mail} $B$r(B @code{nil} $B$K@_Dj$9$k$h$&$KJT=8$7$^$9!#(B +$B%kFI$_9~$_$r;HMQIT2D$K$7$?$$$N$G$"$l$P!"%0%k!<%W$N;ve$N%5!<%P!<(B +$B$r(B @code{nnbabyl-get-new-mail} $B$r(B @code{nil} $B$K@_Dj$9$k$h$&$KJT=8$7$^$9!#(B $BA4$F$N%a!<%k%P%C%/%(%s%I$OF~$C$F$/$k%a!<%k$rFI$_9~$`$H$-$K!"J]B8$5$l$k$Y(B $B$-5-;v$KHO0O$r69$a$F(B @code{nn}*@code{-prepare-save-mail-hook} $B$r8F$S$^$9!#(B - @node Choosing a Mail Backend @subsection $B%a!<%k%P%C%/%(%s%I$rA*$V(B @@ -11671,20 +11763,19 @@ Gnus $B$O%a!<%k%0%k!<%W$rF0:n$9$k$h$&$K$9$k$H%a!<%k%9%W!<%k$rFI$_9~$_$^$9!#(B $B%a!<%k%U%!%$%k$O$^$:$"$J$?$N%[!<%`%G%#%l%/%H%j!<$KJ#$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k$r;}$D!#(B -* Comparing Mail Backends:: $BF@<:$N?<$$F6;!!#(B +* Unix Mail Box:: ($B$H$F$b(B) $BI8=`E*$J(B Un*x mbox $B$r;H$&(B +* Rmail Babyl:: Emacs $B$N%W%m%0%i%`$O(B rmail $B$N(B babyl format $B$r;H$&(B +* Mail Spool:: $B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k(B? +* MH Spool:: mhspool $B$N$h$&$J%P%C%/%(%s%I(B +* Mail Folders:: $B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k$r;}$D(B +* Comparing Mail Backends:: $BF@<:$N?<$$F6;!(B @end menu - @node Unix Mail Box @subsubsection Unix $B%a!<%k%\%C%/%9(B @cindex nnmbox @@ -11713,7 +11804,6 @@ Gnus $B$O%a!<%k%0%k!<%W$rF0:n$9$k$h$&$K$9$k$H%a!<%k%9%W!<%k$rFI$_9~$_$^$9!#(B $B%W$KJ,3d$7$^$9!#(B @end table - @node Rmail Babyl @subsubsection Rmail Babyl @cindex nnbabyl @@ -11721,9 +11811,9 @@ Gnus $B$O%a!<%k%0%k!<%W$rF0:n$9$k$h$&$K$9$k$H%a!<%k%9%W!<%k$rFI$_9~$_$^$9!#(B @vindex nnbabyl-active-file @vindex nnbabyl-mbox-file -@dfn{nnbabyl} $B%P%C%/%(%s%I$O%a!<%k$rC_B"$9$k$?$a$K(B babyl $B%a!<%k%\%C%/%9(B -($BJLL>(B @dfn{rmail mbox}) $B$r;H$$$^$9!#(B@code{nnbabyl} $B$O$=$l$>$l$N5-;v$K$=(B -$B$l$,$I$N%0%k!<%W$KB0$7$F$$$k$+$r<($9DI2C$N%X%C%@!<$r2C$($^$9!#(B +@dfn{nnbabyl} $B%P%C%/%(%s%I$O%a!<%k$rC_B"$9$k$?$a$K(B babyl $B%a!<%k%\%C%/(B +$B%9(B ($BJLL>(B @dfn{rmail mbox}) $B$r;H$$$^$9!#(B@code{nnbabyl} $B$O$=$l$>$l$N5-;v$K(B +$B$=$l$,$I$N%0%k!<%W$KB0$7$F$$$k$+$r<($9DI2C$N%X%C%@!<$r2C$($^$9!#(B $B;ve$N%5!<%P!<$N@_Dj(B: @@ -11741,7 +11831,6 @@ rmail box $B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#(B @code{nil} $B$G$J$1$l$P!"(B@code{nnbabyl} $B$OF~$C$F$/$k%a!<%k$rFI$_9~$_$^$9!#(B @end table - @node Mail Spool @subsubsection $B%a!<%k%9%W!<%k(B @cindex nnml @@ -11752,9 +11841,9 @@ rmail box $B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#(B @vindex nnml-directory $B$b$7$3$N%P%C%/%(%s%I$r;H$&$H!"(Bgnus $B$OF~$C$F$/$k%a!<%k$r!"$=$l$>$l$N%a!<(B -$B%k$r(B1$B%U%!%$%k$H$7$F%U%!%$%k$KJ,3d$7!"5-;v$rJQ?t(B @code{nnml-directory} $B$G(B -$B;XDj$5$l$?%G%#%l%/%H%j!<$N2<$NBP1~$9$k%G%#%l%/%H%j!<$KF~$l$^$9!#%G%#%U%)(B -$B%k%H$NCM$O(B @file{~/Mail/} $B$G$9!#(B +$B%k$r(B 1 $B%U%!%$%k$H$7$F%U%!%$%k$KJ,3d$7!"5-;v$rJQ(B +$B?t(B @code{nnml-directory} $B$G;XDj$5$l$?%G%#%l%/%H%j!<$N2<$NBP1~$9$k%G%#%l(B +$B%/%H%j!<$KF~$l$^$9!#%G%#%U%)%k%H$NCM$O(B @file{~/Mail/} $B$G$9!#(B $BA0$b$C$F%G%#%l%/%H%j!<$r:n$C$F$*$/I,MW$O$"$j$^$;$s!#$=$l$NLLE]$O(B gnus $B$,(B $B8+$F$/$l$^$9!#(B @@ -11762,16 +11851,16 @@ rmail box $B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#(B $B$b$7$"$J$?$N%"%+%&%s%H$KC_@Q$G$-$k%U%!%$%k$N?t$K87L)$J@)8B$,$"$k$J$i!"$3(B $B$N%P%C%/%(%s%I$r;H$&$Y$-$G$O$"$j$^$;$s!#$=$l$>$l$N%a!<%k$O$=$l<+?H$N%U%!(B $B%$%k$rF@$^$9$N$G!"?t=54V$G$?$/$5$s$N(B i$B%N!<%I$r@jM-$9$k2DG=@-$O==J,$K$"$j(B -$B$^$9!#JL$K$3$l$,LdBj$G$J$/!"?F@Z$J%7%9%F%`4IM}e$N%5!<%P!<$N@_Dj(B: @@ -11786,7 +11875,7 @@ mbox $B%U%!%$%k$r=E$$B-uBV$G$J$/$J$C$F$7$^$C(B $B$?$J$i!"(B@kbd{M-x nnml-generate-nov-databases} $B$HBG$D;v$K$h$C$F!"40A4$K99(B -$B?7$9$k;v$,$G$-$^$9!#$3$NL?Na$O!"$=$l$>$lA4$F$N%U%!%$%k$r8+$k;v$K$h$C$F(B -@code{nnml} $B3,AXA4BN$r%H%m!<%k5{LV$G$5$i$$$^$9$N$G!"$=$l$,=*$o$k$^$G$K$O(B -$B;~4V$,$+$+$k$+$b$7$l$^$;$s!#$3$N5!G=$X$N$h$jNI$$%$%s%?!<%U%'!<%9$O%5!<%P!<(B -$B%P%C%U%!$G8+$D$+$k$G$7$g$&(B (@pxref{Server Commands})$B!#(B - +$B?7$9$k;v$,$G$-$^$9!#$3$NL?Na$O!"$=$l$>$lA4$F$N%U%!%$%k$r8+$k;v$K$h$C(B +$B$F(B @code{nnml} $B3,AXA4BN$r%H%m!<%k5{LV$G$5$i$$$^$9$N$G!"$=$l$,=*$o$k$^$G(B +$B$K$O;~4V$,$+$+$k$+$b$7$l$^$;$s!#$3$N5!G=$X$N$h$jNI$$%$%s%?!<%U%'!<%9$O%5!<(B +$B%P!<%P%C%U%!$G8+$D$+$k$G$7$g$&(B (@pxref{Server Commands})$B!#(B @node MH Spool @subsubsection MH $B%9%W!<%k(B @@ -11822,10 +11910,10 @@ mbox $B%U%!%$%k$r=E$$B-e$N%5!<%P!<$N@_Dj(B: @@ -11843,9 +11931,9 @@ mbox $B%U%!%$%k$r=E$$B-pJs$rD4$Y$^$9$N$G!"$3$l$r(B @code{t} $B$K@_Dj$9$k;v$O?<(B -$B9o$JB.EYDc2<$,5/$3$k$H$$$&;v$G$9!#$b$7(B @code{nnmh} $B5-;v$rFI$`$N$K(B gnus -$B0J30$N$b$N$r;H$C$F$$$J$$$N$G$"$l$P!"$3$NJQ?t$r(B @code{t} $B$K@_Dj$9$kI,MW$O(B -$B$"$j$^$;$s!#(B +$B9o$JB.EYDc2<$,5/$3$k$H$$$&;v$G$9!#$b$7(B @code{nnmh} $B5-;v$rFI$`$N(B +$B$K(B gnus $B0J30$N$b$N$r;H$C$F$$$J$$$N$G$"$l$P!"$3$NJQ?t$r(B @code{t} $B$K@_Dj$9(B +$B$kI,MW$O$"$j$^$;$s!#(B @end table @node Mail Folders @@ -11873,7 +11961,7 @@ mbox $B%U%!%$%k$r=E$$B-A0!#(B @xref{Newsgroups File Format}$B!#(B +$B%0%k!<%W5-=R%U%!%$%k$NL>A0!#(B@xref{Newsgroups File Format}$B!#(B @item nnfolder-get-new-mail @vindex nnfolder-get-new-mail @@ -11905,10 +11993,10 @@ mbox $B%U%!%$%k$r=E$$B-(B -$B$r;H$C$F$$$k$H$-$K$N$_F0:n$7$^$9$,!#(B +$B%$%k$r;}$C$F$$$k$N$G$"$l$P!"(B +@code{nnfolder} $B$K(B @code{nnfolder-directory} $B$K$"$kA4$F$N$=$N$h$&$J%U%!(B +$B%$%k$K5$IU$+$;$k$?$a$K!"L?Na(B @kbd{M-x nnfolder-generate-active-file} $B$r(B +$B;H$&;v$,$G$-$^$9!#$3$l$OD9$$%U%!%$%kL>$r;H$C$F$$$k$H$-$K$N$_F0:n$7$^$9$,!#(B @node Comparing Mail Backends @subsubsection $B%a!<%k%P%C%/%(%s%I$NHf3S(B @@ -11919,13 +12007,14 @@ nnfolder-generate-active-file} $B$r;H$&;v$,$G$-$^$9!#$3$l$OD9$$%U%!%$%kL>(B $B$NA*Br$O!"%a!<%k$r(B gnus $B$N$9$06a$/$K@\5-;v$N%G%#%l%/%H%j!<%9%W!<%k$KF'$_9~$`$H$$$&$b$N(B $B$G$7$?!#$=$l$G$b!"$?$^$?$^%5!<%P!<(B ($B$b$7$/$O!"(BNFS $B$G%9%W!<%k$,FI$a$k$h(B -$B$&$J>l9g(B) $B$K$$$k$h$&$J>l9g$O!"$3$l$i$NJ}K!$rA*$V$?$a$K(B @code{nntp} $B$d(B -@code{nnspool} $B%P%C%/%(%s%I$N$I$A$i$+$rA*$V$3$H$,$G$-$^$7$?!#(B +$B$&$J>l9g(B) $B$K$$$k$h$&$J>l9g$O!"$3$l$i$NJ}K!$rA*$V$?$a(B +$B$K(B @code{nntp} $B$d(B @code{nnspool} $B%P%C%/%(%s%I$N$I$A$i$+$rA*$V$3$H$,$G$-(B +$B$^$7$?!#(B $B%a!<%k%P%C%/%(%s%I$rA*Br$9$k$3$H$N%4!<%k$O!"85$N7A<0$r07$&$N$KE,$7$?J}K!(B $B$H!">-Mh;HMQ$9$k$?$a$KJXMx$J7A<0$K%a!<%k$r;D$9$3$H$NN>J}$rF1;~$KI=8=$9$k(B @@ -11936,7 +12025,7 @@ nnfolder-generate-active-file} $B$r;H$&;v$,$G$-$^$9!#$3$l$OD9$$%U%!%$%kL>(B UNIX $B%7%9%F%`$ONr;KE*$KC10l$N!"Hs>o$K0lHLE*$J!">eo$K0lHLE*$J!">euBV%S%C%H$r%U%!(B -$B%$%k$N$=$l$>$l$N%a%C%;!<%8$N@hF,$K2C$($k$3$H$r$7$F$$$^$7$?!#(BRMAIL $B$O(B -Emacs $B$N:G=i$N%a!<%k%j!<%@!<$G!"(BRichard Stallman $B$K$h$C$F=q$+$l!"(B +$B%$%k$N$=$l$>$l$N%a%C%;!<%8$N@hF,$K2C$($k$3$H$r$7$F$$$^$7$?!#(B +RMAIL $B$O(B Emacs $B$N:G=i$N%a!<%k%j!<%@!<$G!"(BRichard Stallman $B$K$h$C$F=q$+$l!"(B Stallman $B$O$=$N(B TOPS/Babyl $B4D6-$N=P?H$G$"$k$?$a!"(BRMAIL $B$r4{$KB8:_$7$F$$(B -$B$?%a!<%k%U%!%$%k$N0lB2$rM}2r$9$kMM$K=q$-$^$7$?!#(BGnus ($B$3$NLdBj$K4X$7$F$O(B -VM $B$b(B) $B$3$N7A<0$r%5%]!<%H$7B3$1$F$$$^$9!#$=$l$O!"$=$N%a!<%i!e$N7A<0$NN>J}$O%a!<%k$r%U%!%$%k%7%9%F%`$NC1FH$N%U%!%$%k$KF~$l!"%a!<%k$r(B $B8+$k$?$S$K!"%U%!%$%kA4BN$r2r@O$7$J$1$l$P$J$j$^$;$s!#(B @@ -11971,15 +12061,15 @@ VM $B$b(B) $B$3$N7A<0$r%5%]!<%H$7B3$1$F$$$^$9!#$=$l$O!"$=$N%a!<%i!o$K$?$/$5$s>CHq$7$^$9!#$9$J$o$A!"%U%!%$(B $B%k%7%9%F%`$G?7$7$$%U%!%$%k$rF~$l$k$?$a$N2DG=$J>l=j$rDj5A$9$k;q8;$r$?$/$5(B @@ -12005,12 +12095,12 @@ Rand MH $B%a!<%k1\Mw%7%9%F%`$O(B UNIX $B%7%9%F%`$K$+$J$jD9$$4VB8:_$7$F$$$^$9! $B4pK\E*$K(B @code{nnfolder} $B$N8z2L$O%0%k!<%WKh$N(B @code{nnmbox} ($B>e$G@bL@$5(B $B$l$F$$$k:G=i$NJ}K!(B) $B$G$9!#$9$J$o$A!"(B@code{nnmbox} $B<+?H$O(B *$BA4$F(B* $B$N%a!<%k(B -$B$r0l$D$N%U%!%$%k$KF~$l$^$9(B; @code{nnfolder} $B$O%a!<%k%0%k!<%W$=$l$>$l$,(B -Unix mail box $B%U%!%$%k$r;}$D$h$&$K>/$7:GE,2=$r$7$^$9!#(B@code{nnmobx} $B$h$j(B -$B$b!"$=$l$>$l$N%0%k!<%W$rJL$K2r@O$9$k$N$GB.$/!"$=$N$&$(%a!<%k$r0\F0$5$;$k(B -$B$N$K:G>.8B$NO+NO$rMW5a$9$kC1=c$J(B Unix mail box $B7A<0$rDs6!$7$^$9!#2C$($F!"(B -gnus $B$,$=$l$>$l$NJL$N%0%k!<%W$K$I$N$/$i$$$N%a%C%;!<%8$,$"$k$+$rD4$Y$k$?(B -$B$a$N(B ``$B%"%/%F%#%V(B'' $B%U%!%$%k$r0];}$7$^$9!#(B +$B$r0l$D$N%U%!%$%k$KF~$l$^$9(B; @code{nnfolder} $B$O%a!<%k%0%k!<%W$=$l$>$l(B +$B$,(B Unix mail box $B%U%!%$%k$r;}$D$h$&$K>/$7:GE,2=$r$7$^$9!#(B +@code{nnmobx} $B$h$j$b!"$=$l$>$l$N%0%k!<%W$rJL$K2r@O$9$k$N$GB.$/!"$=$N$&$((B +$B%a!<%k$r0\F0$5$;$k$N$K:G>.8B$NO+NO$rMW5a$9$kC1=c$J(B Unix mail box $B7A<0$r(B +$BDs6!$7$^$9!#2C$($F!"(Bgnus $B$,$=$l$>$l$NJL$N%0%k!<%W$K$I$N$/$i$$$N%a%C%;!<(B +$B%8$,$"$k$+$rD4$Y$k$?$a$N(B ``$B%"%/%F%#%V(B'' $B%U%!%$%k$r0];}$7$^$9!#(B $B$b$7$?$/$5$s$NNL$N%a%C%;!<%8$r$l$NJL$N%0%k!<%W$K$I$N$/$i$$$N%a%C%;!<%8$,$"$k$+$rD4$Y$k$?(B @end table - @node Browsing the Web @section Browsing the Web @cindex web @@ -12046,12 +12135,12 @@ Gnus $B$O$3$l$i$N%=!<%9$X$N3&LL$rDs6!$9$k%P%C%/%(%s%I72$r>/$7Hw$($D$D$"$j(B $B$^$9!#(B @menu -* Web Searches:: $BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k!#(B -* Slashdot:: Slashdot $B$N%3%a%s%H$rFI$`!#(B -* Ultimate:: Ultimate Bulletin Board $B%7%9%F%`(B. -* Web Archive:: $B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`!#(B -* Web Newspaper:: $B%&%'%V$KJ]4I$5$l$??7J9$rFI$`!#(B -* Customizing w3:: Gnus $B$+$i(B Emacs/w3 $B$rA`:n$9$k!#(B +* Web Searches:: $BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k(B +* Slashdot:: Slashdot $B$N%3%a%s%H$rFI$`(B +* Ultimate:: Ultimate Bulletin Board $B%7%9%F%`(B +* Web Archive:: $B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`(B +* Web Newspaper:: $B%&%'%V$KJ]4I$5$l$??7J9$rFI$`(B +* Customizing w3:: Gnus $B$+$i(B Emacs/w3 $B$rA`:n$9$k(B @end menu $B$9$Y$F$N%&%'%V%=!<%9$O!"F0:n$5$;$k$?$a$K(B Emacs/w3 $B$H(B url $B%i%$%V%i%j$,I,(B @@ -12077,41 +12166,38 @@ Gnus $B$O$3$l$i$N%=!<%9$X$N3&LL$rDs6!$9$k%P%C%/%(%s%I72$r>/$7Hw$($D$D$"$j(B @cindex Usenet searches @cindex searching the Usenet -$B$=$l$O!"$J$s$H$$$&$+!"(BUsenet $B$+$iJ8;zNs$K%^%C%A$9$k5-;v$r8!:w$9(B -$B$k$N$O$H$F$bAG@2$i$7$$$s$@$1$I!"$=$N!"$"$N%&%'%V%V%i%&%6!<$C$F$d(B -$B$D$r;H$C$F!"$=$s$G$b$C$F!"@kEA$rFI$^$;$i$l$k$C$F$$$&$N$O!"$=$N!"(B -$B$J$s$H$$$&$+!"$[$s$H$&$K(B @emph{$B!VITMM$M!W(B} $B$H$$$&$+!"$=$l$G!"(B -gnus $B$G$O%V%i%&%6!<$r;H$o$:$K!"$=$N!"(B@emph{$BD6$+$C$3$h$/(B}$B$=$l$,$G(B -$B$-$k!"$C$F$3$H$G$9!#(B - -@code{nnweb} $B%P%C%/%(%s%I$O!"6/NO$J8!:w%(%s%8%s$KBP$7$F4JC1$J%$(B -$B%s%?!<%U%'!<%9$rDs6!$7$^$9!#(B@code{nnweb} $B%0%k!<%W$r:n@.$7!"8!:w(B -$B%Q%?!<%s$rF~NO$7!"$=$7$F$=$N%0%k!<%W$KF~$C$FB>$NIaDL$N%0%k!<%W$N(B -$B$h$&$K5-;v$rFI$_$^$9!#%0%k!<%W%P%C%U%!(B (@pxref{Foreign -Groups}) $B$N(B @kbd{G w} $BL?Na$K$h$C$F$*$NIaDL$N%0%k!<%W$N$h$&$K5-;v$rFI$_$^$9!#%0%k!<(B +$B%W%P%C%U%!(B (@pxref{Foreign Groups}) $B$N(B @kbd{G w} $BL?Na$K$h$C$F$*A[%5!<%P!$l$N?7$7$$%K%e!<%95-;v$r?7$7$$(B -gnus $B$N%0%k!<%W$H$7$F9XFI$7!"$3$l$i$N%0%k!<%W$KF~$k$3$H$G%3%a%s%H$rFI$`(B -$B$3$H$,$G$-$^$9!#(B($B=i4|@_Dj$N9XFIJ}K!$G$O!"?7$7$$%0%k!<%W$r%>%s%S$H$7$F9X(B -$BFI$9$k$3$H$KCm0U$7$F$/$@$5$$!#B>$NJ}K!$b;H$($^$9(B (@pxref{Subscription -Methods})$B!#(B +$B$r?R$M$k$h$&$K$7$^$9!#(B@kbd{F} $BL?Na$O$=$l$>$l$N?7$7$$%K%e!<%95-;v$r?7$7(B +$B$$(B gnus $B$N%0%k!<%W$H$7$F9XFI$7!"$3$l$i$N%0%k!<%W$KF~$k$3$H$G%3%a%s%H$rFI(B +$B$`$3$H$,$G$-$^$9!#(B($B=i4|@_Dj$N9XFIJ}K!$G$O!"?7$7$$%0%k!<%W$r%>%s%S$H$7$F(B +$B9XFI$9$k$3$H$KCm0U$7$F$/$@$5$$!#B>$NJ}K!$b;H$($^(B +$B$9(B (@pxref{Subscription Methods})$B!#(B $B$b$7$"$J$?$,8E$$(B @code{nnslashdot} $B%0%k!<%W$r:o=|$7$?$$$N$J$i$P!"(B @kbd{G DEL} $B$,:G$bl=j$G$9!#=i4|CM$O(B -@samp{~/News/slashdot/} $B$G$9!#(B +@code{nnslashdot} $B$,%U%!%$%k$rJ]B8$9$k>l=j$G$9!#=i4|CM(B +$B$O(B @samp{~/News/slashdot/} $B$G$9!#(B @item nnslashdot-active-url @vindex nnslashdot-active-url @@ -12221,14 +12306,14 @@ Methods})$B!#(B @item nnslashdot-comments-url @vindex nnslashdot-comments-url -$B%3%a%s%H$ruBV$KJ]$C$F$*$/$?$a$K>pJs$rF@$k$3$H$,2DG=$G$9!#(B +$B%a!<%j%s%0%j%9%H$NCf$K$ONc$($P!"(B +@file{http://www.egroups.com/} $B$d(B @file{http://www.mail-archive.com/} $B$N(B +$B$h$&$K%&%'%V%5!<%P!<$K$7$+%"!<%+%$%V$,L5$$$b$N$b$"$j$^$9!#$H$F$b@0A3$H$7(B +$B$FNI$$3&LL$G!"(Bgnus $B$,%0%k!<%W$r:G?7$N>uBV$KJ]$C$F$*$/$?$a$K>pJs$rF@$k$3(B +$B$H$,2DG=$G$9!#(B @code{nnwarchive} $B$r;O$a$k$?$a$N0lHV4JC1$JJ}K!$O%0%k!<%W%P%C%U%!$G0J2<$N(B $B$h$&$J$b$N$r$9$k$3$H$G$9(B: @kbd{M-x gnus-group-make-warchive-group RET @@ -12293,8 +12376,8 @@ an_egroup RET egroups RET www.egroups.comRET your@@email.address RET}$B!#(B @table @code @item nnwarchive-directory @vindex nnwarchive-directory -@code{nnwarchive} $B$,%U%!%$%k$rJ]B8$9$k%G%#%l%/%H%j!<$G$9!#=i4|CM$O(B -@samp{~/News/warchive} $B$G$9!#(B +@code{nnwarchive} $B$,%U%!%$%k$rJ]B8$9$k%G%#%l%/%H%j!<$G$9!#=i4|CM(B +$B$O(B @samp{~/News/warchive} $B$G$9!#(B @item nnwarchive-login @vindex nnwarchive-login @@ -12305,7 +12388,6 @@ an_egroup RET egroups RET www.egroups.comRET your@@email.address RET}$B!#(B $B%&%'%V%5!<%P!<$G$N%"%+%&%s%H$N%Q%9%o!<%I$G$9!#(B @end table - @node Web Newspaper @subsection Web Newspaper @cindex nnshimbun @@ -12327,8 +12409,8 @@ asahi RET an_group RET}$B!#(B(@sc{an_group} $B$r1\Mw$7$?$$5-;v%0%k!<%W$KCV$-4 @table @code @item nnshimbun-directory @vindex nnshimbun-directory -@code{nnshimbun} $B$,%U%!%$%k$rJ]B8$9$k%G%#%l%/%H%j!<$G$9!#=i4|CM$O(B -@samp{~/News/shimbun} $B$G$9!#(B +@code{nnshimbun} $B$,%U%!%$%k$rJ]B8$9$k%G%#%l%/%H%j!<$G$9!#=i4|CM(B +$B$O(B @samp{~/News/shimbun} $B$G$9!#(B @item nnshimbun-pre-fetch-article @vindex nnshimbun-pre-fetch-article @@ -12345,7 +12427,6 @@ asahi RET an_group RET}$B!#(B(@sc{an_group} $B$r1\Mw$7$?$$5-;v%0%k!<%W$KCV$-4 (nnshimbun "asahi" (nnshimbun-url "http://iij.asahi.com/")) @end lisp - @node Customizing w3 @subsection w3 $B$N%+%9%?%^%$%:(B @cindex w3 @@ -12377,7 +12458,6 @@ Gnus $B$O%&%'%V%Z!<%8$rH(B $B$9$k$h$&$K$J$k$G$7$g$&!#(B - @node Other Sources @section $B$=$NB>$N%0%k!<%W8;(B @@ -12387,125 +12467,118 @@ Gnus $B$O$?$@C1$K%K%e!<%9$d%a!<%k$rFI$`0J>e$N$3$H$,$G$-$^$9!#0J2<(B $B$9!#(B @menu -* Directory Groups:: $B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$KFI$`!#(B +* Directory Groups:: $B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$KFI$`(B * Anything Groups:: Dired? $BC/$,(B dired $B$J$s$F;H$&$N(B? -* Document Groups:: $B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG!#(B -* SOUP:: @sc{soup} $B%Q%1%C%H$r(B ``$B%*%U%i%$%s(B''$B$GFI$`!#(B -* Mail-To-News Gateways:: $B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7$F5-;v$rEj9F$9$k!#(B -* IMAP:: Gnus $B$r(B IMAP $B$N%/%i%$%"%s%H$H$7$F;H$&!#(B +* Document Groups:: $B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG(B +* SOUP:: @sc{soup} $B%Q%1%C%H$r(B ``$B%*%U%i%$%s(B''$B$GFI$`(B +* Mail-To-News Gateways:: $B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7$F5-;v(B + $B$rEj9F$9$k(B +* IMAP:: Gnus $B$r(B IMAP $B$N%/%i%$%"%s%H$H$7$F;H$&(B @end menu - @node Directory Groups @subsection $B%G%#%l%/%H%j!<%0%k!<%W(B @cindex nndir @cindex directory groups -$B$b$7!"$?$/$5$s$N5-;v$,8DJL$N%U%!%$%k$H$7$FF~$C$F$$$k%G%#%l%/%H%j!<(B -$B$,$"$l$P!"$=$l$r%K%e!<%9%0%k!<%W$H$7$F07$&$3$H$,$G$-$^$9!#$b$A$m(B -$B$s!"%U%!%$%k$O?t;z$N%U%!%$%kL>$r$b$C$F$$$J$1$l$P$J$j$^$;$s!#(B +$B$b$7!"$?$/$5$s$N5-;v$,8DJL$N%U%!%$%k$H$7$FF~$C$F$$$k%G%#%l%/%H%j!<$,$"$l(B +$B$P!"$=$l$r%K%e!<%9%0%k!<%W$H$7$F07$&$3$H$,$G$-$^$9!#$b$A$m$s!"%U%!%$%k$O(B +$B?t;z$N%U%!%$%kL>$r$b$C$F$$$J$1$l$P$J$j$^$;$s!#(B -$B$3$3$G(B Emacs $B$NAG@2$i$7$$%Q%C%1!<%8$NCf$G$b:G$bAG@2$i$7$$(B -@code{ange-ftp} ($B$H$=$N8e7Q$N(B @code{efs}) $B$K$D$$$F?($l$kNI$$5!2q(B -$B$G$7$g$&!#;d$,(B @code{nndir} $B$r=q$$$?$H$-$O!"$3$l(B --- $B%G%#%l%/%H(B -$B%j!<$rFI$`%P%C%/%(%s%I$K$D$$$F$O$"$^$j9M$($F$$$^$;$s$G$7$?!#$H$s(B -$B$G$b$J$$$3$H$@$M!#(B +$B$3$3$G(B Emacs $B$NAG@2$i$7$$%Q%C%1!<%8$NCf$G$b:G$bAG@2$i$7(B +$B$$(B @code{ange-ftp} ($B$H$=$N8e7Q$N(B @code{efs}) $B$K$D$$$F?($l$kNI$$5!2q$G$7$g(B +$B$&!#;d$,(B @code{nndir} $B$r=q$$$?$H$-$O!"$3$l(B --- $B%G%#%l%/%H%j!<$rFI$`%P%C(B +$B%/%(%s%I$K$D$$$F$O$"$^$j9M$($F$$$^$;$s$G$7$?!#$H$s$G$b$J$$$3$H$@$M!#(B @code{ange-ftp} $B$O$3$N>p67$r7`E*$KJQ2=$5$;$^$7$?!#Nc$($P!"(B -@code{ange-ftp} $B%U%!%$%kL>(B -@file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} $B$r%G%#%l%/%H%j!(B -$B$H$7$FF~NO$7$?$H$9$k$H!"(B@code{ange-ftp} $B$"$k$$$O(B @code{efs} $B$O(B @file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} $B$r%G%#%l%/%H%j!$H$7$F(B +$BF~NO$7$?$H$9$k$H!"(B@code{ange-ftp} $B$"$k$$$O(B @code{efs} $B$OC5n$r9T$J$&$3$H$O$G$-$^$;$s!#(B -@code{nndir} $B$,;H$($k$b$N$J$i2?$G$b(B @code{nnmh} $B$"$k$$$O(B -@code{nnml} $B$r;H$&$3$H$,$G$-$k$N$G!"$b$7FI$_=P$7@lMQ$G$O$J$$(B -@code{nndir} $B$,I,MW$@$H;W$C$?$i!"$3$l$i$N$I$A$i$+$NJ}K!$K@Z$jBX(B -$B$($k$3$H$b$G$-$^$9!#(B - +@code{nndir} $B$O(B ``$BFI$_=P$7@lMQ(B'' $B$N%P%C%/%(%s%I$G$9(B --- $B$3$NA*BrJ}K!$G$O!"(B +$B5-;v$N:o=|$d4|8B@Z$l>C5n$r9T$J$&$3$H$O$G$-$^$;$s!#(B@code{nndir} $B$,;H$($k(B +$B$b$N$J$i2?$G$b(B @code{nnmh} $B$"$k$$$O(B @code{nnml} $B$r;H$&$3$H$,$G$-$k$N$G!"(B +$B$b$7FI$_=P$7@lMQ$G$O$J$$(B @code{nndir} $B$,I,MW$@$H;W$C$?$i!"$3$l$i$N$I$A$i(B +$B$+$NJ}K!$K@Z$jBX$($k$3$H$b$G$-$^$9!#(B @node Anything Groups @subsection $B$J$s$G$b%0%k!<%W(B @cindex nneething -($B0l$D$N%9%W!<%kIw%G%#%l%/%H%j!<$H2r$lA':w$7$F(B -$B$^$o$j$^$9!#$b$7$=$N%U%!%$%k$,5-;v$N$h$&$K8+$($?$J$i(B ($B$9$J$o$A!"(B -$B:G=i$N?t9T$,%X%C%@!<$N$h$&$K8+$($?$i(B) $B$=$l$r%X%C%@$H$7$F;H$$$^$9!#(B -$B$b$7$=$l$,%X%C%@!<$N$J$$$?$@$NE,Ev$J%U%!%$%k(B ($BNc$($P(B C $B$N%=!<%9(B -$B%U%!%$%k(B) $B$G$"$C$?$J$i!"(B@code{nneething} $B$O%X%C%@!<$r5u6u$+$i:n(B -$B$j=P$7$^$9!#$3$l$O%U%!%$%k$N=jM-A0!"F|IU$r;H$$!"$3$l$i$NMW(B -$BAG$KBP$7$F$G$-$k$3$H$r2?$G$b$d$j$^$9!#(B - -$B$3$l$O$"$J$?$K$H$C$F$OA4$F<+F0E*$K5/$3$k$3$H$G!"$"$J$?$O%K%e!<%9(B -$B%0%k!<%W$K$H$F$bNI$/;w$?2?$+$r8+$;$i$l$k$3$H$K$J$k$G$7$g$&!#$[$s(B -$B$H$&$K@#J,0c$o$J$$!"%K%e!<%9%0%k!<%W$N$h$&$J$b$N$r!#5-;v$rA*Br$9(B -$B$k$H!"$=$l$O$$$D$b$N$h$&$K!"5-;v%P%C%U%!$KI=<($5$l$k$G$7$g$&!#(B - -$B%G%#%l%/%H%j!<$rI=$o$7$F$$$k9T$rA*Br$9$k$H!"(Bgnus $B$O$"$J$?$r$3$N(B -@code{nneething} $B%0%k!<%W$N$?$a$N?7$7$$35N,%P%C%U%!$KO"$l$F9T$/(B -$B$G$7$g$&!#0J2pJs$r21$($F$*$-$^$;$s!#$b$7(B@kbd{G -m} $B$GIaDL$K8GDj(B @code{nneething} $B%0%k!<%W$r:n$k$H!"(Bgnus$B$O5-;vHV(B -$B9f$H%U%!%$%kL>$NBP1~I=$r21$($F$*$-!"$3$N%0%k!<%W$rB>$N%0%k!<%W$H(B -$BF1MM$K07$&$3$H$,$G$-$k$h$&$K$J$j$^$9!#8GDj(B@code{nneething} $B%0%k!<(B -$B%W$r:nF0$5$;$k$H!"L$FI5-;v$,$$$/$D4^$^$l$F$$$k$+$rCN$i$5$l$?$j!"(B -$B$J$I$J$I!#(B +($B0l$D$N%9%W!<%kIw%G%#%l%/%H%j!<$H2r$lA':w$7$F$^$o$j$^$9!#$b$7$=$N%U%!%$%k$,5-;v$N$h$&$K8+$((B +$B$?$J$i(B ($B$9$J$o$A!":G=i$N?t9T$,%X%C%@!<$N$h$&$K8+$($?$i(B) $B$=$l$r%X%C%@$H$7(B +$B$F;H$$$^$9!#$b$7$=$l$,%X%C%@!<$N$J$$$?$@$NE,Ev$J%U%!%$%k(B ($BNc$($P(B C $B$N%=!<(B +$B%9%U%!%$%k(B) $B$G$"$C$?$J$i!"(B@code{nneething} $B$O%X%C%@!<$r5u6u$+$i:n$j=P$7(B +$B$^$9!#$3$l$O%U%!%$%k$N=jM-A0!"F|IU$r;H$$!"$3$l$i$NMWAG$KBP$7$F$G$-(B +$B$k$3$H$r2?$G$b$d$j$^$9!#(B + +$B$3$l$O$"$J$?$K$H$C$F$OA4$F<+F0E*$K5/$3$k$3$H$G!"$"$J$?$O%K%e!<%9%0%k!<%W(B +$B$K$H$F$bNI$/;w$?2?$+$r8+$;$i$l$k$3$H$K$J$k$G$7$g$&!#$[$s$H$&$K@#J,0c$o$J(B +$B$$!"%K%e!<%9%0%k!<%W$N$h$&$J$b$N$r!#5-;v$rA*Br$9$k$H!"$=$l$O$$$D$b$N$h$&(B +$B$K!"5-;v%P%C%U%!$KI=<($5$l$k$G$7$g$&!#(B + +$B%G%#%l%/%H%j!<$rI=$o$7$F$$$k9T$rA*Br$9$k$H!"(Bgnus $B$O$"$J$?$r$3(B +$B$N(B @code{nneething} $B%0%k!<%W$N$?$a$N?7$7$$35N,%P%C%U%!$KO"$l$F9T$/$G$7$g(B +$B$&!#0J2pJs$r21$($F$*$-$^$;$s!#$b$7(B @kbd{G m} $B$GIaDL$K8G(B +$BDj(B @code{nneething} $B%0%k!<%W$r:n$k$H!"(Bgnus $B$O5-;vHV9f$H%U%!%$%kL>$NBP1~(B +$BI=$r21$($F$*$-!"$3$N%0%k!<%W$rB>$N%0%k!<%W$HF1MM$K07$&$3$H$,$G$-$k$h$&$K(B +$B$J$j$^$9!#8GDj(B @code{nneething} $B%0%k!<%W$r:nF0$5$;$k$H!"L$FI5-;v$,$$$/$D(B +$B4^$^$l$F$$$k$+$rCN$i$5$l$?$j!"$J$I$J$I!#(B $B$$$/$D$+$NJQ?t$,$"$j$^$9!#(B @table @code @item nneething-map-file-directory @vindex nneething-map-file-directory -$BA4$F$N8GDj(B @code{nneething} $B%0%k!<%W$NBP1~I=$O$3$N%G%#%l%/%H%j!<(B -$B$K3JG<$5$l$^$9!#$3$N=i4|@_DjCM$O(B @file{~/.nneething/} $B$G$9!#(B +$BA4$F$N8GDj(B @code{nneething} $B%0%k!<%W$NBP1~I=$O$3$N%G%#%l%/%H%j!<$K3JG<$5(B +$B$l$^$9!#$3$N=i4|@_DjCM$O(B @file{~/.nneething/} $B$G$9!#(B @item nneething-exclude-files @vindex nneething-exclude-files -$B$3$N@55,I=8=$K%^%C%A$9$k%U%!%$%k$O$9$Y$FL5;k$5$l$^$9!#<+F0J]B8%U%!(B -$B%$%k$J$I$r=|$/$N$KJXMx$K;H$($^$9!#$=$7$F$=$l$,$^$5$K=i4|@_Dj$G9T(B -$B$J$o$l$kF0:n$G$9!#(B +$B$3$N@55,I=8=$K%^%C%A$9$k%U%!%$%k$O$9$Y$FL5;k$5$l$^$9!#<+F0J]B8%U%!%$%k$J(B +$B$I$r=|$/$N$KJXMx$K;H$($^$9!#$=$7$F$=$l$,$^$5$K=i4|@_Dj$G9T$J$o$l$kF0:n$G(B +$B$9!#(B @item nneething-include-files @vindex nneething-include-files -$B$=$N%U%!%$%k$r%0%k!<%W$K4^$a$k$+$r<($9@55,I=8=$G$9!#$3$NJQ?t$,(B -@code{nil} $B$G$J$1$l$P!"$3$N@55,I=8=$K9gCW$9$k%U%!%$%k$@$1$,4^$^$l$^$9!#(B +$B$=$N%U%!%$%k$r%0%k!<%W$K4^$a$k$+$r<($9@55,I=8=$G$9!#$3$NJQ?t(B +$B$,(B @code{nil} $B$G$J$1$l$P!"$3$N@55,I=8=$K9gCW$9$k%U%!%$%k$@$1$,4^$^$l$^$9!#(B @item nneething-map-file @vindex nneething-map-file $BBP1~I=%U%!%$%k$NL>A0!#(B @end table - @node Document Groups @subsection $BJ8=q%0%k!<%W(B @cindex nndoc @cindex documentation group @cindex help group -@code{nndoc} $B$O0l$D$N%U%!%$%k$r%K%e!<%9%0%k!<%W$H$7$FFI$`$3$H$r(B -$B$G$-$k$h$&$K$9$k!"$A$g$C$H5$$NMx$$$?$d$D$G$9!#$$$/$D$+$N%U%!%$%k(B -$BItJ,%a%C%;!<%8(B (multipart) $B$G$9!#(B $BHsI8=`$^$H$aAw$j7A<0(B --- $B$@$$$?$$$O$&$^$/%^%C%A$9$k$,!"$G$b07$$$O2<J,$J%X%C%@!<$r(B -$BA^F~$7$h$&$H$7$?$j$O$7$^$;$s(B --- $BC1=c$K!"%U%!%$%k$r$=$N%0%k!<%W(B -$B$NJ,$J%X%C%@!<$rA^F~$7$h(B +$B$&$H$7$?$j$O$7$^$;$s(B --- $BC1=c$K!"%U%!%$%k$r$=$N%0%k!<%W$NA[%5!<%P!A0(B (@dfn{name}) $B$H$=$l$KB3$/@55,I=8=$H2>(B -$BA[JQ?t@_Dj$NNs$+$i$J$j$^$9!#0J2<$,$3$l$K;H$($kJQ?t$G$9(B --- $BJQ?t(B -$B$N?t$K05E]$5$l$J$$$G$/$@$5$$!#$[$H$s$I$NJ8=qA0(B (@dfn{name}) $B$H$=$l$KB3$/@55,I=8=$H2>A[JQ?t@_(B +$BDj$NNs$+$i$J$j$^$9!#0J2<$,$3$l$K;H$($kJQ?t$G$9(B --- $BJQ?t$N?t$K05E]$5$l$J(B +$B$$$G$/$@$5$$!#$[$H$s$I$NJ8=ql9g!"$3$l$O5-;v$N@hF,$K%]%$%s%H$r0\F0$5$;$k4X?t$G$J$/(B -$B$F$O$J$j$^$;$s!#(B +$B$3$l$,$"$k>l9g!"$3$l$O5-;v$N@hF,$K%]%$%s%H$r0\F0$5$;$k4X?t$G$J$/$F$O$J$j(B +$B$^$;$s!#(B @item nndoc-head-begin -$B$3$l$,$"$k>l9g!"$3$l$O5-;v$N%X%C%@!<$K%^%C%A$9$k@55,I=8=$G$J$/$F(B -$B$O$J$j$^$;$s!#(B +$B$3$l$,$"$k>l9g!"$3$l$O5-;v$N%X%C%@!<$K%^%C%A$9$k@55,I=8=$G$J$/$F$O$J$j$^(B +$B$;$s!#(B @item nndoc-head-end -$B$3$l$O5-;v$N%X%C%@!<$N:G8e$K%^%C%A$7$J$/$F$O$J$j$^$;$s!#$3$N=i4|(B -$B@_DjCM$O(B @samp{^$} --- $B6u9T$G$9!#(B +$B$3$l$O5-;v$N%X%C%@!<$N:G8e$K%^%C%A$7$J$/$F$O$J$j$^$;$s!#$3$N=i4|@_DjCM(B +$B$O(B @samp{^$} --- $B6u9T$G$9!#(B @item body-begin-function -$B$3$l$,$"$k>l9g!"$3$N4X?t$O5-;v$N%\%G%#$N3+;O0LCV$K%]%$%s%H$r0\F0(B -$B$5$;$k4X?t$G$J$/$F$O$J$j$^$;$s!#(B +$B$3$l$,$"$k>l9g!"$3$N4X?t$O5-;v$N%\%G%#$N3+;O0LCV$K%]%$%s%H$r0\F0$5$;$k4X(B +$B?t$G$J$/$F$O$J$j$^$;$s!#(B @item body-begin -$B$3$l$O5-;v$N%\%G%#$N3+;O0LCV$K%^%C%A$7$J$/$F$O$J$j$^$;$s!#$3$N=i(B -$B4|@_DjCM$O(B @samp{^\n} $B$G$9!#(B +$B$3$l$O5-;v$N%\%G%#$N3+;O0LCV$K%^%C%A$7$J$/$F$O$J$j$^$;$s!#$3$N=i4|@_DjCM(B +$B$O(B @samp{^\n} $B$G$9!#(B @item body-end-function -$B$3$l$,$"$k>l9g!"$3$N4X?t$O5-;v$N%\%G%#$N:G8e$N0LCV$K%]%$%s%H$r0\(B -$BF0$5$;$k4X?t$G$J$/$F$O$J$j$^$;$s!#(B +$B$3$l$,$"$k>l9g!"$3$N4X?t$O5-;v$N%\%G%#$N:G8e$N0LCV$K%]%$%s%H$r0\F0$5$;$k(B +$B4X?t$G$J$/$F$O$J$j$^$;$s!#(B @item body-end $B$3$l$,$"$l$P!"5-;v$N%\%G%#$N:G8e$K%^%C%A$7$J$/$F$O$J$j$^$;$s!#(B @item file-end -$B$3$l$,$"$k>l9g!"$3$l$O%U%!%$%k$N:G8e$K%^%C%A$7$J$/$F$O$J$j$^$;$s!#(B -$B$3$N@55,I=8=$N8e$m$N%F%-%9%H$OA4$F!"40A4$KL5;k$5$l$^$9!#(B +$B$3$l$,$"$k>l9g!"$3$l$O%U%!%$%k$N:G8e$K%^%C%A$7$J$/$F$O$J$j$^$;$s!#$3$N@5(B +$B5,I=8=$N8e$m$N%F%-%9%H$OA4$F!"40A4$KL5;k$5$l$^$9!#(B @end table -$B$3$N$h$&$K!"$3$l$i$NJQ?t$r;H$C$F(B @code{nndoc} $B$OJ8=q%U%!%$%k$r!"(B -$B$=$l$>$l%X%C%@!<$H%\%G%#$r;}$C$?5-;v$NO"$J$j$H$7$F2rK6$9$k$3$H$,(B -$B$G$-$^$9!#$7$+$7!"A4$F$NJ8=q$l(B +$B%X%C%@!<$H%\%G%#$r;}$C$?5-;v$NO"$J$j$H$7$F2rK6$9$k$3$H$,$G$-$^$9!#$7$+$7!"(B +$BA4$F$NJ8=ql9g$KM-MQ$G$9!#(B +$B$3$l$,$"$l$P!"$3$N4X?t$O5-;v$,MW5a$5$l$?$H$-$K8F$S=P$5$l$^$9!#$3$l$O%\%G%#(B +$B$N3+;O0LCV$N%]%$%s%H$H$H$b$K8F$S=P$5$l!"J8=q$NFbMF$N0lIt$,Id9f2=$5$l$F$$(B +$B$k>l9g$KM-MQ$G$9!#(B @item article-transform-function -$B$3$l$,$"$l$P!"$3$N4X?t$O5-;v$,MW5a$5$l$?$H$-$K8F$S=P$5$l$^$9!#$3(B -$B$l$O!"5-;v$N%X%C%@!<$H%\%G%#$NN>J}$K$h$j9-HO0O$JJQ7A$r9T$J$&$?$a(B -$B$K;H$o$l$k$b$N$G$9!#(B +$B$3$l$,$"$l$P!"$3$N4X?t$O5-;v$,MW5a$5$l$?$H$-$K8F$S=P$5$l$^$9!#$3$l$O!"5-(B +$B;v$N%X%C%@!<$H%\%G%#$NN>J}$K$h$j9-HO0O$JJQ7A$r9T$J$&$?$a$K;H$o$l$k$b$N$G(B +$B$9!#(B @item generate-head-function -$B$3$l$,$"$l$P!"$3$N4X?t$O(B gnus $B$,M}2r$G$-$k%X%C%@!<$r@8@.$9$k$?$a(B -$B$K8F$S=P$5$l$^$9!#$3$l$O5-;vHV9f$r%Q%i%a!<%?$H$7$F8F$S=P$5$l!"Ld(B -$BBj$N5-;v$N$-$l$$$J%X%C%@!<$r@8@.$9$k$3$H$r5a$a$i$l$^$9!#$3$l$OA4(B -$B$F$N5-;v$N%X%C%@!<$,MW5a$5$l$k$H$-$K8F$S=P$5$l$^$9!#(B +$B$3$l$,$"$l$P!"$3$N4X?t$O(B gnus $B$,M}2r$G$-$k%X%C%@!<$r@8@.$9$k$?$a$K8F$S=P(B +$B$5$l$^$9!#$3$l$O5-;vHV9f$r%Q%i%a!<%?$H$7$F8F$S=P$5$l!"LdBj$N5-;v$N$-$l$$(B +$B$J%X%C%@!<$r@8@.$9$k$3$H$r5a$a$i$l$^$9!#$3$l$OA4$F$N5-;v$N%X%C%@!<$,MW5a(B +$B$5$l$k$H$-$K8F$S=P$5$l$^$9!#(B @end table @@ -12696,108 +12761,103 @@ gnus $B$N%a!<%k%P%C%/%(%s%I$KDI2C$7$?$$$H$$$&$H$-$O!"$*$=$i$/(B (subtype digest guess)) @end example -70 $BJ8;z$N%@%C%7%e(B(`-')$B$N9T$h$jA0$OA4$FL5;k$5$l$k$H$$$&$N$,J,$+$j$^(B -$B$9!#$^$?(B @samp{^End of} $B$G;O$^$k9T$h$j8e$m$bA4$FL5;k$5$l$^$9!#3F(B -$B5-;v$O(B30 $BJ8;z$N%@%C%7%e$N9T$G;O$^$j!"%X%C%@!<$H%\%G%#$N6h@Z$j$N(B -$B9T$O0l8D$N%9%Z!<%9$r4^$`$3$H$,$"$j!"$=$7$F%\%G%#$O$=$l$,EO$5$l$k(B -$BA0$K(B @code{nndoc-unquote-dashes} $B$rDL$5$l$^$9!#(B +70 $BJ8;z$N%@%C%7%e(B(`-')$B$N9T$h$jA0$OA4$FL5;k$5$l$k$H$$$&$N$,J,$+$j$^$9!#$^(B +$B$?(B @samp{^End of} $B$G;O$^$k9T$h$j8e$m$bA4$FL5;k$5$l$^$9!#3F5-;v$O(B 30 $BJ8;z(B +$B$N%@%C%7%e$N9T$G;O$^$j!"%X%C%@!<$H%\%G%#$N6h@Z$j$N9T$O0l8D$N%9%Z!<%9$r4^(B +$B$`$3$H$,$"$j!"$=$7$F%\%G%#$O$=$l$,EO$5$l$kA0(B +$B$K(B @code{nndoc-unquote-dashes} $B$rDL$5$l$^$9!#(B $B$"$J$?FH<+$NJ8=qDj5A$r(B @code{nndoc} $B$K@\B3$9$k$K$O!"(B -@code{nndoc-add-type} $B4X?t$r;HMQ$7$^$9!#$3$l$OFs$D$N%Q%i%a!<%?$r(B -$B$H$j$^$9(B --- $B0l$DL\$O$=$NDj5A<+?H$G!"Fs$DL\$N(B ($B>JN,2DG=$J(B) $B%Q%i(B -$B%a!<%?$O$3$NDj5A$r!"J8=ql9g$O(B -@code{nil} $B$rJV$7!"$=$Nl9g$O(B @code{t} $B$rJV$7!"$=$NJN,2DG=$J(B) $B%Q%i%a!<%?$O$3$NDj(B +$B5A$r!"J8=ql9g$O(B @code{nil} $B$rJV$7!"$=(B +$B$Nl9g$O(B @code{t} $B$rJV$7!"$=$N$_$=$K3Z$r$5$;$kJ}$r$9$k$N$b;~$K$OJXMx(B -$B$G$9!#(B +$B$7$+$7!"$"$J$?$,$H$F$bCY$$%b%G%`$r;}$C$F$$$F$3$l$i$r@5$7$/@_Dj$9$k$3$H$K(B +$B6=L#$,L5$1$l$P!"G>$_$=$K3Z$r$5$;$kJ}$r$9$k$N$b;~$K$OJXMx$G$9!#(B -@sc{soup} $B$H8F$P$l$k%U%!%$%k7A<0$O%K%e!<%9$H%a!<%k$r%5!<%P!<$+$i(B -$B2H$N%^%7%s$X$HE>Aw$7!"$=$l$r$^$?La$9$?$a$K3+H/$5$l$^$7$?!#$A$g$C(B -$B$HLLE]$/$5$$$+$b$7$l$J$$$1$I$M!#(B +@sc{soup} $B$H8F$P$l$k%U%!%$%k7A<0$O%K%e!<%9$H%a!<%k$r%5!<%P!<$+$i2H$N%^%7(B +$B%s$X$HE>Aw$7!"$=$l$r$^$?La$9$?$a$K3+H/$5$l$^$7$?!#$A$g$C$HLLE]$/$5$$$+$b(B +$B$7$l$J$$$1$I$M!#(B $B$O$8$a$K$$$/$D$+MQ8l$r!#(B @table @dfn @item server -$B$3$l$O30$N@$3&$K7R$,$C$F$$$F!"$"$J$?$,%K%e!<%9$H%a!<%k$rAw$N@$3&$H$$$+$J$k7A$G$b@\B3$5$l$F$$$^$;$s!#(B +$B$3$l$O$"$J$?$,$N@$3&$H$$$+$J$k7A$G$b@\B3$5$l$F$$$^$;$s!#(B @item packet $B%a%C%;!<%8$HL?Na$r4^$s$@$b$N!#%Q%1%C%H$K$OFsA0$G$9!#$3$3$G(B @var{x} $B$O?t;z$G$9!#(B +$B$3$l$O%5!<%P!<$G:n$i$l$k%Q%1%C%H$G!"IaDL$O$"$J$?$,FI$`$?$a$N$?$/$5$s$N%a%C(B +$B%;!<%8$,4^$^$l$F$$$^$9!#$3$l$i$O=i4|@_Dj$G$O(B @file{SoupoutX.tgz} $B$H$$$&(B +$BL>A0$G$9!#$3$3$G(B @var{x} $B$O?t;z$G$9!#(B @item response packets -($BJV?.%Q%1%C%H(B) -$B$3$N%Q%1%C%H$O<+Bp%^%7%s$G:n$i$l$k%Q%1%C%H$G!"IaDL$O$"$J$?$N=q$$(B -$B$?JV;v$,4^$^$l$F$$$^$9!#$3$l$i$O=i4|@_Dj$G$O(B -@file{SoupinX.tgz} $B$H$$$&L>A0$G$9!#$3$3$G(B @var{x} $B$O?t;z$G$9!#(B +($BJV?.%Q%1%C%H(B) $B$3$N%Q%1%C%H$O<+Bp%^%7%s$G:n$i$l$k%Q%1%C%H$G!"IaDL$O$"$J(B +$B$?$N=q$$$?JV;v$,4^$^$l$F$$$^$9!#$3$l$i$O=i4|@_Dj$G(B +$B$O(B @file{SoupinX.tgz} $B$H$$$&L>A0$G$9!#$3$3$G(B @var{x} $B$O?t;z$G$9!#(B @end table @end table - @enumerate @item $B$^$:(B @sc{soup} $B%Q%1%C%H$r:n$k$?$a$K%5!<%P!<$K%m%0%$%s$7$^$9!#(B -@sc{soup} $B$N$?$a$N@lMQ$N%V%D(B (@code{awk} $B%W%m%0%i%`$N$h$&$J(B) $B$r(B -$B;H$C$F$bNI$$$7!"(B gnus $B$N(B @sc{soup} $BL?Na$r;H$C$F%Q%1%C%H$r:n$C$F(B -$B$bNI$$$G$9(B (@kbd{O s} $B$"$k$$$O(B @kbd{G s b} $B$=$7$F(B @kbd{G s p}) +@sc{soup} $B$N$?$a$N@lMQ$N%V%D(B (@code{awk} $B%W%m%0%i%`$N$h$&$J(B) $B$r;H$C$F$b(B +$BNI$$$7!"(Bgnus $B$N(B @sc{soup} $BL?Na$r;H$C$F%Q%1%C%H$r:n$C$F$bNI$$$G(B +$B$9(B (@kbd{O s} $B$"$k$$$O(B @kbd{G s b} $B$=$7$F(B @kbd{G s p}) + (@pxref{SOUP Commands})$B!#(B @item -$B%Q%1%C%H$r<+Bp$KE>Aw$7$^$9!#EEAw$7$^$9!#EEAw$7$^$9!#(B @@ -12810,17 +12870,16 @@ Gnus $B$+$i(B @kbd{G s s} $BL?Na$r;H$C$F$3$N%Q%1%C%H$+$i%a!<%k$r=P$7$^$9!#(B @end enumerate -$B$D$^$j4pK\E*$KFs$$$^$9!#(B +$B8=:_$N%0%k!<%W$NA4$F$NL$FI5-;v$r:-Jq$9(B +$B$k(B (@code{gnus-group-brew-soup})$B!#$3$N%3%^%s%I$O%W%m%;%9(B/$B@\F,0z?t$N=,47(B +$B$K=>$$$^$9!#(B @item G s w @kindex G s w (Group) @findex gnus-soup-save-areas -$BA4$F$N(B @sc{soup} $B%G!<%?%U%!%$%k$rJ]B8$7$^$9(B -(@code{gnus-soup-save-areas})$B!#(B +$BA4$F$N(B @sc{soup} $B%G!<%?%U%!%$%k$rJ]B8$7$^(B +$B$9(B (@code{gnus-soup-save-areas})$B!#(B @item G s s @kindex G s s (Group) @findex gnus-soup-send-replies -$BJV?.%Q%1%C%H$+$iA4$F$NJV?.$rAw=P$9$k(B -(@code{gnus-soup-send-replies})$B!#(B +$BJV?.%Q%1%C%H$+$iA4$F$NJV?.$rAw=P$9$k(B (@code{gnus-soup-send-replies})$B!#(B @item G s p @kindex G s p (Group) @findex gnus-soup-pack-packet -$BA4$F$N%U%!%$%k$r(B @sc{soup} $B%Q%1%C%H$K:-Jq$9$k(B -(@code{gnus-soup-pack-packet})$B!#(B +$BA4$F$N%U%!%$%k$r(B @sc{soup} $B%Q%1%C%H$K:-Jq$9(B +$B$k(B (@code{gnus-soup-pack-packet})$B!#(B @item G s r @kindex G s r (Group) @@ -12861,21 +12919,20 @@ Gnus $B$+$i(B @kbd{G s s} $BL?Na$r;H$C$F$3$N%Q%1%C%H$+$i%a!<%k$r=P$7$^$9!#(B @kindex O s (Summary) @findex gnus-soup-add-article $B$3$N35N,%b!<%IL?Na$O!"8=:_$N5-;v$r(B @sc{soup} $B%Q%1%C%H$KDI2C$7$^(B -$B$9(B (@code{gnus-soup-add-article})$B!#$3$l$O%W%m%;%9(B/$B@\F,0z?t$N=,47(B -$B$K=>$$$^$9(B (@pxref{Process/Prefix})$B!#(B +$B$9(B (@code{gnus-soup-add-article})$B!#$3$l$O%W%m%;%9(B/$B@\F,0z?t$N=,47$K=>$$$^(B +$B$9(B (@pxref{Process/Prefix})$B!#(B @end table - -gnus $B$,$3$l$i$N!#=i4|@_DjCM$O(B -@samp{gnus-prefix}$B!#(B +gnus $B$,:G8e$K;H$C$?@\F,0z?t$rJ]B8$9$k%U%!%$%kL>!#=i4|@_DjCM(B +$B$O(B @samp{gnus-prefix}$B!#(B @item gnus-soup-packer @vindex gnus-soup-packer -@sc{soup} $B%Q%1%C%H$r:-Jq$9$kL?NaJ8;zNs$N7A<0!#=i4|@_DjCM$O(B -@samp{tar cf - %s | gzip > $HOME/Soupout%d.tgz}$B!#(B +@sc{soup} $B%Q%1%C%H$r:-Jq$9$kL?NaJ8;zNs$N7A<0!#=i4|@_DjCM(B +$B$O(B @samp{tar cf - %s | gzip > $HOME/Soupout%d.tgz}$B!#(B @item gnus-soup-unpacker @vindex gnus-soup-unpacker -@sc{soup} $B%Q%1%C%H$rl=j!#=i4|@_DjCM$O(B @file{~/}$B!#(B @item gnus-soup-packet-regexp @vindex gnus-soup-packet-regexp -@code{gnus-soup-packet-directory} $BFb$N(B @sc{soup} $B%Q%1%C%H$K%^%C(B -$B%A$9$k@55,I=8=!#(B +@code{gnus-soup-packet-directory} $BFb$N(B @sc{soup} $B%Q%1%C%H$K%^%C%A$9$k@5(B +$B5,I=8=!#(B @end table - @node SOUP Groups @subsubsection @sc{soup} $B%0%k!<%W(B @cindex nnsoup -@code{nnsoup} $B$O(B @sc{soup} $B%Q%1%C%H$rFI$`$?$a$N%P%C%/%(%s%I$G$9!#(B -$B$3$l$OF~$C$F$-$?%Q%1%C%H$rFI$_!"$=$l$rl=j!#=i4|@_DjCM$O(B @file{~/}$B!#(B @item nnsoup-tmp-directory @vindex nnsoup-tmp-directory -@code{nnsoup} $B$,(B @sc{soup} $B%Q%1%C%H$r$l$N%a%C%;!<%8$H:w0z%U%!%$%k$r$3$N(B -$B%G%#%l%/%H%j!<$K0\F0$5$;$k!#=i4|@_Dj$O(B @file{~/SOUP/}$B!#(B +$B$=$7$F(B @code{nnsoup} $B$,$=$l$>$l$N%a%C%;!<%8$H:w0z%U%!%$%k$r$3$N%G%#%l%/(B +$B%H%j!<$K0\F0$5$;$k!#=i4|@_Dj$O(B @file{~/SOUP/}$B!#(B @item nnsoup-replies-directory @vindex nnsoup-replies-directory -$BA4$F$NJV?.$O!"JV?.%Q%1%C%H$K:-Jq$5$l$kA0$K$3$N%G%#%l%/%H%j!<$K3J(B -$BG<$5$l$k!#=i4|@_Dj$O(B @file{~/SOUP/replies/"}$B!#(B +$BA4$F$NJV?.$O!"JV?.%Q%1%C%H$K:-Jq$5$l$kA0$K$3$N%G%#%l%/%H%j!<$K3JG<$5$l$k!#(B +$B=i4|@_Dj$O(B @file{~/SOUP/replies/"}$B!#(B @item nnsoup-replies-format-type @vindex nnsoup-replies-format-type -$BJV?.%Q%1%C%H$N(B @sc{soup} $B7A<0!#=i4|@_DjCM$O(B @samp{?n} (rnews) -$B$G!"$3$NJQ?t$K$O?($k$Y$-$G$O$J$$$H;d$O;W$$$^$9!#$?$V$sJ8=q$KL@5-(B -$B$9$Y$-$G$5$($J$+$C$?$M!#$A$'$C(B! $B$b$&pJs$r3JG<$9$k>l=j!#$3$l$O(B @code{nntp} -$B$N0UL#$G$N(B ``$B%"%/%F%#%V%U%!%$%k(B'' $B$G$O$J$/!"(BEmacs Lisp $B$N%U%!%$(B -$B%k$G$9!#$3$N%U%!%$%k$rL5$/$7$F$7$^$C$?$j!"2?$+2u$7$F$7$^$C$?$i!"(B -$B$"$J$?$O;`$K$^$9!#=i4|@_DjCM$O(B @file{~/SOUP/active} $B$G$9!#(B +@code{nnsoup} $B$,$?$/$5$s$N>pJs$r3JG<$9$k>l=j!#$3$l$O(B @code{nntp} $B$N0UL#(B +$B$G$N(B ``$B%"%/%F%#%V%U%!%$%k(B'' $B$G$O$J$/!"(BEmacs Lisp $B$N%U%!%$%k$G$9!#$3$N%U%!(B +$B%$%k$rL5$/$7$F$7$^$C$?$j!"2?$+2u$7$F$7$^$C$?$i!"$"$J$?$O;`$K$^$9!#=i4|@_(B +$BDjCM$O(B @file{~/SOUP/active} $B$G$9!#(B @item nnsoup-packer @vindex nnsoup-packer @@ -12961,13 +13017,12 @@ gnus $B$,JV?.%Q%1%C%H$rC5$7$K9T$/>l=j!#=i4|@_DjCM$O(B @file{~/}$B!#(B @item nnsoup-unpacker @vindex nnsoup-unpacker -$BF~$C$F$/$k(B @sc{soup} $B%Q%1%C%H$rl=j!#=i4|@_DjCM$O(B -@file{~/}$B!#(B +$BF~$C$F$-$?%Q%1%C%H$r(B @code{nnsoup} $B$,C5$9>l=j!#=i4|@_DjCM$O(B @file{~/}$B!#(B @item nnsoup-packet-regexp @vindex nnsoup-packet-regexp @@ -12976,23 +13031,20 @@ gnus $B$,JV?.%Q%1%C%H$rC5$7$K9T$/>l=j!#=i4|@_DjCM$O(B @file{~/}$B!#(B @item nnsoup-always-save @vindex nnsoup-always-save -@code{nil} $B0J30$G$"$l$P!"%a%C%;!<%8$rEj9F$7$?8e$KJV?.%P%C%U%!$r(B -$BJ]B8$9$k!#(B +@code{nil} $B0J30$G$"$l$P!"%a%C%;!<%8$rEj9F$7$?8e$KJV?.%P%C%U%!$rJ]B8$9$k!#(B @end table - @node SOUP Replies @subsubsection SOUP $BJV?.(B -$BC1$K(B @code{nnsoup} $B$r;H$&$@$1$G$O!"(B@sc{soup} $BJV?.%Q%1%C%HCf$N$"(B -$B$J$?$NEj9F$H%a!<%k$NAw?.$,!"KbK!$N$h$&$K<+F0E*$K=*N;$9$k$o$1$G$O(B -$B$"$j$^$;$s!#$=$l$r5/$3$9$K$O$b$&$A$g$C$HF/$+$J$/$F$O$$$1$^$;$s!#(B +$BC1$K(B @code{nnsoup} $B$r;H$&$@$1$G$O!"(B@sc{soup} $BJV?.%Q%1%C%HCf$N$"$J$?$NEj(B +$B9F$H%a!<%k$NAw?.$,!"KbK!$N$h$&$K<+F0E*$K=*N;$9$k$o$1$G$O$"$j$^$;$s!#$=$l(B +$B$r5/$3$9$K$O$b$&$A$g$C$HF/$+$J$/$F$O$$$1$^$;$s!#(B @findex nnsoup-set-variables -@code{nnsoup-set-variables} $BL?Na$O!"$"$J$?$NA4$F$N%U%)%m!<%"%C%W(B -$B5-;v$HJV?.$r(B @sc{soup} $B%7%9%F%`$K3Nl=j!#=i4|@_DjCM$O(B @file{~/}$B!#(B (setq message-send-mail-function 'nnsoup-request-mail) @end lisp -$B$=$l$@$1$G$9!"$[$s$H$K!#$b$7(B @sc{soup} $B%7%9%F%`$K%K%e!<%9$@$1$r(B -$BF~$l$?$+$C$?$i!":G=i$N9T$@$1$r;H$C$F$/$@$5$$!#$b$7%a!<%k$@$1$r(B -@sc{soup} $B$5$;$?$+$C$?$i!"FsHVL\$r;H$C$F$/$@$5$$!#(B - +$B$=$l$@$1$G$9!"$[$s$H$K!#$b$7(B @sc{soup} $B%7%9%F%`$K%K%e!<%9$@$1$rF~$l$?$+$C(B +$B$?$i!":G=i$N9T$@$1$r;H$C$F$/$@$5$$!#$b$7%a!<%k$@$1$r(B @sc{soup} $B$5$;$?$+$C(B +$B$?$i!"FsHVL\$r;H$C$F$/$@$5$$!#(B @node Mail-To-News Gateways @subsection $B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$(B @cindex mail-to-news gateways @cindex gateways -$B$b$7$"$J$?$N%m!<%+%k$N(B @code{nntp} $B%5!<%P!<$,!"2?$i$+$NM}M3$GEj(B -$B9F$r5v2D$7$F$$$J$1$l$P!"?t$"$k%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$(B -$B$r;H$C$FEj9F$9$k$3$H$,$G$-$^$9!#(B@code{nngateway} $B%P%C%/%(%s%I$O(B -$B$3$N%$%s%?!<%U%'!<%9$rDs6!$7$^$9!#(B +$B$b$7$"$J$?$N%m!<%+%k$N(B @code{nntp} $B%5!<%P!<$,!"2?$i$+$NM}M3$GEj9F$r5v2D(B +$B$7$F$$$J$1$l$P!"?t$"$k%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$r;H$C$FEj9F$9$k(B +$B$3$H$,$G$-$^$9!#(B@code{nngateway} $B%P%C%/%(%s%I$O$3$N%$%s%?!<%U%'!<%9$rDs(B +$B6!$7$^$9!#(B -$B$3$N%P%C%/%(%s%I$+$i$O2?$bFI$_=P$;$J$$$3$H$KCm0U$7$F$/$@$5$$(B --- -$B$3$l$OEj9F$9$k$?$a$@$1$K;H$o$l$^$9!#(B +$B$3$N%P%C%/%(%s%I$+$i$O2?$bFI$_=P$;$J$$$3$H$KCm0U$7$F$/$@$5$$(B --- $B$3$l$O(B +$BEj9F$9$k$?$a$@$1$K;H$o$l$^$9!#(B $B0J2<$O%5!<%P!l=j!#=i4|@_DjCM$O(B @file{~/}$B!#(B @item nngateway-header-transformation @vindex nngateway-header-transformation -$B%K%e!<%9%X%C%@!<$O!"%a!<%k!&%K%e!<%9%2!<%H%&%'%$$,o$K;w$F$$$F!"$=$N%5!<%P!<$N%M%C%H%o!<%/%"(B $B%I%l%9$r;XDj$9$k$@$1$K$J$C$F$$$^$9!#(B -$B0J2<$NJQ?t$O2>A[(B @code{nnimap} $B%5!<%P!<$r:n@.$9$k$?$a$K;H$&$3$,$G$-$^$9!#(B +$B$$$/$D$+$N(B @sc{imap} $B%5!<%P!<$r(B @code{~/.gnus} $B$G@_Dj$9$k$H!"$?$V$s$3$N(B +$B$h$&$J$b$N$K$J$k$G$7$g$&(B: + +@lisp +(setq gnus-secondary-select-methods + '((nnimap "simpleserver") ; $BIaDL$N@_Dj(B + ; SSH $B%]!<%H$r%U%)%o!<%I$7$?%5!<%P!<(B: + (nnimap "dolk" + (nnimap-address "localhost") + (nnimap-server-port 1430)) + ; $B%m!<%+%k%[%9%H$G1?E>$7$F$$$k(B UW $B%5!<%P!<(B: + (nnimap "barbar" + (nnimap-server-port 143) + (nnimap-address "localhost") + (nnimap-list-pattern ("INBOX" "mail/*"))) + ; $BF?L>$G;H$($k(B cyrus $B$N8x=0%5!<%P!<(B: + (nnimap "cyrus.andrew.cmu.edu" + (nnimap-authenticator anonymous) + (nnimap-list-pattern "archive.*") + (nnimap-stream network)) + ; $BI8=`$G$O$J$$%]!<%H$N(B SSL $B%5!<%P!<(B: + (nnimap "vic20" + (nnimap-address "vic20.somewhere.com") + (nnimap-server-port 9930) + (nnimap-stream ssl)))) +@end lisp + +$B0J2<$NJQ?t$O2>A[(B @code{nnimap} $B%5!<%P!<$r:n@.$9$k$?$a$K;H$&$3$H$,$G$-$^(B +$B$9!#(B @table @code @@ -13107,34 +13183,53 @@ IMAP $B$O%a!<%k(B ($B$b$7$/$O!"%K%e!<%9!"$b$7$/$O(B ...) $B$rFI$`$?$a$N%M%C @item nnimap-server-port @vindex nnimap-server-port -$B@\B3$r;n$_$k%5!<%P!<$N%]!<%H$G$9!#=i4|CM$G$O!"%]!<%H(B 143 $B$+!"(BSSL $B$G$O(B -993 $B$G$9!#(B +$B@\B3$r;n$_$k%5!<%P!<$N%]!<%H$G$9!#=i4|CM$G$O!"%]!<%H(B 143 $B$+!"(BSSL $B$G(B +$B$O(B 993 $B$G$9!#(B + +$B$3$l$O@0?t$G$J$1$l$P$J$j$^$;$s!#0J2<$O%5!<%P!<;XDj$NNc$G$9!#(B + +@lisp +(nnimap "mail.server.com" + (nnimap-server-port 4711)) +@end lisp @item nnimap-list-pattern @vindex nnimap-list-pattern $B;HMQ2DG=$J%a!<%k%\%C%/%9$r@)8B$9$k$?$a$NJ8;zNs$+%j%9%H$G$9!#$3$l$O!"%5!<(B $B%P!<$KHs>o$KB?$/$N%a!<%k%\%C%/%9$,$"$k$1$l$I!"6=L#$N$"$k$b$N$O>/$7$@$1$G(B $B$"$k$H$-$K;HMQ$7$^$9!#%5!<%P!<$K$O%[!<%`%G%#%l%/%H%j!<$r(B IMAP $B7PM3$G=P$9(B -$B$b$N$b$"$j$^$9$N$G!"$=$N>l9g$O$*$=$i$/%a!<%k%\%C%/%9$r(B @file{~/Mail/*} -$B$K@)8B$7$?$$$G$7$g$&!#(B +$B$b$N$b$"$j$^$9$N$G!"$=$N>l9g$O$*$=$i$/%a!<%k%\%C%/%9(B +$B$r(B @file{~/Mail/*} $B$K@)8B$7$?$$$G$7$g$&!#(B -$BJ8;zNs$O(B REFERENCE $B$H>e$NJ8;zNs$H$N(B cons $B$G$"$k$3$H$b$G$-$^$9!#$I$N(B -REFERENCE $B$,;HMQ$5$l$k$+$O%5!<%P!e$NJ8;zNs$H$N(B cons $B$G$"$k$3$H$b$G$-$^$9!#$I(B +$B$N(B REFERENCE $B$,;HMQ$5$l$k$+$O%5!<%P!J}$r%5%]!<%H$7$^$9!#(B +@vindex imap-kerberos4-program +@samp{imtest} $B%W%m%0%i%`$O(B Cyrus IMAPD $B$K4^$^$l$F$$$^$9!#(B +nnimap $B$O(B @samp{imtest} $B%P!<%8%g%s(B 1.5.x $B$H(B 1.6.x $B$NN>J}$r%5%]!<%H$7$^$9!#(B +$BJQ?t(B @code{imap-kerberos4-program} $B$O(B imtest $B%W%m%0%i%`$KEO$9%Q%?%a!<%?(B +$B$r4^$_$^$9!#(B +@vindex imap-ssl-program SSL $B@\B3$N$?$a$N(B OpenSSL $B%W%m%0%i%`$O(B @file{http://www.openssl.org/} $B$+(B -$B$iF~l9g!"JQ(B +$B?t(B @code{imap-shell-program} $B$O2?$N%W%m%0%i%`$r8F$V$+$r;XDj$7$^$9!#(B @item nnimap-authenticator @vindex nnimap-authenticator @@ -13167,10 +13274,20 @@ SSL $B@\B3$N$?$a$N(B OpenSSL $B%W%m%0%i%`$O(B @file{http://www.openssl.org/} $B%5!<%P!<$K@\B3$9$k$?$a$K;H$o$l$kG'>Z$G$9!#=i4|@_Dj$G$O!"(Bnnimap $B$O%5!<%P!<(B $B$,;HMQ2DG=$J0lHV0BA4$JG'>Z$r;HMQ$7$^$9!#(B +$B0J2<$O%5!<%P!<;XDj$NNc$G$9!#(B + +@lisp +(nnimap "mail.server.com" + (nnimap-authenticator anonymous)) +@end lisp + +@code{nnimap-authenticator} $B$NCM$O%7%s%\%k$G$J$1$l$P$J$i$J$$$3$H$KCm0U$7(B +$B$F2<$5$$(B! + @itemize @bullet @item -@dfn{gssapi:} GSSAPI ($BIaDL$O(B kerberos 5) $BG'>Z$G$9!#30It%W%m%0%i%`(B -@code{imtest} $B$,I,MW$G$9!#(B +@dfn{gssapi:} GSSAPI ($BIaDL$O(B kerberos 5) $BG'>Z$G$9!#30It%W%m%0%i(B +$B%`(B @code{imtest} $B$,I,MW$G$9!#(B @item @dfn{kerberos4:} Kerberos $BG'>Z$G$9!#30It%W%m%0%i%`(B @code{imtest} $B$,I,MW(B $B$G$9!#(B @@ -13219,19 +13336,25 @@ SSL $B@\B3$N$?$a$N(B OpenSSL $B%W%m%0%i%`$O(B @file{http://www.openssl.org/} @item ask $B%a!<%k%\%C%/%9$rJD$8$k$H$-$K!"(Bnnimap $B$,>C5n$5$l$?5-;v$r:o=|$9$k$+$I$&$+(B $B$r?R$M$^$9!#(B + @end table +@item nnimap-authinfo-file +@vindex nnimap-authinfo-file + +$B%5!<%P$K%m%0%$%s$9$k$?$a$K;H$&G'>Z>pJs(B (authinfo) $B$r4^$`%U%!%$%k$G$9!#$=(B +$B$N7A<0$O(B ($B$[$H$s$I(B) @code{ftp} $B$N(B @file{~/.netrc} $B%U%!%$%k$HF1$8$G$9!#87(B +$BL)$JDj5A$O!"JQ?t(B @code{nntp-authinfo-file} $B$*$h$S(B @xref{NNTP} $B$r8+$F2<$5(B +$B$$!#(B + @end table @menu -* Splitting in IMAP:: nnimap $B$G%a!<%k$rJ,3d$9$k(B. -* Editing IMAP ACLs:: $B%a!<%k%\%C%/%9$X$NB>$NMxMQ$NMxMQA4$F$N$b$N$r(B INBOX.private $B$KF~$l$^$9!#(B +$B$3$l$O(B nnimap $B%a!<%j%s%0%j%9%H$+$i$NA4$F$N5-;v$r%a!<%k%\%C%/(B +$B%9(B INBOX.nnimap $B$KF~$l!"(BSubject: $B9T$K(B MAKE MONEY $B$N$"$kA4$F$N5-;v(B +$B$r(B INBOX.spam $B$KF~$l!"$=$NB>A4$F$N$b$N$r(B INBOX.private $B$KF~$l$^$9!#(B $B:G=i$NJ8;zNs$O!"(Breplace-match $B$G9gCW$7$?%F%-%9%H$+$iI{I=8=$rA^F~$9$k$H$-(B $B$K;HMQ$5$l$k$N$HF1$8$h$&$J!"(B`\\1' $B7A<0$r4^$`$3$H$,$G$-$^$9!#Nc$($P(B: @@ -13302,16 +13426,16 @@ INBOX.spam $B$KF~$l!"$=$NB>A4$F$N$b$N$r(B INBOX.private $B$KF~$l$^$9!#(B ("INBOX.lists.\\1" "^Sender: owner-\\([a-z-]+\\)@@") @end lisp -2$B$DL\$NMWAG$O4X?t$G$"$k$3$H$b$G$-$^$9!#$=$N>l9g$O!"5-;v$N%X%C%@!<$,$"$k(B +$BFs$DL\$NMWAG$O4X?t$G$"$k$3$H$b$G$-$^$9!#$=$N>l9g$O!"5-;v$N%X%C%@!<$,$"$k(B $B%P%C%U%!$G!"$=$N5,B'$N:G=i$NMWAG$r0z?t$H$7$F8F$P$l$^$9!#%a!<%k$,$=$N%0%k!<(B $B%W$KB0$9$k$H9M$($k>l9g$O!"(B@code{nil} $B$G$J$$CM$rJV$9I,MW$,$"$j$^$9!#(B Nnmail $B$NMxMQe$NNc$N$h$&$K(B)$B!#(B $B$3$l$O(B nnimap -$B$G$OI,MW$G$O$"$j$^$;$s!#@55,I=8=$N$I$l$K$b9gCW$7$J$$5-;v$O(B inbox $B$+$i0\(B -$BF0$5$l$^$;$s!#(B(inbox $B$KL$FI5-;v$rBgNL$KCV$$$F$*$/$H!"J,3d$N%3!<%I$O?7$7(B -$B$$%a!<%k$re$NNc$N$h$&$K(B)$B!#$3$l(B +$B$O(B nnimap $B$G$OI,MW$G$O$"$j$^$;$s!#@55,I=8=$N$I$l$K$b9gCW$7$J$$5-;v(B +$B$O(B inbox $B$+$i0\F0$5$l$^$;$s!#(B(inbox $B$KL$FI5-;v$rBgNL$KCV$$$F$*$/$H!"J,3d(B +$B$N%3!<%I$O?7$7$$%a!<%k$r!$A(B" $B$^$9!#Aj8_Ej9F(B @@ -13337,9 +13461,10 @@ Nnmail $B$NMxMQA[%5!<%P!$Oe5-$NJ,3d$N5,(B -$BB'$NJ}$G$9!#(B +$BMQ$G$-$k$G$7$g$&!#$3$NNc$G$O%5!<(B +$B%P!<(B @code{my3server} $B$H(B @code{my4server} $B$,F1$85,B'$r;H$$$^$9!#F1MM(B +$B$K(B inbox $BJ8;zNs$b@55,I=8=$G$9!#>e5-$NJ,3d$N5,B'$NJ}$G$9!#(B Nnmail $B$GBP1~$9$k$b$N(B: @code{nnmail-split-methods}. @@ -13360,8 +13485,8 @@ Nnmail $B$GBP1~$9$k$b$N(B: @code{nnmail-split-methods}. @findex nnimap-split-fancy @vindex nnimap-split-fancy -$B$b$7$"$J$?$,FC5iJ,3d$r;H$$$?$$$J$i$P!"(B@code{nnimap-split-rule} $B$NCM$r(B -@code{nnmail-split-fancy} $B$K@_Dj$9$k$3$H$,$G$-$^$9!#(B +$B$b$7$"$J$?$,FC5iJ,3d$r;H$$$?$$$J$i$P!"(B@code{nnimap-split-rule} $B$NCM(B +$B$r(B @code{nnmail-split-fancy} $B$K@_Dj$9$k$3$H$,$G$-$^$9!#(B @xref{Fancy Mail Splitting}$B!#(B $B$7$+$7(B nnmail $B$H(B nnimap $B$H$G0[$J$kFC5iJ,3dJ}<0$r;}$D$h$&$K$9$k$K$O!"(B @@ -13392,17 +13517,17 @@ ACL $B$O(B Access Control List ($B;HMQ@)8B0lMw(B) $B$NN,$G$9!#(BIMAP $B$G $B;H$o$l$F$$$^$9!#(BIMAP $B%5!<%P!\$7$$;X<((B -$B$H$H$b$K(B ACL $BJT=8%&%#%s%I%&$,8=$l$^$9!#(B +$B%a!<%k%\%C%/%9$X$N(B ACL $B$rJT=8$9$k$?$a$K$O!"(B +@kbd{G l} (@code{gnus-group-edit-nnimap-acl}) $B$rF~NO$7$^$9!#$=$&$9$k$H!"(B +$B>\$7$$;X<($H$H$b$K(B ACL $BJT=8%&%#%s%I%&$,8=$l$^$9!#(B $B;HMQ$NNc(B: @itemize @bullet @item -$B%a!<%j%s%0%j%9%H$N%a!<%k%\%C%/%9$G(B "anyone" $B$K(B "lrs" $B5v2D(B (lookup, read, -seen/unseen $B%U%i%0$NJ];}(B) $B$rM?$($k$3$H$G!"F1$8%5!<%P!<$NB>$NMxMQ$NMxMQ/$J$/$H$b(B Cyrus $B$N%5!<%P!<$K$*$$$F$O!"(B"plussing" $B$,F0:n$9$k$?$a$K(B ($B$D$^(B $B$j!"(Buser+mail@@domain $B$,(B INBOX.mailbox $B$H$$$&(B IMAP $B$N%a!<%k%\%C%/%9$K$J(B @@ -13425,88 +13550,83 @@ seen/unseen $B%U%i%0$NJ];}(B) $B$rM?$($k$3$H$G!"F1$8%5!<%P!<$NB>$NMxMQC5n$5$l$?5-;v$rI=<($9$kJ}K!$O$"$j$^$;$s!#$?$@>C5n$G$-$k$@$1(B $B$G$9!#(B - @node Combined Groups @section $B7k9g%0%k!<%W(B -Gnus $B$O!"A4$F$N%0%k!<%W$NA[%0%k!<%W(B @cindex nnvirtual @cindex virtual groups -nnvirtual $B%0%k!<%W(B (@dfn{nnvirtual group}) $B$O$N%0%k!<%W$N(B -$B=89g0J>e$N2?J*$G$b$"$j$^$;$s!#(B +nnvirtual $B%0%k!<%W(B (@dfn{nnvirtual group}) $B$O$N%0%k!<%W$N=89g0J>e(B +$B$N2?J*$G$b$"$j$^$;$s!#(B -$BNc$($P!"$b$7>.$5$J%0%k!<%W$r$?$/$5$sFI$`$N$,7y$K$J$C$F$-$?$i!"$=(B -$B$l$i$r0l$D$NBg$-$J%0%k!<%W$KF~$l$F!"7y$K$J$k$/$i$$5pBg$G.$5$J%0%k!<%W$r$?$/$5$sFI$`$N$,7y$K$J$C$F$-$?$i!"$=$l$i$r0l(B +$B$D$NBg$-$J%0%k!<%W$KF~$l$F!"7y$K$J$k$/$i$$5pBg$GA[%0%k!<%WFb$GIU$1$i$l$?A4$F$N0u$O!"$=$N9=@.%0%k!<%W$N5-;v$K$/$C(B -$B$D$1$i$l$^$9!#$D$^$j!"$b$72>A[%0%k!<%WFb$G5-;v$K2D;k5-;v$N0u$r$D(B -$B$1$k$H!"$=$N5-;v$O$b$H$b$H$N9=@.%0%k!<%W$NCf$G$b2D;k5-;v$K$J$j$^(B -$B$9!#(B ($B$=$7$F5U$b@.$jN)$A$^$9(B --- $B9=@.%0%k!<%WFb$GIU$1$?0u$O2>A[(B -$B%0%k!<%WFb$G$bI=<($5$l$^$9!#(B) +$B2>A[%0%k!<%WFb$GIU$1$i$l$?A4$F$N0u$O!"$=$N9=@.%0%k!<%W$N5-;v$K$/$C$D$1$i(B +$B$l$^$9!#$D$^$j!"$b$72>A[%0%k!<%WFb$G5-;v$K2D;k5-;v$N0u$r$D$1$k$H!"$=$N5-(B +$B;v$O$b$H$b$H$N9=@.%0%k!<%W$NCf$G$b2D;k5-;v$K$J$j$^$9!#(B($B$=$7$F5U$b@.$jN)(B +$B$A$^$9(B --- $B9=@.%0%k!<%WFb$GIU$1$?0u$O2>A[%0%k!<%WFb$G$bI=<($5$l$^$9!#(B) -$B$3$l$,!"(BAndrea Dworkin $B$K4X$9$kA4$F$N%K%e!<%9%0%k!<%W$r!"0l$D$N(B -$B5pBg$G%7%"%o%;$J%K%e!<%9%0%k!<%W$K$^$H$a$k(B @code{nnvirtual} $BJ}K!(B -$B$NNc$G$9!#(B +$B$3$l$,!"(BAndrea Dworkin $B$K4X$9$kA4$F$N%K%e!<%9%0%k!<%W$r!"0l$D$N5pBg$G%7(B +$B%"%o%;$J%K%e!<%9%0%k!<%W$K$^$H$a$k(B @code{nnvirtual} $BJ}K!$NNc$G$9!#(B @lisp (nnvirtual "^alt\\.fan\\.andrea-dworkin$\\|^rec\\.dworkin.*") @end lisp -$B9=@.%0%k!<%W$O4pK\%0%k!<%W$G$b30It%0%k!<%W$G$b9=$$$^$;$s!#A4$FLd(B -$BBjL5$/F0$/$O$:$G$9$,!"$b$7$"$J$?$N%3%s%T%e!<%?!<$,GzH/$G$b$7$F$7(B -$B$^$C$?$i!"$=$l$O$?$V$s;d$,0-$$$s$G$7$g$&$M!#(B +$B9=@.%0%k!<%W$O4pK\%0%k!<%W$G$b30It%0%k!<%W$G$b9=$$$^$;$s!#A4$FLdBjL5$/F0(B +$B$/$O$:$G$9$,!"$b$7$"$J$?$N%3%s%T%e!<%?!<$,GzH/$G$b$7$F$7$^$C$?$i!"$=$l$O(B +$B$?$V$s;d$,0-$$$s$G$7$g$&$M!#(B -$B$$$/$D$+$N%5!<%P!<$+$iF1$8%0%k!<%W$r=8$a$k$3$H$O!"MxMQl9g$O!"Hs>o(B -$B$KNI$$$+$bCN$l$^$;$s!#$b$7$"$J$?$,(B @samp{soc.motss} $B$r!"F|K\$N%5!<(B -$B%P!<$H%N%k%&%'!<$N%5!<%P!<$NN>J}$+$iFI$_$?$1$l$P!"%0%k!<%W$N@55,(B -$BI=8=$H$7$F0J2<$NCM$,;H$($^$9!#(B +$B$$$/$D$+$N%5!<%P!<$+$iF1$8%0%k!<%W$r=8$a$k$3$H$O!"MxMQl9g$O!"Hs>o$KNI$$(B +$B$+$bCN$l$^$;$s!#$b$7$"$J$?$,(B @samp{soc.motss} $B$r!"F|K\$N%5!<%P!<$H%N%k%&%'!<(B +$B$N%5!<%P!<$NN>J}$+$iFI$_$?$1$l$P!"%0%k!<%W$N@55,I=8=$H$7$F0J2<$NCM$,;H$((B +$B$^$9!#(B @example "^nntp\\+server\\.jp:soc\\.motss$\\|^nntp\\+server\\.no:soc\\.motss$" @end example -($B$G$b$A$g$C$HCm0U!#(B@kbd{G m} $B$G%0%k!<%W$r:n@.$9$k$H$-$O!"%P%C%/(B -$B%9%i%C%7%e$rFs=E$KIU$1$F$O$$$1$^$;$s!#$=$7$FJ8;zNs$N:G=i$H:G8e$N(B -$B0zMQ5-9f$bJ}$N%0%k!<%W$N5-;v$O(B -$BA4It40A4$K0l$D$N%0%k!<%W$K$J$j!"=EJ#$bL5$$$O$:$G$9!#%9%l%C%II=<((B -($B$H$=$NB>(B)$B$bDL>oDL$j$&$^$/F0:n$9$k$G$7$g$&$1$I!"5-;v$NJB$V=g=x$K(B -$B$OLdBj$,$"$k$+$b$7$l$^$;$s!#F|IU$K$h$kJB$YBX$($O$3$3$G$O;EMM30$H(B -$B$J$k$+$b$7$l$^$;$s(B (@pxref{Selecting a Group})$B!#(B +$B$3$l$O$A$g$C$H$&$^$/F0:n$9$k$O$:$G$9(B --- $BN>J}$N%0%k!<%W$N5-;v$OA4It40A4(B +$B$K0l$D$N%0%k!<%W$K$J$j!"=EJ#$bL5$$$O$:$G$9!#%9%l%C%II=<((B ($B$H$=$NB>(B) $B$bDL(B +$B>oDL$j$&$^$/F0:n$9$k$G$7$g$&$1$I!"5-;v$NJB$V=g=x$K$OLdBj$,$"$k$+$b$7$l$^(B +$B$;$s!#F|IU$K$h$kJB$YBX$($O$3$3$G$O;EMM30$H$J$k$+$b$7$l$^$;(B +$B$s(B (@pxref{Selecting a Group})$B!#(B -$B$J$*!"$3$3$G0l$D$@$1@)8B$,$"$j$^$9(B --- $B2>A[%0%k!<%W$K4^$^$l$k%0(B -$B%k!<%W$OA4$F@8$-$F$$$k(B($B$9$J$o$A!"9XFI$^$?$OHs9XFI$N(B)$B>uBV$G$J$/$F(B -$B$O$J$j$^$;$s!#:o=|$"$k$$$O%>%s%S%0%k!<%W$O(B @code{nnvirtual} $B%0%k!<(B -$B%W$N9=@.%0%k!<%W$K$J$k$3$H$O$G$-$^$;$s!#(B +$B$J$*!"$3$3$G0l$D$@$1@)8B$,$"$j$^$9(B --- $B2>A[%0%k!<%W$K4^$^$l$k%0%k!<%W$O(B +$BA4$F@8$-$F$$$k(B($B$9$J$o$A!"9XFI$^$?$OHs9XFI$N(B)$B>uBV$G$J$/$F$O$J$j$^$;$s!#:o(B +$B=|$"$k$$$O%>%s%S%0%k!<%W$O(B @code{nnvirtual} $B%0%k!<%W$N9=@.%0%k!<%W$K$J$k(B +$B$3$H$O$G$-$^$;$s!#(B @vindex nnvirtual-always-rescan @code{nnvirtual-always-rescan} $B$,(B @code{nil} $B0J30$G$"$l$P!"(B -@code{nnvirtual} $B$O2>A[%0%k!<%W$KF~$C$?$H$->o$K!"L$FI5-;v$rAv::(B -$B$7$^$9!#$3$NJQ?t$,(B @code{nil} ($B$3$l$,=i4|@_Dj(B)$B$G$"$C$F!"2>A[%0%k!<(B -$B%W$r:n@.$7$?8e$K9=@.%0%k!<%WFb$N5-;v$rFI$s$@>l9g$O!"$=$N9=@.%0%k!<(B -$B%W$GFI$^$l$?5-;v$O!"2>A[%0%k!<%W$KF~$C$?$H$-$KI=<($5$l(B $B$k$G$7$g(B -$B$&!#$b$76&DL$N9=@.%0%k!<%W$r;}$DFs$D$N2>A[%0%k!<%W$,$"$k>l9g$K$b(B -$B$3$N1F6A$,$"$j$^$9!#$=$N>l9g$O$3$NJQ?t$r(B @code{t} $B$K$7$?J}$,NI$$(B -$B$G$9!#$"$k$$$O2>A[%0%k!<%W$KF~$k;~$K!"Kh2s$=$N%0%k!<%W$N>e$G(B -@code{M-g} $B$rC!$$$F$bNI$$$G$9(B --- $B$3$l$O$[$\F1MM$N8z2L$,$"$j$^$9!#(B +@code{nnvirtual} $B$O2>A[%0%k!<%W$KF~$C$?$H$->o$K!"L$FI5-;v$rAv::$7$^$9!#(B +$B$3$NJQ?t$,(B @code{nil} ($B$3$l$,=i4|@_Dj(B)$B$G$"$C$F!"2>A[%0%k!<%W$r:n@.$7$?8e(B +$B$K9=@.%0%k!<%WFb$N5-;v$rFI$s$@>l9g$O!"$=$N9=@.%0%k!<%W$GFI$^$l$?5-;v$O!"(B +$B2>A[%0%k!<%W$KF~$C$?$H$-$KI=<($5$l(B $B$k$G$7$g$&!#$b$76&DL$N9=@.%0%k!<%W$r(B +$B;}$DFs$D$N2>A[%0%k!<%W$,$"$k>l9g$K$b$3$N1F6A$,$"$j$^$9!#$=$N>l9g$O$3$NJQ(B +$B?t$r(B @code{t} $B$K$7$?J}$,NI$$$G$9!#$"$k$$$O2>A[%0%k!<%W$KF~$k;~$K!"Kh2s$=(B +$B$N%0%k!<%W$N>e$G(B @code{M-g} $B$rC!$$$F$bNI$$$G$9(B --- $B$3$l$O$[$\F1MM$N8z2L(B +$B$,$"$j$^$9!#(B @code{nnvirtual} $B$O%a!<%k$H%K%e!<%9$NN>J}$N%0%k!<%W$r9=@.%0%k!<%W$H$9$k(B $B;v$,$G$-$^$9!#(B@code{nnvirtual} $B%0%k!<%W$N5-;v$KJVEz$9$k$H$-$O!"(B @@ -13514,67 +13634,62 @@ Distribution $B%X%C%@!<$r;H$C$FG[I[HO0O$r@)8B$7$F$$$k>l9g$O!"Hs>o(B $B%9$N%P%C%/%(%s%I$G$"$k$+%a!<%k$N%P%C%/%(%s%I$G$"$k$+$r?R$M$J$1$l$P$J$j$^(B $B$;$s!#$7$+$7!"(B@kbd{^} $B$r$7$?$H$-$K$O!"IaDL$O9=@.%P%C%/%(%s%I$,$3$l$rCN$k(B $B3N$+$JJ}K!$O$J$/!"$=$N>l9g$O!"(B@code{nnvirtual} $B$O(B gnus $B$K5-;v$O%K%e!<%9(B -$B$G$J$$%P%C%/%(%s%I$+$iMh$?$H9p$2$k;v$K$J$j$^$9!#(B ($B0BA4$N$?$a$K!#(B) +$B$G$J$$%P%C%/%(%s%I$+$iMh$?$H9p$2$k;v$K$J$j$^$9!#(B($B0BA4$N$?$a$K!#(B) $B$3$N$h$&$J>l9g$O!"%a%C%;!<%8%P%C%U%!$G$N(B @kbd{C-c C-t} $B$,1~Ez$7$h$&$H$7(B $B$F$$$k5-;v$+$i(B @code{Newsgroups} $B9T$rH4$-=P$7$FA^F~$7$^$9!#(B - - @node Kibozed Groups @subsection Kiboze $B%0%k!<%W(B @cindex nnkiboze @cindex kibozing -@dfn{Kiboze} $B$9$k!"$H$O!"(B``$B%K%e!<%9%9%W!<%kA4It(B($B$"$k$$$O$=$N0lIt(B) -$B$+$i(B grep $B$9$k$3$H(B'' $B$H%*%C%/%9%U%)!<%IBg<-E5$K$h$C$FDj5A$5$l$F$$(B -$B$^$9!#(B@code{nnkiboze} $B$O$3$l$r$"$J$?$N$?$a$K9T$C$F$/$l$k%P%C%/%((B -$B%s%I$G$9!#4r$7$$$M(B! $B$3$l$G$I$s$J(B @sc{nntp} $B%5!<%P!<$G$b!"Lr$KN)(B -$B$?$J$$MW5a$G;_$^$C$F$7$^$&$^$G9s;H$9$k$3$H$,$G$-$k$M!#$"$"!"$J$s(B -$B$F9,$;$J$s$@(B! +@dfn{Kiboze} $B$9$k!"$H$O!"(B``$B%K%e!<%9%9%W!<%kA4It(B ($B$"$k$$$O$=$N0lIt(B) $B$+(B +$B$i(B grep $B$9$k$3$H(B'' $B$H%*%C%/%9%U%)!<%IBg<-E5$K$h$C$FDj5A$5$l$F$$$^$9!#(B +@code{nnkiboze} $B$O$3$l$r$"$J$?$N$?$a$K9T$C$F$/$l$k%P%C%/%(%s%I$G$9!#4r$7(B +$B$$$M(B! $B$3$l$G$I$s$J(B @sc{nntp} $B%5!<%P!<$G$b!"Lr$KN)$?$J$$MW5a$G;_$^$C$F$7(B +$B$^$&$^$G9s;H$9$k$3$H$,$G$-$k$M!#$"$"!"$J$s$F9,$;$J$s$@(B! @kindex G k (Group) -kiboze $B%0%k!<%W$r:n@.$9$k$K$O!"%0%k!<%W%P%C%U%!$G(B @kbd{G k} $BL?Na(B -$B$r;H$$$^$9!#(B +kiboze $B%0%k!<%W$r:n@.$9$k$K$O!"%0%k!<%W%P%C%U%!$G(B @kbd{G k} $BL?Na$r;H$$$^(B +$B$9!#(B -@code{nnkiboze} $BJ}K!$K$*$1$k%"%I%l%9Ms$O!"(B@code{nnvirtual} $B$HF1(B -$BMM$K!"(B@code{nnkiboze} $B$K(B ``$B4^$a$?$$(B'' $B%0%k!<%W$K%^%C%A$9$k@55,I=(B -$B8=$G$9!#$3$3$,(B @code{nnkiboze} $B$H(B @code{nnvirtual} $B%P%C%/%(%s%I(B -$B$N:G$bN`;w$7$F$$$kE@$G$9!#(B +@code{nnkiboze} $BJ}K!$K$*$1$k%"%I%l%9Ms$O!"(B@code{nnvirtual} $B$HF1MM$K!"(B +@code{nnkiboze} $B$K(B ``$B4^$a$?$$(B'' $B%0%k!<%W$K%^%C%A$9$k@55,I=8=$G$9!#$3$3(B +$B$,(B @code{nnkiboze} $B$H(B @code{nnvirtual} $B%P%C%/%(%s%I$N:G$bN`;w$7$F$$$kE@(B +$B$G$9!#(B -$B$3$N9=@.%0%k!<%W$rNs5s$9$k@55,I=8=$K2C$($F!"(B@code{nnkiboze} $B%0%k!<(B -$B%W$K$O!"%0%k!<%WFb$N$I$N5-;v$r4^$a$k$+$r7h$a$k%9%3%"%U%!%$%k$,$J(B -$B$/$F$O$J$j$^$;$s(B (@pxref{Scoring})$B!#(B +$B$3$N9=@.%0%k!<%W$rNs5s$9$k@55,I=8=$K2C$($F!"(B@code{nnkiboze} $B%0%k!<%W$K$O!"(B +$B%0%k!<%WFb$N$I$N5-;v$r4^$a$k$+$r7h$a$k%9%3%"%U%!%$%k$,$J$/$F$O$J$j$^$;(B +$B$s(B (@pxref{Scoring})$B!#(B @kindex M-x nnkiboze-generate-groups @findex nnkiboze-generate-groups $B$"$J$?$NM_$7$$(B @code{nnkiboze} $B%0%k!<%W$r:n@.$7$?8e$K$O!"(B -@kbd{M-x nnkiboze-generate-groups} $B$rpJs$r3JG<$9$k!"(B@file{.newsrc} -$B$NJd=u%U%!%$%k$G$9!#(B - -@code{nnkiboze} $B%0%k!<%WFb$N4{FI$H$J$C$?5-;v$O!"$=$N5-;v$N(B -@sc{nov} $B9T$,(B @sc{nov} $B%U%!%$%k$+$i:o=|$5$l$^$9!#(B +@code{nnkiboze} $B%0%k!<%W$N@8@.$K$h$C$F!"Fs$D$N%U%!%$%k(B + @code{nnkiboze-directory} $BFb$K:n@.$5$l$^$9!#$3$N=i4|@_DjCM(B +$B$O(B @file{~/News/} $B$G$9!#0lJ}$N%U%!%$%k$O$=$N%0%k!<%W$NA45-;v(B +$B$N(B @sc{nov} $B%X%C%@!<9T$r4^$s$G$$$F!"$b$&0lJ}$O9=@.5-;v$r8+$D$1$k$?$a$K$I(B +$B$N%0%k!<%W$,8!:w$5$l$?$+$N>pJs$r3JG<$9$k!"(B@file{.newsrc} $B$NJd=u%U%!%$%k(B +$B$G$9!#(B +@code{nnkiboze} $B%0%k!<%WFb$N4{FI$H$J$C$?5-;v$O!"$=$N5-;v$N(B @sc{nov} $B9T(B +$B$,(B @sc{nov} $B%U%!%$%k$+$i:o=|$5$l$^$9!#(B @node Gnus Unplugged @section Gnus $B$N@Z$jN%$7(B @@ -13584,123 +13699,121 @@ kiboze $B%0%k!<%W$r:n@.$9$k$K$O!"%0%k!<%W%P%C%U%!$G(B @kbd{G k} $BL?Na(B @cindex Gnus Agent @cindex Gnus Unplugged -$B$$$K$7$($N;~Be(B($B$*$h$=(B 1988 $BG/(B 2 $B7n:"(B)$B!"?M!9$O%K%e!<%9%j!<%@!<$r!"(B -$BBg$-$J%^%7%s$N>e$G%M%C%H%o!<%/$K1JB3E*$K@\B3$7$FAv$i$;$F$$$^$7$?!#(B -$B%K%e!<%9$NG[Aw$O%K%e!<%9%5!<%P!<$K$h$C$Fe$i$J$$$h$&$K!"A4$F$N%K%e!<%9$H%a!<%k$r5[$$>e$2!"EEOC$r@Z$j!"(B -$B?t;~4V3]$1$FFI$_!"$=$7$FAw$j$?$$JV?.$rA4$FAw?.$9$k!"$H$$$&e$G%K%e!<%9$rFI$`?M$,$"$J$?$7$+$$$J$1$l$P!"%K%e!<%9%5!<(B -$B%P!<$N5!G=$r%K%e!<%9%j!<%@!<$KG$$;$k$h$&$K$9$k$3$H$OM}$K$+$J$C$F(B -$B$$$^$9!#(B +$B$$$K$7$($N;~Be(B($B$*$h$=(B 1988 $BG/(B2$B7n:"(B)$B!"?M!9$O%K%e!<%9%j!<%@!<$r!"Bg$-$J%^(B +$B%7%s$N>e$G%M%C%H%o!<%/$K1JB3E*$K@\B3$7$FAv$i$;$F$$$^$7$?!#%K%e!<%9$NG[Aw(B +$B$O%K%e!<%9%5!<%P!<$K$h$C$Fe$i$J$$$h$&$K!"(B +$BA4$F$N%K%e!<%9$H%a!<%k$r5[$$>e$2!"EEOC$r@Z$j!"?t;~4V3]$1$FFI$_!"$=$7$FAw(B +$B$j$?$$JV?.$rA4$FAw?.$9$k!"$H$$$&e$G%K%e!<(B +$B%9$rFI$`?M$,$"$J$?$7$+$$$J$1$l$P!"%K%e!<%9%5!<%P!<$N5!G=$r%K%e!<%9%j!<%@!<(B +$B$KG$$;$k$h$&$K$9$k$3$H$OM}$K$+$J$C$F$$$^$9!#(B + +Gnus $B$r(B ``$B%*%U%i%$%s(B'' $B$N%K%e!<%9%j!<%@!<$H$7$F;H$&$N$O6K$a$F4JC1$G$9!#(B @itemize @bullet @item -$B$^$:!"%M%C%H%o!<%/$K40A4$K7R$,$C$F$$$k%^%7%s>e$GF0:n$5$;$k$N$HF1(B -$B$8$h$&$K!"(Bgnus $B$r@_Dj$7$^$9!#$^$:$d$C$F$*$$$G!#KM$O$3$3$GBT$C$F(B -$B$k$+$i!#(B +$B$^$:!"%M%C%H%o!<%/$K40A4$K7R$,$C$F$$$k%^%7%s>e$GF0:n$5$;$k$N$HF1$8$h$&$K!"(B +gnus $B$r@_Dj$7$^$9!#$^$:$d$C$F$*$$$G!#KM$O$3$3$GBT$C$F$k$+$i!#(B @item -$B$=$7$?$i!"0J2<$NKbK!$NC$9J}K!!#(B -* Outgoing Messages:: $BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+(B? -* Agent Variables:: $B%+%9%?%^%$%:$O3Z$7!#(B -* Example Setup:: $B%*%U%i%$%s?M4V$N$?$a$N(B @file{.gnus.el} $B$NNc!#(B -* Batching Agents:: @code{cron} $B%8%g%V$K$h$k%K%e!<%9C$9J}K!(B +* Agent and IMAP:: $B%(!<%8%'%s%H$r(B IMAP $B$G;H$&J}K!(B +* Outgoing Messages:: $BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+(B? +* Agent Variables:: $B%+%9%?%^%$%:$O3Z$7(B +* Example Setup:: $B%*%U%i%$%s?M4V$N$?$a$N(B @file{.gnus.el} $B$NNc(B +* Batching Agents:: @code{cron} $B%8%g%V$K$h$k%K%e!<%9uBV$G5/F0$7$^$9!#$3$N>uBV$G$O!"$9$G$KuBV$G5/F0$7$^$9!#$3$N>uBV$G$O!"$9$G$KH$7$F2<$5$$!#(B @item -$B$=$7$F!"$=$N>l$G$9$0$K?7$7$$%K%e!<%9$rFI$`$3$H$b$G$-$^$9$7!"%K%e!<(B -$B%9$r%m!<%+%k%^%7%s$K%@%&%s%m!<%I$9$k$3$H$b$G$-$^$9!#8eH$7$F$/$@$5$$!#(B) +$B$=$7$F!"$=$N>l$G$9$0$K?7$7$$%K%e!<%9$rFI$`$3$H$b$G$-$^$9$7!"%K%e!<%9$r%m!<(B +$B%+%k%^%7%s$K%@%&%s%m!<%I$9$k$3$H$b$G$-$^$9!#8eH$7$F$/$@$5$$!#(B) @item -$B5-;v$ruBV$K(B -$B$5$;!"(BPPP $B4X78(B($B$J$I(B)$B$rJD$8$^$9!#$=$&$7$F%K%e!<%9$r%*%U%i%$%s$GFI(B -$B$`$3$H$,$G$-$^$9!#(B +$B5-;v$ruBV$K$5$;!"(B +PPP $B4X78(B($B$J$I(B)$B$rJD$8$^$9!#$=$&$7$F%K%e!<%9$r%*%U%i%$%s$GFI$`$3$H$,$G$-$^(B +$B$9!#(B @item -$B$=$7$FBh(B 2 $B%9%F%C%W$KLa$j$^$9!#(B +$B$=$7$FBhFs%9%F%C%W$KLa$j$^$9!#(B @end itemize -$B0J2<$K%(!<%8%'%s%H$r=i$a$F(B($B$+$=$3$i$K(B)$B;H$&$H$-$KI,MW$J$$$/$D$+$N(B -$B:n6H$r<($7$^$9!#(B +$B0J2<$K%(!<%8%'%s%H$r=i$a$F(B($B$+$=$3$i$K(B)$B;H$&$H$-$KI,MW$J$$$/$D$+$N:n6H$r<((B +$B$7$^$9!#(B @itemize @bullet @item -$B$I$N%5!<%P!<$r%(!<%8%'%s%H$GLLE]$r8+$k$+$r7h$a$^$9!#$b$7%a!<%k%P%C(B -$B%/%(%s%I$,$"$l$P!"$=$l$r%(!<%8%'%s%H$KLLE]$r8+$5$;$k$N$O$*$=$i$/(B -$BL50UL#$G$7$g$&!#%5!<%P!<%P%C%U%!!<$K0\F0$7(B ($B%0%k!<%W%P%C%U%!!<$G(B -@kbd{^})$B!"%(!<%8%'%s%H$K07$C$FM_$7$$%5!<%P!<(B($BJ#?t2D(B)$B$G(B @kbd{J a} -$B$r2!$7$^$9(B (@pxref{Server Agent Commands})$B!#$3$l$OBgDq$N>l9g!"%P%C(B -$B%U%!!<$N2<$K0lMwI=<($5$l$F$$$k4pK\A*BrJ}K!$@$1$G$7$g$&!#(B +$B$I$N%5!<%P!<$r%(!<%8%'%s%H$GLLE]$r8+$k$+$r7h$a$^$9!#$b$7%a!<%k%P%C%/%(%s(B +$B%I$,$"$l$P!"$=$l$r%(!<%8%'%s%H$KLLE]$r8+$5$;$k$N$O$*$=$i$/L50UL#$G$7$g$&!#(B +$B%5!<%P!<%P%C%U%!!<$K0\F0$7(B ($B%0%k!<%W%P%C%U%!!<$G(B @kbd{^})$B!"%(!<%8%'%s%H(B +$B$K07$C$FM_$7$$%5!<%P!<(B($BJ#?t2D(B)$B$G(B @kbd{J a} $B$r2!$7$^(B +$B$9(B (@pxref{Server Agent Commands})$B!#$3$l$OBgDq$N>l9g!"%P%C%U%!!<$N2<$K0l(B +$BMwI=<($5$l$F$$$k4pK\A*BrJ}K!$@$1$G$7$g$&!#(B @item $B%@%&%s%m!<%IJ}?K$r7hDj$7$^$9!#(B@xref{Agent Categories}. @@ -13709,16 +13822,15 @@ Gnus $B$r(B @code{gnus-unplugged} $B$G5/F0$7$^$9!#$3$l$O(B gnus $B%(!<%8%' $B$($($H!D!"0J>e$G$9!#(B @end itemize - @node Agent Categories @subsection $B%(!<%8%'%s%HJ,N`(B -$B%K%e!<%9G[Aw5!9=$H%K%e!<%9%j!<%@!<$rE}9g$9$k0l$D$NBg$-$JM}M3$O!"(B -$B$I$N5-;v$r%@%&%s%m!<%I$9$k$+$K$D$$$F!"$h$jNI$$@)8f$r2DG=$H$9$k$3(B -$B$H$G$9!#G|Bg$JNL$N5-;v$r%@%&%s%m!<%I$7$F$b$"$^$j0UL#$O$J$/!"$=$l(B -$B$i$rFI$s$G$b$"$^$jLLGr$/$J$$$3$H$,J,$+$k$@$1$G$9!#2?$r%@%&%s%m!<(B -$B%I$9$k$+$NA*Br$O$b$C$H?5=E$G$"$k$Y$-$G$"$j!"$=$N5-;v$,LLGr$$$HJ,(B -$B$+$C$?;~E@$G!"%@%&%s%m!<%I$9$k$?$a$N0u$ro(B) $B$I$N5-;v$r%@%&%s%m!<%I$9$k$N$,E,Ev$+$H$$$&Bg$^$+$JNX3T$r(B -$BM?$($k=R8l!#$=$7$F(B +($BDL>o(B) $B$I$N5-;v$r%@%&%s%m!<%I$9$k$N$,E,Ev$+$H$$$&Bg$^$+$JNX3T$rM?$($k=R(B +$B8l!#$=$7$F(B @item -($BDL>o(B) $B$I$N5-;v$r%@%&%s%m!<%I$9$k$+$r7h$a$k$H$-$N$h$j$-$a$N:Y$+(B -$B$$%9%3%"5,B'!#(B($B$3$N%@%&%s%m!<%I%9%3%"(B (@dfn{download score}) $B$O(B -$BDL>o$N%9%3%"$H$OI,$:$7$b4X78$,L5$$$3$H$KCm0U$7$F$/$@$5$$!#(B) +($BDL>o(B) $B$I$N5-;v$r%@%&%s%m!<%I$9$k$+$r7h$a$k$H$-$N$h$j$-$a$N:Y$+$$%9%3%"(B +$B5,B'!#(B($B$3$N%@%&%s%m!<%I%9%3%"(B (@dfn{download score}) $B$ODL>o$N%9%3%"$H$O(B +$BI,$:$7$b4X78$,L5$$$3$H$KCm0U$7$F$/$@$5$$!#(B) @end enumerate $B=R8l$N0lHVC1=c$J7A<0$O(B @code{true} $B$d(B @code{false} $B$N$h$&$JC1FH$N=R8l$+(B -$B$i$J$j$^$9!#$3$l$i$N(B2$B$D$O$=$l$>$l!"A4$F$N2DG=$J5-;v$r%@%&%s%m!<%I$9$k$+!"(B -$BA4$/2?$b$7$J$$$+!"$G$9!#$3$l$i$N(B2$B$D$NFCJL$J=R8l$N>l9g$O!"DI2C$N%9%3%"5,(B +$B$i$J$j$^$9!#$3$l$i$NFs$D$O$=$l$>$l!"A4$F$N2DG=$J5-;v$r%@%&%s%m!<%I$9$k$+!"(B +$BA4$/2?$b$7$J$$$+!"$G$9!#$3$l$i$NFs$D$NFCJL$J=R8l$N>l9g$O!"DI2C$N%9%3%"5,(B $BB'$OM>J,$G$9!#(B @code{high} $B$d(B @code{low} $B$H$$$&=R8l$O2<$G@bL@$5$l$F$$$k$h$&$K!"(B @@ -13758,19 +13869,19 @@ Gnus $B$r(B @code{gnus-unplugged} $B$G5/F0$7$^$9!#$3$l$O(B gnus $B%(!<%8%' $B%3%"$H$N4X78$K$h$j5-;v$r%@%&%s%m!<%I$7$^$9!#(B $B%@%&%s%m!<%I$,E,@Z$+$I$&$+$N!"$5$i$K:Y$+$$@)8f$rF@$k$?$a$K!"=R8l$OO@M}1i(B -$B;;;R$,4V$K;6$j$P$a$i$l$?=R8l$NAH$_9g$o$;$+$i$J$k$3$H$,$G$-$^$9(B +$B;;;R$,4V$K;6$j$P$a$i$l$?=R8l$NAH$_9g$o$;$+$i$J$k$3$H$,$G$-$^$9!#(B $B$*$=$i$/$$$/$D$+$NNc$,$=$N$^$^;H$($^$9!#(B -$B0J2<$O4JC1$J=R8l$G$9!#(B($B$3$l$O=i4|@_Dj$N=R8l$G$9!#$D$^$j!"B>$N$I(B -$B$NJ,N`$K$b4^$^$l$J$$A4$F$N%0%k!<%W$KBP$7$F;HMQ$5$l$^$9!#(B) +$B0J2<$O4JC1$J=R8l$G$9!#(B($B$3$l$O=i4|@_Dj$N=R8l$G$9!#$D$^$j!"B>$N$I$NJ,N`$K(B +$B$b4^$^$l$J$$A4$F$N%0%k!<%W$KBP$7$F;HMQ$5$l$^$9!#(B) @lisp short @end lisp -$B$H$C$F$b4JC1$G$7$g(B? $B$3$N=R8l$O!"5-;v$,C;$$(B(``$BC;$$(B'' $B2ACM$,$"$k(B) -$B>l9g$K8B$j??$K$J$j$^$9!#(B +$B$H$C$F$b4JC1$G$7$g(B? $B$3$N=R8l$O!"5-;v$,C;$$(B(``$BC;$$(B'' $B2ACM$,$"$k(B) $B>l9g$K8B(B +$B$j??$K$J$j$^$9!#(B $B$3$l$O$b$C$HJ#;($J=R8l$G$9!#(B @@ -13781,38 +13892,36 @@ short (not long))) @end lisp -$B$3$N0UL#$O!"9b$$%9%3%"$r;}$C$F$$$k$+!"$"$k$$$O%9%3%"$,Dc$/$J$/$F(B -$B$+$DD9$/$J$$!"$H$$$&5-;v$r%@%&%s%m!<%I$9$k!"$H$$$&$3$H$G$9!#$o$+(B -$B$k$@$m!#(B +$B$3$N0UL#$O!"9b$$%9%3%"$r;}$C$F$$$k$+!"$"$k$$$O%9%3%"$,Dc$/$J$/$F$+$DD9$/(B +$B$J$$!"$H$$$&5-;v$r%@%&%s%m!<%I$9$k!"$H$$$&$3$H$G$9!#$o$+$k$@$m!#(B -$B;H$C$F$b$h$$O@M}1i;;;R$O!"(B@code{or}$B!"(B @code{and}$B!"(B@code{not} $B$G(B -$B$9!#(B($B$b$7;H$$$?$1$l$P!"$h$j(B ``C'' $BIw$N1i;;;R(B @samp{|}$B!"(B@code{&}$B!"(B -@code{!} $B$rBe$j$K;H$&$3$H$,$G$-$^$9!#(B) +$B;H$C$F$b$h$$O@M}1i;;;R$O!"(B@code{or}, @code{and}, @code{not} $B$G$9!#(B($B$b$7(B +$B;H$$$?$1$l$P!"$h$j(B ``C'' $BIw$N1i;;;R(B @samp{|}, @code{&}, @code{!} $B$rBe$j(B +$B$K;H$&$3$H$,$G$-$^$9!#(B) -$B0J2<$N=R8l$O$"$i$+$8$aDj5A$5$l$F$$$^$9$,!"$3$l$i$N$I$l$b$"$J$?$N(B -$B$d$j$?$$$3$H$K0lCW$7$J$1$l$P!"<+J,$GFH<+$N$b$N$r=q$/$3$H$b$G$-$^$9!#(B +$B0J2<$N=R8l$O$"$i$+$8$aDj5A$5$l$F$$$^$9$,!"$3$l$i$N$I$l$b$"$J$?$N$d$j$?$$(B +$B$3$H$K0lCW$7$J$1$l$P!"<+J,$GFH<+$N$b$N$r=q$/$3$H$b$G$-$^$9!#(B @table @code @item short -$B5-;v$,(B @code{gnus-agent-short-article} $B9T$h$jC;$+$1$l$P??!#(B -$B=i4|@_DjCM$O(B 100$B!#(B +$B5-;v$,(B @code{gnus-agent-short-article} $B9T$h$jC;$+$1$l$P??!#=i4|@_DjCM(B +$B$O(B 100$B!#(B @item long -$B5-;v$,(B @code{gnus-agent-long-article} $B9T$h$jD9$1$l$P??!#=i4|@_Dj(B -$BCM$O(B 200$B!#(B +$B5-;v$,(B @code{gnus-agent-long-article} $B9T$h$jD9$1$l$P??!#=i4|@_DjCM$O(B 200$B!#(B @item low -$B5-;v$N%@%&%s%m!<%I%9%3%"$,(B @code{gnus-agent-low-score} $B0J2<$G$"(B -$B$l$P??!#=i4|@_DjCM$O(B 0$B!#(B +$B5-;v$N%@%&%s%m!<%I%9%3%"$,(B @code{gnus-agent-low-score} $B0J2<$G$"$l$P??!#(B +$B=i4|@_DjCM$O(B 0$B!#(B @item high -$B5-;v$N%@%&%s%m!<%I%9%3%"$,(B @code{gnus-agent-high-score} $B0J>e$G$"(B -$B$l$P??!#=i4|@_DjCM$O(B 0$B!#(B +$B5-;v$N%@%&%s%m!<%I%9%3%"$,(B @code{gnus-agent-high-score} $B0J>e$G$"$l$P??!#(B +$B=i4|@_DjCM$O(B 0$B!#(B @item spam -gnus $B%(!<%8%'%s%H$,$=$N5-;v$r(B SPAM $B$@$H8+Pv$7$?$i??!#$3$NH/8+E*(B -$Bo$K??!#(B @@ -13821,9 +13930,11 @@ gnus $B%(!<%8%'%s%H$,$=$N5-;v$r(B SPAM $B$@$H8+Pv$7$?$i??!#$3$NH/8+E*(B $B>o$K56!#(B @end table -$B$"$J$?$,<+J,$NFH<+$N=R8l4X?t$r:n@.$7$?$1$l$P!"$3$l$rCN$C$F$*$$$F(B -$B$/$@$5$$(B: $B4X?t$O0z?tL5$7$G8F$S=P$5$l$^$9$,!"(B@code{gnus-headers} -$B$H(B @code{gnus-score} $BF0E*JQ?t$K$OJXMx$JCM$,B+G{$5$l$^$9!#(B +$B$"$J$?$,<+J,$NFH<+$N=R8l4X?t$r:n@.$7$?$1$l$P!"$3$l$rCN$C$F$*$$$F$/$@$5(B +$B$$(B: +$B4X?t$O0z?tL5$7$G8F$S=P$5$l$^$9$,!"(B +@code{gnus-headers} $B$H(B @code{gnus-score} $BF0E*JQ?t$K$OJXMx$JCM$,B+G{$5$l(B +$B$^$9!#(B $BNc$($P!"0lDj$NF|IU0J>eA0$KEj9F$5$l$?5-;v(B ($BNc$($P!"(B @code{gnus-agent-expire-days} $B0JA0$KEj9F$5$l$?$b$N(B) $B$r%@%&%s%m!<%I$7$J$$(B @@ -13842,15 +13953,15 @@ gnus $B%(!<%8%'%s%H$,$=$N5-;v$r(B SPAM $B$@$H8+Pv$7$?$i??!#$3$NH/8+E*(B (not my-article-old-p) @end lisp -$B$b$7$/$O!"(B@file{~/.gnus.el} $B$d2?$+B>$N$b$N$G$b!"4{Dj$N(B -@code{gnus-category-predicate-list} $B$K<+J,$N=R8l$rDI2C$9$k$3$H$b$G$-$^$9!#(B -($BCm0U(B: $B$3$l$O!"(B@code{gnus-agent} $B$G(B @code{(gnus-agentize)} $B$,FI$_9~$^$l(B -$B$?8e$G$"$kI,MW$,$"$k$G$7$g$&(B) +$B$b$7$/$O!"(B@file{~/.gnus.el} $B$d2?$+B>$N$b$N$G$b!"4{Dj(B +$B$N(B @code{gnus-category-predicate-list} $B$K<+J,$N=R8l$rDI2C$9$k$3$H$b$G$-(B +$B$^$9!#(B($BCm0U(B: $B$3$l$O!"(B@code{gnus-agent} $B$G(B @code{(gnus-agentize)} $B$,FI$_(B +$B9~$^$l$?8e$G$"$kI,MW$,$"$k$G$7$g$&(B) @lisp -(defvar gnus-category-predicate-alist - (append gnus-category-predicate-alist - '((old . my-article-old-p)))) +(setq gnus-category-predicate-alist + (append gnus-category-predicate-alist + '((old . my-article-old-p)))) @end lisp $B$=$7$F!"C1$Ke$N$b$N$HEy2A$JD9$$J}$NNc$O(B: @lisp @@ -13886,18 +13996,15 @@ gnus $B%(!<%8%'%s%H$,$=$N5-;v$r(B SPAM $B$@$H8+Pv$7$?$i??!#$3$NH/8+E*(B $BJ,N`$N;XDj$GMW5a$5$l$k30$N4]3g8L$O$3$3$G$OF~NO$5$l$F$*$i$:!"%I%C%HBP$N5-(B $BK!$G$b$J$/!"=R8l$NCM$O%j%9%H$"$k$H$_$J$5$l$^$9!#(B - $B$5$F!"%@%&%s%m!<%I%9%3%"$NJ8K!$ODL>o$N%9%3%"%U%!%$%k$NJ8K!$HF1$8$G$9$,!"(B $BNc30$H$7$F!"J}$N>l=j$G!"(B@code{$B%@%&%s%m!<%I%9%3%"5,B'(B} $B$O0J2<$N(B3$B$D$N7A<0$rJ}$N>l=j$G!"(B@code{$B%@%&%s%m!<%I%9%3%"5,B'(B} $B$O0J2<$N;0$D$N7A<0$r$_$N(B@code{ -$B%@%&%s%m!<%I(B} $B$N4p=`$,(B @code{$BFI$`(B} $B4p=`$HF1$8$J$i!"%(!<%8%'%s%H$K2?$r%@(B -$B%&%s%m!<%I$9$k$+$r7h$a$k:]$K(B @code{$BIaDL(B} $B$N%9%3%"%U%!%$%k$r;2>H$9$k$h$&(B -$B$K$9$k$3$H$,$G$-$^$9!#(B +$B0l$D$N%0%k!<%W$GFs$D$N%9%3%"5,B'$r0];}$7$?$/$J$/!"%0%k!<%W$NK>$_(B +$B$N(B @code{$B%@%&%s%m!<%I(B} $B$N4p=`$,(B @code{$BFI$`(B} $B4p=`$HF1$8$J$i!"%(!<%8%'%s%H(B +$B$K2?$r%@%&%s%m!<%I$9$k$+$r7h$a$k:]$K(B @code{$BIaDL(B} $B$N%9%3%"%U%!%$%k$r;2>H(B +$B$9$k$h$&$K$9$k$3$H$,$G$-$^$9!#(B $BJ,N`Dj5A$+!"%0%k!<%W%Q%i%a!<%?$N$3$l$i$N;X<($O%(!<%8%'%s%H$K%0%k!<%W$KE,(B $BMQ2DG=$JA4$F$N%9%3%"%U%!%$%k$rFI$^$;!"%9%3%"IU$1%-!<%o!<%I$N;HMQ2DG=$JIt(B @@ -13995,7 +14102,6 @@ file @end itemize @end enumerate - @node The Category Buffer @subsubsection $BJ,N`%P%C%U%!!<(B @@ -14003,7 +14109,6 @@ file $B$+$i(B @kbd{J c} $BL?Na$K$h$C$F(B) $B=i$a$F$3$l$KF~$C$?$H$-!"=i4|@_Dj$N(B $BJ,N`$@$1$,I=<($5$l$^$9!#(B - $B0J2<$NL?Na$,$3$N%P%C%U%!!<$G;HMQ$G$-$^$9!#(B @table @kbd @@ -14035,14 +14140,14 @@ file @item g @kindex g (Category) @findex gnus-category-edit-groups -$B8=:_$NJ,N`$KB0$9$k%0%k!<%W$N0lMw$rJT=8$9$k(B -(@code{gnus-category-edit-groups})$B!#(B +$B8=:_$NJ,N`$KB0$9$k%0%k!<%W$N0lMw$rJT=8$9(B +$B$k(B (@code{gnus-category-edit-groups})$B!#(B @item s @kindex s (Category) @findex gnus-category-edit-score -$B8=:_$NJ,N`$N%@%&%s%m!<%I%9%3%"5,B'$rJT=8$9$k(B -(@code{gnus-category-edit-score})$B!#(B +$B8=:_$NJ,N`$N%@%&%s%m!<%I%9%3%"5,B'$rJT=8$9(B +$B$k(B (@code{gnus-category-edit-score})$B!#(B @item l @kindex l (Category) @@ -14050,7 +14155,6 @@ file $BA4$F$NJ,N`$rI=<($9$k(B (@code{gnus-category-list})$B!#(B @end table - @node Category Variables @subsubsection $BJ,N`JQ?t(B @@ -14093,7 +14197,6 @@ file @end table - @node Agent Commands @subsection $B%(!<%8%'%s%HL?Na(B @@ -14101,7 +14204,6 @@ file @kbd{J j} (@code{gnus-agent-toggle-plugged}) $BL?Na$OA4$F$N%b!<%I(B $B$GF0:n$7!"(Bgnus $B%(!<%8%'%s%H$N@Z$jN%$7(B/$B:9$79~$_>uBV$r@Z$jBX$($^$9!#(B - @menu * Group Agent Commands:: * Summary Agent Commands:: @@ -14116,8 +14218,6 @@ file $ emacs -batch -l ~/.gnus.el -f gnus-agent-batch-fetch @end example - - @node Group Agent Commands @subsubsection $B%0%k!<%W%(!<%8%'%s%HL?Na(B @@ -14125,43 +14225,45 @@ $ emacs -batch -l ~/.gnus.el -f gnus-agent-batch-fetch @item J u @kindex J u (Agent Group) @findex gnus-agent-fetch-groups -$B8=:_$N%0%k!<%W$NE,3J$J5-;v$rA4$FC5n$7$^$9(B -(@code{gnus-agent-remove-group})$B!#$3$NL?Na$O%W%m%;%9(B/$B@\F,<-$N=,47$rM}2r(B -$B$7$^$9!#(B(@pxref{Process/Prefix})$B!#(B +$B8=:_$N%0%k!<%W$r!"$b$7B8:_$7$F$$$l$P!"$=$NJ,N`$+$i>C5n$7$^(B +$B$9(B (@code{gnus-agent-remove-group})$B!#$3$NL?Na$O%W%m%;%9(B/$B@\F,<-$N=,47$rM}(B +$B2r$7$^$9!#(B(@pxref{Process/Prefix})$B!#(B -@end table +@item J Y +@kindex J Y (Agent Group) +@findex gnus-agent-synchronize-flags +$B%j%b!<%H%5!<%P!<$,(B @dfn{unplugged} $B$N$H$-$KJQ99$5$l$?%U%i%0$,$"$l$PF14|(B +$B$5$;$^$9!#(B +@end table @node Summary Agent Commands @subsubsection $B35N,%(!<%8%'%s%HL?Na(B @@ -14170,30 +14272,26 @@ $ emacs -batch -l ~/.gnus.el -f gnus-agent-batch-fetch @item J # @kindex J # (Agent Summary) @findex gnus-agent-mark-article -$B5-;v$K%@%&%s%m!<%I$9$k$h$&$K0u$rIU$1$k(B -(@code{gnus-agent-mark-article})$B!#(B +$B5-;v$K%@%&%s%m!<%I$9$k$h$&$K0u$rIU$1$k(B (@code{gnus-agent-mark-article})$B!#(B @item J M-# @kindex J M-# (Agent Summary) @findex gnus-agent-unmark-article -$B5-;v$+$i%@%&%s%m!<%I$9$k0u$r>C5n$9$k(B -(@code{gnus-agent-unmark-article})$B!#(B +$B5-;v$+$i%@%&%s%m!<%I$9$k0u$r>C5n$9$k(B (@code{gnus-agent-unmark-article})$B!#(B @item @@ @kindex @@ (Agent Summary) @findex gnus-agent-toggle-mark -$B5-;v$r%@%&%s%m!<%I$9$k$+$I$&$+$r@Z$jBX$($k(B -(@code{gnus-agent-toggle-mark})$B!#(B +$B5-;v$r%@%&%s%m!<%I$9$k$+$I$&$+$r@Z$jBX$((B +$B$k(B (@code{gnus-agent-toggle-mark})$B!#(B @item J c @kindex J c (Agent Summary) @findex gnus-agent-catchup -$B%@%&%s%m!<%I0u$NL5$$5-;v$rA4$F4{FI$K$9$k(B -(@code{gnus-agent-catchup})$B!#(B +$B%@%&%s%m!<%I0u$NL5$$5-;v$rA4$F4{FI$K$9$k(B (@code{gnus-agent-catchup})$B!#(B @end table - @node Server Agent Commands @subsubsection $B%5!<%P!<%(!<%8%'%s%HL?Na(B @@ -14201,18 +14299,17 @@ $ emacs -batch -l ~/.gnus.el -f gnus-agent-batch-fetch @item J a @kindex J a (Agent Server) @findex gnus-agent-add-server -$B8=:_$N%5!<%P!<$r!"(Bgnus $B%(!<%8%'%s%H$G07$o$l$k%5!<%P!<$N0lMw$KDI(B -$B2C$9$k(B (@code{gnus-agent-add-server})$B!#(B +$B8=:_$N%5!<%P!<$r!"(Bgnus $B%(!<%8%'%s%H$G07$o$l$k%5!<%P!<$N0lMw$KDI2C$9(B +$B$k(B (@code{gnus-agent-add-server})$B!#(B @item J r @kindex J r (Agent Server) @findex gnus-agent-remove-server -$B8=:_$N%5!<%P!<$r!"(Bgnus $B%(!<%8%'%s%H$G07$o$l$k%5!<%P!<$N0lMw$+$i(B -$B:o=|$9$k(B (@code{gnus-agent-remove-server})$B!#(B +$B8=:_$N%5!<%P!<$r!"(Bgnus $B%(!<%8%'%s%H$G07$o$l$k%5!<%P!<$N0lMw$+$i:o=|$9(B +$B$k(B (@code{gnus-agent-remove-server})$B!#(B @end table - @node Agent Expiry @subsection $B%(!<%8%'%s%H4|8B@Z$l>C5n(B @@ -14223,32 +14320,85 @@ $ emacs -batch -l ~/.gnus.el -f gnus-agent-batch-fetch @cindex Gnus Agent expiry @cindex expiry -@code{nnagent} $B$O4|8B@Z$l>C5n$r07$$$^$;$s!#$=$NBe$o$j$K!"FCJL$J(B -@code{gnus-agent-expire} $BL?Na$,(B @code{gnus-agent-expire-days} $BF|(B -$B$h$j$b8E$$4{FI5-;v$rA4$F>C5n$7$^$9!#$3$l$O$"$J$?$,%G%#%9%/MFNL$r(B -$B;H$$@Z$j$=$&$@$H;W$C$?$H$-$K$$$D$G$b$G(B) $BCfCG$9$k$3$H$b$"$^$jNI$$$3$H$G$O$"$j$^$;$s!#(B +@code{nnagent} $B$O4|8B@Z$l>C5n$r07$$$^$;$s!#$=$NBe$o$j$K!"FCJL(B +$B$J(B @code{gnus-agent-expire} $BL?Na$,(B @code{gnus-agent-expire-days} $BF|$h$j(B +$B$b8E$$4{FI5-;v$rA4$F>C5n$7$^$9!#$3$l$O$"$J$?$,%G%#%9%/MFNL$r;H$$@Z$j$=$&(B +$B$@$H;W$C$?$H$-$K$$$D$G$b$G(B) $BCfCG$9$k$3$H$b$"(B +$B$^$jNI$$$3$H$G$O$"$j$^$;$s!#(B @vindex gnus-agent-expire-all -@code{gnus-agent-expire-all} $B$,(B @code{nil} $B$G$J$1$l$P!"$3$NL?Na(B -$B$OA4$F$N5-;v(B --- $BL$FI!"4{FI!"2D;k!"J]N15-;v$r>C5n$7$^$9!#$b$7(B -@code{nil} ($B$3$l$,=i4|@_DjCM(B) $B$G$"$l$P!"4{FI5-;v$N$_$,>C5n$NBP>](B -$B$H$J$j!"L$FI!"2D;k!"J]N15-;v$O$5$i$KL54|8B$KJ];}$7$^$9!#(B +@code{gnus-agent-expire-all} $B$,(B @code{nil} $B$G$J$1$l$P!"$3$NL?Na$OA4$F$N(B +$B5-;v(B --- $BL$FI!"4{FI!"2D;k!"J]N15-;v$r>C5n$7$^$9!#$b$7(B @code{nil} ($B$3$l$,(B +$B=i4|@_DjCM(B) $B$G$"$l$P!"4{FI5-;v$N$_$,>C5n$NBP>]$H$J$j!"L$FI!"2D;k!"J]N15-(B +$B;v$O$5$i$KL54|8B$KJ];}$7$^$9!#(B + +@node Agent and IMAP +@subsection $B%(!<%8%'%s%H$r(B IMAP $B$G;H$&J}K!(B + +$B%(!<%8%'%s%H$O(B nnimap $B$r4^$`(B gnus $B$N$I$s$J%P%C%/%(%s%I$G$bF0:n$7$^$9!#$7(B +$B$+$7(B NNTP $B$H(B IMAP $B$K$O$$$/$D$+$N35G0$N0c$$$,$"$k$N$G!"$3$N9`$G$O(B gnus $B%(!<(B +$B%8%'%s%H$r(B IMAP $B$N(B @dfn{unplugged} $B$J%b!<%I$N%/%i%$%"%s%H$H$7$F1_3j$K;H(B +$B$($k$h$&$K$9$k$?$a$N!"$$$/$D$+$N>pJs$rDs6!$7$^$9!#(B + +$B?4$KN1$a$F$*$/:G=i$N$3$H$O!"A4$F$N%U%i%0(B (read, ticked $B$J$I(B) $B$O(B nntp $B$N(B +$B>l9g$K$*$1$k(B @code{.newsrc} $B$G$O$J$/$F(B IMAP $B%5!<%P!<$KJ];}$5$l$k$H$$$&$3(B +$B$H$G$9!#$7$?$,$C$F!"(Bgnus $B$O(B @dfn{unplugged} $B$N$H$-$N%U%i%0$NJQ2=$r3P$($F(B +$B$*$$$F!":F$S@\B3$7$?$H$-$K$=$l$i$N%U%i%0$rF14|$5$;$kI,MW$,$"$j$^$9!#(B + +gnus $B$O%(!<%8%'%s%H$N85$G(B nnimap $B%0%k!<%W$rFI$`$H$-!"%G%#%U%)%k%H$G%U%i(B +$B%0$NJQ2=$K@d$($:Cm0U$7$F$$$^$9!#$"$J$?$,:F$S@\B3$7$?$H$-!"%G%#%U%)%k%H(B +$B$G(B gnus $B$O$"$J$?$,2?$i$+$N%U%i%0$rJQ99$7$?$+$I$&$+$rD4$Y$F!"$"$J$?$,$=$l(B +$B$i$r%5!<%P!<$HF14|$5$;$?$$$+$I$&$+$r?R$M$^$9!#$3$N5sF0(B +$B$O(B @code{gnus-agent-synchronize-flags} $B$G%+%9%?%^%$%:$9$k$3$H$,$G$-$^$9!#(B + +@vindex gnus-agent-synchronize-flags +$B$b$7(B @code{gnus-agent-synchronize-flags} $B$,(B @code{nil} $B$@$C$?$i!"%(!<%8%'(B +$B%s%H$O<+F0E*$K%U%i%0$rF14|$5$;$k$3$H$O$7$^$;$s!#$b$7$=$l$,=i4|CM(B +$B$N(B @code{ask} $B$@$C$?$i!"%(!<%8%'%s%H$O$"$J$?$,:F@\B3$7$?$H$-$K$"$J$?$,2?(B +$B$i$+$NJQ99$r9T$J$C$F$$$?$+$I$&$+$rD4$Y$F!"$=$l$i$rF14|$5$;$?$$$+$I$&$+$r(B +$B?R$M$^$9!#$b$7$=$l$i0J30$NCM$@$C$?>l9g$O!"A4$F$N%U%i%0$O<+F0E*$KF14|$5$;(B +$B$i$l$^$9!#(B + +$B$b$7$"$J$?$,!":F@\B3$7$?$H$-$K<+F0$G%U%i%0$rF14|$5$;$?$/$J$$$J$i!"C$;$P!"$"$J$?$,!VF14|!W$NA`:n$r9T$J$C$?$H$-(B +$B$K!"$=$N%U%i%0$O%;%C%H$5$l$F%5!<%P!<$+$i$O:o=|$5$l$^$9!#(B +@c FIXMETGNUS Does it make sense? +"The queued flag" $B$K4X$9$kF0:n$O!"%(!<%8%'%s%H%G%#%l%/%H%j$K$"$k%5!<%P!<(B +$BKh$N(B @code{flags} $B%U%!%$%k$NCf$G8+$D$+$k$G$7$g$&!#$=$l$i$O$"$J$?$,%U%i%0(B +$B$rF14|$5$;$?$H$-$K6u$K$J$j$^$9!#(B @node Outgoing Messages @subsection $B:9=PMQ%a%C%;!<%8(B -Gnus $B$,@Z$jN%$5$l$F$$$k$H$-!"A4$F$N:9=PMQ%a%C%;!<%8(B ($B%a!<%k$H%K%e!<(B -$B%9$NN>J}(B) $B$O2<=q$-%0%k!<%W(B (@pxref{Drafts}) $B$K3JG<$5$l$^$9!#Ej9F(B -$B$7$?8e$G$b!"$3$3$G$=$N%a%C%;!<%8$r8+$?$j!"JT=8$7$?$j$9$k$N$O0U$N(B -$B$^$^$G$9!#(B +Gnus $B$,@Z$jN%$5$l$F$$$k$H$-!"A4$F$N:9=PMQ%a%C%;!<%8(B ($B%a!<%k$H%K%e!<%9$N(B +$BN>J}(B) $B$O2<=q$-%0%k!<%W(B (@pxref{Drafts}) $B$K3JG<$5$l$^$9!#Ej9F$7$?8e$G$b!"(B +$B$3$3$G$=$N%a%C%;!<%8$r8+$?$j!"JT=8$7$?$j$9$k$N$O0U$N$^$^$G$9!#(B -Gnus $B$,:F$S:9$79~$^$l$?$H$-!"%a%C%;!<%8$rAw?.$9$k$?$a$K!"FCJL$J(B -$BL?Na$r;H$C$F2<=q$-%0%k!<%W$+$iAw$k$3$H$b!"%0%k!<%W%P%C%U%!Fb$G(B -@kbd{J S} $B$r;H$C$F!"2<=q$-%0%k!<%WFb$NA4$F$NAw?.2DG=%a%C%;!<%8Aw(B -$B?.$9$k$3$H$b$G$-$^$9!#(B +Gnus $B$,:F$S:9$79~$^$l$?$H$-!"%a%C%;!<%8$rAw?.$9$k$?$a$K!"FCJL$JL?Na$r;H$C(B +$B$F2<=q$-%0%k!<%W$+$iAw$k$3$H$b!"%0%k!<%W%P%C%U%!Fb$G(B @kbd{J S} $B$r;H$C$F!"(B +$B2<=q$-%0%k!<%WFb$NA4$F$NAw?.2DG=%a%C%;!<%8Aw?.$9$k$3$H$b$G$-$^$9!#(B @node Agent Variables @subsection $B%(!<%8%'%s%HJQ?t(B @@ -14256,15 +14406,15 @@ Gnus $B$,:F$S:9$79~$^$l$?$H$-!"%a%C%;!<%8$rAw?.$9$k$?$a$K!"FCJL$J(B @table @code @item gnus-agent-directory @vindex gnus-agent-directory -Gnus $B%(!<%8%'%s%H$,%U%!%$%k$r3JG<$9$k>l=j!#=i4|@_DjCM$O(B -@file{~/News/agent/}$B!#(B +Gnus $B%(!<%8%'%s%H$,%U%!%$%k$r3JG<$9$k>l=j!#=i4|@_DjCM(B +$B$O(B @file{~/News/agent/}$B!#(B @item gnus-agent-handle-level @vindex gnus-agent-handle-level -$B$3$NJQ?t$NCM$h$j9b$$%l%Y%k(B (@pxref{Group Levels}) $B$N%0%k!<%W$O!"(B -$B%(!<%8%'%s%H$+$i$OL5;k$5$l$^$9!#=i4|@_DjCM$O(B -@code{gnus-level-subscribed} $B$G!"$3$l$O=i4|@_Dj$G$O!"9XFI$7$F$$(B -$B$k%0%k!<%W$N$_$,%(!<%8%'%s%H$N=hM}$NBP>]$H$J$k$H$$$&$3$H$G$9!#(B +$B$3$NJQ?t$NCM$h$j9b$$%l%Y%k(B (@pxref{Group Levels}) $B$N%0%k!<%W$O!"%(!<%8%'(B +$B%s%H$+$i$OL5;k$5$l$^$9!#=i4|@_DjCM$O(B @code{gnus-level-subscribed} $B$G!"$3(B +$B$l$O=i4|@_Dj$G$O!"9XFI$7$F$$$k%0%k!<%W$N$_$,%(!<%8%'%s%H$N=hM}$NBP>]$H$J(B +$B$k$H$$$&$3$H$G$9!#(B @item gnus-agent-plugged-hook @vindex gnus-agent-plugged-hook @@ -14276,13 +14426,12 @@ Gnus $B%(!<%8%'%s%H$,%U%!%$%k$r3JG<$9$k>l=j!#=i4|@_DjCM$O(B @end table - @node Example Setup @subsection $B@_DjNc(B -$B$b$7$"$J$?$,$3$N%^%K%e%"%k$rFI$_$?$/$J$/$F!"$4$/I8=`E*$J@_Dj$,$5(B -$B$l$F$$$k$H$9$k$J$i!"$"$J$?$N(B @file{.gnus.el} $B%U%!%$%k$K0J2<$N$h(B -$B$&$J@_Dj$r$9$k$H$3$m$+$i;O$a$i$l$k$G$7$g$&!#(B +$B$b$7$"$J$?$,$3$N%^%K%e%"%k$rFI$_$?$/$J$/$F!"$4$/I8=`E*$J@_Dj$,$5$l$F$$$k(B +$B$H$9$k$J$i!"$"$J$?$N(B @file{.gnus.el} $B%U%!%$%k$K0J2<$N$h$&$J@_Dj$r$9$k$H(B +$B$3$m$+$i;O$a$i$l$k$G$7$g$&!#(B @lisp ;;; Gnus $B$,$I$N$h$&$K%K%e!<%9$rl=j!#=i4|@_DjCM$O(B (gnus-agentize) @end lisp -$B4pK\E*$K$O$3$l$@$1$GNI$$$O$:$G$9!#$3$l$r$"$J$?$N(B -@file{~/.gnus.el} $B%U%!%$%k$KF~$l$F!"$"$J$?$NMWK>$K9g$o$;$FJT=8$7!"(B -PPP ($B$d2?$+(B) $B$r5/F0$7$F!"(B@kbd{M-x gnus} $B$HBG80$7$F$/$@$5$$!#(B +$B4pK\E*$K$O$3$l$@$1$GNI$$$O$:$G$9!#$3$l$r$"$J$?$N(B @file{~/.gnus.el} $B%U%!(B +$B%$%k$KF~$l$F!"$"$J$?$NMWK>$K9g$o$;$FJT=8$7!"(BPPP ($B$d2?$+(B) $B$r5/F0$7$F!"(B +@kbd{M-x gnus} $B$HBG80$7$F$/$@$5$$!#(B -$B$"$J$?$,=i$a$F(B gnus $B$ro$H$F$b;~4V$,$+$+$j$^$9$,!"0lEY$@$1$7$+o$H$F$b;~4V$,(B +$B$+$+$j$^$9$,!"0lEY$@$1$7$+C5n$7$^(B -$B$9!#(B(@kbd{A k} $B$G:o=|%0%k!<%W$OA4$FLa$C$F$-$^$9!#(B) +$B$7$P$i$/$NFI$_9~$_$H2r@O$N8e$K!"%0%k!<%W$N0lMw$rDs<($5$;$i$l$k$G$7$g$&!#(B +@kbd{u} $BL?Na$GFI$_$?$$%0%k!<%W$r9XFI$7$^$9!#FI$_$?$$%0%k!<%W$rA4It9XFI$7(B +$B$?$i!"(B@kbd{l} $B$G:o=|%0%k!<%W$rA4$F2hLL$+$i>C5n$7$^$9!#(B(@kbd{A k} $B$G:o=|(B +$B%0%k!<%W$OA4$FLa$C$F$-$^$9!#(B) -$B$5$F!"$3$3$G$=$N>l$G%0%k!<%W$rFI$`$3$H$b$G$-$^$9$7!"$"$k$$$O(B -@kbd{J s} $BL?Na$G5-;v$r%@%&%s%m!<%I$9$k$3$H$b$G$-$^$9!#$"$H$O$3$N(B -$B%^%K%e%"%k$N;D$j$rFI$s$G!"$=$NB>$N2?I42/$N9`L\$+$i%+%9%?%^%$%:$7(B -$B$?$$$3$H$r8+$D$1=P$7$F$/$@$5$$!#(B +$B$5$F!"$3$3$G$=$N>l$G%0%k!<%W$rFI$`$3$H$b$G$-$^$9$7!"$"$k$$(B +$B$O(B @kbd{J s} $BL?Na$G5-;v$r%@%&%s%m!<%I$9$k$3$H$b$G$-$^$9!#$"$H$O$3$N%^%K%e(B +$B%"%k$N;D$j$rFI$s$G!"$=$NB>$N2?I42/$N9`L\$+$i%+%9%?%^%$%:$7$?$$$3$H$r8+$D(B +$B$1=P$7$F$/$@$5$$!#(B @node Batching Agents @subsection $B0l3g%(!<%8%'%s%H=hM}(B -Gnus $B%(!<%8%'%s%H$K5-;v$ro$K4JC1$G$9!#0J2<$N%7%'%k%9%/%j%W%H$OI,MW$J$3$H$rA4$F$d$C$F$/(B -$B$l$k$G$7$g$&!#(B +Gnus $B%(!<%8%'%s%H$K5-;v$ro$K4JC1$G$9!#(B +$B0J2<$N%7%'%k%9%/%j%W%H$OI,MW$J$3$H$rA4$F$d$C$F$/$l$k$G$7$g$&!#(B @example #!/bin/sh @@ -14357,8 +14504,8 @@ gnus-offline $B$O$=$N5!G=$rDs6!$7$^$9!#(B($BI.Dj$7$^$9(B) -@file{~/.emacs} $B$N(B gnus-agent $B$N@_Dj$N$A$g$$$HA0$K(B +$B2>Dj$7$^(B +$B$9(B) @file{~/.emacs} $B$N(B gnus-agent $B$N@_Dj$N$A$g$$$HA0$K(B @lisp (load "gnus-ofsetup") @@ -14371,28 +14518,26 @@ gnus-offline $B$O$=$N5!G=$rDs6!$7$^$9!#(B($BI.l9g$K$O!"(B@code{MIEE} $B$N@_Dj$O(B -$B$$$C$5$$$7$J$/$F$b$+$^$$$^$;$s!#(B +$B%3%s%H%m!<%k$9$k;v$,$G$-$^$9(B($B$3$3$G$O=R$Y$^$;$s$,!D(B)$B!#(B($B$b$A$m(B +$B$s(B @code{gnus-agent} + @code{MIEE} $B$H$$$&AH9g$;$b2DG=$G(B +$B$9(B) @code{MIEE} $B$O(B @file{http://www.shiojiri.ne.jp/%7Et-ichi/lisp/miee.el} $B$+(B +$B$il9g$K(B +$B$O!"(B@code{MIEE} $B$N@_Dj$O$$$C$5$$$7$J$/$F$b$+$^$$$^$;$s!#(B @table @code @vindex gnus-offline-articles-to-fetch @item gnus-offline-articles-to-fetch -$B$3$NJQ?t$Ol9g$O!"(BMail $B$@$1$rl9g$O!"(BNews $B$@$1$rl9g$O!"(BMail/News $BN>J}$rl9g$O!"(BMail $B$@$1$rl9g$O!"(BNews $B$@$1$rl9g$O!"(B +Mail/News $BN>J}$ruBV$K$J$C$?8e$KI>2A$5$l$k(B hook $B$G$9!#(B +$B$3$NJQ?t$O(B Gnus $B$,(B Offline(UnPlugged) $B>uBV$K$J$C$?8e$KI>2A$5$l$k(B hook $B$G(B +$B$9!#(B @vindex gnus-offline-interval-time @item gnus-offline-interval-time -$B$3$NJQ?t$G;XDj$5$l$?4V3V(B($BIC?t(B)$B$G(B@code{gnus-offline-articles-to-fetch} $B$G(B -$B;XDj$5$l$?(B article $B$r$N%*%U%i%$%s%K%e!<%9%j!<%@!<$N$h$&$K$OF0:n$7$^$;(B $BMWLs$9$k$H!"(Bgnus $B$,@Z$jN%$5$l$F$$$k$H$-$O!"%m!<%+%k$KJ]B8$5$l$?5-;v$r8+(B $B$k$@$1$G$9!#@\B3$5$l$F$$$k$H$-$O!"(BISP $B$HOC$9$@$1$G$9!#(B - @node Scoring @chapter $B%9%3%"(B @cindex scoring $BB>$N?M!9$O(B @dfn{$B:o=|%U%!%$%k(B} $B$r;H$$$^$9$,!"$3$3(B gnus $B%?%o!<$O:o=|$h$j$b(B $B%9%3%"$NJ}$r9%$_$^$9$N$G!"B>$H3JF.$9$k$h$j$O@Z$jBX$($k;v$K$7$^$7$?!#$=$l(B -$B$i$O40A4$K0c$&;v$r$7$^$9$N$G!"??$CD>$0$K:B$C$FCm0U$rJ'$C$F$/$@$5$$!*(B +$B$i$O40A4$K0c$&;v$r$7$^$9$N$G!"??$CD>$0$K:B$C$FCm0U$rJ'$C$F$/$@$5$$(B! @vindex gnus-summary-below -$BA4$F$N5-;v$O%9%3%"$N=i4|CM$r;}$C$F$*$j(B -(@code{gnus-summary-default-score})$B!"$3$l$O%G%#%U%)%k%H$G(B 0 $B$G$9!#$3$N%9(B -$B%3%"$OBPOCE*$d!"%9%3%"%U%!%$%k(B (score file) $B$NJ}K!$K$h$j!">e$2$i$l$?$j2<(B -$B$2$i$l$?$j$7$^$9!#(B@code{gnus-summary-bark-below} $B$h$j$bDc$$%9%3%"$N5-;v(B -$B$K$O4{FI$N0u$,IU$-$^$9!#(B +$BA4$F$N5-;v$O%9%3%"$N=i4|CM$r;}$C$F$*(B +$B$j(B (@code{gnus-summary-default-score})$B!"$3$l$O%G%#%U%)%k%H$G(B 0 $B$G$9!#$3(B +$B$N%9%3%"$OBPOCE*$d!"%9%3%"%U%!%$%k(B (score file) $B$NJ}K!$K$h$j!">e$2$i$l$?(B +$B$j2<$2$i$l$?$j$7$^$9!#(B@code{gnus-summary-bark-below} $B$h$j$bDc$$%9%3%"$N(B +$B5-;v$K$O4{FI$N0u$,IU$-$^$9!#(B -Gnus $B$O35N,%P%C%U%!$r:n@.$9$kA0$K!"8=:_$N%0%k!<%W$KE,MQ$5$l$k$I$s$J(B -@dfn{$B%9%3%"%U%!%$%k(B} $B$bFI$_9~$_$^$9!#(B +Gnus $B$O35N,%P%C%U%!$r:n@.$9$kA0$K!"8=:_$N%0%k!<%W$KE,MQ$5$l$k$I$s(B +$B$J(B @dfn{$B%9%3%"%U%!%$%k(B} $B$bFI$_9~$_$^$9!#(B $B8=:_$N5-;v$K4p$E$$$F%9%3%"$NEPO?$rA^F~$9$k$$$/$D$+$NL?Na$,35N,%P%C%U%!$K(B $B$"$j$^$9!#Nc$($P!"(Bgnus $B$KFCDj$NI=Bj$N5-;v$N%9%3%"$r2<$2$?$j>e$2$?$j$9$k(B $B$h$&$K5a$a$k;v$,$G$-$^$9!#(B -2$Be;H$o$l$F$$$J$$$I$s$J(B +$BFse;H$o$l$F$$$J$$$I$s$J(B $BEPO?$b!"%9%3%"%U%!%$%k$NBg$-$5$r>.$5$/$9$k$?$a$K!"@E$+$K:o=|$5$l$^$9!#(B @menu -* Summary Score Commands:: $B8=:_$N%0%k!<%W$N$?$a$N%9%3%"EPO?$rDI2C$9$k!#(B -* Group Score Commands:: $B0lHLE*$J%9%3%"L?Na!#(B -* Score Variables:: $B$"$J$?$N%9%3%"$r%+%9%?%^%$%:$9$k!#(B - ($B$^$!!"$J$s$FMQ8l$G$7$g$&(B)$B!#(B -* Score File Format:: $B%9%3%"%U%!%$%k$K2?$rF~$l$k$+!#(B -* Score File Editing:: $BC5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k(B +* GroupLens:: $B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k(B +* Advanced Scoring:: $B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&(B +* Score Decays:: $B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"$k(B @end menu - @node Summary Score Commands @section $B35N,%9%3%"L?Na(B @cindex score commands @@ -14526,21 +14670,21 @@ Gnus $B$O35N,%P%C%U%!$r:n@.$9$kA0$K!"8=:_$N%0%k!<%W$KE,MQ$5$l$k$I$s$J(B @item V t @kindex V t ($B35N,(B) @findex gnus-score-find-trace -$B8=:_$N5-;v$K;H$o$l$F$$$kA4$F$N%9%3%"K!B'(B (score rule) $B$rI=<($7$^$9(B -(@code{gnus-score-find-trace})$B!#(B +$B8=:_$N5-;v$K;H$o$l$F$$$kA4$F$N%9%3%"K!B'(B (score rule) $B$rI=<($7$^(B +$B$9(B (@code{gnus-score-find-trace})$B!#(B @item V R @kindex V R ($B35N,(B) @findex gnus-summary-rescore -$B8=:_$N35N,$G%9%3%"2aDx$ro$K5,B'@5$7$$K!B'$K=>$$$^$9(B @@ -14598,7 +14742,7 @@ File Editing})$B!#(B $B:G=i$N%-!<$O%9%3%"$rA}$d$9$?$a$N(B @kbd{I} (i $B$NBgJ8;z(B) $B$+!"%9%3%"$r2<$2$k(B $B$?$a$N(B @kbd{L} $B$G$9!#(B @item -2$BHVL\$N%-!<$O$I$N%X%C%@!<$K%9%3%"$r$7$?$$$+$rI=$7$^$9!#0J2<$N%-!<$,;HMQ(B +$BFsHVL\$N%-!<$O$I$N%X%C%@!<$K%9%3%"$r$7$?$$$+$rI=$7$^$9!#0J2<$N%-!<$,;HMQ(B $B2DG=$G$9(B: @table @kbd @@ -14639,7 +14783,7 @@ File Editing})$B!#(B @end table @item -3$BHVL\$N%-!<$O9gCW$9$k7?$G$9!#$I$N9gCW$N7?$,M-8z$+$O$I$N%X%C%@!<$K%9%3%"(B +$B;0HVL\$N%-!<$O9gCW$9$k7?$G$9!#$I$N9gCW$N7?$,M-8z$+$O$I$N%X%C%@!<$K%9%3%"(B $B$rIU$1$h$&$H$7$F$$$k$+$K0M$j$^$9!#(B @table @code @@ -14689,7 +14833,7 @@ File Editing})$B!#(B @end table @item -4$B$D$a$G!":G8e$N%-!<$O$3$l$,0l;~E*(B ($B$9$J$o$A!"4|8B@Z$l>C5n(B) $B$N%9%3%"EPO?(B +$B;M$D$a$G!":G8e$N%-!<$O$3$l$,0l;~E*(B ($B$9$J$o$A!"4|8B@Z$l>C5n(B) $B$N%9%3%"EPO?(B $B$+!"1JB3E*$J(B ($B$9$J$o$A!"4|8B@Z$l>C5n$G$J$$(B) $B%9%3%"EPO?$G$"$k$+$H$$$&$3$H!"(B $B$b$7$/$O$9$0$K$J$5$l$k$Y$-$+!"%9%3%"%U%!%$%k$KDI2C$9$k;v$O$7$J$$$+$H$$$&(B $B;v$r;XDj$7$^$9!#(B @@ -14707,25 +14851,27 @@ File Editing})$B!#(B @end enumerate -$B$G$9$+$i!"8=:_$NCxo$K4JC1$G$9!#(B -$BJ*;v$rJ#;($K$9$k$N$O!"C;=LBG80$,B8:_$9$k$+$i$G$9!#(B2$BHVL\$+(B3$BHVL\$NJ8;z$KBg(B -$BJ8;z$r;H$&$H!"(Bgnus $B$O;D$k(B1$B$D$+(B2$B$D$NBG80$K=i4|CM$r;H$$$^$9!#=i4|CM$O(B ``$BJ8(B -$B;zNs$N0lIt(B'' $B$H(B ``$B0l;~E*(B'' $B$G$9!#$G$9$+$i!"(B@kbd{I A} $B$O(B @kbd{I a s t} $B$H(B -$BF1$8$G!"(B@kbd{I a R} $B$O(B @kbd{I a r t} $B$HF1$8$G$9!#(B +$BJ*;v$rJ#;($K$9$k$N$O!"C;=LBG80$,B8:_$9$k$+$i$G$9!#FsHVL\$+;0HVL\$NJ8;z$K(B +$BBgJ8;z$r;H$&$H!"(Bgnus $B$O;D$k0l$D$+Fs$D$NBG80$K=i4|CM$r;H$$$^$9!#=i4|CM(B +$B$O(B ``$BJ8;zNs$N0lIt(B'' $B$H(B ``$B0l;~E*(B'' $B$G$9!#$G$9$+$i!"(B +@kbd{I A} $B$O(B @kbd{I a s t} $B$HF1$8$G!"(B@kbd{I a R} $B$O(B @kbd{I a r t} $B$HF1$8(B +$B$G$9!#(B -$B$3$l$i$N4X?t$O?t;z@\F,0z?t$H!"%7%s%\%k@\F,0z?t$re$2$k(B) $B$+$r;XDj$7$^$9!#%7%s%\%k@\F,0z?t(B @code{a} $B$OL?Na$,8=(B -$B:_$N%9%3%"%U%!%$%k$G$O$J$/%U%!%$%k(B @file{all.SCORE} $B$r;H$&;v$r;XDj$7$^$9!#(B +$B$3$l$i$N4X?t$O?t;z@\F,0z?t$H!"%7%s%\%k@\F,0z?t$re$2$k(B) $B$+$r;XDj$7$^$9!#%7%s%\%k@\F,0z?t(B @code{a} $B$OL?Na$,(B +$B8=:_$N%9%3%"%U%!%$%k$G$O$J$/%U%!%$%k(B @file{all.SCORE} $B$r;H$&;v$r;XDj$7$^(B +$B$9!#(B @vindex gnus-score-mimic-keymap @code{gnus-score-mimic-keymap} $B$O$3$l$i$NL?Na$,%-!<%^%C%W$G$"$k$+$N$h$&(B $B$K?6$kIq$&$+$I$&$+$r;XDj$7$^$9!#(B - @node Group Score Commands @section $B%0%k!<%W%9%3%"L?Na(B @cindex group score commands @@ -14738,8 +14884,8 @@ File Editing})$B!#(B @kindex W f ($B%0%k!<%W(B) @findex gnus-score-flush-cache Gnus $B$O2?EY$b%9%3%"O"A[%j%9%H$rFI$_9~$`$N$rHr$1$k$?$a$K!"$=$l$N%-%c%C%7%e(B -$B$rJ];}$7$F$$$^$9!#$3$NL?Na$O%-%c%C%7%e$r=q$-=P$7$^$9(B -(@code{gnus-score-flush-cache})$B!#(B +$B$rJ];}$7$F$$$^$9!#$3$NL?Na$O%-%c%C%7%e$r=q$-=P$7$^(B +$B$9(B (@code{gnus-score-flush-cache})$B!#(B @end table @@ -14752,7 +14898,6 @@ Gnus $B$O2?EY$b%9%3%"O"A[%j%9%H$rFI$_9~$`$N$rHr$1$k$?$a$K!"$=$l$N%-%c%C%7%e(B & emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-batch-score @end example - @node Score Variables @section $B%9%3%"JQ?t(B @cindex score variables @@ -14771,18 +14916,18 @@ Gnus $B$O2?EY$b%9%3%"O"A[%j%9%H$rFI$_9~$`$N$rHr$1$k$?$a$K!"$=$l$N%-%c%C%7%e(B $B$,!"$b$7:o=|%U%!%$%k$r%0%k!<%W$KE,MQ$7$F$$$k$H$-$K!":o=|%U%!%$%k$rJQ99$7!"(B $B$b$C$HB?$/$N5-;v$r:o=|$9$k$?$a$K$=$l$r:F$K2C$($k@\Hx8l$G$9(B ($B=i4|CM$G(B -@samp{SCORE} $B$G$9!#(B) +$B%9%3%"%U%!%$%k$K$?$I$jCe$/$?$a$K%0%k!<%WL>$K2C$($k@\Hx8l$G$9(B ($B=i4|CM(B +$B$G(B @samp{SCORE} $B$G$9!#(B) @item gnus-score-uncacheable-files @vindex gnus-score-uncacheable-files @@ -14792,29 +14937,29 @@ Gnus $B$O2?EY$b%9%3%"O"A[%j%9%H$rFI$_9~$`$N$rHr$1$k$?$a$K!"$=$l$N%-%c%C%7%e(B $B$N$G$"$l$P!":F$SI,MW$H$5$l$J$$$h$&$J%9%3%"%U%!%$%k$r=|5n$9$k$?$a$K$3$N@5(B $B5,I=8=$r;H$&;v$,$G$-$^$9!#(B@file{all.SCORE} $B$N%-%c%C%7%e$r;_$a$k$N$O0-$$(B $B9M$($G$9$,!"(B@file{comp.infosystems.www.authoring.misc.ADAPT} $B$r%-%c%C%7%e(B -$B$7$J$$$N$ONI$$9M$($G$7$g$&!#e$2(B/$B2<$2L?Na$K$h$C$F;H$o$l$k>e$2(B/$B2<$2$9$k%9%3%"$G$9!#(B -$B%G%#%U%)%k%H$O(B1000$B$G!"2a>j$@$H;W$&$+$b$7$l$^$;$s$,!"$3$l$OE,1~%9%3%"IU$1(B -$B$r$9$kM>CO$NB8:_$9$k;v$r3N.$5$JJQ99$G>e=q$-$5$l$?$/$O$"$j$^$;$s!#(B +$B%G%#%U%)%k%H$O(B 1000 $B$G!"2a>j$@$H;W$&$+$b$7$l$^$;$s$,!"$3$l$OE,1~%9%3%"IU(B +$B$1$r$9$kM>CO$NB8:_$9$k;v$r3N.$5$JJQ99$G>e=q$-$5$l$?$/$O$"$j$^$;$s!#(B @item gnus-summary-default-score @vindex gnus-summary-default-score -$B5-;v$N%9%3%"$N=i4|CM$G!"=i4|@_Dj$G$O(B0$B$K$J$C$F$$$^$9!#(B +$B5-;v$N%9%3%"$N=i4|CM$G!"=i4|@_Dj$G$O(B 0 $B$K$J$C$F$$$^$9!#(B @item gnus-summary-expunge-below @vindex gnus-summary-expunge-below @@ -14825,12 +14970,12 @@ gnus $B$K%9%3%"$r(B @file{.newsrc.eld} $B%U%!%$%k$KJ]B8$9$k$h$&$K$5$;$^$9!#( @item gnus-score-over-mark @vindex gnus-score-over-mark -$B=i4|@_Dj$N%9%3%"$h$jBg$-$J%9%3%"$r;}$D5-;v$KBP$7$F(B (3$B7eL\$K(B) $B;H$o$l$k0u(B +$B=i4|@_Dj$N%9%3%"$h$jBg$-$J%9%3%"$r;}$D5-;v$KBP$7$F(B ($B;07eL\$K(B) $B;H$o$l$k0u(B $B$G$9!#=i4|@_Dj$O(B @samp{+} $B$G$9!#(B @item gnus-score-below-mark @vindex gnus-score-below-mark -$B=i4|@_Dj$N%9%3%"$h$j>.$5$J%9%3%"$r;}$D5-;v$KBP$7$F(B (3$B7eL\$K(B) $B;H$o$l$k0u(B +$B=i4|@_Dj$N%9%3%"$h$j>.$5$J%9%3%"$r;}$D5-;v$KBP$7$F(B ($B;07eL\$K(B) $B;H$o$l$k0u(B $B$G$9!#=i4|@_Dj$O(B @samp{-} $B$G$9!#(B @item gnus-score-find-score-files-function @@ -14849,9 +14994,10 @@ gnus $B$K%9%3%"$r(B @file{.newsrc.eld} $B%U%!%$%k$KJ]B8$9$k$h$&$K$5$;$^$9!#( @findex gnus-score-find-bnews bnews $B9=J8$r;H$C$F!"A4$F$N9gCW$9$k%9%3%"%U%!%$%k$rE,MQ$7$^$9!#$3$l$,=i4|(B $B@_Dj$G$9!#Nc$($P!"8=:_$N%0%k!<%W$,(B @samp{gnu.emacs.gnus} $B$J$i$P!"(B -@file{gnu.all.SCORE}$B!"(B@file{not.alt.SCORE} $B$H(B @file{gnu.all.SCORE} $B$,$9(B -$B$Y$FE,MQ$5$l$^$9!#MW$9$k$K!"%9%3%"%U%!%$%kL>$N(B @samp{all} $B$,(B @samp{.*} -$B$KJQ49$5$l!"$=$l$+$i@55,I=8=$N9gCW$,$J$5$l$^$9!#(B +@file{gnu.all.SCORE}, @file{not.alt.SCORE} $B$H(B @file{gnu.all.SCORE} $B$,$9(B +$B$Y$FE,MQ$5$l$^$9!#MW$9$k$K!"%9%3%"%U%!%$%kL>(B +$B$N(B @samp{all} $B$,(B @samp{.*} $B$KJQ49$5$l!"$=$l$+$i@55,I=8=$N9gCW$,$J$5$l$^(B +$B$9!#(B $B$3$l$O!"A4$F$N%0%k!<%W$KE,MQ$7$?$$%9%3%"EPO?$,$$$/$D$+$"$k>l9g$O!"$=$l$i(B $B$NEPO?$r(B @file{all.SCORE} $B%U%!%$%k$KF~$l$k$H$$$&$3$H$G$9!#(B @@ -14863,32 +15009,38 @@ Gnus $B$O0lHLE*$J%9%3%"%U%!%$%k$rFCDj$N%9%3%"%U%!%$%k8~$1$N$b$N$h$jA0$KE,(B @item gnus-score-find-hierarchical @findex gnus-score-find-hierarchical -$BA4$F$N?F%0%k!<%W$+$i$NA4$F$N%9%3%"%U%!%$%k$rE,MQ$7$^$9!#$3$l$O(B -@file{all.SCORE} $B$N$h$&$J%9%3%"%U%!%$%k$r;}$D;v$O$G$-$J$$$1$l$I!"(B -@file{SCORE}$B!"(B@file{comp.SCORE} $B$H(B @file{comp.emacs.SCORE} $B$r;}$D;v$,$G(B -$B$-$k$H$$$&;v$G$9!#(B +$BA4$F$N?F%0%k!<%W$+$i$NA4$F$N%9%3%"%U%!%$%k$rE,MQ$7$^$9!#$3$l(B +$B$O(B @file{all.SCORE} $B$N$h$&$J%9%3%"%U%!%$%k$r;}$D;v$O$G$-$J$$$1$l$I!"(B +@file{SCORE}, @file{comp.SCORE} $B$H(B @file{comp.emacs.SCORE} $B$r!"$=$l$>$l(B +$B$N%5!<%P!<$KBP$7$F;}$D;v$,$G$-$k$H$$$&;v$G$9!#(B @end table $B$3$NJQ?t$O4X?t$N%j%9%H$G$"$k;v$b$G$-$^$9!#$=$N>l9g$O!"$3$l$i$NA4$F$N4X?t(B -$B$,8F$P$l!"%9%3%"%U%!%$%k$NJV$5$l$?A4$F$N%j%9%H$,E,MQ$5$l$^$9!#$3$l$i$N4X(B -$B?t$OD>@\%9%3%"O"A[%j%9%H$N%j%9%H$rJV$9;v$b$G$-$^$9!#$=$N>l9g$O!"$=$l$i$N(B -$B%U%!%$%k$G$J$$%9%3%"O"A[%j%9%H$rJV$94X?t$O!"JV$5$l$k:G8e$N%9%3%"%U%!%$%k(B -$B$,%m!<%+%k%9%3%"%U%!%$%k$G$"$k;v$r3N$r0z?t$H$7$F8F$P$l!"%9%3%"%U%!%$%k$NJV$5$l$?A4$F$N%j%9%H$,E,(B +$BMQ$5$l$^$9!#$3$l$i$N4X?t$OD>@\%9%3%"O"A[%j%9%H$N%j%9%H$rJV$9;v$b$G$-$^$9!#(B +$B$=$N>l9g$O!"$=$l$i$N%U%!%$%k$G$J$$%9%3%"O"A[%j%9%H$rJV$94X?t$O!"JV$5$l$k(B +$B:G8e$N%9%3%"%U%!%$%k$,%m!<%+%k%9%3%"%U%!%$%k$G$"$k;v$r3NC5n$rA`:n$7$F$$$kJ}K!$G$9(B---$BA4$F$N9gCW$7$J$$EPO?(B -$B$O8E$/$J$j$9$.!"9gCW$9$kEPO?$r?7A/$G(B -$BLL$9$k;v$K$J$k$G$7$g$&!#(B +$B$O8E$/$J$j$9$.!"9gCW$9$kEPO?$r?7A/$GLL$9$k;v$K$J$k$G$7$g$&!#(B @item gnus-score-after-write-file-function @vindex gnus-score-after-write-file-function @@ -14903,7 +15055,6 @@ Gnus $B$O0lHLE*$J%9%3%"%U%!%$%k$rFCDj$N%9%3%"%U%!%$%k8~$1$N$b$N$h$jA0$KE,(B @end table - @node Score File Format @section $B%9%3%"%U%!%$%kMM<0(B @cindex score file format @@ -14941,30 +15092,29 @@ Gnus $B$O0lHLE*$J%9%3%"%U%!%$%k$rFCDj$N%9%3%"%U%!%$%k8~$1$N$b$N$h$jA0$KE,(B $B$3$NNc$O$?$$$F$$$N%9%3%"%U%!%$%k$NMWAG$r@bL@$7$F$$$^$9!#0c$C$?J}K!$K$D$$(B $B$F$O!"(B@pxref{Advanced Scoring} $B$r8+$F$/$@$5$$!#(B -$B$3$l$O(B lisp $B%3!<%I$N$h$&$K8+$($^$9$,!"2A(B} (eval) $B$5$l$^$;$s!#$7$+$7!"(Blisp $B%j!<%@!<$,$3$NMM<0$rFI$_9~$`(B -$B$N$K;H$o$l$^$9$N$G!"0UL#E*$KM-8z$G$J$$$H$7$F$b!"J8K!E*$K$OM-8z$G$9!#(B +$B$3$l$O(B lisp $B%3!<%I$N$h$&$K8+$($^$9$,!"2A(B} (eval) $B$5$l$^$;$s!#$7$+$7!"(Blisp $B%j!<%@!<$,$3$NMM<0$rFI$_(B +$B9~$`$N$K;H$o$l$^$9$N$G!"0UL#E*$KM-8z$G$J$$$H$7$F$b!"J8K!E*$K$OM-8z$G$9!#(B -$B$3$NO"A[%j%9%H$G$O(B6$B$D$N%-!<$r;H$&;v$,$G$-$^$9!#(B +$B$3$NO"A[%j%9%H$G$OO;$D$N%-!<$r;H$&;v$,$G$-$^$9!#(B @table @code @item $BJ8;zNs(B (STRING) $B$b$7%-!<$,J8;zNs$G$"$k$H!"$=$l$O9gCW$,A0$G$9!#%9%3(B -$B%"$O$3$l$i$N(B8$B$D$N%X%C%@!<$@$1$K$l$N%9%3%"EPO?$O(B1$B$D$+$i(B4 -$B$D$^$G$NMWAG$r;}$A$^$9!#(B +$B%"$O$3$l$i$NH,$D$N%X%C%@!<$@$1$K$l$N%9%3%"EPO?$O0l$D$+$i(B +$B;M$D$^$G$NMWAG$r;}$A$^$9!#(B @enumerate @item @@ -14972,39 +15122,41 @@ Gnus $B$O0lHLE*$J%9%3%"%U%!%$%k$rFCDj$N%9%3%"%U%!%$%k8~$1$N$b$N$h$jA0$KE,(B $B$,!"(BLines $B$H(B Chars $B%X%C%@!<$G$O$3$l$O@0?t$G$J$1$l$P$J$j$^$;$s!#(B @item -$B$b$7(B2$BHVL\$NMWAG$,B8:_$9$k$J$i!"$=$l$O?t;z$G$"$k$Y$-$G$9(B---@dfn{$B%9%3%"MW(B -$BAG(B}$B!#$3$N?t;z$OIi$NL58BBg$+$i@5$NL58BBg$^$G$N4V$N@0?t$G$"$k$Y$-$G$9!#$b(B -$B$79gCW$,@.8y$9$l$P!"$3$N?t;z$,5-;v$N%9%3%"$K2C$($i$l$^$9!#$b$7$3$NMWAG$,(B -$BB8:_$7$F$$$J$1$l$P!"?t;z(B @code{gnus-score-interactive-default-score} $B$,(B -$BBe$o$j$K;H$o$l$^$9!#$3$l$O=i4|@_Dj$G(B1000$B$G$9!#(B +$B$b$7FsHVL\$NMWAG$,B8:_$9$k$J$i!"$=$l$O?t;z$G$"$k$Y$-$G(B +$B$9(B---@dfn{$B%9%3%"MWAG(B}$B!#$3$N?t;z$OIi$NL58BBg$+$i@5$NL58BBg$^$G$N4V$N@0?t(B +$B$G$"$k$Y$-$G$9!#$b$79gCW$,@.8y$9$l$P!"$3$N?t;z$,5-;v$N%9%3%"$K2C$($i$l$^(B +$B$9!#$b$7$3$NMWAG$,B8:_$7$F$$$J$1$l$P!"?t(B +$B;z(B @code{gnus-score-interactive-default-score}$B$,Be$o$j$K;H$o$l$^$9!#$3$l(B +$B$O=i4|@_Dj$G(B 1000 $B$G$9!#(B @item -$B$b$7(B3$BHVL\$NMWAG$,B8:_$7$F$$$k$H!"$=$l$O?t;z$G$"$k$Y$-$G$9(B---@dfn{$BF|IUMW(B -$BAG(B} $B$G$9!#$3$NF|IU$O:G8e$K$3$N%9%3%"EPO?$,9gCW$7$?;~9o$r<($7!"$3$l$O%9%3(B -$B%"EPO?$N4|8B@Z$l>C5n5!9=$N5!G=$N$?$a$K;H$o$l$^$9!#$3$NMWAG$,B8:_$7$F$$$J(B -$B$1$l$P!"%9%3%"EPO?$O1JB3$7$^$9!#F|IU$O5*85A0(B1$BG/(B12$B7n(B31$BF|$+$i7P2a$7$?F|$K(B -$B$A$N?t$GI=$5$l$^$9!#(B +$B$b$7;0HVL\$NMWAG$,B8:_$7$F$$$k$H!"$=$l$O?t;z$G$"$k$Y$-$G(B +$B$9(B---@dfn{$BF|IUMWAG(B} $B$G$9!#$3$NF|IU$O:G8e$K$3$N%9%3%"EPO?$,9gCW$7$?;~9o$r(B +$B<($7!"$3$l$O%9%3%"EPO?$N4|8B@Z$l>C5n5!9=$N5!G=$N$?$a$K;H$o$l$^$9!#$3$NMW(B +$BAG$,B8:_$7$F$$$J$1$l$P!"%9%3%"EPO?$O1JB3$7$^$9!#F|IU$O5*85A0(B 1$BG/(B12$B7n(B31$BF|(B +$B$+$i7P2a$7$?F|$K$A$N?t$GI=$5$l$^$9!#(B @item -$B$b$7(B4$BHVL\$NMWAG$,B8:_$7$F$$$k$H!"$=$l$O%7%s%\%k$G$"$k$Y$-$G$9(B---@dfn{$B7?(B -$BMWAG(B} $B$G$9!#$3$NMWAG$O$3$N%9%3%"EPO?$,5-;v$K9gCW$9$k$+$I$&$+$rD4$Y$k$N$K(B -$B$I$N4X?t$,;H$o$l$k$Y$-$G$"$k$+$r;XDj$7$^$9!#(B +$B$b$7;MHVL\$NMWAG$,B8:_$7$F$$$k$H!"$=$l$O%7%s%\%k$G$"$k$Y$-$G(B +$B$9(B---@dfn{$B7?MWAG(B} $B$G$9!#$3$NMWAG$O$3$N%9%3%"EPO?$,5-;v$K9gCW$9$k$+$I$&$+(B +$B$rD4$Y$k$N$K$I$N4X?t$,;H$o$l$k$Y$-$G$"$k$+$r;XDj$7$^$9!#(B @table @dfn @item From, Subject, References, Xref, Message-ID -$B$?$$$F$$$N%X%C%@!<$N7?$KBP$7$F!"(B@code{r} $B$H(B @code{R} ($B@55,I=8=(B) (regexp) -$B$d!"(B@code{s} $B$H(B @code{S} ($BJ8;zNs$N0lIt(B) (substring) $B7?!"(B@code{e} $B$H(B -@code{E} ($B@53N$J9gCW(B) (exact match)$B!"(B@code{w} ($B8l$N9gCW(B) (word match) $B7?(B -$B$,B8:_$7$^$9!#$b$7$3$NMWAG$,B8:_$7$J$$$H!"(Bgnus $B$OJ8;zNs$N0lIt$N9gCW$,MQ(B -$B$$$i$l$k$Y$-$G$"$k$H$_$J$7$^$9!#(B@code{R}$B!"(B@code{S}$B!"(B@code{E} $B$O9gCW$,BgJ8(B -$B;z$H>.J8;z$r6hJL$9$kJ}K!$G9T$o$l$k$H$$$&E@$GB>$N$b$N$H0[$J$j$^$9!#A4$F$N(B -$B$3$l$i$N0lJ8;z7?$OK\Ev$O(B @code{regexp}$B!"(B@code{exact}$B!"(B@code{word} $B7?$NC;(B -$B=L7A$G!"$b$7$=$&$7$?$$$H;W$($P$3$A$i$rBe$o$j$K;H$&;v$,$G$-$^$9!#(B +$B$?$$$F$$$N%X%C%@!<$N7?$KBP$7$F!"(B@code{r} $B$H(B @code{R} ($B@55,I=(B +$B8=(B) (regexp) $B$d!"(B@code{s} $B$H(B @code{S} ($BJ8;zNs$N0lIt(B) (substring) $B7?!"(B +@code{e} $B$H(B @code{E} ($B@53N$J9gCW(B) (exact match)$B!"(B +@code{w} ($B8l$N9gCW(B) (word match) $B7?$,B8:_$7$^$9!#$b$7$3$NMWAG$,B8:_$7$J(B +$B$$$H!"(Bgnus $B$OJ8;zNs$N0lIt$N9gCW$,MQ$$$i$l$k$Y$-$G$"$k$H$_$J$7$^$9!#(B +@code{R}, @code{S}, @code{E} $B$O9gCW$,BgJ8;z$H>.J8;z$r6hJL$9$kJ}K!$G9T$o(B +$B$l$k$H$$$&E@$GB>$N$b$N$H0[$J$j$^$9!#A4$F$N$3$l$i$N0lJ8;z7?$OK\Ev(B +$B$O(B @code{regexp}, @code{exact}, @code{word} $B7?$NC;=L7A$G!"$b$7$=$&$7$?$$(B +$B$H;W$($P$3$A$i$rBe$o$j$K;H$&;v$,$G$-$^$9!#(B @item Lines, Chars -$B$3$l$i$N(B2$B$D$N%X%C%@!<$O0c$C$?9gCW$N7?$r;H$$$^$9(B: @code{<}$B!"(B@code{>}$B!"(B -@code{=}$B!"(B@code{>=}$B!"(B@code{<=} $B$G$9!#(B +$B$3$l$i$NFs$D$N%X%C%@!<$O0c$C$?9gCW$N7?$r;H$$$^$9(B: @code{<}, @code{>}, @code{=}, @code{>=}, @code{<=} $B$G(B +$B$9!#(B $B$3$l$i$N=R8l$O$b$7(B @@ -15012,55 +15164,57 @@ Gnus $B$O0lHLE*$J%9%3%"%U%!%$%k$rFCDj$N%9%3%"%U%!%$%k8~$1$N$b$N$h$jA0$KE,(B (PREDICATE HEADER MATCH) @end example -$B$NI>2A$,(B @code{nil} $B$G$J$$$H!"??$H$J$j$^$9!#Nc$($P!">e5i9gCW(B -@code{("lines" 4 <)} (@pxref{Advanced Scoring}) $B$O7k2L$H$7$F0J2<$N<0$K$J(B -$B$j$^$9!#(B +$B$NI>2A$,(B @code{nil} $B$G$J$$$H!"??$H$J$j$^$9!#Nc$($P!">e5i9g(B +$BCW(B @code{("lines" 4 <)} (@pxref{Advanced Scoring}) $B$O7k2L$H$7$F0J2<$N<0(B +$B$K$J$j$^$9!#(B @lisp (< header-value 4) @end lisp $B$b$7$/$OB>$NJ}K!$K$7$^$7$g$&(B: @code{<} $B$r(B @code{Lines} $B$G(B 4 $B$r9gCW$H$7$F(B -$B;H$C$F$$$k$H$-$O!"5-;v$,(B4$B9T$h$j$b>/$J$$$H$-$K%9%3%"$,DI2C$5$l$^$9!#(B($B:.Mp(B -$B$7$F!"H?BP$G$O$J$$$+$H9M$(0W$$$G$9!#$G$b!"$=$&$G$O$J$$$N$G$9!#;d$,;W$&$K!#(B) - -$B9gCW$,(B @code{Lines} $B$G$J$5$l$F$$$k$H!"$$$/$D$+$N%P%C%/%(%s%I(B -(@code{nndir}$B$N$h$&$J$b$N(B) $B$O(B @code{Lines} $B%X%C%@!<$r:n@.$7$J$$$?$a$KA4(B -$B$F$N5-;v$,(B 0 $B9T$G$"$k$H$7$F07$o$l$k;v$K5$$rIU$1$F$/$@$5$$!#$3$l$O$b$7>/(B -$B$7$N9T$7$+$J$$5-;v$N%9%3%"$r2<$2$F$$$k$N$J$i!"JQ$J7k2L$,5/$3$jF@$k;v$K$J(B -$B$j$^$9!#(B +$B;H$C$F$$$k$H$-$O!"5-;v$,(B 4 $B9T$h$j$b>/$J$$$H$-$K%9%3%"$,DI2C$5$l$^$9!#(B($B:.(B +$BMp$7$F!"H?BP$G$O$J$$$+$H9M$(0W$$$G$9!#$G$b!"$=$&$G$O$J$$$N$G$9!#;d$,;W$&(B +$B$K!#(B) + +$B9gCW$,(B @code{Lines} $B$G$J$5$l$F$$$k$H!"$$$/$D$+$N%P%C%/%(%s(B +$B%I(B (@code{nndir}$B$N$h$&$J$b$N(B) $B$O(B @code{Lines} $B%X%C%@!<$r:n@.$7$J$$$?$a$K(B +$BA4$F$N5-;v$,(B 0 $B9T$G$"$k$H$7$F07$o$l$k;v$K5$$rIU$1$F$/$@$5$$!#$3$l$O$b$7(B +$B>/$7$N9T$7$+$J$$5-;v$N%9%3%"$r2<$2$F$$$k$N$J$i!"JQ$J7k2L$,5/$3$jF@$k;v$K(B +$B$J$j$^$9!#(B @item Date -Date ($BF|IU(B) $B%X%C%@!<$K$O(B3$B$D$N$J$s$H$J$/$P$+$2$F$$$k9gCW$N7?$,$"$j$^$9(B: -@code{before}$B!"(B@code{at}$B!"(B@code{after} $B$G$9!#;d$OK\Ev$K$3$l$,LrN)$D$h$&(B +Date ($BF|IU(B) $B%X%C%@!<$K$O;0$D$N$J$s$H$J$/$P$+$2$F$$$k9gCW$N7?$,$"$j$^$9(B: +@code{before}, @code{at}, @code{after} $B$G$9!#;d$OK\Ev$K$3$l$,LrN)$D$h$&(B $B$J5!2q$rA[A|$G$-$J$$$N$G$9$,!"$3$N4X?t$rDs6!$7$J$$$N$b$J$s$H$J$/$P$+$2$F(B $B$$$^$9!#$=$&$7$?>l9g$N$?$a$K$"$k$N$G$9!#$$$DI,MW$K$J$k$+$OC/$K$b$o$+$j$^(B -$B$;$s!#E>$P$L@h$N>s$G$9!#0lEY>F$1$k$H(B2$BEYCQ$:$+$7$$!"$G$9!#K\$r%+%P!<$GH=(B -$BCG$7$F$O9T$1$^$;$s!#:G=i$NF|$K@-9T0Y$r9T$C$F$$$O9T$1$^$;$s!#(B ($B$7$+$7!";d(B +$B$;$s!#E>$P$L@h$N>s$G$9!#0lEY>F$1$k$HFsEYCQ$:$+$7$$!"$G$9!#K\$r%+%P!<$GH=(B +$BCG$7$F$O9T$1$^$;$s!#:G=i$NF|$K@-9T0Y$r9T$C$F$$$O9T$1$^$;$s!#(B($B$7$+$7!";d(B $B$O>/$J$/$H$b0l?M!"0zMQ$7$^$9$,!"(B``$B$3$N4X?t$O7g$+$;$J$$$b$N$G$"$k;v$,$o$+$C(B $B$?(B'' $B$H8@$C$??M$,F~$k$HJ9$$$F$$$^$9!#(B) @cindex ISO8601 @cindex date $B$b$C$HLrN)$D9gCW$N7?$O(B @code{$B@55,I=8=(B} $B$G$9!#$=$l$K$h$C$FF|IUJ8;zNs$K@5(B -$B5,I=8=$rMQ$$$F9gCW$5$;$k;v$,$G$-$^$9!#F|IU$O$^$:(B ISO8601 $BC;=LMM<0(B -(compact format) $B$KI8=`2=$5$l$^$9(B---@var{YYYYMMDD}@code{T}@var{HHMMSS} -$B$G$9!#Nc$($P!"$b$7A4$F$NG/$N(B4$B7n(B1$BF|$KEj9F$5$l$?A4$F$N5-;v$K$,<#$5$;$?$$$N(B -$B$G$"$l$P!"(B@samp{....0401.........} $B$r9gCWJ8;zNs$H$7$F;H$&;v$,$G$-$^$9!#(B -($BF|IU$O85!9$NI8=`;~$GJ]B8$5$l$F$$$^$9$N$G!"$=$N5-;v$,Ej9F$5$l$?$H$3$m$G(B4 -$B7n(B1$BF|$KEj9F$5$l$?5-;v$K9gCW$9$k;v$KCm0U$7$F$/$@$5$$!#I8=`;~$O0l2H$K$H$C(B -$B$FHs>o$KM-1W$J3Z$7$_$G$7$g$&!)(B) +$B5,I=8=$rMQ$$$F9gCW$5$;$k;v$,$G$-$^$9!#F|IU$O$^$:(B ISO8601 $BC;=LMM(B +$B<0(B (compact format) $B$KI8=`2=$5$l$^(B +$B$9(B---@var{YYYYMMDD}@code{T}@var{HHMMSS} $B$G$9!#Nc$($P!"$b$7A4$F$NG/(B +$B$N(B 4$B7n(B1$BF|(B $B$KEj9F$5$l$?A4$F$N5-;v$K$,<#$5$;$?$$$N$G$"$l$P!"(B +@samp{....0401.........} $B$r9gCWJ8;zNs$H$7$F;H$&;v$,$G$-$^$9!#(B($BF|IU$O85!9(B +$B$NI8=`;~$GJ]B8$5$l$F$$$^$9$N$G!"$=$N5-;v$,Ej9F$5$l$?$H$3$m$G(B 4$B7n(B1$BF|(B $B$KEj(B +$B9F$5$l$?5-;v$K9gCW$9$k;v$KCm0U$7$F$/$@$5$$!#I8=`;~$O0l2H$K$H$C$FHs>o$KM-(B +$B1W$J3Z$7$_$G$7$g$&(B?) @item Head, Body All -$B$3$l$i$N(B3$B$D$N9gCW$N%-!<$O(B @code{From} $B%X%C%@!<(B ($B$J$I(B) $B$HF1$89gCW$N7?$r;H(B -$B$$$^$9!#(B +$B$3$l$i$N;0$D$N9gCW$N%-!<$O(B @code{From} $B%X%C%@!<(B ($B$J$I(B) $B$HF1$89gCW$N7?$r(B +$B;H$$$^$9!#(B @item Followup $B$3$N9gCW$N%-!<$O>/$7FCJL$G!"$=$l$O(B @code{From} $B%X%C%@!<$K9gCW$7!"9gCW$7(B $B$?5-;v$@$1$G$J$/$=$N5-;v$X$NA4$F$N%U%)%m!<%"%C%W$N%9%3%"$K$b1F6A$7$^$9!#(B $B$3$l$O$?$H$($P!"$"$J$?<+?H$N5-;v$X$N%U%)%m!<%"%C%W$N%9%3%"$rA}$d$7$?$j!"(B $BNI$/CN$i$l$?LdBj;y$X$N%U%)%m!<%"%C%W5-;v$N%9%3%"$r2<$2$?$j$9$k$N$K;H$o$l(B -$B$^$9!#(B@code{From} $B%X%C%@!<$,;H$&$N$HF1$87?$N9gCW$r;H$$$^$9!#(B ($B$3$N9gCW%-!<(B +$B$^$9!#(B@code{From} $B%X%C%@!<$,;H$&$N$HF1$87?$N9gCW$r;H$$$^$9!#(B($B$3$N9gCW%-!<(B $B$r;H$&$H!"%U%!%$%k(B @file{ADAPT} $B$r:n$k;v$K$J$j$^$9!#(B) @item Thread @@ -15068,12 +15222,12 @@ Date ($BF|IU(B) $B%X%C%@!<$K$O(B3$B$D$N$J$s$H$J$/$P$+$2$F$$$k9gCW$N7?$,$"$j @code{Message-ID} @var{x} $B$G;O$^$C$F$$$k(B ($BI{(B)$B%9%l%C%I$K%9%3%"$rIU$1$?$$(B $B$N$G$"$l$P!"(B@samp{thread} $B9gCW$rIU$12C$($^$9!#$3$l$O(B @code{Reference} $B%X%C(B $B%@!<$K(B @var{x} $B$r;}$D$=$l$>$l$N5-;v$K?7$7$$(B @samp{thread} $B9gCW$rDI2C$7$^(B -$B$9!#(B ($B$3$l$i$N?7$7$$(B @samp{thread} $B9gCW$O$3$l$i$N9gCW$9$k5-;v$N(B -@code{Message-ID} $B$r;H$$$^$9!#(B) $B$3$l$O%9%l%C%I$N$$$/$D$+$N5-;v$,40A4$J(B -@code{References} $B%X%C%@!<$r;}$C$F$$$J$+$C$?$H$7$F$b!"%9%l%C%IA4BN$N%9%3(B -$B%"$r>e$2(B/$B2<$2$G$-$k;v$rJ]>Z$7$^$9!#$3$l$r;H$&$H!"%9%l%C%I$N5-;v$K7hDjE*(B -$B$G$J$$%9%3%"$,IU$/$+$b$7$l$J$$$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B ($B$3$N9gCW%-!<(B -$B$r;H$&$H!"%U%!%$%k(B @file{ADAPT} $B$r:n$k;v$K$J$j$^$9!#(B) +$B$9!#(B($B$3$l$i$N?7$7$$(B @samp{thread} $B9gCW$O$3$l$i$N9gCW$9$k5-;v(B +$B$N(B @code{Message-ID} $B$r;H$$$^$9!#(B) $B$3$l$O%9%l%C%I$N$$$/$D$+$N5-;v$,40A4(B +$B$J(B @code{References} $B%X%C%@!<$r;}$C$F$$$J$+$C$?$H$7$F$b!"%9%l%C%IA4BN$N(B +$B%9%3%"$r>e$2(B/$B2<$2$G$-$k;v$rJ]>Z$7$^$9!#$3$l$r;H$&$H!"%9%l%C%I$N5-;v$K7h(B +$BDjE*$G$J$$%9%3%"$,IU$/$+$b$7$l$J$$$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B($B$3$N9g(B +$BCW%-!<$r;H$&$H!"%U%!%$%k(B @file{ADAPT} $B$r:n$k;v$K$J$j$^$9!#(B) @end table @end enumerate @@ -15102,8 +15256,9 @@ Date ($BF|IU(B) $B%X%C%@!<$K$O(B3$B$D$N$J$s$H$J$/$P$+$2$F$$$k9gCW$N7?$,$"$j $B$9!#(B @item exclude-files -$B$3$NEPO?$N$G$"$k$Y$-$G$9!#$3$l$i$N%U%!%$%k$O2?(B -$B$i$+$NM}M3$GIaDL$OFI$_9~$^$l$k$h$&$K$J$C$F$$$?$H$7$F$b!"FI$_9~$^$l$^$;$s!#(B +$B$3$NEPO?$N$G$"$k$Y$-$G$9!#$3$l$i$N%U%!%$%k(B +$B$O2?$i$+$NM}M3$GIaDL$OFI$_9~$^$l$k$h$&$K$J$C$F$$$?$H$7$F$b!"FI$_9~$^$l$^(B +$B$;$s!#(B @item eval $B$3$NEPO?$NCM$O(B @code{$BI>2A(B} $B$5$l$^$9!#$3$NMWAG$OA4BNE*%9%3%"%U%!%$%k$r07$C(B @@ -15118,10 +15273,10 @@ Date ($BF|IU(B) $B%X%C%@!<$K$O(B3$B$D$N$J$s$H$J$/$P$+$2$F$$$k9gCW$N7?$,$"$j @item orphan $B$3$NEPO?$NCM$O?t;z$G$"$k$Y$-$G$9!#?F5-;v$r;}$?$J$$5-;v$O%9%3%"$K$3$N?t;z(B $B$,2C$($i$l$^$9!#(B@samp{comp.lang.c} $B$N$h$&$JNL$NB?$$%K%e!<%9%0%k!<%W$rDI(B -$B$$$+$1$F$$$k$H$7$F$/$@$5$$!#$*$=$i$/(B2,3$B$N%9%l%C%I$H?7$7$$%9%l%C%I$@$1$r(B -$BDI$$$?$$$G$7$g$&!#(B +$B$$$+$1$F$$$k$H$7$F$/$@$5$$!#$*$=$i$/Fs!";0$N%9%l%C%I$H?7$7$$%9%l%C%I$@$1(B +$B$rDI$$$?$$$G$7$g$&!#(B -$B0J2<$N(B2$B$D$N%9%3%"%U%!%$%kEPO?$K$h$C$F$=$l$r$9$k;v$,$G$-$^$9(B: +$B0J2<$N;0$D$N%9%3%"%U%!%$%kEPO?$K$h$C$F$=$l$r$9$k;v$,$G$-$^$9(B: @example (orphan -500) @@ -15133,20 +15288,22 @@ Date ($BF|IU(B) $B%X%C%@!<$K$O(B3$B$D$N$J$s$H$J$/$P$+$2$F$$$k9gCW$N7?$,$"$j $B$h$C$F(B)$B!";D$j$rL5;k(B (@kbd{C y}) $B$7$^$9!#/$7B8:_$7$9$kNL$NB?$$%0%k!<%W$N$?$a$K$"$j$^$9!#(B +$B$9$J$o$A(B---orphan ($B8I;y(B) $B%9%3%"%"%H%`$OIaDL$N%9%3%"K!B'$G$OH/8+$G$-$J$$(B +$B6=L#?<$$%9%l%C%I$,>/$7B8:_$7$9$kNL$NB?$$%0%k!<%W$N$?$a$K$"$j$^$9!#(B @item adapt $B$3$NEPO?$OE,1~%9%3%"$r@)8f$7$^$9!#$b$7$3$l$,(B @code{t} $B$G$"$k$H!"=i4|@_Dj(B $B$NE,1~%9%3%"K!B'$,;H$o$l$^$9!#$b$7$3$l$,(B @code{ignore} $B$G$"$k$H!"$3$N%0(B $B%k!<%W$K$OE,1~%9%3%"$O$N$b$N$G$"$l$P!"=i4|@_Dj$NE,1~%9%3%"K!B'$,;H$o$l$^(B -$B$9!#$?$$$F$$$N%0%k!<%W$KE,1~%9%3%"$r;H$$$?$$$N$G$"$l$P!"(B +$B1~%9%3%"K!B'$H$7$FMQ$$$i$l$^$9!#$b$7$=$l$,B8:_$7$J$$$+!"(B +@code{t} $B$d(B @code{ignore} $B$G$J$$B>$N$b$N$G$"$l$P!"=i4|@_Dj$NE,1~%9%3%"K!(B +$BB'$,;H$o$l$^$9!#$?$$$F$$$N%0%k!<%W$KE,1~%9%3%"$r;H$$$?$$$N$G$"$l$P!"(B @code{gnus-use-adaptive-scorint} $B$r(B @code{t} $B$K@_Dj$7!"(B@code{(adapt ignore)} $B$rE,1~%9%3%"$r$7$?$/$J$$%0%k!<%W$KA^F~$9$k$G$7$g$&!#>/$7$N%0%k!<(B -$B%W$G$@$1E,1~%9%3%"$r9T$$$?$$$N$G$"$l$P!"(B@code{gnus-use-adaptive-scoring} -$B$r(B @code{nil} $B$K@_Dj$7!"(B@code{(adaptive t)} $B$r$=$l$r9T$$$?$$%0%k!<%W$N%9(B -$B%3%"%U%!%$%k$KA^F~$9$k$G$7$g$&!#(B +$B%W$G$@$1E,1~%9%3%"$r9T$$$?$$$N$G$"$l$P!"(B +@code{gnus-use-adaptive-scoring} $B$r(B @code{nil} $B$K@_Dj$7!"(B +@code{(adaptive t)} $B$r$=$l$r9T$$$?$$%0%k!<%W$N%9%3%"%U%!%$%k$KA^F~$9$k$G(B +$B$7$g$&!#(B @item adaptive-file $BA4$F$NE,1~%9%3%"EPO?$O$3$NEPO?$K$h$C$FL>$E$1$i$l$?%U%!%$%k$KF~$j$^$9!#$=(B @@ -15156,14 +15313,13 @@ ignore)} $B$rE,1~%9%3%"$r$7$?$/$J$$%0%k!<%W$KA^F~$9$k$G$7$g$&!#>/$7$N%0%k!<(B @item local @cindex local variables -$B$3$NEPO?$NCM$O(B @code{(VAR VALUE)} $BBP$N%j%9%H$G$"$k$Y$-$G$9!#$=$l$>$l$N(B -@var{var} $B$O8=:_$N35N,%P%C%U%!$N%P%C%U%!8GM-$K$J$j!";XDj$5$l$?CM(B (value) -$B$K@_Dj$5$l$^$9!#$3$l$OJXMx$J!"$b$7>/$7JQ$@$H$7$F$b!"%U%C%/$r$"$^$j9%$^$J(B -$B$$$$$/$D$+$N%0%k!<%W$GJQ?t$r@_Dj$9$kJ}K!$G$9!#(B@var{value} $B$OI>2A$5$l$J$$(B -$B;v$KCm0U$7$F$/$@$5$$!#(B +$B$3$NEPO?$NCM$O(B @code{(VAR VALUE)} $BBP$N%j%9%H$G$"$k$Y$-$G$9!#$=$l$>$l(B +$B$N(B @var{var} $B$O8=:_$N35N,%P%C%U%!$N%P%C%U%!8GM-$K$J$j!";XDj$5$l$?(B +$BCM(B (value) $B$K@_Dj$5$l$^$9!#$3$l$OJXMx$J!"$b$7>/$7JQ$@$H$7$F$b!"%U%C%/$r(B +$B$"$^$j9%$^$J$$$$$/$D$+$N%0%k!<%W$GJQ?t$r@_Dj$9$kJ}K!$G$9!#(B@var{value} $B$O(B +$BI>2A$5$l$J$$;v$KCm0U$7$F$/$@$5$$!#(B @end table - @node Score File Editing @section $B%9%3%"%U%!%$%kJT=8(B @@ -15178,8 +15334,8 @@ ignore)} $B$rE,1~%9%3%"$r$7$?$/$J$$%0%k!<%W$KA^F~$9$k$G$7$g$&!#>/$7$N%0%k!<(B @item C-c C-c @kindex C-c C-c ($B%9%3%"(B) @findex gnus-score-edit-done -$B$"$J$?$,9T$C$?JQ99$rJ]B8$7$F35N,%P%C%U%!$KLa$j$^$9(B -(@code{gnus-score-edit-done})$B!#(B +$B$"$J$?$,9T$C$?JQ99$rJ]B8$7$F35N,%P%C%U%!$KLa$j$^(B +$B$9(B (@code{gnus-score-edit-done})$B!#(B @item C-c C-d @kindex C-c C-d ($B%9%3%"(B) @@ -15206,7 +15362,6 @@ ignore)} $B$rE,1~%9%3%"$r$7$?$/$J$$%0%k!<%W$KA^F~$9$k$G$7$g$&!#>/$7$N%0%k!<(B $B35N,%P%C%U%!$G$O!"(B@kbd{V f} $B$d(B @kbd{V e} $B$N$h$&$JL?Na$G%9%3%"%U%!%$%k$N(B $BJT=8$r;O$a$k;v$,$G$-$^$9!#(B - @node Adaptive Scoring @section $BE,1~@-%9%3%"(B @cindex adaptive scoring @@ -15217,110 +15372,101 @@ gnus $B$K$O$3$l$i$rA4$F<+F0E*$K(B --- $B$^$k$GKbK!$G$b;H$C$?$h$&$K:n@.(B $B$+$J!#(B @vindex gnus-use-adaptive-scoring -$B5-;v$rFI$s$@$H$-!"$"$k$$$O5-;v$K4{FI$N0u$r$D$1$?$H$-!"5-;v$r:o=|(B -$B$7$?$H$-$K!"$=$N0u$r;D$7$F$*$$$F$/$@$5$$!#%0%k!<%W$+$i=P$k$H$-$K(B -gnus $B$O!"$=$l$i$N0u$NJU$j$rSL$.2s$j!"2?$N0u$r8+$D$1$?$+$K0MB8$7(B -$B$F%9%3%"MWAG$rDI2C$7$^$9!#$3$N5!G=$O(B -@code{gnus-use-adaptive-scoring} $B$r(B @code{t} $B$+(B @code{(line)} $B$K(B -$B@_Dj$9$k$3$H$GM-8z$K$J$j$^$9!#$b$7%9%3%"$r!"I=Bj$K8=$l$k8DJL$NC1(B -$B8l$r$b$H$KE,1~$5$;$?$1$l$P!"$3$NJQ?t$r(B @code{(word)} $B$K@_Dj$7$F(B -$B$/$@$5$$!#N>J}$NE,1~J}K!$r;H$$$?$1$l$P!"$3$NJQ?t$r(B@code{(word -line)} $B$K@_Dj$7$F$/$@$5$$!#(B +$B5-;v$rFI$s$@$H$-!"$"$k$$$O5-;v$K4{FI$N0u$r$D$1$?$H$-!"5-;v$r:o=|$7$?$H$-(B +$B$K!"$=$N0u$r;D$7$F$*$$$F$/$@$5$$!#%0%k!<%W$+$i=P$k$H$-$K(Bgnus $B$O!"$=$l$i(B +$B$N0u$NJU$j$rSL$.2s$j!"2?$N0u$r8+$D$1$?$+$K0MB8$7$F%9%3%"MWAG$rDI2C$7$^$9!#(B +$B$3$N5!G=(B +$B$O(B @code{gnus-use-adaptive-scoring} $B$r(B @code{t} $B$+(B @code{(line)} $B$K@_Dj(B +$B$9$k$3$H$GM-8z$K$J$j$^$9!#$b$7%9%3%"$r!"I=Bj$K8=$l$k8DJL$NC18l$r$b$H$KE,(B +$B1~$5$;$?$1$l$P!"$3$NJQ?t$r(B @code{(word)} $B$K@_Dj$7$F$/$@$5$$!#N>J}$NE,1~(B +$BJ}K!$r;H$$$?$1$l$P!"$3$NJQ?t$r(B@code{(wordline)} $B$K@_Dj$7$F$/$@$5$$!#(B @vindex gnus-default-adaptive-score-alist -@code{gnus-default-adaptive-score-alist} $BJQ?t$r%+%9%?%^%$%:$9$k(B -$B$3$H$G!"%9%3%"IU$1$N=hM}$r40A4$K@)8f$G$-$^$9!#Nc$($P!"$3$N$h$&$J(B -$B46$8$K$J$j$^$9!#(B +@code{gnus-default-adaptive-score-alist} $BJQ?t$r%+%9%?%^%$%:$9$k$3$H$G!"(B +$B%9%3%"IU$1$N=hM}$r40A4$K@)8f$G$-$^$9!#Nc$($P!"$3$N$h$&$J46$8$K$J$j$^$9!#(B @lisp -(defvar gnus-default-adaptive-score-alist - '((gnus-unread-mark) - (gnus-ticked-mark (from 4)) - (gnus-dormant-mark (from 5)) - (gnus-del-mark (from -4) (subject -1)) - (gnus-read-mark (from 4) (subject 2)) - (gnus-expirable-mark (from -1) (subject -1)) - (gnus-killed-mark (from -1) (subject -3)) - (gnus-kill-file-mark) - (gnus-ancient-mark) - (gnus-low-score-mark) - (gnus-catchup-mark (from -1) (subject -1)))) +(setq gnus-default-adaptive-score-alist + '((gnus-unread-mark) + (gnus-ticked-mark (from 4)) + (gnus-dormant-mark (from 5)) + (gnus-del-mark (from -4) (subject -1)) + (gnus-read-mark (from 4) (subject 2)) + (gnus-expirable-mark (from -1) (subject -1)) + (gnus-killed-mark (from -1) (subject -3)) + (gnus-kill-file-mark) + (gnus-ancient-mark) + (gnus-low-score-mark) + (gnus-catchup-mark (from -1) (subject -1)))) @end lisp -$B8+$F$*J,$+$j$N$h$&$K!"$3$NO"A[%j%9%H$N3FMWAG$O!"%-!<$H$7$F0u(B ($BJQ(B -$B?tL>$+$b$7$/$O(B ``$BK\Ev$N(B'' $B0u(B --- $B$D$^$jJ8;z(B)$B$r;}$A$^$9!#$3$N%-!<(B -$B$N8e$K$OG$0U$N?t$N%X%C%@!<(B/$B%9%3%"$NAH$,B3$-$^$9!#$b$7$=$N%-!<$N(B -$B8e$K%X%C%@!<(B/$B%9%3%"$NAH$,0l$D$b$J$1$l$P!"$=$N%-!<$,5-;v$N0u$H$7(B -$B$F$D$$$F$$$k5-;v$KBP$7$F$OE,1~@-%9%3%"$Oe(B -$B5-$NNc$G$O!"(B@code{gnus-unread-mark} $B$,$D$$$F$$$k5-;v$OE,1~@-%9%3(B -$B%"$NEPO?9`L\$K$O$J$j$^$;$s!#(B - -$B3F5-;v$O$?$@0l$D$N0u$7$+;}$AF@$J$$$N$G!"$=$l$>$l$N5-;v$K$O$3$l$i(B -$B$N5,B'$N$&$A$?$@0l$D$7$+E,MQ$5$l$^$;$s!#(B - -@code{gnus-del-mark} $B$rNc$KC5n(B ($B%a!<%k(B) $B%0%k!<%W(B (@pxref{Expiring Mail}) -$B$,$"$l$P!"4{FI5-;v$K$OA4$F(B @samp{E} $B0u$,$D$1$i$l$^$9!#$3$l$O$*$=(B -$B$i$/!"E,1~@-%9%3%"IU$1$r$A$g$C$H$P$+$jIT2DG=$K$9$k$N$G!"<+F04|8B(B -$B@Z$l>C5n$HE,1~@-%9%3%"$O0l=o$K$O$&$^$/$d$C$F$$$1$^$;$s!#(B - -$B%9%3%"$r$D$1$i$l$k%X%C%@!<$K$O(B @code{from}$B!"(B @code{subject}$B!"(B -@code{message-id}$B!"(B @code{references}$B!"(B @code{xref}$B!"(B -@code{lines}$B!"(B@code{chars}$B!"(B@code{date} $B$,$"$j$^$9!#$5$i$K(B -@code{followup} $B$K$b%9%3%"IU$1$G$-$^$9!#$3$l$O8=:_$N5-;v$N(B -@code{Message-ID} $B$r;HMQ$7$F(B @code{References} $B%X%C%@!<$K%^%C%A!"(B -$B$9$J$o$A$3$l$KB3$$$?%9%l%C%I$K%^%C%A$9$kE,1~@-%9%3%"EPO?$r:n@.$7(B -$B$^$9!#(B - -$B$^$?(B @code{thread} $B$K$b%9%3%"IU$1$9$k$3$H$,$G$-$^$9!#$3$l$O%9%l%C(B -$B%ICf$NA4$F$N5-;v$K%9%3%"IU$1$7$h$&$H$7$^$9!#(B@code{thread} $B$N%^%C(B -$B%A$O!"(B@code{Message-ID} $B$r;H$C$F5-;v$N(B @code{References} $B%X%C%@!<(B -$B$K%^%C%A$5$;$^$9!#%^%C%A$,5/$3$C$?$i$=$N5-;v$N(B @code{Message-ID} -$B$,(B @code{thread} $B5,B'$KDI2C$5$l$^$9!#(B($B$A$g$C$H9M$($F$_$F$/$@$5$$!#(B -$B8e$GF,DKLt$rFsN3$*4+$a$7$H$-$^$9$,(B) - -$B$3$N5!9=$r;H$&$J$i$P!"$H$-$I$-5-;v$r4{FI$K$7$F$7$^$&>.$5$JJQ99$r(B -$BHr$1$k$?$a$K!"%9%3%"%U%!%$%k$N(B @code{mark} $B%"%H%`$r2?$+>.$5$$CM(B ---- $B$3$H$K$h$l$P(B -300 $B$/$i$$$K@_Dj$7$F$*$$$?J}$,NI$$$G$9!#(B - -$BE,1~@-%9%3%"$r0l=54V$+$=$3$i;H$C$F$/$k$H!"(Bgnus $B$O$=$lAj1~$KD465(B -$B$5$l!"$"$J$?$,2?$b8@$o$J$/$F$b!"$"$J$?$N9%$-$JEj9FC5n$9$k$h$&$K$J$k$O$:$G$9!#(B - -$B$I$N%0%k!<%W$K$*$$$FE,1~@-%9%3%"$r:nF0$5$;$k$+$O!"%9%3%"%U%!%$%k(B -(@pxref{Score File Format}) $B$r;H$&$3$H$K$h$C$F@)8f$G$-$^$9!#$^$?(B -$B$3$l$r;H$C$F!"0c$C$?%0%k!<%W$KBP$7$F0c$C$?5,B'$r;H$&$h$&$K$b$G$-(B -$B$^$9!#(B +$B8+$F$*J,$+$j$N$h$&$K!"$3$NO"A[%j%9%H$N3FMWAG$O!"%-!<$H$7$F0u(B ($BJQ?tL>$+$b(B +$B$7$/$O(B ``$BK\Ev$N(B'' $B0u(B --- $B$D$^$jJ8;z(B)$B$r;}$A$^$9!#$3$N%-!<$N8e$K$OG$0U$N?t(B +$B$N%X%C%@!<(B/$B%9%3%"$NAH$,B3$-$^$9!#$b$7$=$N%-!<$N8e$K%X%C%@!<(B/$B%9%3%"$NAH$,(B +$B0l$D$b$J$1$l$P!"$=$N%-!<$,5-;v$N0u$H$7$F$D$$$F$$$k5-;v$KBP$7$F$OE,1~@-%9(B +$B%3%"$Oe5-$NNc$G$O!"(B@code{gnus-unread-mark} $B$,$D$$(B +$B$F$$$k5-;v$OE,1~@-%9%3%"$NEPO?9`L\$K$O$J$j$^$;$s!#(B + +$B3F5-;v$O$?$@0l$D$N0u$7$+;}$AF@$J$$$N$G!"$=$l$>$l$N5-;v$K$O$3$l$i$N5,B'$N(B +$B$&$A$?$@0l$D$7$+E,MQ$5$l$^$;$s!#(B + +@code{gnus-del-mark} $B$rNc$KC5n(B ($B%a!<%k(B) $B%0%k!<%W(B (@pxref{Expiring Mail})$B$,$"$l$P!"(B +$B4{FI5-;v$K$OA4$F(B @samp{E} $B0u$,$D$1$i$l$^$9!#$3$l$O$*$=$i$/!"E,1~@-%9%3%"(B +$BIU$1$r$A$g$C$H$P$+$jIT2DG=$K$9$k$N$G!"<+F04|8B@Z$l>C5n$HE,1~@-%9%3%"$O0l(B +$B=o$K$O$&$^$/$d$C$F$$$1$^$;$s!#(B + +$B%9%3%"$r$D$1$i$l$k%X%C%@!<$K(B +$B$O(B @code{from}, @code{subject}, @code{message-id}, @code{references}, @code{xref}, @code{lines}, @code{chars}, @code{date} $B$,(B +$B$"$j$^$9!#$5$i$K(B @code{followup} $B$K$b%9%3%"IU$1$G$-$^$9!#$3$l$O8=:_$N5-(B +$B;v$N(B @code{Message-ID} $B$r;HMQ$7$F(B @code{References} $B%X%C%@!<$K%^%C%A!"$9(B +$B$J$o$A$3$l$KB3$$$?%9%l%C%I$K%^%C%A$9$kE,1~@-%9%3%"EPO?$r:n@.$7$^$9!#(B + +$B$^$?(B @code{thread} $B$K$b%9%3%"IU$1$9$k$3$H$,$G$-$^$9!#$3$l$O%9%l%C%ICf$N(B +$BA4$F$N5-;v$K%9%3%"IU$1$7$h$&$H$7$^$9!#(B@code{thread} $B$N%^%C%A$O!"(B +@code{Message-ID} $B$r;H$C$F5-;v$N(B @code{References} $B%X%C%@!<$K%^%C%A$5$;(B +$B$^$9!#%^%C%A$,5/$3$C$?$i$=$N5-;v$N(B @code{Message-ID} $B$,(B @code{thread} $B5,(B +$BB'$KDI2C$5$l$^$9!#(B($B$A$g$C$H9M$($F$_$F$/$@$5$$!#8e$GF,DKLt$rFsN3$*4+$a$7(B +$B$H$-$^$9$,(B) + +$B$3$N5!9=$r;H$&$J$i$P!"$H$-$I$-5-;v$r4{FI$K$7$F$7$^$&>.$5$JJQ99$rHr$1$k$?(B +$B$a$K!"%9%3%"%U%!%$%k$N(B @code{mark} $B%"%H%`$r2?$+>.$5$$CM(B --- $B$3$H$K$h$l(B +$B$P(B -300 $B$/$i$$$K@_Dj$7$F$*$$$?J}$,NI$$$G$9!#(B + +$BE,1~@-%9%3%"$r0l=54V$+$=$3$i;H$C$F$/$k$H!"(Bgnus $B$O$=$lAj1~$KD465$5$l!"$"(B +$B$J$?$,2?$b8@$o$J$/$F$b!"$"$J$?$N9%$-$JEj9FC5n$9$k$h$&$K$J$k$O$:$G$9!#(B + +$B$I$N%0%k!<%W$K$*$$$FE,1~@-%9%3%"$r:nF0$5$;$k$+$O!"%9%3%"%U%!%$(B +$B%k(B (@pxref{Score File Format}) $B$r;H$&$3$H$K$h$C$F@)8f$G$-$^$9!#$^$?$3$l(B +$B$r;H$C$F!"0c$C$?%0%k!<%W$KBP$7$F0c$C$?5,B'$r;H$&$h$&$K$b$G$-$^$9!#(B @vindex gnus-adaptive-file-suffix -$BE,1~@-%9%3%"EPO?9`L\$O!"%0%k!<%WL>$K(B -@code{gnus-adaptive-file-suffix} $B$rIU2C$7$?L>A0$N%U%!%$%k$KF~$l(B -$B$i$l$^$9!#=i4|@_DjCM$O(B @samp{ADAPT} $B$G$9!#(B +$BE,1~@-%9%3%"EPO?9`L\$O!"%0%k!<%WL>$K(B @code{gnus-adaptive-file-suffix} $B$r(B +$BIU2C$7$?L>A0$N%U%!%$%k$KF~$l$i$l$^$9!#=i4|@_DjCM$O(B @samp{ADAPT} $B$G$9!#(B @vindex gnus-score-exact-adapt-limit -$BE,1~@-%9%3%"$r9T$&$H$-$O!"ItJ,J8;zNs0lCW$d%U%!%8!<$J0lCW$r9T$C$?(B -$BJ}$,!"$*$=$i$/$[$H$s$I$N>l9g$K$*$$$FNI$$7k2L$,F@$i$l$k$G$7$g$&!#(B -$B$7$+$7!"%X%C%@!<$N0lCW$7$?ItJ,$,C;$$>l9g!"0U?^$KH?$9$k$h$&$JF0:n(B -$B$r$9$k2DG=@-$,Bg$-$/$J$k$N$G!"(B -@code{gnus-score-exact-adapt-limit} $B$h$jC;$$D9$5$7$+0lCW$7$J$$>l(B -$B9g$O40A40lCW$,9T$o$l$^$9!#$3$NJQ?t$,(B @code{nil} $B$G$"$l$P!"$3$NLd(B -$BBj$,5/$3$i$J$$$h$&$K>o$K40A40lCW$,9T$o$l$^$9!#(B +$BE,1~@-%9%3%"$r9T$&$H$-$O!"ItJ,J8;zNs0lCW$d%U%!%8!<$J0lCW$r9T$C$?J}$,!"$*(B +$B$=$i$/$[$H$s$I$N>l9g$K$*$$$FNI$$7k2L$,F@$i$l$k$G$7$g$&!#$7$+$7!"%X%C%@!<(B +$B$N0lCW$7$?ItJ,$,C;$$>l9g!"0U?^$KH?$9$k$h$&$JF0:n$r$9$k2DG=@-$,Bg$-$/$J$k(B +$B$N$G!"(B@code{gnus-score-exact-adapt-limit} $B$h$jC;$$D9$5$7$+0lCW$7$J$$>l9g(B +$B$O40A40lCW$,9T$o$l$^$9!#$3$NJQ?t$,(B @code{nil} $B$G$"$l$P!"$3$NLdBj$,5/$3$i(B +$B$J$$$h$&$K>o$K40A40lCW$,9T$o$l$^$9!#(B @vindex gnus-default-adaptive-word-score-alist -$B>e$G=R$Y$?$h$&$K!"8DJL$NC18l$KBP$7$F$b%X%C%@!l9g!"(B -@code{gnus-default-adaptive-word-score-alist} $BJQ?t$K$h$C$F!"3FC1(B -$B8l$KBP$7$F$"$k0u$X$I$s$J%9%3%"$rM?$($k$+$r;XDj$7$^$9!#(B +$B>e$G=R$Y$?$h$&$K!"8DJL$NC18l$KBP$7$F$b%X%C%@!l9g!"(B +@code{gnus-default-adaptive-word-score-alist} $BJQ?t$K$h$C$F!"3FC18l$KBP$7(B +$B$F$"$k0u$X$I$s$J%9%3%"$rM?$($k$+$r;XDj$7$^$9!#(B @lisp (setq gnus-default-adaptive-word-score-alist @@ -15331,24 +15477,24 @@ line)} $B$K@_Dj$7$F$/$@$5$$!#(B @end lisp $B$3$l$,=i4|@_DjCM$G$9!#C18l$KBP$9$kE,1~$rM-8z$K$9$k$H!"(B -@code{gnus-read-mark} $B$N0u$N$D$$$?5-;v$NI=Bj$K8=$l$kA4$F$NC18l$,!"(B -$B%9%3%"$K(B 30 $BE@DI2C$9$k$H$$$&%9%3%"5,B'$r@8$_=P$7$^$9!#(B +@code{gnus-read-mark} $B$N0u$N$D$$$?5-;v$NI=Bj$K8=$l$kA4$F$NC18l$,!"%9%3%"(B +$B$K(B 30 $BE@DI2C$9$k$H$$$&%9%3%"5,B'$r@8$_=P$7$^$9!#(B @vindex gnus-default-ignored-adaptive-words @vindex gnus-ignored-adaptive-words -@code{gnus-default-ignored-adaptive-words} $B$N%j%9%H$K8=$l$kC18l(B -$B$OL5;k$5$l$^$9!#L5;k$7$?$$C18l$rDI2C$7$?$$$H$-$O!"$3$NJQ?t$G$O$J(B +@code{gnus-default-ignored-adaptive-words} $B$N%j%9%H$K8=$l$kC18l$OL5;k$5(B +$B$l$^$9!#L5;k$7$?$$C18l$rDI2C$7$?$$$H$-$O!"$3$NJQ?t$G$O$J(B $B$/(B @code{gnus-ignored-adaptive-words} $B%j%9%H$NJ}$r;H$C$F$/$@$5$$!#(B @vindex gnus-adaptive-word-syntax-table -$B%9%3%"IU$1$,=*N;$7$?$H$-!"(B@code{gnus-adaptive-word-syntax-table} -$B$NJ8K!I=$,$=$N1F6A$r.(B -$B$5$/$J$k$3$H$O$"$j$^$;$s!#=i4|@_DjCM$O(B @code{nil} $B$G$9!#(B +$B$b$7(B @code{gnus-adaptive-word-minimum} $B$K?t;z$,@_Dj$5$l$F$$$k$H!"C18lE,(B +$B1~@-%9%3%"IU$1=hM}$K$*$$$F!"5-;v$N%9%3%"$,$3$N?t;z$h$j$b>.$5$/$J$k$3$H$O(B +$B$"$j$^$;$s!#=i4|@_DjCM$O(B @code{nil} $B$G$9!#(B @vindex gnus-adaptive-word-no-group-words @code{gnus-acaptive-word-no-group-words} $B$,(B @code{t} $B$K@_Dj$5$l$F$$$k$H!"(B @@ -15356,44 +15502,41 @@ gnus $B$O%0%k!<%WL>$NA4$F$N8l$K$D$$$F!"C18lE,1~@-%9%3%"$r$7$^$;$s!#$[$H$s(B $B$I$NI=Bj$,(B @samp{emacs} $B$H$$$&8l$r4^$s$G$$$k(B @samp{comp.editor.emacs} $B$N(B $B$h$&$J%0%k!<%W$GJXMx$G$9!#(B -$B$3$N5!9=$r$7$P$i$/;H$C$F$_$?8e$K$O!"$"$J$?$,$I$s$JC18l$,9%$-$G(B -$B$I$s$JC18l$,7y$$$+$r!"$3$N5,B'$rDL$7$F?GCG$9$kMxMQo$K]$G$O!"$3$l(B -$B$O8=>u$G$OA4$/;H$$J*$K$J$i$J$$$h$&$K;W$($^$9!#$3$l$r$b$C$H;H$($k(B -$B$h$&$K$9$k$?$a$K$O!"(B($B$h$j87L)$JE}7WE*o$K]$G$O!"$3$l$O8=>u$G$OA4$/;H(B +$B$$J*$K$J$i$J$$$h$&$K;W$($^$9!#$3$l$r$b$C$H;H$($k$h$&$K$9$k$?$a$K$O!"(B($B$h(B +$B$j87L)$JE}7WE*o(B -($B=i4|@_Dj$G(B) $B$=$N%0%k!<%WMQ$N%9%3%"%U%!%$%k$K$J$j$^$9!#Nc$($P!"(B -@samp{gnu.emacs.gnus} $BMQ$N%[!<%`%9%3%"%U%!%$%k$O(B -@file{gnu.emacs.gnus.SCORE} $B$H$J$k$o$1$G$9!#(B +$B?7$7$$%9%3%"%U%!%$%kEPO?9`L\$,F~$l$i$l$k%9%3%"%U%!%$%k$O!"%[!<%`%9%3%"%U%!(B +$B%$%k(B @dfn{home score file} $B$H8F$P$l$^$9!#$3$l$ODL>o(B ($B=i4|@_Dj$G(B) $B$=$N%0(B +$B%k!<%WMQ$N%9%3%"%U%!%$%k$K$J$j$^$9!#Nc$($P!"(B@samp{gnu.emacs.gnus} $BMQ$N%[!<(B +$B%`%9%3%"%U%!%$%k$O(B @file{gnu.emacs.gnus.SCORE} $B$H$J$k$o$1$G$9!#(B -$B$7$+$7$J$,$i!"$3$l$O$"$J$?$N$*K>$_$G$O$J$$$+$b$7$l$^$;$s!#$?$/$5(B -$B$s$N%0%k!<%W4V$G6&DL$N%[!<%`%9%3%"%U%!%$%k$r6&M-$9$k$HJXMx$J$H$-(B -$B$,B?$$$G$7$g$&(B --- $BNc$($PA4$F$N(B @samp{emacs} $B%0%k!<%W$GF1$8%[!<(B -$B%`%9%3%"%U%!%$%k$r;H$&$3$H$b$G$-$^$9!#(B +$B$7$+$7$J$,$i!"$3$l$O$"$J$?$N$*K>$_$G$O$J$$$+$b$7$l$^$;$s!#$?$/$5$s$N%0%k!<(B +$B%W4V$G6&DL$N%[!<%`%9%3%"%U%!%$%k$r6&M-$9$k$HJXMx$J$H$-$,B?$$$G$7$g(B +$B$&(B --- $BNc$($PA4$F$N(B @samp{emacs} $B%0%k!<%W$GF1$8%[!<%`%9%3%"%U%!%$%k$r;H(B +$B$&$3$H$b$G$-$^$9!#(B @vindex gnus-home-score-file -$B$3$l$r@)8f$9$kJQ?t$,(B @code{gnus-home-score-file} $B$G$9!#$3$l$O0J(B -$B2<$NCM$rl9g$3$N%U%!%$%k$,A4$F$N%0%k!<%W$G%[!<%`%9%3%"%U%!%$(B -$B%k$H$7$F;HMQ$5$l$^$9!#(B +$BJ8;zNs!#$3$N>l9g$3$N%U%!%$%k$,A4$F$N%0%k!<%W$G%[!<%`%9%3%"%U%!%$%k$H$7$F(B +$B;HMQ$5$l$^$9!#(B @item -$B4X?t!#$3$N4X?t$N7k2L$,%[!<%`%9%3%"%U%!%$%k$H$7$F;HMQ$5$l$^$9!#$3(B -$B$N4X?t$O%0%k!<%W$NL>A0$r0z?t$H$7$F8F$S=P$5$l$^$9!#(B +$B4X?t!#$3$N4X?t$N7k2L$,%[!<%`%9%3%"%U%!%$%k$H$7$F;HMQ$5$l$^$9!#$3$N4X?t$O(B +$B%0%k!<%W$NL>A0$r0z?t$H$7$F8F$S=P$5$l$^$9!#(B @item $B%j%9%H!#$3$N%j%9%H$NMWAG$O0J2<$NCM$r$NA4$F$N8l$K$D$$$F!"C18lE,1~@-%9%3%"$r$7$^$;$s!#$[$H$s(B $B$9$l$P!"(B@var{file-name} $B$,%[!<%`%9%3%"%U%!%$%k$H$7$F;HMQ$5$l$^$9!#(B @item -$B4X?t!#$3$N4X?t$,(B @code{nil} $B0J30$rJV$;$P!"$=$NJV5QCM$,%[!<%`%9%3(B -$B%"%U%!%$%k$H$7$F;HMQ$5$l$^$9!#(B +$B4X?t!#$3$N4X?t$,(B @code{nil} $B0J30$rJV$;$P!"$=$NJV5QCM$,%[!<%`%9%3%"%U%!%$(B +$B%k$H$7$F;HMQ$5$l$^$9!#(B @item -$BJ8;zNs!#(B $B$3$NJ8;zNs$r%[!<%`%9%3%"%U%!%$%k$H$7$F;HMQ$7$^$9!#(B +$BJ8;zNs!#$3$NJ8;zNs$r%[!<%`%9%3%"%U%!%$%k$H$7$F;HMQ$7$^$9!#(B @end enumerate -$B$3$N%j%9%H$NCf$+$i%^%C%A$9$k$b$N$r!":G=i$+$i8e$m$NJ}$K8~$+$C$FC5(B -$B$7$F$$$-$^$9!#(B +$B$3$N%j%9%H$NCf$+$i%^%C%A$9$k$b$N$r!":G=i$+$i8e$m$NJ}$K8~$+$C$FC5$7$F$$$-(B +$B$^$9!#(B @end enumerate -$B$H$$$&$o$1$G!"C1$K0l8D$N%9%3%"%U%!%$%k$r;H$$$?$$>l9g$O!"0J2<$N$h(B -$B$&$K$9$l$P$G$-$^$9!#(B +$B$H$$$&$o$1$G!"C1$K0l8D$N%9%3%"%U%!%$%k$r;H$$$?$$>l9g$O!"0J2<$N$h$&$K$9$l(B +$B$P$G$-$^$9!#(B @lisp (setq gnus-home-score-file "my-total-score-file.SCORE") @end lisp -$B$b$7A4(B @samp{gnu} $B%0%k!<%W$KBP$7$F(B @file{gnu.SCORE} $B$r!"(B -$BA4(B @samp{rec} $B%0%k!<%W$KBP$7$F(B @file{rec.SCORE} ($BEy!9(B) $B$r;H$$$?(B -$B$1$l$P!"$3$N$h$&$K$G$-$^$9!#(B +$B$b$7A4(B @samp{gnu} $B%0%k!<%W$KBP$7$F(B @file{gnu.SCORE} $B$r!"A4(B @samp{rec} $B%0(B +$B%k!<%W$KBP$7$F(B @file{rec.SCORE} ($BEy!9(B) $B$r;H$$$?$1$l$P!"$3$N$h$&$K$G$-$^(B +$B$9!#(B @findex gnus-hierarchial-home-score-file @lisp @@ -15434,8 +15577,8 @@ gnus $B$O%0%k!<%WL>$NA4$F$N8l$K$D$$$F!"C18lE,1~@-%9%3%"$r$7$^$;$s!#$[$H$s(B 'gnus-hierarchial-home-score-file) @end lisp -$B$3$l$OJXMx$J$h$&$K$"$i$+$8$aDs6!$5$l$F$$$k4X?t$G$9!#(B -$BB?$N4X?t$O0J2<$N0J2<$N$b$N$r4^$_$^$9(B +$B$3$l$OJXMx$J$h$&$K$"$i$+$8$aDs6!$5$l$F$$$k4X?t$G$9!#B?$N4X?t$O0J2<$N0J2<(B +$B$N$b$N$r4^$_$^$9!#(B @table @code @item gnus-current-home-scre-file @@ -15445,9 +15588,9 @@ gnus $B$O%0%k!<%WL>$NA4$F$N8l$K$D$$$F!"C18lE,1~@-%9%3%"$r$7$^$;$s!#$[$H$s(B @end table -$B$b$7(B @samp{emacs} $B%0%k!<%WMQ$N%9%3%"%U%!%$%k$H!"$=$l$H$OJL$N(B -@samp{comp} $B%0%k!<%WMQ$N%9%3%"%U%!%$%k$r;H$$!"B>$NA4It$N%0%k!<%W(B -$B$G$O$=$l$>$lFH<+$N%9%3%"%U%!%$%k$r;H$$$?$$$N$G$"$l$P!"(B +$B$b$7(B @samp{emacs} $B%0%k!<%WMQ$N%9%3%"%U%!%$%k$H!"$=$l$H$OJL(B +$B$N(B @samp{comp} $B%0%k!<%WMQ$N%9%3%"%U%!%$%k$r;H$$!"B>$NA4It$N%0%k!<%W$G$O(B +$B$=$l$>$lFH<+$N%9%3%"%U%!%$%k$r;H$$$?$$$N$G$"$l$P!"(B @lisp (setq gnus-home-score-file @@ -15458,58 +15601,54 @@ gnus $B$O%0%k!<%WL>$NA4$F$N8l$K$D$$$F!"C18lE,1~@-%9%3%"$r$7$^$;$s!#$[$H$s(B @end lisp @vindex gnus-home-adapt-file -@code{gnus-home-adapt-file} $B$O(B @code{gnus-home-score-file} $B$HA4(B -$B$/F1$8$h$&$KF0:n$7$^$9$,!"$3$l$OBe$o$j$K2?$r%[!<%`E,MQ%9%3%"%U%!(B -$B%$%k$K$9$k$+$r;XDj$7$^$9!#?7$7$$E,MQ%U%!%$%kEPO?9`L\$OA4$F!"$3$N(B -$BJQ?t$G;XDj$5$l$k%U%!%$%k$KF~$l$i$l$^$9!#CM$K$OF1$8J8K!$,5v$5$l$^(B -$B$9!#(B - -@code{gnus-home-score-file} $B$H(B @code{gnus-home-adapt-file} $B$N;H(B -$BMQ$K2C$($F!"%0%k!<%W%Q%i%a!<%?(B (@pxref{Group Parameters}) $B$H%H%T%C(B -$B%/%Q%i%a!<%?(B (@pxref{Topic Parameters}) $B$r;H$C$F$[$\F1MM$N$3$H$,(B -$B$G$-$^$9!#%0%k!<%W!"%H%T%C%/%Q%i%a!<%?$O$3$NJQ?t$h$j$bM%@h$5$l$^$9!#(B +@code{gnus-home-adapt-file} $B$O(B @code{gnus-home-score-file} $B$HA4$/F1$8$h(B +$B$&$KF0:n$7$^$9$,!"$3$l$OBe$o$j$K2?$r%[!<%`E,MQ%9%3%"%U%!%$%k$K$9$k$+$r;X(B +$BDj$7$^$9!#?7$7$$E,MQ%U%!%$%kEPO?9`L\$OA4$F!"$3$NJQ?t$G;XDj$5$l$k%U%!%$%k(B +$B$KF~$l$i$l$^$9!#CM$K$OF1$8J8K!$,5v$5$l$^$9!#(B +@code{gnus-home-score-file} $B$H(B @code{gnus-home-adapt-file} $B$N;HMQ$K2C$((B +$B$F!"%0%k!<%W%Q%i%a!<%?(B (@pxref{Group Parameters}) $B$H%H%T%C%/%Q%i%a!<(B +$B%?(B (@pxref{Topic Parameters}) $B$r;H$C$F$[$\F1MM$N$3$H$,$G$-$^$9!#%0%k!<%W!"(B +$B%H%T%C%/%Q%i%a!<%?$O$3$NJQ?t$h$j$bM%@h$5$l$^$9!#(B @node Followups To Yourself @section $B<+J,<+?H$X$N%U%)%m!<%"%C%W(B -Gnus $B$O8=:_$N%P%C%U%!!<$+$i(B @code{Message-ID} $B%X%C%@!<$r8+$D$1=P(B -$B$9$?$a$KFs$D$NL?Na$rDs6!$7$F$$$^$9!#(B $B$=$7$F(B gnus $B$O!"B>$N5-;v$K(B -$B$*$1$k(B@code{References} $B%X%C%@!$N5-;v$K$*$1(B +$B$k(B @code{References} $B%X%C%@!@\%U%)%m!<%"%C%W$7$?5-;v$K%9%3%"$r2C;;(B -$B$7$^$9!#(B +$B$3$l$O$"$J$?<+?H$N5-;v$KD>@\%U%)%m!<%"%C%W$7$?5-;v$K%9%3%"$r2C;;$7$^$9!#(B @item gnus-score-followup-thread @findex gnus-score-followup-thread -$B$3$l$O$"$J$?$N5-;v$h$j(B ``$B2<(B'' $B$N%9%l%C%I$K8=$l$k5-;vA4$F$KBP$7$F(B -$B%9%3%"$r2C;;$7$^$9!#(B +$B$3$l$O$"$J$?$N5-;v$h$j(B ``$B2<(B'' $B$N%9%l%C%I$K8=$l$k5-;vA4$F$KBP$7$F%9%3%"$r(B +$B2C;;$7$^$9!#(B @end table @vindex message-sent-hook -$B$3$l$iFs$D$N4X?t$O!"4pK\E*$K$O$I$A$i$b(B @code{message-sent-hook} -$B$N$h$&$J%U%C%/$NCf$G;H$&$?$a$N$b$N$G$9!#(B +$B$3$l$iFs$D$N4X?t$O!"4pK\E*$K$O$I$A$i$b(B @code{message-sent-hook} $B$N$h$&$J(B +$B%U%C%/$NCf$G;H$&$?$a$N$b$N$G$9!#(B -$B$"$J$?$N<+J,$N(B @code{Message-ID} $B$r$8$C$/$j$HD/$a$F$_$k$H!"$O$8(B -$B$a$NFs!";0J8;z$O>o$KF1$8$G$"$k$3$H$K5$$,$D$/$G$7$g$&!#0J2<$NFs$D(B -$B$O;d$N$b$N$G$9!#(B +$B$"$J$?$N<+J,$N(B @code{Message-ID} $B$r$8$C$/$j$HD/$a$F$_$k$H!"$O$8$a$NFs!"(B +$B;0J8;z$O>o$KF1$8$G$"$k$3$H$K5$$,$D$/$G$7$g$&!#0J2<$NFs$D$O;d$N$b$N$G$9!#(B @example @end example -$B$D$^$j$3$N%^%7%s>e$G$N(B ``$B;d$N(B'' $B$N<1JL$O(B @samp{x6} $B$G$"$k$H$$$&(B -$B$3$H$G$9!#$3$l$O;H$($^$9(B --- $B0J2<$N5,B'$O;d<+?H$X$N%U%)%m!<%"%C(B -$B%WA4$F$KBP$7$F%9%3%"$rA}2C$5$;$k$G$7$g$&!#(B +$B$D$^$j$3$N%^%7%s>e$G$N(B ``$B;d$N(B'' $B$N<1JL$O(B @samp{x6} $B$G$"$k$H$$$&$3$H$G$9!#(B +$B$3$l$O;H$($^$9(B --- $B0J2<$N5,B'$O;d<+?H$X$N%U%)%m!<%"%C%WA4$F$KBP$7$F%9%3(B +$B%"$rA}2C$5$;$k$G$7$g$&!#(B @lisp ("references" @@ -15517,9 +15656,8 @@ Gnus $B$O8=:_$N%P%C%U%!!<$+$i(B @code{Message-ID} $B%X%C%@!<$r8+$D$1=P(B 1000 nil r)) @end lisp -``$B$"$J$?$N(B'' $B$,:G=i$NFsJ8;z$K$J$k$+:G=i$N;0J8;z$K$J$k$+$O%7%9%F(B -$B%`$K0MB8$7$^$9!#(B - +``$B$"$J$?$N(B'' $B$,:G=i$NFsJ8;z$K$J$k$+:G=i$N;0J8;z$K$J$k$+$O%7%9%F%`$K0MB8(B +$B$7$^$9!#(B @node Scoring Tips @section $B%9%3%"IU$1$N1|5A(B @@ -15530,55 +15668,56 @@ Gnus $B$O8=:_$N%P%C%U%!!<$+$i(B @code{Message-ID} $B%X%C%@!<$r8+$D$1=P(B @item $B%/%m%9%]%9%H(B @cindex crossposts @cindex scoring crossposts -$B%/%m%9%]%9%H$N%9%3%"$rDc$/$7$?$1$l$P!"%^%C%A$5$;$k$Y$-9T$O(B -@code{Xref} $B%X%C%@!<$G$9!#(B +$B%/%m%9%]%9%H$N%9%3%"$rDc$/$7$?$1$l$P!"%^%C%A$5$;$k$Y$-9T(B +$B$O(B @code{Xref} $B%X%C%@!<$G$9!#(B + @lisp ("xref" (" talk.politics.misc:" -1000)) @end lisp @item $BJ#?t$N%/%m%9%]%9%H(B -$B$"$k?t!"Nc$($P(B 3 $B$D0J>e$N%0%k!<%W$K%/%m%9%]%9%H$5$l$F$$$k5-;v$N(B -$B%9%3%"$rDc$/$7$?$1$l$P!"(B +$B$"$k?t!"Nc$($P;0$D0J>e$N%0%k!<%W$K%/%m%9%]%9%H$5$l$F$$$k5-;v$N%9%3%"$rDc(B +$B$/$7$?$1$l$P!"(B + @lisp ("xref" ("[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+" -1000 nil r)) @end lisp @item $BK\J8$X$N%^%C%A(B -$B$3$l$O0lHLE*$K$O$"$^$jNI$$9M$($G$O$"$j$^$;$s(B --- $B$=$l$O$H$F$bD9(B -$B;~4V$+$+$C$F$7$^$&$+$i$G$9!#$l$N5-;v$r8DJL$K(B -$B%5!<%P!<$+$i$l$N5-;v$O(B @emph{$BFs2s(B} $B$K(B @code{All} $B$r;H$C$FA4It%^%C%A(B -$B$5$;$F$/$@$5$$!#(B +$B$3$l$O0lHLE*$K$O$"$^$jNI$$9M$($G$O$"$j$^$;$s(B --- $B$=$l$O$H$F$bD9;~4V$+$+$C(B +$B$F$7$^$&$+$i$G$9!#$l$N5-;v$r8DJL$K%5!<%P!<$+$i$l$N5-;v$O(B @emph{$BFs2s(B} $B$K(B @code{All} $B$r;H$C$FA4It%^%C%A$5$;$F$/$@$5(B +$B$$!#(B @item $B4{FI$N0uIU$1(B -$B$"$k0lDj?t;z0J2<$N%9%3%"$r;}$D5-;v$K$O!"$*$=$i$/4{FI$N0u$r$D$1$F(B -$B$7$^$$$?$/$J$k$G$7$g$&!#$3$l$O(B @file{all.SCORE} $B%U%!%$%k$K0J2<$N(B -$B$b$N$rF~$l$F$*$/$3$H$K$h$C$F:G$b4JC1$K$N5-;vA4$F$r>C5n$7$F$7$^$$$?$1$l$P!"%9%3%"%U%!(B -$B%$%k$K0J2<$N$h$&$J$b$N$rF~$l$k$3$H$b$G$-$^$9!#(B +$B$b$7!"I=Bj%X%C%@!<$K(B @samp{Sex with Emacs} $B$H$$$&J8;z$,$"$k5-;v$@$1$r;D(B +$B$7$F!"$=$NB>$N5-;vA4$F$r>C5n$7$F$7$^$$$?$1$l$P!"%9%3%"%U%!%$%k$K0J2<$N$h(B +$B$&$J$b$N$rF~$l$k$3$H$b$G$-$^$9!#(B @lisp (("subject" @@ -15587,36 +15726,33 @@ Gnus $B$O8=:_$N%P%C%U%!!<$+$i(B @code{Message-ID} $B%X%C%@!<$r8+$D$1=P(B (expunge 1)) @end lisp -$B$=$7$F(B @samp{Sex with Emacs} $B$K%^%C%A$9$kA4$F$N5-;v$r=8$a$F!";D(B -$B$j$r=3Ht$P$9$?$a$K4{FI$N0u$r$D$1!">C5n$7$^$9!#(B - +$B$=$7$F(B @samp{Sex with Emacs} $B$K%^%C%A$9$kA4$F$N5-;v$r=8$a$F!";D$j$r=3Ht(B +$B$P$9$?$a$K4{FI$N0u$r$D$1!">C5n$7$^$9!#(B @node Global Score Files @section $B%0%m!<%P%k%9%3%"%U%!%$%k(B @cindex global score files -$B4V0c$$$J$/!"B>$N%K%e!<%9%j!<%@!<$O(B ``$B%0%m!<%P%k:o=|%U%!%$%k(B -(global kill file)'' $B$r;}$C$F$$$^$9!#$3$l$OIaDL!"A4$F$N%0%k!<%W(B -$B$KE,MQ$5$l$k!"%f!<%6!<$N%[!<%`%G%#%l%/%H%j!<$K3JG<$5$l$F$$$k0l$D(B -$B$N:o=|%U%!%$%k0J>e$N2?J*$G$b$"$j$^$;$s!#$O$s(B! $B$A$C$]$1$J%K%e!<%9(B -$B%j!<%@!<$@$M!#$N%K%e!<%9%j!<%@!<$O(B ``$B%0%m!<%P%k:o=|%U%!%$(B +$B%k(B (global kill file)'' $B$r;}$C$F$$$^$9!#$3$l$OIaDL!"A4$F$N%0%k!<%W$KE,MQ(B +$B$5$l$k!"%f!<%6!<$N%[!<%`%G%#%l%/%H%j!<$K3JG<$5$l$F$$$k0l$D$N:o=|%U%!%$%k(B +$B0J>e$N2?J*$G$b$"$j$^$;$s!#$O$s(B! $B$A$C$]$1$J%K%e!<%9%j!<%@!<$@$M!#$N?M$N%9%3%"%U%!%$%k$r;H$&$?$a$K$7$J$1$l$P$J$i$J$$$3$H$O!"(B -@code{gnus-global-score-files} $BJQ?t$r@_Dj$9$k$3$H$@$1$G$9!#$=$l(B -$B$>$l$N%9%3%"%U%!%$%kKh$K!"$"$k$$$O$=$l$>$l$N%9%3%"%U%!%$%k%G%#%l(B -$B%/%H%jKh$KBP$7$F0l$D$N9`L\$K$J$j$^$9!#(BGnus $B$O$I$N%9%3%"%U%!%$%k(B -$B$r$I$N%0%k!<%W$K;H$&$N$,E,@Z$G$"$k$+$r<+J,$G7hDj$7$^$9!#(B +@code{gnus-global-score-files} $BJQ?t$r@_Dj$9$k$3$H$@$1$G$9!#$=$l$>$l$N%9(B +$B%3%"%U%!%$%kKh$K!"$"$k$$$O$=$l$>$l$N%9%3%"%U%!%$%k%G%#%l%/%H%jKh$KBP$7$F(B +$B0l$D$N9`L\$K$J$j$^$9!#(BGnus $B$O$I$N%9%3%"%U%!%$%k$r$I$N%0%k!<%W$K;H$&$N$,(B +$BE,@Z$G$"$k$+$r<+J,$G7hDj$7$^$9!#(B -$BNc$($P(B -@file{/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE} -$B$N%9%3%"%U%!%$%k$H(B @file{/ftp@@ftp.some-where:/pub/score} $B%G%#%l(B -$B%/%H%j$K$"$kA4$F$N%9%3%"%U%!%$%k$r;H$$$?$1$l$P!"(B +$BNc$($P(B @file{/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE} $B$N(B +$B%9%3%"%U%!%$%k$H(B @file{/ftp@@ftp.some-where:/pub/score} $B%G%#%l%/%H%j$K$"(B +$B$kA4$F$N%9%3%"%U%!%$%k$r;H$$$?$1$l$P!"(B @lisp (setq gnus-global-score-files @@ -15625,22 +15761,20 @@ Ange-score! $B?7$7$/$F%F%9%H$7$F$$$J$$(B! @end lisp @findex gnus-score-search-global-directories -$B$I$&$@$$!"4JC1$@$m$&(B? $B%G%#%l%/%H%jL>$O(B @samp{/} $B$G=*$o$i$J$/$F$O(B -$B$J$j$^$;$s!#$3$l$i$N%G%#%l%/%H%j$OIaDL$O!"0l2s$N(B gnus $B;HMQ4|4VCf(B -$B$K0l2s$@$1$7$+FI$_9~$_$^$;$s!#$b$71s3V%G%#%l%/%H%j$r$O(B @samp{/} $B$G=*$o$i$J$/$F$O$J$j$^$;(B +$B$s!#$3$l$i$N%G%#%l%/%H%j$OIaDL$O!"0l2s$N(B gnus $B;HMQ4|4VCf$K0l2s$@$1$7$+FI(B +$B$_9~$_$^$;$s!#$b$71s3V%G%#%l%/%H%j$r$N?M$?$A$K;H$C$F$b$i$&$h$&$K0];}$7$?$/$J$C(B -$B$F$-$?$i!"C1$K$"$J$?$N%9%3%"%U%!%$%k$rF?L>(B FTP $B$KCV$$$F!"@$3&Cf(B -$B$K8xI=$7$F$/$@$5$$!#5U;J2q!$A$N?M$?$A$K;H$C$F$b$i$&$h$&$K0];}$7$?$/$J$C$F$-$?(B +$B$i!"C1$K$"$J$?$N%9%3%"%U%!%$%k$rF?L>(B FTP $B$KCV$$$F!"@$3&Cf$K8xI=$7$F$/$@(B +$B$5$$!#5U;J2q!$AOL5;k$NEj9F$rIQHK$K7+$jJV$9Ej9FOL5;k$NEj9F$rIQHK$K7+$jJV$9Ej9FC5n$N%9%3%"9`L\$r;H$C$F%U%!%$%k$NBg$-$5$r>.$5$/M^$($k!#$G$b$*$=(B -$B$i$/$O!"%5%$%H$K$h$C$F8E$$5-;v$rD94|4VJ]B8$9$k$h$&$K!"4|8B@Z$l>C(B -$B5n$N4|4V$OD9$/C5n$N%9%3%"9`L\$r;H$C$F%U%!%$%k$NBg$-$5$r>.$5$/M^$($k!#$G$b$*$=$i$/$O!"(B +$B%5%$%H$K$h$C$F8E$$5-;v$rD94|4VJ]B8$9$k$h$&$K!"4|8B@Z$l>C5n$N4|4V$OD9$/$N%K%e!<%9%j!<%@!<$O>-Mh!"%0%m!<%P%k%9%3%"%U%!%$%k(B -$B$r%5%]!<%H$9$k$G$7$g$&$+(B? @emph{$B$&$U$U(B}$B!#$=$&!"$I$&9M$($F$_$?$C(B -$B$F!"(BBlue Wave $B$d(B xrn $B$d(B 1stReader $B$H$+$$$C$?%K%e!<%9%j!<%@!<$O%9(B -$B%3%"$r%5%]!<%H$9$k$Y$-$@$M!#:#$O8GBC$r0{$s$G8+$N%K%e!<%9%j!<%@!<$O>-Mh!"%0%m!<%P%k%9%3%"%U%!%$%k$r%5%]!<(B +$B%H$9$k$G$7$g$&$+(B? @emph{$B$&$U$U(B}$B!#$=$&!"$I$&9M$($F$_$?$C$F!"(B +Blue Wave $B$d(B xrn $B$d(B 1stReader $B$H$+$$$C$?%K%e!<%9%j!<%@!<$O%9%3%"$r%5%]!<(B +$B%H$9$k$Y$-$@$M!#:#$O8GBC$r0{$s$G8+C5n%U%!%$%k(B @cindex kill files -Gnus $B$O$^$@!"$"$N$&$6$C$?$$8E$$>C5n%U%!%$%k$r%5%]!<%H$7$F$$$^$9!#(B -$BC5n%U%!%$%k$N9`L\$O$b$&>C$7$F$b$h$$$N$G$9$,!"$=$l$O(B Daniel -Quinlan $B$,%9%3%"%U%!%$%k$r9M$(=P$9A0$K;d$,=q$$$?$b$N$J$N$G!"$=$N(B -$B%3!<%I$O$^$@;D$C$F$$$^$9!#(B +Gnus $B$O$^$@!"$"$N$&$6$C$?$$8E$$>C5n%U%!%$%k$r%5%]!<%H$7$F$$$^$9!#C(B +$B5n%U%!%$%k$N9`L\$O$b$&>C$7$F$b$h$$$N$G$9$,!"$=$l$O(B Daniel Quinlan $B$,%9%3(B +$B%"%U%!%$%k$r9M$(=P$9A0$K;d$,=q$$$?$b$N$J$N$G!"$=$N%3!<%I$O$^$@;D$C$F$$$^(B +$B$9!#(B -$BMW$9$k$K!">C5n=hM}$O%9%3%"=hM}$h$j$b$+$J$jCY$$$N$G(B ($B;d$N8@$$$?$$(B -$B$N$O(B @emph{$B$b$N$9$4$/(B})$B!"$"$J$?$N>C5n%U%!%$%k$O%9%3%"%U%!%$%k$K(B -$B=q$-49$($?J}$,NI$$$+$b$7$l$^$;$s!#(B +$BMW$9$k$K!">C5n=hM}$O%9%3%"=hM}$h$j$b$+$J$jCY$$$N$G(B ($B;d$N8@$$$?$$$N(B +$B$O(B @emph{$B$b$N$9$4$/(B})$B!"$"$J$?$N>C5n%U%!%$%k$O%9%3%"%U%!%$%k$K=q$-49$($?(B +$BJ}$,NI$$$+$b$7$l$^$;$s!#(B -$B$$$:$l$K$;$h!">C5n%U%!%$%k$OIaDL$N(B @code{emacs-lisp} $B%U%!%$%k$G$9!#(B -$B$3$N%U%!%$%k$NCf$K$O$I$s$J7A<0$G$bF~$l$k$3$H$,$G$-$^$9!#$D$^$j>C(B -$B5n%U%!%$%k$r%0%k!<%W$KF~$C$?$H$-$KC5n%U%!%$%k$OIaDL$N(B @code{emacs-lisp} $B%U%!%$%k$G$9!#$3$N(B +$B%U%!%$%k$NCf$K$O$I$s$J7A<0$G$bF~$l$k$3$H$,$G$-$^$9!#$D$^$j>C5n%U%!%$%k$r(B +$B%0%k!<%W$KF~$C$?$H$-$Ko$N>C5n%U%!%$%k$O0J2<$N$h$&$K$J$j$^$9!#(B @@ -15699,29 +15830,27 @@ Quinlan $B$,%9%3%"%U%!%$%k$r9M$(=P$9A0$K;d$,=q$$$?$b$N$J$N$G!"$=$N(B (gnus-expunge "X") @end lisp -$B$3$l$O;d$,=q$$$?A4$F$N5-;v$K4{FI$N0u$r$D$1!"35N,%P%C%U%!$+$i0u$N(B -$B$D$$$?5-;v$r:o=|$7$^$9!#$H$C$F$bJXMx$G$9!#$"$J$?$b$=$&;W$&$G$7$g!#(B +$B$3$l$O;d$,=q$$$?A4$F$N5-;v$K4{FI$N0u$r$D$1!"35N,%P%C%U%!$+$i0u$N$D$$$?5-(B +$B;v$r:o=|$7$^$9!#$H$C$F$bJXMx$G$9!#$"$J$?$b$=$&;W$&$G$7$g!#(B -$BB>$N%W%m%0%i%`$G$OA4$/0c$&>C5n%U%!%$%k$N9=J8$r;H$C$F$$$^$9!#$b$7(B -gnus $B$,(B @code{rn} $B$N>C5n%U%!%$%k$i$7$-$b$N$K=P2q$C$?$i!"2?$H$+$=(B -$B$l$r2r$N%W%m%0%i%`$G$OA4$/0c$&>C5n%U%!%$%k$N9=J8$r;H$C$F$$$^$9!#$b(B +$B$7(B gnus $B$,(B @code{rn} $B$N>C5n%U%!%$%k$i$7$-$b$N$K=P2q$C$?$i!"2?$H$+$=$l$r(B +$B2rC5n%U%!%$%k$rJT=8$9$k$?$a$NFs$D$N35N,%P%C%U%!4X?t$,$"$j$^(B -$B$9!#(B +GNUS $B>C5n%U%!%$%k$rJT=8$9$k$?$a$NFs$D$N35N,%P%C%U%!4X?t$,$"$j$^$9!#(B @table @kbd @item M-k @kindex M-k (Summary) @findex gnus-summary-edit-local-kill -$B$=$N%0%k!<%W$N>C5n%U%!%$%k$rJT=8$9$k(B -(@code{gnus-summary-edit-local-kill})$B!#(B +$B$=$N%0%k!<%W$N>C5n%U%!%$%k$rJT=8$9(B +$B$k(B (@code{gnus-summary-edit-local-kill})$B!#(B @item M-K @kindex M-K (Summary) @findex gnus-summary-edit-global-kill -$B0lHL>C5n%U%!%$%k$rJT=8$9$k(B -(@code{gnus-summary-edit-global-kill})$B!#(B +$B0lHL>C5n%U%!%$%k$rJT=8$9$k(B (@code{gnus-summary-edit-global-kill})$B!#(B @end table $B>C5n%U%!%$%k$rJT=8$9$kFs$D$N%0%k!<%W%b!<%I4X?t$,$"$j$^$9!#(B @@ -15731,8 +15860,7 @@ GNUS $B>C5n%U%!%$%k$rJT=8$9$k$?$a$NFs$D$N35N,%P%C%U%!4X?t$,$"$j$^(B @item M-k @kindex M-k (Group) @findex gnus-group-edit-local-kill -$B$=$N%0%k!<%W$N>C5n%U%!%$%k$rJT=8$9$k(B -(@code{gnus-group-edit-local-kill})$B!#(B +$B$=$N%0%k!<%W$N>C5n%U%!%$%k$rJT=8$9$k(B (@code{gnus-group-edit-local-kill})$B!#(B @item M-K @kindex M-K (Group) @@ -15745,29 +15873,26 @@ GNUS $B>C5n%U%!%$%k$rJT=8$9$k$?$a$NFs$D$N35N,%P%C%U%!4X?t$,$"$j$^(B @table @code @item gnus-kill-file-name @vindex gnus-kill-file-name -@samp{soc.motss} $B%0%k!<%WMQ$N>C5n%U%!%$%k$ODL>o(B -@file{soc.motss.KILL} $B$H$$$&L>A0$G$9!#$3$N%U%!%$%kL>$rF@$k$?$a$K(B -$B%0%k!<%WL>$KIU2C$5$l$k@\Hx<-$O!"(B@code{gnus-kill-file-name} $BJQ?t(B -$B$GM?$($i$l$^$9!#(B``$B%0%m!<%P%k(B'' $B>C5n%U%!%$%k$O(B ($B%9%3%"%U%!%$%k$N(B -$B0UL#$G$N(B ``$B%0%m!<%P%k(B'' $B$8$c$J$$$h!"$b$A$m$s(B) $BC1$K(B @file{KILL}$B$H(B -$B$$$&L>A0$G$9!#(B +@samp{soc.motss} $B%0%k!<%WMQ$N>C5n%U%!%$%k$ODL(B +$B>o(B @file{soc.motss.KILL} $B$H$$$&L>A0$G$9!#$3$N%U%!%$%kL>$rF@$k$?$a$K%0%k!<(B +$B%WL>$KIU2C$5$l$k@\Hx<-$O!"(B@code{gnus-kill-file-name} $BJQ?t$GM?$($i$l$^$9!#(B +``$B%0%m!<%P%k(B'' $B>C5n%U%!%$%k$O(B ($B%9%3%"%U%!%$%k$N0UL#$G(B +$B$N(B ``$B%0%m!<%P%k(B'' $B$8$c$J$$$h!"$b$A$m$s(B) $BC1$K(B @file{KILL}$B$H$$$&L>A0$G$9!#(B @vindex gnus-kill-save-kill-file @item gnus-kill-save-kill-file -$B$3$NJQ?t$,(B @code{nil} $B0J30$G$"$l$P!"(Bgnus $B$O=hM}$N8e$K>C5n%U%!%$(B -$B%k$rJ]B8$7$^$9!#$3$l$O4|8B@Z$l:o=|$r9T$&>C5n$r;H$C$F$$$k$H$-$KI,(B -$BMW$G$9!#(B +$B$3$NJQ?t$,(B @code{nil} $B0J30$G$"$l$P!"(Bgnus $B$O=hM}$N8e$K>C5n%U%!%$%k$rJ]B8(B +$B$7$^$9!#$3$l$O4|8B@Z$l:o=|$r9T$&>C5n$r;H$C$F$$$k$H$-$KI,MW$G$9!#(B @item gnus-apply-kill-hook @vindex gnus-apply-kill-hook @findex gnus-apply-kill-file-unless-scored @findex gnus-apply-kill-file -$B%0%k!<%W$K>C5n%U%!%$%k$rE,MQ$9$k$?$a$K8F$S=P$5$l$k%U%C%/!#$3$l$O(B -$B=i4|@_Dj$G$O(B @code{(gnus-apply-kill-file)} $B$G$9!#$b$7F1$8%0%k!<(B -$B%W$KBP$7$F%9%3%"%U%!%$%k$,$"$k>l9g$K$O>C5n%U%!%$%k$rL5;k$7$?$1$l(B -$B$P!"$3$N%U%C%/$r(B @code{(gnus-apply-kill-file-unless-scored)} $B$K(B -$B@_Dj$7$^$9!#>C5n%U%!%$%k$r=hM}$5$;$?$/$J$1$l$P!"$3$NJQ?t$r(B -@code{nil} $B$K@_Dj$7$F$/$@$5$$!#(B +$B%0%k!<%W$K>C5n%U%!%$%k$rE,MQ$9$k$?$a$K8F$S=P$5$l$k%U%C%/!#$3$l$O=i4|@_Dj(B +$B$G$O(B @code{(gnus-apply-kill-file)} $B$G$9!#$b$7F1$8%0%k!<%W$KBP$7$F%9%3%"(B +$B%U%!%$%k$,$"$k>l9g$K$O>C5n%U%!%$%k$rL5;k$7$?$1$l$P!"$3$N%U%C%/(B +$B$r(B @code{(gnus-apply-kill-file-unless-scored)} $B$K@_Dj$7$^$9!#>C5n%U%!%$(B +$B%k$r=hM}$5$;$?$/$J$1$l$P!"$3$NJQ?t$r(B@code{nil} $B$K@_Dj$7$F$/$@$5$$!#(B @item gnus-kill-file-mode-hook @vindex gnus-kill-file-mode-hook @@ -15775,28 +15900,25 @@ GNUS $B>C5n%U%!%$%k$rJT=8$9$k$?$a$NFs$D$N35N,%P%C%U%!4X?t$,$"$j$^(B @end table - @node Converting Kill Files @section $B>C5n%U%!%$%k$NJQ49(B @cindex kill files @cindex converting kill files -$B$"$J$?$,8E$$>C5n%U%!%$%k$r$I$C$5$j;}$C$F$$$k$N$G$"$l$P!"$=$l$i$r(B -$B%9%3%"%U%!%$%k$KJQ49$7$?$/$J$k$G$7$g$&!#$b$7$=$l$i$,(B ``$BIaDL$N(B'' -$B$d$D$G$"$l$P!"(B@file{gnus-kill-to-score.el} $B%Q%C%1!<%8$r;H$&$3$H(B -$B$,$G$-$^$9!#$=$&$G$J$1$l$P!"C5n%U%!%$%k$+$i%9%3%"%U%!%$%k$X$NJQ49%Q%C%1!<%8$O!"I8=`$G$O(B -gnus $B$K$O4^$^$l$^$;$s!#(B -@file{http://www.stud.ifi.uio.no/~larsi/ding-other/gnus-kill-to-score} -$B$+$iF~C5n%U%!%$%k$r$I$C$5$j;}$C$F$$$k$N$G$"$l$P!"$=$l$i$r%9%3%"%U%!(B +$B%$%k$KJQ49$7$?$/$J$k$G$7$g$&!#$b$7$=$l$i$,(B ``$BIaDL$N(B''$B$d$D$G$"$l$P!"(B +@file{gnus-kill-to-score.el} $B%Q%C%1!<%8$r;H$&$3$H$,$G$-$^$9!#$=$&$G$J$1(B +$B$l$P!"C5n%U%!%$%k$,Hs>o$KJ#;($J$b$N$G$"$l$P(B --- $B$=$l$K(B -@code{gnus-kill} $B7A<00J30$N$b$N$,$?$/$5$s4^$^$l$F$$$l$P!"$=$l$i(B -$B$rC5n%U%!%$%k$+$i%9%3%"%U%!%$%k$X$NJQ49%Q%C%1!<%8$O!"I8=`$G$O(Bgnus $B$K$O4^(B +$B$^$l$^$;$s!#(B +@file{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el} $B$+(B +$B$iF~C5n%U%!%$%k$,Hs>o$KJ#;($J$b$N$G$"$l$P(B --- $B$=$l(B +$B$K(B @code{gnus-kill} $B7A<00J30$N$b$N$,$?$/$5$s4^$^$l$F$$$l$P!"$=$l$i$r$N(B $B$O$3$NM=8@$r5-;v$rFI$_$?$$$+$I$&$+$r7hDj$9$k$N$KLrN)$F$k;v$,$G$-$^$9!#(B @menu -* Using GroupLens:: $B$I$N$h$&$K(B gnus $B$K(B GroupLens $B$r;H$o$;$k$h$&(B - $B$K$9$k$+!#(B -* Rating Articles:: GropLens $B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k$+$r(B - $BCN$i$;$k!#(B -* Displaying Predictions:: GropuLens $B$K$h$C$FM?$($i$l$?M=8@$rI=<($9$k!#(B -* GroupLens Variables:: GoupLens $B$r%+%9%?%^%$%:$9$k!#(B +* Using GroupLens:: $B$I$N$h$&$K(B gnus $B$K(B GroupLens $B$r;H$o$;$k$h$&$K(B + $B$9$k$+!#(B +* Rating Articles:: GropLens $B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k$+$rCN(B + $B$i$;$k!#(B +* Displaying Predictions:: GropuLens $B$K$h$C$FM?$($i$l$?M=8@$rI=<($9$k(B +* GroupLens Variables:: GoupLens $B$r%+%9%?%^%$%:$9$k(B @end menu - @node Using GroupLens @subsection GroupLens $B$r;H$&(B -GroupLens $B$r;H$&$?$a$K$O!"%m!<%+%k$N(B Better Bit Berau (BBB) $B$KI.L>(B -(pseudonym) $B$rEPO?$7$J$1$l$P$J$j$^$;$s!#(B +GroupLens $B$r;H$&$?$a$K$O!"%m!<%+%k$N(B Better Bit Berau (BBB) $B$KI.(B +$BL>(B (pseudonym) $B$rEPO?$7$J$1$l$P$J$j$^$;$s!#(B @samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} $B$,8=:_!"$A$^$?(B $B$KB8:_$9$kM#0l$N(B better bit $B$G$9!#(B @@ -15858,34 +15979,35 @@ GroupLens $B$NM=8@$rF@$?$$$H;W$&%0%k!<%W$N%j%9%H$G$9!#(B GroupLens $B$,$"$J$?$KDs6!$9$k%9%3%"$O$"$J$?$,IaCJGo$KLr$KN)$A$^$9!#(B +$B$3$N4X?t$OCMIU$1$NF~NO$rB%?J$7!"%9%l%C%I$NA4$F$N5-;v$rCMIU$1$^$9!#$3$l(B +$B$O(B rec.humor $B$K$"$k$h$&$J$"$ND9$$4VB3$/%9%l%C%I$KBP$7$FHs>o$KLr$KN)$A$^(B +$B$9!#(B @end table -$Bo$KLr$KN)$A$^$9!#(B @end table -$B$b$78=:_$N5-;v$K%9%3%"(B4$B$rIU$1!"e=q$-$9$k$+$rA*$V;v$,$G$-$^$9!#>e(B $B=q$-$,=i4|@_Dj$G$9!#$7$+$7!"(Bgnus $B$N%9%3%"$r(B grouplens $B$N%9%3%"$KB-$9$N$r(B $B9%$`?M$b$$$^$9!#J,N%%9%3%"$N?6$kIq$$$rF@$k$?$a$K$O!"(B @code{gnus-grouplens-override-scoring} $B$r(B @code{'separate} $B$K@_Dj$9$kI,(B $BMW$,$"$j$^$9!#(BGroupLens $B$NM=8@$H(B grouplens $B%9%3%"$r7k9g$9$k$?$a$K$O$=$l(B -$B$r(B @code{'override} $B$K@_Dj$7!"%9%3%"$r7k9g$9$k$?$a$K$O(B -@code{gnus-grouplens-override-scoring} $B$r(B @code{'combine} $B$K@_Dj$7$^$9!#(B -$B7k9gIU2C5!G=$rMQ$$$k$H$-$O!"(B@code{grouplens-prediction-offset} $B$H(B -@code{grouplens-score-scale-factor} $B$NCM$r@_Dj$7$?$$$H;W$&$G$7$g$&!#(B +$B$r(B @code{'override} $B$K@_Dj$7!"%9%3%"$r7k9g$9$k$?$a$K(B +$B$O(B @code{gnus-grouplens-override-scoring} $B$r(B @code{'combine} $B$K@_Dj$7$^(B +$B$9!#7k9gIU2C5!G=$rMQ$$$k$H$-$O!"(B +@code{grouplens-prediction-offset} $B$H(B @code{grouplens-score-scale-factor} $B$N(B +$BCM$r@_Dj$7$?$$$H;W$&$G$7$g$&!#(B @vindex grouplens-prediction-display -$B$I$A$i$N>l9g$G$b!"(BGroupLens $B$O(B2,3$B$NM=8@$,$I$N$h$&I=<($5$l$?$$$+$NA*Br$r(B -$BM?$($^$9!#M=8@$NI=<($OJQ?t(B @code{grouplens-prediction-display} $B$K$h$C$F(B -$B@)8f$5$l$^$9!#(B +$B$I$A$i$N>l9g$G$b!"(BGroupLens $B$OFs!";0$NM=8@$,$I$N$h$&I=<($5$l$?$$$+$NA*Br(B +$B$rM?$($^$9!#M=8@$NI=<($OJQ?t(B @code{grouplens-prediction-display} $B$K$h$C(B +$B$F@)8f$5$l$^$9!#(B $B0J2<$N$b$N$,$=$NJQ?t$GM-8z$JCM$G$9!#(B @@ -15956,7 +16078,6 @@ grouplens $B$GM=8@$rI=<($9$k$?$a$K(B3$B$D$NJ}K!$,$"$j$^$9!#(BGroupLens $B$N @end table - @node GroupLens Variables @subsection GroupLens $BJQ?t(B @@ -15972,47 +16093,45 @@ bbbd $B%5!<%P!<$,e5i%9%3%"IU$1(B $BI=Bj$d(B From $B%X%C%@!<$K%9%3%"$rIU$1$k$N$O==J,AGE($G$9$,!"$"$k?MFCDj$NBj$K(B -$B4X$7$F8@$C$F$$$k;v$K$@$1K\Ev$K6=L#$,$"$k>l9g$O$I$&$9$l$PNI$$$N$G$7$g$&!)(B -$B$b$7$/$O!"(BA$B$5$s$,(B B$B$5$s$K%U%)%m!<%"%C%W$7$F$$$k$H$-$K8@$C$F$$$k;v$rFI$_(B -$B$?$/$J$$$1$l$I!"(BC$B$5$s$K%U%)%m!<%"%C%W$7$F$$$k$H$-$O2?$r8@$C$F$$$k$+$rCN(B -$B$j$?$$$H$$$&>l9g$O!)(B +$B4X$7$F8@$C$F$$$k;v$K$@$1K\Ev$K6=L#$,$"$k>l9g$O$I$&$9$l$PNI$$$N$G$7$g(B +$B$&(B? $B$b$7$/$O!"(BA $B$5$s$,(B B $B$5$s$K%U%)%m!<%"%C%W$7$F$$$k$H$-$K8@$C$F$$$k;v(B +$B$rFI$_$?$/$J$$$1$l$I!"(BC$B$5$s$K%U%)%m!<%"%C%W$7$F$$$k$H$-$O2?$r8@$C$F$$$k(B +$B$+$rCN$j$?$$$H$$$&>l9g$O(B? $B>e5i%9%3%"K!B'$r;H$&;v$G!"G$0U$NJ#;($J%9%3%"$NIU$1J}$r:n@.$9$k;v$,$G$-$^(B $B$9!#(B @menu -* Advanced Scoring Syntax:: $BDj5A!#(B -* Advanced Scoring Examples:: $B$I$N$h$&$K8+$($k$+!#(B -* Advanced Scoring Tips:: $B$=$l$r:GBg8BMxMQ$9$k!#(B +* Advanced Scoring Syntax:: $BDj5A(B +* Advanced Scoring Examples:: $B$I$N$h$&$K8+$($k$+(B +* Advanced Scoring Tips:: $B$=$l$r:GBg8BMxMQ$9$k(B @end menu - @node Advanced Scoring Syntax @subsection $B>e5i%9%3%"IU$19=J8(B $BIaDL$N%9%3%"K!B'$OK!B'$N:G=i$NMWAG$KJ8;zNs$,$"$j$^$9!#>e5i%9%3%"IU$1K!B'(B -$B$O:G=i$NMWAG$K%j%9%H$,$"$j$^$9!#(B2$BHVL\$N%j%9%H$O:G=i$NMWAG$,(B @code{nil} -$B$G$J$$CM$KI>2A$5$l$?$H$-$KE,MQ$5$l$^$9!#(B +$B$O:G=i$NMWAG$K%j%9%H$,$"$j$^$9!#FsHVL\$N%j%9%H$O:G=i$NMWAG(B +$B$,(B @code{nil} $B$G$J$$CM$KI>2A$5$l$?$H$-$KE,MQ$5$l$^$9!#(B -$B$3$l$i$N%j%9%H$O(B3$B$D$NO@M}:nMQ;R$+$i$J$C$F$*$j!"$=$l$i$O(B1$BJ}8~:nMQ;R$G!"?'!9(B -$B$J9gCW:nMQ;R$G$9!#(B +$B$3$l$i$N%j%9%H$O;0$D$NO@M}:nMQ;R$+$i$J$C$F$*$j!"$=$l$i$O0lJ}8~:nMQ;R$G!"(B +$B?'!9$J9gCW:nMQ;R$G$9!#(B $BO@M}:nMQ;R(B: @@ -16026,8 +16145,8 @@ bbbd $B%5!<%P!<$,$l$N0z?t$r(B @code{true} $B$KI>2A$5$l$k$b$N$r8+$D$1$k(B -$B$^$GI>2A$7$^$9!#$b$7$I$N0z?t$b(B @code{true} $B$G$J$$$H!"$3$N:nMQ;R$O(B -@code{false} $B$rJV$7$^$9!#(B +$B$^$GI>2A$7$^$9!#$b$7$I$N0z?t$b(B @code{true} $B$G$J$$$H!"$3$N:nMQ;R(B +$B$O(B @code{false} $B$rJV$7$^$9!#(B @item ! @itemx not @@ -16048,7 +16167,6 @@ bbbd $B%5!<%P!<$,$OC1=c$J%9%3%"IU$1$r$9$k$H$-$N$b$N$HF1$8$G!"9gCW$N7?$bF1$8$G$9!#(B - @node Advanced Scoring Examples @subsection $B>e5i%9%3%"IU$1$NNc(B @@ -16062,7 +16180,7 @@ Lars $B$,(B Gnus $B$K4X$7$FOC$r$7$F$$$k$H$-$KH`$K$h$C$F=q$+$l$?5-;v$N%9%3%"$r 1000) @end example -$B$M!"$H$F$bC1=c$G$7$g!)(B +$B$M!"$H$F$bC1=c$G$7$g(B? $BD9$$5-;v$r=q$$$F$$$k$H$-$O!";~!92?$+AGE($J;v$r8@$$$^$9(B: @@ -16103,18 +16221,18 @@ Redmondo $B$,>C$($?7$2<$K$D$$$F=q$$$?$H$-$K%U%)%m!<%"%C%W$7$?A4$F$N?M$O%9(B $B2DG=@-$OL58BBg$G$9!#(B - @node Advanced Scoring Tips @subsection $B>e5i%9%3%"$N$A$g$C$H$7$?Hk7m(B @code{&} $B$H(B @code{|} $BO@M}:nMQ;R$O!"C;=L2sO)O@M}$r9T$$$^$9!#$9$J$o$A!"$=(B $B$N:nMQ$N7k2L$,L@$i$+$K$J$C$F;~E@$G!"0z?t$r2A$,(B @code{false} $B$K$J$k$H!";D$j$N0z?t$rI>2A(B -$B$9$kL\E*$OB8:_$7$J$/$J$j$^$9!#$3$l$OCY$$9gCW(B (@samp{body} $B$d(B -@samp{header}) $B$r:G8e$K;}$C$F$-$F!"B.$$9gCW(B (@samp{from} $B$d(B -@samp{subject}) $B$r:G=i$K;}$C$F$/$k$Y$-$G$"$k$H$$$&;v$r0UL#$7$^$9!#(B +$B$9$kL\E*$OB8:_$7$J$/$J$j$^$9!#$3$l$OCY$$9g(B +$BCW(B (@samp{body} $B$d(B @samp{header}) $B$r:G8e$K;}$C$F$-$F!"B.$$9g(B +$BCW(B (@samp{from} $B$d(B @samp{subject}) $B$r:G=i$K;}$C$F$/$k$Y$-$G$"$k$H$$$&;v(B +$B$r0UL#$7$^$9!#(B -$B4V@\:nMQ;R(B (@code{1-} $B$J$I(B) $B$O$=$l$i$N0z?t$r%9%l%C%I$N(B1$B@$BeA0$K:nMQ$9$k(B +$B4V@\:nMQ;R(B (@code{1-} $B$J$I(B) $B$O$=$l$i$N0z?t$r%9%l%C%I$N0l@$BeA0$K:nMQ$9$k(B $B$h$&$K$7$^$9!#C$($?7$2<$K$D$$$F=q$$$?$H$-$K%U%)%m!<%"%C%W$7$?A4$F$N?M$O%9(B (1- ("subject" "Gnus"))) @end example - @node Score Decays @section $B%9%3%"IeGT(B @cindex score decays @@ -16158,7 +16275,7 @@ Redmondo $B$,>C$($?7$2<$K$D$$$F=q$$$?$H$-$K%U%)%m!<%"%C%W$7$?A4$F$N?M$O%9(B @findex gnus-decay-score @vindex gnus-decay-score-function Gnus $B$O$3$NLdBj$N2r7h$r=u$1$k$?$a$K%9%3%"$rIe$i$;$k5!9=$rDs6!$7$^$9!#%9(B -$B%3%"%U%!%$%k$OFI$_9~$^$l!"(B @code{gnus-decay-scores} $B$,(B @code{nil} $B$G$J$$(B +$B%3%"%U%!%$%k$OFI$_9~$^$l!"(B@code{gnus-decay-scores} $B$,(B @code{nil} $B$G$J$$(B $B$H!"(Bgnus $B$O%9%3%"%U%!%$%k$rIeGT5!9=$rDL$7!"A4$F$N1JB3$G$J$$%9%3%"K!B'$N(B $B%9%3%"$r2<$2$^$9!#IeGT<+?H$O4X?t(B @code{gnus-decay-score-function} $B$K$h$C(B $B$Fe$2$k$+!#(B -* Mode Lines:: $B%b!<%I9T$K>pJs$rI=<($9$k!#(B -* Highlighting and Menus:: $B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k!#(B -* Buttons:: $B4JC1$J(B10$BJb$G%"%-%l%9g'$rF@$k!#(B -* Daemons:: Gnus $B$O$"$J$?$NN"$GJ*;v$r$NB@$j$d$9$$?);v$rHr$1$kJ}K!!#(B -* Undo:: $B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k!#(B -* Moderation:: $B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+!#(B -* XEmacs Enhancements:: XEmacs $B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_$9$k!#(B -* Fuzzy Matching:: $BBg$-$JLJLS$C$F2?!)(B -* Thwarting Email Spam:: $BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!!#(B -* Various Various:: $BK\Ev$K$$$m$$$m$J$b$N!#(B +* Process/Prefix:: $BB?$/$N07$$L?Na$G;H$o$l$k=,47(B +* Interactive:: Gnus $B$KB?$/$Ne$2$k$+(B +* Mode Lines:: $B%b!<%I9T$K>pJs$rI=<($9$k(B +* Highlighting and Menus:: $B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k(B +* Buttons:: $B4JC1$J==Jb$G%"%-%l%9g'$rF@$k(B +* Daemons:: Gnus $B$O$"$J$?$NN"$GJ*;v$r$NB@$j$d$9$$?);v$rHr$1$kJ}K!(B +* Undo:: $B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k(B +* Moderation:: $B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+(B +* XEmacs Enhancements:: XEmacs $B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_$9$k(B +* Fuzzy Matching:: $BBg$-$JLJLS$C$F2?(B? +* Thwarting Email Spam:: $BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!(B +* Various Various:: $BK\Ev$K$$$m$$$m$J$b$N(B @end menu - @node Process/Prefix @section $B%W%m%;%9(B/$B@\F,0z?t(B @cindex process/prefix convention @@ -16240,14 +16356,13 @@ Gnus $B$O(B1$BF|$K(B1$B2s%9%3%"$rIeGT$5$;$h$&$H$7$^$9!#Nc$($P!"$b$7(B gnus $B$=$l$O$3$N$h$&$J46$8$G$9(B: $B$b$7?tCM@\F,0z?t$,(B N $B$G$"$k$H!"8=:_$N5-;v$+$i;O$a$F!"l(B $B9g$O!"%W%m%;%90u$NIU$$$F$$$k5-;v$K:n6H$,C5n$7$^$9!#A02s$N@_Dj$r(B -@kbd{M P y} $B$GI|5l$5$;$k;v$,$G$-$^$9(B (@pxref{Setting Process Marks})$B!#(B +$B%/$K@Q$_!"A4$F$N%W%m%;%90u$N5-;v$N%j%9%H$r>C5n$7$^$9!#A02s$N@_Dj(B +$B$r(B @kbd{M P y} $B$GI|5l$5$;$k;v$,$G$-$^$9(B (@pxref{Setting Process Marks})$B!#(B @vindex gnus-summary-goto-unread $BB?$/$N?M!9$r6C$+$;!"62$,$i$;$k$H;W$o$l$k$3$H$O!"Nc$($P!"(B@kbd{3 d} $B$OK\Ev(B $B$K(B @kbd{d} @kbd{d} @kbd{d} $B$HF1$8;v$r$9$k;v$G$9!#$=$l$>$l$N(B @kbd{d} ($B$3(B $B$l$O8=:_$N5-;v$K4{FI$N0u$rIU$1$^$9(B) $B$O=i4|@_Dj$G$O0u$rIU$1$?8e$Ko$K?5=E$J?M$G!"$3$l$OK\Ev$KNI$$;v$G$9!#2?$+4m81$J;v$r(B -$B$9$kA0$K!"(B``$BK\Ev$K$3$l$r$7$?$$$N$G$9$+!)(B'' $B$H$$$&$h$&$Jo$KB?$/$N(B Emacs $B$NL?Na$O(B ($B?tCM(B) $B@\F,0z?t$KH?1~$7$^$9!#Nc$($P!"(B -@kbd{C-u 4 C-f} $B$O%]%$%s%H$r(B4$BJ8;z@h$K0\F0$7!"(B@kbd{C-u 9 0 0 I s s p} $B$O(B -$B1JB3(B @code{Suject} $BJ8;zNs$N0lIt%9%3%"K!B'$N(B900$B$r8=:_$N5-;v$K2C$($^$9!#(B +@kbd{C-u 4 C-f} $B$O%]%$%s%H$r(B 4 $BJ8;z@h$K0\F0$7!"(B +@kbd{C-u 9 0 0 I s s p} $B$O1JB3(B @code{Suject} $BJ8;zNs$N0lIt%9%3%"K!B'(B +$B$N(B 900 $B$r8=:_$N5-;v$K2C$($^$9!#(B $B$3$l$OAGE($GNI$$$N$G$9$,!"L?Na$K$b$&>/$7DI2C$N>pJs$rM?$($?$$$H$-$O$I$&$9(B -$B$l$PNI$$$N$G$7$g$&!)$(!<$H!"$?$$$F$$$NL?Na$,$7$F$$$k;v$O!"(B``$B@8$N(B'' $B@\F,(B +$B$l$PNI$$$N$G$7$g$&(B? $B$(!<$H!"$?$$$F$$$NL?Na$,$7$F$$$k;v$O!"(B``$B@8$N(B'' $B@\F,(B $B0z?t$rFCJL$JJ}K!$G2r$`$@$1B?(B -$B$/$N(B @kbd{M-i} $B@\F,8l$r@Q$_=E$M$k;v$,$G$-$^$9!#(B@kbd{M-i a M-C-u} $B$O(B ``$BL?(B -$BNa(B @kbd{M-C-u} $B$K%7%s%\%k@\F,0z?t(B @code{a} $B$rM?$($k(B'' $B$H$$$&$3$H$G$9!#(B -@kbd{M-i a M-i b M-C-u} $B$OL?Na(B @kbd{M-C-u} $B$K%7%s%\%k@\F,0z?t(B @code{a} -@code{b} $B$rM?$($k(B'' $B$H$$$&;v$G$9!#$`$@$1B?$/$N(B @kbd{M-i} $B@\F,8l$r@Q$_=E$M$k;v$,$G$-$^$9!#(B +@kbd{M-i a M-C-u} $B$O(B ``$BL?Na(B @kbd{M-C-u} $B$K%7%s%\%k@\F,0z?t(B @code{a} $B$rM?(B +$B$($k(B'' $B$H$$$&$3$H$G$9!#(B@kbd{M-i a M-i b M-C-u} $B$OL?Na(B @kbd{M-C-u} $B$K%7%s(B +$B%\%k@\F,0z?t(B @code{a} @code{b} $B$rM?$($k(B'' $B$H$$$&;v$G$9!#o$K$?$/$5$s$N$b$N$,$"$j$^$9!#9,1?$J;v$K!"$=$l(B -$B$i$O$9$Y$FF1$89=J8$r;H$$$^$9$N$G!"$"$^$j7y$JL\$K$O2q$o$J$$$G$7$g$&!#(B +$B$3$N%^%K%e%"%k$rDL$7$F!"$"$J$?$O$*$=$i(B +$B$/(B @code{gnus-group-line-format} $B$d(B @code{gnus-summary-mode-line-format} $B$N(B +$B$h$&$K8F$P$l$k$?$/$5$s$NJQ?t$,$"$k;v$K5$IU$$$?$G$7$g$&!#$3$l$i$O(B gnus $B$,(B +$B?'!9$J%P%C%U%!$G$I$N$h$&$K9T$r=PNO$9$k$+$r@)8f$7$^$9!#Hs>o$K$?$/$5$s$N$b(B +$B$N$,$"$j$^$9!#9,1?$J;v$K!"$=$l$i$O$9$Y$FF1$89=J8$r;H$$$^$9$N$G!"$"$^$j7y(B +$B$JL\$K$O2q$o$J$$$G$7$g$&!#(B $B=qK!;EMM(B (format) $B;XDj$NNc$,$"$j$^$9(B ($B%0%k!<%W%P%C%U%!$h$j(B): @samp{%M%S%5y: %(%g%)\n}$B!#$=$l$Oo$K=9$/!"$?$/$5$s$N%Q!<%;%s%H5-(B $B9f$,$I$3$K$G$b$"$j$^$9!#(B @menu -* Formatting Basics:: $B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"$k!#(B -* Mode Line Formatting:: $B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N5,B'!#(B -* Advanced Formatting:: $B?'!9$JJ}K!$G=PNO$r=$@5$9$k!#(B -* User-Defined Specs:: Gnus $B$K$"$J$?<+?H$N4X?t$r8F$P$;$k!#(B -* Formatting Fonts:: $B;EMM$rB?:L$GAGE($K8+$;$k!#(B +* Formatting Basics:: $B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"$k(B +* Mode Line Formatting:: $B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N5,B'(B +* Advanced Formatting:: $B?'!9$JJ}K!$G=PNO$r=$@5$9$k(B +* User-Defined Specs:: Gnus $B$K$"$J$?<+?H$N4X?t$r8F$P$;$k(B +* Formatting Fonts:: $B;EMM$rB?:L$GAGE($K8+$;$k(B @end menu $B8=:_$N$H$3$m!"(Bgnus $B$O0J2<$N=qK!;EMMJQ?t$r;H$$$^$9(B: -@code{gnus-group-line-format}$B!"(B@code{gnus-summary-line-format}$B!"(B -@code{gnus-server-line-format}$B!"(B@code{gnus-topic-line-format}$B!"(B -@code{gnus-group-mode-line-format}$B!"(B@code{gnus-summary-mode-line-format}$B!"(B -@code{gnus-article-mode-line-format}$B!"(B -@code{gnus-server-mode-line-format}$B!"(B -@code{gnus-summary-pick-line-format}$B!#(B +@code{gnus-group-line-format}, @code{gnus-summary-line-format}, @code{gnus-server-line-format}, @code{gnus-topic-line-format}, @code{gnus-group-mode-line-format}, @code{gnus-summary-mode-line-format}, @code{gnus-article-mode-line-format}, @code{gnus-server-mode-line-format}, @code{gnus-summary-pick-line-format}$B!#(B $B$3$l$iA4$F$N=qK!;EMMJQ?t$OG$0U$N(B elisp $B<0$G$"$k;v$b$G$-$^$9!#$=$N>l9g$O!"(B $B$=$l$i$OMW5a$5$l$k9T$KA^F~$9$k$?$a$K(B @code{$BI>2A(B} $B$5$l$^$9!#(B @@ -16380,32 +16490,29 @@ Gnus $B$O$"$J$?<+?H$N=qK!;EMM;XDj$r:n$k$l$NMWAG(B @samp{%} $B$OEv$N%P%C%U%!$,:n@.$5$l$k$H$-$K2?$i$+$NJ8;zNs$d(B -$BB>$N$b$N$GCV$-49$($i$l$^$9!#(B@samp{%5y} $B$O(B ``@samp{y} $B;XDj$rA^F~$7!"(B5$BJ8;z(B -$B$N>l=j$rF@$k$?$a$K6uGr$rF~$l$J$5$$(B'' $B$H$$$&;v$G$9!#(B +$BB>$N$b$N$GCV$-49$($i$l$^$9!#(B@samp{%5y} $B$O(B ``@samp{y} $B;XDj$rA^F~$7!"(B5 $BJ8(B +$B;z$N>l=j$rF@$k$?$a$K6uGr$rF~$l$J$5$$(B'' $B$H$$$&;v$G$9!#(B -$BIaDL$N(B C $B$d(B Emacs Lisp $B$N=qK!;EMM(B (format) $BJ8;zNs$HF1$8$h$&$K!"(B@samp{%} -$B$H=qK!;EMM$N7?$NJ8;z$N4V$N?tCM=$>~;R$O>o$K>/$J$/$H$b$=$ND9$5$K$J$k$h$&$K!"(B -$B=PNO$K(B @dfn{$B5M$a(B} $B$l$i$l$^$9!#(B@samp{%5y} $B$O$=$NItJ,$r>o$K(B ($B>/$J$/$H$b(B) 5 -$BJ8;z$ND9$5$K$J$k$h$&$K!":8$K6uGr$r5M$a$^$9!#$b$7(B @samp{%-5y} $B$H$9$l$P!"(B -$BBe$o$j$K1&B&$K5M$a9~$_$^$9!#(B +$BIaDL$N(B C $B$d(B Emacs Lisp $B$N=qK!;EMM(B (format) $BJ8;zNs$HF1$8$h$&$K!"(B +@samp{%} $B$H=qK!;EMM$N7?$NJ8;z$N4V$N?tCM=$>~;R$O>o$K>/$J$/$H$b$=$ND9$5$K(B +$B$J$k$h$&$K!"=PNO$K(B @dfn{$B5M$a(B} $B$l$i$l$^$9!#(B@samp{%5y} $B$O$=$NItJ,$r>o(B +$B$K(B ($B>/$J$/$H$b(B) 5 $BJ8;z$ND9$5$K$J$k$h$&$K!":8$K6uGr$r5M$a$^$9!#$b(B +$B$7(B @samp{%-5y} $B$H$9$l$P!"Be$o$j$K1&B&$K5M$a9~$_$^$9!#(B $BFC$KD9$$CM$+$i$=$NItJ,$rJ]8n$9$k$?$a$K!"D9$5$r@)8B$7$?$$$H$b;W$&$G$7$g$&!#(B -$B$=$N$?$a$K$O!"(B@samp{%4,6y} $B$H$9$k;v$,$G$-$F!"$3$l$O$=$NNN0h$O7h$7$F(B6$BJ8;z(B -$B$rD6$($kD9$5$K$O$J$i$:!"(B4$BJ8;z$h$j>/$J$$D9$5$K$J$i$J$$$H$$$&;v$G$9!#(B - +$B$=$N$?$a$K$O!"(B@samp{%4,6y} $B$H$9$k;v$,$G$-$F!"$3$l$O$=$NNN0h$O7h$7$F(B 6 $BJ8(B +$B;z$rD6$($kD9$5$K$O$J$i$:!"(B4 $BJ8;z$h$j>/$J$$D9$5$K$J$i$J$$$H$$$&;v$G$9!#(B @node Mode Line Formatting @subsection $B%b!<%I9T=qK!;EMM(B $B%b!<%I9T=qK!;EMMJQ?t(B ($B$9$J$o$A!"(B@code{gnus-summary-mode-line-format}) $B$O(B -$B0J2<$N(B2$B$D$N0c$$0J30$O!"%P%C%U%!9T$K4p$E$/=qK!;EMMJQ?t$H(B -(@pxref{Formatting Basics}) $BF1$8$h$&$J5,B'$K=>$$$^$9(B: +$B0J2<$NFs$D$N0c$$0J30$O!"%P%C%U%!9T$K4p$E$/=qK!;EMMJQ?t(B +$B$H(B (@pxref{Formatting Basics}) $BF1$8$h$&$J5,B'$K=>$$$^$9(B: @enumerate @@ -16415,14 +16522,14 @@ Gnus $B$O$"$J$?<+?H$N=qK!;EMM;XDj$r:n$k$rI=<($9$k$?$a$K;H$&$3$H$,$G$-$^$9!#$(!<(B $B$H!"K\Ev$O$=$l$O;XDj$G$O$J$$$N$G$9(B---@samp{%%} $B$OC1$K=qK!;EMM$,5!3#E*$K(B -$B@Z$jNv$/$N$r@Z$jH4$1$F(B @samp{%} $B$r$=$N$^$^EO$9$?$a$NJ}K!$G!"(BEmacs $B$,(B -@samp{%b} $B$r(B -$B$rI=<($7$J$5$$(B'' $B$H2r$rI=<($7$J$5$$(B'' $B$H2re5i=qK!;EMM(B @@ -16456,7 +16563,7 @@ Gnus $B$O$"$J$?<+?H$N=qK!;EMM;XDj$r:n$k.7?$N(B ISO0861 $BMM(B $B<0$NF|IU$rJV$7$^$9(B---@samp{19960809T230410} $B$G$9!#$3$l$OH/2;$7$K$/$$$N$G!"(B -$B@$5*$rI=$9?t$H;~4V$r:o$.Mn$H$7$F!"(B6$BJ8;z$NF|IU$r;D$7$?$$$H;W$$$^$9!#$=$l(B +$B@$5*$rI=$9?t$H;~4V$r:o$.Mn$H$7$F!"(B6 $BJ8;z$NF|IU$r;D$7$?$$$H;W$$$^$9!#$=$l(B $B$O(B @samp{%~(cut-left 2)~(max-right 6)~(pad 6)o} $B$H$J$k$G$7$g$&!#(B($B@Z$jMn(B $B$H$7(B (cutting) $B$O(B $B:GBg8B(B (maxing) $B$h$j@h$K$J$5$l$^$9$N$G!"7e$GAGE($K8+$((B -$B$k$h$&$K$9$k$?$a$KF|IU$,(B6$BJ8;z$h$j>/$J$/L5$/$J$i$J$$;v$rJ]>Z$9$k$?$a$K5M(B -$B$a9~$_(B (padding) $B$,I,MW$K$J$j$^$9!#(B) +$B$k$h$&$K$9$k$?$a$KF|IU$,(B 6 $BJ8;z$h$j>/$J$/L5$/$J$i$J$$;v$rJ]>Z$9$k$?$a$K(B +$B5M$a9~$_(B (padding) $B$,I,MW$K$J$j$^$9!#(B) $BL5;k(B (ignore) $B$,:G=i$K$J$5$l$^$9!#$=$l$+$i@Z$jMn$H$7(B (cut) $B$,9T$o$l$^$9!#(B $B$=$7$F!"$=$l$+$i:G8e$NA`:n!"5M$a9~$_(B (pad) $B$,9T$o$l$^$9!#(B @vindex gnus-compile-user-specs $B$b$7$"$J$?$,6/$$8D@-$N;}$Ae5i;2>H$r$?$/$5$s;H$C(B +@code{nil} $B$K$7$F$$$F(B ($B=i4|CM$O(B@code{t})$B!"$3$l$i$N>e5i;2>H$r$?$/$5$s;H$C(B $B$F$$$k$J$i!"(BT-gnus $B$,$H$F$bCY$/$J$k$N$,$o$+$k$G$7$g$&!#$3$l$O$"$J$?$,9T(B $B$N308+$KK~B-$7$?$H$-$K(B @kbd{M-x gnus-compile} $B$r$N;XDj$+$i$N>pJs$HA4$/F1$8$h$&$K%P%C%U%!$K(B -$BA^F~$5$l$^$9!#4X?t$O0UL#$NL5$$CM$H6&$K8F$P$l$k;v$b$"$j$($^$9$N$G!"$=$l$N(B -$BBP:v$r$9$k$Y$-$G$9!#(B - -$B?7$7$$4X?t$rDj5A$7$J$$$G$b!"%A%k%@=$>~;R(B (@pxref{Advanced Formatting}) -$B$r;H$C$F$[$H$s$IF1$8;v$rC#@.$9$k;v$,$G$-$^$9!#Nc$G$9(B: @samp{%~(form -(count-lines (point-min) (point)))@@}$B!#$3$3$GM?$($i$l$?<0$OI>2A$5$l$F!"(B -$B8=:_$N9T?t$r$b$?$i$7!"$=$l$+$iA^F~$5$l$^$9!#(B - +$BJ8;zNs$N$N;XDj$+$i$N>pJs$HA4$/F1$8(B +$B$h$&$K%P%C%U%!$KA^F~$5$l$^$9!#4X?t$O0UL#$NL5$$CM$H6&$K8F$P$l$k;v$b$"$j$((B +$B$^$9$N$G!"$=$l$NBP:v$r$9$k$Y$-$G$9!#(B + +$B?7$7$$4X?t$rDj5A$7$J$$$G$b!"%A%k%@=$>~(B +$B;R(B (@pxref{Advanced Formatting}) $B$r;H$C$F$[$H$s$IF1$8;v$rC#@.$9$k;v$,$G(B +$B$-$^$9!#Nc$G$9(B: @samp{%~(form (count-lines (point-min) (point)))@@}$B!#(B +$B$3$3$GM?$($i$l$?<0$OI>2A$5$l$F!"8=:_$N9T?t$r$b$?$i$7!"$=$l$+$iA^F~$5$l$^(B +$B$9!#(B @node Formatting Fonts @subsection $B=qK!;EMM%U%)%s%H(B $B%O%$%i%$%H$N$?$a$N;XDj$,$"$j!"$=$l$i$OA4$F$N=qK!;EMMJQ?t$K$h$C$F6&M-$5$l(B -$B$F$$$^$9!#(B@samp{%(} $B$H(B @samp{%)} $B;XDj$N4V$NJ8>O$OFCJL$J(B -@code{mouse-face} $B%W%m%Q%F%#$,@_Dj$5$l!"$=$l$O$=$3$K%^%&%9$N%]%$%s%?!<$r(B -$B$"$o$;$?$H$-$K(B (@code{gnus-mouse-face} $B$K$h$C$F(B) $B%O%$%i%$%H$5$l$k$3$H$K(B -$B$J$j$^$9!#(B - +$B$F$$$^$9!#(B@samp{%(} $B$H(B @samp{%)} $B;XDj$N4V$NJ8>O$OFCJL(B +$B$J(B @code{mouse-face} $B%W%m%Q%F%#$,@_Dj$5$l!"$=$l$O$=$3$K%^%&%9$N%]%$%s%?!<(B +$B$r$"$o$;$?$H$-$K(B (@code{gnus-mouse-face} $B$K$h$C$F(B) $B%O%$%i%$%H$5$l$k$3$H(B +$B$K$J$j$^$9!#(B @samp{%@{} $B$H(B @samp{%@}} $B;XDj$N4V$NJ8>O$O(B @code{gnus-face-0} $B$r;H$C$FIa(B -$BDL$N%U%'%$%9$,@_Dj$5$l!"$=$l$O=i4|@_Dj$G(B @code{bold} $B$G$9!#$b$7(B -@samp{%@{1} $B$H$7$?$J$i!"Be$o$j$K(B @code{gnus-face-1} $B$rF@!"0J2} $B;X<(;R$N4V$N%F%-%9%H$OFCJL$J(B @code{balloon-help} -$B%W%m%Q%F%#$,(B @code{gnus-balloon-face-0} $B$K@_Dj$5$l$^$9!#(B@samp{%1<} $B$H$9(B -$B$k$H!"(B@code{gnus-balloon-face-1} $B$rF@$F!"B>$bF1MM$G$9!#(B -@code{gnus-balloon-face-*} $BJQ?t$OJ8;zNs$+J8;zNs$rJV$94X?t$r;X$9%7%s%\%k(B -$B$N$I$A$i$+$G$"$kI,MW$,$"$j$^$9!#(B@code{balloon-help-mode} $B$G$O!"%^%&%9$,(B -$B%W%m%Q%F%#$N@_Dj$5$l$F$$$k%F%-%9%H$N>e$rDL2a$9$k$H!"%P%k!<%s%&%#%s%I%&$,(B -$B8=$l$F!"J8;zNs$rI=<($7$^$9!#$3$l$N>\$7$$>pJs$O(B @code{balloon-help-mode} -$B$N@bL@J8;zNs$r;2>H$7$F$/$@$5$$!#(B +$BDL$N%U%'%$%9$,@_Dj$5$l!"$=$l$O=i4|@_Dj$G(B @code{bold} $B$G$9!#$b(B +$B$7(B @samp{%@{1} $B$H$7$?$J$i!"Be$o$j$K(B @code{gnus-face-1} $B$rF@!"0J2} $B;X<(;R$N4V$N%F%-%9%H$OFCJL(B +$B$J(B @code{balloon-help} $B%W%m%Q%F%#$,(B @code{gnus-balloon-face-0} $B$K@_Dj$5(B +$B$l$^$9!#(B@samp{%1<} $B$H$9$k$H!"(B@code{gnus-balloon-face-1} $B$rF@$F!"B>$bF1MM(B +$B$G$9!#(B@code{gnus-balloon-face-*} $BJQ?t$OJ8;zNs$+J8;zNs$rJV$94X?t$r;X$9%7(B +$B%s%\%k$N$I$A$i$+$G$"$kI,MW$,$"$j$^$9!#(B@code{balloon-help-mode} $B$G$O!"%^(B +$B%&%9$,%W%m%Q%F%#$N@_Dj$5$l$F$$$k%F%-%9%H$N>e$rDL2a$9$k$H!"%P%k!<%s%&%#%s(B +$B%I%&$,8=$l$F!"J8;zNs$rI=<($7$^$9!#$3$l$N>\$7$$>pJs(B +$B$O(B @code{balloon-help-mode} $B$N@bL@J8;zNs$r;2>H$7$F$/$@$5$$!#(B $B$3$l$O%0%k!<%W%P%C%U%!$NBeBXo$K2(B -$B$N%&%#%s%I%&$r>C$7$F!"(BEmacs $B$N2hLLA4BN$r@jM-$7$^$9!#$3$l$O=i4|@_Dj$G(B -@code{t} $B$G$9!#(B +$B$N%&%#%s%I%&$r>C$7$F!"(BEmacs $B$N2hLLA4BN$r@jM-$7$^$9!#$3$l$O=i4|@_Dj(B +$B$G(B @code{t} $B$G$9!#(B $B$3$NJQ?t$r(B @code{nil} $B$K@_Dj$9$k$N$O$=$l$J$j$KF0:n$7$^$9$,!"LdBj$b$"$j$^(B $B$9!#4m81$r3P8g$N>e$G;H$C$F$/$@$5$$!#(B @@ -16579,9 +16683,9 @@ Gnus $B$O$"$J$?<+?H$N=qK!;EMM;XDj$r:n$k$N$b$N$rG$L?$9$k%7%s(B -$B%\%k$G$9!#Nc$($P!"%0%k!<%W%P%C%U%!$rI=<($9$k$H$-$O!"%&%#%s%I%&@_Dj4X?t$O(B -@code{group} $B$r%-!<$H$7$F;H$$$^$9!#;HMQ2DG=$JL>A0$N40A4$J0lMw$O2<$K5s$2(B -$B$i$l$F$$$^$9!#(B +$B%\%k$G$9!#Nc$($P!"%0%k!<%W%P%C%U%!$rI=<($9$k$H$-$O!"%&%#%s%I%&@_Dj4X?t(B +$B$O(B @code{group} $B$r%-!<$H$7$F;H$$$^$9!#;HMQ2DG=$JL>A0$N40A4$J0lMw$O2<$K5s(B +$B$2$i$l$F$$$^$9!#(B @dfn{$BCM(B} ($B$9$J$o$A!"(B@dfn{$BJ,3d(B}) $B$O$=$l$>$l$N%P%C%U%!$,$I$l$/$i$$$r@j$a$k(B $B$Y$-$+$r;XDj$7$^$9!#(B@code{article} $BJ,3d$rNc$KJN,2DG=$J(B3$B$DL\$NMWAG!"(B@code{point} $B$r;}$D%P%C%U%!$KCV$+$l$^$9!#(B -@code{frame} $BJ,3d$G$O!"%?%0(B @code{frame-focus} $B$,9=@.MWAG$G$"$k(B ($B$9$J$o(B -$B$A!"(B@code{point} $B%?%0$,B8:_$9$k$+$I$&$+$K$h$C$F!"%j%9%H$N(B3$BHVL\$+(B4$BHVL\$+(B -$B$KB8:_$9$kMWAG(B) $BMUJ,3d$r;}$D:G8e$NI{J,3d$,>GE@$rF@$k;v$K$J$j$^$9!#(B +$B%]%$%s%H$O>JN,2DG=$J;0$DL\$NMWAG!"(B@code{point} $B$r;}$D%P%C%U%!$KCV$+$l$^(B +$B$9!#(B@code{frame} $BJ,3d$G$O!"%?%0(B @code{frame-focus} $B$,9=@.MWAG$G$"$k(B ($B$9(B +$B$J$o$A!"(B@code{point} $B%?%0$,B8:_$9$k$+$I$&$+$K$h$C$F!"%j%9%H$N;0HVL\$+;M(B +$BHVL\$+$KB8:_$9$kMWAG(B) $BMUJ,3d$r;}$D:G8e$NI{J,3d$,>GE@$rF@$k;v$K$J$j$^$9!#(B $B2A(B} $B$5$l$k$b$N$N$h$&$K8+$($k$H$-$O(B ($BL@3N$K$9(B $B$k$H(B---$BJ,3d$N(B @code{car} $B$,4X?t$+86;O4X?t(B (subr) $B$G$"$k$H$-$O(B)$B!"$3$NJ,3d(B $B$O(B @code{$BI>2A(B} $B$5$l$^$9!#7k2L$,(B @code{nil} $B$G$J$$$J$i!"$=$l$OJ,3d$H$7$F(B -$BMQ$$$i$l$^$9!#$3$l$O!"(B@code{gnus-carpal} $B$,(B @code{nil} $B$G$"$l$P(B3$B$D$N%P%C(B -$B%U%!$,!"(B@code{gnus-carpal} $B$,(B @code{nil} $B$G$J$$$J$i!"(B4$B$D$N%P%C%U%!$,B8:_(B -$B$9$k$H$$$&;v$G$9!#(B +$BMQ$$$i$l$^$9!#$3$l$O!"(B@code{gnus-carpal} $B$,(B @code{nil} $B$G$"$l$P;0$D$N%P%C(B +$B%U%!$,!"(B@code{gnus-carpal} $B$,(B @code{nil} $B$G$J$$$J$i!";M$D$N%P%C%U%!$,B8(B +$B:_$9$k$H$$$&;v$G$9!#(B -$B$^$@J#;($G$O$J$$$G$9$C$F!)(B $B$=$l$G$O!"Bg$-$5$K$3$l$r;n$7$F$_$F2<$5$$(B: +$B$^$@J#;($G$O$J$$$G$9$C$F(B? $B$=$l$G$O!"Bg$-$5$K$3$l$r;n$7$F$_$F2<$5$$(B: @lisp (article (horizontal 1.0 @@ -16636,11 +16740,11 @@ Gnus $B$O$"$J$?<+?H$N=qK!;EMM;XDj$r:n$k$l$N(B +$B%s%I%&$r?eJ?$KJ,3d$7!"Fs$D$N%&%#%s%I%&$r2#$KJB$Y$^$9!#$3$l$i$N$=$l$>$l$N(B $B>.JR$NCf$G$O!"A4$F$rIaDL$NN.57$G9T$&;v$,$G$-$^$9!#(B@code{horizontal} $B$N8e(B $B$N?t;z$O!"$3$N>.JR$K2hLL$N$I$l$/$i$$$N3d9g$,M?$($i$l$k$+$r;XDj$7$^$9!#(B @@ -16663,35 +16767,35 @@ buffer-name = group | article | summary ... $B@)8B$K$O!"(B@code{frame} $B$O:G>e0L$NJ,3d$H$7$F$7$+8=$l$k;v$,$G$-$J$$$H$$$&(B $B$b$N$,$"$j$^$9!#(B@var{form} $B$OM-8z$JJ,3d$rJV$9(B Emacs Lisp $B$N<0(B (form) $B$G(B -$B$J$1$l$P$J$j$^$;$s!#$=$l$>$l$NJ,3d$O40A4$K:F5"E*$G!"G$0U$N?t$N(B -@code{vertical} $B$H(B @code{horizontal} $BJ,3d$r4^$`;v$,$G$-$^$9!#(B +$B$J$1$l$P$J$j$^$;$s!#$=$l$>$l$NJ,3d$O40A4$K:F5"E*$G!"G$0U$N?t(B +$B$N(B @code{vertical} $B$H(B @code{horizontal} $BJ,3d$r4^$`;v$,$G$-$^$9!#(B @vindex gnus-window-min-width @vindex gnus-window-min-height @cindex window height @cindex window width -$B@5$7$$Bg$-$5$r8+$D$1$k$N$O>/$7J#;($G$9!#$I$N%&%#%s%I%&$b(B -@code{gnus-window-min-height} ($B=i4|CM(B 1) $B$NJ8;z$N9b$5$h$j$b>.$5$/$F$O$J(B -$B$i$:!">/$J$/$H$b(B @code{gnus-window-min-width} ($B=i4|CM(B 1) $B$NJ8;zI}$G$J$/(B -$B$F$O$J$j$^$;$s!#(BGnus $B$OJ,3d$rE,MQ$9$kA0$K$3$l$r6/@)$7$h$&$H;n$_$^$9!#$b(B -$B$7IaDL$N(B Emacs $B$N%&%#%s%I%&$NI}(B/$B9b$5@)8B$r;H$$$?$$$J$i!"$3$N(B2$B$D$NJQ?t$r(B -@code{nil} $B$K$9$k$@$1$GNI$$$G$9!#(B - -$B$b$7(B Emacs $B$NMQ8l$K$J$8$s$G$$$J$$$N$J$i!"(B@code{horizontal} $B$H(B -@code{vertical} $BJ,3d$O!"4|BT$9$k$b$N$HH?BP$NF0:n$r$9$k$G$7$g$&!#(B -@code{horizontal} $BJ,3d$NCf$N%&%#%s%I%&$O2#$KJB$s$GI=<($5$l!"(B +$B@5$7$$Bg$-$5$r8+$D$1$k$N$O>/$7J#;($G$9!#$I$N%&%#%s%I%&(B +$B$b(B @code{gnus-window-min-height} ($B=i4|CM(B 1) $B$NJ8;z$N9b$5$h$j$b>.$5$/$F$O(B +$B$J$i$:!">/$J$/$H$b(B @code{gnus-window-min-width} ($B=i4|CM(B 1) $B$NJ8;zI}$G$J(B +$B$/$F$O$J$j$^$;$s!#(BGnus $B$OJ,3d$rE,MQ$9$kA0$K$3$l$r6/@)$7$h$&$H;n$_$^$9!#(B +$B$b$7IaDL$N(B Emacs $B$N%&%#%s%I%&$NI}(B/$B9b$5@)8B$r;H$$$?$$$J$i!"$3$NFs$D$NJQ?t(B +$B$r(B @code{nil} $B$K$9$k$@$1$GNI$$$G$9!#(B + +$B$b$7(B Emacs $B$NMQ8l$K$J$8$s$G$$$J$$$N$J$i!"(B +@code{horizontal} $B$H(B @code{vertical} $BJ,3d$O!"4|BT$9$k$b$N$HH?BP$NF0:n$r(B +$B$9$k$G$7$g$&!#(B@code{horizontal} $BJ,3d$NCf$N%&%#%s%I%&$O2#$KJB$s$GI=<($5$l!"(B @code{vertical} $BJ,3d$NCf$N%&%#%s%I%&$O>e2<$KI=<($5$l$^$9!#(B @findex gnus-configure-frame -$B%&%#%s%I%&$N@_CV$K4X$7$F@\(B -@code{gnus-configure-frame} $B$r8F$V$3$H$G$9!#$3$l$O%P%C%U%!$rJ,3d$9$k$H$-(B -$B$KA4$F$NK\Ev$N;E;v$r$9$k4X?t$G$9!#2<$N$b$N$O(B5$B%&%#%s%I%&$N$H$F$b$P$+$2$?(B -$B@_Dj$G$9!#(B2$B$D$r%0%k!<%W%P%C%U%!$K!"(B3$B$D$r5-;v%P%C%U%!$N$?$a$K=<$F$^$9!#(B -($B$=$l$O$P$+$2$F$$$k$H8@$C$?$G$7$g!#(B) $B$b$72<$NJ8$r(B @code{$BI>2A(B} $B$9$k$H!"Ia(B -$BDL$N(B gnus $B$N7PO)$r;H$o$J$$$G!"$9$0$K$=$l$,$I$N$h$&$K8+$($k$+$N9M$($rF@$k(B -$B;v$,$G$-$^$9!#K~B-$9$k$^$G$=$l$GM7$s$G!"$=$l$+$i(B -@code{gnus-add-configuration} $B$r;H$C$F?7$7$$A[A|$r%P%C%U%!@_Dj%j%9%H$K2C(B -$B$($F2<$5$$!#(B +$B%&%#%s%I%&$N@_CV$K4X$7$F(B +$B@\(B @code{gnus-configure-frame} $B$r8F$V$3$H$G$9!#$3$l$O%P%C%U%!$rJ,3d$9$k(B +$B$H$-$KA4$F$NK\Ev$N;E;v$r$9$k4X?t$G$9!#2<$N$b$N$O(B 5 $B%&%#%s%I%&$N$H$F$b$P(B +$B$+$2$?@_Dj$G$9!#Fs$D$r%0%k!<%W%P%C%U%!$K!";0$D$r5-;v%P%C%U%!$N$?$a$K=<$F(B +$B$^$9!#(B($B$=$l$O$P$+$2$F$$$k$H8@$C$?$G$7$g!#(B) $B$b$72<$NJ8$r(B @code{$BI>2A(B} $B$9$k(B +$B$H!"IaDL$N(B gnus $B$N7PO)$r;H$o$J$$$G!"$9$0$K$=$l$,$I$N$h$&$K8+$($k$+$N9M$((B +$B$rF@$k;v$,$G$-$^$9!#K~B-$9$k$^$G$=$l$GM7$s$G!"$=$l$+(B +$B$i(B @code{gnus-add-configuration} $B$r;H$C$F?7$7$$A[A|$r%P%C%U%!@_Dj%j%9%H(B +$B$K2C$($F2<$5$$!#(B @lisp (gnus-configure-frame @@ -16733,9 +16837,9 @@ The GNU Emacs Lisp Reference Manual}. XEmacs $B$G$O!"%U%l!<%`%W%m%Q%F%#%j(B @code{gnus-buffer-configuration} $B$K;HMQ2DG=$JA4$F$N%-!<$N0lMw$O$=$N=i4|(B $BCM$G8+$D$1$k$3$H$,$G$-$^$9!#(B -$B%-!<(B @code{message} $B$O(B @code{gnus-group-mail} $B$H(B -@code{gnus-summary-mail-other-window} $B$NN>J}$G;H$o$l$k;v$KCm0U$7$F2<$5$$!#(B -$B$b$7(B2$B$D$r6hJL$9$k$[$&$,K>$^$7$$$J$i!"$3$N$h$&$JJ*$r;H$&;v$,$G$-$^$9(B: +$B%-!<(B @code{message} $B$O(B @code{gnus-group-mail} $B$H(B @code{gnus-summary-mail-other-window} $B$N(B +$BN>J}$G;H$o$l$k;v$KCm0U$7$F2<$5$$!#$b$7Fs$D$r6hJL$9$k$[$&$,K>$^$7$$$J$i!"(B +$B$3$N$h$&$JJ*$r;H$&;v$,$G$-$^$9(B: @lisp (message (horizontal 1.0 @@ -16774,20 +16878,56 @@ The GNU Emacs Lisp Reference Manual}. XEmacs $B$G$O!"%U%l!<%`%W%m%Q%F%#%j(B (article 1.0)))) @end lisp -$BIaDL$O$3$l$i$N(B @code{gnus-add-configuration} $B8F$S=P$7$r%U%!%$%k(B -@code{.gnus.el} $B$KF~$l$k$+!"2?$i$+$N5/F0;~$N%U%C%/$KF~$l$k$G$7$g$&(B---$B$=(B -$B$l$i$O(B gnus $B$,FI$_9~$^$l$?8e$Ko$K(B ``$B@5$7$$(B'' $B%&%#%s%I%&@_Dj$r6/@)(B -$B$7$?$$$N$G$"$l$P!"(B@code{gnus-always-force-window-configuration} $B$r(B -@code{nil} $B$G$J$$CM$K@_Dj$9$k;v$,$G$-$^$9!#(B +$B$7$?$$$N$G$"$l$P!"(B +@code{gnus-always-force-window-configuration} $B$r(B @code{nil} $B$G$J$$CM$K@_(B +$BDj$9$k;v$,$G$-$^$9!#(B $BLZI=<($r;H$C$F$$$F(B (@pxref{Tree Display})$B!"LZ%&%#%s%I%&$O?bD>J}8~$KJL$N(B $B%&%#%s%I%&$GI=<($5$l$k$J$i!"%&%#%s%I%&$NBg$-$5$,JQ99$5$l$k$3$H$rHr$1$k$?(B $B$a$K(B @code{gnus-tree-minimize-window} $B$r$$$8$k$N$,NI$$$G$7$g$&!#(B +@subsection $B%&%#%s%I%&@_Dj$NNc(B + +@itemize @bullet +@item +$B:8B&$r69$a$F%0%k!<%W%P%C%U%!$K!#1&B&$rJ,3d$7$F35N,%P%C%U%!(B ($B>e(B 1/6) $B$H(B +$B5-;v%P%C%U%!(B ($B2<(B) $B$K!#(B + +@ifinfo +@example ++---+---------+ +| G | Summary | +| r +---------+ +| o | | +| u | Article | +| p | | ++---+---------+ +@end example +@end ifinfo + +@lisp +(gnus-add-configuration + '(article + (horizontal 1.0 + (vertical 25 (group 1.0)) + (vertical 1.0 + (summary 0.16 point) + (article 1.0))))) + +(gnus-add-configuration + '(summary + (horizontal 1.0 + (vertical 25 (group 1.0)) + (vertical 1.0 (summary 1.0 point))))) +@end lisp +@end itemize @node Faces and Fonts @section $B%U%'%$%9$H%U%)%s%H(B @@ -16799,7 +16939,6 @@ The GNU Emacs Lisp Reference Manual}. XEmacs $B$G$O!"%U%l!<%`%W%m%Q%F%#%j(B $B$G$9!#C1$K(B @kbd{M-x customize-face} $B$H$d$C$F!"JQ$($?$$%U%'%$%9$rA*$S=P$7(B $B$F!"I8=`$N%+%9%?%^%$%:%$%s%?!<%U%'!<%9$r;H$C$FJQ99$9$k;v$,$G$-$^$9!#(B - @node Compilation @section $B%3%s%Q%$%k(B @cindex compilation @@ -16807,19 +16946,20 @@ The GNU Emacs Lisp Reference Manual}. XEmacs $B$G$O!"%U%l!<%`%W%m%Q%F%#%j(B @findex gnus-compile -$B$"$N9T=qK!;EMM;XDjJQ?t$r3P$($F$$$^$9$+!)(B @code{gnus-summary-line-format}$B!"(B -@code{gnus-group-line-format} $B$J$I$J$I$G$9!#DL>o(B T-gnus $B$O$3$l$i$NJQ?t$r(B -$B%P%$%H%3%s%Q%$%k$7$F;H$&$N$G!"B.EYDc2<$O:G>.8B$K?)$$;_$a$i$l$^$9!#$7$+$7(B -@code{gnus-compile-user-specs} $B$r(B @code{nil} ($B=i4|CM$O(B @code{t}) $B$K$7$?(B -$B>l9g$O!"IT1?$J;v$K$=$l$i$rJQ99$9$k$HBgJQ=EBg$JB.EYDc2<$r0z$-5/$3$9;v$K$J(B -$B$j$^$9!#(B ($B$3$l$i$NJQ?t$N=i4|CM$O$=$l$i$K4XO"IU$1$i$l$?%P%$%H%3%s%Q%$%k$5(B -$B$l$?4X?t$r;}$C$F$$$^$9$,!"MxMQo(B T-gnus $B$O$3$l$i$NJQ?t$r%P%$%H%3%s%Q%$%k$7$F;H$&$N$G!"B.EY(B +$BDc2<$O:G>.8B$K?)$$;_$a$i$l$^$9!#$7$+(B +$B$7(B @code{gnus-compile-user-specs} $B$r(B @code{nil} ($B=i4|CM$O(B @code{t}) $B$K$7(B +$B$?>l9g$O!"IT1?$J;v$K$=$l$i$rJQ99$9$k$HBgJQ=EBg$JB.EYDc2<$r0z$-5/$3$9;v$K(B +$B$J$j$^$9!#(B($B$3$l$i$NJQ?t$N=i4|CM$O$=$l$i$K4XO"IU$1$i$l$?%P%$%H%3%s%Q%$%k(B +$B$5$l$?4X?t$r;}$C$F$$$^$9$,!"MxMQo$K:G?7$N(B $B$b$N$K$7$F$*$/$+$r;XDj$7$^$9!#$=$l$O%7%s%\%k$N%j%9%H$G$9!#;H$&;v$N$G$-$k(B -$B%7%s%\%k$O(B @code{group} $B!"(B@code{article}$B!"(B@code{summary}$B!"(B@code{server}$B!"(B -@code{browse}$B!"(B@code{tree} $B$J$I$G$9!#$b$7BP1~$9$k%7%s%\%k$,B8:_$9$k$H!"(B -gnus $B$O3:Ev$9$k$G$"$m$&>pJs$G%b!<%I9T$r99?7$7$^$9!#$3$NJQ?t$,(B @code{nil} -$B$G$"$k$J$i!"2hLL$N:FIA2h$O$b$C$HB.$$$G$7$g$&!#(B +$B%7%s%\%k(B +$B$O(B @code{group}, @code{article}, @code{summary}, @code{server}, @code{browse}, @code{tree} $B$J(B +$B$I$G$9!#$b$7BP1~$9$k%7%s%\%k$,B8:_$9$k$H!"(Bgnus $B$O3:Ev$9$k$G$"$m$&>pJs$G(B +$B%b!<%I9T$r99?7$7$^$9!#$3$NJQ?t$,(B @code{nil} $B$G$"$k$J$i!"2hLL$N:FIA2h$O$b$C(B +$B$HB.$$$G$7$g$&!#(B @cindex display-time @@ -16868,7 +17008,6 @@ gnus $B$O3:Ev$9$k$G$"$m$&>pJs$G%b!<%I9T$r99?7$7$^$9!#$3$NJQ?t$,(B @code{nil} $B$$@_Dj$G$O$J$$$H$$$&;v$KCm0U$7$F2<$5$$!#MxMQpJs$G%b!<%I9T$r99?7$7$^$9!#$3$NJQ?t$,(B @code{nil} (setq gnus-visual '(highlight)) @end lisp -@code{gnus-visual} $B$,(B @code{t} $B$G$"$k$H!"%O%$%i%$%H$H%a%K%e!<$OA4$F$N(B -gnus $B$N%P%C%U%!$G;HMQ$5$l$^$9!#(B +@code{gnus-visual} $B$,(B @code{t} $B$G$"$k$H!"%O%$%i%$%H$H%a%K%e!<$OA4$F(B +$B$N(B gnus $B$N%P%C%U%!$G;HMQ$5$l$^$9!#(B $BB>$NA4$F$N%P%C%U%!$N308+$K1F6A$9$kAm9gE*$JJQ?t$O(B: @table @code @item gnus-mouse-face @vindex gnus-mouse-face -$B$3$l$O(B gnus $B$G%^%&%9$N%O%$%i%$%H$K;H$o$l$k%U%'%$%9(B ($B$9$J$o$A!"%U%)%s%H(B) -$B$G$9!#(B@code{gnus-visual} $B$,(B @code{nil} $B$G$"$k$H!"%^%&%9%O%$%i%$%H$O$J$5(B -$B$l$^$;$s!#(B +$B$3$l$O(B gnus $B$G%^%&%9$N%O%$%i%$%H$K;H$o$l$k%U%'%$%9(B ($B$9$J$o$A!"%U%)%s(B +$B%H(B) $B$G$9!#(B@code{gnus-visual} $B$,(B @code{nil} $B$G$"$k$H!"%^%&%9%O%$%i%$%H$O(B +$B$J$5$l$^$;$s!#(B @end table @@ -16966,7 +17105,6 @@ gnus $B$N%P%C%U%!$G;HMQ$5$l$^$9!#(B @end table - @node Buttons @section $B%\%?%s(B @cindex buttons @@ -16974,19 +17112,18 @@ gnus $B$N%P%C%U%!$G;HMQ$5$l$^$9!#(B @cindex click $B:G6a$G$O!":G?7N.9T$N%^%&%9(B @dfn{mouse} $BAuCV$,!"$A$c$s$H$7$?A`:nK!$r3X$S(B -$B$?$,$i$J$$%J%&$J%d%s%0$N4V$GBg?M5$$G$9!#$=$l$G$O!";d$,(BTops 20 $B%7%9%F%`>e(B -$B$G(B Emacs $B$r;H$C$F$$$?:"$N(B '89 $BG/$N2F$r;W$$5/$3$7$F$_$^$7$g$&!#(B300 $B?M$NMx(B -$BMQe$G!"$_$s$J$,(B Simula $B%3%s%Q%$%i$rAv$i$;$F$$$^$7$?!#(B +$B$?$,$i$J$$%J%&$J%d%s%0$N4V$GBg?M5$$G$9!#$=$l$G$O!";d$,(B Tops 20 $B%7%9%F%`(B +$B>e$G(B Emacs $B$r;H$C$F$$$?:"$N(B '89 $BG/$N2F$r;W$$5/$3$7$F$_$^$7$g$&!#(B300 $B?M$N(B +$BMxMQe$G!"$_$s$J$,(B Simula $B%3%s%Q%$%i$rAv$i$;$F$$$^$7$?!#(B $B$"$"!"$P$+$P$+$7$$(B! $B$[$s$H$K$=$&$@$M!#(B @vindex gnus-carpal -$B$^$:$G$9$M!"(B@code{gnus-carpal} $B$r(B @code{t} $B$K@_Dj$9$k$3$H$K$h$C(B -$B$F!"%/%j%C%/$9$k$@$1$G2?$G$b$G$-$k%\%?%s$@$i$1$N%P%C%U%!$r(B gnus -$B$KI=<($5$;$k$3$H$,$G$-$^$9!#$H$C$F$b4JC1$G$9!"$[$s$H$K!#;X05NEK!(B -$B$N@h@8$K65$($F$"$2$F!#(B($BLuCm(B: carpal $B$H$O$K$b2?$+$=$&$$$C$?$3$H$G$9!#(B +Gnus$B!"$=$l$O(B($B8@$$EA$($K$h$l$P(B)$B$+$D$F=q$+$l$?$$$+$J$k%W%m%0%i%`$h$j$bBg$-(B +$B$/!"$"$J$?$,$d$C$FM_$7$$$H;W$&$5$^$6$^$J4qL/$J$3$H$r!"$"$J$?$N$$$J$$$H$3(B +$B$m$G9T$C$F$/$l$k$b$N$G$9!#Nc$($P!"$"$J$?$O;~$?$^?7Ce%a!<%k$r%A%'%C%/$7$F(B +$B$b$i$$$?$/$J$k$+$bCN$l$^$;$s!#$"$k$$$O(B Emacs $B$r$7$P$i$/J|$C$F$*$$$?$H$-(B +$BA4$F$N%5!<%P$N@\B3$r@ZCG$7$F$b$i$$$?$/$J$k$+$b$7$l$^$;$s!#B>$K$b2?$+$=$&(B +$B$$$C$?$3$H$G$9!#(B -Gnus $B$O$5$^$6$^$J@)8f;R(B @dfn{handlers} $B$rDj5A$9$k$3$H$K$h$C$F$=(B -$B$N$h$&$J$3$H$r2DG=$K$7$^$9!#3F@)8f;R$O;0$D$NMWAG$+$i@.$j$^$9!#(B -@var{$B4X?t(B}$B!"(B@var{$B;~4V(B}$B!"(B@var{$B6uE>(B} $B%Q%i%a!<%?$G$9!#(B +Gnus $B$O$5$^$6$^$J@)8f;R(B @dfn{handlers} $B$rDj5A$9$k$3$H$K$h$C$F$=$N$h$&$J(B +$B$3$H$r2DG=$K$7$^$9!#3F@)8f;R$O;0$D$NMWAG$+$i@.$j$^$9!#(B +@var{$B4X?t(B}, @var{$B;~4V(B}, @var{$B6uE>(B} $B%Q%i%a!<%?$G$9!#(B -$B0J2<$O(B Emacs $B$,2?$b$7$J$$6uE>>uBV$,;0==J,B3$$$?$H$-$K@\B3$r@ZCG(B -$B$9$k@)8f;R$NNc$G$9!#(B +$B0J2<$O(B Emacs $B$,2?$b$7$J$$6uE>>uBV$,;0==J,B3$$$?$H$-$K@\B3$r@ZCG$9$k@)8f(B +$B;R$NNc$G$9!#(B @lisp (gnus-demon-close-connections nil 30) @end lisp -$B0J2<$O(B Emacs $B$,2?$b$7$F$$$J$$$H$-!"0l;~4VKh$K(B PGP $B%X%C%@!<$rAv::(B -$B$9$k@)8f;R$G$9!#(B +$B0J2<$O(B Emacs $B$,2?$b$7$F$$$J$$$H$-!"0l;~4VKh$K(B PGP $B%X%C%@!<$rAv::$9$k@)8f(B +$B;R$G$9!#(B @lisp (gnus-demon-scan-pgp 60 t) @@ -17059,29 +17194,27 @@ Gnus $B$O$5$^$6$^$J@)8f;R(B @dfn{handlers} $B$rDj5A$9$k$3$H$K$h$C$F$=(B $B@2$i$7$$J}K!$G0l=o$KF0:n$7$^$9!#4pK\E*$K$O!"(B@var{$B6uE>(B} $B$,(B @code{nil} $B$N(B $B;~$K$O$3$N4X?t$O(B @var{$B;~4V(B} $BJ,Kh$K8F$S=P$5$l$^$9!#(B -$B$b$7(B @var{$B6uE>(B} $B$,(B @code{t} $B$G$"$l$P!"$3$N4X?t$O(B Emacs $B$,2?$b$7(B -$B$F$$$J$$;~$K8B$j!"(B@var{$B;~4V(B} $BJ,8e$K8F$S=P$5$l$^$9!#0lC6(B Emacs $B$,(B -$B$:$C$H6uE>>uBV$K$J$C$?8e$O!"$3$N4X?t$O(B @var{$B;~4V(B} $BJ,Kh$K8F$S=P$5(B -$B$l$^$9!#(B +$B$b$7(B @var{$B6uE>(B} $B$,(B @code{t} $B$G$"$l$P!"$3$N4X?t$O(B Emacs $B$,2?$b$7$F$$$J$$(B +$B;~$K8B$j!"(B@var{$B;~4V(B} $BJ,8e$K8F$S=P$5$l$^$9!#0lC6(B Emacs $B$,$:$C$H6uE>>uBV$K(B +$B$J$C$?8e$O!"$3$N4X?t$O(B @var{$B;~4V(B} $BJ,Kh$K8F$S=P$5$l$^$9!#(B -@var{$B6uE>(B} $B$,?t$G(B @var{$B;~4V(B} $B$b?t$G$"$k>l9g!"$3$N4X?t$O!"(B Emacs -$B$N6uE>>uBV$,(B @var{$B6uE>(B} $BJ,B3$$$?;~$K8B$j!"(B@var{$B;~4V(B} $BJ,Kh$K8F$S(B -$B=P$5$l$^$9!#(B +@var{$B6uE>(B} $B$,?t$G(B @var{$B;~4V(B} $B$b?t$G$"$k>l9g!"$3$N4X?t$O!"(BEmacs $B$N6uE>>u(B +$BBV$,(B @var{$B6uE>(B} $BJ,B3$$$?;~$K8B$j!"(B@var{$B;~4V(B} $BJ,Kh$K8F$S=P$5$l$^$9!#(B -@var{$B6uE>(B} $B$,?t$G(B @var{$B;~4V(B} $B$,(B @code{nil} $B$N>l9g!"$3$N4X?t$O!"(B -Emacs $B$N6uE>>uBV$,(B @var{$B6uE>(B} $BJ,B3$/EY$K0lEY8F$S=P$5$l$^$9!#(B +@var{$B6uE>(B} $B$,?t$G(B @var{$B;~4V(B} $B$,(B @code{nil} $B$N>l9g!"$3$N4X?t$O!"(BEmacs $B$N(B +$B6uE>>uBV$,(B @var{$B6uE>(B} $BJ,B3$/EY$K0lEY8F$S=P$5$l$^$9!#(B -$B$=$7$F(B @var{$B;~4V(B} $B$,J8;zNs$N>l9g$O!"(B@samp{07:31} $B$N$h$&$J7A<0$G(B -$B$J$1$l$P$J$i$:!"$3$N4X?t$OKhF|$=$N:"$N;~4V$K$J$k$H0lEY8F$S=P$5$l(B -$B$^$9!#$b$A$m$s!"(B@var{$B6uE>(B} $B%Q%i%a!<%?$GF0:n$,JQ$o$j$^$9!#(B +$B$=$7$F(B @var{$B;~4V(B} $B$,J8;zNs$N>l9g$O!"(B@samp{07:31} $B$N$h$&$J7A<0$G$J$1$l$P(B +$B$J$i$:!"$3$N4X?t$OKhF|$=$N:"$N;~4V$K$J$k$H0lEY8F$S=P$5$l$^$9!#$b$A$m$s!"(B +@var{$B6uE>(B} $B%Q%i%a!<%?$GF0:n$,JQ$o$j$^$9!#(B @vindex gnus-demon-timestep -($B$3$3$G(B ``$BJ,(B'' $B$H8@$C$?$H$-!"$=$l$O>uBV$,(B @var{$B6uE>(B} $BJ,B3$/EY$K0lEY8F$S=P$5$l$^$9!#(B @findex gnus-demon-add-scan-timestamps @findex gnus-demon-add-disconnection $B$3$N$?$a$N4{@=4X?t$,$$$/$D$+:n@.$5$l$F$$$^$9!#(B -@code{gnus-demon-add-nocem}$B!"(B -@code{gnus-demon-add-disconnection}$B!"(B -@code{gnus-demon-add-nntp-close-connection}$B!"(B -@code{gnus-demon-add-scan-timestamps}$B!"(B -@code{gnus-demon-add-rescan}$B!"(B@code{gnus-demon-add-scanmail} $B$G(B -$B$9!#$3$l$i$NG=NO$,M_$7$1$l$P!"C1$K$3$l$i$N4X?t$r(B @file{.gnus} $B$K(B -$BF~$l$F$/$@$5$$!#(B +@code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection}, @code{gnus-demon-add-nntp-close-connection}, @code{gnus-demon-add-scan-timestamps}, @code{gnus-demon-add-rescan}, @code{gnus-demon-add-scanmail} $B$G(B +$B$9!#$3$l$i$NG=NO$,M_$7$1$l$P!"C1$K$3$l$i$N4X?t$r(B @file{.gnus} $B$KF~$l$F$/(B +$B$@$5$$!#(B @findex gnus-demon-init @findex gnus-demon-cancel @vindex gnus-demon-handlers -$B$b$7(B @code{gnus-demon-handlers} $B$G@)8f;R$rD>@\DI2C$7$?>l9g$K$O!"(B -$B$=$l$r8z$+$;$k$?$a$K(B @code{gnus-demon-init} $B$rC$9$K$O!"(B@code{gnus-demon-cancel} $B4X?t$r;H(B -$B$&$3$H$,$G$-$^$9!#(B - -$B%G!<%b%s$NDI2C$O!"$d$j$9$.$k$N$O$H$C$F$b$*9T57$N$h$/$J$$$3$H$G$9!#(B -$BA4$F$N%5!<%P!<$+$iA4$F$N%K%e!<%9$H%a!<%k$rFsICKh$KD4$Y$^$o$94X?t(B -$B$rIU$12C$($A$c$C$?$j$9$k$H!"$I$s$JN)GI$J%7%9%F%`$G$b4V0c$$$J$/$*(B -$BJ'$$H"$K$7$F$7$^$$$^$9!#$=$&F0$/$s$@$b$s!#(B +$B$b$7(B @code{gnus-demon-handlers} $B$G@)8f;R$rD>@\DI2C$7$?>l9g$K$O!"$=$l$r8z(B +$B$+$;$k$?$a$K(B @code{gnus-demon-init} $B$rC$9$K$O!"(B@code{gnus-demon-cancel} $B4X?t$r;H$&$3$H$,$G$-$^$9!#(B +$B%G!<%b%s$NDI2C$O!"$d$j$9$.$k$N$O$H$C$F$b$*9T57$N$h$/$J$$$3$H$G$9!#A4$F$N(B +$B%5!<%P!<$+$iA4$F$N%K%e!<%9$H%a!<%k$rFsICKh$KD4$Y$^$o$94X?t$rIU$12C$($A$c$C(B +$B$?$j$9$k$H!"$I$s$JN)GI$J%7%9%F%`$G$b4V0c$$$J$/$*J'$$H"$K$7$F$7$^$$$^$9!#(B +$B$=$&F0$/$s$@$b$s!#(B @node NoCeM @section NoCeM @cindex nocem @cindex spam -$B%9%Q%`(B @dfn{Spam} $B$H$O!"F1$85-;v$r2?2s$b2?2s$b2?2s$bEj9F$9$k$3$H(B -$B$G$9!#%9%Q%`$O0-$$$3$H$G$9!#%9%Q%`$O6'0-$G$9!#(B +$B%9%Q%`(B @dfn{Spam} $B$H$O!"F1$85-;v$r2?2s$b2?2s$b2?2s$bEj9F$9$k$3$H$G$9!#%9(B +$B%Q%`$O0-$$$3$H$G$9!#%9%Q%`$O6'0-$G$9!#(B -$B%9%Q%`$ODL>o0lF|$+$=$3$i$G!"$5$^$6$^$JH?%9%Q%`5!4X$+$iC$7$5(B -$B$l$^$9!#$3$l$i$N5!4X$ODL>o0l=o$K!"(B@dfn{NoCeM} $B%a%C%;!<%8$bAw?.$7(B -$B$^$9!#(B@dfn{NoCeM} $B$O(B ``no see-'em'' ($BH`$i$r8+$?$/$J$$(B)$B$HH/2;$5$l!"(B -$B0UL#$O$=$NL>A0$NDL$j$G$9(B --- $B$3$N%a%C%;!<%8$O!":a$rHH$7$F$$$k5-(B -$B;v$r!"$D$^$j!">C$7$F$7$^$$$^$9!#(B +$B%9%Q%`$ODL>o0lF|$+$=$3$i$G!"$5$^$6$^$JH?%9%Q%`5!4X$+$iC$7$5$l$^$9!#(B +$B$3$l$i$N5!4X$ODL>o0l=o$K!"(B@dfn{NoCeM} $B%a%C%;!<%8$bAw?.$7$^$9!#(B +@dfn{NoCeM} $B$O(B ``no see-'em'' ($BH`$i$r8+$?$/$J$$(B)$B$HH/2;$5$l!"0UL#$O$=$NL>(B +$BA0$NDL$j$G$9(B --- $B$3$N%a%C%;!<%8$O!":a$rHH$7$F$$$k5-;v$r!"$D$^$j!">C$7$F(B +$B$7$^$$$^$9!#(B -$B$I$&$;$=$N5-;v$,C$7$5$l$F$7$^$&$N$J$i!"$3$l$i(B NoCeM $B%a%C%;!<(B -$B%8$O2?$K;H$o$l$k$N$G$7$g$&(B? $B$"$k%5%$%H$G$OC$7%a%C%;!<%8$r0z(B -$B$-C$7%a%C%;!<%8$N$_$7(B -$B$+0z$-C$7$5$l$F$7$^$&$N$J$i!"$3$l$i(B NoCeM $B%a%C%;!<%8$O2?(B +$B$K;H$o$l$k$N$G$7$g$&(B? $B$"$k%5%$%H$G$OC$7%a%C%;!<%8$r0z$-C$7%a%C%;!<%8$N$_$7$+0z$-C$75n$j$^$9!#(B +Gnus $B$O$3$N%0%k!<%W$N%a%C%;!<%8$r<+F0E*$KFI$_!"2rC$75n$j$^$9!#(B $B$b$A$m$s!"$3$l$i$r%+%9%?%^%$%:$9$k$?$a$NJQ?t$,$$$/$D$+$"$j$^$9!#(B @table @code @item gnus-use-nocem @vindex gnus-use-nocem -$B$3$NJQ?t$r(B @code{t} $B$K@_Dj$9$k$3$H$G3hF0$r3+;O$5$;$^$9!#=i4|@_Dj(B -$B$G$O(B @code{nil} $B$G$9!#(B +$B$3$NJQ?t$r(B @code{t} $B$K@_Dj$9$k$3$H$G3hF0$r3+;O$5$;$^$9!#=i4|@_Dj$G(B +$B$O(B @code{nil} $B$G$9!#(B @item gnus-nocem-groups @vindex gnus-nocem-groups -Gnus $B$O$3$N%0%k!<%W%j%9%H$+$i(B NoCeM $B%a%C%;!<%8$rC5$7$^$9!#=i4|@_(B -$BDjCM$O(B @code{("news.lists.filters" "news.admin.net-abuse.bulletins" -"alt.nocem.misc" "news.admin.net-abuse.announce")} $B$G$9!#(B +Gnus $B$O$3$N%0%k!<%W%j%9%H$+$i(B NoCeM $B%a%C%;!<%8$rC5$7$^$9!#=i4|@_DjCM(B +$B$O(B @code{("news.lists.filters" "news.admin.net-abuse.bulletins" "alt.nocem.misc" "news.admin.net-abuse.announce")} $B$G(B +$B$9!#(B @item gnus-nocem-issuers @vindex gnus-nocem-issuers -NoCeM $B%a%C%;!<%8$rH/9T$9$k?M$O$?$/$5$s$$$^$9!#$3$N%j%9%H$G$O!"C/(B -$B$N8@$&$3$H$K=>$$$?$$$+$r;XDj$7$^$9!#=i4|@_DjCM$O(B @code{("Automoose-1" -"rbraver@@ohww.norman.ok.us" "clewis@@ferret.ocunix.on.ca" -"jem@@xpat.com" "snowhare@@xmission.com" "red@@redpoll.mrfs.oh.us -(Richard E. Depew)")} $B$G$9!#H`$i$O$_$s$J!"N)GI$G9b7i$J;TL1$G$9!#(B +NoCeM $B%a%C%;!<%8$rH/9T$9$k?M$O$?$/$5$s$$$^$9!#$3$N%j%9%H$G$O!"C/$N8@$&$3(B +$B$H$K=>$$$?$$$+$r;XDj$7$^$9!#=i4|@_DjCM$O(B @code{(("Automoose-1" +"clewis@@ferret.ocunix.on.ca" "cosmo.roadkill" "SpamHippo" +"hweede@@snafu.de")} $B$G$9!#H`$i$O$_$s$J!"N)GI$G9b7i$J;TL1$G$9!#(B -$B$3$N%j%9%H$K4^$a$i$l$kM-L>$JH?%9%Q%`2H$O0J2<$G$9!#(B - -@table @samp -@item clewis@@ferret.ocunix.on.ca; -@cindex Chris Lewis -Chris Lewis --- $BC$7$F$$$^$9!#(B - -@item Automoose-1 -@cindex CancelMoose[tm] -$B<+F01?E>$N(B CancelMoose[tm]$B!#(B CancelMoose[tm] $B$O%N%k%&%'!C$7$H!"(Bspew ($B5UN.5-;v(B) $B$r:o=|$7$F$$(B -$B$^$9!#(B -@end table +$B$3$N%j%9%H$K4^$a$i$l$kM-L>$JH?%9%Q%`2H$?$A(B +$B$O(B @file{http://www.xs4all.nl/~rosalind/nocemreg/nocemreg.html} $B$K:\$C$F(B +$B$$$^$9!#(B $B$3$l$iA4$F$N?M!9$N(B NoCeM $B%a%C%;!<%8$KN10U$9$kI,MW$O$"$j$^$;$s(B --- $B8@$&$3(B $B$H$rJ9$-$?$$?M$@$1$G$$$$$s$G$9!#$^$?$=$N?M$+$i$N(B NoCeM$B%a%C%;!<%8A4$F$r$l/$O(B -$B87L)$J!"DxEY$M!#$?$$$F$$$O>/$@$1$I(B)$B!#NI$/;H$o$l$kr7o(B} @dots{})} $BMWAG(B -$B$r;H$&I,MW$,$"$j$^$9!#3F>r7o$OJ8;zNs(B ($B;H$$$?$$l9g$O(B -@var{$BJ8;zNs(B} $B$O;H$$$?$/$J$$/$@$1$I(B)$B!#NI$/;H$o$l$kr(B +$B7o(B} @dots{})} $BMWAG$r;H$&I,MW$,$"$j$^$9!#3F>r7o$OJ8;zNs(B ($B;H$$$?$$l9g$O(B @var{$BJ8;zNs(B} $B$O;H$$$?$/$J$$l9g$K$O!"(B +$BNc$($P!"(BChris Lewis $B$+$i$N(B NoCeM $B%a%C%;!<%8$G!"(B@samp{troll} $B%a%C%;!<%80J(B +$B30$NA4$F$rM_$7$$>l9g$K$O!"(B @lisp ("clewis@@ferret.ocunix.on.ca" ".*" (not "troll")) @end lisp -$B0lJ}!"H`$N(B @samp{spam} $B$H(B @samp{spew} $B%a%C%;!<%80J30$O2?$b$7$?$/(B -$B$J$1$l$P!"0J2<$N$h$&$K$G$-$^$9!#(B +$B0lJ}!"H`$N(B @samp{spam} $B$H(B @samp{spew} $B%a%C%;!<%80J30$O2?$b$7$?$/$J$1$l$P!"(B +$B0J2<$N$h$&$K$G$-$^$9!#(B @lisp ("clewis@@ferret.ocunix.on.ca" (not ".*") "spew" "spam") @@ -17213,19 +17318,16 @@ Richard E. Depew --- $B%"%a%j%+$NC1FHH?%9%Q%`2H!#ZL@$9$k4X?t$G$J(B -$B$/$F$O$J$j$^$;$s!#=i4|@_Dj$G$O(B @code{mc-verify} $B$G$"$j!"$3$l$O(B -Mailcrypt $B4X?t$G$9!#$b$7$3$l$,Hs>o$KCY$/$F!"$"$J$?$,>ZL@7k2L$r5$(B -$B$K$7$J$$(B ($B$3$l$O$?$V$s4m81$G$9(B) $B$N$G$"$l$P!"$3$NJQ?t$r(B -@code{nil} $B$K$9$k$3$H$,$G$-$^$9!#(B - -$B$b$7=pL>:Q$_$N(B NoCeM $B%a%C%;!<%8$r>ZL@:Q$_!"L$=pL>$N%a%C%;!<%8$r(B -$BL$>ZL@(B($B$G$b$=$l$r;H$&(B)$B$H$7$?$$$N$J$i!"0J2<$N$h$&$K$9$k$3$H$,$G$-(B -$B$^$9!#(B +$B$3$l$O(B NoCeM $BH/9TZL@$9$k4X?t$G$J$/$F$O$J(B +$B$j$^$;$s!#=i4|@_Dj$G$O(B @code{mc-verify} $B$G$"$j!"$3$l$O(B Mailcrypt $B4X?t$G(B +$B$9!#$b$7$3$l$,Hs>o$KCY$/$F!"$"$J$?$,>ZL@7k2L$r5$$K$7$J$$(B ($B$3$l$O$?$V$s4m(B +$B81$G$9(B) $B$N$G$"$l$P!"$3$NJQ?t$r(B @code{nil} $B$K$9$k$3$H$,$G$-$^$9!#(B + +$B$b$7=pL>:Q$_$N(B NoCeM $B%a%C%;!<%8$r>ZL@:Q$_!"L$=pL>$N%a%C%;!<%8$rL$>Z(B +$BL@(B ($B$G$b$=$l$r;H$&(B) $B$H$7$?$$$N$J$i!"0J2<$N$h$&$K$9$k$3$H$,$G$-$^$9!#(B @lisp (setq gnus-nocem-verifyer 'my-gnus-mc-verify) @@ -17242,74 +17344,80 @@ Mailcrypt $B4X?t$G$9!#$b$7$3$l$,Hs>o$KCY$/$F!"$"$J$?$,>ZL@7k2L$r5$(B @item gnus-nocem-directory @vindex gnus-nocem-directory -$B$3$l$O(B gnus $B$,(B NoCeM $B%-%c%C%7%e%U%!%$%k$rJ]B8$9$k>l=j$G$9!#=i4|(B -$B@_DjCM$O(B @file{~/News/NoCeM/} $B$G$9!#(B +$B$3$l$O(B gnus $B$,(B NoCeM $B%-%c%C%7%e%U%!%$%k$rJ]B8$9$k>l=j$G$9!#=i4|@_DjCM(B +$B$O(B @file{~/News/NoCeM/} $B$G$9!#(B @item gnus-nocem-expiry-wait @vindex gnus-nocem-expiry-wait -$B8E$$(B NoCeM $B9`L\$r%-%c%C%7%e$+$i>C$9$^$G$NF|?t!#=i4|@_DjCM$O(B 15 -$B$G$9!#$3$l$rC;$/$9$k$[$I(B gnus $B$OB.$/$J$j$^$9$,!"8E$$%9%Q%`$r8+$k(B -$B$3$H$K$J$C$F$7$^$&$+$b$7$l$^$;$s!#(B +$B8E$$(B NoCeM $B9`L\$r%-%c%C%7%e$+$i>C$9$^$G$NF|?t!#=i4|@_DjCM$O(B 15 $B$G$9!#$3(B +$B$l$rC;$/$9$k$[$I(B gnus $B$OB.$/$J$j$^$9$,!"8E$$%9%Q%`$r8+$k$3$H$K$J$C$F$7$^(B +$B$&$+$b$7$l$^$;$s!#(B + +@item gnus-nocem-check-from +@vindex gnus-nocem-check-from +$BHs(B@code{nil} $B$G$O!"5-;v$N%\%G%#$K$"$kH/9T?M$N@5Ev@-$rD4$Y$^$9!#$=$&$G$J(B +$B$$>l9g$O!"CxC$75n$C$F$7$^$C$?J}$,NI$$$G$9(B (@pxref{Subscription -Commands})$B!#(B +@end table +NoCeM $B$r;H$&$H!"$b$7$+$9$k$H%a%b%j6t$$$K$J$k$+$b$7$l$^$;$s!#$"$J$?$,$?$/(B +$B$5$s$N@8$-$?%0%k!<%W(B ($B$D$^$j9XFI$"$k$$$OHs9XFI%0%k!<%W(B) $B$r;}$C$F$$$k$N$J(B +$B$i!"(BEmacs $B%W%m%;%9$OBg$-$/$J$C$F$7$^$&$G$7$g$&!#$b$7$3$l$,LdBj$G$"$l$P!"(B +$BHs9XFI$N%0%k!<%W$rA4It(B ($B$"$k$$$O$=$NB?$/$r(B) $B>C$75n$C$F$7$^$C$?J}$,NI$$$G(B +$B$9(B (@pxref{Subscription Commands})$B!#(B @node Undo @section $B$d$jD>$7(B @cindex undo -$B$7$,$G$-$k$H!"$H$F$bJXMx$G$9!#IaDL$N(B Emacs -$B%P%C%U%!$G$O!"$3$l$O==J,4JC1$G$9(B --- $BC1$K(B @code{undo} $B%\%?%s$r2!(B -$B$9$@$1$G$9!#$7$+$7(B gnus $B$N%P%C%U%!$G$O!"$3$l$O4JC1$G$O$"$j$^$;$s!#(B - -Gnus $B$,%P%C%U%!!C5n$9$k$N$O!"$=$N9T$O>C$(5n$j$^$9$,!"$=$l$O$7$O!"DL>o$N(B Emacs -$B$N(B @code{undo} $B4X?t$G$O9T$J$&$3$H$,$G$-$^$;$s!#(B - -Gnus $B$O!"MxMQ$72DG=$J(B -$B%-!<4X?t$O6O$+$7$+Ds6!$7$F$$$^$;$s!#$3$l$i$O!"%0%k!<%W$N:o=|!"%0%k!<(B -$B%W$NE=$jIU$1!"%0%k!<%W$N4{FI5-;v$N%j%9%H$NJQ99!"$=$l$@$1$J$s$G$9!#(B -$B>-Mh$O$b$C$H4X?t$,DI2C$5$l$k$+$b$7$l$^$;$s$,!"4X?t$NDI2C$O$=$l$>(B -$B$lJ]B8$9$k$Y$-%G!<%?$rA}$d$9$3$H$K$J$k$N$G!"(Bgnus $B$O7h$7$F40A4$d(B -$B$jD>$72DG=$K$O$J$i$J$$$G$7$g$&!#(B +$B$7$,$G$-$k$H!"$H$F$bJXMx$G$9!#IaDL$N(B Emacs $B%P%C%U%!(B +$B$G$O!"$3$l$O==J,4JC1$G$9(B --- $BC1$K(B @code{undo} $B%\%?%s$r2!$9$@$1$G$9!#$7$+(B +$B$7(B gnus $B$N%P%C%U%!$G$O!"$3$l$O4JC1$G$O$"$j$^$;$s!#(B + +Gnus $B$,%P%C%U%!!C5n$9$k(B +$B$N$O!"$=$N9T$O>C$(5n$j$^$9$,!"$=$l$O$7$O!"DL>o$N(B Emacs $B$N(B @code{undo} $B4X?t$G$O9T$J$&$3$H$,$G$-$^(B +$B$;$s!#(B + +Gnus $B$O!"MxMQ$72DG=$J%-!<4X?t$O6O$+$7$+Ds6!$7$F$$$^$;$s!#(B +$B$3$l$i$O!"%0%k!<%W$N:o=|!"%0%k!<%W$NE=$jIU$1!"%0%k!<%W$N4{FI5-;v$N%j%9%H(B +$B$NJQ99!"$=$l$@$1$J$s$G$9!#>-Mh$O$b$C$H4X?t$,DI2C$5$l$k$+$b$7$l$^$;$s$,!"(B +$B4X?t$NDI2C$O$=$l$>$lJ]B8$9$k$Y$-%G!<%?$rA}$d$9$3$H$K$J$k$N$G!"(Bgnus $B$O7h(B +$B$7$F40A4$d$jD>$72DG=$K$O$J$i$J$$$G$7$g$&!#(B @findex gnus-undo-mode @vindex gnus-use-undo @findex gnus-undo -$B$d$jD>$75!G=$O(B @code{gnus-undo-mode} $B%^%$%J!<%b!<%I$K$h$C$FDs6!(B -$B$5$l$^$9!#$3$l$O(B @code{gnus-use-undo} $B$,(B @code{nil} $B0J30$G$"$l$P(B -$B;HMQ$5$l!"$3$l$,=i4|@_Dj$G$9!#(B@kbd{M-C-_} $B%-!<$,(B -@code{gnus-undo} $BL?Na$ro$N(B Emacs $B$N(B -@code{undo} $BL?Na$K$A$g$C$H$@$1;w$F$$$k$H;W$o$l$k$G$7$g$&!#(B - +$B$d$jD>$75!G=$O(B @code{gnus-undo-mode} $B%^%$%J!<%b!<%I$K$h$C$FDs6!$5$l$^$9!#(B +$B$3$l$O(B @code{gnus-use-undo} $B$,(B @code{nil} $B0J30$G$"$l$P;HMQ$5$l!"$3$l$,=i(B +$B4|@_Dj$G$9!#(B@kbd{M-C-_} $B%-!<$,(B @code{gnus-undo} $BL?Na$ro$N(B Emacs $B$N(B @code{undo} $BL?Na$K$A$g$C$H$@$1;w$F$$$k$H;W$o$l$k$G$7$g$&!#(B @node Moderation @section $B;J2qLr(B @cindex moderation -$B$b$7$"$J$?$,;J2q5G'$7(B @@ -17342,22 +17450,20 @@ Gnus $B$O!"MxMQ$N$b$N$rI=<($9$k$3$H$,$G$-$k$N$G!"(Bgnus $B$O$3$l(B -$B$rMxMQ$9$k$3$H$K$7$^$9!#(B +XEmacs $B$O3($d$=$NB>$N$b$N$rI=<($9$k$3$H$,$G$-$k$N$G!"(Bgnus $B$O$3$l$rMxMQ$9(B +$B$k$3$H$K$7$^$9!#(B @menu -* Picons:: $B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!!#(B -* Smileys:: $BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<($9$kJ}K!!#(B -* Toolbar:: $B%/%j%C%/1n!#(B -* XVarious:: $B$=$NB>$N(B XEmacs $B$G(B Gnus $B$JJQ?t!#(B +* Picons:: $B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!(B +* Smileys:: $BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<($9$kJ}K!(B +* Toolbar:: $B%/%j%C%/1n(B +* XVarious:: $B$=$NB>$N(B XEmacs $B$G(B Gnus $B$JJQ?t(B @end menu - @node Picons @subsection Picons @@ -17367,20 +17473,20 @@ XEmacs $B$O3($d$=$NB>$N$b$N$rI=<($9$k$3$H$,$G$-$k$N$G!"(Bgnus $B$O$3$l(B @end iflatex @end iftex -$B$=$l$G!D!"$"$J$?$O$3$N%K%e!<%9%j!<%@!<$r$5$i$K$b$C$HCY$/$7$?$$$C(B -$B$F$o$1$@$M(B! $B$3$l$O$=$&$9$k$N$K$T$C$?$j$JJ}K!$G$9!#$5$i$K$3$l$O!"(B -$B$"$J$?$,%K%e!<%9$rFI$s$G$$$k$s$@$H$$$&$3$H$r!"$"$J$?$N8*1[$7$K8+(B -$B$D$a$F$$$k?M$K0u>]$E$1$k$?$a$NAG@2$i$7$$J}K!$G$b$"$j$^$9!#(B +$B$=$l$G!D!"$"$J$?$O$3$N%K%e!<%9%j!<%@!<$r$5$i$K$b$C$HCY$/$7$?$$$C$F$o$1$@(B +$B$M(B! $B$3$l$O$=$&$9$k$N$K$T$C$?$j$JJ}K!$G$9!#$5$i$K$3$l$O!"$"$J$?$,%K%e!<%9(B +$B$rFI$s$G$$$k$s$@$H$$$&$3$H$r!"$"$J$?$N8*1[$7$K8+$D$a$F$$$k?M$K0u>]$E$1$k(B +$B$?$a$NAG@2$i$7$$J}K!$G$b$"$j$^$9!#(B @menu -* Picon Basics:: picon $B$H$O2?$G!"$I$&$d$C$F$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?$jM7$s$@$j$9$kJQ?t!#(B +* Picon Basics:: picon $B$H$O2?$G!"$I$&$d$C$F$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?$j(B + $BM7$s$@$j$9$kJQ?t(B @end menu - @node Picon Basics @subsubsection Picon $B$N4pAC(B @@ -17393,72 +17499,66 @@ Picon $B$H$O$J$s$G$7$g$&(B? Picons $B%&%'%V%5%$%H$+$iD>@\0zMQ$7$^$7$g$&!#(B @end iftex @quotation -@dfn{Picon} $B$H$O!"(B``$B8D?M%"%$%3%s(B (personal icons)'' $B$NN,$G$9!#$3(B -$B$l$O!"%M%C%H>e$NMxMQ.$5(B -$B$J2hA|$G!"%G!<%?%Y!<%9$r;}$?$;$F!"$"$kEE;R%a!<%k%"%I%l%9$,$"$C$?(B -$B$i!"$=$l$KE,@Z$J2hA|$r8+$D$1$i$l$k$h$&$K$7$F$*$/$b$N$G$9!#MxMQe$NMxMQ.$5$J2hA|$G!"%G!<%?%Y!<(B +$B%9$r;}$?$;$F!"$"$kEE;R%a!<%k%"%I%l%9$,$"$C$?$i!"$=$l$KE,@Z$J2hA|$r8+$D$1(B +$B$i$l$k$h$&$K$7$F$*$/$b$N$G$9!#MxMQo;~@\B3$7$F$$$k$N$J$i$P!"(B -@code{gnus-picons-piconsearch-url} $B$KJ8;zNs(B @* -@file{http://www.cs.indiana.edu/picons/search.html} $B$r@_Dj$9$k$3(B -$B$H$G!"(BSteve Kinzler $B$N(B picon $B8!:w%(%s%8%s$r;H$&$3$H$,$G$-$^$9!#(B +@code{gnus-picons-piconsearch-url} $B$KJ8;z(B +$BNs(B @file{http://www.cs.indiana.edu/picons/search.html} $B$r@_Dj$9$k$3$H$G!"(B +Steve Kinzler $B$N(B picon $B8!:w%(%s%8%s$r;H$&$3$H$,$G$-$^$9!#(B @vindex gnus-picons-database $B$=$&$G$J$1$l$P!"H`$N%G!<%?%Y!<%9$rl=j$K%$%s(B -$B%9%H!<%k$7$F$"$k$b$N$H4|BT$7$^$9!#(B - +$B%?%Y!<%9$NF~l=j$K%$(B +$B%s%9%H!<%k$7$F$"$k$b$N$H4|BT$7$^$9!#(B @node Picon Requirements @subsubsection Picon $B$NF0:n>r7o(B -Gnus $B$K(B picon $B$rI=<($5$;$k$K$O!"(BXEmacs 19.13 $B$+$=$l0J9_$r$NHG$N(B Emacs $B$G$O$I$l$b$^$@2hA|$rI=<((B -$B$G$-$J$$$+$i$G$9!#(B +Gnus $B$K(B picon $B$rI=<($5$;$k$K$O!"(BXEmacs 19.13 $B$+$=$l0J9_$r$NHG$N(B Emacs $B$G$O$I$l$b$^$@2hA|$rI=<($G$-$J$$$+$i$G$9!#(B -$B$5$i$K!"(B@code{x} $B%5%]!<%HIU$-$G(B XEmacs $B$r%3%s%Q%$%k$7$F$$$J$/$F(B -$B$O$J$j$^$;$s!#Gr9u$h$j$b$b$C$H4qNo$J?'IU$-$N(B picon $B$rI=<($9$k$?(B -$B$a$K$O!"(B@code{xpm} $B$+(B @code{gif} $B$I$A$i$+$r(B XEmacs $B$H0l=o$K%3%s(B -$B%Q%$%k$7$F$$$kI,MW$b$"$j$^$9!#(B +$B$5$i$K!"(B@code{x} $B%5%]!<%HIU$-$G(B XEmacs $B$r%3%s%Q%$%k$7$F$$$J$/$F$O$J$j$^(B +$B$;$s!#Gr9u$h$j$b$b$C$H4qNo$J?'IU$-$N(B picon $B$rI=<($9$k$?$a$K$O!"(B +@code{xpm} $B$+(B @code{gif} $B$I$A$i$+$r(B XEmacs $B$H0l=o$K%3%s%Q%$%k$7$F$$$kI,(B +$BMW$b$"$j$^$9!#(B @vindex gnus-picons-convert-x-face -@code{X-Face} $B%X%C%@!<$N4i$rI=<($7$?$$$N$J$i!"(BXEmacs $B$r(B -@code{xface} $B%5%]!<%HIU$-$G%3%s%Q%$%k$7$J$1$l$P$J$j$^$;$s!#$=$&(B -$B$G$J$1$l$P!"(B@code{netpbm} $B%f!<%F%#%j%F%#$r%$%s%9%H!<%k$7$F$*$/$+!"(B -$B$"$k$$$OB>$N2?$+$r;H$&$h$&$K(B @code{gnus-picons-convert-x-face} -$BJQ?t$r$$$8$/$C$F$/$@$5$$!#(B - +@code{X-Face} $B%X%C%@!<$N4i$rI=<($7$?$$$N$J$i!"(BXEmacs $B$r(B @code{xface} $B%5(B +$B%]!<%HIU$-$G%3%s%Q%$%k$7$J$1$l$P$J$j$^$;$s!#$=$&$G$J$1$l$P!"(B +@code{netpbm} $B%f!<%F%#%j%F%#$r%$%s%9%H!<%k$7$F$*$/$+!"$"$k$$$OB>$N2?$+$r(B +$B;H$&$h$&$K(B @code{gnus-picons-convert-x-face} $BJQ?t$r$$$8$/$C$F$/$@$5$$!#(B @node Easy Picons @subsubsection $B3Z!9(B Picons -picon $BI=<($rM-8z$K$9$k$K$O!"C1$K0J2<$N9T$r(B @file{~/.gnus} $B%U%!%$(B -$B%k$KF~$l$F!"(Bgnus $B$r5/F0$7$F$/$@$5$$!#(B +picon $BI=<($rM-8z$K$9$k$K$O!"C1$K0J2<$N9T$r(B @file{~/.gnus} $B%U%!%$%k$KF~$l(B +$B$F!"(Bgnus $B$r5/F0$7$F$/$@$5$$!#(B @lisp (setq gnus-use-picons t) (setq gnus-treat-display-picons t) @end lisp -@code{gnus-picons-database} $B$,(B picon $B%G!<%?%Y!<%9$,4^$^$l$F$$$k(B -$B%G%#%l%/%H%j$r;X$7$F$$$k$3$H$r3NG'$7$F$/$@$5$$!#(B +@code{gnus-picons-database} $B$,(B picon $B%G!<%?%Y!<%9$,4^$^$l$F$$$k%G%#%l%/(B +$B%H%j$r;X$7$F$$$k$3$H$r3NG'$7$F$/$@$5$$!#(B -$B$=$NBe$o$j$K(B Web $B>e$N(B picon $B8!:w%(%s%8%s$r;H$$$?$1$l$P!"$3$l$rDI(B -$B2C$7$^$9!#(B +$B$=$NBe$o$j$K(B Web $B>e$N(B picon $B8!:w%(%s%8%s$r;H$$$?$1$l$P!"$3$l$rDI2C$7$^$9!#(B @lisp (setq gnus-picons-piconsearch-url "http://www.cs.indiana.edu:800/piconsearch") @end lisp - @node Hard Picons @subsubsection $BFq2r(B Picons @@ -17468,60 +17568,58 @@ picon $BI=<($rM-8z$K$9$k$K$O!"C1$K0J2<$N9T$r(B @file{~/.gnus} $B%U%!%$(B @end iflatex @end iftex -Gnus $B$O!"%0%k!<%W$d5-;v$KF~$C$?$j=P$?$j$9$k$N$K=>$C$F(B picon $B$rI=(B -$B<($9$k$3$H$,$G$-$^$9!#(BGnus $B$O(B picon $B%G!<%?%Y!<%9$N;0$D$N>O$H$I$&(B -$BAj8_:nMQ$9$l$P$h$$$+$rCN$C$F$$$^$9!#$9$J$o$A!"(Bgnus $B$O%K%e!<%9%0(B -$B%k!<%W$N3(!"Cx$C$F(B picon $B$rI=<($9$k$3(B +$B$H$,$G$-$^$9!#(BGnus $B$O(B picon $B%G!<%?%Y!<%9$N;0$D$N>O$H$I$&Aj8_:nMQ$9$l$P$h(B +$B$$$+$rCN$C$F$$$^$9!#$9$J$o$A!"(Bgnus $B$O%K%e!<%9%0%k!<%W$N3(!"Cxl=j!#(B@file{news}$B!"(B @file{domains}$B!"(B -@file{users} ($B$J$I$J$I(B) $B$N%5%V%G%#%l%/%H%j!<$,4^$^$l$F$$$k%G%#%l(B -$B%/%H%j!<$r;X$7$F$$$J$1$l$P$J$j$^$;$s!#$3$l$O(B -@code{gnus-picons-piconsearch-url} $B$,(B @code{nil} $B$G$"$k$H$-$N$_(B -$B;HMQ$5$l$^$9!#=i4|@_DjCM$O(B @file{/usr/local/faces/} $B$G$9!#(B +picon $B%G!<%?%Y!<%9$N>l=j!#(B@file{news}, @file{domains}, @file{users} ($B$J(B +$B$I$J$I(B) $B$N%5%V%G%#%l%/%H%j!<$,4^$^$l$F$$$k%G%#%l%/%H%j!<$r;X$7$F$$$J$1$l(B +$B$P$J$j$^$;$s!#$3$l$O(B @code{gnus-picons-piconsearch-url} $B$,(B @code{nil} $B$G(B +$B$"$k$H$-$N$_;HMQ$5$l$^$9!#=i4|@_DjCM$O(B @file{/usr/local/faces/} $B$G$9!#(B @item gnus-picons-piconsearch-url @vindex gnus-picons-piconsearch-url -Web $B>e$N(B picon $B8!:w%(%s%8%s$N(B URL$B!#8=:_CN$i$l$F$$$kM#0l$N%(%s%8(B -$B%s$O(B @file{http://www.cs.indiana.edu:800/piconsearch} $B$G$9!#%M%C(B -$B%H%o!<%/CY1d$r2sHr$9$k$?$a$K(B icon $B$O%P%C%/%0%i%&%s%I$Ge$N(B picon $B8!:w%(%s%8%s$N(B URL$B!#8=:_CN$i$l$F$$$kM#0l$N%(%s%8%s(B +$B$O(B @file{http://www.cs.indiana.edu:800/piconsearch} $B$G$9!#%M%C%H%o!<%/CY(B +$B1d$r2sHr$9$k$?$a$K(B icon $B$O%P%C%/%0%i%&%s%I$Gl=j!#$3$l$O=i4|@_Dj$G$O(B @code{picons} $B$G(B -$B$9(B ($B$3$l$O=i4|@_Dj$G(B @samp{*Picons*} $B%P%C%U%!$K0LCV$7$^$9(B)$B!#B>$N(B -$BM-8z$J>l=j$H$7$F$O(B @code{article}$B!"(B @code{summary}$B!"$"$k$$$O(B -@samp{*scratch*} $B$@$m$&$HCN$C$?$3$H$G$O$"$j$^$;$s!#$?$@$=$N%P%C(B -$B%U%!$rI8=`$N(B gnus $BAkG[CV=hM}(B --- @pxref{Windows Configuration}$B$K(B -$B$h$C$F8+$($k$h$&$K$7$F$*$/$3$H$r3NG'$7$F$/$@$5$$!#(B +picon $B2hA|$,I=<($5$l$k>l=j!#$3$l$O=i4|@_Dj$G$O(B @code{picons} $B$G$9(B ($B$3$l(B +$B$O=i4|@_Dj$G(B @samp{*Picons*} $B%P%C%U%!$K0LCV$7$^$9(B)$B!#B>$NM-8z$J>l=j$H$7$F(B +$B$O(B @code{article}, @code{summary} $B$"$k$$$O(B @samp{*scratch*} $B$@$m$&$HCN$C(B +$B$?$3$H$G$O$"$j$^$;$s!#$?$@$=$N%P%C%U%!$rI8=`$N(B gnus $BAkG[CV=h(B +$BM}(B --- @pxref{Windows Configuration} $B$K$h$C$F8+$($k$h$&$K$7$F$*$/$3$H$r(B +$B3NG'$7$F$/$@$5$$!#(B @item gnus-picons-group-excluded-groups @vindex gnus-picons-group-excluded-groups -$B$3$N@55,I=8=$K%^%C%A$9$k%0%k!<%W$G$O$=$N%0%k!<%W%"%$%3%s$rI=<($5(B -$B$;$^$;$s!#(B +$B$3$N@55,I=8=$K%^%C%A$9$k%0%k!<%W$G$O$=$N%0%k!<%W%"%$%3%s$rI=<($5$;$^$;$s!#(B @end table -$BCm0U(B: $B$b$7(B @code{gnus-use-picons} $B$r(B @code{t} $B$K@_Dj$9$k$H!"AkG[(B -$BCV$K(B @code{picons} $B%P%C%U%!$r4^$a$k$h$&$K@_Dj$5$l$^$9!#(B +$BCm0U(B: $B$b$7(B @code{gnus-use-picons} $B$r(B @code{t} $B$K@_Dj$9$k$H!"AkG[CV(B +$B$K(B @code{picons} $B%P%C%U%!$r4^$a$k$h$&$K@_Dj$5$l$^$9!#(B -$B$5$F!"$3$l$i$r7hDj$7$?8e$K$O!"$3$l$i$N3($,@5$7$$;~$KI=<($5$l$k$h(B -$B$&$K!"0J2<$N4X?t$rE,@Z$J%U%C%/$KDI2C$9$kI,MW$,$"$j$^$9!#(B +$B$5$F!"$3$l$i$r7hDj$7$?8e$K$O!"$3$l$i$N3($,@5$7$$;~$KI=<($5$l$k$h$&$K!"0J(B +$B2<$N4X?t$rE,@Z$J%U%C%/$KDI2C$9$kI,MW$,$"$j$^$9!#(B @vindex gnus-picons-display-where @table @code @item gnus-article-display-picons @findex gnus-article-display-picons -$BCxLr$K$bN)$?$J$$$I$&$G$b$h$$$3$H$r@)8f$G$-$k$h$&$K$7$^$9!#(B +$B0J2<$NJQ?t$O!"$5$i$K$3$l$i$r$I$&Lr$K(B +$B$bN)$?$J$$$I$&$G$b$h$$$3$H$r@)8f$G$-$k$h$&$K$7$^$9!#(B @table @code @item gnus-picons-news-directories @vindex gnus-picons-news-directories -@code{gnus-picons-database} $B$+$i%K%e!<%9%0%k!<%W%U%'%$%9$rC5$9$?(B -$B$a$N%5%V%G%#%l%/%H%j!<$N%j%9%H!#(B@code{("news")} $B$,=i4|@_DjCM$G$9!#(B +@code{gnus-picons-database} $B$+$i%K%e!<%9%0%k!<%W%U%'%$%9$rC5$9$?$a$N%5%V(B +$B%G%#%l%/%H%j!<$N%j%9%H!#(B@code{("news")} $B$,=i4|@_DjCM$G$9!#(B @item gnus-picons-user-directories @vindex gnus-picons-user-directories -@code{gnus-picons-database} $B$+$iMxMQ%U%'%$%9$rC5$9$?$a$N%5(B -$B%V%G%#%l%/%H%j!<$N%j%9%H!#=i4|@_DjCM$O(B @code{("domains")} $B$G$9!#(B -$B$3$N%j%9%H$K(B @samp{"unknown"} $B$rDI2C$7$F$*$-$?$/$J$k?M$b$$$k$G$7$g(B -$B$&!#(B +@code{gnus-picons-database} $B$+$i%I%a%$%sL>%U%'%$%9$rC5$9$?$a$N%5%V%G%#%l(B +$B%/%H%j!<$N%j%9%H!#=i4|@_DjCM$O(B @code{("domains")} $B$G$9!#$3$N%j%9%H(B +$B$K(B @samp{"unknown"} $B$rDI2C$7$F$*$-$?$/$J$k?M$b$$$k$G$7$g$&!#(B @item gnus-picons-convert-x-face @vindex gnus-picons-convert-x-face -$B$b$7(B XEmacs $B$K(B @code{xface} $B%5%]!<%H$,AH$_9~$^$l$F$$$J$1$l$P!"$3(B -$B$NL?Na$,(B @code{X-Face} $B%X%C%@!<$r(B X $B%S%C%H%^%C%W(B (@code{xbm}) $B$K(B -$BJQ49$9$k$N$K;HMQ$5$l$^$9!#=i4|@_DjCM$O(B @code{(format "@{ echo '/* Width=48, -Height=48 */'; uncompface; @} | icontopbm | pbmtoxbm > %s" -gnus-picons-x-face-file-name)} $B$G$9!#(B +$B$b$7(B XEmacs $B$K(B @code{xface} $B%5%]!<%H$,AH$_9~$^$l$F$$$J$1$l$P!"$3$NL?Na$,(B +@code{X-Face} $B%X%C%@!<$r(B X $B%S%C%H%^%C%W(B (@code{xbm}) $B$KJQ49$9$k$N$K;HMQ(B +$B$5$l$^$9!#=i4|@_DjCM(B +$B$O(B @code{(format "@{ echo '/* Width=48, Height=48 */'; uncompface; @} | icontopbm | pbmtoxbm > %s" gnus-picons-x-face-file-name)} $B$G(B +$B$9!#(B @item gnus-picons-x-face-file-name @vindex gnus-picons-x-face-file-name -@code{X-Face} $B%S%C%H%^%C%W$r3JG<$7$F$*$/0l;~%U%!%$%k$NL>A0!#=i4|(B -$B@_DjCM$O(B @code{(format "/tmp/picon-xface.%s.xbm" -(user-login-name))}$B!#(B +@code{X-Face} $B%S%C%H%^%C%W$r3JG<$7$F$*$/0l;~%U%!%$%k$NL>A0!#=i4|@_DjCM(B +$B$O(B @code{(format "/tmp/picon-xface.%s.xbm" (user-login-name))}$B!#(B @item gnus-picons-has-modeline-p @vindex gnus-picons-has-modeline-p -@code{gnus-picons-display-where} $B$r(B @code{picons} $B$K@_Dj$7$F$7$^(B -$B$&$H!"(BXEmacs $B$N%U%l!<%`$O$a$A$c$a$A$c$K$J$C$F$7$^$&$G$7$g$&!#$3(B -$B$l$rB?>/$J$j$H$b7Z8:$9$k$K$O!"(B@code{gnus-picons-has-modeline-p} -$B$r(B @code{nil} $B$K@_Dj$7$F$/$@$5$$!#$3$l$O(B picon $B%P%C%U%!$+$i%b!<(B -$B%I9T$r/$J$j$H(B +$B$b7Z8:$9$k$K$O!"(B@code{gnus-picons-has-modeline-p} $B$r(B @code{nil} $B$K@_Dj$7(B +$B$F$/$@$5$$!#$3$l$O(B picon $B%P%C%U%!$+$i%b!<%I9T$r$H$7$F;n$7$F$_$k3HD%;R$N=g=x%j%9%H!#=i4|@_DjCM$O(B -@code{("xpm" "gif" "xbm")} $B$+$i(B XEmacs $B$KAH$_9~$^$l$F$$$J$$$b$N(B -$B$r0z$$$?$b$N$G$9!#(B +picon $B%U%!%$%kL>$H$7$F;n$7$F$_$k3HD%;R$N=g=x%j%9%H!#=i4|@_DjCM(B +$B$O(B @code{("xpm" "gif" "xbm")} $B$+$i(B XEmacs $B$KAH$_9~$^$l$F$$$J$$$b$N$r0z$$(B +$B$?$b$N$G$9!#(B @item gnus-picons-setup-hook @vindex gnus-picons-setup-hook @@ -17608,22 +17701,22 @@ picon $B$,$b$7I=<($5$l$F$$$l$P!"(Bpicon $B%P%C%U%!$GC$75n$k$+$I$&$+!#(BGnus -$B$O/@aLs$G$-$^$9$,!"%a%b%j$r$$$/$i$+?)$$$^$9!#$b$7$3$NJQ(B -$B?t$r(B @code{nil} $B$K@_Dj$9$l$P!"(Bgnus $B$O$=$N%-%c%C%7%e$r7h$7$F>C$7(B -$B$^$;$s!#$=$l$r>C$75n$k$K$OC5n$5$l$^$9!#=i4|@_DjCM$O(B @code{t} $B$G$9!#(B +Gnus $B$r=*N;$9$k$H$-$K(B picon $B%-%c%C%7%e$r>C$75n$k$+$I$&$+!#(BGnus $B$O/@aLs(B +$B$G$-$^$9$,!"%a%b%j$r$$$/$i$+?)$$$^$9!#$b$7$3$NJQ?t$r(B @code{nil} $B$K@_Dj$9(B +$B$l$P!"(Bgnus $B$O$=$N%-%c%C%7%e$r7h$7$F>C$7$^$;$s!#$=$l$r>C$75n$k$K$OC5n$5$l$^$9!#=i(B +$B4|@_DjCM$O(B @code{t} $B$G$9!#(B @iftex @iflatex @@ -17644,38 +17737,37 @@ Gnus $B$r=*N;$9$k$H$-$K(B picon $B%-%c%C%7%e$r>C$75n$k$+$I$&$+!#(BGnus @end iflatex @end iftex -$B%9%^%$%j!<(B @dfn{smiley} $B$O(B gnus $B$H$OJL$N%Q%C%1!<%8$G$9$,!"%9%^%$(B -$B%j!<$r;H$C$F$$$k%Q%C%1!<%8$O8=:_(B gnus $B$@$1$G$9$N$G!"$3$3$G@bL@$7(B -$B$^$9!#(B +$B%9%^%$%j!<(B @dfn{smiley} $B$O(B gnus $B$H$OJL$N%Q%C%1!<%8$G$9$,!"%9%^%$%j!<$r;H$C(B +$B$F$$$k%Q%C%1!<%8$O8=:_(B gnus $B$@$1$G$9$N$G!"$3$3$G@bL@$7$^$9!#(B -$B0l8@$G8@$($P(B --- gnus $B$G%9%^%$%j!<$r;H$&$K$O!"0J2<$r(B -@file{.gnus.el} $B%U%!%$%k$K=q$$$F$/$@$5$$!#(B +$B0l8@$G8@$($P(B --- gnus $B$G%9%^%$%j!<$r;H$&$K$O!"0J2<$r(B @file{.gnus.el} $B%U%!(B +$B%$%k$K=q$$$F$/$@$5$$!#(B @lisp (setq gnus-treat-display-smileys t) @end lisp -$B%9%^%$%j!<$O!"J8;z$N4i%^!<%/(B --- @samp{:-)}$B!"(B@samp{:-=}$B!"(B -@samp{:-(} $B$J$I$H$$$C$?$b$N(B --- $B$r3($KBP1~$5$;!"J8;z$N4i%^!<%/$N(B -$BBe$o$j$K$=$N3($rI=<($7$^$9!#$3$NJQ49$OJ8;z$K%^%C%A$9$k@55,I=8=$H(B -$B$=$l$N%U%!%$%kL>$X$NBP1~$N%j%9%H$G@)8f$5$l$^$9!#(B +$B%9%^%$%j!<$O!"J8;z$N4i%^!<%/(B --- @samp{:-)}, @samp{:-=}, @samp{:-(} $B$J$I(B +$B$H$$$C$?$b$N(B --- $B$r3($KBP1~$5$;!"J8;z$N4i%^!<%/$NBe$o$j$K$=$N3($rI=<($7(B +$B$^$9!#$3$NJQ49$OJ8;z$K%^%C%A$9$k@55,I=8=$H$=$l$N%U%!%$%kL>$X$NBP1~$N%j%9(B +$B%H$G@)8f$5$l$^$9!#(B @vindex smiley-nosey-regexp-alist @vindex smiley-deformed-regexp-alist $B%9%^%$%j!<$O=i4|@_Dj$G$OFs$D$NJQ49O"A[%j%9%H$NNc$rDs6!$7$F$$$^$9!#(B -@code{smiley-deformed-regexp-alist} (@samp{:)}$B!"(B @samp{:(} $B$J$I(B -$B$K%^%C%A$9$k(B) $B$H!"(B@code{smiley-nosey-regexp-alist} (@samp{:-)}$B!"(B -@samp{:-(} $B$J$I$K%^%C%A$9$k(B) $B$G$9!#(B +@code{smiley-deformed-regexp-alist} (@samp{:)}, @samp{:(} $B$J$I$K%^%C%A(B +$B$9$k(B) $B$H!"(B@code{smiley-nosey-regexp-alist} (@samp{:-)}, @samp{:-(} $B$J$I(B +$B$K%^%C%A$9$k(B) $B$G$9!#(B -$B;HMQ$5$l$kO"A[%j%9%H$O(B @code{smiley-regexp-alist} $BJQ?t$G;XDj$5$l(B -$B$^$9!#$3$N=i4|@_DjCM$O(B @code{smiley-deformed-regexp-alist} $B$G$9!#(B +$B;HMQ$5$l$kO"A[%j%9%H$O(B @code{smiley-regexp-alist} $BJQ?t$G;XDj$5$l$^$9!#$3(B +$B$N=i4|@_DjCM$O(B @code{smiley-deformed-regexp-alist} $B$G$9!#(B -$B3FMWAG$N:G=i$N9`L\$O%^%C%A$5$;$?$$@55,I=8=$G!"FsHVL\$NMWAG$O3($G(B -$BCV$-49$($?$$%0%k!<%W$K%^%C%A$9$k@55,I=8=!"$=$7$F;0HVL\$NMWAG$OI=(B -$B<($5$;$?$$%U%!%$%k$NL>A0$G$9!#(B +$B3FMWAG$N:G=i$N9`L\$O%^%C%A$5$;$?$$@55,I=8=$G!"FsHVL\$NMWAG$O3($GCV$-49$((B +$B$?$$%0%k!<%W$K%^%C%A$9$k@55,I=8=!"$=$7$F;0HVL\$NMWAG$OI=<($5$;$?$$%U%!%$(B +$B%k$NL>A0$G$9!#(B -$B0J2<$NJQ?t$O!"%9%^%$%j!<$,$3$l$i$N%U%!%$%k$rC5$9>l=j!"$"$k$$$O$I(B -$B$N?'$r;H$&$+$H!"$=$NB>$N$b$N$r%+%9%?%^%$%:$7$^$9!#(B +$B0J2<$NJQ?t$O!"%9%^%$%j!<$,$3$l$i$N%U%!%$%k$rC5$9>l=j!"$"$k$$$O$I$N?'$r;H(B +$B$&$+$H!"$=$NB>$N$b$N$r%+%9%?%^%$%:$7$^$9!#(B @table @code @@ -17705,7 +17797,6 @@ Gnus $B$r=*N;$9$k$H$-$K(B picon $B%-%c%C%7%e$r>C$75n$k$+$I$&$+!#(BGnus @end table - @node Toolbar @subsection $B%D!<%k%P!<(B @@ -17720,9 +17811,8 @@ Gnus $B$r=*N;$9$k$H$-$K(B picon $B%-%c%C%7%e$r>C$75n$k$+$I$&$+!#(BGnus @item gnus-use-toolbar @vindex gnus-use-toolbar @code{nil} $B$J$i$P%D!<%k%P!<$rI=<($7$J$$!#(B@code{nil} $B0J30$N>l9g$O!"(B -@code{default-toolbar}$B!"(B@code{top-toolbar}$B!"(B -@code{bottom-toolbar}$B!"(B@code{right-toolbar}$B!"(B@code{left-toolbar} -$B$N$I$l$+$G$J$/$F$O$J$j$^$;$s!#(B +@code{default-toolbar}, @code{top-toolbar}, @code{bottom-toolbar}, @code{right-toolbar}, @code{left-toolbar} $B$N(B +$B$I$l$+$G$J$/$F$O$J$j$^$;$s!#(B @item gnus-group-toolbar @vindex gnus-group-toolbar @@ -17738,35 +17828,31 @@ Gnus $B$r=*N;$9$k$H$-$K(B picon $B%-%c%C%7%e$r>C$75n$k$+$I$&$+!#(BGnus @end table - @node XVarious @subsection $B$5$^$6$^$J(B XEmacs $BJQ?t(B @table @code @item gnus-xmas-glyph-directory @vindex gnus-xmas-glyph-directory -$B$3$l$O(B gnus $B$,3($rC5$9>l=j$G$9!#(BGnus $B$ODL>o$3$N%G%#%l%/%H%j$r<+(B -$BF08!=P$7$^$9$,!"$b$7I8=`E*$G$J$$%G%#%l%/%H%j!<9=B$$r;}$C$F$$$k>l(B -$B9g$O!"$3$l$rl=j$G$9!#(BGnus $B$ODL>o$3$N%G%#%l%/%H%j$r<+F08!=P$7(B +$B$^$9$,!"$b$7I8=`E*$G$J$$%G%#%l%/%H%j!<9=B$$r;}$C$F$$$k>l9g$O!"$3$l$rC$75n$k$+$I$&$+!#(BGnus @end table - - - @node Fuzzy Matching @section $B%U%!%8!<$J0lCW(B @cindex fuzzy matching -Gnus $B$O!"%9%3%"IU$1!"%9%l%C%I$N7A@.!"%9%l%C%IHf3S$J$I$r9T$&$H$-(B -$B$K!"(B@code{Subject} $B9T$N%U%!%8!<$J0lCW(B @dfn{fuzzy matching} $BJ}K!(B -$B$rDs6!$7$F$$$^$9!#(B +Gnus $B$O!"%9%3%"IU$1!"%9%l%C%I$N7A@.!"%9%l%C%IHf3S$J$I$r9T$&$H$-$K!"(B +@code{Subject} $B9T$N%U%!%8!<$J0lCW(B @dfn{fuzzy matching} $BJ}K!$rDs6!$7$F$$(B +$B$^$9!#(B -$B@55,I=8=0lCW$H$O0c$C$F!"%U%!%8!<$J0lCW$O$H$C$F$b%U%!%8!<$G$9!#$"(B -$B$^$j$K$b%U%!%8!<$9$.$F!"2?$,%U%!%8!<(B @dfn{fuzziness} $B$G$"$k$+$H(B -$B$$$&Dj5A$5$($"$j$^$;$s$7!"l9gBEEv$J7k2L$r=P$7$^$9(B --- -$B$?$H$(%K%e!<%9%j!<%@!<$N2>LL$r$+$V$C$?J8;zNs@Z$j9o$_5!$G@8@.$5$l(B -$B$?J8;zNs$,:9$7=P$5$l$F$b!"$G$9!#(B - +@samp{Re: } $B$dA^F~6g$N0u$d6uGrJ8;zEy!9$OJ8;zNs$+$i=|5n$5$l!"$=$N7k2L$rHf(B +$B3S$7$^$9!#$3$l$O$[$H$s$I$N>l9gBEEv$J7k2L$r=P$7$^$9(B --- $B$?$H$(%K%e!<%9%j!<(B +$B%@!<$N2>LL$r$+$V$C$?J8;zNs@Z$j9o$_5!$G@8@.$5$l$?J8;zNs$,:9$7=P$5$l$F$b!"(B +$B$G$9!#(B @node Thwarting Email Spam @section spam $B%a!<%k$NN"$r$+$/(B @@ -17805,44 +17887,42 @@ Gnus $B$O!"%9%3%"IU$1!"%9%l%C%I$N7A@.!"%9%l%C%IHf3S$J$I$r9T$&$H$-(B @cindex UCE @cindex unsolicited commercial email -$B$3$3:G6a$N(B USENET $B$G$O!"@kEA$N%O%2%?%+$I$b$,!"H`$i$N:>5=$d@=IJ$r(B -$B2!$7IU$1$k$?$a$NEE;R%a!<%k%"%I%l%9$rC5$=$&$H$7$F!"5$0c$$$N$h$&$K(B -$B%K%e!<%9>e$r$&$m$D$$$F(B grep $B$7$^$/$C$F$$$^$9!#$3$l$KBP$9$kH?F0$H(B -$B$7$F!"B?$/$N?M!9$,(B @code{From} $B9T$KL50UL#$J%"%I%l%9$rF~$l$O$8$a(B -$B$k$h$&$K$J$C$F$7$^$$$^$7$?!#$3$l$OHs@8;:E*$J$3$H$@$H;d$O;W$$$^$9(B ---- $B$"$J$?$,=q$$$?$3$H$KBP$9$kJV?.$H$7$F@5Ev$J%a!<%k$rAw$k$3$H$r(B -$BLLE]$K$5$;!"$^$?C/$,=q$$$?$b$N$J$N$+$rJ,$+$j$E$i$/$7$^$9!#$3$s$J(B -$B=q$-49$($O7k6I$O!"2!$7IU$1@kEA%a!<%k$=$l<+?H$h$j$bBg$-$J6<0R$H$J(B -$B$k$+$b$7$l$^$;$s!#(B - -$B;d$K$H$C$F$N(B spam $B%a!<%k$N:GBg$NLdBj$O!"13$N8}5=$d@=IJ$r2!$7IU$1(B +$B$k$?$a$NEE;R%a!<%k%"%I%l%9$rC5$=$&$H$7$F!"5$0c$$$N$h$&$K%K%e!<%9>e$r$&$m(B +$B$D$$$F(B grep $B$7$^$/$C$F$$$^$9!#$3$l$KBP$9$kH?F0$H$7$F!"B?$/$N?M!9(B +$B$,(B @code{From} $B9T$KL50UL#$J%"%I%l%9$rF~$l$O$8$a$k$h$&$K$J$C$F$7$^$$$^$7(B +$B$?!#$3$l$OHs@8;:E*$J$3$H$@$H;d$O;W$$$^$9(B --- $B$"$J$?$,=q$$$?$3$H$KBP$9$k(B +$BJV?.$H$7$F@5Ev$J%a!<%k$rAw$k$3$H$rLLE]$K$5$;!"$^$?C/$,=q$$$?$b$N$J$N$+$r(B +$BJ,$+$j$E$i$/$7$^$9!#$3$s$J=q$-49$($O7k6I$O!"2!$7IU$1@kEA%a!<%k$=$l<+?H$h(B +$B$j$bBg$-$J6<0R$H$J$k$+$b$7$l$^$;$s!#(B + +$B;d$K$H$C$F$N(B spam $B%a!<%k$N:GBg$NLdBj$O!"13$N8}\n") @end lisp -$B$=$7$F(B @code{nnmail-split-fancy} $B$K0J2<$NJ,N%5,B'$rF~$l$^$9(B -(@pxref{Fancy Mail Splitting})$B!#(B +$B$=$7$F(B @code{nnmail-split-fancy} $B$K0J2<$NJ,N%5,B'$rF~$l$^(B +$B$9(B (@pxref{Fancy Mail Splitting})$B!#(B @lisp ( @@ -17856,18 +17936,17 @@ Gnus $B$O!"%9%3%"IU$1!"%9%l%C%I$N7A@.!"%9%l%C%IHf3S$J$I$r9T$&$H$-(B @end lisp $B$3$N0UL#$O!"$3$N%"%I%l%9$KFO$$$?A4$F$N%a!<%k$r$^$:5?$$$^$9$,!"(B -@samp{Re:} $B$G;O$^$k(B @code{Subject} $B$,$D$$$F$$$k$+!"(B -@code{References} $B%X%C%@!<$,$D$$$F$$$l$P$*$=$i$/(B OK $B$@$m$&!"$H$$(B -$B$&$3$H$G$9!#;D$j$OA4$F(B @samp{spam} $B%0%k!<%W$K9T$-$^$9!#(B($B$3$N%"%$(B -$B%G%"$O$*$=$i$/(B Tim Pierce $B;a$K$h$k$b$N$G$9!#(B) - -$B$3$l$K2C$($F!"B?$/$N%a!<%k(B spam $B20$O!"$"$J$?$N$H$3$m$N(B -@code{smtp} $B%5!<%P!<$HD>@\OC$7!"(B@code{To} $B%X%C%@!<$K$"$J$?$N%a!<(B -$B%k%"%I%l%9$,L@<($5$l$J$$$h$&$K$7$^$9!#$J$s$G$=$s$J$3$H$r$9$k$N$+(B -$B$O$o$+$j$^$;$s$,(B --- $B$*$=$i$/;d$?$A$NN"$r$+$/5!9=$NN"$r$+$/$?$a(B -$B$+$J(B? $B$I$A$i$K$7$F$b!"BP=h$O4JC1$J$3$H$G$9(B --- $B$"$J$?08$F$G(B -$B$J$$$b$N$rA4It(B @samp{spam} $B%0%k!<%W$K$$$l$k$@$1$G$9!#$3$l$O$*9%(B -$B$_J,N%5,B'$N:G8e$K$3$s$JIw$KF~$l$k$3$H$G$G$-$^$9!#(B +@samp{Re:} $B$G;O$^$k(B @code{Subject} $B$,$D$$$F$$$k$+!"(B@code{References} $B%X%C(B +$B%@!<$,$D$$$F$$$l$P$*$=$i$/(B OK $B$@$m$&!"$H$$$&$3$H$G$9!#;D$j$OA4$F(B +@samp{spam} $B%0%k!<%W$K9T$-$^$9!#(B($B$3$N%"%$%G%"$O$*$=$i$/(B Tim Pierce $B;a$K(B +$B$h$k$b$N$G$9!#(B) + +$B$3$l$K2C$($F!"B?$/$N%a!<%k(B spam $B20$O!"$"$J$?$N$H$3$m$N(B @code{smtp} $B%5!<(B +$B%P!<$HD>@\OC$7!"(B@code{To} $B%X%C%@!<$K$"$J$?$N%a!<%k%"%I%l%9$,L@<($5$l$J$$(B +$B$h$&$K$7$^$9!#$J$s$G$=$s$J$3$H$r$9$k$N$+$O$o$+$j$^$;$s$,(B --- $B$*$=$i$/;d(B +$B$?$A$NN"$r$+$/5!9=$NN"$r$+$/$?$a$+$J(B? $B$I$A$i$K$7$F$b!"BP=h$O4JC1$J$3$H$G(B +$B$9(B --- $B$"$J$?08$F$G$J$$$b$N$rA4It(B @samp{spam} $B%0%k!<%W$K$$$l$k$@$1$G$9!#(B +$B$3$l$O$*9%$_J,N%5,B'$N:G8e$K$3$s$JIw$KF~$l$k$3$H$G$G$-$^$9!#(B @lisp ( @@ -17876,26 +17955,23 @@ Gnus $B$O!"%9%3%"IU$1!"%9%l%C%I$N7A@.!"%9%l%C%IHf3S$J$I$r9T$&$H$-(B "spam") @end lisp -$B;d$N7P83$G$O!"$3$l$G;veA4$F$,@5$7$$%0%k!<%W$KJ,N`$5$l$^$9!#$^(B -$B$"!"$=$l$G$b$H$-$I$-(B @samp{spam} $B%0%k!<%W$r%A%'%C%/$7$F!"@5$7$$(B -$B%a!<%k$,$"$k$+%A%'%C%/$7$J$/$F$O$$$1$^$;$s$1$I$M!#$b$7$"$J$?$O<+(B -$BJ,$,NI$$%M%C%H%o!<%/;TL1$G$"$k$H;W$C$F$$$k$J$i!"$=$l$>$l$N2!$7IU(B -$B$1@kEA%a!<%k$N4X78Ev6I$K6l>p$rAw$jIU$1$k$3$H$5$($b$G$-$^$9(B --- -$B2K$J$H$-$K$G$b$M!#(B +$B;d$N7P83$G$O!"$3$l$G;veA4$F$,@5$7$$%0%k!<%W$KJ,N`$5$l$^$9!#$^$"!"$=$l(B +$B$G$b$H$-$I$-(B @samp{spam} $B%0%k!<%W$r%A%'%C%/$7$F!"@5$7$$%a!<%k$,$"$k$+%A%'%C(B +$B%/$7$J$/$F$O$$$1$^$;$s$1$I$M!#$b$7$"$J$?$O<+J,$,NI$$%M%C%H%o!<%/;TL1$G$"(B +$B$k$H;W$C$F$$$k$J$i!"$=$l$>$l$N2!$7IU$1@kEA%a!<%k$N4X78Ev6I$K6l>p$rAw$jIU(B +$B$1$k$3$H$5$($b$G$-$^$9(B --- $B2K$J$H$-$K$G$b$M!#(B $B$^$?!"$"$J$?$,BU$1p$r$$$&J}$,NI$$(B -$B$H;W$&$+$b$7$l$^$;$s!#$3$l$O(B @* -@file{} -$B$+$i!VL5NA$G!WMxMQ$G$-$^$9!#$[$H$s$I$N(B spam $B%a!<%k$O<+F0E*$KAw$i(B -$B$l$F$$$k$N$G!"$A$g$C$H$@$11'Ch$N%P%i%s%9$,$H$l$k$+$b$7$l$^$;$s!#(B - -$B$3$l$G;d$N$H$3$m$G$OF0$$$F$$$^$9!#$3$l$G$_$s$J$O4JC1$JJ}K!$G;d$K(B -$BO"Mm$ruBV$G$9!#;d$N0U8+$H(B -$B$7$F$O!"(B @code{From} $B%X%C%@!<$K56B$$7$FB8:_$7$J$$%I%a%$%s$KAw$i(B -$B$;$k$N$O%-%?%J%$$G$9!#(B +@file{gnus-junk.el} $B%Q%C%1!<%8$K$h$C$F<+F0E*$K6l>p$r$$$&J}$,NI$$$H;W$&$+(B +$B$b$7$l$^$;$s!#$3$l(B +$B$O(B @file{} $B$+(B +$B$i!VL5NA$G!WMxMQ$G$-$^$9!#$[$H$s$I$N(B spam $B%a!<%k$O<+F0E*$KAw$i$l$F$$$k$N(B +$B$G!"$A$g$C$H$@$11'Ch$N%P%i%s%9$,$H$l$k$+$b$7$l$^$;$s!#(B +$B$3$l$G;d$N$H$3$m$G$OF0$$$F$$$^$9!#$3$l$G$_$s$J$O4JC1$JJ}K!$G;d$KO"Mm$ruBV$G$9!#;d$N0U8+$H$7$F$O!"(B@code{From} $B%X%C%@!<(B +$B$K56B$$7$FB8:_$7$J$$%I%a%$%s$KAw$i$;$k$N$O%-%?%J%$$G$9!#(B @node Various Various @section $B$$$m$$$m$N$$$m$$$m(B @@ -17905,103 +17981,105 @@ spam $B$KHQ$o$5$l$k$3$H$OA4$/$"$j$^$;$s!#F@!9>uBV$G$9!#;d$N0U8+$H(B @table @code @item gnus-home-directory -$BA4$F$N(B gnus $B$N%Q%9JQ?t$O$3$NJQ?t$K$h$C$F=i4|2=$5$l$^$9!#$=$N=i4|(B -$B@_DjCM$O(B @file{~/} $B$G$9!#(B +$BA4$F$N(B gnus $B$N%Q%9JQ?t$O$3$NJQ?t$K$h$C$F=i4|2=$5$l$^$9!#$=$N=i4|@_DjCM(B +$B$O(B @file{~/} $B$G$9!#(B @item gnus-directory @vindex gnus-directory -$B$?$/$5$s$N(B gnus $B3JG<%Q%9JQ?t$O$3$NJQ?t$K$h$C$F=i4|2=$5$l$^$9!#$=(B -$B$N=i4|@_DjCM$O(B @samp{SAVEDIR} $B4D6-JQ?t$NCM$+!"$=$NJQ?t$,@_Dj$5$l(B -$B$F$$$J$$>l9g$O(B @file{~/News/} $B$G$9!#(B +$B$?$/$5$s$N(B gnus $B3JG<%Q%9JQ?t$O$3$NJQ?t$K$h$C$F=i4|2=$5$l$^$9!#$=$N=i4|@_(B +$BDjCM$O(B @samp{SAVEDIR} $B4D6-JQ?t$NCM$+!"$=$NJQ?t$,@_Dj$5$l$F$$$J$$>l9g(B +$B$O(B @file{~/News/} $B$G$9!#(B -@file{.gnus.el} $B%U%!%$%k$,FI$^$l$?$H$-$O(B gnus $B$N$[$H$s$I$O$9$G$K(B -$BFI$_9~$^$l$F$$$k$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#$3$l$O$D$^$j!"$3$N(B -$BJQ?t$r(B @file{.gnus.el} $B$NCf$G@_Dj$7$F$b!"$3$NJQ?t$K$h$C$F=i4|2=(B -$B$5$l$kB>$N%G%#%l%/%H%j!$N%G%#(B +$B%l%/%H%j!e5-$NJQ?t$K$OA4$/4X78$"$j$^$;$s(B --- $B$3$NJQ?t$OA4$F$N(B gnus $B%P%C(B -$B%U%!!<$N%G%#%U%)%k%H%G%#%l%/%H%j!<$r$I$&$9$Y$-$+$r@_Dj$7$^$9!#$b(B -$B$7(B @kbd{C-x C-f} $B$N$h$&$JL?Na$re5-$NJQ?t$K$OA4$/4X78$"$j$^$;$s(B --- $B$3$NJQ?t$OA4$F$N(B gnus $B%P%C%U%!!<$N(B +$B%G%#%U%)%k%H%G%#%l%/%H%j!<$r$I$&$9$Y$-$+$r@_Dj$7$^$9!#$b(B +$B$7(B @kbd{C-x C-f} $B$N$h$&$JL?Na$r/$J$$NL$@$1$rFI$b$&$HEXNO$7$^$9!#$3$NJQ?t(B ($B=i4|@_DjCM(B 4096) -$B$O!"%P%C%/%(%s%I$,%X%C%@!<$HK\J8$N4V$N6h@Z$j9T$r8+$D$1$k$^$G$KFI(B -$B$_9~$b$&$H$9$k@dBP:GBgD9$r;XDj$7$^$9!#$3$NJQ?t$,(B @code{nil} $B$G$"(B -$B$l$P!"FI$_9~$_>e8B$O$"$j$^$;$s!#$b$7(B @code{t} $B$G$"$l$P!"%P%C%/%((B -$B%s%I$O5-;v$rItJ,ItJ,$GFI$_9~$b$&$H$O$;$:!"5-;vA4BN$rFI$_9~$_$^$9!#(B -$B$3$l$O(B @code{ange-ftp} $B$d(B @code{efs} $B$N$"$k%P!<%8%g%s$G0UL#$r$b(B -$B$A$^$9!#(B +$B%P%C%/%(%s%I$,5-;v$N%X%C%@!<$r$^$C$9$0FI$s$G$$$k$H$-$O!"$G$-$k8B$j>/$J$$(B +$BNL$@$1$rFI$b$&$HEXNO$7$^$9!#$3$NJQ?t(B ($B=i4|@_DjCM(B 4096) $B$O!"%P%C%/%(%s%I(B +$B$,%X%C%@!<$HK\J8$N4V$N6h@Z$j9T$r8+$D$1$k$^$G$KFI$_9~$b$&$H$9$k@dBP:GBgD9(B +$B$r;XDj$7$^$9!#$3$NJQ?t$,(B @code{nil} $B$G$"$l$P!"FI$_9~$_>e8B$O$"$j$^$;$s!#(B +$B$b$7(B @code{t} $B$G$"$l$P!"%P%C%/%(%s%I$O5-;v$rItJ,ItJ,$GFI$_9~$b$&$H$O$;$:!"(B +$B5-;vA4BN$rFI$_9~$_$^$9!#$3$l$O(B @code{ange-ftp} $B$d(B @code{efs} $B$N$"$k%P!<(B +$B%8%g%s$G0UL#$r$b$A$^$9!#(B @item nnheader-head-chop-length @vindex nnheader-head-chop-length -$B$3$NJQ?t(B ($B=i4|@_DjCM(B 2048) $B$O!"A05-$NA`:n$r9T$C$F$$$k$H$-$K!"$I(B -$B$l$/$i$$$NBg$-$5$NC10L$G3F5-;v$rFI$_9~$`$+$r@_Dj$7$^$9!#(B +$B$3$NJQ?t(B ($B=i4|@_DjCM(B 2048) $B$O!"A05-$NA`:n$r9T$C$F$$$k$H$-$K!"$I$l$/$i$$(B +$B$NBg$-$5$NC10L$G3F5-;v$rFI$_9~$`$+$r@_Dj$7$^$9!#(B @item nnheader-file-name-translation-alist @vindex nnheader-file-name-translation-alist @cindex file names @cindex invalid characters in file names @cindex characters in file names -$B$3$l$O%U%!%$%kL>$NJ8;z$r$I$N$h$&$KJQ49$9$k$+$r;XDj$9$kO"A[%j%9%H(B -$B$G$9!#Nc$($P!"$b$7(B @samp{:} $B$,$"$J$?$N%7%9%F%`$G$O%U%!%$%kL>$NJ8(B -$B;z$H$7$F$O;H$($J$$>l9g(B ($B$"$J$?$O(B OS/2 $B%f!<%6$G$9(B) $B!"0J2<$N$h$&$K(B -$B$9$k$3$H$,$G$-$^$9!#(B +$B$3$l$O%U%!%$%kL>$NJ8;z$r$I$N$h$&$KJQ49$9$k$+$r;XDj$9$kO"A[%j%9%H$G$9!#Nc(B +$B$($P!"$b$7(B @samp{:} $B$,$"$J$?$N%7%9%F%`$G$O%U%!%$%kL>$NJ8;z$H$7$F$O;H$($J(B +$B$$>l9g(B ($B$"$J$?$O(B OS/2 $B%f!<%6$G$9(B)$B!"0J2<$N$h$&$K$9$k$3$H$,$G$-$^$9!#(B @lisp (setq nnheader-file-name-translation-alist '((?: . ?_))) @end lisp -$Be$G$N$3$NJQ(B -$B?t$N=i4|@_DjCM$G$9!#(B +$Be$G$N$3$NJQ?t$N=i4|(B +$B@_DjCM$G$9!#(B @item gnus-hidden-properties @vindex gnus-hidden-properties -$B$3$l$O(B ``$BIT2D;k(B'' $B%F%-%9%H$r1#$9$?$a$K;H$o$l$kB0@-$N%j%9%H$G$9!#(B -$B$[$H$s$I$N%7%9%F%`$G$O=i4|@_DjCM$O(B @code{(invisible t intangible -t)} $B$G!"$3$l$OIT2D;k%F%-%9%H$r8+$($J$/$7$F?($l$J$/$7$^$9!#(B +$B$3$l$O(B ``$BIT2D;k(B'' $B%F%-%9%H$r1#$9$?$a$K;H$o$l$kB0@-$N%j%9%H$G$9!#$[$H$s$I(B +$B$N%7%9%F%`$G$O=i4|@_DjCM$O(B @code{(invisible t intangible t)} $B$G!"$3$l$O(B +$BIT2D;k%F%-%9%H$r8+$($J$/$7$F?($l$J$/$7$^$9!#(B @item gnus-parse-headers-hook @vindex gnus-parse-headers-hook -$B%X%C%@!<$r2rpJs$rpJs$r$r3NG'$9$k$H$-$K;H$&!"(B``$B;H$($J$$(B'' $B%0%k!<%WL>$K%^%C%A(B +$B$9$k@55,I=8=$G$9!#4{DjCM$O(B gnus $B$NFbItF0:n(B ($BA*BrJ}K!$H%0%k!<%W$N6-3&$K!"(B +$BDL>o(B @samp{:} $B$r;H$C$F$$$k(B) $B$r$a$A$c$a$A$c$K$7$F$7$^$&$+$b$7$l$J$$!"$$$/(B +$B$D$+$N(B @strong{$BK\Ev$K(B} $B;H$($J$$%0%k!<%WL>$rJa$^$($^$9!#(B +IMAP $B%f!<%6$O%0%k!<%WL>$K(B @samp{/} $B$r;H$$$?$$$H;W$&$G$7$g$&$1$l$I!#(B +@end table @node The End @chapter $B=*$o$j(B @@ -18054,22 +18132,20 @@ but at the common table.@* $BIaDL$N%F!<%V%k$N$H$3$m$G(B @* @end quotation - @node Appendices @chapter $BIUO?(B @menu -* History:: $B$I$&$d$C$F(B gnus $B$,:#F|$N$h$&$K$J$C$?$+!#(B -* On Writing Manuals:: $B$J$<$3$l$,=i?4ee$=$&$H7h?4$7$^$7(B $B$?!#(B -$B$3$NL5Ni$r9T$C$??MJ*$rD4$Y$F$_$?$$$N$J$i!"$"$J$?$N(B ($B$/$=!*(B) $B%&%'%V%V%i%&(B +$B$3$NL5Ni$r9T$C$??MJ*$rD4$Y$F$_$?$$$N$J$i!"$"$J$?$N(B ($B$/$=(B!) $B%&%'%V%V%i%&(B $B%6!<$r(B @file{http://quimby.gnus.org/~larsi/} $B$K8~$1$k;v$,$G$-$^$9!#(B $B$3$l$O?7$7$/$F?h$JHG$N(B gnus $B$NBh0lG[I[>l=j$G!"(BNewsrc $B$r$V$C2u$7$F?M!9$r(B $B7cE\$5$l$k%5%$%H$H$7$FCN$i$l$F$$$^$9!#(B $B:G=i$N%"%k%U%!HG$N3+H/4|4V$K!"?7$7$$(B Gnus $B$O(B ``(ding) Gnus'' $B$H8F$P$l$F(B $B$$$^$7$?!#(B@dfn{(ding)} $B$O$b$A$m$s!"(B@dfn{ding is not Gnus} $B$NC;=L7A$G!"$3(B -$B$l$OA4$/40A4$J13$G$9$,!"$@$l$,$=$s$J$3$H$r5$$K$9$k$G$7$g$&$+!)(B($B$H$3$m$G!"(B +$B$l$OA4$/40A4$J13$G$9$,!"$@$l$,$=$s$J$3$H$r5$$K$9$k$G$7$g$&$+(B? ($B$H$3$m$G!"(B $B$3$NC;=L7A$N(B ``Gnus'' $B$O$*$=$i$/G_ED$5$s$N0U?^DL$j(B ``$B%K%e!<%9(B'' $B$HH/2;$5(B -$B$l$k$Y$-$G!"$=$&$9$k$H$b$C$HE,@Z$JL>A0$K$J$j$^$9!#$=$&;W$$$^$;$s$+!)(B) +$B$l$k$Y$-$G!"$=$&$9$k$H$b$C$HE,@Z$JL>A0$K$J$j$^$9!#$=$&;W$$$^$;$s$+(B?) $B$I$A$i$K$;$h!"A4$F$N%(%M%k%.!<$r?7$7$$855$$NNI$$L>A0$rIU$1$k$N$K;H$$2L$?(B -$B$7$?8e!"$=$NL>A0$O(B @emph{$B$"$^$j$K(B} $B855$$,NI$9$.$k$H$$$&;v$K$J$j!"$=$l$r(B -``Gnus'' $B$H:F$SL?L>$7$^$7$?!#$G$b!":#2s$OBgJ8;z$H>.J8;z$r:.$<$F$$$^$9!#(B -``Gnus'' $B$H(B ``@sc{gnus}'' $B$G$9!#(B $B?7$7$$$b$N(B $B$H(B $B8E$$$b$N!#(B +$B$7$?8e!"$=$NL>A0$O(B @emph{$B$"$^$j$K(B} $B855$$,NI$9$.$k$H$$$&;v$K$J$j!"$=$l(B +$B$r(B ``Gnus'' $B$H:F$SL?L>$7$^$7$?!#$G$b!":#2s$OBgJ8;z$H>.J8;z$r:.$<$F$$$^$9!#(B +``Gnus'' $B$H(B ``@sc{gnus}'' $B$G$9!#?7$7$$$b$N(B $B$H(B $B8E$$$b$N!#(B @menu * Gnus Versions:: What Gnus versions have been released. * Other Gnus Versions:: Other Gnus versions that also have been released. -* Why?:: Gnus $B$NL\E*$O2?!)(B -* Compatibility:: Gnus $B$O(B @sc{gnus} $B$H$I$l$/$i$$8_49@-$,$"$k$N!)(B -* Conformity:: Gnus $B$OA4$F$NI8=`$rK~$?$=$&$H$9$k!#(B -* Emacsen:: Gnus $B$O$$$/$D$+$N8=BeE*$J(B Emacs $B4D6-$G(B ``September Gnus'' (99$B%j%j!<%9$N8e$G(B)) -$B$,(B ''Gnus 5.2`` $B$H$$$&L>A0$G%j%j!<%9$5$l$^$7$?(B (40$B%j%j!<%9(B)$B!#(B +1996$BG/(B3$B7n$K(B ``September Gnus'' (99 $B%j%j!<%9$N8e(B +$B$G(B)) $B$,(B ''Gnus 5.2`` $B$H$$$&L>A0$G%j%j!<%9$5$l$^$7$?(B (40 $B%j%j!<%9(B)$B!#(B -1996$BG/$N(B7$B7n(B28$BF|$K(B Red Gnus $B$N:n6H$,;O$^$j!"$=$l$O(B1997$BG/(B1$B7n(B25$BF|$K(B (84$B%j%j!<(B -$B%9$N8e$G(B) ``Gnus 5.4'' $B$H$7$F%j%j!<%9$5$l$^$7$?(B (67 $B%j%j!<%9(B)$B!#(B +1996$BG/$N(B 7$B7n(B28$BF|$K(B Red Gnus $B$N:n6H$,;O$^$j!"$=$l$O(B 1997$BG/(B1$B7n(B25$BF|(B +$B$K(B (84 $B%j%j!<%9$N8e$G(B) ``Gnus 5.4'' $B$H$7$F%j%j!<%9$5$l$^$7$?(B (67 $B%j%j!<(B +$B%9(B)$B!#(B -1997$BG/(B9$B7n(B13$BF|$K!"(BQuassia Gnus $B$,3+;O$5$l!"(B37$B%j%j!<%9B3$-$^$7$?!#$=$l$O(B -``Gnus 5.6'' $B$H$7$F(B1998$BG/(B3$B7n(B8$BF|$K%j%j!<%9$5$l$^$7$?(B (46 $B%j%j!<%9(B)$B!#(B +1997$BG/(B9$B7n(B13$BF|$K!"(BQuassia Gnus $B$,3+;O$5$l!"(B37 $B%j%j!<%9B3$-$^$7$?!#$=$l(B +$B$O(B ``Gnus 5.6'' $B$H$7$F(B 1998$BG/(B3$B7n(B8$BF|$K%j%j!<%9$5$l$^$7$?(B (46 $B%j%j!<%9(B)$B!#(B -1998$BG/(B8$B7n(B29$BF|$K(B Gnus 5.6 $B$+$i(B Pterodactyl Gnus $B$,@8$^$l!"(B1999$BG/(B12$B7n(B3$BF|$K(B -(99 $B%j%j!<%9$H(B CVS $B%j%]%8%H%j$G$N:n6H$N8e(B) ``Gnus 5.8'' $B$H$7$F%j%j!<%9$5(B -$B$l$^$7$?!#(B +1998$BG/(B8$B7n(B29$BF|$K(B Gnus 5.6 $B$+$i(B Pterodactyl Gnus $B$,@8$^$l!"(B1999$BG/(B12$B7n(B3$BF|(B +$B$K(B (99 $B%j%j!<%9$H(B CVS $B%j%]%8%H%j$G$N:n6H$N8e(B) ``Gnus 5.8'' $B$H$7$F%j%j!<(B +$B%9$5$l$^$7$?!#(B $B$b$7@\F,<-$r;}$C$?HG$N(B Gnus -- ``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' -- $B$K=P2q$C$F$b!":.Mp$7$J$$$G$/$@$5$$!#$"(B @@ -18138,7 +18215,6 @@ Gnus5.0 $B$N(B15$B%j%j!<%9(B)$B!#(B $B5n$j$J$5$$!#E,@Z$K%j%j!<%9$5$l$?HG$N(B Gnus $B$r8+$D$1$F!"Be$o$j$K$=$l$K4s$j(B $BE:$C$F2<$5$$!#(B - @node Other Gnus Versions @subsection $BB>$N(B gnus $B$N%P!<%8%g%s(B @cindex Semi-gnus @@ -18147,16 +18223,15 @@ Lars $B$5$s$,D4@=$7$F%j%j!<%9$7$?(B Gnus $B$K2C$($F!"F|K\$G$O(B Semi-gnus $ $B$,9T$J$o$l$F$$$^$9!#$3$l$O(B SEMI $B$H$$$&(B MIME $B$N5!G=$rN$5$l!"(BT-gnus, Nana-gnus $B$*$h$S(B Chaos $B$N0[$J$C$?7OE}(B -$B$,$"$j$^$9!#$3$l$i$O6/NO$J(B MIME $B$N5!G=$H3F9q8lBP1~$N5!G=$rDs6!$9$k$b$N$G!"(B -$BFC$KF|K\?M$N%f!<%6$K$H$C$FBg;v$J$b$N$G$9!#(B - +$B$3$l$i$N(B gnus $B$O(B Gnus 5.6 $B$H(B Pterodactyl Gnus $B$r85$K$7$F$$$^$9!#$=$l$i(B +$B$O(B ``Semi-gnus'' $B$HAm>N$5$l!"(BT-gnus, Nana-gnus $B$*$h$S(B Chaos $B$N0[$J$C$?7O(B +$BE}$,$"$j$^$9!#$3$l$i$O6/NO$J(B MIME $B$N5!G=$H3F9q8lBP1~$N5!G=$rDs6!$9$k$b$N(B +$B$G!"FC$KF|K\?M$N%f!<%6$K$H$C$FBg;v$J$b$N$G$9!#(B @node Why? -@subsection $B$J$l$H$7$F;H$o$l$FM_$7$$$G$9!#G_ED$5(B @@ -18177,9 +18252,9 @@ Gnus $B$O$3$l$i$N7$$$F$$$k$N$G$9!#(B -$B$*$=$i$/(B Gnus $B$O40@.$9$k;v$O$J$$$N$+$b$7$l$^$;$s!#(B @kbd{C-u 100 M-x -all-hail-emacs} $B$H(B @kbd{C-u 100 M-x all-hail-xemacs} $B$G$9!#(B - +$B$*$=$i$/(B Gnus $B$O40@.$9$k;v$O$J$$$N$+$b$7$l$^$;$s!#(B +@kbd{C-u 100 M-x all-hail-emacs} $B$H(B @kbd{C-u 100 M-x all-hail-xemacs} $B$G(B +$B$9!#(B @node Compatibility @subsection $B8_49@-(B @@ -18210,26 +18285,26 @@ Articles}. $B$GL?Na$,e$2$^$9(B)$B!"D>@\O"A[%j%9%H$rJQ99$9$k;v$O0[>o$J7k2L$r$b$?$i$9$G$7$g$&!#(B @cindex hilit19 @cindex highlighting -$B8E$$(B hilit19 $B$N%3!<%I$OA4$/F0:n$7$^$;$s!#$N%3!<%I(B) -$B$r>C5n$9$k$Y$-$G$7$g$&!#(B@sc{gnus} $B$K$N%3!<(B +$B%I(B) $B$r>C5n$9$k$Y$-$G$7$g$&!#(B@sc{gnus} $B$Ko$K(B} $B$h$/%P%0Js9p$rAw$kJJ$,$"$k$N$G$"$l$P!"$7$P$i$/$9$k$HLr$KN)(B $B$D(B help $B%P%C%U%!$,$&$k$5$$$H46$8$k$+$b$7$l$^$;$s!#$=$&$G$"$l$P!"$=$l$,I=(B -$B<($5$l$k$N$rHr$1$k$?$a$K!"(B@code{gnus-bug-create-help-buffer} $B$r(B -@code{nil} $B$K@_Dj$7$F2<$5$$!#(B - +$B<($5$l$k$N$rHr$1$k$?$a$K!"(B +@code{gnus-bug-create-help-buffer} $B$r(B @code{nil} $B$K@_Dj$7$F2<$5$$!#(B @node Conformity @subsection $B0lCW@-(B @@ -18286,17 +18360,17 @@ Gnus $B$OA4$F$N(B @sc{gnus} $B5/F0%U%!%$%k$rM}2r$7$^$9!#(B @item USEFOR @cindex USEFOR -USEFOR $B$O!"(BIETF $B$N(B working group $B$,(B Son-of-RFC 1036 $B$K4p$E$$$F!"(BRFC 1036 -$B$N8e7Q$H$7$F=q$$$F$$$k$b$N$G$9!#%K%e!<%95-;v$NMM<0$KBP$7$F!"$$$m$$$m$JJQ(B -$B99$rDs0F$7$?(B draft $B$r:n@.$7$^$7$?!#(BGnus $B%?%o!<$O(B draft $B$,(B RFC $B$H$7$FG'$a(B -$B$i$l$?$H$-$KJQ99$Ne$K=q$+$l$F$$$kJ8>O$K4X$9$k;v$G!"(BGnus $B$,$=$l$rK~$?$7$F$$$J$$$h$&$JF0:n(B $B$r$7$F$$$k;v$K5$IU$$$?$i!"$?$a$i$o$:$K(B Gnus $B%?%o!<$H2f!9$KCN$i$;$F2<$5$$!#(B - @node Emacsen @subsection Emacsen @cindex Emacsen @@ -18320,40 +18394,40 @@ Meadow 1.00 $B0J>e!#(B(Mule for Windows $B$G$OF0$-$^$;$s!#(B) @end itemize $B$3$N(B Gnus $B$NHG$O$3$l$h$j8E$$$I$s$J(B Emacsen $B$G$b40A4$KF0:n$7$J$$$G$7$g$&!#(B -$B>/$J$/$H$b!"?.Mj$G$-$kF0:n$O$7$J$$$G$7$g$&!#8E$$HG$N(B gnus $B$O8E$$(B Emacs -$B$NHG$G$bF0:n$9$k$G$7$g$&!#$H$O8@$&$b$N$N!"(BT-gnus $B$O%P!<%8%g%s(B 21.1.1 $BL$(B -$BK~$N(B XEmacs, $BNc$($P(B 20.4 $B$G$b;H$($k$+$b$7$l$^$;$s!#>\$7$$$3$H$O(B T-gnus - $B$NG[I[$K4^$^$l$F$$$k(B README $B%U%!%$%k$rFI$s$G2<$5$$!#(B +$B>/$J$/$H$b!"?.Mj$G$-$kF0:n$O$7$J$$$G$7$g$&!#8E$$HG$N(B gnus $B$O8E(B +$B$$(B Emacs $B$NHG$G$bF0:n$9$k$G$7$g$&!#$H$O8@$&$b$N$N!"(BT-gnus $B$O%P!<%8%g(B +$B%s(B 21.1.1 $BL$K~$N(B XEmacs, $BNc$($P(B 20.4 $B$G$b;H$($k$+$b$7$l$^$;$s!#>\$7$$$3(B +$B$H$O(B T-gnus $B$NG[I[$K4^$^$l$F$$$k(B README $B%U%!%$%k$rFI$s$G2<$5$$!#(B $B$$$m$$$m$J%W%i%C%H%U%)!<%`$N(B Gnus $B$N4V$K$O$$$/$D$+$NGyA3$H$7$?0c$$$,$"$j(B $B$^$9(B---XEmacs $B$O$b$C$H2hA|5!G=(B ($B%m%4$H%D!<%k%P!<(B) $B$rFCD'$K$7$F$$$^$9(B--$B$7(B $B$+$7!"$=$NB>$O!"A4$F$N(B Emacsen $B$G$[$H$s$IF1$8$O$:$G$9!#(B - @node Gnus Development @subsection Gnus $B$N3+H/(B -Gnus $B$O(B2$B$D$NCJ3,$N=[4D$G3+H/$5$l$F$$$^$9!#:G=i$NCJ3,$O(B -@samp{ding@@gnus.org} $B$G$N$?$/$5$s$N5DO@$,$"$j!"$=$3$GJQ99$d?7$7$$5!G=$r(B -$BDs0F$7$^$9!#$3$NCJ3,$O(B @dfn{$B%"%k%U%!(B} $BCJ3,$H8F$P$l$^$9!#$H$$$&$N$O!"$3$N(B -$BCJ3,$G%j%j!<%9$5$l$?(B Gnusae $B$O(B @dfn{$B%"%k%U%!%j%j!<%9(B}$B!"$b$7$/$O(B ($BB>$NCD(B -$BBN$G$O$h$jNI$/;H$o$l$k(B) @dfn{$B%9%J%C%W%7%g%C%H(B} $B$H8F$P$l$k$b$N$@$+$i$G$9!#(B -$B$3$NCJ3,$G$O!"(Bgnus $B$OIT0BDj$G$"$k$H9M$($i$l$F$*$j!"0lHL$NMxMQA0$K$J$C$F$$$^$9!#(B +Gnus $B$OFs$D$NCJ3,$N=[4D$G3+H/$5$l$F$$$^$9!#:G=i$NCJ3,(B +$B$O(B @samp{ding@@gnus.org} $B$G$N$?$/$5$s$N5DO@$,$"$j!"$=$3$GJQ99$d?7$7$$5!(B +$BG=$rDs0F$7$^$9!#$3$NCJ3,$O(B @dfn{$B%"%k%U%!(B} $BCJ3,$H8F$P$l$^$9!#$H$$$&$N$O!"(B +$B$3$NCJ3,$G%j%j!<%9$5$l$?(B Gnusae $B$O(B @dfn{$B%"%k%U%!%j%j!<%9(B}$B!"$b$7$/$O(B ($BB>(B +$B$NCDBN$G$O$h$jNI$/;H$o$l$k(B) @dfn{$B%9%J%C%W%7%g%C%H(B} $B$H8F$P$l$k$b$N$@$+$i(B +$B$G$9!#$3$NCJ3,$G$O!"(Bgnus $B$OIT0BDj$G$"$k$H9M$($i$l$F$*$j!"0lHL$NMxMQA0$K$J$C$F$$$^$9!#(B 50-100 $B$/$i$$$N%j%j!<%9$N8e$G!"(BGnus $B$O(B @dfn{$BE`7k(B} $B$5$l$?$H@k8@$5$l!"%P%0(B -$B=$@5$N$_$,E,MQ$5$l$^$9!#(BGnus $B$O@\F,<-$,$B!"$=$l$OA4$/F0:n$7$J$$(B $B!"$&$s!";d$O$9$0$K=P$=$&(B $B$$$d!"E;$&!"$=$l$OA4$/F0:n$7$J(B $B$$$>(B''' $B$H$$$&%j%j!<%9$K4X$9$k!#(B @item -Wes Hardaker---@file{gnus-picon.el} $B$H(B @dfn{picon} $B$NItJ,$N%^%K%e%"%k(B -(@pxref{Picons})$B!#(B +Wes Hardaker---@file{gnus-picon.el} $B$H(B @dfn{picon} $B$NItJ,$N%^%K%e%"(B +$B%k(B (@pxref{Picons})$B!#(B @item Kim-Minh Kaplan---picon $B%3!<%I$KCV$1$k99$J$k:n6H!#(B @item -Brad Miller---@file{gnus-gl.el} $B$H(B Grouplens $B$NItJ,$N%^%K%e%"%k(B -(@pxref{GroupLens})$B!#(B +Brad Miller---@file{gnus-gl.el} $B$H(B Grouplens $B$NItJ,$N%^%K%e%"(B +$B%k(B (@pxref{GroupLens})$B!#(B @item Sudish Joseph---$B?t$(@Z$l$J$$$[$I$N%P%0$N=$@5!#(B @@ -18462,7 +18534,7 @@ Fran.ANgois Pinard---$BB?$/$N!"B?$/$N6=L#?<$/40A4$J%P%0%l%]!<%H$H(B autoconf @end itemize -$B$3$N%^%K%e%"%k(B (Gnus $B1Q8lHG(B) $B$O(B Adrian Aichner $B$H(B Ricardo Nassif$B!"(BMark +$B$3$N%^%K%e%"%k(B (Gnus $B1Q8lHG(B) $B$O(B Adrian Aichner $B$H(B Ricardo Nassif, Mark Borges $B$K$h$C$F9;@5$5$l!"(BJost Krieger $B$K$h$C$F0lItJ,$r9;@5$5$l$^$7$?!#(B $B0J2<$N?M!9$OB?$/$N%Q%C%A$HDs0F$G9W8%$7$^$7$?(B: @@ -18684,26 +18756,24 @@ Lloyd Zusman. $B$&!#(B $B$o$!!"$3$l$O$J$s$H$bB?$$?M$N%j%9%H$@$J$!!#$*$=$i$/e$N$b$N(B---Gnus 5.4/5.5 -* Quassia Gnus:: 2$B$+$1$k(B2$B$O(B4$B!"$b$7$/$O(B Gnus 5.6/5.7$B!#(B +* ding Gnus:: $B:G=i$N?7$7$$(B Gnus $B$G$"$k(B Gnus 5.0/5.1 $B$N?7$7$$;v(B +* September Gnus:: $B8x<0$K(B GNus 5.2/5.3 $B$H$7$FCN$i$l$F$$$k$b$N(B +* Red Gnus:: 3 $BHVL\$N:G>e$N$b$N(B---Gnus 5.4/5.5 +* Quassia Gnus:: 2 $B$+$1$k(B 2 $B$O(B 4$B!"$b$7$/$O(B Gnus 5.6/5.7 @end menu -$B$3$N%j%9%H$O!"$b$A$m$s!"(B@emph{$B$?$$$F$$$N(B} $B=EMW$J?7$7$$5!G=$K4X$9$k(B -@emph{$BC;$$(B}$B354Q$G$7$+$"$j$^$;$s!#$$$$$(!"K\Ev$O$=$&$G$O$"$j$^$;$s!#$b$C(B +$B$3$N%j%9%H$O!"$b$A$m$s!"(B@emph{$B$?$$$F$$$N(B} $B=EMW$J?7$7$$5!G=$K4X$9(B +$B$k(B @emph{$BC;$$(B}$B354Q$G$7$+$"$j$^$;$s!#$$$$$(!"K\Ev$O$=$&$G$O$"$j$^$;$s!#$b$C(B $B$H$b$C$H$?$/$5$s$N$b$N$,$"$j$^$9!#$O$$!"2f!9$OAOB$@-$N40A4$J8z2L$r46$8$F(B $B$$$k$N$G$9!#(B - @node ding Gnus @subsubsection (ding) Gnus @@ -18726,14 +18796,14 @@ Groups})$B!#(B @item $BB?$/$N0c$C$?%a!<%kMM<0(B (@pxref{Getting Mail}) $B$rFI$a$k$h$&$K$J$j$^$7$?!#(B -$BA4$F$N%a!<%k%P%C%/%(%s%I$OJXMx$J%a!<%k4|8B@Z$l>C5n5!9=$rC5n5!9=$re$2$k$N$K==J,$J%X%C%@!<$re$2$k$N$K==J,$J%X%C%@!<$rH$5$l$?$H$-$K!"%9%l%C%I$NItJ,:n@.$,5/$3$k$h$&$K$J$j$^$7$?!#(B @item -Gnus $B$O(B GroupLens $B$NM=8@$r;H$&;v$,$G$-$k$h$&$K$J$j$^$7$?(B -(@pxref{GroupLens})$B!#(B +Gnus $B$O(B GroupLens $B$NM=8@$r;H$&;v$,$G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{GroupLens})$B!#(B @item Picons (personal icons) ($B8D?M%"%$%3%s(B) $B$,(B XEmacs $B$GI=<($G$-$k$h$&$K$J$j(B @@ -18881,8 +18950,8 @@ Display})$B!#(B $B$J$j$^$7$?(B (@pxref{Binary Groups})$B!#(B @item -Group $B$,@^$j>v$_%H%T%C%/3,AX$K%0%k!<%WJ,$1$G$-$k$h$&$K$J$j$^$7$?(B -(@pxref{Group Topics})$B!#(B +Group $B$,@^$j>v$_%H%T%C%/3,AX$K%0%k!<%WJ,$1$G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Group Topics})$B!#(B @lisp (add-hook 'gnus-group-mode-hook 'gnus-topic-mode) @@ -18893,43 +18962,43 @@ Gnus $B$,<:GT%a!<%k$r:FAw$G$-$k$h$&$K$J$j$^$7$?(B (@pxref{Summary Mail Commands})$B!#(B @item -$B%0%k!<%W$,%9%3%"$r;}$D;v$,$G$-$k$h$&$K$J$j!"K,$l$k2s?t$K4p$E$$$FJB$SBX$($r(B -$B$G$-$k$h$&$K$J$j$^$7$?(B (@pxref{Group Score})$B!#(B +$B%0%k!<%W$,%9%3%"$r;}$D;v$,$G$-$k$h$&$K$J$j!"K,$l$k2s?t$K4p$E$$$FJB$SBX$((B +$B$r$G$-$k$h$&$K$J$j$^$7$?(B (@pxref{Group Score})$B!#(B @lisp (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group) @end lisp @item -$B%0%k!<%W$K%W%m%;%90u$rIU$1$i$l$k$h$&$K$J$j!"%0%k!<%W$N$0%k!<%W$KL?Na$,e$N%0%k!<%W$G%-%c%C%7%e$,$G$-$k$h$&$K$J$j$^$7$?!#(B @item @code{nndoc} $B$OA4$F$N=8G[G[Aw!"%a!<%k%\%C%/%9!"(Brnews $B%K%e!<%90l3g!"(B -ClariNet $BC;<}=8!"$=$7$FA4$F$N$=$NB>$rM}2r$G$-$k$h$&$K$J$j$^$7$?(B -(@pxref{Document Groups})$B!#(B +ClariNet $BC;<}=8!"$=$7$FA4$F$N$=$NB>$rM}2r$G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Document Groups})$B!#(B @item -Gnus $B$O(B SOUP $B%Q%1%C%H$r:n@.(B/$BFI$_9~$_$r$9$k$?$a$N?7$7$$%P%C%/%(%s%I(B -(@code{nnsoup}) $B$r;}$C$F$$$^$9!#(B +Gnus $B$O(B SOUP $B%Q%1%C%H$r:n@.(B/$BFI$_9~$_$r$9$k$?$a$N?7$7$$%P%C%/%(%s(B +$B%I(B (@code{nnsoup}) $B$r;}$C$F$$$^$9!#(B @item Gnus $B%-%c%C%7%e$,$:$C$HB.$/$J$j$^$7$?!#(B @item -$B%0%k!<%W$rB?$/$N4p=`$K=>$C$FJB$SBX$($G$-$k$h$&$K$J$j$^$7$?(B -(@pxref{Sorting Groups})$B!#(B +$B%0%k!<%W$rB?$/$N4p=`$K=>$C$FJB$SBX$($G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Sorting Groups})$B!#(B @item $B%"%I%l%9$N%j%9%H$H4|8B@Z$l>C5n$N;~4V$r@_Dj$9$k?7$7$$%0%k!<%W%Q%i%a!<%?$,(B $BF3F~$5$l$^$7$?(B (@pxref{Group Parameters})$B!#(B @item -$BA4$F$N%U%)!<%^%C%H;XDj$,;H$o$l$k%U%'%$%9$r;XDj$G$-$k$h$&$K$J$j$^$7$?(B -(@pxref{Formatting Fonts})$B!#(B +$BA4$F$N%U%)!<%^%C%H;XDj$,;H$o$l$k%U%'%$%9$r;XDj$G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Formatting Fonts})$B!#(B @item @kbd{M P} $BI{%^%C%W$K%W%m%;%90u$NIU$$$?5-;v$N@_Dj(B/$B:o=|(B/$B@\;HMQ$G$-$k$h$&$K$J$j$^$7$?(B -(@pxref{Article Keymap})$B!#(B +$BA4$F$N35N,%b!<%IL?Na$,5-;v%P%C%U%!$+$iD>@\;HMQ$G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Article Keymap})$B!#(B @item -$B%U%l!<%`$,(B @code{gnus-buffer-configuration} $B$NItJ,$K$J$k;v$,$G$-$^$9(B -(@pxref{Windows Configuration})$B!#(B +$B%U%l!<%`$,(B @code{gnus-buffer-configuration} $B$NItJ,$K$J$k;v$,$G$-$^(B +$B$9(B (@pxref{Windows Configuration})$B!#(B @item -$B%G!<%b%s$N%W%m%;%9$G%a!<%k$r:FAv::$9$k$3$H$,$G$-$k$h$&$K$J$j$^$7$?(B -(@pxref{Daemons})$B!#(B +$B%G!<%b%s$N%W%m%;%9$G%a!<%k$r:FAv::$9$k$3$H$,$G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Daemons})$B!#(B @iftex @iflatex \marginpar[\mbox{}\hfill\epsfig{figure=tmp/fseptember.ps,height=5cm}]{\epsfig{figure=tmp/fseptember.ps,height=5cm}} @@ -19023,8 +19092,8 @@ Gnus $B$,$I$3$K5-;v$rJ]B8$9$k$+$rDs0F$G$-$k$h$&$K$J$j$^$7$?(B (@pxref{Saving Articles})$B!#(B @item -Gnus $B$OJ]B8$9$k$H$-$KF1$8$/$i$$$NB%?J$r$7$J$/$F$bNI$$$h$&$K$J$j$^$7$?(B -(@pxref{Saving Articles})$B!#(B +Gnus $B$OJ]B8$9$k$H$-$KF1$8$/$i$$$NB%?J$r$7$J$/$F$bNI$$$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Saving Articles})$B!#(B @lisp (setq gnus-prompt-before-saving t) @@ -19061,7 +19130,6 @@ Gnus $B$OJ]B8$9$k$H$-$KF1$8$/$i$$$NB%?J$r$7$J$/$F$bNI$$$h$&$K$J$j$^$7$?(B @end itemize - @node Red Gnus @subsubsection Red Gnus @@ -19079,35 +19147,35 @@ Gnus 5.4/5.5 $B$N?7$7$$5!G=(B: @file{nntp.el} $B$OHsF14|$NN.57$G40A4$K2~D{$5$l$^$7$?!#(B @item -$B%9%3%"IU$1$O(B @code{and}$B!"(B@code{or}$B!"(B@code{not} $B$N$h$&$JO@M}1i;;;R$H!"?F(B +$B%9%3%"IU$1$O(B @code{and}, @code{or}, @code{not} $B$N$h$&$JO@M}1i;;;R$H!"?F(B $B$N:FJ}8~$GuBV$,5-;v%b!<%I9T$KI=<($5$l$k$h$&$K$J$j$^$7$?(B (@pxref{Misc -Article})$B!#(B +$B5-;v$N@vBu>uBV$,5-;v%b!<%I9T$KI=<($5$l$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Misc Article})$B!#(B @item @file{gnus.el} $B$,B?$/$N>.$5$$%U%!%$%k$KJ,3d$5$l$^$7$?!#(B @item -Message-ID $B$K4p$E$$$?!"=EJ#5-;v$NM^@)$,$J$5$l$k$h$&$K$J$j$^$7$?(B -(@pxref{Duplicate Suppression})$B!#(B +Message-ID $B$K4p$E$$$?!"=EJ#5-;v$NM^@)$,$J$5$l$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Duplicate Suppression})$B!#(B @lisp (setq gnus-suppress-duplicates t) @end lisp @item -$B$I$N%9%3%"$HE,1~%U%!%$%k$,%[!<%`$N%9%3%"$HE,1~%U%!%$%k$G$"$k$+$r;XDj$9$k(B -(@pxref{Home Score File}) $B?7$7$$JQ?t$,2C$($i$l$^$7$?!#(B +$B$I$N%9%3%"$HE,1~%U%!%$%k$,%[!<%`$N%9%3%"$HE,1~%U%!%$%k$G$"$k$+$r;XDj$9(B +$B$k(B (@pxref{Home Score File}) $B?7$7$$JQ?t$,2C$($i$l$^$7$?!#(B @item -@code{nndoc} $B$,4JC1$K3HD%2DG=$K$J$k$h$&$K2~D{$5$l$^$7$?(B (@pxref{Document -Server Internals})$B!#(B +@code{nndoc} $B$,4JC1$K3HD%2DG=$K$J$k$h$&$K2~D{$5$l$^$7(B +$B$?(B (@pxref{Document Server Internals})$B!#(B @item -$B%0%k!<%W$O?F$N%H%T%C%/$+$i%0%k!<%W%Q%i%a!<%?$r7Q>5$G$-$k$h$&$K$J$j$^$7$?(B -(@pxref{Topic Parameters})$B!#(B +$B%0%k!<%W$O?F$N%H%T%C%/$+$i%0%k!<%W%Q%i%a!<%?$r7Q>5$G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Topic Parameters})$B!#(B @item $B5-;vJT=8$,2~D{$5$l!"e(B @@ -19171,26 +19239,26 @@ Process Marks})$B!#(B @item $B?7$7$$%a!<%k$+$i%K%e!<%9$X$N%P%C%/%(%s%I$,(B @sc{nntp} $B%5!<%P!<$,Ej9F$r(B -$B5v2D$7$F$$$J$$>l9g$G$b!"Ej9F$G$-$k$h$&$K$J$j$^$7$?(B -(@pxref{Mail-To-News Gateways})$B!#(B +$B5v2D$7$F$$$J$$>l9g$G$b!"Ej9F$G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Mail-To-News Gateways})$B!#(B @item -$B%&%'%V8!:w%(%s%8%s(B (@dfn{DejaNews}$B!"(B@dfn{Alta Vista}$B!"(B@dfn{InReference}) -$B$+$i$N8!:w7k2L$rFI$`?7$7$$%P%C%/%(%s%I$,2C$($i$l$^$7$?(B (@pxref{Web -Searches})$B!#(B +$B%&%'%V8!:w%(%s%8(B +$B%s(B (@dfn{DejaNews}, @dfn{Alta Vista}, @dfn{InReference}) $B$+$i$N8!:w7k2L(B +$B$rFI$`?7$7$$%P%C%/%(%s%I$,2C$($i$l$^$7$?(B (@pxref{Web Searches})$B!#(B @item $BI8=`$NJB$SBX$(4X?t$r;H$C$F%0%k!<%W$NCf$N%H%T%C%/$rJB$SBe$($9$k;v$,$G$-!"(B -$B$=$l$>$l$N%H%T%C%/$,FHN)$7$FJB$SBX$($G$-$k$h$&$K$J$j$^$7$?(B (@pxref{Topic -Sorting})$B!#(B +$B$=$l$>$l$N%H%T%C%/$,FHN)$7$FJB$SBX$($G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Topic Sorting})$B!#(B @item -$B%0%k!<%W$N0lItJ,$,FHN)$7$FJB$SBX$($G$-$k$h$&$K$J$j$^$7$?(B -(@code{Sorting})$B!#(B +$B%0%k!<%W$N0lItJ,$,FHN)$7$FJB$SBX$($G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@code{Sorting})$B!#(B @item -$B%-%c%C%7%e$5$l$?5-;v$,%0%k!<%W$KF~$l$i$l$k$h$&$K$J$j$^$7$?(B -(@pxref{Summary Generation Commands})$B!#(B +$B%-%c%C%7%e$5$l$?5-;v$,%0%k!<%W$KF~$l$i$l$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Summary Generation Commands})$B!#(B @iftex @iflatex \marginpar[\mbox{}\hfill\epsfig{figure=tmp/fred.ps,width=3cm}]{\epsfig{figure=tmp/fred.ps,width=3cm}} @@ -19198,12 +19266,12 @@ Sorting})$B!#(B @end iftex @item -$B%9%3%"%U%!%$%k$,$b$C$H?.Mj$G$-$k=gHV$GE,MQ$G$-$k$h$&$K$J$j$^$7$?(B -(@pxref{Score Variables})$B!#(B +$B%9%3%"%U%!%$%k$,$b$C$H?.Mj$G$-$k=gHV$GE,MQ$G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Score Variables})$B!#(B @item -$B%a!<%k%a%C%;!<%8$,$I$3$K9T$/$+$NJs9p$r:n@.$9$k;v$,$G$-$k$h$&$K$J$j$^$7$?(B -(@pxref{Splitting Mail})$B!#(B +$B%a!<%k%a%C%;!<%8$,$I$3$K9T$/$+$NJs9p$r:n@.$9$k;v$,$G$-$k$h$&$K$J$j$^$7(B +$B$?(B (@pxref{Splitting Mail})$B!#(B @item $BF~$C$FMh$?%a!<%k$rJ]B8$9$kA0$K$,$i$/$?$rj(B -$B$J$[$I$N?7$7$$L?Na$H%b!<%I$,DI2C$5$l$^$7$?!#40A4$JOC$KIU$$$F$O(B -@pxref{Gnus Unplugged} $B$r8+$F2<$5$$!#(B +$B$J$[$I$N?7$7$$L?Na$H%b!<%I$,DI2C$5$l$^$7$?!#40A4$JOC$KIU$$$F(B +$B$O(B @pxref{Gnus Unplugged} $B$r8+$F2<$5$$!#(B @item @code{nndraft} $B%P%C%/%(%s%I$,La$C$F$-$^$7$?$,!"0MA3$H$O0c$&$h$&$KF0:n$9(B @@ -19290,21 +19357,21 @@ Gnus $B$r%*%U%i%$%s%K%e!<%9%j!<%@!<$H$7$F;H$&?75!G=$,2C$($i$l$^$7$?!#2a>j(B $B$K=q$-D>$5$J$1$l$P$J$j$^$;$s!#(B @item -$BEj9FC$7$O8=:_$NA*BrJ}K!$r;H$&$h$&$K$J$j$^$7$?!#%7%s%\%k@\F,<-(B -@kbd{a} $B$OIaDL$NEj9FJ}K!$r6/@)$7$^$9!#(B +$BEj9FC$7$O8=:_$NA*BrJ}K!$r;H$&$h$&$K$J$j$^$7$?!#%7%s%\%k@\F,(B +$B<-(B @kbd{a} $B$OIaDL$NEj9FJ}K!$r6/@)$7$^$9!#(B @item M******** sm*rtq**t*s $B$rE,@Z$JJ8>O$KK]0F$9$k?7$7$$L?Na$,$"$j$^$9(B--- @kbd{W d}$B!#(B @item -@code{nntp} $B$N$h$j4JC1$J%G%P%C%0$N$?$a$K!"(B@code{nntp-record-commands} $B$r(B -@code{nil} $B$G$J$$CM$K@_Dj$9$k;v$,$G$-$^$9!#(B +@code{nntp} $B$N$h$j4JC1$J%G%P%C%0$N$?$a$K!"(B +@code{nntp-record-commands} $B$r(B @code{nil} $B$G$J$$CM$K@_Dj$9$k;v$,$G$-$^$9!#(B @item -@code{nntp} $B$O(B @file{~/.authinfo} $B$r;H$&$h$&$K$J$j!"$3$l$O(B @file{.netrc} -$B$N$h$&$J%U%!%$%k$G!"$I$3$G$I$N$h$&$K(B @sc{authinfo} $B$r(B @sc{nntp} $B%5!<%P!<(B -$B$KAw$k$+$r@)8f$9$k$?$a$N$b$N$G$9!#(B +@code{nntp} $B$O(B @file{~/.authinfo} $B$r;H$&$h$&$K$J$j!"$3$l(B +$B$O(B @file{.netrc} $B$N$h$&$J%U%!%$%k$G!"$I$3$G$I$N$h$&(B +$B$K(B @sc{authinfo} $B$r(B @sc{nntp} $B%5!<%P!<$KAw$k$+$r@)8f$9$k$?$a$N$b$N$G$9!#(B @item $B35N,%P%C%U%!$N%0%k!<%W%Q%i%a!<%?$rJT=8$9$k$?$a$NL?Na$,2C$($i$l$^$7$?!#(B @@ -19347,8 +19414,6 @@ M******** sm*rtq**t*s $B$rE,@Z$JJ8>O$KK]0F$9$k?7$7$$L?Na$,$"$j$^$9(B--- @end itemize - - @node Newest Features @subsection $B:G?7$N5!G=(B @cindex todo @@ -19947,8 +20012,6 @@ clear up info. @item group user-defined meta-parameters. - - From: John Griffith @item I like the option for trying to retrieve the FAQ for a group and I was @@ -19960,9 +20023,6 @@ What would be best I suppose is to find the one closest to your site. In any case, there is a list of general news group archives at @* ftp://ftp.neosoft.com/pub/users/claird/news.lists/newsgroup_archives.html - - - @item @example From: Jason L Tibbitts III @@ -19983,7 +20043,6 @@ opp en fil FOO-SERVER, FOO-SERVER.el, FOO-SERVER.eld, kan du la den v.ANfre en liste hvor du bruker hvert element i listen som FOO, istedet. da kunne man hatt forskjellige serveres startup-filer forskjellige steder. - @item LMI> Well, nnbabyl could alter the group info to heed labels like LMI> answered and read, I guess. @@ -19993,7 +20052,6 @@ unix mbox files). They could be used like this: - @example `M l RET' add label to current message. `M u RET' remove label from current message. @@ -20010,7 +20068,6 @@ would show all the messages which are labeled `bug' but not labeled One could also imagine the labels being used for highlighting, or affect the summary line format. - @item Sender: abraham@@dina.kvl.dk @@ -20062,7 +20119,6 @@ What i want is for Gnus to treat any sequence or combination of the following as a single spoiler warning and hide it all, replacing it with a "Next Page" button: - ^L's more than n blank lines @@ -20072,7 +20128,6 @@ more than m identical lines any whitespace surrounding any of the above - @item Well, we could allow a new value to `gnus-thread-ignore-subject' -- `spaces', or something. (We could even default to that.) And then @@ -20115,7 +20170,6 @@ Group-mode else select-article-under-cursor; - Article-mode if (key-pressed == SPACE) if (more-pages-in-article) @@ -20144,7 +20198,6 @@ It would be nice if it also handled which should correspond to `B nntp RET sunsite.auc.dk' in *Group*. - @item Take a look at w3-menu.el in the Emacs-W3 distribution - this works out @@ -20157,7 +20210,6 @@ article versions) variable. A value of '1' would just put _all_ the menus in a single 'GNUS' menu in the main menubar. This approach works really well for Emacs-W3 and VM. - @item nndoc should take care to create unique Message-IDs for all its articles. @@ -20545,7 +20597,7 @@ The jingle is only played on the second invocation of Gnus. Bouncing articles should do MIME. @item -Crossposted articles should "inherit" the % or @ mark from the other +Crossposted articles should "inherit" the % or @@ mark from the other groups it has been crossposted to, or something. (Agent.) @item @@ -20603,7 +20655,6 @@ Allow "orphan" scores in the Agent scoring. just changed to. @end example - @item Remove list identifiers from the subject in the summary when doing `^' and the like. @@ -20611,13 +20662,13 @@ and the like. @item Have the Agent write out articles, one by one, as it retrieves them, to avoid having to re-fetch them all if Emacs should crash while -fetching. +fetching. @item Be able to forward groups of messages as MIME digests. @item -nnweb should include the "get whole article" article when getting articles. +nnweb should include the "get whole article" article when getting articles. @item When I type W W c (gnus-article-hide-citation) in the summary @@ -20635,6 +20686,20 @@ to be the child of the message you're commenting. Handle external-body parts. @item +When renaming a group name, nnmail-split-history does not get the group +name renamed. + +@item +Allow mail splitting on bodies when using advanced mail splitting. + +@lisp + (body "whatever.text") +@end lisp + +@item +Be able to run `J u' from summary buffers. + +@item Solve the halting problem. @c TODO @@ -20648,7 +20713,8 @@ Solve the halting problem. @cindex colophon @cindex manual -$B$3$N%^%K%e%"%k$O(B TeXinfo $B%U%!%$%k$+$i:n@.$5$l!"$=$l$+$i(B @code{texi2dvi} +$B$3$N%^%K%e%"%k$O(B TeXinfo $B%U%!%$%k$+$i:n@.$5$l!"$=$l$+(B +$B$i(B @code{texi2dvi} @iflatex $B$b$7$/$O!"(BLars $B$5$s$N:n$i$l$?(B Texinfo to \LaTeX $BJQ49$rDL$j!"$=$l$+$i!"(B @code{latex} $B$H(B @code{dvips} @@ -20682,22 +20748,21 @@ Solve the halting problem. (setq flumphel 'yes) @end lisp -@samp{yes} $B$H(B @code{yes} $B$O(B2$B$D$N(B @emph{$BA4$/(B} $B0c$C$?$b$N$G$9(B---$B@dBP$K:.F1(B -$B$7$J$$$G$/$@$5$$!#(B +@samp{yes} $B$H(B @code{yes} $B$OFs$D$N(B @emph{$BA4$/(B} $B0c$C$?$b$N$G$9(B---$B@dBP$K:.(B +$BF1$7$J$$$G$/$@$5$$!#(B @iflatex @c @head $B$b$A$m$s!"$3$N%^%K%e%"%k$NA4$F$O=EBg$J6=L#$N$"$k$3$H$G$9$N$G!"$"$J$?$OA4(B $B$FFI$`$Y$-$G$9!#2?EY$b!#$7$+$7!"%^%K%e%"%k$ruBV$K$9$k$3$H$b$G$-$^$9!#$3$l$i$O%K%e!<(B -$B%9$r$l$N%0%k!<%W$O2?$i$+$N(B @dfn{$B%l%Y%k(B} $B$+B>$N$b$N(B (1-9) $B$G9XFI$5$l$F(B $B$$$^$9!#Dc$$%l%Y%k$N$b$N$O9b$$%l%Y%k$N$b$N$h$j(B ``$B$h$j(B'' $B9XFI$5$l$F$$$^$9!#(B -$B%s%S(B}; 9 $B$O(B @dfn{$B@Z$i$l$?(B} $B$H8+$J$5$l$^$9!#%0%k!<%W$r%j%9%H$7$?(B -$B$j!"?7$7$$%0%k!<%W$rAv::$7$?$j$9$kL?Na$O$9$Y$F?tCM@\F,0z?t$r(B @dfn{$BF0:n%l(B -$B%Y%k(B} $B$H$7$F;H$$$^$9!#(B +$B%s%S(B}; 9 $B$O(B @dfn{$B@Z$i$l$?(B} $B$H8+$J$5$l$^$9!#%0%k!<%W$r%j(B +$B%9%H$7$?$j!"?7$7$$%0%k!<%W$rAv::$7$?$j$9$kL?Na$O$9$Y$F?tCM@\F,0z?t(B +$B$r(B @dfn{$BF0:n%l%Y%k(B} $B$H$7$F;H$$$^$9!#(B @item $B@Z$i$l$?%0%k!<%W(B (killed groups) @cindex killed groups @@ -20839,8 +20903,8 @@ Gnus $B$,%0%k!<%W$KF~$k$H!"%0%k!<%W$NA4$F$NL$FI5-;v$N%X%C%@!<$r%P%C%/%(%s(B @item $B3hF02=(B (activating) @cindex activating groups $B%5!<%P!<$K%0%k!<%W$N>pJs$r?R$M!"L$FI5-;v$N?t$r1i;;$9$k9T0Y$O(B @dfn{$B%0%k!<(B -$B%W$r3hF02=$9$k(B} $B$H8F$P$l$F$$$^$9!#Hs3hF0%0%k!<%W$O%0%k!<%W%P%C%U%!$K(B -@samp{*} $B$H$H$b$K0lMwI=<($5$l$^$9!#(B +$B%W$r3hF02=$9$k(B} $B$H8F$P$l$F$$$^$9!#Hs3hF0%0%k!<%W$O%0%k!<%W%P%C%U%!(B +$B$K(B @samp{*} $B$H$H$b$K0lMwI=<($5$l$^$9!#(B @item $B%5!<%P!<(B (server) @cindex server @@ -20863,9 +20927,9 @@ Gnus $B$,%0%k!<%W$KF~$k$H!"%0%k!<%W$NA4$F$NL$FI5-;v$N%X%C%@!<$r%P%C%/%(%s(B @item $B0l;~%0%k!<%W(B (ephemeral groups) @cindex ephemeral groups -$B$?$$$F$$$N%0%k!<%W$O$I$N5-;v$rFI$s$@$+$N%G!<%?$rC_@Q$7$^$9!#(B@dfn{$B0l;~(B} -$B%0%k!<%W$O%G!<%?$,N/$a$i$l$J$$%0%k!<%W$G$9(B---$B%0%k!<%W$r=P$k$H!"$=$l$OE7(B -$B6u$K>C$(5n$j$^$9!#(B +$B$?$$$F$$$N%0%k!<%W$O$I$N5-;v$rFI$s$@$+$N%G!<%?$rC_@Q$7$^$9!#(B +@dfn{$B0l;~(B} $B%0%k!<%W$O%G!<%?$,N/$a$i$l$J$$%0%k!<%W$G$9(B---$B%0%k!<%W$r=P$k$H!"(B +$B$=$l$OE76u$K>C$(5n$j$^$9!#(B @item $B8GDj%0%k!<%W(B (solid groups) @cindex solid groups @@ -20901,7 +20965,6 @@ Gnus $B$,%0%k!<%W$KF~$k$H!"%0%k!<%W$NA4$F$NL$FI5-;v$N%X%C%@!<$r%P%C%/%(%s(B @end table - @page @node Customization @section $B%+%9%?%^%$%:(B @@ -20914,12 +20977,11 @@ Gnus $B$,%0%k!<%W$KF~$k$H!"%0%k!<%W$NA4$F$NL$FI5-;v$N%X%C%@!<$r%P%C%/%(%s(B @menu * Slow/Expensive Connection:: $B%m!<%+%k$N(B Emacs $B$rN)$A>e$2$F!"(B $BB>$N$H$3$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k!#(B -* Slow Terminal Connection:: $B1s3V(B Emacs $B$ro$KBg(B $B$-$/$J$C$F$$$^$9!#$=$l$K2C$($F!"(Bgnus $B$,FMA3$H$K$+$/8=>u%U%!%$%k$ro$K35N,%P%C%U%!$rCf?4:F@_Dj$r$9$k$3$H$r6X;_$9$k$?$a$K$3$l$r(B -@code{nil} $B$K@_Dj$7$F2<$5$$!#$3$l$,(B @code{vertical} $B$G$"$k$H!"?bD>J}8~$N(B -(vertical) $BCf?4:F@_Dj$N$_$r$7$^$9!#(B@code{nil} $B$G$b(B @code{vertical} $B$G$b(B -$BL5$1$l$P!"?eJ?J}8~$H?bD>J}8~$NN>J}$NCf?4:F@_Dj$r9T$$$^$9!#(B +Gnus $B$,>o$K35N,%P%C%U%!$rCf?4:F@_Dj$r$9$k$3$H$r6X;_$9$k$?$a$K$3$l(B +$B$r(B @code{nil} $B$K@_Dj$7$F2<$5$$!#$3$l$,(B @code{vertical} $B$G$"$k$H!"?bD>J}(B +$B8~$N(B (vertical) $BCf?4:F@_Dj$N$_$r$7$^$9!#(B@code{nil} $B$G(B +$B$b(B @code{vertical} $B$G$bL5$1$l$P!"?eJ?J}8~$H?bD>J}8~$NN>J}$NCf?4:F@_Dj$r(B +$B9T$$$^$9!#(B @item gnus-visible-headers $B5-;v$K4^$^$l$k%X%C%@!<$r:G>.8B$K8:$i$7$^$9!#o$K35N,%P%C%U%!$rCf?4:F@_Dj$r$9$k$3$H$r6X;_$9$k$?$a$K$3$l$r(B $B$N$G!";~4V$r@aLs$G$-$k$G$7$g$&!#(B @end table - @node Little Disk Space @subsection $B>/$7$N%G%#%9%/MFNL(B @cindex disk space @@ -20999,24 +21060,24 @@ Gnus $B$,>o$K35N,%P%C%U%!$rCf?4:F@_Dj$r$9$k$3$H$r6X;_$9$k$?$a$K$3$l$r(B @table @code @item gnus-save-newsrc-file -$B$3$l$,(B @code{nil} $B$G$"$k$H!"(Bgnus $B$O7h$7$F(B @file{.newsrc} $B$rJ]B8$7$^$;$s(B--- -$B$=$l$O(B @file{.newsrc.eld} $B$N$_$rJ]B8$7$^$9!#$3$l$O!"(Bgnus $B$NB>$N%K%e!<%9(B -$B%j!<%@!<$r;H$($J$$$H$$$&;v$G$9!#$3$NJQ?t$O=i4|@_Dj$G(B @code{t} $B$G$9!#(B +$B$3$l$,(B @code{nil} $B$G$"$k$H!"(Bgnus $B$O7h$7$F(B @file{.newsrc} $B$rJ]B8$7$^$;(B +$B$s(B---$B$=$l$O(B @file{.newsrc.eld} $B$N$_$rJ]B8$7$^$9!#$3$l$O!"(Bgnus $B$NB>$N%K%e!<(B +$B%9%j!<%@!<$r;H$($J$$$H$$$&;v$G$9!#$3$NJQ?t$O=i4|@_Dj$G(B @code{t} $B$G$9!#(B @item gnus-read-newsrc-file -$B$3$l$,(B @code{nil} $B$G$"$l$P!"(Bgnus $B$O(B @file{.newsrc} $B$r7h$7$FFI$_$^$;$s(B ----@file{.newsrc.eld} $B$@$1$rFI$_$^$9!#$3$l$O!"(Bgnus $B0J30$N%K%e!<%9%j!<%@!<(B -$B$r;H$($J$/$J$k!"$H$$$&$3$H$G$9!#$3$NJQ?t$O=i4|@_Dj$G$O(B @code{t} $B$G$9!#(B +$B$3$l$,(B @code{nil} $B$G$"$l$P!"(Bgnus $B$O(B @file{.newsrc} $B$r7h$7$FFI$_$^$;(B +$B$s(B ---@file{.newsrc.eld} $B$@$1$rFI$_$^$9!#$3$l$O!"(Bgnus $B0J30$N%K%e!<%9%j!<(B +$B%@!<$r;H$($J$/$J$k!"$H$$$&$3$H$G$9!#$3$NJQ?t$O=i4|@_Dj$G$O(B @code{t} $B$G$9!#(B @item gnus-save-killed-list $B$3$l$,(B @code{nil} $B$G$"$k$H!"(Bgnus $B$O;`$s$@%0%k!<%W$N%j%9%H$rJ]B8$7$^$;$s!#(B -$B$3$NJQ?t$r(B @code{nil} $B$K@_Dj$7$?$H$-$O!"(B@code{gnus-check-new-newsgroups} -$B$r(B @code{ask-server} $B$K!"(B@code{gnus-check-bogus-newsgroups} $B$r(B -@code{nil} $B$K@_Dj$9$k$Y$-$G$7$g$&!#$3$NJQ?t$O=i4|@_Dj$G(B @code{t} $B$G$9!#(B +$B$3$NJQ?t$r(B @code{nil} $B$K@_Dj$7$?$H$-$O!"(B +@code{gnus-check-new-newsgroups} $B$r(B @code{ask-server} $B$K!"(B +@code{gnus-check-bogus-newsgroups} $B$r(B @code{nil} $B$K@_Dj$9$k$Y$-$G$7$g$&!#(B +$B$3$NJQ?t$O=i4|@_Dj$G(B @code{t} $B$G$9!#(B @end table - @node Slow Machine @subsection $BCY$$5!3#(B @cindex slow machine @@ -21024,13 +21085,11 @@ Gnus $B$,>o$K35N,%P%C%U%!$rCf?4:F@_Dj$r$9$k$3$H$r6X;_$9$k$?$a$K$3$l$r(B $B$b$7CY$$5!3#$r;}$C$F$$$k$+!"$b$7$/$OC1$KK\Ev$KG&BQNO$,$J$$;~$O!"(Bgnus $B$N(B $B/$7$"$j$^$9!#(B -$B5/F0$rB.$/$9$k$?$a$K(B @code{gnus-check-new-newsgroups} $B$H(B -@code{gnus-check-bogus-newsgroups} $B$r(B @code{nil} $B$K@_Dj$7$F2<$5$$!#(B - -$B35N,%P%C%U%!$KF~$k;v$HH4$1$k;v$rB.$/$9$k$?$a$K!"(B@code{gnus-show-threads} -$B$H(B @code{gnus-use-cross-reference} $B$H(B @code{gnus-nov-is-evil} $B$r(B -@code{nil} $B$K@_Dj$7$F2<$5$$!#(B - +$B5/F0$rB.$/$9$k$?$a(B +$B$K(B @code{gnus-check-new-newsgroups} $B$H(B @code{gnus-check-bogus-newsgroups} $B$r(B @code{nil} $B$K(B +$B@_Dj$7$F2<$5$$!#35N,%P%C%U%!$KF~$k;v$HH4$1$k;v$rB.$/$9$k$?$a$K!"(B +@code{gnus-show-threads} $B$H(B @code{gnus-use-cross-reference} $B$H(B @code{gnus-nov-is-evil} $B$r(B @code{nil} $B$K(B +$B@_Dj$7$F2<$5$$!#(B @page @node Troubleshooting @@ -21048,28 +21107,27 @@ Gnus $B$OH"$+$i=P$7$F$9$0$K(B @emph{$BHs>o$K(B} $B$h$/F0:n$7$^$9(B---$B2? $B$"$J$?$N%3%s%T%e!<%?$N%9%$%C%A$,F~$C$F$$$k;v$r3N$+$a$F2<$5$$!#(B @item -$BK\Ev$K8=9T$N(B gnus $BHG$rFI$_9~$s$G$$$k;v$r3NG'$7$F2<$5$$!#:#$^$G(B @sc{gnus} -$B$rC$7$F2<$5$$!#(B +@samp{T-gnus 6.14.* (based on Gnus v5.8.8; for SEMI 1.13, FLIM 1.13)} $B$N(B +$B$h$&$J$b$N$,=P$F$-$?$J$i!"@5$7$$%U%!%$%k$,FI$_9~$^$l$F$$$^$9!#$b$7!"(B +@samp{NNTP 3.x} $B$d(B @samp{nntp flee} $B$N$h$&$J$b$N$,=P$F$-$?$H$-$O!"$=$3$K(B +$B$"$k$$$/$D$+$N8E$$(B @file{.el} $B%U%!%$%k$,FI$_9~$^$l$F$$$^$9!#$=$l$i$r>C$7(B +$B$F2<$5$$!#(B @item -FAQ $B$H(B how-to $B$rFI$`$?$a$K%X%k%W%0%k!<%W(B ($B%0%k!<%W%P%C%U%!$G(B @kbd{G h}) -$B$rFI$s$G2<$5$$!#(B +FAQ $B$H(B how-to $B$rFI$`$?$a$K%X%k%W%0%k!<%W(B ($B%0%k!<%W%P%C%U%!(B +$B$G(B @kbd{G h}) $B$rFI$s$G2<$5$$!#(B @item @vindex max-lisp-eval-depth -Gnus $B$OB?$/$NB?$/$N:F5"9=B$$GF0:n$7!"2?$i$+$N6KC<$J(B ($B$=$7$FHs>o$K$^$l$J(B) -$B;vNc$G$O!"(Bgnus $B$O:F5"$r(B ``$B$"$^$j$K?<$/(B'' $B9_$j$9$.$F!"(BEmacs $B$,$"$J$?$K%S!<(B -$B%W2;$rLD$i$9;v$,$"$j$^$9!#$b$7$3$l$,5/$3$C$?$J$i!"(B +Gnus $B$OB?$/$NB?$/$N:F5"9=B$$GF0:n$7!"2?$i$+$N6KC<$J(B ($B$=$7$FHs>o$K$^$l(B +$B$J(B) $B;vNc$G$O!"(Bgnus $B$O:F5"$r(B ``$B$"$^$j$K?<$/(B'' $B9_$j$9$.$F!"(BEmacs $B$,$"$J$?(B +$B$K%S!<%W2;$rLD$i$9;v$,$"$j$^$9!#$b$7$3$l$,5/$3$C$?$J$i!"(B @code{max-lisp-eval-depth} $B$r(B 500 $B$+$=$l$/$i$$$NCM$K@_Dj$7$F2<$5$$!#(B @end enumerate @@ -21081,10 +21139,11 @@ Gnus $B$OB?$/$NB?$/$N:F5"9=B$$GF0:n$7!"2?$i$+$N6KC<$J(B ($B$=$7$FHs>o$K$^$l$J @kindex M-x gnus-bug @findex gnus-bug $B$b$7(B gnus $B$N%P%0$r8+$D$1$?$J$i!"L?Na(B @kbd{M-x gnus-bug} $B$K$h$C$F$=$l$rJs(B -$B9p$9$k;v$,$G$-$^$9!#(B@kbd{M-x set-variable RET debug-on-error RET t RET} -$B$H$7$F!"$=$l$+$i;d$K%P%C%/%H%l!<%9$rAw$C$F2<$5$$!#;d$O%P%0$r=$@5$7$h$&$H(B -$B$7$^$9$,!"$"$J$?$,%P%0$r:F8=$5$;$kJ}K!$r@53N$K=q$$$F$/$l$?$H$-$N$_!"$=$l(B -$B$r=$@5$9$k;v$,$G$-$^$9!#(B +$B9p$9$k;v$,$G$-$^$9!#(B +@kbd{M-x set-variable RET debug-on-error RET t RET} $B$H$7$F!"$=$l$+$i;d$K(B +$B%P%C%/%H%l!<%9$rAw$C$F2<$5$$!#;d$O%P%0$r=$@5$7$h$&$H$7$^$9$,!"$"$J$?$,%P(B +$B%0$r:F8=$5$;$kJ}K!$r@53N$K=q$$$F$/$l$?$H$-$N$_!"$=$l$r=$@5$9$k;v$,$G$-$^(B +$B$9!#(B $B%P%0Js9p$G$O!">\:Y$9$.$k$3$H$O7h$7$F$"$j$^$;$s!#%P%0Js9p$r$9$k$H$-$O!"$=(B $B$l$,;H$&$?$S$K(B 10Kb $B%a!<%k$r:n$j!"$b$7$"$J$?$N4D6-$r0JA0;d$K(B 500 $B2sAw$C(B @@ -21092,10 +21151,10 @@ Gnus $B$OB?$/$NB?$/$N:F5"9=B$$GF0:n$7!"2?$i$+$N6KC<$J(B ($B$=$7$FHs>o$K$^$l$J $B;d$O!"5-21$H$$$&o$K!"A4$F$r@bL@$7$9$.(B -$B$F2<$5$$!#$=$l$O2f!9A4$F$K$H$C$F$b$C$H4JC1$K$J$j$^$9(B---$B$b$7;d$,I,MW$JA4(B -$B$F$N>pJs$rF@$i$l$J$+$C$?$i!";d$O$"$J$?$K%a!<%k$rAw$C$F$5$i$J$k>pJs$r5a$a!"(B +$B$,(B ``$B$$$d!"$=$&$G$O$J$$(B! $B$3$N$P$+o$K!"A4$F$r@bL@$7$9$.$F(B +$B2<$5$$!#$=$l$O2f!9A4$F$K$H$C$F$b$C$H4JC1$K$J$j$^$9(B---$B$b$7;d$,I,MW$JA4$F(B +$B$N>pJs$rF@$i$l$J$+$C$?$i!";d$O$"$J$?$K%a!<%k$rAw$C$F$5$i$J$k>pJs$r5a$a!"(B $B$=$N7k2LA4$F$,$h$jB?$/$N;~4V$rLL$7$F$$$kLdBj$,Hs>o$K;k3PE*$G!"$=$l$r>el(B @@ -21111,36 +21170,33 @@ Gnus $B$OB?$/$NB?$/$N:F5"9=B$$GF0:n$7!"2?$i$+$N6KC<$J(B ($B$=$7$FHs>o$K$^$l$J $B$^$?!"(Bding $B%a!<%j%s%0%j%9%H(B---@samp{ding@@gnus.org} $B$K?V$M$k;v$b$G$-(B $B$^$9!#9XFI$9$k$?$a$K$O(B @samp{ding-request@@gnus.org} $B$K=q$$$F2<$5$$!#(B - @page @node Gnus Reference Guide @section Gnus $B$N;2>H%,%$%I(B -$B;d$N4j$$$O!"B>$NC/$+$,(B gnus $B$G$G$-$k2?$+8-$$$b$N$r9M$(=P$7!"$=$N(B -$B>e$=$N8-$$$b$N$r=q$$$F$/$l$k$H$$$&$3$H$G$9!#$3$l$rMF0W$K$9$k$?$a(B -$B$K$O!"(Bgnus $B$NFbItF0:n$r5-=R$9$k$N$,NI$$J}K!$@$m$&$H;d$O;W$$$^$7(B -$B$?!#$"$H!"$=$s$J$KFbIt$8$c$J$$F0:n$r$$$/$D$+$H!";d$,:#$d$C$F$k$3(B -$B$H$H!#(B +$B;d$N4j$$$O!"B>$NC/$+$,(B gnus $B$G$G$-$k2?$+8-$$$b$N$r9M$(=P$7!"$=$N>e$=$N8-(B +$B$$$b$N$r=q$$$F$/$l$k$H$$$&$3$H$G$9!#$3$l$rMF0W$K$9$k$?$a$K$O!"(Bgnus $B$NFb(B +$BItF0:n$r5-=R$9$k$N$,NI$$J}K!$@$m$&$H;d$O;W$$$^$7$?!#$"$H!"$=$s$J$KFbIt$8$c(B +$B$J$$F0:n$r$$$/$D$+$H!";d$,:#$d$C$F$k$3$H$H!#(B -$B%W%m%0%i%`$NFbIt9=B$$,JQ99$5$l$k$3$H$O$J$$!"$J$I$H;W$C$F$O$$$1$^(B -$B$;$s$,!"(Bgnus $B$H$=$N%P%C%/%(%s%I4V$N%$%s%?!<%U%'!<%9(B($B$3$l$O40A4$K(B -$B5-=R$5$l$F$$$k(B)$B$d!"%9%3%"%U%!%$%k$N7A<0(B($B$3$l$bF1MM(B)$B!"%G!<%?9=B$(B -($B$3$l$OB>$h$jJQ99$5$l$d$9$$$b$N$b$"$k(B)$B!"A`:nMQ$N0lHL%a%=%C%I!"$J(B -$B$I$r(B($B:YIt$K$o$?$C$F(B)$BDj5A$7$F$$$-$^$9!#(B +$B%W%m%0%i%`$NFbIt9=B$$,JQ99$5$l$k$3$H$O$J$$!"$J$I$H;W$C$F$O$$$1$^$;$s$,!"(B +gnus $B$H$=$N%P%C%/%(%s%I4V$N%$%s%?!<%U%'!<%9(B ($B$3$l$O40A4$K5-=R$5$l$F$$(B +$B$k(B) $B$d!"%9%3%"%U%!%$%k$N7A<0(B ($B$3$l$bF1MM(B)$B!"%G!<%?9=B$(B ($B$3$l$OB>$h$jJQ99(B +$B$5$l$d$9$$$b$N$b$"$k(B)$B!"A`:nMQ$N0lHL%a%=%C%I!"$J$I$r(B ($B:YIt$K$o$?$C$F(B) $BDj(B +$B5A$7$F$$$-$^$9!#(B @menu -* Gnus Utility Functions:: $B;HMQ$G$-$k6&DL$N4X?t$HJQ?t!#(B -* Backend Interface:: Gnus $B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+!#(B -* Score File Syntax:: $B%9%3%"%U%!%$%k5,3J$N(B BNF $BDj5A!#(B -* Headers:: Gnus $B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<$9$k$+!#(B -* Ranges:: $B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0!#(B -* Group Info:: $B%0%k!<%W>pJs7A<0!#(B -* Extended Interactive:: $B5-9f@\F,<-$J$I!#(B -* Emacs/XEmacs Code:: Gnus $B$OA4$F$N6aBe(B Emacsen $B$GF0:n$9$k!#(B -* Various File Formats:: Gnus $B$N;HMQ$9$k%U%!%$%k$N7A<0!#(B +* Gnus Utility Functions:: $B;HMQ$G$-$k6&DL$N4X?t$HJQ?t(B +* Backend Interface:: Gnus $B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+(B +* Score File Syntax:: $B%9%3%"%U%!%$%k5,3J$N(B BNF $BDj5A(B +* Headers:: Gnus $B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<$9$k$+(B +* Ranges:: $B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0(B +* Group Info:: $B%0%k!<%W>pJs7A<0(B +* Extended Interactive:: $B5-9f@\F,<-$J$I(B +* Emacs/XEmacs Code:: Gnus $B$OA4$F$N6aBe(B Emacsen $B$GF0:n$9$k(B +* Various File Formats:: Gnus $B$N;HMQ$9$k%U%!%$%k$N7A<0(B @end menu - @node Gnus Utility Functions @subsection Gnus $B$NM-MQ$J4X?t(B @cindex Gnus utility functions @@ -21238,7 +21294,7 @@ Gnus $B=*N;;~$K>C5n$9$k%P%C%U%!$N0lMw$K8=:_$N%P%C%U%!$rDI2C$7$^$9!#(B @item gnus-group-set-parameter @findex gnus-group-set-parameter -$B;0$D$N0z?t(B @var{group}$B!"(B @var{parameter}$B!"(B@var{value} $B$rC5n$9$k%P%C%U%!$N0lMw$K8=:_$N%P%C%U%!$rDI2C$7$^$9!#(B @item gnus-check-backend-function @findex gnus-check-backend-function -$BFs$D$N0z?t(B @var{function}$B!"(B@var{group} $B$rC5n$9$k%P%C%U%!$N0lMw$K8=:_$N%P%C%U%!$rDI2C$7$^$9!#(B @end table - @node Backend Interface @subsection $B%P%C%/%(%s%I%$%s%?!<%U%'!<%9(B -Gnus $B$O(B @sc{nntp} $B$d%9%W!<%k!"%a!<%k!"2>A[%0%k!<%W$K$D$$$F$O2?$K(B -$B$bCN$j$^$;$s!#$?$@2>A[%5!<%P!<(B @dfn{virtual servers} $B$HBPOC$9$k(B -$BJ}K!$rCN$C$F$$$k$@$1$G$9!#2>A[%5!<%P!<$O%P%C%/%(%s%I(B -@dfn{backend} $B$H$$$/$D$+$N%P%C%/%(%s%IJQ?t(B @dfn{backend -variables} $B$+$i$J$j$^$9!#A0pJs$rMW(B -$B5a$9$k$H$-$O!"DL>o4X?t$N0z?t$H$7$F2>A[%5!<%P!$r4^$a$^$9!#(B ($B$b(B -$B$7$J$1$l$P!"%P%C%/%(%s%I$O(B ``$B8=:_$N(B'' $B2>A[%5!<%P!<$r;HMQ$7$^$9!#(B) -$BNc$($P!"(B@code{nntp-request-list} $B$O$=$NM#0l$N(B ($B>JN,2DG=$J(B) $B0z?t(B -$B$H$7$F2>A[%5!<%P!<$rA[%5!<%P!<$,3+$+$l$F$$$J(B -$B$1$l$P!"$3$N4X?t$O<:GT$7$^$9!#(B +Gnus $B$O(B @sc{nntp} $B$d%9%W!<%k!"%a!<%k!"2>A[%0%k!<%W$K$D$$$F$O2?$K$bCN$j$^(B +$B$;$s!#$?$@2>A[%5!<%P!<(B @dfn{virtual servers} $B$HBPOC$9$kJ}K!$rCN$C$F$$$k(B +$B$@$1$G$9!#2>A[%5!<%P!<$O%P%C%/%(%s%I(B @dfn{backend} $B$H$$$/$D$+$N%P%C%/%((B +$B%s%IJQ?t(B @dfn{backend variables} $B$+$i$J$j$^$9!#A0pJs$rMW5a$9$k$H(B +$B$-$O!"DL>o4X?t$N0z?t$H$7$F2>A[%5!<%P!$r4^$a$^$9!#(B($B$b$7$J$1$l$P!"%P%C(B +$B%/%(%s%I$O(B ``$B8=:_$N(B'' $B2>A[%5!<%P!<$r;HMQ$7$^$9!#(B) $BNc$($P!"(B +@code{nntp-request-list} $B$O$=$NM#0l$N(B ($B>JN,2DG=$J(B) $B0z?t$H$7$F2>A[%5!<%P!<(B +$B$rA[%5!<%P!<$,3+$+$l$F$$$J$1$l$P!"$3$N4X?t$O<:GT$7$^(B +$B$9!#(B -$B2>A[%5!<%P!$O!"J*M}E*$J%5!<%P!$H$O2?$N4X78$bL5$$$3$H$KCm0U(B -$B$7$F$/$@$5$$!#$3$NNc$r8+$F$/$@$5$$!#(B +$B2>A[%5!<%P!$O!"J*M}E*$J%5!<%P!$H$O2?$N4X78$bL5$$$3$H$KCm0U$7$F$/$@(B +$B$5$$!#$3$NNc$r8+$F$/$@$5$$!#(B @lisp (nntp "odd-one" @@ -21289,48 +21342,45 @@ Gnus $B$,%P%C%/%(%s%I(B --- $BNc$($P(B @code{nntp} --- $B$K2?$+$N>pJs$rMW( (nntp-port-number 4324)) @end lisp -$B$3$3$G!"J*M}%5!<%P!$O(B @samp{ifi.uio.no} $B$G$"$k$N$KBP$7!"2>A[(B -$B%5!<%P!$O(B @samp{odd-one} $B$G$9!#(B +$B$3$3$G!"J*M}%5!<%P!$O(B @samp{ifi.uio.no} $B$G$"$k$N$KBP$7!"2>A[%5!<%P!<(B +$BL>$O(B @samp{odd-one} $B$G$9!#(B -$B%P%C%/%(%s%I$OJ#?t$N2>A[%5!<%P!<$r@Z$jBX$(2DG=$G$J$1$l$P$J$j$^$;(B -$B$s!#I8=`$N%P%C%/%(%s%I$O$3$l$r!"2>A[%5!<%P!<4D6-$rI,MW$J$H$-$KA[%5!<%P!<$r@Z$jBX$(2DG=$G$J$1$l$P$J$j$^$;$s!#I8=`(B +$B$N%P%C%/%(%s%I$O$3$l$r!"2>A[%5!<%P!<4D6-$rI,MW$J$H$-$Ko$K3NG'$9$kG$0U4X?t(B @dfn{optional -functions} $B$G$9!#(B +$B%$%s%?!<%U%'!<%94X?t$OFs$D$N%0%k!<%W$,$"$j$^$9!#I,$:B8:_$7$J$1$l$P$J$i$J(B +$B$$I,?\4X?t(B @dfn{required functions} $B$H!"(Bgnus $B$,8F$S=P$7$r9T$J$&A0$K$=$l(B +$B$,B8:_$9$k$+$r>o$K3NG'$9$kG$0U4X?t(B @dfn{optional functions} $B$G$9!#(B -$B$3$l$i$N4X?t$OA4$F!"JV5Q%G!<%?$r(B @code{nntp-server-buffer} -(@samp{ *nntpd*}) $B%P%C%U%!!<$KJV$9$3$H$,5a$a$i$l$^$9!#$3$l$O$A$g$C(B -$B$HIT1?$JL>A0IU$1$G$9$,!"$3$l$G2fK}$7$J$1$l$P$J$j$^$;$s!#;d$,7k2L(B -$B$N%G!<%?(B @dfn{resulting data} $B$H8@$C$?$H$-$O!"$=$N%P%C%U%!!<$NCf(B -$B$N%G!<%?$r;X$7$F$$$^$9!#JV5QCM(B @dfn{return value} $B$H8@$C$?$H$-$O!"(B -$B4X?t8F$S=P$7$K$h$C$FJV$5$l$k4X?t$NCM$N$3$H$r8@$C$F$$$^$9!#4X?t$,(B -$B<:GT$7$?$H$-$OJV5QCM$H$7$F(B @code{nil} $B$rJV$5$J$/$F$O$$$1$^$;$s!#(B +$B$3$l$i$N4X?t$OA4$F!"JV5Q%G!<%?(B +$B$r(B @code{nntp-server-buffer} (@samp{*nntpd*}) $B%P%C%U%!!<$KJV$9$3$H$,5a$a(B +$B$i$l$^$9!#$3$l$O$A$g$C$HIT1?$JL>A0IU$1$G$9$,!"$3$l$G2fK}$7$J$1$l$P$J$j$^(B +$B$;$s!#;d$,7k2L$N%G!<%?(B @dfn{resulting data} $B$H8@$C$?$H$-$O!"$=$N%P%C%U%!!<(B +$B$NCf$N%G!<%?$r;X$7$F$$$^$9!#JV5QCM(B @dfn{return value} $B$H8@$C$?$H$-$O!"4X(B +$B?t8F$S=P$7$K$h$C$FJV$5$l$k4X?t$NCM$N$3$H$r8@$C$F$$$^$9!#4X?t$,<:GT$7$?$H(B +$B$-$OJV5QCM$H$7$F(B@code{nil} $B$rJV$5$J$/$F$O$$$1$^$;$s!#(B -$B%P%C%/%(%s%I$K$O%5!<%P!<7A<0(B @dfn{server-forming} $B$N%P%C%/%(%s%I(B -$B$G$"$k$H8F$P$l$k$b$N$,$"$j!"$^$?$=$&8F$P$l$J$$$b$N$b$"$j$^$9!#8e(B -$BpJs$rG[Aw$9$k$b$N$G!"$=$l0J>e$N$b$N$G$O$"$j$^$;$s!#(B +$B%P%C%/%(%s%I$K$O%5!<%P!<7A<0(B @dfn{server-forming} $B$N%P%C%/%(%s%I$G$"$k$H(B +$B8F$P$l$k$b$N$,$"$j!"$^$?$=$&8F$P$l$J$$$b$N$b$"$j$^$9!#8epJs$rG[Aw$9$k$b$N(B +$B$G!"$=$l0J>e$N$b$N$G$O$"$j$^$;$s!#(B -$B$3$3$G$NNc$HDj5A$G$O!"A[A|>e$N%P%C%/%(%s%I(B @code{nnchoke} $B$r0z$-(B -$B9g$$$K=P$9$3$H$K$7$^$9!#(B +$B$3$3$G$NNc$HDj5A$G$O!"A[A|>e$N%P%C%/%(%s%I(B @code{nnchoke} $B$r0z$-9g$$$K=P(B +$B$9$3$H$K$7$^$9!#(B @cindex @code{nnchoke} @menu -* Required Backend Functions:: $BJ,$J(B -$B%X%C%@!o!"(B@code{articles} $B$NCf(B -$B$N:G>.HV9f$N5-;v$h$j$b>.$5$$5-;v$+$i(B ($B>/$J$/$H$b(B) -@var{fetch-old} $B8D$NM>J,$J%X%C%@!<$r$&$3$H$rHQ$o$7$$$H;W$C$?(B -$B>l9g$K$O!"$3$N%Q%i%a!<%?$NB8:_$OL5;k$5$l$k$3$H$b$"$j$^$9!#$3$NCM(B -$B$,(B @code{nil} $B$G$b?t;z$G$b$J$1$l$P!":GBg8B$NJ,$J%X%C%@!o!"(B@code{articles} $B$NCf$N:G>.HV9f$N5-;v$h(B +$B$j$b>.$5$$5-;v$+$i(B ($B>/$J$/$H$b(B) @var{fetch-old} $B8D$NM>J,$J%X%C%@!<$r$&$3$H$r(B +$BHQ$o$7$$$H;W$C$?>l9g$K$O!"$3$N%Q%i%a!<%?$NB8:_$OL5;k$5$l$k$3$H$b$"$j$^$9!#(B +$B$3$NCM$,(B @code{nil} $B$G$b?t;z$G$b$J$1$l$P!":GBg8B$N " Article retrieved." eol header = eol @end example -$B$b$7JV5QCM$,(B @code{nov} $B$G$"$l$P!"%G!<%?%P%C%U%!!<$K$O(B -@dfn{network overview database} $B9T$,4^$^$l$F$J$/$F$O$J$j$^$;$s!#(B +$B$b$7JV5QCM$,(B @code{nov} $B$G$"$l$P!"%G!<%?%P%C%U%!!<$K(B +$B$O(B @dfn{network overview database} $B9T$,4^$^$l$F$J$/$F$O$J$j$^$;$s!#(B $B$3$l$O4pK\E*$K$OJ#?t$NMs$r%?%V$G6h@Z$C$?$b$N$G$9!#(B @example @@ -21401,7 +21449,6 @@ field = $B$3$l$i$NMs$K$I$N$h$&$J$b$N$,4^$^$l$k$+$r$h$j>\$7$/8+$?$1$l$P!"(B @pxref{Headers} $B$r;2>H$7$F$/$@$5$$!#(B - @item (nnchoke-open-server SERVER &optional DEFINITIONS) $B$3$3$G$N(B @var{server} $B$O2>A[%5!<%P!$G$9!#(B@var{definitions} $B$O(B @@ -21416,7 +21463,6 @@ field = $B$NCM$rJV5Q$7$J$1$l$P$J$j$^$;$s!#$3$N$H$-!"JV$5$l$k7k2L$N%G!<%?$O(B $B$"$j$^$;$s!#(B - @item (nnchoke-close-server &optional SERVER) @var{server} $B$X$N@\B3$rJD$8!"$3$l$K4XO"$9$k$9$Y$F$N;q8;$r3+J|$7(B @@ -21425,7 +21471,6 @@ field = $BJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-request-close) $BA4$F$N%5!<%P!<$N@\B3$rJD$8!"%P%C%/%(%s%I$,J]M-$7$F$$$kA4$F$N;q8;(B @@ -21435,7 +21480,6 @@ field = $BJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-server-opened &optional SERVER) $B$b$7(B @var{server} $B$,8=:_$N2>A[%5!<%P!<$G!"$=$NJ*M}%5!<%P!<$X$N@\(B @@ -21445,39 +21489,33 @@ field = $BJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-status-message &optional SERVER) $B$3$N4X?t$O(B @var{server} $B$+$i$N:G8e$N%(%i!<%a%C%;!<%8$rJV5Q$7$^$9!#(B $BJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-request-article ARTICLE &optional GROUP SERVER TO-BUFFER) -$B$3$N4X?t$N7k2L$N%G!<%?$O!"(B@var{article} $B$G;XDj$5$l$?5-;v$G$9!#$3(B -$B$N;XDj$O(B @code{Message-ID} $B$+HV9f$N$$$:$l$+$G$9!#(B -@code{Message-ID} $B$K$h$k5-;v$No$N(B -$B%G!<%?%P%C%U%!$NBe$o$j$K!"$3$N%P%C%U%!$KJV$5$l$^$9!#$3$l$K$h$jB?(B -$BNL$N%G!<%?$r$"$k%P%C%U%!$+$iJL$N%P%C%U%!$K%3%T!<$9$k$3$H$rHr$1$k(B -$B$3$H$,$G$-!"$=$7$F(B gnus $B$ODL>o!"5-;v%P%C%U%!$KD>@\5-;v$rA^F~$9$k(B -$B$h$&$KMW5a$7$F$$$^$9!#(B - -$B$b$72DG=$G$"$k$N$J$i!"$3$N4X?t$O!"(B@code{car}$B$,$G!"(B@code{cdr} $B$,5-;vHV9f$G$"$k(B cons $B%;%k$rJV$9$Y$-$G(B -$B$9!#$3$l$K$h$j(B @code{Message-ID} $B$K$h$C$F5-;v$rl9g$K$O!"5-;v$No$N%G!<%?%P%C(B +$B%U%!$NBe$o$j$K!"$3$N%P%C%U%!$KJV$5$l$^$9!#$3$l$K$h$jB?NL$N%G!<%?$r$"$k%P%C(B +$B%U%!$+$iJL$N%P%C%U%!$K%3%T!<$9$k$3$H$rHr$1$k$3$H$,$G$-!"$=$7$F(B gnus $B$ODL(B +$B>o!"5-;v%P%C%U%!$KD>@\5-;v$rA^F~$9$k$h$&$KMW5a$7$F$$$^$9!#(B + +$B$b$72DG=$G$"$k$N$J$i!"$3$N4X?t$O!"(B@code{car}$B$,$G!"(B@code{cdr} $B$,5-;vHV9f$G$"$k(B cons $B%;%k$rJV$9$Y$-$G$9!#$3$l$K$h(B +$B$j(B @code{Message-ID} $B$K$h$C$F5-;v$rl9g$K$O!"5-(B +$B;v$NuBV$G!"$3$l$O(B 211 $B$G$J$/$F$O$J$j$^$;$s!#.$N5-;vHV9f!":GBg$N5-;vHV9f!"$=$7$F:G(B -$B8e$,%0%k!<%WL>$G$9!#5-;v$NAm?t$O!":GBg!&:G>.5-;vHV9f$+$iC1=c$K9M(B -$B$($i$l$k?t$h$j$b>.$5$$$3$H$,$"$k$3$H$KCm0U$7$F$/$@$5$$!#$$$/$D$+(B -$B$N5-;v$OC$5$l$F$$$k$+$b$7$l$^$;$s!#(BGnus $B$OAm?t$OC1$KuBV$G!"$3$l$O(B 211 $B$G$J$/$F$O$J$j$^$;$s!#.$N5-;vHV9f!":GBg$N5-;vHV9f!"$=$7$F:G8e$,%0%k!<%WL>$G(B +$B$9!#5-;v$NAm?t$O!":GBg!&:G>.5-;vHV9f$+$iC1=c$K9M$($i$l$k?t$h$j$b>.$5$$$3(B +$B$H$,$"$k$3$H$KCm0U$7$F$/$@$5$$!#$$$/$D$+$N5-;v$OC$5$l$F$$$k$+$b$7$l(B +$B$^$;$s!#(BGnus $B$OAm?t$OC1$K " " info = "211 " 3* [ " " ] @end example - @item (nnchoke-close-group GROUP &optional SERVER) -@var{group} $B$rJD$8!"$=$l$K@\B3$5$l$F$$$kA4$F$N;q8;$r3+J|$7$^$9!#(B -$B$3$l$O$[$H$s$I$N%P%C%/%(%s%I$G$O2?$b$9$k$3$H$,$J$$$G$7$g$&!#(B +@var{group} $B$rJD$8!"$=$l$K@\B3$5$l$F$$$kA4$F$N;q8;$r3+J|$7$^$9!#$3$l$O$[(B +$B$H$s$I$N%P%C%/%(%s%I$G$O2?$b$9$k$3$H$,$J$$$G$7$g$&!#(B $BJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-request-list &optional SERVER) @var{server} $B>e$GMxMQ2DG=$JA4$F$N%0%k!<%W$N0lMw$rJV$7$^$9!#$3$l(B @@ -21523,8 +21559,8 @@ ifi.test 0000002200 0000002000 y ifi.discussion 3324 3300 n @end example -$B3F9T$K$O%0%k!<%WL>$,$"$j!"$=$7$F$=$N%0%k!<%WFb$N:GBg$N5-;vHV9f!"(B -$B:G>.$N5-;vHV9f!"$=$7$F:G8e$K%U%i%0$G$9!#(B +$B3F9T$K$O%0%k!<%WL>$,$"$j!"$=$7$F$=$N%0%k!<%WFb$N:GBg$N5-;vHV9f!":G>.$N5-(B +$B;vHV9f!"$=$7$F:G8e$K%U%i%0$G$9!#(B @example active-file = *active-line @@ -21533,26 +21569,23 @@ name = flags = "n" / "y" / "m" / "x" / "j" / "=" name @end example -$B%U%i%0$O!"$=$N%0%k!<%W$,FI$_=P$7@lMQ(B (@samp{n}) $B$G$"$k$+!";J2q$N%0(B -$B%k!<%W$NJLL>(B (@samp{=other-group}) $B$G$"$k$+!">e5-$N$I$l$G$b$J$$(B -(@samp{y}) $B$+!"$H$$$&$3$H$r<($7$F$$$^$9!#(B - +$B%U%i%0$O!"$=$N%0%k!<%W$,FI$_=P$7@lMQ(B (@samp{n}) $B$G$"$k$+!";J2q$N%0%k!<%W$NJL(B +$BL>(B (@samp{=other-group}) $B$G$"$k$+!">e5-$N$I$l$G$b$J$$(B (@samp{y}) $B$+!"$H(B +$B$$$&$3$H$r<($7$F$$$^$9!#(B @item (nnchoke-request-post &optional SERVER) -$B$3$N4X?t$O!"8=:_$N%P%C%U%!$rEj9F$7$^$9!#$3$l$OEj9F$,@.8y$7$?$+$I(B -$B$&$+$rJV5Q$7$F$b9=$$$^$;$s$,!"I,?\$G$O$"$j$^$;$s!#Nc$($P!"Ej9F$,(B -$BHsF14|$K9T$o$l$k$N$G$"$l$P!"$3$N4X?t$,=*N;$7$?;~E@$G$OEj9F$OIaDL(B -$B40N;$7$F$$$^$;$s!#$=$N>l9g$3$N4X?t$O!"Ej9F$r40N;$5$;$k$3$H$,$G$-(B -$B$J$$$H$-!"$=$l$r$O$C$-$j$HMxMQl(B +$B9g$3$N4X?t$O!"Ej9F$r40N;$5$;$k$3$H$,$G$-$J$$$H$-!"$=$l$r$O$C$-$j$HMxMQpJs$rGK2uE*$KCV$-49$(!"$=$N(B -($BCV$-49$($i$l$?(B) $B%0%k!<%W>pJs$rJV$7$^$9!#(B +$B$9!#$3$N4X?t$O!"$=$NMW5a$KE,9g$5$;$k>pJs$rGK2uE*$KCV$-49$(!"$=(B +$B$N(B ($BCV$-49$($i$l$?(B) $B%0%k!<%W>pJs$rJV$7$^$9!#(B $B$3$N4X?t$+$iJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-request-type GROUP &optional ARTICLE) -$BMxMQJ}$H$b(B @code{nil} $B$G$"$k$+$b$7$l$^$;$s!#(B +$BMxMQJ}$H$b(B @code{nil} $B$G$"$k(B +$B$+$b$7$l$^$;$s!#(B $B$3$N4X?t$+$iJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B @@ -21614,19 +21645,19 @@ ACTION $B$O$3$N$h$&$JMM<0$N0u@_Dj$NMW5a$N%j%9%H$G$9(B: (RANGE ACTION MARK) @end example -RANGE $B$O0u$rIU$1$?$$5-;v$NHO0O$G$9!#(BACTION $B$O(B @code{set}, @code{add}, -@code{del} $B$N$I$l$+$G!"$=$l$>$lA4$F$NB8:_$9$k0u$r>C5n$7$F!";XDj$5$l$?$h(B -$B$&$K@_Dj!"0u$NDI2C(B ($B8@5Z$5$l$F$$$J$$0u$OJ]B8$7$^$9(B)$B!"0u$N>C5n(B ($B8@5Z$5$l(B -$B$F$$$J$$0u$OJ]B8$7$^$9(B) $B$G$9!#(BMARK $B$O0u$N%j%9%H$G$9!#$=$l$>$l$N0u$O%7%s(B -$B%\%k$G$9!#8=:_;H$o$l$F$$$k0u$O(B @code{read}, @code{tick}, @code{reply}, -@code{expire}, @code{killed}, @code{dormant}, @code{save}, -@code{download}, @code{unsend} $B$G$9$,!"$b$72DG=$J$i!"$"$J$?$N%P%C%/%(%s(B -$B%I$O$3$l$i$K@)8B$r$9$k$Y$-$G$O$"$j$^$;$s!#(B +RANGE $B$O0u$rIU$1$?$$5-;v$NHO0O$G$9!#(B +ACTION $B$O(B @code{set}, @code{add}, @code{del} $B$N$I$l$+$G!"$=$l$>$lA4$F$N(B +$BB8:_$9$k0u$r>C5n$7$F!";XDj$5$l$?$h$&$K@_Dj!"0u$NDI2C(B ($B8@5Z$5$l$F$$$J$$0u(B +$B$OJ]B8$7$^$9(B)$B!"0u$N>C5n(B ($B8@5Z$5$l$F$$$J$$0u$OJ]B8$7$^$9(B) $B$G$9!#(BMARK $B$O0u(B +$B$N%j%9%H$G$9!#$=$l$>$l$N0u$O%7%s%\%k$G$9!#8=:_;H$o$l$F$$$k0u(B +$B$O(B @code{read}, @code{tick}, @code{reply}, @code{expire}, @code{killed}, @code{dormant}, @code{save}, @code{download}, @code{unsend} $B$G(B +$B$9$,!"$b$72DG=$J$i!"$"$J$?$N%P%C%/%(%s%I$O$3$l$i$K@)8B$r$9$k$Y$-$G$O$"$j(B +$B$^$;$s!#(B $BL7=b$9$kF0:n$,;XDj$5$l$?$H$-!"%j%9%H$N:G8e$NF0:n$,8zNO$r;}$D$b$N$K$J$j$^(B -$B$9!#$9$J$o$A!"F0:n$K5-;v(B1$B$K(B @code{$B2D;k(B} $B0u$rDI2C$9$kMW5a$,$"$j!"%j%9%H$N(B -$B8e$GF1$85-;v$+$i0u$r>C5n$9$k$3$H$rMW5a$7$F$$$l$P!"0u$OC5n$5$l$k$Y(B -$B$-$G$9!#(B +$B$9!#$9$J$o$A!"F0:n$K5-;v(B 1 $B$K(B @code{$B2D;k(B} $B0u$rDI2C$9$kMW5a$,$"$j!"%j%9%H(B +$B$N8e$GF1$85-;v$+$i0u$r>C5n$9$k$3$H$rMW5a$7$F$$$l$P!"0u$OC5n$5$l$k(B +$B$Y$-$G$9!#(B $BF0:n%j%9%H$NNc$G$9(B: @@ -21643,35 +21674,31 @@ RANGE $B$O0u$rIU$1$?$$5-;v$NHO0O$G$9!#(BACTION $B$O(B @code{set}, @code{add} @item (nnchoke-request-update-mark GROUP ARTICLE MARK) -$B$b$7MxMQ$N%4%_$r(B -$BJV$7$F$O$$$1$^$;$s!#(B +$B$b$7MxMQ$N%4%_$rJV$7$F$O$$$1$^$;$s!#(B -$B;d$,CN$C$F$$$k$3$l$N$3$l$NMxMQK!$O!"(B@code{nnvirtual} $B$,9T$J$C$F(B -$B$$$k$3$H$@$1$G$9(B --- $B$b$79=@.%0%k!<%W$,<+F04|8B@Z$l>C5n2DG=$G$"(B -$B$l$P!"$3$N2>A[%0%k!<%W$G4{FI$N0u$rIU$1$k$H!"7k2L$H$7$F$=$N5-;v$K(B -$B4|8B@Z$l>C5n$N0u$,IU$1$i$l$^$9!#(B +$B;d$,CN$C$F$$$k$3$l$N$3$l$NMxMQK!$O!"(B@code{nnvirtual} $B$,9T$J$C$F$$$k$3$H(B +$B$@$1$G$9(B --- $B$b$79=@.%0%k!<%W$,<+F04|8B@Z$l>C5n2DG=$G$"$l$P!"$3$N2>A[%0(B +$B%k!<%W$G4{FI$N0u$rIU$1$k$H!"7k2L$H$7$F$=$N5-;v$K4|8B@Z$l>C5n$N0u$,IU$1$i(B +$B$l$^$9!#(B $B$3$N4X?t$+$iJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-request-scan &optional GROUP SERVER) -$B$3$N4X?t$O!"%P%C%/%(%s%I$,E~Ce5-;v$r3NG'$9$kMW5a$r9T$J$&$H$-$K$$(B -$B$D$G$b(B (gnus $B$+$=$l0J30$K$h$C$F(B) $B!"$"$l$d$3$l$d$H8F$S=P$5$l$k$3(B -$B$H$,$"$j$^$9!#%a!<%k%P%C%/%(%s%I$O$3$N4X?t$,5/F0$5$l$?$H$-!"E57?(B -$BE*$K$O%9%W!<%k%U%!%$%k$rFI$`$+(B POP $B%5!<%P!<$KLd$$9g$o$;$K$$$-$^(B -$B$9!#(B@var{group} $B$OFC$K5$$KN1$a$kI,MW$O$"$j$^$;$s(B --- $B$b$7%P%C%/(B -$B%(%s%I$,!"0l$D$@$1$N%0%k!<%W$rAv::$9$k$N$OBgJQ$9$.$k$HH=CG$7$?>l(B -$B9g$K$O!"A4%0%k!<%W$NA4Av::$r9T$J$C$F$b9=$$$^$;$s!#$G$9$,!"l9g$K$O!"A4%0%k!<%W$NA4Av::$r9T$J$C$F$b9=$$$^$;(B +$B$s!#$G$9$,!" description-buffer = *description-line @end example - @item (nnchoke-request-newgroups DATE &optional SERVER) $B$3$N4X?t$+$iJV$5$l$k7k2L$N%G!<%?$O!"(B@samp{date} $B0J9_$K:n@.$5$l$?(B $BA4$F$N%0%k!<%W$G$9!#(B@samp{date} $B$ODL>o$N?M4V$,FI$a$kF|IU$N7A<0$G(B $B$9!#%G!<%?$O(B active $B%P%C%U%!$N7A<0$G$J$1$l$P$J$j$^$;$s!#(B - @item (nnchoke-request-create-group GROUP &optional SERVER) $B$3$N4X?t$O!"(B@var{group} $B$H$$$&L>A0$N6u$N%0%k!<%W$r:n@.$7$^$9!#(B $BJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-request-expire-articles ARTICLES &optional GROUP SERVER FORCE) -$B$3$N4X?t$O!"(B@var{articles} $B$NHO0O$NA4$F$N5-;v$KBP$7$F4|8B@Z$l>C(B -$B5n=hM}$r9T$J$$$^$9!#(B (@var{articles} $B$O8=:_$O5-;vHV9f$NC1=c$J%j(B -$B%9%H$G$9!#(B) $B$3$N4X?t$G>C5n$5$l$kA0$N!"5-;v$,$I$l$@$18E$$5-;v$G$"(B -$B$k$+$N7hDj$O%P%C%/%(%s%I$KG$$5$l$F$$$^$9!#(B@var{force} $B$,(B -@code{nil} $B0J30$G$"$l$P!"$=$l$,$I$s$J$K?7$7$$$b$N$G$"$C$F$b!"A4(B -$B$F$N(B @var{articles} $B$,>C5n$5$l$^$9!#(B +$B$3$N4X?t$O!"(B@var{articles} $B$NHO0O$NA4$F$N5-;v$KBP$7$F4|8B@Z$l>C5n=hM}$r(B +$B9T$J$$$^$9!#(B(@var{articles} $B$O8=:_$O5-;vHV9f$NC1=c$J%j%9%H$G$9!#(B) $B$3$N(B +$B4X?t$G>C5n$5$l$kA0$N!"5-;v$,$I$l$@$18E$$5-;v$G$"$k$+$N7hDj$O%P%C%/%(%s%I(B +$B$KG$$5$l$F$$$^$9!#(B@var{force} $B$,(B @code{nil} $B0J30$G$"$l$P!"$=$l$,$I$s$J$K(B +$B?7$7$$$b$N$G$"$C$F$b!"A4$F$N(B@var{articles} $B$,>C5n$5$l$^$9!#(B -$B$3$N4X?t$O:o=|$7$J$+$C$?!"$"$k$$$O:o=|$9$k$3$H$,$G$-$J$+$C$?5-;v(B -$B$N%j%9%H$rJV$7$^$9!#(B +$B$3$N4X?t$O:o=|$7$J$+$C$?!"$"$k$$$O:o=|$9$k$3$H$,$G$-$J$+$C$?5-;v$N%j%9%H(B +$B$rJV$7$^$9!#(B $BJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-request-move-article ARTICLE GROUP SERVER ACCEPT-FORM &optional LAST) -$B$3$N4X?t$O(B @var{article} ($BHV9f(B) $B$r!"(B @var{group} $B$+$i(B -@var{accept-form} $B$r8F$S=P$7$F0\F0$7$^$9!#(B +$B$3$N4X?t$O(B @var{article} ($BHV9f(B) $B$r!"(B@var{group} $B$+(B +$B$i(B @var{accept-form} $B$r8F$S=P$7$F0\F0$7$^$9!#(B -$B$3$N4X?t$O!"LdBj$N5-;v$r0\F0$5$;$k$?$a$N=`Hw$H$7$F!"5-;v$KIU2C$5(B -$B$l$?%X%C%@!<9T$rA4$F:o=|$7!"0lHL$K5-;v$r!V$-$l$$$5$C$Q$j!W$K$7$^(B -$B$9!#$=$7$F(B ``$B$-$l$$$J(B'' $B5-;v$N$"$k%P%C%U%!!<$G(B @var{accept-form} -$B$r(B @code{eval} $B$7$^$9!#$3$l$OK\Ev$KJ#@=$r9T$J$$$^$9!#$b$7(B -@code{eval} $B$,(B @code{nil} $B0J30$NCM$rJV$7$?$i!"$=$N5-;v$O:o=|$5$l(B -$B$^$;$s!#(B +$B$3$N4X?t$O!"LdBj$N5-;v$r0\F0$5$;$k$?$a$N=`Hw$H$7$F!"5-;v$KIU2C$5$l$?%X%C(B +$B%@!<9T$rA4$F:o=|$7!"0lHL$K5-;v$r!V$-$l$$$5$C$Q$j!W$K$7$^$9!#$=$7$F(B ``$B$-(B +$B$l$$$J(B'' $B5-;v$N$"$k%P%C%U%!!<$G(B @var{accept-form} $B$r(B @code{eval} $B$7$^$9!#(B +$B$3$l$OK\Ev$KJ#@=$r9T$J$$$^$9!#$b$7(B @code{eval} $B$,(B @code{nil} $B0J30$NCM$r(B +$BJV$7$?$i!"$=$N5-;v$O:o=|$5$l$^$;$s!#(B -@var{last} $B$,(B @code{nil} $B$G$"$l$P!"$3$ND>8e$K$5$i$KMW5a$,H/9T$5(B -$B$l$k8+9~$_$,9b$$!"$H$$$&0UL#$K$J$j!"$3$l$K$h$C$F:GE,2=$,$$$/$i$+(B -$B$G$-$k$h$&$K$J$j$^$9!#(B +@var{last} $B$,(B @code{nil} $B$G$"$l$P!"$3$ND>8e$K$5$i$KMW5a$,H/9T$5$l$k8+9~(B +$B$_$,9b$$!"$H$$$&0UL#$K$J$j!"$3$l$K$h$C$F:GE,2=$,$$$/$i$+$G$-$k$h$&$K$J$j(B +$B$^$9!#(B -$B$3$N4X?t$O!"%0%k!<%WL>$,(B @code{car} $B$G!"$=$N5-;v$N0\F0@h$N5-;vHV(B -$B9f$,(B @code{cdr} $B$G$"$k(B cons $B%;%k$rJV$7$^$9!#(B +$B$3$N4X?t$O!"%0%k!<%WL>$,(B @code{car} $B$G!"$=$N5-;v$N0\F0@h$N5-;vHV9f$,(B +@code{cdr} $B$G$"$k(B cons $B%;%k$rJV$7$^$9!#(B $BJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-request-accept-article GROUP &optional SERVER LAST) -$B$3$N4X?t$O!"8=:_$N%P%C%U%!$r$A$K9T$o$l$k$H$$$&0UL#$G$9!#(B +$B$3$N4X?t$O!"8=:_$N%P%C%U%!$r$A$K(B +$B9T$o$l$k$H$$$&0UL#$G$9!#(B -$B$3$N4X?t$O%0%k!<%WL>$,(B @code{car} $B$G!"$=$N5-;v$N0\F0@h$N5-;vHV9f(B -$B$,(B @code{cdr} $B$G$"$k(B cons $B%;%k$rJV$7$^$9!#(B +$B$3$N4X?t$O%0%k!<%WL>$,(B @code{car} $B$G!"$=$N5-;v$N0\F0@h$N5-;vHV9f$,(B +@code{cdr} $B$G$"$k(B cons $B%;%k$rJV$7$^$9!#(B $BJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-request-replace-article ARTICLE GROUP BUFFER) -$B$3$N4X?t$O(B @var{article} ($BHV9f(B) $B$r(B @var{group} $B$+$i:o=|$7!"Be$o(B -$B$j$K(B @var{buffer} $B$r$=$3$KA^F~$7$^$9!#(B +$B$3$N4X?t$O(B @var{article} ($BHV9f(B) $B$r(B @var{group} $B$+$i:o=|$7!"Be$o$j$K(B +@var{buffer} $B$r$=$3$KA^F~$7$^$9!#(B $BJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-request-delete-group GROUP FORCE &optional SERVER) -$B$3$N4X?t$O(B @var{group} $B$r>C5n$7$^$9!#(B $B$b$7(B @var{force} $B$,$"$l$P!"(B -$B$=$N%0%k!<%WFb$NA4$F$N5-;v$rK\Ev$K>C5n$7!"$=$7$F$=$N%0%k!<%W<+?H(B -$B$r>C5n$7$^$9!#(B ($B$b$7(B ``$B%0%k!<%W<+?H(B'' $B$H$$$&$b$N$,$"$l$P!#(B) +$B$3$N4X?t$O(B @var{group} $B$r>C5n$7$^$9!#$b$7(B @var{force} $B$,$"$l$P!"$=$N%0(B +$B%k!<%WFb$NA4$F$N5-;v$rK\Ev$K>C5n$7!"$=$7$F$=$N%0%k!<%W<+?H$r>C5n$7$^$9!#(B +($B$b$7(B ``$B%0%k!<%W<+?H(B'' $B$H$$$&$b$N$,$"$l$P!#(B) $BJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B - @item (nnchoke-request-rename-group GROUP NEW-NAME &optional SERVER) $B$3$N4X?t$O(B @var{group} $B$+$i(B @var{new-name} $B$KL>A0$rJQ99$7$^$9!#(B @@ -21782,18 +21799,16 @@ description-buffer = *description-line @end table - @node Error Messaging @subsubsection $B%(%i!<%a%C%;!<%8I=<((B @findex nnheader-report @findex nnheader-get-report -$B%P%C%/%(%s%I$O%(%i!<>u67$rJs9p$9$k$N$K(B @code{nnheader-report} $B$r(B -$B;H$o$J$/$F$O$J$j$^$;$s(B --- $BMW5a$r$N%7%s%\(B -$B%k$G!";D$j$O!"J#?t$N0z?t$,$"$l$P(B @code{format} $B$X$N0z?t$H$7$F2r(B -$Bo$K(B -@code{nil} $B$rJV$5$J$/$F$O$J$j$^$;$s!#(B +$B%P%C%/%(%s%I$O%(%i!<>u67$rJs9p$9$k$N$K(B @code{nnheader-report} $B$r;H$o$J$/(B +$B$F$O$J$j$^$;$s(B --- $BMW5a$r$N%7%s%\%k$G!";D$j$O!"J#?t$N0z?t(B +$B$,$"$l$P(B @code{format} $B$X$N0z?t$H$7$F2ro$K(B@code{nil} $B$rJV$5$J$/$F$O$J$j$^$;$s!#(B @lisp (nnheader-report 'nnchoke "You did something totally bogus") @@ -21801,60 +21816,59 @@ description-buffer = *description-line (nnheader-report 'nnchoke "Could not request group %s" group) @end lisp -$B0lJ}(B gnus $B$O!"%5!<%P!<$+$i(B @code{nil} $B$rJV$5$l$?$H$-$K(B -@code{nnheader-get-report} $B$r8F$S=P$7!"$=$7$F$3$N4X?t$,LdBj$N%P%C(B -$B%/%(%s%I$KBP$7$F:G8e$KJs9p$5$l$?%a%C%;!<%8$rJV$7$^$9!#$3$N4X?t$O(B -$B0l$D$N0z?t(B --- $B%5!<%P!<$N%7%s%\%k$re$N5-;v$rJT=8$9$k(B -$B$3$H$,$G$-$^$9!#(B@code{nnmh} $B$O(B @code{nnml} $B$K$H$F$b;w$F$$$^$9$,!"(B +$BB?$/$N%P%C%/%(%s%I$O$H$F$bN`;w$7$F$$$^$9!#(B +@code{nnml} $B$O(B @code{nnspool} $B$K$H$F$b;w$F$$$^$9$,!"%5!<%P!<>e$N5-;v$rJT(B +$B=8$9$k$3$H$,$G$-$^$9!#(B@code{nnmh} $B$O(B @code{nnml} $B$K$H$F$b;w$F$$$^$9$,!"(B $B$3$l$O%"%/%F%#%V%U%!%$%k$r;H$o$:!"35MW%G!<%?%Y!<%9$bJ];}$7$^$;$s!#(B -@code{nndir} $B$O(B @code{nnml} $B$K$H$F$b;w$F$$$^$9$,!"$3$l$K$O(B ``$B%0(B -$B%k!<%W(B'' $B$N35G0$O$J$/!"5-;v$N=$@5$O$G$-$^$;$s!#(B +@code{nndir} $B$O(B @code{nnml} $B$K$H$F$b;w$F$$$^$9$,!"$3$l$K$O(B ``$B%0%k!<%W(B'' +$B$N35G0$O$J$/!"5-;v$N=$@5$O$G$-$^$;$s!#(B -$B?7$7$$%P%C%/%(%s%I$r=q$/$H$-$KB>$N%P%C%/%(%s%I$+$i4X?t$r(B ``$B7Q>5(B'' -$B$9$k$3$H$,2DG=$G$"$C$F$[$7$$!"$H;W$&$N$OM}$KE,$C$F$$$^$9!#$=$7$F(B -$B$^$5$K!"$"$J$?$,$=$&$7$?$1$l$P!"$=$l$,$G$-$k$N$G$9!#(B($B$"$J$?$,$=(B -$B$&$7$?$/$J$1$l$P$7$J$/$F$bNI$$$G$9$h!"$b$A$m$s!#(B) +$B?7$7$$%P%C%/%(%s%I$r=q$/$H$-$KB>$N%P%C%/%(%s%I$+$i4X?t$r(B ``$B7Q>5(B'' $B$9$k$3(B +$B$H$,2DG=$G$"$C$F$[$7$$!"$H;W$&$N$OM}$KE,$C$F$$$^$9!#$=$7$F$^$5$K!"$"$J$?(B +$B$,$=$&$7$?$1$l$P!"$=$l$,$G$-$k$N$G$9!#(B($B$"$J$?$,$=$&$7$?$/$J$1$l$P$7$J$/(B +$B$F$bNI$$$G$9$h!"$b$A$m$s!#(B) -$BA4$F$N%P%C%/%(%s%I$O8x3+JQ?t$H8x3+4X?t$r!"(B @code{nnoo} $B$H8F$P$l(B -$B$k%Q%C%1!<%8$r;H$C$F@k8@$7$^$9!#(B +$BA4$F$N%P%C%/%(%s%I$O8x3+JQ?t$H8x3+4X?t$r!"(B@code{nnoo} $B$H8F$P$l$k%Q%C%1!<(B +$B%8$r;H$C$F@k8@$7$^$9!#(B -$BB>$N%P%C%/%(%s%I$+$i4X?t$r7Q>5$9$k$K$O(B ($B$=$7$F8=:_$N%P%C%/%(%s%I(B -$B$+$iB>$N%P%C%/%(%s%I$K4X?t$r7Q>5$G$-$k$h$&$K$9$k$K$O(B) $B!"0J2<$N%^(B -$B%/%m$r;HMQ$7$J$1$l$P$J$j$^$;$s!#(B +$BB>$N%P%C%/%(%s%I$+$i4X?t$r7Q>5$9$k$K$O(B ($B$=$7$F8=:_$N%P%C%/%(%s%I$+$iB>$N(B +$B%P%C%/%(%s%I$K4X?t$r7Q>5$G$-$k$h$&$K$9$k$K$O(B)$B!"0J2<$N%^%/%m$r;HMQ$7$J$1(B +$B$l$P$J$j$^$;$s!#(B @table @code @item nnoo-declare -$B$3$N%^%/%m$O!":G=i$N0z?t$r!"$=$N8e$KB3$/0z?t$N;R6!$G$"$k$3$H$r@k(B -$B8@$7$^$9!#Nc$($P!"(B +$B$3$N%^%/%m$O!":G=i$N0z?t$r!"$=$N8e$KB3$/0z?t$N;R6!$G$"$k$3$H$r@k8@$7$^$9!#(B +$BNc$($P!"(B @lisp (nnoo-declare nndir nnml nnmh) @end lisp -$B$3$l$G(B @code{nndir}$B$O!"(B@code{nnml} $B$H(B @code{nnmh} $B$NN>J}$+$i4X?t(B -$B$r7Q>5$7$h$&$H$7$F$$$k$3$H$r@k8@$7$^$9!#(B +$B$3$l$G(B @code{nndir}$B$O!"(B@code{nnml} $B$H(B @code{nnmh} $B$NN>J}$+$i4X?t$r7Q>5$7(B +$B$h$&$H$7$F$$$k$3$H$r@k8@$7$^$9!#(B @item defvoo -$B$3$N%^%/%m$O(B @code{defvar} $B$HF15A$G$9$,!"$=$NJQ?t$r8x3+%5!<%P!<(B -$BJQ?t$H$7$FEPO?$7$^$9!#$[$H$s$I$N>uBV;X8~7?$NJQ?t$O(B @code{defvar} -$B$G$O$J$/(B @code{defvoo} $B$K$h$C$F@k8@$9$k$Y$-$G$9!#(B +$B$3$N%^%/%m$O(B @code{defvar} $B$HF15A$G$9$,!"$=$NJQ?t$r8x3+%5!<%P!uBV;X8~7?$NJQ?t$O(B @code{defvar} $B$G$O$J(B +$B$/(B @code{defvoo} $B$K$h$C$F@k8@$9$k$Y$-$G$9!#(B -$BDL>o$N(B @code{defvar} $B0z?t$K2C$($F!"$3$N%^%/%m$O?F%P%C%/%(%s%I$N(B -$BJQ?t$N%j%9%H$ro$N(B @code{defvar} $B0z?t$K2C$($F!"$3$N%^%/%m$O?F%P%C%/%(%s%I$NJQ?t$N%j(B +$B%9%H$ro$N(B @code{defun} $B=hM}$K2C$($F!"$3$N%^%/%m$O$=$N4X?t$r8x(B -$B3+$7$F$$$k$b$N$H$7$FEPO?$7!"B>$N%P%C%/%(%s%I$,$=$l$r7Q>5$G$-$k$h(B -$B$&$K$7$^$9!#(B +$B$3$N%^%/%m$O$^$5$K(B @code{defun} $B$N$h$&$J$b$N$G!"F10l$N0z?t$ro$N(B @code{defun} $B=hM}$K2C$($F!"$3$N%^%/%m$O$=$N4X?t$r8x3+$7$F$$$k$b$N$H(B +$B$7$FEPO?$7!"B>$N%P%C%/%(%s%I$,$=$l$r7Q>5$G$-$k$h$&$K$7$^$9!#(B @item nnoo-map-functions -$B$3$N%^%/%m$O8=:_$N%P%C%/%(%s%I$N4X?t$+$i?F%P%C%/%(%s%I$N4X?t$X$N(B -$BCV$-49$($r9T$J$($k$h$&$K$7$^$9!#(B +$B$3$N%^%/%m$O8=:_$N%P%C%/%(%s%I$N4X?t$+$i?F%P%C%/%(%s%I$N4X?t$X$NCV$-49$((B +$B$r9T$J$($k$h$&$K$7$^$9!#(B @example (nnoo-map-functions nndir @@ -21890,15 +21903,14 @@ description-buffer = *description-line (nnmh-request-article 0 nndir-current-group 0 0)) @end example -$B$3$l$O(B @code{nndir-retrieve-headers} $B$,8F$S=P$5$l$?$H$-!"0lHVL\!"(B -$B;0HVL\!";MHVL\$N0z?t$,(B @code{nnml-retrieve-headers} $B$KEO$5$l!"0l(B -$BJ}!"FsHVL\$N0z?t$O(B @code{nndir-current-group} $B$NCM$H$7$F@_Dj$5$l(B -$B$k!"$H$$$&0UL#$G$9!#(B +$B$3$l$O(B @code{nndir-retrieve-headers} $B$,8F$S=P$5$l$?$H$-!"0lHVL\!";0HVL\!"(B +$B;MHVL\$N0z?t$,(B @code{nnml-retrieve-headers} $B$KEO$5$l!"0lJ}!"FsHVL\$N0z?t(B +$B$O(B @code{nndir-current-group} $B$NCM$H$7$F@_Dj$5$l$k!"$H$$$&0UL#$G$9!#(B @item nnoo-import -$B$3$N%^%/%m$OB>$N%P%C%/%(%s%I$+$i4X?t$r$N%P%C%/%(%s%I$+$i4X?t$rA0$HE,Ev$J?t$NG=NO(B @dfn{abilities} $B$G$9!#(B +@code{gnus-declare-backend} $B$OFs$D$N0z?t$r(B +$BA0$HE,Ev$J?t$NG=NO(B @dfn{abilities} $B$G$9!#(B $B$3$l$,Nc$G$9!#(B @@ -22002,37 +22012,33 @@ description-buffer = *description-line @table @code @item mail -$B$3$l$O%a!<%kIw%P%C%/%(%s%I$G$9(B --- $B%U%)%m!<%"%C%W$O(B ($B$?$$$F$$$O(B) -$B%a!<%k$GAw$i$l$^$9!#(B +$B$3$l$O%a!<%kIw%P%C%/%(%s%I$G$9(B --- $B%U%)%m!<%"%C%W$O(B ($B$?$$$F$$$O(B) $B%a!<%k(B +$B$GAw$i$l$^$9!#(B @item post -$B$3$l$O%K%e!<%9Iw%P%C%/%(%s%I$G$9(B --- $B%U%)%m!<%"%C%W$O(B ($B$?$$$F$$(B -$B$O(B) $B%K%e!<%9$GAw$i$l$^$9!#(B +$B$3$l$O%K%e!<%9Iw%P%C%/%(%s%I$G$9(B --- $B%U%)%m!<%"%C%W$O(B ($B$?$$$F$$$O(B) $B%K%e!<(B +$B%9$GAw$i$l$^$9!#(B @item post-mail $B$3$N%P%C%/%(%s%I$O%a!<%k$H%K%e!<%9$NN>J}$r%5%]!<%H$7$^$9!#(B @item none -$B$3$l$O%K%e!<%9$G$b%a!<%k$G$b$J$$%P%C%/%(%s%I$G$9(B --- $BA4$/0c$C$?(B -$B2?$+$G$9!#(B +$B$3$l$O%K%e!<%9$G$b%a!<%k$G$b$J$$%P%C%/%(%s%I$G$9(B --- $BA4$/0c$C$?2?$+$G$9!#(B @item respool -$B$3$l$O:F%9%W!<%k$r%5%]!<%H$7$^$9(B --- $B$H$$$&$h$j$O!"$=$N85$N5-;v(B -$B$H%0%k!<%W$r=$@5$9$k$3$H$,$G$-$^$9!#(B +$B$3$l$O:F%9%W!<%k$r%5%]!<%H$7$^$9(B --- $B$H$$$&$h$j$O!"$=$N85$N5-;v$H%0%k!<(B +$B%W$r=$@5$9$k$3$H$,$G$-$^$9!#(B @item address -$B2>A[%5!<%P!$NCf$K%5!<%P!<$NL>A0$,4^$^$k$H$$$&$3$H$G$9!#$3$l$O(B -$B$[$H$s$IA4It$N%P%C%/%(%s%I$GI,MW$K$J$j$^$9!#(B +$B2>A[%5!<%P!$NCf$K%5!<%P!<$NL>A0$,4^$^$k$H$$$&$3$H$G$9!#$3$l$O$[$H$s$I(B +$BA4It$N%P%C%/%(%s%I$GI,MW$K$J$j$^$9!#(B @item prompt-address -$B%0%k!<%W%P%C%U%!$G(B @kbd{B} $B$J$I$G$3$NL?Na$r$N%P%C%/%(%s%I$KBP$7$F0l@~$r2h$7$F$$$k(B -$BE@$O!"%a!<%k%P%C%/%(%s%I$O(B @file{nnmail.el} $B$NCf$N6&DL4X?t$K6/$/(B -$B0MB8$7$F$$$k$H$$$&E@$G$9!#Nc$($P!"(B@code{nnml-request-scan} $B$NDj(B -$B5A$O$3$N$h$&$K$J$j$^$9!#(B +$B%a!<%k%P%C%/%(%s%I$,$=$NB>$N%P%C%/%(%s%I$KBP$7$F0l@~$r2h$7$F$$$kE@$O!"%a!<(B +$B%k%P%C%/%(%s%I$O(B @file{nnmail.el} $B$NCf$N6&DL4X?t$K6/$/0MB8$7$F$$$k$H$$$&(B +$BE@$G$9!#Nc$($P!"(B@code{nnml-request-scan} $B$NDj5A$O$3$N$h$&$K$J$j$^$9!#(B @lisp (deffoo nnml-request-scan (&optional group server) @@ -22040,16 +22046,15 @@ description-buffer = *description-line (nnmail-get-new-mail 'nnml 'nnml-save-nov nnml-directory group)) @end lisp -$BC1$K(B @code{nnmail-get-new-mail} $B$K$$$/$D$+0z?t$rM?$($F8F$S=P$9$@(B -$B$1$G!"(B@code{nnmail} $B$,%a!<%k$N0\F0$dJ,N%$rA4$F$NLLE]$r8+$F$/$l$^(B -$B$9!#(B +$BC1$K(B @code{nnmail-get-new-mail} $B$K$$$/$D$+0z?t$rM?$($F8F$S=P$9$@$1$G!"(B +@code{nnmail} $B$,%a!<%k$N0\F0$dJ,N%$rA4$F$NLLE]$r8+$F$/$l$^$9!#(B $B$3$N4X?t$O;M$D$N0z?t$rl=j$G$9!#(B @item group -$B$3$N>JN,2DG=$J0z?t$O!"J,N%$,0l$D$N%0%k!<%W$KBP$7$F$N$_$G$9!#(B +$B$3$N>JN,2DG=$J0z?t$O!"J,N%$,0l$D$N%0%k!<%W$KBP$7$F$N$_$G$9!#(B @end table -@code{nnmail-get-new-mail} $B$O3F5-;v$rJ]B8$9$k$?$a$K(B -@var{backend}@code{-save-mail} $B$r8F$S=P$7$^$9!#(B -@var{backend}@code{-active-number} $B$O$3$N5-;v$K3d$jEv$F$i$l$?5-(B -$B;vHV9f$rD4$Y$k$?$a$K8F$S=P$5$l$^$9!#(B +@code{nnmail-get-new-mail} $B$O3F5-;v$rJ]B8$9$k$?$a(B +$B$K(B @var{backend}@code{-save-mail} $B$r8F$S=P$7$^$9!#(B +@var{backend}@code{-active-number} $B$O$3$N5-;v$K3d$jEv$F$i$l$?5-;vHV9f$r(B +$BD4$Y$k$?$a$K8F$S=P$5$l$^$9!#(B $B$3$N4X?t$O / ] $B%$%k$NMM<0$O%W%m%0%i%^!<$KG$$5$l$F$$$k$H$$$&;v$G$9(B---$BA4$F$r0l$D$ND9! / ] $B$rN/$a$F$*$/MM<0$r;H$$$^$9!#$"$k?M$O!":no$KIiC4$N$+$1$i$l$9$.$?8l$G$9!#(B ``$B%X%C%@!<(B'' $B$O(B -RFC1036 $B$G$O5-;v$NF,$N9T$N;v(B ($BNc$($P!"(B@code{From}) $B$rOC$9$N$KMQ$$$i$l$F(B -$B$$$^$9!#$=$l$OB?$/$N?M$+$i(B ``$B%X%C%I(B''---``$B%X%C%@!<$HK\BN(B'' $B$NF15A8l$H$7(B -$B$F;H$o$l$F$$$^$9!#(B ($B$3$l$O!";d$N0U8+$G$OHr$1$i$l$k$Y$-$G$9!#(B) $B$=$7$F!"(B -gnus $B$OFbIt$G$O(B ``$B%X%C%@!<(B'' $B$H8F$VMM<0$r;H$C$F$*$j!";d$O$3$3$G$=$l$K$D(B -$B$$$F@bL@$7$^$9!#$3$l$O(B9$B$D$NMWAG$+$i$J$k%Y%/%H%k$G!"4pK\E*$K!"$=$l$>$l$N(B -$B%X%C%@!<(B ($B$"DK(B) $B$,0l$D$N6u$->l=j$r@j$a$F$$$^$9!#(B - -$B$3$l$i$N6u$->l=j$O!"=gHV$K(B: @code{number}$B!"(B@code{subject}$B!"(B@code{from}$B!"(B -@code{date}$B!"(B@code{id}$B!"(B@code{chars}$B!"(B@code{lines}$B!"(B@code{xref}$B!"(B -@code{extra} $B$G$9!#$3$l$i$N6u$->l=j$K?($C$F@_Dj$9$k%^%/%m$,$"$j$^$9(B---$B$=(B -$B$l$i$OA4$F!"$=$l$>$l(B @code{mail-header-} $B$H(B @code{mail-header-set-} $B$$$&(B -$BM=A[$5$l$kL>A0$r;}$C$F$$$^$9!#(B +@dfn{$B%X%C%@!<(B} $B$OHs>o$KIiC4$N$+$1$i$l$9$.$?8l$G$9!#(B +``$B%X%C%@!<(B'' $B$O(B RFC1036 $B$G$O5-;v$NF,$N9T$N;v(B ($BNc$($P!"(B@code{From}) $B$rOC(B +$B$9$N$KMQ$$$i$l$F$$$^$9!#$=$l$OB?$/$N?M$+(B +$B$i(B ``$B%X%C%I(B''---``$B%X%C%@!<$HK\BN(B'' $B$NF15A8l$H$7$F;H$o$l$F$$$^$9!#(B($B$3$l(B +$B$O!";d$N0U8+$G$OHr$1$i$l$k$Y$-$G$9!#(B) $B$=$7$F!"(Bgnus $B$OFbIt$G(B +$B$O(B ``$B%X%C%@!<(B'' $B$H8F$VMM<0$r;H$C$F$*$j!";d$O$3$3$G$=$l$K$D$$$F@bL@$7$^$9!#(B +$B$3$l$O6e$D$NMWAG$+$i$J$k%Y%/%H%k$G!"4pK\E*$K!"$=$l$>$l$N%X%C(B +$B%@!<(B ($B$"DK(B) $B$,0l$D$N6u$->l=j$r@j$a$F$$$^$9!#(B + +$B$3$l$i$N6u$->l=j$O!"=gHV(B +$B$K(B: @code{number}, @code{subject}, @code{from}, @code{date}, @code{id}, @code{chars}, @code{lines}, @code{xref}, @code{extra} $B$G(B +$B$9!#$3$l$i$N6u$->l=j$K?($C$F@_Dj$9$k%^%/%m$,$"$j$^$9(B---$B$=$l$i$OA4$F!"$=(B +$B$l$>$l(B @code{mail-header-} $B$H(B @code{mail-header-set-} $B$$$&M=A[$5$l$kL>A0(B +$B$r;}$C$F$$$^$9!#(B @code{extra} $B$N>l=j$O%X%C%@!<(B/$BCM$NBP$NO"A[%j%9%H$G$"$k0J30$O$3$l$i$NA4$F(B $B$N>l=j$OJ8;zNs$G$9(B (@pxref{To From Newsgroups})$B!#(B - @node Ranges @subsection $BHO0O(B @sc{gnus} $B$O;d$K$OHs>o$KLr$KN)$D$H;W$o$l$k35G0$rF3F~$7$^$7$?$N$G!";d$O$=(B $B$l$r$?$/$5$s;H$$!"$+$J$jG0F~$j$K:n$j>e$2$F$-$^$7$?!#(B -$BZ$5$l$k(B $B$b$N(B -(object) (@emph{$BMpK=$J(B} $BNc$r5s$2$k$H!"5-;v$,$=$&$G$9(B) $B$r(B ``$B4^$^$l$F$$$k(B'' -$B$H$7$F8+$J$7$?$$$H$-$O!"IaDL$NO"B3E*9T0Y$O$"$^$jLr$KN)$A$^$;$s!#(B ($BD9$5(B -200,000 $B$NO"B3J*$O>/$7B)$,D9$9$.$^$9!#(B) +$BZ$5$l$k(B $B$b(B +$B$N(B (object) (@emph{$BMpK=$J(B} $BNc$r5s$2$k$H!"5-;v$,$=$&$G(B +$B$9(B) $B$r(B ``$B4^$^$l$F$$$k(B'' $B$H$7$F8+$J$7$?$$$H$-$O!"IaDL$NO"B3E*9T0Y$O$"$^$j(B +$BLr$KN)$A$^$;$s!#(B($BD9$5(B 200,000 $B$NO"B3J*$O>/$7B)$,D9$9$.$^$9!#(B) $B$3$l$N2r7h:v$O/$7/$7e$NMW5a$O2<9_$7$F$$$J$$(B -$B$H$$$&;v$O3P$($F$*$/I,MW$,$"$j$^$9!#(B ($BG$0U$N2s?t$NF1$8?t;z$N7+$jJV$7$O5v(B +$B$H$$$&;v$O3P$($F$*$/I,MW$,$"$j$^$9!#(B($BG$0U$N2s?t$NF1$8?t;z$N7+$jJV$7$O5v(B $B$5$l$F$$$^$9$,!"HO0O$N07$$$+$i$O>C$(5n$k798~$,$"$j$^$9!#(B) @example @@ -22253,20 +22255,19 @@ contents = "" / simple-range *[ " " contents ] / Gnus $B$O8=:_$N$H$3$m4{FI5-;v$H5-;v$N0u$N>pJs$rIU$1$F$*$/$?$a$KHO0O$r;H$C(B $B$F$$$^$9!#;d$O(B $B$5$J$$$G@$$NCf$r40A4$KHO0O$K4p$E$$$?$b$N$K$9$k(B $B$?$a$K$b$&>/$79M$($kI,MW$,$"$k$+$i$G$9!#(B) - @node Group Info @subsection $B%0%k!<%W>pJs(B Gnus $B$O%0%k!<%W$NA4$F$N1JB3>pJs$r(B @dfn{group info} $B%j%9%H$KJ]B8$7$^$9!#(B -$B$3$N%j%9%H$ND9$5$O(B3$B$+$i(B6 ($B$b$7$/$O$b$C$H(B) $B$NMWAG$GE0DlE*$K%0%k!<%W$r5-=R(B -$B$7$^$9!#(B +$B$3$N%j%9%H$ND9$5$O(B 3 $B$+$i(B 6 ($B$b$7$/$O$b$C$H(B) $B$NMWAG$GE0DlE*$K%0%k!<%W$r(B +$B5-=R$7$^$9!#(B -$B$3$3$K$"$k$N$O%0%k!<%W>pJs(B (group info) $B$N(B2$B$D$NNc$G$9!#(B1$B$D$OHs>o$KC1=c$J(B -$B%0%k!<%W$G!"(B2$B$D$a$O$b$C$HJ#;($J$b$N$G$9(B: +$B$3$3$K$"$k$N$O%0%k!<%W>pJs(B (group info) $B$NFs$D$NNc$G$9!#0l$D$OHs>o$KC1=c(B +$B$J%0%k!<%W$G!"Fs$D$a$O$b$C$HJ#;($J$b$N$G$9(B: @example ("no.group" 5 ((1 . 54324))) @@ -22278,16 +22279,16 @@ Gnus $B$O%0%k!<%W$NA4$F$N1JB3>pJs$r(B @dfn{group info} $B%j%9%H$KJ]B8$7$^$9!# @end example $B:G=i$NMWAG$O(B @dfn{$B%0%k!<%WL>(B} $B$G$9(B---$B$I$N$h$&$K$7$m!"(Bgnus $B$,$=$l$K$h$C$F(B -$B%0%k!<%W$rCN$C$F$$$k$b$N$G$9!#(B2$BHVL\$NMWAG$O(B @dfn{$B9XFIEY(B} $B$G!"IaDL$O>.$5(B +$B%0%k!<%W$rCN$C$F$$$k$b$N$G$9!#FsHVL\$NMWAG$O(B @dfn{$B9XFIEY(B} $B$G!"IaDL$O>.$5(B $B$J@0?t$G$9!#(B($B$=$l$O(B @dfn{$B3,5i(B} $B$K$J$k;v$b$G$-$^$9!#$=$l$O!"%3%s%9%;%k$G!"(B -@code{car} $B$,%l%Y%k$G!"(B@code{cdr} $B$,%9%3%"$G$9!#(B) 3$BHVL\$NMWAG$O4{FI5-;v(B -$B$NHO0O$N%j%9%H$G$9!#(B4$BHVL\$NMWAG$O$$$m$$$m$Je$N%5!<%P!<$G$9(B)$B!#(B6$BHVL\$NMWAG$O(B @dfn{$B%0%k!<%W%Q%i%a!<%?(B} $B$N%j%9%H$G!"(B -$B$3$NItJ,$O$=$N$?$a$K$"$j$^$9!#(B - -$B:G8e$N(B3$B$D$NMWAG$O$I$l$G$b!"I,MW$,L5$1$l$PB8:_$7$J$$;v$b$"$j$^$9!#o$KBgItJ,$O:G=i$N(B3$B$D$NMWAG$@$1$r;}$A!"$=$l$O$?$/$5$s$N%3%s(B +@code{car} $B$,%l%Y%k$G!"(B@code{cdr} $B$,%9%3%"$G$9!#(B) $B;0HVL\$NMWAG$O4{FI5-;v(B +$B$NHO0O$N%j%9%H$G$9!#;MHVL\$NMWAG$O$$$m$$$m$Je$N%5!<%P!<$G$9(B)$B!#O;HVL\$NMWAG$O(B @dfn{$B%0%k!<%W%Q%i%a!<%?(B} $B$N%j%9%H(B +$B$G!"$3$NItJ,$O$=$N$?$a$K$"$j$^$9!#(B + +$B:G8e$N;0$D$NMWAG$O$I$l$G$b!"I,MW$,L5$1$l$PB8:_$7$J$$;v$b$"$j$^$9!#o$KBgItJ,$O:G=i$N;0$D$NMWAG$@$1$r;}$A!"$=$l$O$?$/$5$s$N%3%s(B $B%9%;%k$r@aLs$9$k;v$,$G$-$^$9!#(B $B$3$l$O%0%k!<%W>pJsMM<0$N(B BNF $BDj5A$G$9(B: @@ -22308,9 +22309,9 @@ method = "(" *elisp-forms ")" parameters = "(" *elisp-forms ")" @end example -$B} $B$,(B -@samp{range} $B$N>e$K9;@5$5$l$F$$$k$b$N$G$9$,!"5?;w(B BNF $B$G$=$l$r8=$9$N$OIT(B -$BL{2w$J$b$N$G$9!#(B +$B} $B$,(B @samp{range} $B$N>e$K9=@.$5$l$F$$$k$b$N(B +$B$G$9$,!"5?;w(B BNF $B$G$=$l$r8=$9$N$OITL{2w$J$b$N$G$9!#(B $B$b$7(B gnus $B>pJs$r;}$C$F$$$F!"MWAG$rD4$Y$?$$$N$H$-$O!"(Bgnus $B$O$=$l$i$NMWAG(B $B$rpJs$N%j%9%H$G$9!#@_Dj4X?t$O(B2$B$D$N(B -$B0z?t$rpJs%j%9%H$H?7$7$$CM$G$9!#(B +$BA4$F$NpJs$N%j%9%H$G$9!#@_Dj4X?t$OFs$D(B +$B$N0z?t$rpJs%j%9%H$H?7$7$$CM$G$9!#(B -$B%0%k!<%W>pJs$N:G8e$N(B3$B$D$NMWAG$O6/@)E*$J$b$N$G$O$"$j$^$;$s$N$G!"MWAG$r@_(B +$B%0%k!<%W>pJs$N:G8e$N;0$D$NMWAG$O6/@)E*$J$b$N$G$O$"$j$^$;$s$N$G!"MWAG$r@_(B $BDj$9$kA0$K%0%k!<%W>pJs$r3HD%$9$kI,MW$,$"$k$+$bCN$l$^$;$s!#$b$7$3$l$,I,MW(B -$B$J>l9g$O!"$3$l$,<+F0E*$K5/$3$k$?$a$K(B @code{nil} $B$G$J$$(B3$BHVL\$N0z?t$r(B3$B$D$N(B -$B:G=*@_Dj4X?t$KM?$($k$@$1$G$9!#(B - +$B$J>l9g$O!"$3$l$,<+F0E*$K5/$3$k$?$a$K(B @code{nil} $B$G$J$$;0HVL\$N0z?t$r;0$D(B +$B$N:G=*@_Dj4X?t$KM?$($k$@$1$G$9!#(B @node Extended Interactive @subsection $B3HD%BPOC(B @@ -22405,8 +22405,8 @@ Gnus $B$O(B Emacs $B$NI8=`$N(B @code{interactive} $B;XDj$r%7%s%\%k@\F,<-$r4 @item Y @vindex gnus-current-prefix-symbols -$B8=:_$N@\F,0z?t%7%s%\%k$N%j%9%H$G$9(B---$BJQ?t(B -@code{gnus-current-prefix-symbol} $B$G$9!#(B +$B8=:_$N@\F,0z?t%7%s%\%k$N%j%9%H$G$9(B---$BJQ(B +$B?t(B @code{gnus-current-prefix-symbol} $B$G$9!#(B @item A $B8=:_$N5-;vHV9f$G$9(B---$B4X?t(B @code{gnus-summary-article-number} $B$G$9!#(B @@ -22418,13 +22418,12 @@ Gnus $B$O(B Emacs $B$NI8=`$N(B @code{interactive} $B;XDj$r%7%s%\%k@\F,<-$r4 $B8=:_$N%0%k!<%WL>$G$9(B---$B4X?t(B @code{gnus-group-group-name} $B$G$9!#(B @end table - @node Emacs/XEmacs Code @subsection Emacs/XEmacs $B%3!<%I(B @cindex XEmacs @cindex Emacsen -Gnus $B$O(B Emacs$B!"(BXEmacs $B$H(B Mule $B$GF0:n$7$^$9$N$G!"$=$N$&$A$N0l$D$ro$KLr$KN)$A$^$9!#(B -$B;d$O7QB3E*$K(B Emacs $B$N4X?t$N3&LL(B (interface) $B$r;H$C$F$-$^$7$?$,!"4X?t$K$O(B -gnus $B$NJLL>4X?t(B (alias) $B$r;H$C$F$-$^$7$?!#Nc$r=P$7$^$7$g$&(B: Emacs $B$O4X?t(B -@code{run-at-time} $B$rDj5A$7$F$$$^$9$,!"(BXEmacs $B$O4X?t(B @code{start-itimer} -$B$rDj5A$7$F$$$^$9!#$=$3$G;d$O(B @code{gnus-run-at-time} $B$H8F$P$l$k4X?t$rDj(B -$B5A$7!"$=$l$O(B Emacs $B$N(B @code{run-at-time} $B$HF1$80z?t$r4X?t(B (alias) $B$K(B -$B$J$C$F$$$^$9!#$7$+$7!"(BXEmacs $B$G4X?t(B -(alias) $B$H$J$C$F$$$^$9(B: +$B;d$O7QB3E*$K(B Emacs $B$N4X?t$N3&LL(B (interface) $B$r;H$C$F$-$^$7$?$,!"4X?t$K(B +$B$O(B gnus $B$NJLL>4X?t(B (alias) $B$r;H$C$F$-$^$7$?!#Nc$r=P$7$^$7$g$&(B: Emacs $B$O(B +$B4X?t(B @code{run-at-time} $B$rDj5A$7$F$$$^$9$,!"(BXEmacs $B$O4X(B +$B?t(B @code{start-itimer} $B$rDj5A$7$F$$$^$9!#$=$3$G;d(B +$B$O(B @code{gnus-run-at-time} $B$H8F$P$l$k4X?t$rDj5A$7!"$=$l(B +$B$O(B Emacs $B$N(B @code{run-at-time} $B$HF1$80z?t$r4X?t(B (alias) $B$K$J$C$F$$$^(B +$B$9!#$7$+$7!"(BXEmacs $B$G4X?t(B (alias) $B$H(B +$B$J$C$F$$$^$9(B: @lisp (defun gnus-xmas-run-at-time (time repeat function &rest args) @@ -22457,23 +22457,22 @@ Emacs $B$G4X?t(B (alias) $B$K $BE*$K!"$h$j$-$l$$$K$J$j$^$9!#(B XEmacs $B$N4X?t3&LL$NJ}$,L@$i$+$K$-$l$$$J>l9g$O!";d$OBe$o$j$K$=$l$r;H$$$^(B -$B$9!#Nc$($P!"(B@code{gnus-region-active-p} $B$O(B XEmacs $B$G$O(B -@code{region-active-p} $B$NJLL>$G$"$k$N$KBP$7$F!"(BEmacs $B$G$O4X?t$G$9!#(B +$B$9!#Nc$($P!"(B@code{gnus-region-active-p} $B$O(B XEmacs $B$G(B +$B$O(B @code{region-active-p} $B$NJLL>$G$"$k$N$KBP$7$F!"(BEmacs $B$G$O4X?t$G$9!#(B $B$b$A$m$s!";d$O(B XEmacs $B$r;d$N4pK\%W%i%C%H%U%)!<%`$KA*$s$G!"4X?t$N3d$jEv$F(B -$B$r5U$K$9$k;v$b$G$-$^$7$?!#$G$b!";d$O$=$&$7$^$;$s$G$7$?!#(BXEmacs $B$G(B gnus -$B$r/$7$G$7$g$&!#(B - +$B$r5U$K$9$k;v$b$G$-$^$7$?!#$G$b!";d$O$=$&$7$^$;$s$G$7$?!#(B +XEmacs $B$G(B gnus $B$r/$7$G(B +$B$7$g$&!#(B @node Various File Formats @subsection $B$$$m$$$m$J%U%!%$%kMM<0(B @menu -* Active File Format:: $B;HMQ2DG=$J5-;v%0%k!<%W$N>pJs!#(B -* Newsgroups File Format:: $B%0%k!<%W$N5-=R!#(B +* Active File Format:: $B;HMQ2DG=$J5-;v%0%k!<%W$N>pJs(B +* Newsgroups File Format:: $B%0%k!<%W$N5-=R(B @end menu - @node Active File Format @subsubsection $B%"%/%F%$%V%U%!%$%kMM<0(B @@ -22502,9 +22501,8 @@ low-number = flag = "y" / "n" / "m" / "j" / "x" / "=" group @end example -$B$3$N%U%!%$%k$N40A4$J5-=R$rF@$k$?$a$K$O!"(B@samp{innd} $B$N%^%K%e%"%kJG!"FC$K(B -@samp{active(5)} $B$r8+$F2<$5$$!#(B - +$B$3$N%U%!%$%k$N40A4$J5-=R$rF@$k$?$a$K$O!"(B@samp{innd} $B$N%^%K%e%"%kJG!"FC(B +$B$K(B @samp{active(5)} $B$r8+$F2<$5$$!#(B @node Newsgroups File Format @subsubsection $B%K%e!<%9%0%k!<%W%U%!%$%kMM<0(B @@ -22524,26 +22522,24 @@ tab = description = @end example - @page @node Emacs for Heathens @section $B0[65EL$X$N(B Emacs $B?.$8$k$+$I$&$+$OCN$j$^$;$s$,!"(Bgnus $B$r;H$&?M$NCf$K$O(B Gnus Love Boat $B$G$N(B $BN9$KEk>h$9$kA0$K$"$^$j(B Emacs $B$r;H$C$?;v$,L5$$$H$$$&?M$,$$$^$9!#$b$7$"$J(B -$B$?$,(B ``@kbd{M-C-a}'' $B$d(B ``$B%j!<%8%g%s$r@Z$k(B''$B!"$=$7$F(B -``@code{gnus-flargblossen} $B$rO"A[%j%9%H$K@_Dj$7$F$/$@$5$$!#$=$N%-!<$O%0(B -$B%k!<%WL>$K9gCW$9$k$?$a$K;H$o$l$k@55,I=8=$G$9(B'' $B$,>/$7$N0UL#$+A4$/0UL#$N(B -$BL5$$KbK!$N8@MU$G$"$kIT9,$J?M$G$"$l$P!"$3$NIUO?$O$"$J$?$N$?$a$K$"$j$^$9!#(B +$B$?$,(B ``@kbd{M-C-a}'' $B$d(B ``$B%j!<%8%g%s$r@Z$k(B''$B!"$=$7(B +$B$F(B ``@code{gnus-flargblossen} $B$rO"A[%j%9%H$K@_Dj$7$F$/$@$5$$!#$=$N%-!<$O(B +$B%0%k!<%WL>$K9gCW$9$k$?$a$K;H$o$l$k@55,I=8=$G$9(B'' $B$,>/$7$N0UL#$+A4$/0UL#(B +$B$NL5$$KbK!$N8@MU$G$"$kIT9,$J?M$G$"$l$P!"$3$NIUO?$O$"$J$?$N$?$a$K$"$j$^$9!#(B $B$b$7$"$J$?$,4{$K(B Emacs $B$K?F$7$s$G$$$k$N$G$"$l$P!"$3$l$rL5;k$7$FO$rF~NO$7$FL?Na$rO$rF~NO$7$FL?Na$ro$K$&$k$5$/46$8$i$l$k$G$7$g$&!#;D$j$N?M!9$O!"$=$l$K$h$j$b(B -$B$?$i$5$l$kCO9v$r0&$7$^$9!#$"$-$i$a$FI~=>$7$F2<$5$$!#(BEmacs $B$OK\Ev$O(B -``Escape-Meta-Alt-Control-Shift'' $B$NN,$G!"B>$NI>H=$N0-$$=P=j(B (Emacs $B$N:n(B -$Bo$K$&$k$5$/46$8$i$l$k$G$7$g$&!#;D$j$N?M!9$O!"$=(B +$B$l$K$h$j$b$?$i$5$l$kCO9v$r0&$7$^$9!#$"$-$i$a$FI~=>$7$F2<$5$$!#(BEmacs $B$OK\(B +$BEv$O(B ``Escape-Meta-Alt-Control-Shift'' $B$NN,$G!"B>$NI>H=$N0-$$=P(B +$B=j(B (Emacs $B$N:n.;X$N6a$/$K0LCV$7$F$*$j!"IaDL$OBgJ8;z$d$=$NB>$N$b$rF@(B $B$k$?$a$K;H$o$l$^$9!#$"$J$?$O$:$C$H$=$l$r;H$&;v$G$7$g$&!#%3%s%H%m!<%k%-!<(B @@ -22572,9 +22568,9 @@ A: $BC/$7J#;($K$J$C$F$$$^$9!#$=$N$h$&$J>l9g$O!"(B``$B%(%9%1!<%W(B'' $B%-!<$r;H$&;v$,(B @@ -22582,8 +22578,6 @@ A: $BCl9g$O!";d$O%a%?%-!<$N$"$k%-!<%\!<%I$r/$J$/$H$b(B Lisp $B%3!<%I$N=q$-J}$rCN$C$F$$$l$P!#(B) $B$7$+$7!"$=$l$O$3$N%^(B -$B%K%e%"%k$NHO0O30$J$N$G!"2f!9$OC1$K(B gnus $B$r%+%9%?%^%$%:$9$k$?$a$K%U%!%$%k(B -@file{.emacs} $B$GIaDL;H$o$l$k$$$/$D$+$NIaDL$N9=J8$K$D$$$F$@$1OC$r$7$^$9!#(B +$B%K%e%"%k$NHO0O30$J$N$G!"2f!9$OC1$K(B gnus $B$r%+%9%?%^%$%:$9$k$?$a$K%U%!%$(B +$B%k(B @file{.emacs} $B$GIaDL;H$o$l$k$$$/$D$+$NIaDL$N9=J8$K$D$$$F$@$1OC$r$7$^(B +$B$9!#(B $B$b$7JQ?t(B@code{gnus-florgbnize} $B$r;M(B (4) $B$K@_Dj$7$?$$$N$G$"$l$P!"0J2<$N$b(B $B$N$r=q$-$^$9(B: @@ -22614,10 +22609,10 @@ Gnus $B$O(B Emacs Lisp $B$K$h$C$F=q$+$l$F$$$F!"$=$l$O$?$/$5$s$NC`2A(B} ($B$=$l$O(B ``$B(B -$B2A(B} $B$7!"$=$l$O$3$3$G$O4JC1$J(B @code{setq} $BJ8$G$9!#(B +$B2s$K(B Emacs $B$r5/F0$7$?$H$-$KFI$_9~$^$l(B @code{$BI>2A(B} ($B$=$l$O(B ``$B2A(B} $B$7!"$=$l$O$3$3$G$O4JC1$J(B @code{setq} $BJ8$G$9!#(B $B$,$s$P$C$F(B---$B$b$7$"$J$?$,(B Emacs $B$NA0$K$"$k$N$G$"$l$P$A$g$C$H;n$7$F2<$5$$!#(B @kbd{C-x C-e} $B$N8e$G!"H?6A6h0h(B (echo area) $B$K(B @samp{4} $B$,8=$o$l$k$N$,8+(B @@ -22634,8 +22629,9 @@ lisp $B8l$G$9(B) $B$5$l$^$9!#$b$7JQ?t$r$9$0$KJQ99$7$?$$$N$G$"$l$P!"JD$83g8L$N $B$H8@$&;v$G$9!#(B -$B0lJ}!"%^%K%e%"%k$,(B ``@code{gnus-nntp-server} $B$r(B @samp{nntp.ifi.uio.no} -$B$K@_Dj$7$J$5$$(B'' $B$H8@$C$?$J$i!"$=$l$O(B: +$B0lJ}!"%^%K%e%"%k(B +$B$,(B ``@code{gnus-nntp-server} $B$r(B @samp{nntp.ifi.uio.no} $B$K@_Dj$7$J$5$$(B'' $B$H(B +$B8@$C$?$J$i!"$=$l$O(B: @lisp (setq gnus-nntp-server "nntp.ifi.uio.no") diff --git a/texi/gnus.texi b/texi/gnus.texi index 631c376..0793d9d 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -5,9 +5,10 @@ @synindex fn cp @synindex vr cp @synindex pg cp -@c @direntry -@c * Gnus: (gnus). The newsreader Gnus. -@c @end direntry +@dircategory Editors +@direntry +* Gnus: (gnus). The newsreader Gnus. +@end direntry @iftex @finalout @end iftex @@ -271,50 +272,53 @@ \thispagestyle{empty} -Copyright \copyright{} 1995,96,97,98,99 Free Software Foundation, Inc. +Copyright \copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc. -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. \newpage \end{titlepage} @end iflatex @end iftex -@ifinfo +@ifnottex This file documents gnus, the GNU Emacs newsreader. -Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. +Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc. -@ignore -Permission is granted to process this file through Tex and print the -results, provided the printed document carries copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with the +Invariant Sections being none, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. -@end ignore -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. -@end ifinfo +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. +@end ifnottex @tex @@ -325,19 +329,24 @@ into another language, under the above conditions for modified versions. @page @vskip 0pt plus 1filll -Copyright @copyright{} 1995,96,97,98,99 Free Software Foundation, Inc. +Copyright @copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc. -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. @end titlepage @page @@ -516,27 +525,24 @@ Choosing Articles Reply, Followup and Post -* Summary Mail Commands:: Sending mail. -* Summary Post Commands:: Sending news. -* Summary Message Commands:: Other Message-related commands. -* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.'' - -Marking Articles - -* Unread Articles:: Marks for unread articles. -* Read Articles:: Marks for read articles. -* Other Marks:: Marks that do not affect readedness. +* Summary Mail Commands:: Sending mail. +* Summary Post Commands:: Sending news. +* Summary Message Commands:: Other Message-related commands. +* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.'' Marking Articles -* Setting Marks:: How to set and remove marks. -* Generic Marking Commands:: How to customize the marking. -* Setting Process Marks:: How to mark articles for later processing. +* Unread Articles:: Marks for unread articles. +* Read Articles:: Marks for read articles. +* Other Marks:: Marks that do not affect readedness. +* Setting Marks:: How to set and remove marks. +* Generic Marking Commands:: How to customize the marking. +* Setting Process Marks:: How to mark articles for later processing. Threading -* Customizing Threading:: Variables you can change to affect the threading. -* Thread Commands:: Thread based commands in the summary buffer. +* Customizing Threading:: Variables you can change to affect the threading. +* Thread Commands:: Thread based commands in the summary buffer. Customizing Threading @@ -701,6 +707,7 @@ Gnus Unplugged * Agent Categories:: How to tell the Gnus Agent what to download. * Agent Commands:: New commands for all the buffers. * Agent Expiry:: How to make old articles go away. +* Agent and IMAP:: How to use the Agent with IMAP. * Outgoing Messages:: What happens when you post/mail something? * Agent Variables:: Customizing is fun. * Example Setup:: An example @file{.gnus.el} file for offline people. @@ -1043,7 +1050,7 @@ levels.) You might want to run more than one Emacs with more than one gnus at the same time. If you are using different @file{.newsrc} files (e.g., if you -are using the two different gnusae to read from two different servers), +are using the two different Gnusae to read from two different servers), that is no problem whatsoever. You just do it. The problem appears when you want to run two Gnusae that use the same @@ -1058,7 +1065,7 @@ me. Usage of the patent (@dfn{Master/Slave Relationships In Computer Applications}) will be much more expensive, of course.) Anyways, you start one gnus up the normal way with @kbd{M-x gnus} (or -however you do it). Each subsequent slave gnusae should be started with +however you do it). Each subsequent slave Gnusae should be started with @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc} files, but instead save @dfn{slave files} that contain information only on what groups have been read in the slave session. When a master gnus @@ -1932,6 +1939,14 @@ determines the number of articles gnus will fetch. If @var{N} is positive, gnus fetches the @var{N} newest articles, if @var{N} is negative, Gnus fetches the @code{abs(@var{N})} oldest articles. +Thus, @kbd{SPC} enters the group normally, @kbd{C-u SPC} offers old +articles, @kbd{C-u 4 2 SPC} fetches the 42 newest articles, and @kbd{C-u +- 4 2 SPC} fetches the 42 oldest ones. + +When you are in the group (in the Summary buffer), you can type +@kbd{M-g} to fetch new articles, or @kbd{C-u M-g} to also show the old +ones. + @item RET @kindex RET (Group) @findex gnus-group-select-group @@ -2178,6 +2193,27 @@ reasons of efficiency. It is recommended that you keep all your mail groups (if any) on quite low levels (e.g. 1 or 2). +Maybe the following description of the default behavior of Gnus helps to +understand what these levels are all about. By default, Gnus shows you +subscribed nonempty groups, but by hitting @kbd{L} you can have it show +empty subscribed groups and unsubscribed groups, too. Type @kbd{l} to +go back to showing nonempty subscribed groups again. Thus, unsubscribed +groups are hidden, in a way. + +Zombie and killed groups are similar to unsubscribed groups in that they +are hidden by default. But they are different from subscribed and +unsubscribed groups in that Gnus doesn't ask the news server for +information (number of messages, number of unread messages) on zombie +and killed groups. Normally, you use @kbd{C-k} to kill the groups you +aren't interested in. If most groups are killed, Gnus is faster. + +Why does Gnus distinguish between zombie and killed groups? Well, when +a new group arrives on the server, Gnus by default makes it a zombie +group. This means that you are normally not bothered with new groups, +but you can type @kbd{A z} to get a list of all new groups. Subscribe +the ones you like and kill the ones you don't want. (@kbd{A k} shows a +list of killed groups.) + If you want to play with the level variables, you should show some care. Set them once, and don't touch them ever again. Better yet, don't touch them at all unless you know exactly what you're doing. @@ -2511,7 +2547,7 @@ The following group parameters can be used: Address used by when doing followups and new posts. @example -(to-address . "some@@where.com") +(to-address . "some@@where.com") @end example This is primarily useful in mail groups that represent closed mailing @@ -2529,7 +2565,7 @@ list address instead. @item to-list @cindex to-list -Address used when doing a @kbd{a} in that group. +Address used when doing @kbd{a} in that group. @example (to-list . "some@@where.com") @@ -3229,6 +3265,18 @@ Copy the current group to some other topic (@code{gnus-topic-copy-group}). This command uses the process/prefix convention (@pxref{Process/Prefix}). +@item T h +@kindex T h (Topic) +@findex gnus-topic-hide-topic +Hide the current topic (@code{gnus-topic-hide-topic}). If given +a prefix, hide the topic permanently. + +@item T s +@kindex T s (Topic) +@findex gnus-topic-show-topic +Show the current topic (@code{gnus-topic-show-topic}). If given +a prefix, show the topic permanently. + @item T D @kindex T D (Topic) @findex gnus-topic-remove-group @@ -5240,6 +5288,9 @@ Push the current process mark set onto the stack @end table +Also see the @kbd{&} command in @pxref{Searching for Articles} for how to +set process marks based on article body contents. + @node Limiting @section Limiting @@ -5719,10 +5770,7 @@ more logical sub-thread ordering in such instances. @item gnus-parse-headers-hook @vindex gnus-parse-headers-hook -Hook run before parsing any headers. The default value is -@code{(gnus-set-summary-default-charset)}, which sets up local value of -@code{default-mime-charset} in summary buffer based on variable -@code{gnus-newsgroup-default-charset-alist}. +Hook run before parsing any headers. @item gnus-alter-header-function @vindex gnus-alter-header-function @@ -7114,10 +7162,11 @@ Signature}. @kindex W W l (Summary) @findex gnus-article-hide-list-identifiers @vindex gnus-list-identifiers -Strip list identifiers specified in @code{gnus-list-identifiers}. -These are strings some mailing list servers add to the beginning of -all @code{Subject} headers---for example, @samp{[zebra 4711]}. Any -leading @samp{Re: } is skipped before stripping. +Strip list identifiers specified in @code{gnus-list-identifiers}. These +are strings some mailing list servers add to the beginning of all +@code{Subject} headers---for example, @samp{[zebra 4711]}. Any leading +@samp{Re: } is skipped before stripping. @code{gnus-list-identifiers} +may not contain @code{\\(..\\)}. @table @code @@ -7172,7 +7221,9 @@ the @code{banner} group parameter (@pxref{Group Parameters}) to the group you want banners stripped from. The parameter either be a string, which will be interpreted as a regular expression matching text to be removed, or the symbol @code{signature}, meaning that the (last) -signature should be removed. +signature should be removed, or other symbol, meaning that the +corresponding regular expression in @code{gnus-article-banner-alist} is +used. @item W W c @kindex W W c (Summary) @@ -7286,10 +7337,12 @@ positions in the alphabet, e. g. @samp{B} (letter #2) -> @samp{O} (letter is rumored to have employed this form of, uh, somewhat weak encryption. @item W t +@item t @kindex W t (Summary) -@findex gnus-summary-toggle-header +@kindex t (Summary) +@findex gnus-article-toggle-headers Toggle whether to display all headers in the article buffer -(@code{gnus-summary-toggle-header}). +(@code{gnus-article-toggle-headers}). @item W v @kindex W v (Summary) @@ -7313,9 +7366,9 @@ Treat overstrike (@code{gnus-article-treat-overstrike}). @findex gnus-article-treat-dumbquotes @vindex gnus-article-dumbquotes-map @cindex Smartquotes -@cindex M******** sm*rtq**t*s +@cindex M****s*** sm*rtq**t*s @cindex Latin 1 -Treat M******** sm*rtq**t*s according to +Treat M****s*** sm*rtq**t*s according to @code{gnus-article-dumbquotes-map} (@code{gnus-article-treat-dumbquotes}). Note that this function guesses whether a character is a sm*rtq**t* or not, so it should only be used @@ -7719,6 +7772,8 @@ Translate the article from one language to another @node MIME Commands @section @sc{mime} Commands @cindex MIME decoding +@cindex attachments +@cindex viewing attachments The following commands all understand the numerical prefix. For instance, @kbd{3 b} means ``view the third @sc{mime} part''. @@ -8490,7 +8545,9 @@ If you move (or copy) articles regularly, you might wish to have gnus suggest where to put the articles. @code{gnus-move-split-methods} is a variable that uses the same syntax as @code{gnus-split-methods} (@pxref{Saving Articles}). You may customize that variable to create -suggestions you find reasonable. +suggestions you find reasonable. (Note that +@code{gnus-move-split-methods} uses group names where +@code{gnus-split-methods} uses file names.) @lisp (setq gnus-move-split-methods @@ -8621,10 +8678,14 @@ Search through all previous articles for a regexp @item & @kindex & (Summary) @findex gnus-summary-execute-command -This command will prompt you for a header field, a regular expression to -match on this field, and a command to be executed if the match is made -(@code{gnus-summary-execute-command}). If given a prefix, search -backward instead. +This command will prompt you for a header, a regular expression to match +on this field, and a command to be executed if the match is made +(@code{gnus-summary-execute-command}). If the header is an empty +string, the match is done on the entire article. If given a prefix, +search backward instead. + +For instance, @kbd{& RET some.*string #} will put the process mark on +all articles that have heads or bodies that match @samp{some.*string}. @item M-& @kindex M-& (Summary) @@ -9027,8 +9088,8 @@ variable is set (and @code{gnus-visible-headers} is @code{nil}), it should be a regular expression that matches all lines that you want to hide. All lines that do not match this variable will remain visible. -For instance, if you just want to get rid of the @code{References} field -and the @code{Xref} field, you might say: +For instance, if you just want to get rid of the @code{References} line +and the @code{Xref} line, you might say: @lisp (setq gnus-ignored-headers "^References:\\|^Xref:") @@ -9611,6 +9672,16 @@ This variable can be used to do the following: @itemize @bullet @item a string Messages will be saved in that group. + +Note that you can include a select method in the group name, then the +message will not be stored in the select method given by +@code{gnus-message-archive-method}, but in the select method specified +by the group name, instead. Suppose @code{gnus-message-archive-method} +has the default value shown above. Then setting +@code{gnus-message-archive-group} to @code{"foo"} means that outgoing +messages are stored in @samp{nnfolder+archive:foo}, but if you use the +value @code{"nnml:foo"}, then outgoing messages will be stored in +@samp{nnml:foo}. @item a list of strings Messages will be saved in all those groups. @item an alist of regexps, functions and forms @@ -9771,27 +9842,35 @@ So here's a new example: @lisp (setq gnus-posting-styles '((".*" - (signature-file "~/.signature") - (name "User Name") - ("X-Home-Page" (getenv "WWW_HOME")) - (organization "People's Front Against MWM")) - ("^rec.humor" - (signature my-funny-signature-randomizer)) - ((equal (system-name) "gnarly") - (signature my-quote-randomizer)) - ((message-news-p) - (signature my-news-signature)) - (header "From.*To" "larsi.*org" - (Organization "Somewhere, Inc.")) - ((posting-from-work-p) - (signature-file "~/.work-signature") - (address "user@@bar.foo") - (body "You are fired.\n\nSincerely, your boss.") - (organization "Important Work, Inc")) - ("^nn.+:" - (signature-file "~/.mail-signature")))) + (signature-file "~/.signature") + (name "User Name") + ("X-Home-Page" (getenv "WWW_HOME")) + (organization "People's Front Against MWM")) + ("^rec.humor" + (signature my-funny-signature-randomizer)) + ((equal (system-name) "gnarly") + (signature my-quote-randomizer)) + ((message-news-p) + (signature my-news-signature)) + (header "From\\|To" "larsi.*org" + (Organization "Somewhere, Inc.")) + ((posting-from-work-p) + (signature-file "~/.work-signature") + (address "user@@bar.foo") + (body "You are fired.\n\nSincerely, your boss.") + (organization "Important Work, Inc")) + ("nnml:.*" + (From (save-excursion + (set-buffer gnus-article-buffer) + (message-fetch-field "to")))) + ("^nn.+:" + (signature-file "~/.mail-signature")))) @end lisp +The @samp{nnml:.*} rule means that you use the @code{To} address as the +@code{From} address in all your outgoing replies, which might be handy +if you fill many roles. + @node Drafts @section Drafts @@ -10123,6 +10202,9 @@ Here's the method for a public spool: (nnmh-get-new-mail nil)) @end lisp +@cindex proxy +@cindex firewall + If you are behind a firewall and only have access to the @sc{nntp} server from the firewall machine, you can instruct Gnus to @code{rlogin} on the firewall machine and telnet from there to the @sc{nntp} server. @@ -10364,15 +10446,17 @@ manual page, but here are the salient facts: The file contains one or more line, each of which define one server. @item -Each line may contain an arbitrary number of token/value pairs. The -valid tokens include @samp{machine}, @samp{login}, @samp{password}, -@samp{default}, @samp{port} and @samp{force}. (The latter is not a -valid @file{.netrc}/@code{ftp} token, which is almost the only way the -@file{.authinfo} file format deviates from the @file{.netrc} file -format.) - +Each line may contain an arbitrary number of token/value pairs. @end enumerate +The valid tokens include @samp{machine}, @samp{login}, @samp{password}, +@samp{default}. Gnus introduce two new tokens, not present in the +original @file{.netrc}/@code{ftp} syntax, namely @samp{port} and +@samp{force}. (This is the only way the @file{.authinfo} file format +deviates from the @file{.netrc} file format.) @samp{port} is used to +indicate what port on the server the credentials apply to, @samp{force} +is explained below. + Here's an example file: @example @@ -10765,7 +10849,7 @@ Reading mail with a newsreader---isn't that just plain WeIrD? But of course. @menu -* Mail in a Newsreader:: Important introductory notes. +* Mail in a Newsreader:: Important introductory notes. * Getting Started Reading Mail:: A simple cookbook example. * Splitting Mail:: How to create mail groups. * Mail Sources:: How to tell Gnus where to get mail from. @@ -10955,7 +11039,10 @@ variable is @code{add-name-to-file} by default.) @kindex M-x nnmail-split-history @kindex nnmail-split-history If you wish to see where the previous mail split put the messages, you -can use the @kbd{M-x nnmail-split-history} command. +can use the @kbd{M-x nnmail-split-history} command. If you wish to see +where re-spooling messages would put the messages, you can use +@code{gnus-summary-respool-trace} and related commands (@pxref{Mail +Group Commands}). Gnus gives you all the opportunity you could possibly want for shooting yourself in the foot. Let's say you create a group that will contain @@ -11031,7 +11118,7 @@ Or using the default path: @end lisp If the mail spool file is not located on the local machine, it's best to -use POP or @sc{imap} or the like to fetch the mail. You can not you ange-ftp +use POP or @sc{imap} or the like to fetch the mail. You can not use ange-ftp file names here---it has no way to lock the mail spool while moving the mail. @@ -11050,7 +11137,7 @@ The @samp{getmail} script would look something like the following: # flu@@iki.fi MOVEMAIL=/usr/lib/emacs/20.3/i386-redhat-linux/movemail -TMP=~/Mail/tmp +TMP=$HOME/Mail/tmp rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP @end example @@ -11104,7 +11191,10 @@ The name of the POP server. The default is taken from the @code{MAILHOST} environment variable. @item :port -The port number of the POP server. The default is @samp{pop3}. +The port number of the POP server. This can be a number (eg, +@samp{:port 1234}) or a string (eg, @samp{:port "pop3"}). If it is a +string, it should be a service name as listed in @file{/etc/services} on +Unix systems. The default is @samp{"pop3"}. @item :user The user name to give to the POP server. The default is the login @@ -11254,7 +11344,7 @@ What stream to use for connecting to the server, this is one of the symbols in @code{imap-stream-alist}. Right now, this means @samp{kerberos4}, @samp{ssl} or the default @samp{network}. -@item :authenticator +@item :authentication Which authenticator to use for authenticating to the server, this is one of the symbols in @code{imap-authenticator-alist}. Right now, this means @samp{kerberos4}, @samp{cram-md5}, @samp{anonymous} or the default @@ -11273,8 +11363,8 @@ Then all articles in the mailbox is fetched, no matter what. For a complete list of predicates, see RFC 2060 §6.4.4. @item :fetchflag -How to flag fetched articles on the server, the default @samp{Deleted} -will mark them as deleted, an alternative would be @samp{Seen} which +How to flag fetched articles on the server, the default @samp{\Deleted} +will mark them as deleted, an alternative would be @samp{\Seen} which would simply mark them as read. These are the two most likely choices, but more flags are defined in RFC 2060 §2.3.2. @@ -11354,6 +11444,27 @@ useful when you use local mail and news. @end table @end table +@subsubsection Function Interface + +Some of the above keywords specify a Lisp function to be executed. +For each keyword @code{:foo}, the Lisp variable @code{foo} is bound to +the value of the keyword while the function is executing. For example, +consider the following mail-source setting: + +@lisp +(setq mail-sources '((pop :user "jrl" + :server "pophost" :function fetchfunc))) +@end lisp + +While the function @code{fetchfunc} is executing, the symbol @code{user} +is bound to @code{"jrl"}, and the symbol @code{server} is bound to +@code{"pophost"}. The symbols @code{port}, @code{password}, +@code{program}, @code{prescript}, @code{postscript}, @code{function}, +and @code{authentication} are also bound (to their default values). + +See above for a list of keywords for each type of mail source. + + @node Mail Source Customization @subsubsection Mail Source Customization @@ -11378,6 +11489,13 @@ Directory where files (if any) will be stored. The default is where the incoming files will be stored if the previous variable is @code{nil}. +@item mail-source-incoming-file-prefix +@vindex mail-source-incoming-file-prefix +Prefix for file name for storing incoming mail. The default is +@file{Incoming}, in which case files will end up with names like +@file{Incoming30630D_} or @file{Incoming298602ZD}. This is really only +relevant if @code{mail-source-delete-incoming} is @code{nil}. + @item mail-source-default-file-modes @vindex mail-source-default-file-modes All new mail files will get this file mode. The default is 384. @@ -11576,6 +11694,18 @@ a list, and the first element is @code{:}, then the second element will be called as a function with @var{args} given as arguments. The function should return a @var{split}. +For instance, the following function could be used to split based on the +body of the messages: + +@lisp +(defun split-on-body () + (save-excursion + (set-buffer " *nnmail incoming*") + (goto-char (point-min)) + (when (re-search-forward "Some.*string" nil t) + "string.group"))) +@end lisp + @item @code{(! @var{func} @var{split})}: If the split is a list, and the first element is @code{!}, then SPLIT will be processed, and FUNC will be @@ -11620,6 +11750,42 @@ matched string will be substituted. Similarly, the elements @samp{\\1} up to @samp{\\9} will be substituted with the text matched by the groupings 1 through 9. +@findex nnmail-split-fancy-with-parent +@code{nnmail-split-fancy-with-parent} is a function which allows you to +split followups into the same groups their parents are in. Sometimes +you can't make splitting rules for all your mail. For example, your +boss might send you personal mail regarding different projects you are +working on, and as you can't tell your boss to put a distinguishing +string into the subject line, you have to resort to manually moving the +messages into the right group. With this function, you only have to do +it once per thread. + +To use this feature, you have to set @code{nnmail-treat-duplicates} to a +non-nil value. And then you can include +@code{nnmail-split-fancy-with-parent} using the colon feature, like so: +@lisp +(setq nnmail-split-fancy + '(| (: nnmail-split-fancy-with-parent) + ;; other splits go here + )) +@end lisp + +This feature works as follows: when @code{nnmail-treat-duplicates} is +non-nil, Gnus records the message id of every message it sees in the +file specified by the variable @code{nnmail-message-id-cache-file}, +together with the group it is in (the group is omitted for non-mail +messages). When mail splitting is invoked, the function +@code{nnmail-split-fancy-with-parent} then looks at the References (and +In-Reply-To) header of each message to split and searches the file +specified by @code{nnmail-message-id-cache-file} for the message ids. +When it has found a parent, it returns the corresponding group name. It +is recommended that you set @code{nnmail-message-id-cache-length} to a +somewhat higher number than the default so that the message ids are +still in the cache. (A value of 5000 appears to create a file some 300 +kBytes in size.) When @code{nnmail-cache-accepted-message-ids} is +non-nil, Gnus also records the message ids of moved articles, so that +the followup messages goes into the new group. + @node Group Mail Splitting @subsection Group Mail Splitting @@ -11663,9 +11829,13 @@ by defining a single @code{&} fancy split containing one split for each group. If a message doesn't match any split, it will be stored in the group named in @code{gnus-group-split-default-catch-all-group}, unless some group has @var{split-spec} set to @code{catch-all}, in which case -that group is used as the catch-all group. Note that, in this case, -there's no cross-posting, as a @code{|} fancy split encloses the -@code{&} split and the catch-all group. +that group is used as the catch-all group. Even though this variable is +often used just to name a group, it may also be set to an arbitrarily +complex fancy split (after all, a group name is a fancy split), and this +may be useful to split mail that doesn't go to any mailing list to +personal mail folders. Note that this fancy split is added as the last +element of a @code{|} split list that also contains a @code{&} split +with the rules extracted from group parameters. It's time for an example. Assume the following group parameters have been defined: @@ -11706,9 +11876,9 @@ splits like this: @var{groups} may be a regular expression or a list of group names whose parameters will be scanned to generate the output split. @var{no-crosspost} can be used to disable cross-posting; in this case, a -single @code{|} split will be output. @var{catch-all} may be the name -of a group to be used as the default catch-all group. If -@var{catch-all} is @code{nil}, or if @var{split-regexp} matches the +single @code{|} split will be output. @var{catch-all} is the fallback +fancy split, used like @var{gnus-group-split-default-catch-all-group}. +If @var{catch-all} is @code{nil}, or if @var{split-regexp} matches the empty string in any selected group, no catch-all split will be issued. Otherwise, if some group has @var{split-spec} set to @code{catch-all}, this group will override the value of the @var{catch-all} argument. @@ -11717,14 +11887,14 @@ this group will override the value of the @var{catch-all} argument. Unfortunately, scanning all groups and their parameters can be quite slow, especially considering that it has to be done for every message. But don't despair! The function @code{gnus-group-split-setup} can be -used to select @code{gnus-group-split} in a much more efficient way. It +used to enable @code{gnus-group-split} in a much more efficient way. It sets @code{nnmail-split-methods} to @code{nnmail-split-fancy} and sets @code{nnmail-split-fancy} to the split produced by @code{gnus-group-split-fancy}. Thus, the group parameters are only scanned once, no matter how many messages are split. @findex gnus-group-split-update -However, if you change group parameters, you have to update +However, if you change group parameters, you'd have to update @code{nnmail-split-fancy} manually. You can do it by running @code{gnus-group-split-update}. If you'd rather have it updated automatically, just tell @code{gnus-group-split-setup} to do it for @@ -11737,7 +11907,7 @@ you. For example, add to your @file{.gnus}: If @var{auto-update} is non-@code{nil}, @code{gnus-group-split-update} will be added to @code{nnmail-pre-get-new-mail-hook}, so you won't ever have to worry about updating @code{nnmail-split-fancy} again. If you -don't omit @var{catch-all} (it's optional), +don't omit @var{catch-all} (it's optional; same as nil), @code{gnus-group-split-default-catch-all-group} will be set to its value. @@ -11901,14 +12071,22 @@ change the expiry period (@pxref{Group Parameters}). @vindex nnmail-expiry-target The normal action taken when expiring articles is to delete them. However, in some circumstances it might make more sense to move them to -other groups instead of deleting them. The @code{nnmail-expiry-target} +other groups instead of deleting them. The variable @code{nnmail-expiry-target} (and the @code{expiry-target} group parameter) controls this. The +variable supplies a default value for all groups, which can be +overridden for specific groups by the group parameter. default value is @code{delete}, but this can also be a string (which should be the name of the group the message should be moved to), or a function (which will be called in a buffer narrowed to the message in question, and with the name of the group being moved from as its parameter) which should return a target -- either a group name or -@code{delete}. +@code{delete}. + +Here's an example for specifying a group name: +@lisp +(setq nnmail-expiry-target "nnml:expired") +@end lisp + @vindex nnmail-keep-last-article If @code{nnmail-keep-last-article} is non-@code{nil}, Gnus will never @@ -11993,7 +12171,8 @@ Some list servers add an identifier---for example, @samp{(idm)}---to the beginning of all @code{Subject} headers. I'm sure that's nice for people who use stone age mail readers. This function will remove strings that match the @code{nnmail-list-identifiers} regexp, which can -also be a list of regexp. +also be a list of regexp. @code{nnmail-list-identifiers} may not contain +@code{\\(..\\)}. For instance, if you want to remove the @samp{(idm)} and the @samp{nagnagnag} identifiers: @@ -13507,6 +13686,33 @@ think of it as a modernized @sc{nntp}. Connecting to a @sc{imap} server is much similar to connecting to a news server, you just specify the network address of the server. +A server configuration in @code{~/.gnus} with a few @sc{imap} servers +might look something like this: + +@lisp +(setq gnus-secondary-select-methods + '((nnimap "simpleserver") ; no special configuration + ; perhaps a ssh port forwarded server: + (nnimap "dolk" + (nnimap-address "localhost") + (nnimap-server-port 1430)) + ; a UW server running on localhost + (nnimap "barbar" + (nnimap-server-port 143) + (nnimap-address "localhost") + (nnimap-list-pattern ("INBOX" "mail/*"))) + ; anonymous public cyrus server: + (nnimap "cyrus.andrew.cmu.edu" + (nnimap-authenticator anonymous) + (nnimap-list-pattern "archive.*") + (nnimap-stream network)) + ; a ssl server on a non-standard port: + (nnimap "vic20" + (nnimap-address "vic20.somewhere.com") + (nnimap-server-port 9930) + (nnimap-stream ssl)))) +@end lisp + The following variables can be used to create a virtual @code{nnimap} server: @@ -13522,6 +13728,13 @@ server name if not specified. @vindex nnimap-server-port Port on server to contact. Defaults to port 143, or 993 for SSL. +Note that this should be a integer, example server specification: + +@lisp +(nnimap "mail.server.com" + (nnimap-server-port 4711)) +@end lisp + @item nnimap-list-pattern @vindex nnimap-list-pattern String or list of strings of mailboxes to limit available groups to. @@ -13535,10 +13748,12 @@ REFERENCE is used for is server specific, but on the University of Washington server it's a directory that will be concatenated with the mailbox. -Example: +Example server specification: @lisp -("INBOX" "Mail/*" "alt.sex.*" ("~friend/Mail/" . "list/*")) +(nnimap "mail.server.com" + (nnimap-list-pattern ("INBOX" "Mail/*" "alt.sex.*" + ("~friend/Mail/" . "list/*")))) @end lisp @item nnimap-stream @@ -13548,6 +13763,15 @@ will detect and automatically use all of the below, with the exception of SSL. (SSL is being replaced by STARTTLS, which can be automatically detected, but it's not widely deployed yet). +Example server specification: + +@lisp +(nnimap "mail.server.com" + (nnimap-stream ssl)) +@end lisp + +Please note that the value of @code{nnimap-stream} is a symbol! + @itemize @bullet @item @dfn{gssapi:} Connect with GSSAPI (usually kerberos 5). Require the @@ -13562,17 +13786,30 @@ SSL). Require the external library @samp{starttls.el} and program @dfn{ssl:} Connect through SSL. Require OpenSSL (the program @samp{openssl}) or SSLeay (@samp{s_client}). @item +@dfn{shell:} Use a shell command to start IMAP connection. +@item @dfn{network:} Plain, TCP/IP network connection. @end itemize +@vindex imap-kerberos4-program The @samp{imtest} program is shipped with Cyrus IMAPD, nnimap support -both @samp{imtest} version 1.5.x and version 1.6.x. +both @samp{imtest} version 1.5.x and version 1.6.x. The variable +@code{imap-kerberos4-program} contain parameters to pass to the imtest +program. +@vindex imap-ssl-program For SSL connections, the OpenSSL program is available from @file{http://www.openssl.org/}. OpenSSL was formerly known as SSLeay, -and nnimap support it too - although the most recent versions of SSLeay, -0.9.x, are known to have serious bugs making it useless. Earlier -versions, especially 0.8.x, of SSLeay are known to work. +and nnimap support it too - although the most recent versions of +SSLeay, 0.9.x, are known to have serious bugs making it +useless. Earlier versions, especially 0.8.x, of SSLeay are known to +work. The variable @code{imap-ssl-program} contain parameters to pass +to OpenSSL/SSLeay. + +@vindex imap-shell-program +@vindex imap-shell-host +For IMAP connections using the @code{shell} stream, the variable +@code{imap-shell-program} specify what program to call. @item nnimap-authenticator @vindex nnimap-authenticator @@ -13580,6 +13817,15 @@ versions, especially 0.8.x, of SSLeay are known to work. The authenticator used to connect to the server. By default, nnimap will use the most secure authenticator your server is capable of. +Example server specification: + +@lisp +(nnimap "mail.server.com" + (nnimap-authenticator anonymous)) +@end lisp + +Please note that the value of @code{nnimap-authenticator} is a symbol! + @itemize @bullet @item @dfn{gssapi:} GSSAPI (usually kerberos 5) authentication. Require @@ -13631,8 +13877,21 @@ manually, @xref{Expunging mailboxes}. @item ask When closing mailboxes, nnimap will ask if you wish to expunge deleted articles or not. + @end table +@item nnimap-authinfo-file +@vindex nnimap-authinfo-file + +A file containing credentials used to log in on servers. The format +is (almost) the same as the @code{ftp} @file{~/.netrc} file. See +`nntp-authinfo-file' for exact syntax. + +A file containing credentials used to log in on servers. The format is +(almost) the same as the @code{ftp} @file{~/.netrc} file. See the +variable @code{nntp-authinfo-file} for exact syntax; also see +@xref{NNTP}. + @end table @menu @@ -13679,7 +13938,8 @@ mailboxes to split from. Defaults to nil, which means that splitting is disabled! @lisp -(setq nnimap-split-inbox '("INBOX" ("~/friend/Mail" . "lists/*") "lists.imap")) +(setq nnimap-split-inbox + '("INBOX" ("~/friend/Mail" . "lists/*") "lists.imap")) @end lisp No nnmail equivalent. @@ -13698,9 +13958,9 @@ Neither did I, we need examples. @lisp (setq nnimap-split-rule - '(("INBOX.nnimap" "^Sender: owner-nnimap@@vic20.globalcom.se") - ("INBOX.junk" "^Subject:.*MAKE MONEY") - ("INBOX.private" ""))) + '(("INBOX.nnimap" "^Sender: owner-nnimap@@vic20.globalcom.se") + ("INBOX.junk" "^Subject:.*MAKE MONEY") + ("INBOX.private" ""))) @end lisp This will put all articles from the nnimap mailing list into mailbox @@ -14039,6 +14299,7 @@ Of course, to use it as such, you have to learn a few new commands. * Agent Categories:: How to tell the Gnus Agent what to download. * Agent Commands:: New commands for all the buffers. * Agent Expiry:: How to make old articles go away. +* Agent and IMAP:: How to use the Agent with IMAP. * Outgoing Messages:: What happens when you post/mail something? * Agent Variables:: Customizing is fun. * Example Setup:: An example @file{.gnus.el} file for offline people. @@ -14075,11 +14336,14 @@ already fetched while in this mode. @item You then decide to see whether any new news has arrived. You connect your machine to the net (using PPP or whatever), and then hit @kbd{J j} -to make Gnus become @dfn{plugged}. +to make Gnus become @dfn{plugged} and use @kbd{g} to check for new mail +as usual. To check for new mail in unplugged mode, see (@pxref{Mail +Source Specifiers}). @item You can then read the new news immediately, or you can download the news -onto your local machine. If you want to do the latter, you press @kbd{J +onto your local machine. If you want to do the latter, you press @kbd{g} +to check if there are any new news and then @kbd{J s} to fetch all the eligible articles in all the groups. (To let Gnus know which articles you want to download, @pxref{Agent Categories}.) @@ -14160,7 +14424,7 @@ predicates an additional score rule is superfluous. Predicates of @code{high} or @code{low} download articles in respect of their scores in relationship to @code{gnus-agent-high-score} and -@code{gnus-agent-low-score} as descibed below. +@code{gnus-agent-low-score} as described below. To gain even finer control of what is to be regarded eligible for download a predicate can consist of a number of predicates with logical @@ -14256,7 +14520,7 @@ wherever. (Note: this would have to be at a point *after* @code{gnus-agent} has been loaded via @code{(gnus-agentize)}) @lisp -(defvar gnus-category-predicate-alist +(setq gnus-category-predicate-alist (append gnus-category-predicate-alist '((old . my-article-old-p)))) @end lisp @@ -14574,6 +14838,12 @@ Remove the current group from its category, if any (@code{gnus-agent-remove-group}). This command understands the process/prefix convention (@pxref{Process/Prefix}). +@item J Y +@kindex J Y (Agent Group) +@findex gnus-agent-synchronize-flags +Synchronize flags changed while unplugged with remote server, if any. + + @end table @@ -14648,6 +14918,60 @@ expire all articles---unread, read, ticked and dormant. If @code{nil} unread, ticked and dormant articles will be kept indefinitely. +@node Agent and IMAP +@subsection Agent and IMAP + +The Agent work with any Gnus backend, including nnimap. However, since +there are some conceptual differences between NNTP and IMAP, this +section (should) provide you with some information to make Gnus Agent +work smoother as a IMAP Disconnected Mode client. + +The first thing to keep in mind is that all flags (read, ticked, etc) +are kept on the IMAP server, rather than in @code{.newsrc} as is the +case for nntp. Thus Gnus need to remember flag changes when +disconnected, and synchronize these flags when you plug back in. + +Gnus keep track of flag changes when reading nnimap groups under the +Agent by default. When you plug back in, by default Gnus will check if +you have any changed any flags and ask if you wish to synchronize theese +with the server. This behaviour is customizable with +@code{gnus-agent-synchronize-flags}. + +@vindex gnus-agent-synchronize-flags +If @code{gnus-agent-synchronize-flags} is @code{nil}, the Agent will +never automatically synchronize flags. If it is @code{ask}, the +default, the Agent will check if you made any changes and if so ask if +you wish to synchronize these when you re-connect. If it has any other +value, all flags will be synchronized automatically. + +If you do not wish to automatically synchronize flags when you +re-connect, this can be done manually with the +@code{gnus-agent-synchronize-flags} command that is bound to @kbd{J Y} +in the group buffer by default. + +Some things are currently not implemented in the Agent that you'd might +expect from a disconnected IMAP client, including: + +@itemize @bullet + +@item +Copying/moving articles into nnimap groups when unplugged. + +@item +Creating/deleting nnimap groups when unplugged. + +@end itemize + +Technical note: the synchronization algorithm does not work by "pushing" +all local flags to the server, but rather incrementally update the +server view of flags by changing only those flags that were changed by +the user. Thus, if you set one flag on a article, quit the group and +re-select the group and remove the flag; the flag will be set and +removed from the server when you "synchronize". The queued flag +operations can be found in the per-server @code{flags} file in the Agent +directory. It's emptied when you synchronize flags. + + @node Outgoing Messages @subsection Outgoing Messages @@ -15195,16 +15519,23 @@ file names---discarding the @samp{all} elements. @findex gnus-score-find-hierarchical Apply all score files from all the parent groups. This means that you can't have score files like @file{all.SCORE}, but you can have -@file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE}. +@file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE} for each +server. @end table This variable can also be a list of functions. In that case, all these -functions will be called, and all the returned lists of score files will -be applied. These functions can also return lists of score alists -directly. In that case, the functions that return these non-file score -alists should probably be placed before the ``real'' score file -functions, to ensure that the last score file returned is the local -score file. Phu. +functions will be called with the group name as argument, and all the +returned lists of score files will be applied. These functions can also +return lists of score alists directly. In that case, the functions that +return these non-file score alists should probably be placed before the +``real'' score file functions, to ensure that the last score file +returned is the local score file. Phu. + +For example, to do hierarchical scoring but use a non-server-specific +overall score file, you could use the value +@example +(list (lambda (group) ("all.SCORE")) 'gnus-score-find-hierarchical) +@end example @item gnus-score-expiry-days @vindex gnus-score-expiry-days @@ -15578,7 +15909,7 @@ the @code{gnus-default-adaptive-score-alist} variable. For instance, it might look something like this: @lisp -(defvar gnus-default-adaptive-score-alist +(setq gnus-default-adaptive-score-alist '((gnus-unread-mark) (gnus-ticked-mark (from 4)) (gnus-dormant-mark (from 5)) @@ -16107,7 +16438,7 @@ by hand. The kill to score conversion package isn't included in Gnus by default. You can fetch it from -@file{http://www.stud.ifi.uio.no/~larsi/ding-other/gnus-kill-to-score}. +@file{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}. If your old kill files are very complex---if they contain more non-@code{gnus-kill} forms than not, you'll have to convert them by @@ -17148,6 +17479,43 @@ window is displayed vertically next to another window, you may also want to fiddle with @code{gnus-tree-minimize-window} to avoid having the windows resized. +@subsection Example Window Configurations + +@itemize @bullet +@item +Narrow left hand side occupied by group buffer. Right hand side split +between summary buffer (top one-sixth) and article buffer (bottom). + +@ifinfo +@example ++---+---------+ +| G | Summary | +| r +---------+ +| o | | +| u | Article | +| p | | ++---+---------+ +@end example +@end ifinfo + +@lisp +(gnus-add-configuration + '(article + (horizontal 1.0 + (vertical 25 (group 1.0)) + (vertical 1.0 + (summary 0.16 point) + (article 1.0))))) + +(gnus-add-configuration + '(summary + (horizontal 1.0 + (vertical 25 (group 1.0)) + (vertical 1.0 (summary 1.0 point))))) +@end lisp + +@end itemize + @node Faces and Fonts @section Faces and Fonts @@ -17516,32 +17884,11 @@ default is @code{("news.lists.filters" "news.admin.net-abuse.bulletins" @vindex gnus-nocem-issuers There are many people issuing NoCeM messages. This list says what people you want to listen to. The default is @code{("Automoose-1" -"rbraver@@ohww.norman.ok.us" "clewis@@ferret.ocunix.on.ca" -"jem@@xpat.com" "snowhare@@xmission.com" "red@@redpoll.mrfs.oh.us -(Richard E. Depew)")}; fine, upstanding citizens all of them. - -Known despammers that you can put in this list include: - -@table @samp -@item clewis@@ferret.ocunix.on.ca; -@cindex Chris Lewis -Chris Lewis---Major Canadian despammer who has probably canceled more -usenet abuse than anybody else. - -@item Automoose-1 -@cindex CancelMoose[tm] -The CancelMoose[tm] on autopilot. The CancelMoose[tm] is reputed to be -Norwegian, and was the person(s) who invented NoCeM. - -@item jem@@xpat.com; -@cindex Jem -John Milburn---despammer located in Korea who is getting very busy these -days. +"clewis@@ferret.ocunix.on.ca" "cosmo.roadkill" "SpamHippo" +"hweede@@snafu.de")}; fine, upstanding citizens all of them. -@item red@@redpoll.mrfs.oh.us (Richard E. Depew) -Richard E. Depew---lone American despammer. He mostly cancels binary -postings to non-binary groups and removes spews (regurgitated articles). -@end table +Known despammers that you can put in this list are listed at +@file{http://www.xs4all.nl/~rosalind/nocemreg/nocemreg.html}. You do not have to heed NoCeM messages from all these people---just the ones you want to listen to. You also don't have to accept all NoCeM @@ -17606,6 +17953,18 @@ The number of days before removing old NoCeM entries from the cache. The default is 15. If you make it shorter Gnus will be faster, but you might then see old spam. +@item gnus-nocem-check-from +@vindex gnus-nocem-check-from +Non-@code{nil} means check for valid issuers in message bodies. +Otherwise don't bother fetching articles unless their author matches a +valid issuer; that is much faster if you are selective about the +issuers. + +@item gnus-nocem-check-article-limit +@vindex gnus-nocem-check-article-limit +If non-@code{nil}, the maximum number of articles to check in any NoCeM +group. NoCeM groups can be huge and very slow to process. + @end table Using NoCeM could potentially be a memory hog. If you have many living @@ -18321,6 +18680,17 @@ some headers. I don't see why you'd want that, though. @vindex gnus-shell-command-separator String used to separate two shell commands. The default is @samp{;}. +@item gnus-invalid-group-regexp +@vindex gnus-invalid-group-regexp + +Regexp to match ``invalid'' group names when querying user for a group +name. The default value catches some @strong{really} invalid group +names who could possibly mess up Gnus internally (like allowing +@samp{:} in a group name, which is normally used to delimit method and +group). + +IMAP users might want to allow @samp{/} in group names though. + @end table @@ -18653,9 +19023,9 @@ supposed to be able to use these, and these are mostly discussed on the @samp{gnu.emacs.gnus} newsgroup. @cindex Incoming* -@vindex nnmail-delete-incoming +@vindex mail-source-delete-incoming Some variable defaults differ between alpha Gnusae and released Gnusae. -In particular, @code{nnmail-delete-incoming} defaults to @code{nil} in +In particular, @code{mail-source-delete-incoming} defaults to @code{nil} in alpha Gnusae and @code{t} in released Gnusae. This is to prevent lossage of mail if an alpha release hiccups while handling the mail. @@ -20939,6 +21309,20 @@ to be the child of the message you're commenting. Handle external-body parts. @item +When renaming a group name, nnmail-split-history does not get the group +name renamed. + +@item +Allow mail splitting on bodies when using advanced mail splitting. + +@lisp + (body "whatever.text") +@end lisp + +@item +Be able to run `J u' from summary buffers. + +@item Solve the halting problem. @c TODO @@ -21370,10 +21754,10 @@ Gnus will work. @item Try doing an @kbd{M-x gnus-version}. If you get something that looks -like @samp{T-gnus 6.14.* (based on Pterodactyl Gnus v0.*; for SEMI 1.1*, -FLIM 1.1*)} you have the right files loaded. If, on the other hand, you -get something like @samp{NNTP 3.x} or @samp{nntp flee}, you have some -old @file{.el} files lying around. Delete these. +like @samp{T-gnus 6.14.6 (based on Gnus v5.8.8; for SEMI 1.13, FLIM 1.13)} +you have the right files loaded. If, on the other hand, you get +something like @samp{NNTP 3.x} or @samp{nntp flee}, you have some old +@file{.el} files lying around. Delete these. @item Read the help group (@kbd{G h} in the group buffer) for a FAQ and a diff --git a/texi/gnusref.tex b/texi/gnusref.tex index 0ee9168..b8e863d 100644 --- a/texi/gnusref.tex +++ b/texi/gnusref.tex @@ -1,944 +1,1041 @@ -% include file for the Gnus refcard and booklet +% -*- mode: latex; TeX-master: "refcard.tex" -*- + % include file for the Gnus refcard and booklet \newlength{\keycolwidth} \newenvironment{keys}[1]% #1 is the widest key - {\nopagebreak%\noindent% - \settowidth{\keycolwidth}{#1}% - \addtolength{\keycolwidth}{\tabcolsep}% - \addtolength{\keycolwidth}{-\columnwidth}% - \begin{tabular}{@{}l@{\hspace{\tabcolsep}}p{-\keycolwidth}@{}}}% +{\nopagebreak%\noindent% + \settowidth{\keycolwidth}{#1}% + \addtolength{\keycolwidth}{\tabcolsep}% + \addtolength{\keycolwidth}{-\columnwidth}% + \begin{tabular}{@{}l@{\hspace{\tabcolsep}}p{-\keycolwidth}@{}}}% {\end{tabular}\\} -% uncomment the first definition if you do not want pagebreaks in maps -%\newcommand{\esamepage}{\samepage} + % 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} -} + \begin{center} + {\bf\LARGE Gnus \progver\ Reference \Guide\\} + %{\normalsize \Guide\ version \refver} + \end{center} + } \newcommand*{\Logo}[1]{\centerline{% -\makebox[\logoscale\logowidth][l]{\vbox to \logoscale\logoheight -{\vfill\special{psfile=gnuslogo.#1}}\vspace{-\baselineskip}}}} + \makebox[\logoscale\logowidth][l]{\vbox to \logoscale\logoheight + {\vfill\special{psfile=gnuslogo.#1}}\vspace{-\baselineskip}}}} \newcommand{\Copyright}{% -\begin{center} -Copyright \copyright\ 1995 Free Software Foundation, Inc.\\* -Copyright \copyright\ 1995 \author.\\* -Copyright \copyright\ 2000 Felix Natter $<$fnatter@gmx.net$>$.\\* -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. -} + \begin{center} + Copyright \copyright\ 1995 Free Software Foundation, Inc.\\* + Copyright \copyright\ 1995 \author.\\* + Copyright \copyright\ 2000 Felix Natter $<$fnatter@gmx.net$>$.\\* + 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 346 interactive (user-callable) -functions. Of these 279 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 389. 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 -\begin{keys}{C-c C-i} -M-x gnus & start Gnus. \\ -M-x gnus-no-server & start Gnus without trying to contact server. \\ -C-c C-i & Go to the Gnus online {\bf info}.\\ -C-c C-b & Send a Gnus {\bf bug} report.\\ -\end{keys} -}} + \subsection*{Notes} + {\esamepage + Gnus is complex. Currently it has some 346 interactive (user-callable) + functions. Of these 279 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 389. 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 + \begin{keys}{C-c C-i} + M-x gnus & start Gnus. \\ + M-x gnus-no-server & start Gnus without trying to connect to server + (i.e. to read mail). \\ + M-x gnus-unplugged & start Gnus in \texttt{unplugged}-mode + (first see the manual, C-c C-i g Gnus Unplugged RET).\\ + % + 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}} + 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).\\ -\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]\\ -* & Cached. [2]\\ -S & Saved. [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} -}} + {\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).\\ + \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]\\ + * & Cached. [2]\\ + S & Saved. [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: fetch 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.\\ -xx & Enter the Server buffer mode.\\ -a & Post an {\bf article} to a group.\\ -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.\\ -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 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]\\ -\end{keys} -} + \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.\\ + xx & Enter the Server buffer mode.\\ + a & Post an {\bf article} to a group.\\ + 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.\\ + 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 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]\\ + \end{keys} + } \newcommand{\ListGroups}{% -{\esamepage -\begin{keys}{A M} -A d & 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 d & List all groups that have names or {\bf descriptions} matching -a regexp.\\ -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.\\ -\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 DEL & {\bf Delete} group [Prefix: delete all articles as well].\\ -\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.\\ -\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].\\ -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}.\\ -\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}.\\ -\end{keys}}} - -\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 & Scroll this article one line forward. [distance]\\ -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-g & 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]\\ -\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) {\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}.\\ -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-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 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}.\\ -\end{keys}}} - -\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 m & {\bf Move} the article from one mail group to another. [p/p]\\ -B p & Query whether the article was 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]\\ -\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 & {\bf edit} message in draft group.\\ -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 b & Make Message-IDs and URLs in the article mouse-clickable -{\bf buttons}.\\ -W l & (w) Remove page breaks ({\bf\^{}L}) from the article.\\ -W c & Translate CRLF-pairs to LF and then the remaining CR's to LF's.\\ -W d & Treat {\bf dumbquotes}.\\ -W f & Look for and display any X-{\bf Face} headers.\\ -W m & Toggle {\bf MIME} processing.\\ -W o & Treat {\bf overstrike} or underline (\^{}H\_) in the article.\\ -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 t & (t) {\bf Toggle} display of all headers.\\ -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 W H & Strip certain {\bf headers} from body.\\ -% -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 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.\\ -\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 PGP}-signatures.\\ -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 e & {\bf Emphasize} article.\\ -% -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}{M-RET} -RET & (BUTTON-2) Toggle display of the MIME object.\\ -v & (M-RET) Prompt for a method and then view object using this method.\\ -o & Prompt for a filename and save the MIME object.\\ -c & {\bf Copy} the MIME object to a new buffer and display this buffer.\\ -t & View the MIME object as a different {\bf type}.\\ -$\mid$ & Pipe the MIME object to a process.\\ -\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 & 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}}} + {\esamepage + \begin{keys}{A M} + A d & 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 d & List all groups that have names or {\bf descriptions} matching + a regexp.\\ + 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.\\ + \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 DEL & {\bf Delete} group [Prefix: delete all articles as well].\\ + \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.\\ + \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].\\ + 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}.\\ + \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}.\\ + \end{keys} + } + } + + \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 & Scroll this article one line forward. [distance]\\ + 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-g & 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]\\ + \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) {\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}.\\ + 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-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 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}.\\ + \end{keys} + } + } + + \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 m & {\bf Move} the article from one mail group to another. [p/p]\\ + B p & Query whether the article was 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]\\ + \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 b & Make Message-IDs and URLs in the article mouse-clickable + {\bf buttons}.\\ + W l & (w) Remove page breaks ({\bf\^{}L}) from the article.\\ + W c & Translate CRLF-pairs to LF and then the remaining CR's to LF's.\\ + W d & Treat {\bf dumbquotes}.\\ + W f & Look for and display any X-{\bf Face} headers.\\ + W m & Toggle {\bf MIME} processing.\\ + W o & Treat {\bf overstrike} or underline (\^{}H\_) in the article.\\ + 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 t & (t) {\bf Toggle} display of all headers.\\ + 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 W H & Strip certain {\bf headers} from body.\\ + % + 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 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.\\ + \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 PGP}-signatures.\\ + 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 e & {\bf Emphasize} article.\\ + % + 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}{M-RET} + RET & (BUTTON-2) Toggle display of the MIME object.\\ + v & (M-RET) Prompt for a method and then view object using this method.\\ + o & Prompt for a filename and save the MIME object.\\ + c & {\bf Copy} the MIME object to a new buffer and display this buffer.\\ + t & View the MIME object as a different {\bf type}.\\ + $\mid$ & Pipe the MIME object to a process.\\ + \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 R & Mark all articles matching a {\bf regexp}.\\ -M P t & Mark 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.\\ -\end{keys}}} + {\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 R & Mark all articles matching a {\bf regexp}.\\ + M P t & Mark 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.\\ + \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]\\ -/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.\\ -/* & 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]\\ -\end{keys}}} + {\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]\\ + /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.\\ + /* & 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]\\ + \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$) Pipe this article to a shell command. [p/p]\\ -\end{keys}}} + {\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$) Pipe this article to a shell command. [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. -[Prefix: include all headers]\\ -S M-c & Send a complaint about excessive crossposting to the author of this -article. [p/p]\\ -% -S m & (m) Send {\bf a} 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 w & Mail a {\bf wide} reply to this article.\\ -S W & Mail a {\bf wide} reply to this article.\\ -S o m & (C-c C-f) Forward this article by {\bf mail} to a person. -[Prefix: include all headers]\\ -S D b & Resend {\bf bounced} mail.\\ -S D r & {\bf Resend} mail to a different person.\\ -% -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).\\ -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. -}} + {\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. + [Prefix: include all headers]\\ + S M-c & Send a complaint about excessive crossposting to the author of this + article. [p/p]\\ + % + S m & (m) Send {\bf a} 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 w & Mail a {\bf wide} reply to this article.\\ + S W & Mail a {\bf wide} reply to this article.\\ + S o m & (C-c C-f) Forward this article by {\bf mail} to a person. + [Prefix: include all headers]\\ + S D b & Resend {\bf bounced} mail.\\ + S D r & {\bf Resend} mail to a different person.\\ + % + 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).\\ + 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.\\ -% movement -T n & (M-C-f) Go to the {\bf next} thread. [distance]\\ -T p & (M-C-b) 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}}} + {\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.\\ + % movement + T n & (M-C-f) Go to the {\bf next} thread. [distance]\\ + T p & (M-C-b) 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}).\\ -V x & {\bf Expunge} all low-scored articles. [score]\\ -V C & {\bf Customize} the current score file through a user-friendly -interface.\\ -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)utor (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}}} + {\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}).\\ + V x & {\bf Expunge} all low-scored articles. [score]\\ + V C & {\bf Customize} the current score file through a user-friendly + interface.\\ + 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)utor (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} -}} + {\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 & 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}}} + {\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 & 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-t & Paste the recipient's address into \textbf{To:}-field.\\ -C-c C-n & Insert a \textbf{Newsgroups:}-header.\\ -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.\\ -\end{keys}}} + 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-t & Paste the recipient's address into \textbf{To:}-field.\\ + C-c C-n & Insert a \textbf{Newsgroups:}-header.\\ + 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.\\ + \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 & 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 & 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:}.\\ -\end{keys}}} + 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 & 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 & 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:}.\\ + \end{keys} + } + } \newcommand{\MsgCompositionMML}{% -{\esamepage -\begin{keys}{M-m P} -M-m f & (C-c C-a) Attach \textbf{file}.\\ -M-m b & Attach contents of \textbf{buffer}.\\ -M-m e & Attach \textbf{external} file (ftp..).\\ -M-m P & Create MIME-\textbf{preview} (new buffer).\\ -M-m v & \textbf{Validate} article.\\ -M-m p & Insert \textbf{part}.\\ -M-m m & Insert \textbf{multi}-part.\\ -M-m q & \textbf{Quote} region.\\ -% TODO: narrow headers (M-m n) ? -\end{keys}}} + {\esamepage + \begin{keys}{M-m P} + M-m f & (C-c C-a) Attach \textbf{file}.\\ + M-m b & Attach contents of \textbf{buffer}.\\ + M-m e & Attach \textbf{external} file (ftp..).\\ + M-m P & Create MIME-\textbf{preview} (new buffer).\\ + M-m v & \textbf{Validate} article.\\ + M-m p & Insert \textbf{part}.\\ + M-m m & Insert \textbf{multi}-part.\\ + M-m q & \textbf{Quote} region.\\ + % TODO: narrow headers (M-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.\\ -\end{keys}}} + {\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.\\ + \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}}} + {\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 current group.\\ + J s & Fetch articles from all groups for offline-reading.\\ + 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].\\ + \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}).\\ + \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} + } + } diff --git a/texi/message-ja.texi b/texi/message-ja.texi index 8f551d7..b8721c5 100644 --- a/texi/message-ja.texi +++ b/texi/message-ja.texi @@ -5,57 +5,59 @@ @synindex fn cp @synindex vr cp @synindex pg cp -@c @direntry -@c * Message: (message). Mail and news composition mode that goes with Gnus. -@c @end direntry +@dircategory Editors +@direntry +* Message-ja: (message-ja). Mail and news composition mode that goes + with Gnus (Japanese). +@end direntry @iftex @finalout @end iftex @setchapternewpage odd -@ifinfo +@ifnottex -This file documents Message, the Emacs message composition mode. +This file documents Message, the Emacs message composition mode. $B$3$N%U%!%$%k$O(B Emacs $B$N%a%C%;!<%8:n@.%b!<%I$G$"$k(B Message $B$K4X$9$k@bL@J8(B $B=q$G$9!#(B -Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -$BCx:n8"I=<($H$3$N5v2DJ8$,$9$Y$F$NJ#@=$KB8:_$9$k8B$j!"$3$N@bL@=q$N$^$C$?$/(B -$BF10l$NJ#@=$r:n$j!"G[I[$9$k$3$H$r5v2D$9$k!#(B - -@ignore -Permission is granted to process this file through Tex and print the -results, provided the printed document carries copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). - -$B$3$NCJMn$,H$5$l$^$;$s(B)$B!#(B - -@end ignore -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. +Copyright (C) 1996,97,98,99,2000 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License''. + +$B$3$NJ8=q$r!"%U%j!<%=%U%H%&%'%":bCDH/9T$N(B GNU $B%U%j!r7o$N2<$GJ#@=!"G[I[!"$"$k$$$OJQ99$9(B +$B$k$3$H$r5v2D$7$^$9!#JQ99IT2DItJ,$O;XDj$7$^$;$s!#!V(BA GNU Manual$B!W$OI=I=;f(B +$B%F%-%9%H!"0J2<$N(B (a) $B$ON"I=;f%F%-%9%H$G$9!#$3$NMxMQ5vBz7@Ls=q$NJ#O$K4^$^$l$F$$$^(B +$B$9!#(B -$BF10lJ#@=$N>r7o$N2<$G!"$=$l$K$h$C$FF@$i$l$?7k2L$b$3$N5v2DJ8$NI=<($HF10l$N(B -$B>r7o$N$b$H$GG[I[$9$k8B$j!"$3$N@bL@=q$N=$@5HG$NJ#@=$r$7!"G[I[$9$k$3$H$r5v(B -$B2D$9$k!#(B +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. +(a) FSF $B$NN"I=;f%F%-%9%H(B:$B!V$"$J$?$K$O$3$N(B GNU Manual $B$r(B GNU $B%=%U%H%&%'%"(B +$B$N$h$&$KJ#@=$7$?$jJQ99$9$k<+M3$,$"$j$^$9!#J#@=$O%U%j!<%=%U%H%&%'%":bCD$K(B +$B$h$C$F=PHG$5$l$^$7$?!#(B($B%U%j!<%=%U%H%&%'%":bCD$O(B) GNU $B$N3+H/$N$?$a$KI,MW(B +$B$J;q6b$r=8$a$F$$$^$9!#!W(B -$B>e5-$N=$@5HG$K4X$9$k>r7o$N2<$G!"$3$N@bL@=q$NK]Lu$NJ#@=$r:n$j!"G[I[$9$k$3(B -$B$H$r5v2D$9$k!#(B +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. -@end ifinfo +$B$3$NJ8=q$O!V(BGNU $B%U%j!r7o$N2<$GJ#@=!"G[I[!"$"$k$$$OJQ99$9(B +$B$k$3$H$r5v2D$7$^$9!#JQ99IT2DItJ,$O;XDj$7$^$;$s!#!V(BA GNU Manual$B!W$OI=I=;f(B +$B%F%-%9%H!"0J2<$N(B (a) $B$ON"I=;f%F%-%9%H$G$9!#$3$NMxMQ5vBz7@Ls=q$NJ#O$K4^$^$l$F$$$^(B +$B$9!#(B -$BF10lJ#@=$N>r7o$N2<$G!"$=$l$K$h$C$FF@$i$l$?7k2L$r$3$N5v2DJ8$NI=<($HF10l$N(B -$B>r7o$N$b$H$GG[I[$9$k8B$j!"$3$N@bL@=q$N=$@5HG$NJ#@=$r$7!"G[I[$9$k$3$H$r5v(B -$B2D$9$k!#(B +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. +(a) FSF $B$NN"I=;f%F%-%9%H(B:$B!V$"$J$?$K$O$3$N(B GNU Manual $B$r(B GNU $B%=%U%H%&%'%"(B +$B$N$h$&$KJ#@=$7$?$jJQ99$9$k<+M3$,$"$j$^$9!#J#@=$O%U%j!<%=%U%H%&%'%":bCD$K(B +$B$h$C$F=PHG$5$l$^$7$?!#(B($B%U%j!<%=%U%H%&%'%":bCD$O(B) GNU $B$N3+H/$N$?$a$KI,MW(B +$B$J;q6b$r=8$a$F$$$^$9!#!W(B -$B>e5-$N=$@5HG$K4X$9$k>r7o$N2<$G!"$3$N@bL@=q$NK]Lu$NJ#@=$r:n$j!"G[I[$9$k$3(B -$B$H$r5v2D$9$k!#(B +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. +$B$3$NJ8=q$O!V(BGNU $B%U%j!J}(B) $B$O%a%C%;!< $B%I%P%C%U%!$G9T$o$l$^$9!#(B @menu -* Interface:: $B%a%C%;!<%8%P%C%U%!$r@_Dj$9$k!#(B -* Commands:: $B%a%C%;!<%8%b!<%I%P%C%U%!$GAw!"C$7(B -- $B$=$N%W%m%0%i%`(B ($B$b$7$/$O?M(B) $B$O%a%C%;!<%8$,$"$k%P%C(B -$B%U%!$K%]%$%s%H$rF~$l$FI,MW$JL?Na$r8F$S=P$9$@$1$GNI$$$Y$-$G$9!#$=$&$9$k$H(B -@code{Message} $B$O?7$7$$(B @code{message} $B%b!<%I%P%C%U%!$rE,@Z$J%X%C%@!<$r(B -$BF~$l$F:n$j=P$7!"MxMQC$9!#(B -* Superseding:: $B%a%C%;!<%8$NBeBX!#(B -* Forwarding:: $B%a%C%;!<%8$r%K%e!<%9$b$7$/$O%a!<%k$GE>Aw$9$k!#(B -* Resending:: $B%a!<%k%a%C%;!<%8$r:FAw$9$k!#(B -* Bouncing:: $B%a!<%k%a%C%;!<%8$N<:GT$r:FAw$9$k!#(B +* New News Message:: $BA4$/?7$7$$%K%e!<%9%a%C%;!<%8$rJT=8$9$k(B +* Reply:: $B%a!<%k$GJVEz$9$k(B +* Wide Reply:: $BA4$F$N?M$K%a!<%k$G1~Ez$9$k(B +* Followup:: $B%K%e!<%9$G%U%)%m!<%"%C%W$9$k(B +* Canceling News:: $B?7$7$$5-;v$rC$9(B +* Superseding:: $B%a%C%;!<%8$NBeBX(B +* Forwarding:: $B%a%C%;!<%8$r%K%e!<%9$b$7$/$O%a!<%k$GE>Aw$9$k(B +* Resending:: $B%a!<%k%a%C%;!<%8$r:FAw$9$k(B +* Bouncing:: $B%a!<%k%a%C%;!<%8$N<:GT$r:FAw$9$k(B @end menu - @node New Mail Message @section $B?7$7$$%a!<%k%a%C%;!<%8(B @@ -145,9 +156,8 @@ Gnus $B$NA4$F$N%a%C%;!<%8$N:n@.(B ($B%a!<%k$H%K%e!<%9$NN>J}(B) $B$O%a%C%;!< @code{message-mail} $BL?Na$O?7$7$$%P%C%U%!$r:n$jI=<($7$^$9!#(B 2$B$D$NA*Br<+M3$J0z?t$,J}(B) $B$O%a%C%;!< @findex message-news $BL?Na(B @code{message-news} $B$O?7$7$$%a%C%;!<%8%P%C%U%!$r:n$j!"I=<($7$^$9!#(B -$B$3$N4X?t$O(B2$B$D$NA*Br<+M3$J0z?t$rl9g$O!"$=$l$>$l$NMWAG$O(B -cons $B%;%k$G$"$k$Y$-$G!"$=$l$N(B car $B$O%X%C%@!<$NL>A0(B ($BNc(B @code{Cc}) $B$G!"(B +$B$3$N4X?t$O%j%9%H$rJV$9;v$b$G$-$^$9!#$=$N$h$&$J>l9g$O!"$=$l$>$l$NMWAG(B +$B$O(B cons $B%;%k$G$"$k$Y$-$G!"$=$l$N(B car $B$O%X%C%@!<$NL>A0(B ($BNc(B @code{Cc}) $B$G!"(B cdr $B$,%X%C%@!<$NCM(B ($BNc(B @samp{larsi@@ifi.uio.no}) $B$G$"$k$Y$-$G$9!#A4$F$N(B $B$3$l$i$N%X%C%@!<$O=P$F9T$/%a!<%k$N%X%C%@!<$KA^F~$5$l$^$9!#(B - @node Wide Reply @section $B9-$/JVEz(B @@ -214,12 +222,10 @@ Message $B$OJVEz$,2?=h$K9T$/$+$r7hDj$9$k$?$a$KIaDL$NJ}K!$r;H$$$^$9$,!"(B $BJQ99$9$k;v$,$G$-$^$9!#$=$l$O(B @code{message-reply-to-function} $B$HF1$8$h$&(B $B$K;H$o$l$^$9(B (@pxref{Reply})$B!#(B - @findex message-dont-reply-to-names -$B@55,I=8=(B @code{rmail-dont-reply-to-names} $B$K9gCW$9$k%"%I%l%9$O(B @code{Cc} +$B@55,I=8=(B @code{rmail-dont-reply-to-names} $B$K9gCW$9$k%"%I%l%9$O(B @code{Cc} $B%X%C%@!<$+$iC$9(B @findex message-cancel-news $BL?Na(B @code{message-cancel-news} $B$O8=:_$N%P%C%U%!$N5-;v$rC$7$^$9!#(B - @node Superseding @section $BBeBX(B @@ -257,11 +261,10 @@ Message $B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"(B @vindex message-ignored-supersede-headers @code{message-ignored-supersedes-headers} $B$K9gCW$9$k%X%C%@!<$O?7$7$$%a%C(B -$B%;!<%8%P%C%U%!$r:n$j>e$2$kA0$Ke$2$kA0$KAw(B @@ -271,14 +274,13 @@ Message $B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"(B $B%K%e!<%9$r;H$$$^$9!#(B @table @code -@item message-ignored-forward-headers -@vindex message-ignored-forward-headers +@item message-forward-ignored-headers +@vindex message-forward-ignored-headers $B$3$N@55,I=8=$K9gCW$9$k$9$Y$F$N%X%C%@!<$,!"E>Aw$5$l$k%a%C%;!<%8$+$i:o=|$5(B $B$l$^$9!#(B @end table - @node Resending @section $B:FAw(B @@ -290,7 +292,6 @@ Message $B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"(B $B@55,I=8=(B @code{message-ignored-resent-headers} $B$K9gCW$9$k%X%C%@!<$O%a%C(B $B%;!<%8$rAw$kA0$Ke$2$kA0$Ke$2$kA0$K$r;H$&$+!#(B +* Various Commands:: $B$$$m$$$m$J;v(B +* Sending:: $B$r;H$&$+(B +* Spelling:: Emacs $B$K%9%Z%k%A%'%C%/$5$;$k(B @end menu +@node Buffer Entry +@section $B%P%C%U%!$KF~$k(B +@cindex undo +@kindex C-_ + +$B2?$+B>$N%a%C%;!<%8$KJVEz$9$k$H$-!"$"$J$?$O$?$$$F$$%a%C%;!<%8%P%C%U%!$G=q(B +$B$->e$2$^$9$h$M!#(BMessage $B$OB?$/$N0zMQJ8$r07$$!"=pL>$N:o=|$dJ8>O$N@07A$r$7(B +$B$?$j!"$"$k$$$O$"$?$J$,;H$C$F$$$k@_Dj$K0MB8$7$F$$$^$9!#(BMessage $B$OIaDL$O$&(B +$B$^$/F0:n$7$^$9$,!"$H$-$I$-4V0c$($b$7$^$9!#$=$l$i$N4V0c$$$r%f!<%6$,@5$9$3(B +$B$H$,$G$-$k$h$&$K!"(BMessage $B$O$=$l$>$lo(B @kbd{C-_}) $B$r2!$;$P!"L$(B +$BJT=8$N%a%C%;!<%8$KLa$9$3$H$,$G$-$^$9!#(B @node Header Commands @section $B%X%C%@!O$r$R$I$/$0$A$c$0$A$c$K$7$F$7$^$&$+$b$7$l$^$;$s!#$=(B -$B$l$,0BA4$G$"$k$HCN$k$H!"$9$0$K?M?4CO$D$/$G$7$g$&$,!#$H$K$+$/!"(B@kbd{C-x -u} (@code{undo}) $B$,;HMQ2DG=$G!"Bg>fIW$G$"$k$H8@$&;v$r3P$($F$*$$$F2<$5$$!#(B - +$BE=$jIU$1$i$l$?%a%C%;!<%8$r@^$jJV$7$^(B +$B$9(B (@code{message-fill-yanked-message})$B!#7Y9p(B: $B$b$7!"0zMQ$N=,47$,JQ$G$"(B +$B$k$J$i!"E=$jIU$1$i$l$?J8>O$r$R$I$/$0$A$c$0$A$c$K$7$F$7$^$&$+$b$7$l$^$;$s!#(B +$B$=$l$,0BA4$G$"$k$HCN$k$H!"$9$0$K?M?4CO$D$/$G$7$g$&$,!#$H$K$+$/!"(B +@kbd{C-x u} (@code{undo}) $B$,;HMQ2DG=$G!"Bg>fIW$G$"$k$H8@$&;v$r3P$($F$*$$(B +$B$F2<$5$$!#(B @item C-c C-w @kindex C-c C-w @@ -456,8 +467,9 @@ u} (@code{undo}) $B$,;HMQ2DG=$G!"Bg>fIW$G$"$k$H8@$&;v$r3P$($F$*$$$F2<$5$$!#(B @item message-citation-line-function @vindex message-citation-line-function -$B0zMQ9T$rA^F~$9$k$?$a$K8F$P$l$k4X?t$G$9!#=i4|CM$O(B -@code{message-insert-citation-line} $B$G!"$3$l$O0zMQ9T$r writes: @@ -470,26 +482,26 @@ Hallvard B Furuseth writes: @cindex yanking @cindex quoting $B$"$J$?$,5-;v$KJVEz$+%U%)%m!<%"%C%W$r$7$F$$$k$H$-$O!"IaDL$O$"$J$?$,1~Ez$7(B -$B$F$$$k?M$N$b$N$K0zMQId$rIU$1$?$$$G$7$g$&!#0zMQJ8$NA^F~$O(B @dfn{$BE=$jIU$1(B} -$B$K$h$C$F$J$5$l!"$=$l$>$l$NE=$jIU$1$i$l$?0zMQ9T$O$=$NA0$K(B -@code{message-yank-prefix} $B$rIU$1$i$l$^$9!#=i4|CM$O(B @samp{> } $B$G$9!#(B +$B$F$$$k?M$N$b$N$K0zMQId$rIU$1$?$$$G$7$g$&!#0zMQJ8$NA^F~$O(B @dfn{$BE=$jIU$1(B} +$B$K$h$C$F$J$5$l!"$=$l$>$l$NE=$jIU$1$i$l$?0zMQ9T$O$=$NA0(B +$B$K(B @code{message-yank-prefix} $B$rIU$1$i$l$^$9!#=i4|CM$O(B @samp{> } $B$G$9!#(B @item message-yank-add-new-references @vindex message-yank-add-new-references @cindex yanking -$B%3%^%s%I(B @code{message-yank-original} $B$rBPOCE*$K;H$C$?$H$-$K!"$3$NCM$,(B -@code{nil} $B$G$J$+$C$?$i!"(BReferences $B%U%#!<%k%I$K(B ID $B$,DI2C$5$l$^$9!#$b(B -$B$7CM$,%7%s%\%k(B @code{message-id-only} $B$@$C$?$i(B Message-ID $B%U%#!<%k%I$N(B -ID $B$@$1$,;H$o$l$^$9$,!"$=$&$G$J$1$l$P(B References$B!"(BIn-Reply-To $B$*$h$S(B -Message-ID $B%U%#!<%k%I$+$iCj=P$5$l$?(B ID $B$,;H$o$l$^$9!#(B +$B%3%^%s%I(B @code{message-yank-original} $B$rBPOCE*$K;H$C$?$H$-$K!"$3$NCM(B +$B$,(B @code{nil} $B$G$J$+$C$?$i!"(BReferences $B%U%#!<%k%I$K(B ID $B$,DI2C$5$l$^$9!#(B +$B$b$7CM$,%7%s%\%k(B @code{message-id-only} $B$@$C$?$i(B Message-ID $B%U%#!<%k%I(B +$B$N(B ID $B$@$1$,;H$o$l$^$9$,!"$=$&$G$J$1$l$P(B References$B!"(BIn-Reply-To $B$*$h(B +$B$S(B Message-ID $B%U%#!<%k%I$+$iCj=P$5$l$?(B ID $B$,;H$o$l$^$9!#(B @item message-list-references-add-position @vindex message-list-references-add-position @cindex yanking $B%3%^%s%I(B @code{message-yank-original} $B$rBPOCE*$K;H$C$?$H$-$K!"$3$NCM$,(B -$B@5$N@0?t$@$C$?$i!"$9$G$K$"$k(B References $B%U%#!<%k%I$N:G8e$+$i$=$N8D?t$N(B -ID $B$@$1N%$l$?>l=j$K?7$7$$(B ID $B$,A^F~$5$l$^$9!#$=$l0J30$N>l9g$O:G8e$KA^F~(B -$B$5$l$^$9!#(B +$B@5$N@0?t$@$C$?$i!"$9$G$K$"$k(B References $B%U%#!<%k%I$N:G8e$+$i$=$N8D?t(B +$B$N(B ID $B$@$1N%$l$?>l=j$K?7$7$$(B ID $B$,A^F~$5$l$^$9!#$=$l0J30$N>l9g$O:G8e$KA^(B +$BF~$5$l$^$9!#(B @item message-indentation-spaces @vindex message-indentation-spaces @@ -504,16 +516,16 @@ ID $B$@$1N%$l$?>l=j$K?7$7$$(B ID $B$,A^F~$5$l$^$9!#$=$l0J30$N>l9g$O:G8e$KA^F~ $BK\5-;v$r0zMQ$9$k$?$a$N4X?t$G$9!#=i4|CM$O(B @code{message-cite-original} $B$G!"(B $B$3$l$OC1=c$K$b$H$N%a%C%;!<%8$rA^F~$7!"$=$l$>$l$N9T$NF,$K(B @samp{> } $B$r$/$C(B $B$D$1$^$9!#(B@code{message-cite-original-without-signature} $B$OF1MM$N;v$r$7(B -$B$^$9$,!"=pL>$O>J$-$^$9!#(BSupercite $B$r;H$&$?$a$K!"$=$l$r(B -@code{sc-cite-original} $B$K@_Dj$9$k;v$b$G$-$^$9!#(B +$B$^$9$,!"=pL>$O>J$-$^$9!#(BSupercite $B$r;H$&$?$a$K!"$=$l(B +$B$r(B @code{sc-cite-original} $B$K@_Dj$9$k;v$b$G$-$^$9!#(B @item message-indent-citation-function @vindex message-indent-citation-function $B$A$g$&$I%a!<%k%P%C%U%!$KA^F~$5$l$?0zMQJ8$r=$@5$9$k$?$a$N4X?t$G$9!#$3$l$O(B -$B4X?t$N%j%9%H$G$"$k;v$b$G$-$^$9!#$=$l$>$l$N4X?t$O(B @code{(point)} $B$H(B -@code{(mark t)} $B$N4V$G0zMQ$rH/8+$9$k;v$,$G$-$^$9!#$=$7$F!"$=$l$>$l$N4X?t(B -$B$O0zMQJ8$,=$@5$5$l$k$H!"$=$N<~$j$K%]%$%s%H$H%^!<%/$r;D$5$J$1$l$P$J$j$^$;(B -$B$s!#(B +$B4X?t$N%j%9%H$G$"$k;v$b$G$-$^$9!#$=$l$>$l$N4X?t(B +$B$O(B @code{(point)} $B$H(B @code{(mark t)} $B$N4V$G0zMQ$rH/8+$9$k;v$,$G$-$^$9!#(B +$B$=$7$F!"$=$l$>$l$N4X?t$O0zMQJ8$,=$@5$5$l$k$H!"$=$N<~$j$K%]%$%s%H$H%^!<%/(B +$B$r;D$5$J$1$l$P$J$j$^$;$s!#(B @item message-signature @vindex message-signature @@ -525,8 +537,8 @@ ID $B$@$1N%$l$?>l=j$K?7$7$$(B ID $B$,A^F~$5$l$^$9!#$=$l0J30$N>l9g$O:G8e$KA^F~ @item messsage-signature-file @vindex message-signature-file -$B%P%C%U%!$N:G8e$KA^F~$5$l$k=pL>$NF~$C$F$$$k%U%!%$%k$G$9!#=i4|CM$O(B -@samp{~/.signature} $B$G$9!#(B +$B%P%C%U%!$N:G8e$KA^F~$5$l$k=pL>$NF~$C$F$$$k%U%!%$%k$G$9!#=i4|CM(B +$B$O(B @samp{~/.signature} $B$G$9!#(B @end table @@ -561,7 +573,6 @@ RFC1036bis $B$O!"=pL>$O$=$NA0$K(B @samp{-- } $B$N(B3$BJ8;z$@$1$N9T$,$"$k$Y$ @c language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME @c Manual}). - @node Various Commands @section $B$$$m$$$m$JL?Na(B @@ -570,28 +581,29 @@ RFC1036bis $B$O!"=pL>$O$=$NA0$K(B @samp{-- } $B$N(B3$BJ8;z$@$1$N9T$,$"$k$Y$ @item C-c C-r @kindex C-c C-r @findex message-caesar-buffer-body -$B8=:_$N%a%C%;!<%8$r%7!<%6!(B rot13) $B$7$^$9(B -(@code{message-caesar-buffer-body})$B!#$b$7HO0O8BDj$,$5$;$k(B -$B$+$r;XDj$7$^$9!#=i4|CM$O(B 13 $B$G$9!#(B +$B8=:_$N%a%C%;!<%8$r%7!<%6!(B rot13) $B$7$^(B +$B$9(B (@code{message-caesar-buffer-body})$B!#$b$7HO0O8BDj$,$5(B +$B$;$k$+$r;XDj$7$^$9!#=i4|CM$O(B 13 $B$G$9!#(B @item C-c C-e @kindex C-c C-e @findex message-elide-region $B%]%$%s%H$H%^!<%/$N4V$NJ8$r>J$-$^$9(B (@code{message-elide-region})$B!#J8>O$O(B -$B@Z$i$l$F(B (killed) $B>JN,Id9f(B (@samp{[...]} $B$,$=$N>l=j$KA^F~$5$l$^$9!#(B +$B@Z$i$l$F(B (killed) $BJQ?t(B @code{message-elide-ellipsis} $B$NCM$GCV$-49$($i$l(B +$B$^$9!#%G%#%U%)%k%H$N>JN,Id9f$H$7$F;H$o$l$kCM$O(B (@samp{[...]}) $B$G$9!#(B @item C-c C-z @kindex C-c C-x @findex message-kill-to-signature -$B=pL>$^$G$+!"$=$l$,L5$1$l$P5-;v$N:G8e$^$G$NA4$F$NJ8$r@Z$j$^$9(B -(@code{message-kill-to-signature})$B!#(B +$B=pL>$^$G$+!"$=$l$,L5$1$l$P5-;v$N:G8e$^$G$NA4$F$NJ8$r@Z$j$^(B +$B$9(B (@code{message-kill-to-signature})$B!#(B @item C-c C-v @kindex C-c C-v @findex message-delete-not-region -$B%a%C%;!<%8$NK\BN$N%j!<%8%g%s$N30$NA4$F$NJ8$r>C5n$7$^$9(B -(@code{message-delete-not-region})$B!#(B +$B%a%C%;!<%8$NK\BN$N%j!<%8%g%s$N30$NA4$F$NJ8$r>C5n$7$^(B +$B$9(B (@code{message-delete-not-region})$B!#(B @item M-RET @kindex M-RET @@ -621,16 +633,16 @@ RFC1036bis $B$O!"=pL>$O$=$NA0$K(B @samp{-- } $B$N(B3$BJ8;z$@$1$N9T$,$"$k$Y$ @item C-c C-t @kindex C-c C-t @findex message-insert-to -$B%U%)%m!<%"%C%W$7$h$&$H$9$k%a%C%;!<%8$N(B @code{Reply-To} $B$b$7$/$O(B -@code{From} $B%X%C%@!<$r4^$`(B @code{To} $B%X%C%@!<$rA^F~$7$^$9(B -(@code{message-insert-to})$B!#(B +$B%U%)%m!<%"%C%W$7$h$&$H$9$k%a%C%;!<%8$N(B @code{Reply-To} $B$b$7$/(B +$B$O(B @code{From} $B%X%C%@!<$r4^$`(B @code{To} $B%X%C%@!<$rA^F~$7$^(B +$B$9(B (@code{message-insert-to})$B!#(B @item C-c C-n @kindex C-c C-n @findex message-insert-newsgroups $BJVEz$7$F$$$k5-;v$N(B @code{Followup-To} $B$b$7$/$O!"(B@code{Nesgroups} $B%X%C%@!<(B -$B$rH?1G$7$?(B @code{Newsgroups} $B%X%C%@!<$rA^F~$7$^$9(B -(@code{message-insert-newsgroups})$B!#(B +$B$rH?1G$7$?(B @code{Newsgroups} $B%X%C%@!<$rA^F~$7$^(B +$B$9(B (@code{message-insert-newsgroups})$B!#(B @item C-c M-r @kindex C-c M-r @@ -640,7 +652,6 @@ RFC1036bis $B$O!"=pL>$O$=$NA0$K(B @samp{-- } $B$N(B3$BJ8;z$@$1$N9T$,$"$k$Y$ @end table - @node Sending @section $BAw?.(B @@ -648,8 +659,8 @@ RFC1036bis $B$O!"=pL>$O$=$NA0$K(B @samp{-- } $B$N(B3$BJ8;z$@$1$N9T$,$"$k$Y$ @item C-c C-c @kindex C-c C-c @findex message-send-and-exit -$B%a%C%;!<%8$rAw?.$7!"8=:_$N%P%C%U%!$rKd$a$^$9(B -(@code{message-send-and-exit})$B!#(B +$B%a%C%;!<%8$rAw?.$7!"8=:_$N%P%C%U%!$rKd$a$^(B +$B$9(B (@code{message-send-and-exit})$B!#(B @item C-c C-s @kindex C-c C-s @@ -668,8 +679,6 @@ RFC1036bis $B$O!"=pL>$O$=$NA0$K(B @samp{-- } $B$N(B3$BJ8;z$@$1$N9T$,$"$k$Y$ @end table - - @node Mail Aliases @section $B%a!<%kJLL>(B @cindex mail aliases @@ -696,24 +705,66 @@ alias ding "ding@@ifi.uio.no (ding mailing list)" $B%a%C%;!<%8$rAw$k$H$-$K$O?-D%$O9T$o$l$^$;$s(B---$BA4$F$N?-D%$OL@<(E*$K9T$o$l(B $B$J$/$F$O$J$j$^$;$s!#(B +@node Spelling +@section Emacs $B$K%9%Z%k%A%'%C%/$5$;$k(B +@cindex spelling +@findex ispell-message + +Emacs $B$G%9%Z%k%A%'%C%/$9$k$?$a$KIa5Z$7$F$$$kFs$D$NJ}K!!"(B +@code{ispell} $B$H(B @code{flyspell} $B$,$"$j$^$9!#(B@code{ispell} $B$NJ}$O@N$+$i(B +$B$"$C$F!"$?$V$s$h$j0lHLE*$J%Q%C%1!<%8$G$9!#$"$J$?$ONc$K$h$C$F:G=i$K%a%C%;!<(B +$B%8$r=q$$$F$+$iA4BN$r(B @code{ispell} $B$KDL$7!"$9$Y$F$N=q$-B;$8$r=$@5$7$^$9!#(B +$B%a%C%;!<%8$rAw?.$9$k$H$-$K$=$l$r<+F0E*$K9T$J$&$?$a$K$O!"(B.emacs $B%U%!%$%k(B +$B$K0J2<$N$h$&$J$b$N$rF~$l$F2<$5$$!#(B + +@lisp +(add-hook 'message-send-hook 'ispell-message) +@end lisp + +@vindex ispell-message-dictionary-alist +$B$b$7$"$J$?$,0c$&8@8l$G=q$/=,47$J$i$P!"$=$l$OJQ(B +$B?t(B @code{ispell-message-dictionary-alist} $B$G@)8f$G$-$^$9!#(B + +@lisp +(setq ispell-message-dictionary-alist + '(("^Newsgroups:.*\\bde\\." . "deutsch8") + (".*" . "default"))) +@end lisp + +@code{ispell} $B$O%$%s%9%H!<%k$5$l$?(B @samp{ispell} $B%3%^%s%I$K0MB8$7$F$$$^(B +$B$9!#(B + +$B$b$&0lJ}$NIa5Z$7$F$$$kJ}K!$O(B @code{flyspell} $B$r;H$&$3$H$G$9!#$3$N%Q%C%1!<(B +$B%8$O$"$J$?$,=q$$$F$$$k:GCf$K%9%Z%k%A%'%C%/$r9T$J$$!"$$$m$s$JJ}K!$G4V0c$C(B +$B$?%9%Z%k$N8l$r;XE&$7$F$/$l$^$9!#(B + +@code{flyspell} $B$r;H$&$K$O!"0J2<$N$h$&$J$b$N$r(B .emacs $B%U%!%$%k$KF~$l$F2<(B +$B$5$$!#(B +@lisp +(defun my-message-setup-routine () + (flyspell-mode 1)) +(add-hook 'message-setup-hook 'my-message-setup-routine) +@end lisp + +@code{flyspell} $B$O%$%s%9%H!<%k$5$l$?(B @samp{ispell} $B%3%^%s%I$K0MB8$7$F$$$^(B +$B$9!#(B @node Variables @chapter $BJQ?t(B @menu -* Message Headers:: $B0lHLE*$J%a%C%;!<%8%X%C%@!<$N$h$&$J$b$N!#(B -* Mail Headers:: $B%a!<%k%X%C%@!<$r%+%9%?%^%$%:$9$k!#(B -* Mail Variables:: $BB>$N%a!<%kJQ?t!#(B -* News Headers:: $B%K%e!<%9%X%C%@!<$r%+%9%?%^%$%:$9$k!#(B -* News Variables:: $BB>$N%K%e!<%9JQ?t!#(B -* Various Message Variables:: $BB>$N%a%C%;!<%8JQ?t!#(B -* Sending Variables:: $BAw?.$9$k$?$a$NJQ?t!#(B -* Message Buffers:: Message $B$,$=$N%P%C%U%!$NL>A0$rIU$1$kJ}K!!#(B -* Message Actions:: $B=*N;$9$k$H$-$K$N%a!<%kJQ?t(B +* News Headers:: $B%K%e!<%9%X%C%@!<$r%+%9%?%^%$%:$9$k(B +* News Variables:: $BB>$N%K%e!<%9JQ?t(B +* Various Message Variables:: $BB>$N%a%C%;!<%8JQ?t(B +* Sending Variables:: $BAw?.$9$k$?$a$NJQ?t(B +* Message Buffers:: Message $B$,$=$N%P%C%U%!$NL>A0$rIU$1$kJ}K!(B +* Message Actions:: $B=*N;$9$k$H$-$Ko$K@Q6KE*$G$9!#$=$l$O$N%0%k!<%W$K:F$SEj9F$9$k;v$K7hDj$7$?$N$G!"(B @code{*post-buf*} $B%P%C%U%!$KLa$j!"(B@code{Newsgroups} $B9T$rJT=8$7!":F$SAw$j(B -$B=P$7$?$H$7$^$9!#=i4|@_Dj$G$O!"$3$NJQ?t$OA0$K:n@.$5$l$?8E$$(B -@code{Message-ID} $B$,o$K@Q6KE*$G$9!#$=$l$Ol9g$O$3$NJQ?t$r$3$l$i$N@\F,8l(B -$B$K9g$&$h$&$J@55,I=8=$K@_Dj$9$k$G$7$g$&!#;d<+?H$O!"$=$N$h$&$J5,3J$K=>$o$J(B -$B$$%a!<%k$O$?$@l9g$O$3$NJQ?t$r$3$l$i$N@\F,8l$K9g$&$h$&$J@55,I=8=$K@_Dj$9$k$G$7$g$&!#(B +$B;d<+?H$O!"$=$N$h$&$J5,3J$K=>$o$J$$%a!<%k$O$?$@l9g$O$=$NJ8;zNs$,;H$o$l$^$9(B)$B!"4X?t$G$"$k;v$b$G$-$^$9(B -($B$=$N4X?t$O0z?tL5$7$G8F$P$l!";H$o$l$kJ8;zNs$rJV$9I,MW$,$"$j$^$9(B)$B!#(B +$B$k;v$b$G$-(B ($B$=$N>l9g$O$=$NJ8;zNs$,;H$o$l$^$9(B)$B!"4X?t$G$"$k;v$b$G$-$^(B +$B$9(B ($B$=$N4X?t$O0z?tL5$7$G8F$P$l!";H$o$l$kJ8;zNs$rJV$9I,MW$,$"$j$^$9(B)$B!#(B @item Lines @cindex Lines @@ -871,10 +927,11 @@ Lines (optional . X-Mailer))} $B$G$9!#(B @findex system-name @cindex Sun $B$3$NI,MW$J%X%C%@!<$O(B Message $B$K$h$j:n@.$5$l$^$9!#F|IU!";~4V!"MxMQ!"(B -$B%7%9%F%`L>$K4p$E$$$?B>$KL5$$(B ID $B$,:n@.$5$l$^$9!#(BMessage $B$O(B -@code{system-name} $B$r%7%9%F%`L>$r7h$a$k$?$a$K;H$$$^$9!#$b$7$3$l$,(B fully -qualified domain name (FQDN) ($B40A4$K>r7o$rK~$?$7$?%I%a%$%sL>(B) $B$G$J$$$J$i(B -$B$P!"(BMessage $B$O(B @code{mail-host-address} $B$r(B FQDN $B$H$7$F;H$$$^$9!#(B +$B%7%9%F%`L>$K4p$E$$$?B>$KL5$$(B ID $B$,:n@.$5$l$^$9!#(B +Message $B$O(B @code{system-name} $B$r%7%9%F%`L>$r7h$a$k$?$a$K;H$$$^$9!#$b$7$3(B +$B$l$,(B fully qualified domain name (FQDN) ($B40A4$K>r7o$rK~$?$7$?%I%a%$%s(B +$BL>(B) $B$G$J$$$J$i(B $B$P!"(BMessage $B$O(B @code{mail-host-address} $B$r(B FQDN $B$H$7$F;H(B +$B$$$^$9!#(B @item X-Newsreader @cindex X-Nesreader @@ -999,15 +1056,14 @@ qualified domain name (FQDN) ($B40A4$K>r7o$rK~$?$7$?%I%a%$%sL>(B) $B$G$J$$$J$ @end table - @node News Variables @section $B?7$7$$JQ?t(B @table @code @item message-send-news-function @vindex message-send-news-function -$B8=:_$N%P%C%U%!$r%K%e!<%9$H$7$FAw$k$?$a$K;H$o$l$k4X?t$G$9!#=i4|CM$O(B -@code{mesage-send-news} $B$G$9!#(B +$B8=:_$N%P%C%U%!$r%K%e!<%9$H$7$FAw$k$?$a$K;H$o$l$k4X?t$G$9!#=i4|CM(B +$B$O(B @code{mesage-send-news} $B$G$9!#(B @item message-post-method @vindex message-post-method @@ -1016,7 +1072,6 @@ qualified domain name (FQDN) ($B40A4$K>r7o$rK~$?$7$?%I%a%$%sL>(B) $B$G$J$$$J$ @end table - @node Various Message Variables @section $B$$$m$$$m$J%a%C%;!<%8JQ?t(B @@ -1027,8 +1082,8 @@ qualified domain name (FQDN) ($B40A4$K>r7o$rK~$?$7$?%I%a%$%sL>(B) $B$G$J$$$J$ @c Symbol naming a @sc{mime} charset. Non-ASCII characters in messages are @c assumed to be encoded using this charset. The default is @code{nil}, @c which means ask the user. (This variable is used only on non-@sc{mule} -@c Emacsen. -@c @xref{Charset Translation, , Charset Translation, emacs-mime, +@c Emacsen. +@c @xref{Charset Translation, , Charset Translation, emacs-mime, @c Emacs MIME Manual}, for details on the @sc{mule}-to-@sc{mime} @c translation process. @c @@ -1043,8 +1098,8 @@ follows this line--} $B$G$9!#(B @item message-directory @vindex message-directory -$BB?$/$N%a!<%k$N$b$N$+$i;H$o$l$k%G%#%l%/%H%j!<$G$9!#=i4|CM$O(B -@file{~/Mail/} $B$G$9!#(B +$BB?$/$N%a!<%k$N$b$N$+$i;H$o$l$k%G%#%l%/%H%j!<$G$9!#=i4|CM(B +$B$O(B @file{~/Mail/} $B$G$9!#(B @item message-signature-setup-hook @vindex message-signature-setup-hook @@ -1080,8 +1135,8 @@ follows this line--} $B$G$9!#(B @vindex message-send-hook $B%a%C%;!<%8$rAw$kA0$K$H6&$K8F$P$l$^$9!#=i4|@_Dj$N4X?t$O(B @code{message-output} +$B$a$N%U%!%$%kL>$H6&$K8F$P$l$^$9!#=i4|@_Dj$N4X?t$O(B @code{message-output} $B$G!"$=$l$O(B Unix mailbox $BMM<0$GJ]B8$7$^$9!#(B @item message-courtesy-message @vindex messsage-courtesy-messsage $BJ#9g%a%C%;!<%8$rAw$k$H$-$O!"$3$NJ8;zNs$O%a!<%k$GAw$i$l$?J#@=$NJ}$N:G=i$K(B $BA^F~$5$l$^$9!#$b$7$=$NJ8;zNs$,=qK!;EMM;XDj(B @samp{%s} $B$r4^$s$G$$$l$P!"5-(B -$B;v$,Ej9F$5$l$?%K%e!<%9%0%k!<%W$,$=$3$KA^F~$5$l$^$9!#$b$7$3$NJQ?t$,(B -@code{nil} $B$G$"$l$P!"$=$N$h$&$J?F@Z%a%C%;!<%8$O2C$($i$l$^$;$s!#=i4|CM$O(B -@samp{"The following message is a courtesy copy of an article\nthat has +$B;v$,Ej9F$5$l$?%K%e!<%9%0%k!<%W$,$=$3$KA^F~$5$l$^$9!#$b$7$3$NJQ?t(B +$B$,(B @code{nil} $B$G$"$l$P!"$=$N$h$&$J?F@Z%a%C%;!<%8$O2C$($i$l$^$;$s!#=i4|CM(B +$B$O(B @samp{"The following message is a courtesy copy of an article\nthat has been posted to %s as well.\n\n"} $B$G$9!#(B @end table - @node Message Buffers @section $B%a%C%;!<%8%P%C%U%!(B @@ -1185,7 +1235,7 @@ Message $B$O$"$J$?$,%a%C%;!<%8%P%C%U%!$rMW5a$7$?$H$-$K!"B>$KL5$$M#0l$N%P%C(B @item message-use-multi-frames @vindex message-use-multi-frames -@code{nil} $B$G$J$1$l$P!"?7$7$$%U%l!<%`$r:n@.$7$^$9!#=i4|CM$O(B @code{nil} +@code{nil} $B$G$J$1$l$P!"?7$7$$%U%l!<%`$r:n@.$7$^$9!#=i4|CM$O(B @code{nil} $B$G$9!#(B @item message-delete-frame-on-exit @@ -1204,7 +1254,7 @@ Message $B$O$"$J$?$,%a%C%;!<%8%P%C%U%!$rMW5a$7$?$H$-$K!"B>$KL5$$M#0l$N%P%C(B @item message-send-rename-function @vindex message-send-rename-function -$B%a%C%;!<%8$rAw$C$?8e$G!"%P%C%U%!$NL>A0$O!"Nc$($P!"(B@samp{*reply to Lars*} +$B%a%C%;!<%8$rAw$C$?8e$G!"%P%C%U%!$NL>A0$O!"Nc$($P!"(B@samp{*reply to Lars*} $B$+$i(B @samp{*sent reply to Lars*} $B$KJQ99$5$l$^$9!#$b$7$3$l$r9%$^$J$$$J$i!"(B $B$3$NJQ?t$r$"$J$?$N9%$-$JJ}K!$G%P%C%U%!$NL>A0$rJQ99$9$k4X?t$K@_Dj$7$F2<$5(B $B$$!#$=$b$=$b%P%C%U%!L>$rJQ99$9$k;v$r9%$^$J$$$N$G$"$l$P!"$KL5$$M#0l$N%P%C(B @end table - @node Message Actions @section $B%a%C%;!<%8$NF0:n(B @@ -1258,7 +1307,6 @@ Message $B$O$3$l$i$N%j%9%H$H:nMQ$9$k4X?t$rDs6!$7$F$$$^$9(B: @dfn{$BF0:n(B} $B$O2A(B} $B$5$l$k<0$G$9!#(B - @node Compatibility @chapter $B8_49@-(B @cindex compatibility @@ -1273,13 +1321,12 @@ Message $B$O;ve!"$=$l<+?H$NJQ?t$7$+;H$$$^$;$s(B---$B8E$$(B @code{mail-}  $B$3$l$OB?$/$N(B Message $BJQ?t$rBP1~$9$k%a!<%kJQ?t$+$i=i4|2=$7$^$9!#(B - @node Appendices @chapter $BIU5-(B @menu * Responses:: $B1~Ez$,2?=h$K9T$/$+$r7hDj$9$kI8=`$NK!B'!#(B -@end menu +@end menu @node Responses @section $B1~Ez(B @@ -1299,7 +1346,6 @@ Message $B$O;ve!"$=$l<+?H$NJQ?t$7$+;H$$$^$;$s(B---$B8E$$(B @code{mail-}  @item From @end table - @item wide reply @dfn{$B9-$$JVEz(B} (wide reply) $B$O$"$J$?$,1~Ez$7$h$&$H$7$F$$$k%a%C%;!<%8$K=q(B $B$+$l$F$$$?(B @emph{$BA4$F$N(B} $Be!"$=$l<+?H$NJQ?t$7$+;H$$$^$;$s(B---$B8E$$(B @code{mail-}  @end table @code{Mail-Copies-To} $B%X%C%@!<$,B8:_$7$F$$$k$H!"$=$l$b%a!<%k%\%C%/%9$N%j(B -$B%9%H$K2C$($i$l$k$G$7$g$&!#$3$N%X%C%@!<$,(B @samp{never} $B$G$"$l$P!"$=$l$O(B -@code{From} ($B$b$7$/$O(B @code{Reply-To}) $B%a!<%k%\%C%/%9$,M^@)$5$l$k$H8@$&(B -$B;v$G$9!#(B - +$B%9%H$K2C$($i$l$k$G$7$g$&!#$3$N%X%C%@!<$,(B @samp{never} $B$G$"$l$P!"$=$l(B +$B$O(B @code{From} ($B$b$7$/$O(B @code{Reply-To}) $B%a!<%k%\%C%/%9$,M^@)$5$l$k$H8@(B +$B$&;v$G$9!#(B @item followup -@dfn{$B%U%)%m!<%"%C%W(B} (followup) $B$O%K%e!<%9$K$h$k1~Ez$G$9!#0J2<$N%X%C%@!<(B -($BM%@h=g0L$N9b$$$b$N$+$i5s$2$i$l$F$$$^$9(B) $B$,2?=h$K1~Ez$,Aw$i$l$k$+$r7hDj(B -$B$7$^$9(B: +@dfn{$B%U%)%m!<%"%C%W(B} (followup) $B$O%K%e!<%9$K$h$k1~Ez$G$9!#0J2<$N%X%C(B +$B%@!<(B ($BM%@h=g0L$N9b$$$b$N$+$i5s$2$i$l$F$$$^$9(B) $B$,2?=h$K1~Ez$,Aw$i$l$k$+$r(B +$B7hDj$7$^$9(B: @table @code @@ -1340,8 +1385,6 @@ Message $B$O;ve!"$=$l<+?H$NJQ?t$7$+;H$$$^$;$s(B---$B8E$$(B @code{mail-}  @end table - - @node Index @chapter Index @printindex cp @@ -1355,4 +1398,3 @@ Message $B$O;ve!"$=$l<+?H$NJQ?t$7$+;H$$$^$;$s(B---$B8E$$(B @code{mail-}  @bye @c End: - diff --git a/texi/message.texi b/texi/message.texi index c838365..d63486e 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -5,39 +5,38 @@ @synindex fn cp @synindex vr cp @synindex pg cp -@c @direntry -@c * Message: (message). Mail and news composition mode that goes with Gnus. -@c @end direntry +@dircategory Editors +@direntry +* Message: (message). Mail and news composition mode that goes with Gnus. +@end direntry @iftex @finalout @end iftex @setchapternewpage odd -@ifinfo +@ifnottex This file documents Message, the Emacs message composition mode. -Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. +Copyright (C) 1996,97,98,99,2000 Free Software Foundation, Inc. -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. -@ignore -Permission is granted to process this file through Tex and print the -results, provided the printed document carries copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' -@end ignore -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. -@end ifinfo +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. +@end ifnottex @tex @@ -48,20 +47,24 @@ into another language, under the above conditions for modified versions. @page @vskip 0pt plus 1filll -Copyright @copyright{} 1996,97,98,99 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. - +Copyright @copyright{} 1996,97,98,99,2000 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with the +Invariant Sections being none, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. + +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' + +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. @end titlepage @page @@ -246,8 +249,8 @@ the message in the current buffer. If given a prefix, forward using news. @table @code -@item message-ignored-forward-headers -@vindex message-ignored-forward-headers +@item message-forward-ignored-headers +@vindex message-forward-ignored-headers All headers that match this regexp will be deleted when forwarding a message. @item message-make-forward-subject-function @@ -317,6 +320,7 @@ will be removed before popping up the buffer. The default is @chapter Commands @menu +* Buffer Entry:: Commands after entering a Message buffer. * Header Commands:: Commands for moving to headers. * Movement:: Moving around in message buffers. * Insertion:: Inserting things into message buffers. @@ -324,9 +328,25 @@ will be removed before popping up the buffer. The default is * Various Commands:: Various things. * Sending:: Actually sending the message. * Mail Aliases:: How to use mail aliases. +* Spelling:: Having Emacs check your spelling. @end menu +@node Buffer Entry +@section Buffer Entry +@cindex undo +@kindex C-_ + +You most often end up in a Message buffer when responding to some other +message of some sort. Message does lots of handling of quoted text, and +may remove signatures, reformat the text, or the like---depending on +which used settings you're using. Message usually gets things right, +but sometimes it stumbles. To help the user unwind these stumblings, +Message sets the undo boundary before each major automatic action it +takes. If you press the undo key (usually located at @kbd{C-_}) a few +times, you will get back the un-edited message you're responding to. + + @node Header Commands @section Header Commands @@ -424,8 +444,7 @@ Move to the signature of the message (@code{message-goto-signature}). @item C-c C-y @kindex C-c C-y @findex message-yank-original -Yank the message in the buffer @code{gnus-article-copy} into the message -buffer. Normally @code{gnus-article-copy} is what you are replying to +Yank the message that's being replied to into the message buffer (@code{message-yank-original}). @item C-c M-C-y @@ -590,8 +609,9 @@ many places to rotate the text. The default is 13. @kindex C-c C-e @findex message-elide-region Elide the text between point and mark (@code{message-elide-region}). -The text is killed and an ellipsis (@samp{[...]}) will be inserted in -its place. +The text is killed and replaced with the contents of the variable +@code{message-elide-ellipsis}. The default value is to use an ellipsis +(@samp{[...]}). @item C-c C-z @kindex C-c C-x @@ -707,6 +727,51 @@ No expansion will be performed upon sending of the message---all expansions have to be done explicitly. +@node Spelling +@section Spelling +@cindex spelling +@findex ispell-message + +There are two popular ways to have Emacs spell-check your messages: +@code{ispell} and @code{flyspell}. @code{ispell} is the older and +probably more popular package. You typically first write the message, +and then run the entire thing through @code{ispell} and fix all the +typos. To have this happen automatically when you send a message, put +something like the following in your @file{.emacs} file: + +@lisp +(add-hook 'message-send-hook 'ispell-message) +@end lisp + +@vindex ispell-message-dictionary-alist +If you're in the habit of writing in different languages, this can be +controlled by the @code{ispell-message-dictionary-alist} variable: + +@lisp +(setq ispell-message-dictionary-alist + '(("^Newsgroups:.*\\bde\\." . "deutsch8") + (".*" . "default"))) +@end lisp + +@code{ispell} depends on having the external @samp{ispell} command +installed. + +The other popular method is using @code{flyspell}. This package checks +your spelling while you're writing, and marks any mis-spelled words in +various ways. + +To use @code{flyspell}, put something like the following in your +@file{.emacs} file: + +@lisp +(defun my-message-setup-routine () + (flyspell-mode 1)) +(add-hook 'message-setup-hook 'my-message-setup-routine) +@end lisp + +@code{flyspell} depends on having the external @samp{ispell} command +installed. + @node Variables @chapter Variables @@ -791,6 +856,11 @@ have to deal with users that use these evil tools, in which case you may set this variable to a regexp that matches these prefixes. Myself, I just throw away non-compliant mail. +@item message-alternative-emails +@vindex message-alternative-emails +A regexp to match the alternative email addresses. The first matched +address (not primary one) is used in the @code{From} field. + @end table diff --git a/texi/refcard.tex b/texi/refcard.tex index f5ce217..5e5731f 100644 --- a/texi/refcard.tex +++ b/texi/refcard.tex @@ -1,5 +1,5 @@ % -*- latex -*- -% Reference Card for (ding) Gnus: to be processed with LaTeX2e +% Reference Card for (ding) Gnus 5.8.x: to be processed with LaTeX2e \documentclass{article} \def\Guide{Card}\def\guide{card} \def\logoscale{0.25} @@ -8,41 +8,77 @@ % top and bottom of the page. \oddsidemargin -0.5in \evensidemargin -0.5in -% TODO: -% - how can you get 'tabular' to wrap around pages ? -% - some things might not be updated: scoring and server modes, maybe more +% README: +% *** purpose +% this was originally thought of as a reference card, but as it is now 5+ +% pages long, I doubt that it is more useful than the online-help. It helped +% to get an overview for the Gnus-functionality. +% +% *** files +% refcard.tex (this file), gnusref.tex ("include"-file) and gnuslogo.refcard +% (Gnus logo). +% +% *** printing (about 5 pages now: write me if you can make it shorter..) +% if you are using latex-mode, you do C-c C-f (process with latex), +% C-c C-v (view using xdvi/dvi2tty) and C-c C-p (print) +% the original author has set up the page dimensions cleverly so that this +% should print on both letter and a4 (see note above) +% $latex refcard.tex +% this creates a file refcard.dvi which you can preview using +% $xdvi refcard.dvi [C-c C-v] +% and print using something like +% $dvips refcard.dvi +% which creates refcard.ps (print using 'lpr refcard.ps') +% +% *** customization: +% the part following \begin{document} in this file consists of a macro for +% each section and section-headers (\section*{..}). It should be easy to +% reorder things and/or remove sections (put '%' at the beginning of the line). +% (i.e. you might want to omit \notes in the printed version ?) +% If you think that the order is not logical and you have ideas for +% improvements, please send mail to the current maintainer. +% +% *** ChangeLog: +% 2000-03-26 Felix Natter : +% refcard updated for Gnus 5.8.x: please send corrections or suggestions +% to the above email-address +% changes since 2000-03-26: +% o Create/Edit Foreign Groups: remove S b and S B (not available in 5.8.3) +% o Send/Reply etc.: remove w and W (the only bindings are S w and S W) +% Mon Apr 3 18:41:09 2000: +% o added C-c C-n and C-c C-t (Article) +% o C-c C-a as alias for M-m f (Article) + some other M-m *-bindings +% o added section for ``jumping'' in article-mode +% o now there's a difference between ``reading'' and ``composition'' +% (article-modes) +% Apr 24th, 2000: +% o added D s, D S and D t for nndraft +% o group-mode: i.e. C-u RET does not actually fetch fewer articles; also ,=>; +% Fri Jul 14 23:15:43 2000: +% o added README-section +% Thu Jul 27 20:51:01 2000: +% o added Unplugged-commands +% +% *** TODO: +% o (LaTeX) how can you get 'tabular' to wrap around pages ? +% 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} -\newlength{\logowidth} -\setlength{\logowidth}{6.861in} -\newlength{\logoheight} -\setlength{\logoheight}{7.013in} +\newlength{\logowidth} \setlength{\logowidth}{6.861in} +\newlength{\logoheight} \setlength{\logoheight}{7.013in} -\def\progver{5.8}\def\refver{5.8} % program and refcard versions -\def\date{26th of March 2000} +\def\progver{5.8}\def\refver{5.8-4} % program and refcard versions +\def\date{July 27th, 2000} \def\author{Vladimir Alexiev $<$vladimir@cs.ualberta.ca$>$} \raggedbottom\raggedright -% -% 2000-03-26 Felix Natter : -% refcard updated for Gnus 5.8.3: please send corrections or suggestions -% to the above email-address - -% changes since 2000-03-26: -% - Create/Edit Foreign Groups: remove S b and S B (not there in 5.8.3) -% - Send/Reply etc.: remove w and W (the only bindings are S w and S W) -% Mon Apr 3 18:41:09 2000: -% - added C-c C-n and C-c C-t (Article) -% - C-c C-a as alias for M-m f (Article) + some other M-m *-bindings -% - added section for ``jumping'' in article-mode -% - now there's a difference between ``reading'' and ``composition'' -% article-modes \twocolumn %\tiny \scriptsize \pagestyle{plain} -% this contains a set of commands containing the actual key-sequences +% this contains a set of commands containing the actual sections % (and some explanations). \input{gnusref} @@ -54,83 +90,90 @@ % \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 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 + \subsection*{Group Topics} + \GroupTopicsGeneral + \subsubsection*{Topic Sorting} + \TopicSorting +% % 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 + \subsection*{Select Articles} + \SelectArticles +% + \subsection*{Threading} + \Threading +% + \subsection*{Limiting} + \Limiting + \subsection*{Sort the Summary-Buffer} + \SortSummary + \subsection*{Score (Value) Commands} + \Scoring % - \subsection*{MIME operations from the Summary-Buffer} - \MIMESummary - \subsection*{Extract Series (Uudecode etc)} - \ExtractSeries - \subsection*{Output Articles} - \OutputArticles -% - \subsection*{Post, Followup, Reply, Forward, Cancel} - \PostReplyetc - \subsection*{Message-Composition} - \MsgCompositionGeneral - \subsubsection*{Jumping in message-buffer} - \MsgCompositionMovementArticle - \subsubsection*{Attachments/MML} - \MsgCompositionMML + \subsection*{MIME operations from the Summary-Buffer} + \MIMESummary + \subsection*{Extract Series (Uudecode etc)} + \ExtractSeries + \subsection*{Output Articles} + \OutputArticles +% + \subsection*{Post, Followup, Reply, Forward, Cancel} + \PostReplyetc + \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 -% - \subsection*{Mail-Group Commands} - \MailGroups - \subsection*{Draft-Group Commands} - \DraftGroup + \subsection*{Mark Articles} + \MarkArticlesGeneral + \subsubsection*{Mark Based on Score} + \MarkByScore + \subsubsection*{The Process Mark} + \ProcessMark + \subsubsection*{Mark Indication-Characters} + \MarkCharacters +% + \subsection*{Summary-Unplugged} + \SummaryUnplugged + \subsection*{Mail-Group Commands} + \MailGroups + \subsection*{Draft-Group Commands} + \DraftGroup % exiting - \subsection*{Exit the Summary-Buffer} - \ExitSummary + \subsection*{Exit the Summary-Buffer} + \ExitSummary % % \section*{Article Mode (reading)} \ArticleModeGeneral - \subsection*{Wash the Article-Buffer} - \WashArticle - \subsection*{Hide/Highlight Parts of the Article} - \HideHighlightArticle - \subsection*{MIME operations from the Article-Buffer (reading)} - \MIMEArticleMode + \subsection*{Wash the Article-Buffer} + \WashArticle + \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} @@ -142,26 +185,4 @@ \end{document} -% \SummaryMode -% \Gsubmap -% \Bsubmap -% \Dsubmap -% \Tsubmap -% %\pagebreak -% % page 2, right column -% \Msubmap -% \Marks -% %\pagebreak -% \Limiting -% % page 3 -% \Osubmap -% \Ssubmap -% \Xsubmap -% \Vsubmap -% \SortSummary -% \Zsubmap -% \ArticleMode -% \ServerMode -% % page 4 -% \BrowseServer diff --git a/texi/texi2latex.el b/texi/texi2latex.el new file mode 100644 index 0000000..d7436fa --- /dev/null +++ b/texi/texi2latex.el @@ -0,0 +1,322 @@ +;;; texi2latex.el --- convert a texi file into a LaTeX file. +;; Copyright (C) 1996 Lars Magne Ingebrigtsen + +(require 'cl) + +(defun latexi-discard-until (string) + (let ((beg (match-beginning 0))) + (unless (re-search-forward (concat "^@end +" string "[ \t]*\n") nil t) + (error "No end: %s" string)) + (delete-region beg (match-end 0)))) + +(defun latexi-strip-line () + (delete-region (progn (beginning-of-line) (point)) + (progn (forward-line 1) (point)))) + +(defun latexi-switch-line (command arg) + (latexi-strip-line) + (insert (format "\\%s{%s}\n" command arg))) + +(defun latexi-index-command (command arg) + (latexi-strip-line) + (insert (format "\\gnus%sindex{%s}\n" + (if (equal command "kindex") "k" "") + arg))) + +(defun latexi-begin-command (command) + (latexi-strip-line) + (insert (format "\\begin{%s}\n" command))) + +(defun latexi-exchange-command (command arg) + (delete-region (match-beginning 0) (match-end 0)) + (insert (format "\\%s{%s}" command arg))) + +(defun latexi-translate () + "Translate." + (interactive) + (latexi-translate-file "gnus") + (latexi-translate-file "gnus-faq")) + +(defun latexi-translate-file (file) + "Translate file a LaTeX file." + (let ((item-string "") + (item-stack nil) + (list-stack nil) + (latexi-buffer (get-buffer-create "*LaTeXi*")) + verbatim + (regexp + (concat + "@\\([^{} \t\n]+\\)" + "\\(\\( +\\(.*$\\)\\|[ \t]*$\\)\\|{\\([^}]*\\)}\\)")) + (cur (find-file-noselect (concat (or (getenv "srcdir") ".") + "/" file ".texi"))) + (times 3) + (chapter 0) + command arg) + (pop-to-buffer latexi-buffer) + (buffer-disable-undo) + (erase-buffer) + (insert-buffer-substring cur) + (goto-char (point-min)) + (latexi-strip-line) + (latexi-translate-string "%@{" "\\gnuspercent{}\\gnusbraceleft{}") + (latexi-translate-string "%@}" "\\gnuspercent{}\\gnusbraceright{}") + (latexi-translate-string "%1@{" "\\gnuspercent{}1\\gnusbraceright{}") +; (while (re-search-forward "{\"[^\"]*\\(\\\\\\)[^\"]*\"}\\\\" nil t) +; (replace-match "\\verb+\\\\+ " t t)) + (while (not (zerop (decf times))) + (goto-char (point-min)) + (while (re-search-forward regexp nil t) + (setq command (match-string 1)) + (if (match-beginning 3) + (progn + (setq arg (or (match-string 4) "")) + (save-match-data + (when (string-match "[ \t]+$" arg) + (setq arg (substring arg 0 (match-beginning 0))))) + (cond + ((member command '("c" "comment")) + (if (string-match "@icon" (or arg "")) + (progn + (beginning-of-line) + (delete-region (point) (+ (point) 4)) + (insert "\\gnus")) + (delete-region (match-beginning 0) + (progn (end-of-line) (point)))) + (if (equal arg "@head") + (insert "\\gnusinteresting"))) + ((member command '("setfilename" + "synindex" "setchapternewpage" + "summarycontents" "bye" + "top" "iftex" "cartouche" + "iflatex" "finalout" "vskip" + "dircategory")) + (latexi-strip-line)) + ((member command '("menu" "tex" "ifinfo" "ignore" + "ifnottex" "direntry")) + (latexi-discard-until command)) + ((member command '("subsection" "subsubsection")) + (latexi-switch-line command arg)) + ((member command '("chapter")) + (latexi-switch-line + (format + "gnus%s{\\epsfig{figure=tmp/new-herd-%d.ps,scale=.5}}" + command (incf chapter)) + arg)) + ((member command '("section")) + (latexi-switch-line (format "gnus%s" command) arg)) + ((member command '("cindex" "findex" "kindex" "vindex")) + (latexi-index-command command arg)) + ((member command '("*")) + (delete-char -2) + (insert "\\\\")) + ((equal command "sp") + (replace-match "" t t)) + ((equal command "node") + (latexi-strip-line) + (insert (format "\\label{%s}\n" arg))) + ((equal command "contents") + (latexi-strip-line) + ;;(insert (format "\\tableofcontents\n" arg)) + ) + ((member command '("titlepage")) + (latexi-begin-command command)) + ((member command '("lisp" "example")) + (latexi-strip-line) + (insert (format "\\begin{verbatim}\n")) + (setq verbatim (point))) + ((member command '("center")) + (latexi-strip-line) + (insert (format "\\begin{%s}%s\\end{%s}\n" + command arg command))) + ((member command '("end")) + (cond + ((member arg '("titlepage")) + (latexi-strip-line) + (insert (format "\\end{%s}\n" arg))) + ((equal arg "quotation") + (latexi-strip-line) + (insert (format "\\end{verse}\n"))) + ((member arg '("lisp" "example")) + (latexi-strip-line) + (save-excursion + (save-restriction + (narrow-to-region verbatim (point)) + (goto-char (point-min)) + (while (search-forward "@{" nil t) + (replace-match "{" t t)) + (goto-char (point-min)) + (while (search-forward "@}" nil t) + (replace-match "}" t t)))) + (setq verbatim nil) + (insert "\\end{verbatim}\n")) + ((member arg '("table")) + (setq item-string (pop item-stack)) + (latexi-strip-line) + (insert (format "\\end{%slist}\n" (pop list-stack)))) + ((member arg '("itemize" "enumerate")) + (setq item-string (pop item-stack)) + (latexi-strip-line) + (insert (format "\\end{%s}\n" arg))) + ((member arg '("iflatex" "iftex" "cartouche")) + (latexi-strip-line)) + (t + (error "Unknown end arg: %s" arg)))) + ((member command '("table")) + (push item-string item-stack) + (push (substring arg 1) list-stack) + (setq item-string + (format "[@%s{%%s}]" (car list-stack))) + (latexi-strip-line) + (insert (format "\\begin{%slist}\n" (car list-stack)))) + ((member command '("itemize" "enumerate")) + (push item-string item-stack) + (cond + ((member arg '("@bullet")) + (setq item-string "[\\gnusbullet]")) + (t + (setq item-string ""))) + (latexi-strip-line) + (insert (format "\\begin{%s}\n" command))) + ((member command '("item")) + (latexi-strip-line) + (insert (format "\\%s%s\n" command (format item-string arg)))) + ((equal command "itemx") + (latexi-strip-line) + (insert (format "\\gnusitemx{%s}\n" (format item-string arg)))) + ((eq (aref command 0) ?@) + (goto-char (match-beginning 0)) + (delete-char 2) + (insert "duppat{}")) + ((equal command "settitle") + (latexi-strip-line) + (insert (format "\\newcommand{\\gnustitlename}{%s}\n" arg))) + ((equal command "title") + (latexi-strip-line) + (insert (format "\\gnustitlename{%s}\n" arg))) + ((equal command "author") + (latexi-strip-line) + (insert (format "\\gnusauthor{%s}\n" arg))) + ((equal command "quotation") + (latexi-begin-command "verse")) + ((equal command "page") + (latexi-strip-line) + (insert (format "\\newpage\n" arg))) + ((equal command "'s") + (goto-char (match-beginning 0)) + (delete-char 1)) + ((equal command "include") + (latexi-strip-line) + (insert "\\input{gnus-faq.latexi}\n")) + ((equal command "printindex") + (latexi-strip-line) + ;;(insert + ;; (format + ;; "\\begin{theindex}\\input{gnus.%s}\\end{theindex}\n" arg)) + ) + (t + (error "Unknown command: %s" command)))) + ;; These are commands with {}. + (setq arg (match-string 5)) + (cond + ((member command '("xref" "pxref")) + (latexi-exchange-command (concat "gnus" command) arg)) + ((member command '("sc" "file" "dfn" "emph" "kbd" + "code" "samp" "var" "strong" "i" + "result")) + (goto-char (match-beginning 0)) + (delete-char 1) + (insert "\\gnus")) + ((member command '("copyright" "footnote")) + (goto-char (match-beginning 0)) + (delete-char 1) + (insert "\\")) + ((member command '("dots")) + (goto-char (match-beginning 0)) + (delete-region (match-beginning 0) (match-end 0)) + (insert "...")) + ((eq (aref command 0) ?@) + (goto-char (match-beginning 0)) + (delete-char 2) + (insert "duppat{}")) + (t + (error "Unknown command: %s" command)))))) + (latexi-translate-string "$" "\\gnusdollar{}") + (latexi-translate-string "&" "\\gnusampersand{}") + (latexi-translate-string "%" "\\gnuspercent{}") + (latexi-translate-string "#" "\\gnushash{}") + (latexi-translate-string "^" "\\gnushat{}") + (latexi-translate-string "~" "\\gnustilde{}") + (latexi-translate-string "_" "\\gnusunderline{}") + (latexi-translate-string "¬" "\\gnusnot{}") + (goto-char (point-min)) + (while (search-forward "duppat{}" nil t) + (replace-match "@" t t)) + (latexi-translate-string "@@" "@") + (latexi-translate-string "<" "\\gnusless{}") + (latexi-translate-string ">" "\\gnusgreater{}") + (goto-char (point-min)) + (search-forward "label{Top}" nil t) + (while (re-search-forward "\\\\[ntr]\\b" nil t) + (when (save-match-data + (or (not (save-excursion + (search-backward "begin{verbatim}" nil t))) + (> (save-excursion + (search-backward "end{verbatim")) + (save-excursion + (search-backward "begin{verbatim}"))))) + (goto-char (match-beginning 0)) + (delete-char 1) + (insert "\\gnusbackslash{}"))) + (latexi-translate-string "\\\\" "\\gnusbackslash{}") + (goto-char (point-min)) + (while (re-search-forward "\\\\[][{}]" nil t) + (goto-char (match-beginning 0)) + (delete-char 1)) + (latexi-contributors) + (let ((coding-system-for-write 'iso-8859-1)) + (write-region (point-min) (point-max) (concat file ".latexi"))))) + +(defun latexi-translate-string (in out) + (let (yes) + (goto-char (point-min)) + (search-forward "label{Top}" nil t) + (while (search-forward in nil t) + (when (save-match-data + (or (not (save-excursion + (search-backward "begin{verbatim}" nil t))) + (> (save-excursion + (re-search-backward "end{verbatim}\\|end{verse}")) + (save-excursion + (re-search-backward + "begin{verbatim}\\|begin{verse}"))))) + (replace-match out t t))))) + +(defun latexi-contributors () + (goto-char (point-min)) + (when (re-search-forward "^Also thanks to the following" nil t) + (forward-line 2) + (narrow-to-region + (point) + (1- (search-forward "\n\n"))) + (when (re-search-backward "^and" nil t) + (latexi-strip-line)) + (goto-char (point-min)) + (while (re-search-forward "[.,] *$" nil t) + (replace-match "" t t)) + (goto-char (point-min)) + (let (names) + (while (not (eobp)) + (push (buffer-substring (point) (progn (end-of-line) (point))) + names) + (forward-line 1)) + (delete-region (point-min) (point-max)) + (insert "\\begin{tabular}{lll}\n") + (setq names (nreverse (delete "" names))) + (while names + (insert (pop names) " & " (or (pop names) "\\mbox{}") + " & " (or (pop names) "\\mbox{}") + "\\\\\n")) + (insert "\\end{tabular}\n") + (widen)))) +