From: yamaoka Date: Mon, 27 Dec 1999 03:39:26 +0000 (+0000) Subject: Feedback from the branch `t-gnus-6_13'. X-Git-Tag: before-feeding-back-t-gnus-6_14- X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ee70a66fb20ed12d43960dd3933c7f416257ef42;p=elisp%2Fgnus.git- Feedback from the branch `t-gnus-6_13'. --- diff --git a/ChangeLog b/ChangeLog index 458f525..ace1615 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4374 +1,1096 @@ -1999-08-02 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 03. - -1999-08-01 YAMAMOTO Kouji - - * lisp/nnmail.el (nnmail-split-it): Don't compare ".*" and VALUE - of each element of `nnmail-split-fancy' if the length of VALUE is - less than 2. - -1999-07-28 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 02. - - * lisp/gnus-ems.el (gnus-mule-cite-add-face): New implementation. - -1999-07-20 Tsukamoto Tetsuo - - * lisp/gnus.el (gnus-revision-number): Increment to 01. - - * lisp/gnus-ofsetup.el (gnus-ofsetup-prepare-for-miee, - gnus-ofsetup-write-setting-file): New functions. - (gnus-setup-for-offline): Use them. - (gnus-ofsetup-parameters, gnus-ofsetup-customize, - gnus-ofsetup-customize-done): New functions for customization - support. - - * lisp/gnus-offline.el (gnus-offline-version-number): Update to - 2.20. - (gnus-offline-define-menu-on-miee, - gnus-offline-define-menu-on-agent): Add a menu item which calls - `gnus-ofsetup-customize'. - -1999-07-11 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.072. - - * texi/{message.texi,message-ja.texi,gnus.texi,gnus-ja.texi, - ChangeLog}: Update for T-gnus 6.10.072. - - * lisp/{pop3.el,nnmh.el,nnfolder.el,mm-util.el,mm-encode.el, - mm-decode.el,message.el,mail-source.el,gnus-util.el,gnus-topic.el, - gnus-sum.el,gnus-mlspl.el,gnus-mailcap.el,gnus-group.el, - gnus-cus.el,gnus-art.el,ChangeLog}: Sync up with Pterodactyl Gnus - v0.95. - - * README.T-gnus: Update for T-gnus 6.10.072. - -1999-07-07 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.071. - - * texi/{message.texi,message-ja.texi,gnus.texi,gnus-ja.texi}: - Update for T-gnus 6.10.071. - - * texi/{gnus.texi,gnus-ja.texi,ChangeLog}: Sync up with - Pterodactyl Gnus v0.93. - - * lisp/{pop3.el,nnmail.el,mml.el,mm-view.el,mm-uu.el,mm-util.el, - mm-decode.el,message.el,gnus-util.el,gnus-sum.el,gnus-start.el, - gnus-srvr.el,gnus-score.el,gnus-mlspl.el,gnus-art.el,gnus-agent.el, - ChangeLog}: Sync up with Pterodactyl Gnus v0.93. - - * README.T-gnus: Update for T-gnus 6.10.071. - -1999-07-06 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.070. - (gnus-revision-number): Fresh start from 00. - - * texi/{message.texi,message-ja.texi,gnus.texi,gnus-ja.texi}: - Update for T-gnus 6.10.070. - - * texi/{gnus-ja.texi,emacs-mime.texi,ChangeLog}: Sync up with - Pterodactyl Gnus v0.92. - - * lisp/gnus-mlspl.el: New file copied from Pterodactyl Gnus v0.92. - - * lisp/{nntp.el,nnmail.el,nnfolder.el,nndraft.el,nndoc.el,mml.el, - mm-view.el,mm-util.el,mm-decode.el,message.el,gnus-xmas.el, - gnus-util.el,gnus-sum.el,gnus-start.el,gnus-mailcap.el, - gnus-group.el,gnus-art.el,gnus-agent.el,Makefile.in,ChangeLog}: - Sync up with Pterodactyl Gnus v0.92. - - * README.T-gnus: Update for T-gnus 6.10.070. - -1999-07-06 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 01. - -1999-07-05 Tsukamoto Tetsuo - - * lisp/gnus-agent.el (gnus-agent-expire): Refresh the value of - `gnus-active-hashtb' for each method. - -1999-07-05 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.069. - (gnus-revision-number): Fresh start from 00. - - * texi/gnus-ja.texi (Mail in a Newsreader): Translate into Japanese. - - * texi/{message.texi,message-ja.texi,gnus.texi,gnus-ja.texi}: - Update for T-gnus 6.10.069. - * README.T-gnus: Ditto. - - * lisp/nnmbox.el (nnmbox-active-file-coding-system, - nnmbox-file-coding-system): Default to `raw-text-dos' or 'raw-text'. - * lisp/nnfolder.el (nnfolder-file-coding-system, - nnfolder-active-file-coding-system): Ditto. - - * lisp/gnus-util.el (gnus-write-active-file): Abolish function. - (gnus-write-active-file-as-coding-system): New function. - - * lisp/gnus-cache.el (gnus-cache-write-active): Use - `gnus-write-active-file-as-coding-system' instead of - `gnus-write-active-file'. - * lisp/gnus-agent.el (gnus-agent-expire, gnus-agent-write-active): - Ditto. - - * lisp/gnus-agent.el (gnus-agent-expire, gnus-agent-write-active, - gnus-agent-save-active-1): Use - `insert-file-contents-as-coding-system' instead of - `insert-file-contents-literally' or `insert-file-contents'. - -1999-07-05 Katsumi Yamaoka - - * texi/{emacs-mime.texi,ChangeLog}: Sync up with Pterodactyl Gnus - v0.91. - * lisp/{smiley.el,rfc2047.el,qp.el,nnml.el,nnmbox.el,nnmail.el, - nnheader.el,nnfolder.el,mml.el,mm-view.el,mm-uu.el,mm-util.el, - mm-encode.el,mm-decode.el,message.el,lpath.el,gnus-util.el, - gnus-sum.el,gnus-start.el,gnus-srvr.el,gnus-msg.el,gnus-mailcap.el, - gnus-cache.el,gnus-art.el,gnus-agent.el,base64.el}: Ditto. - * GNUS-NEWS: Ditto. - -1999-07-04 Yoshiki Hayashi - - * texi/{gnusref-ja.tex,refcard-ja.tex}: Update to the version 5.5. - -1999-07-04 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 01. - -1999-07-04 Tsukamoto Tetsuo - - * lisp/gnus-sum.el (gnus-get-newsgroup-headers): Don't bind the - value of `mail-parse-ignored-charsets' if its local value in - `gnus-summary-buffer' is nil. - -1999-06-28 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.068. - (gnus-revision-number): Fresh start from 00. - - * configure: Regenerate. - - * lisp/{rfc2047.el,nnmail.el,mml.el,mm-view.el,mm-util.el, - mm-bodies.el,message.el,mail-prsvr.el,gnus-xmas.el,gnus-sum.el, - gnus-start.el,gnus-draft.el,gnus-cus.el,gnus-cache.el,gnus-art.el, - ChangeLog}: Sync up with Pterodactyl Gnus v0.89. - * aclocal.m4: Ditto. - - * texi/{message.texi,message-ja.texi,gnus.texi,gnus-ja.texi}: - Update for T-gnus 6.10.068. - * README.T-gnus: Ditto. - -1999-06-22 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 01. - - * lisp/gnus-sum.el (gnus-summary-mark-article): Call - `gnus-cache-possibly-enter-article' with the arg `headers'. - (gnus-summary-mark-article-as-unread): Ditto. - (gnus-summary-move-article): Ditto. - - * lisp/gnus-msg.el (gnus-extended-version): Include - `gnus-revision-number' if it is non-zero. - - * lisp/gnus-cache.el (gnus-cache-update-article): Call - `gnus-cache-possibly-enter-article' with the arg `headers'. - (gnus-cache-enter-article): Ditto. - (gnus-cache-possibly-enter-article): Accept parameter `headers'. - - * lisp/gnus-art.el (gnus-article-display-x-face-with-x-face-mule): - Use `gnus-xemacs' instead of `featurep' with an arg `xemacs'. - (article-toggle-headers): Ditto. - - * configure: Regenerate by autoconf 2.14.1. - -1999-06-15 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.067. - (gnus-revision-number): Fresh start from 00. - - * lisp/{gnus-sum.el,nnmail.el,ChangeLog}: Sync up with Pterodactyl - Gnus v0.88. - - * text/{gnus-ja.texi,gnus.texi,message-ja.texi,message.texi}: - Update for T-gnus 6.10.067. - * README.T-gnus: Ditto. - -1999-06-14 Katsumi Yamaoka +1999-12-03 Hirokazu FUKUI + Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 01. - * lisp/message.el (message-send-news): Don't generate the Lines - field; don't make `tembuf' as unmodified. - (message-send-mail): Ditto. + * lisp/dgnushack.el (char-before): Use compiler macro instead of + byte-optimizer. + (char-after): Comment out the byte-optimization. -1999-06-14 Katsumi Yamaoka + * imap.el (imap-base64-encode-string, imap-base64-decode-string): + New functions. They are identical to the built-in codec if + possible, otherwise the functions defined in mel are used. + (imap-cram-md5-auth): Use them. - * lisp/gnus.el (gnus-version-number): Update to 6.10.066. +1999-12-02 Katsumi Yamaoka - * lisp/{mail-source.el,gnus-sum.el,gnus-art.el}: Sync up with - Pterodactyl Gnus v0.87. + * lisp/imap.el: Remove autoload settings for `base64-decode-string' + and `base64-encode-string'. - * text/gnus-ja.text (Troubleshooting): Make the return value of - `gnus-version' ambiguous. +1999-12-02 Katsumi Yamaoka - * lisp/message.el (message-send-news): Make `tembuf' as unmodified - after inserting a text from `message-encoding-buffer'. - (message-send-mail): Ditto. + * lisp/gnus.el (gnus-version-number): Update to 6.13.4. + (gnus-revision-number): Clear to 00. -1999-06-14 Katsumi Yamaoka + * README.T-gnus: Update. - * lisp/gnus.el (gnus-version-number): Update to 6.10.065. - (gnus-revision-number): Fresh start from 00. + * GNUS-NEWS: Sync up with Pterodactyl Gnus v0.99. - * texi/{gnus.texi,gnus-ja.texi,ChangeLog}: Sync up with Pterodactyl - Gnus v0.86 - * lisp/{nnmail.el,nnheader.el,nndoc.el,mml.el,mm-view.el, + * lisp/{rfc2047.el,rfc1843.el,nnweb.el,nnvirtual.el,nntp.el, + nnmh.el,nnmail.el,nnimap.el,nnheader.el,nnfolder.el,nndraft.el, + nndoc.el,mml.el,mm-view.el,mm-uu.el,mm-util.el,mm-encode.el, mm-decode.el,mm-bodies.el,message.el,mail-source.el,lpath.el, - gnus.el,gnus-xmas.el,gnus-uu.el,gnus-util.el,gnus-sum.el, - gnus-start.el,gnus-score.el,gnus-range.el,gnus-msg.el, - gnus-mailcap.el,gnus-group.el,gnus-cus.el,gnus-cite.el, - gnus-cache.el,gnus-art.el,gnus-agent.el,ChangeLog}: Ditto. - - * etc/gnus/x-splash: New file copied from pgnus 0.86. - -1999-06-12 Daiki Ueno - - * lisp/gnus-msg.el (gnus-copy-article-buffer): Bind - `inhibit-read-only' to t during modifying the destination buffer. + gnus-xmas.el,gnus-uu.el,gnus-util.el,gnus-topic.el,gnus-sum.el, + gnus-start.el,gnus-srvr.el,gnus-spec.el,gnus-score.el,gnus-salt.el, + gnus-picon.el,gnus-msg.el,gnus-mailcap.el,gnus-int.el, + gnus-group.el,gnus-ems.el,gnus-cus.el,gnus-cache.el,gnus-async.el, + gnus-art.el,gnus-agent.el,dgnushack.el,base64.el,Makefile.in, + ChangeLog}: Sync up with Pterodactyl Gnus v0.99. -1999-06-11 Katsumi Yamaoka + * lisp/{webmail.el,nnwarchive.el,nnultimate.el,nnslashdot.el}: New + files. - * lisp/gnus.el (gnus-revision-number): Increment to 17. - - * lisp/gnus-art.el (gnus-article-display-x-face-with-x-face-mule): - Warn if it is used with X-Face-Mule 0.25 or later. Note that it - should be abolished in the future. - -1999-06-08 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 16. - - * lisp/gnus-sum.el (gnus-article-sort-by-author): Bug fix - use the - car of the return value of `mime-read-field'. - -1999-05-28 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 15. - - * texi/gnus.texi (Customizing Articles): Abolish the treatment - variable `nomime' and rename - `gnus-treat-decode-message-body-as-default-mime-charset' with - `gnus-treat-decode-article-as-default-mime-charset'. - - * lisp/gnus-art.el (gnus-treat-predicate): Abolish the treatment - variable `nomime'. - (gnus-article-prepare-mime-display): Call `gnus-treat-article' with - the 1st arg t for treating if the part is not the last one. - (gnus-article-decode-article-as-default-mime-charset): Renamed from - `gnus-article-decode-message-body-as-default-mime-charset'; Don't - work if `gnus-show-mime' is non-nil. - (gnus-treat-decode-article-as-default-mime-charset): Renamed from - `gnus-treat-decode-message-body-as-default-mime-charset'; add - choice item for decoding the whole article. - -1999-05-28 Yoshiki Hayashi - - * lisp/message.el (message-header-hook): Pass optional argument - code-conversion. - -1999-05-26 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 14. - - * lisp/gnus-art.el (gnus-article-prepare-display): Narrow to - header with trailing newline instead of the use of - `std11-narrow-to-header'. - (article-date-ut): Use `text-property-any' instead of - `next-single-property-change'. - (article-toggle-headers): Use `text-property-any' and - `text-property-not-all' instead of `get-text-property' or - `next-single-property-change'; use `gnus-hidden-properties' instead - of the property `invisible' with the function `add-text-properties' - or `remove-text-properties'; use `article-hide-headers' instead of - `gnus-article-maybe-hide-headers'; re-display X-Face image under - XEmacs after sorting fields. - -1999-05-25 Katsumi Yamaoka + * texi/{message.texi,message-ja.texi,gnus.texi,gnus-ja.texi, + emacs-mime.texi,Makefile.in,ChangeLog}: Sync up with Pterodactyl + Gnus v0.99. - * lisp/gnus.el (gnus-revision-number): Increment to 13. - (TopLevel): Autoload "gnus-art" for `gnus-article-toggle-headers'. - - * texi/gnus.texi, texi/gnus-ja.texi (Article Hiding): Replace - `gnus-article-hide-headers' with `gnus-article-toggle-headers'. - - * lisp/gnus-sum.el (gnus-summary-article-menu, - gnus-summary-wash-hide-map, gnus-summary-wash-map, - gnus-summary-mode-map): Use `gnus-article-toggle-headers' instead - of `gnus-article-hide-headers'. - - * lisp/gnus-msg.el (gnus-copy-article-buffer): Remove bitmap images - with text property `x-face-mule-bitmap-image'; - don't bind `inhibit-read-only'. - - * lisp/gnus-art.el (gnus-article-display-x-face-with-x-face-mule): - Do nothing if `window-system' is nil. - (gnus-article-decode-message-body-as-default-mime-charset): Don't - bind `buffer-read-only'; decode from (point-min) instead of (point). - (gnus-article-prepare-display): Bind `inhibit-read-only' to t; bind - `buffer-read-only' to nil; don't bind - `mime-preview-over-to-next-method-alist'; - strip read-only properties after preparing. - (gnus-article-prepare-mime-display): Put text property - `article-treated-header' to the header; don't use - `mime-preview-move-to-next'; reduce a number of bound variables. - (gnus-article-display-traditional-message): Don't bind - `inhibit-read-only'. - (gnus-article-make-menu-bar): Use `gnus-article-toggle-headers' - instead of `gnus-article-hide-headers'. - (article-toggle-headers): New function. - -1999-05-24 Katsumi Yamaoka +1999-12-02 Katsumi Yamaoka - * lisp/gnus.el (gnus-revision-number): Increment to 12. + * lisp/gnus.el (gnus-select-method): Undo (`if' -> `when'). + * lisp/gnus-picon.el (gnus-picons-file-suffixes): Ditto. + * lisp/gnus-start.el (save-buffers-kill-emacs): Ditto. + (gnus-after-getting-new-news-hook): Ditto. - * texi/gnus.texi (Customizing Articles): Remove duplicates; add the - function `gnus-treat-decode-message-body-as-default-mime-charset'. + * lisp/gnus-group.el (gnus-useful-groups): Undo (`or' -> `unless'). - * lisp/gnus-msg.el (gnus-copy-article-buffer): Bind - `inhibit-read-only' to t during modifying the destination buffer. +1999-12-01 Katsumi Yamaoka - * lisp/gnus-art.el (gnus-article-prepare-mime-display): Rewrite. - (article-date-ut): If there is a forwarded message, fetch Date from - its header instead of `gnus-current-headers'. - (gnus-article-display-x-face-with-x-face-mule): New function. - (TopLevel): Autoload "x-face-mule" for the function - `x-face-mule-x-face-decode-message-header'. - (gnus-treatment-function-alist): Remove duplicates. + * lisp/gnus.el (gnus-revision-number): Increment to 10. -1999-05-21 Katsumi Yamaoka + * lisp/gnus-art.el (article-treat-overstrike): Work for multibyte + char with old Emacsen as well. - * lisp/gnus.el (gnus-revision-number): Increment to 11. +1999-12-01 Daiki Ueno - * lisp/gnus-art.el (gnus-article-prepare-mime-display): Don't treat - as a MIME message if the article is not so. - (gnus-article-display-traditional-message): Bind - `inhibit-read-only' to t. - (article-hide-headers): Ditto. + * lisp/gnus-agent.el (gnus-category-edit-predicate): Expand `setf' + appears in the backquoted form. + (gnus-category-edit-score): Ditto. -1999-05-19 Katsumi Yamaoka + * lisp/gnus-sum.el (gnus-data-set-header): Expand `setf' + appears in the backquoted form. - * lisp/gnus.el (gnus-revision-number): Increment to 10. - (gnus-article-display-hook): Default to nil; annotate that it is an - obsolete variable. - - * texi/gnus.texi (Customizing Articles): Document the new treatment - variables `mime' and `nomime'. - - * lisp/gnus-art.el (gnus-treat-predicate): Handle the new treatment - variables `mime' and `nomime'. - (gnus-article-decode-message-body-as-default-mime-charset): New - function. - (gnus-article-prepare-display): Rewrite for the use of - `gnus-treat-article'. - (gnus-article-prepare-mime-display): New function. - (article-date-ut): Use `next-single-property-change' instead of - re-search. - (gnus-treatment-function-alist): Add a pair of - `gnus-treat-decode-message-body-as-default-mime-charset' and - `gnus-article-decode-message-body-as-default-mime-charset'. - (gnus-treat-decode-message-body-as-default-mime-charset): New user - option. - -1999-05-19 Katsumi Yamaoka +1999-11-30 Tsukamoto Tetsuo * lisp/gnus.el (gnus-revision-number): Increment to 09. - * lisp/gnus-art.el (article-date-ut): Keep the original X-Sent - field, fix the position of the converted date to be displayed, - etc. + * lisp/gnus-offline.el (gnus-offline-define-menu-and-key): Fix a + bug -- do add-hook. + (gnus-offline-popup): Examine whether `easy-menu-create-menu' is + defined. If not, call `easy-menu-create-keymaps'. -1999-05-18 Katsumi Yamaoka +1999-11-30 Tsukamoto Tetsuo * lisp/gnus.el (gnus-revision-number): Increment to 08. - * lisp/gnus-art.el (gnus-article-prepare-display): Undo the last - change - don't call `gnus-treat-article'. - -1999-05-17 Katsumi Yamaoka + * lisp/gnus-offline.el (TopLevel): Use `static-if', requiring + "static" at the compile time. + (gnus-offline-hangup-function): Abolish. + (gnus-offline-auto-ppp): New variable. + (gnus-offline-gnus-get-new-news): Refer to it. + (gnus-offline-set-unplugged-state): Ditto. + (gnus-offline-set-auto-ppp): New function. It replaces the + function `gnus-offline-toggle-auto-hangup'. + (gnus-offline-toggle-auto-hangup): Abolish. + (gnus-offline-define-menu-and-key): Use `static-if' and + `static-cond'. + (gnus-offline-popup-menu): Do not define this function under XEmacs. + (gnus-offline-popup): New function. + + * gnus-ofsetup.el (gnus-ofsetup-update-setting-file): Typo. + (gnus-ofsetup-resource-en): Fix doc strings. + (gnus-ofsetup-resource-ja): Ditto. + +1999-11-30 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 07. - * lisp/gnus-art.el (gnus-article-prepare-display): Call - `gnus-treat-article'. - -1999-05-17 Daiki Ueno - - * lisp/gnus-art.el (article-date-ut): Always detete the last - newline of any old Date fields. - -1999-05-17 Daiki Ueno - Tsukamoto Tetsuo - - * lisp/gnus.el (gnus-revision-number): Increment to 06. - - * lisp/mail-source.el (mail-source-keyword-map): New keyword - :connection for pop. It is introduced to enable SSL connection. - (mail-source-fetch-pop): Use it to bind `pop3-connection-type'. - - * lisp/pop3.el : Add an autoload for `open-ssl-stream' defined in - `ssl'. - (pop3-connection-type, pop3-ssl-program-arguments): New variables. - (pop3-open-ssl-stream-1, pop3-open-ssl-stream): New functions. - (pop3-open-server): Call the latter when `pop3-connection-type' is - ssl. - -1999-05-17 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 05. - (TopLevel): Remove autoloads for `gnus-picons-display-x-face' and - `gnus-picons-article-display-x-face'. - -1999-05-16 Tsukamoto Tetsuo - - * texi/gnusref-ja.tex (subsec Notes): Complete words. - (sec GroupMode): Translate description of "P". - -1999-05-15 Tsukamoto Tetsuo - - * texi/gnusref-ja.tex: Undo the last change. - -1999-05-15 Tsukamoto Tetsuo - - * texi/gnusref-ja.tex: Fix typo. - -1999-05-14 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 04. - - * lisp/*.el: Undo all of the last changes. - -1999-05-13 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 03. - - * lisp/nnsoup.el (nnsoup-store-reply): Use `forward-char' instead - of `backward-char'. - * lisp/message.el (message-send-news-with-gnus, - message-send-mail-with-smtp, message-send-mail-with-qmail, - message-send-mail-with-sendmail): Ditto. - * lisp/gnus-picon.el (gnus-group-display-picons): Ditto. - - * lisp/nnsoup.el (nnsoup-store-reply): Use `(bolp)' instead of - `(= (preceding-char) ?\n)'. - * lisp/message.el (message-send-news, message-send-mail): Ditto. - - * lisp/gnus-sum.el (gnus-summary-reparent-thread): Use - `(end-of-line 0)' to go to the end of the previous line. - - * lisp/nnmail.el (nnmail-decode-status): Don't use regexp search. - * lisp/message.el (message-next-header, message-remove-header): - Ditto. - * lisp/gnus-art.el (gnus-article-add-buttons-to-head, - gnus-article-highlight-headers, gnus-article-hide-header, - article-hide-boring-headers, article-hide-headers): Ditto. - - * lisp/nntp.el (nntp-snarf-error-message, nntp-read-server-type): - Use `buffer-substring' instead of `buffer-string'. - * lisp/nnspool.el (nnspool-inews-sentinel): Ditto. - * lisp/message.el (message-wash-subject, message-reply, - message-make-from, message-make-organization): Ditto. - * lisp/md5.el (md5): Ditto. - * lisp/mail-source.el (mail-source-movemail): Ditto. - * lisp/gnus.el (gnus-getenv-nntpserver): Ditto. - * lisp/gnus-xmas.el (gnus-xmas-article-display-xface): Ditto. - * lisp/gnus-util.el (gnus-mode-string-quote): Ditto. - * lisp/gnus-sum.el (gnus-summary-edit-article-done, - gnus-simplify-subject-fuzzy): Ditto. - * lisp/gnus-spec.el (gnus-parse-simple-format): Ditto. - * lisp/gnus-picon.el (gnus-picons-make-glyph): Ditto. - * lisp/gnus-msg.el (gnus-copy-article-buffer): Ditto. - * lisp/gnus-mh.el (gnus-summary-save-in-folder): Ditto. - * lisp/gnus-kill.el (gnus-kill-file-apply-buffer): Ditto. - * lisp/gnus-art.el (gnus-article-mime-edit-exit, - gnus-article-edit-exit): Ditto. - * lisp/format-spec.el (format-spec): Ditto. - * lisp/dgnushack.el (dgnushack-make-package): Ditto. - * lisp/base64.el (base64-decode, base64-encode, - base64-run-command-on-region): Ditto. - -1999-05-13 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 02. - - * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Don't specify - the authentication scheme if `password' is selected. - -1999-05-06 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 01. - - * texi/gnus-ja.texi: (gnus-summary-enter-digest-group): Change the - key assignment "C-d" into "A D". - (Article treatment): Document the new variable - `gnus-article-date-lapsed-new-header'. - - * lisp/mail-source.el: Use the original source without any changes. - - * lisp/gnus-art.el (article-hide-headers): To work toggle hiding. - - * README.T-gnus: Update what is the latest T-gnus. - -1999-05-04 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.064. - (gnus-revision-number): Fresh start from 00. - - * Sync up with Pterodactyl Gnus v0.84. - -1999-04-28 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 03. - - * lisp/gnus-vm.el (gnus-summary-save-in-vm): Use - `vm-read-file-name' instead of `read-file-name'. This allows to use - the optional sixth argument HISTORY for the various environments. - (gnus-summary-save-article-vm): Ditto. - (TopLevel): Autoload "vm" for the function `vm-read-file-name'. - -1999-04-27 Katsumi Yamaoka + * lisp/gnus-art.el (gnus-article-wash-status): Sync up with + Pterodactyl Gnus v0.98. - * lisp/gnus.el (gnus-revision-number): Increment to 02. - - * lisp/gnus-vm.el (gnus-summary-save-in-vm): To read the name of - FOLDER in the way of VM; give the value of `gnus-current-article' - to the function `gnus-summary-select-article' if it is called non - interactively. - (gnus-summary-save-article-vm): Accept the optional 2nd arg FOLDER. - If it is called interactively the name of FOLDER is read from the - minibuffer; bind `mime-display-header-hook', - `mime-display-text/plain-hook', `mime-text-decode-hook', - `mime-view-define-keymap-hook' and `mime-view-mode-hook' to nil - when the function `gnus-summary-save-article' is called. - (gnus-summary-save-article-vm-count, - gnus-summary-save-article-vm-folder): New internal variables. - (gnus-vm-make-folder): Bind `mime-display-header-hook', - `mime-display-text/plain-hook', `mime-text-decode-hook', - `mime-view-define-keymap-hook' and `mime-view-mode-hook' to nil - when the function `vm-mode' is called. - (vm-use-toolbar, vm-primary-inbox, vm-folder-history, - vm-folder-directory): Define variables for avoiding byte compile - warning. - (gnus-vm-inhibit-window-system): Abolish variable; don't require - `win-vm'. - (TopLevel): Don't autoload "vm" for the functions - `vm-forward-message', `vm-reply' or `vm-mail'; don't require - `sendmail', `message', `gnus' or `gnus-msg' but `gnus-art'. - -1999-04-20 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 01. - - * lisp/pop3.el (pop3-munge-message-separator): Don't put the - Content-Length field break into the other fields. - -1999-04-18 Sin'ya Kanematsu - - * texi/gnus-ja.texi: Fix typo - `gnus-auto-expirable-newgroups' -> - `gnus-auto-expirable-newsgroups'. - -1999-04-18 Katsumi Yamaoka +1999-11-30 Katsumi Yamaoka - * lisp/gnus.el (gnus-version-number): Update to 6.10.063. - (gnus-revision-number): Fresh start from 00. + * lisp/nnimap.el (nnimap-request-newgroups): Don't use `member-if'. - * Sync up with Pterodactyl Gnus v0.83. + * lisp/gnus.el (gnus-select-method): Use `if' instead of `when'. -1999-04-15 NAKAGAWA Tsuneo + * lisp/gnus-sum.el (gnus-summary-make-marking-command-1): Use + `car' and `cdr' instead of `cadr'. - * REDME.semi.ja: Fix where the required packages are. + * lisp/gnus-picon.el (gnus-picons-file-suffixes): Use `cons' + instead of `push'; use `if' instead of `when'. -1999-04-13 Katsumi Yamaoka + * lisp/gnus-group.el (gnus-group-iterate): Use `car' and `cdr' + instead of `pop'. + (gnus-useful-groups): Use `or' instead of `unless'. - * lisp/gnus.el (gnus-revision-number): Increment to 09. - -1999-04-13 Keiichi Suzuki - - * lisp/gnus-sum.el (gnus-summary-move-article): Fix, - `gnus-article-mark-lists' will be broken by side effect. - -1999-04-09 Katsumi Yamaoka + * lisp/gnus-art.el (gnus-emphasis-alist): Use `car' and `cdr' + instead of `cadr'. - * lisp/gnus.el (gnus-revision-number): Increment to 08. - - * lisp/gnus-art.el (TopLevel): Remove symbol's function definition - for `gnus-article-mime-decode-quoted-printable'. +1999-11-30 Katsumi Yamaoka -1999-04-05 Katsumi Yamaoka + * lisp/gnus-start.el (save-buffers-kill-emacs): Don't use the macro + `when' in the body of `defadvice'. Use `if' instead. - * lisp/gnus.el (gnus-revision-number): Increment to 07. + * lisp/dgnushack.el (last, mapc): New compiler macros for emulating + cl functions. -1999-03-30 Yoshiki Hayashi +1999-11-29 Katsumi Yamaoka - * texi/gnus-ja.texi: Some fixes. + * lisp/gnus-start.el (gnus-after-getting-new-news-hook): Don't use + the macro `when' in the arg of `defcustom'. Use `if' instead. -1999-03-26 Katsumi Yamaoka +1999-11-27 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 06. - * lisp/pop3.el (pop3-munge-message-separator): If a retrieved - message has a illegal date field, use `(current-time)' instead. + * lisp/gnus-art.el (gnus-signature-toggle): Specify the 4th arg of + `next-single-property-change' LIMIT as `point-max'. + (gnus-article-prepare-mime-display): Ditto. + (article-hide-signature): Ditto. -1999-03-25 Katsumi Yamaoka +1999-11-26 NAKAJI Hiroyuki - * lisp/message.el (message-send): Kill `message-encoding-buffer' - after sending. + * lisp/gnus.el (gnus-version): Parentheses of gnus-revision-number + are removed to fill gnus-version within 80 columns. -1999-03-25 Katsumi Yamaoka +1999-11-25 NAKAJI Hiroyuki - * lisp/message.el (message-maybe-encode): Inherit the buffer local - variable `mime-edit-pgp-processing' and call - `mime-edit-pgp-enclose-buffer'. + * lisp/gnus.el (gnus-version): Shows also gnus-revision-number. -1999-03-24 Katsumi Yamaoka +1999-11-24 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 05. - * lisp/gnus-art.el (gnus-article-display-mime-message): Set up the - buffer local variable `default-mime-charset' of - `gnus-article-buffer' before `mime-display-message' is called. + * lisp/gnus-agent.el (gnus-agent-fetch-headers): Use `gnus-union' + instead of `union'. - * lisp/gnus-i18n.el (gnus-newsgroup-default-charset-alist): Be also - matched with the group name which has a method name and/or a - foreign server name. - (gnus-set-summary-default-charset): Cancel the last change. + * lisp/gnus-util.el (gnus-union): New function. -1999-03-24 Katsumi Yamaoka + * lisp/gnus-sum.el (gnus-summary-exit-no-update): Use + `copy-sequence' instead of `copy-list'. + * lisp/gnus-art.el (gnus-article-setup-highlight-words): Ditto. - * lisp/gnus.el (gnus-revision-number): Increment to 04. + * lisp/dgnushack.el (union, copy-list): Remove compiler macros. - * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Strip - method and foreign server name from the newsgroup name. +1999-11-24 Katsumi Yamaoka -1999-03-22 Tsukamoto Tetsuo + * lisp/gnus.el (gnus-revision-number): Increment to 04. - * lisp/gnus-offline.el (gnus-offline-popup-menu): Fix. + * lisp/dgnushack.el (union, copy-list): New compiler macros for + emulating cl functions. -1999-03-22 Tsukamoto Tetsuo +1999-11-22 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 03. + (gnus-select-method): Use `condition-case' instead of + `ignore-errors'. - * lisp/gnus-offline.el (gnus-offline-popup-menu): Modify so that - the title of a popup menu is displayed under Emacs 19.34. - (gnus-offline-define-menu-and-key): Rewrite the function to change - the behavior of "Get new news" button, under XEmacs. - - * lisp/gnus-ofsetup.el: Modify for Semi-gnus 6.10.xx so that - `pop3-fma-password' can be saved in .newsrc.eld. - - * README-offline.en: Update. - * README-offline.ja: Ditto. - -1999-03-09 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 02. - - * lisp/message.el (message-yank-original): Keep the existing - references. - -1999-03-04 Katsumi Yamaoka + * lisp/gnus-start.el (gnus-site-init-file): Use `condition-case' + instead of `ignore-errors'. - * lisp/gnus.el (gnus-revision-number): Increment to 01. - (gnus-other-frame): Rewrite on the model of `toolbar-gnus'. - (gnus-frame): New internal variable. - (gnus-frame-properties): New user option. + * lisp/{gnus-ofsetup.el,gnus-offline.el}: Remove RCS magic cookie. -1999-03-04 Katsumi Yamaoka + * lisp/{time-date.el,smiley.el,score-mode.el,pop3.el,nnweb.el, + nnvirtual.el,nntp.el,nnspool.el,nnsoup.el,nnoo.el,nnml.el,nnmh.el, + nnmbox.el,nnmail.el,nnlistserv.el,nnimap.el,nnheader.el, + nneething.el,nndraft.el,nndoc.el,nnbabyl.el,message.el,imap.el, + gnus-win.el,gnus-vm.el,gnus-util.el,gnus-topic.el,gnus-sum.el, + gnus-start.el,gnus-srvr.el,gnus-spec.el,gnus-score.el,gnus-salt.el, + gnus-range.el,gnus-picon.el,gnus-ofsetup.el,gnus-offline.el, + gnus-msg.el,gnus-mlspl.el,gnus-mailcap.el,gnus-logic.el, + gnus-kill.el,gnus-group.el,gnus-cite.el,gnus-async.el,gnus-art.el, + gnus-agent.el,earcon.el}: Require `cl' using `eval-when-compile'. - * lisp/gnus.el (gnus-version-number): Update to 6.10.062. - (gnus-revision-number): Fresh start from 00. +1999-11-22 Katsumi Yamaoka - * Sync up with Pterodactyl Gnus v0.80. - - * lisp/gnus-sum.el (gnus-summary-edit-article): Don't use - `mime-to-mml' nor `mml-to-mime'. + * lisp/gnus.el (gnus-revision-number): Increment to 02. -1999-03-02 Katsumi Yamaoka + * lisp/{time-date.el,smiley.el,pop3.el,nnweb.el,nnvirtual.el, + nntp.el,nnspool.el,nnsoup.el,nnoo.el,nnml.el,nnmh.el,nnmbox.el, + nnmail.el,nnlistserv.el,nnimap.el,nnheader.el,nneething.el, + nndoc.el,nnbabyl.el,message.el,imap.el,gnus.el,gnus-win.el, + gnus-util.el,gnus-topic.el,gnus-sum.el,gnus-start.el,gnus-srvr.el, + gnus-spec.el,gnus-score.el,gnus-salt.el,gnus-range.el, + gnus-picon.el,gnus-ofsetup.el,gnus-offline.el,gnus-mlspl.el, + gnus-mailcap.el,gnus-logic.el,gnus-kill.el,gnus-group.el, + gnus-cite.el,gnus-async.el,gnus-art.el,gnus-agent.el,earcon.el}: + Require `cl' at the top level. + + * lisp/gnus.el (gnus-select-method): Undo last change. + * lisp/gnus-util.el (copy-list): Undo last change (remove it). + * lisp/gnus-start.el (gnus-site-init-file): Undo last change. + + * lisp/gnus-ems.el (gnus-split-string): Remove. + +1999-11-21 Daiki Ueno + + * lisp/pop3.el: Add description about STLS extension; add autoload + setting for `starttls-open-stream' and `starttls-negotiate'. + (pop3-stls): New function. + (pop3-open-tls-stream): New function. + (pop3-open-server): Use `pop3-open-tls-stream' if + 'pop3-connection-type' is bound to `tls'. + +1999-11-20 Daiki Ueno + + * lisp/imap.el: Add autoload setting for `starttls-open-stream' + and `starttls-negotiate'. + (imap-stream-alist): Add TLS entry. + (imap-tls-p): New function. + (imap-tls-open): New function. + (imap-ssl-open): Enclose `open-ssl-stream' with + `as-binary-process'. - * lisp/gnus.el (gnus-revision-number): Increment to 03. +1999-11-19 Katsumi Yamaoka - * lisp/gnus-sum.el (gnus-select-newsgroup): Examine cached articles - with `gnus-cache-articles-in-group' if the current group is not - a virtual group. - (TopLevel): Autoload `gnus-cache-articles-in-group' + * lisp/gnus.el (gnus-revision-number): Increment to 01. + (gnus-select-method): Use `condition-case' instead of + `ignore-errors'. -1999-03-01 Katsumi Yamaoka + * lisp/pop3.el (pop3-apop): Move the autoload seting to the top + level. - * lisp/gnus.el (gnus-revision-number): Increment to 02. + * lisp/md5.el (md5): Allow the optional 4th and 5th arguments + `coding' and `noerror' for the stopgaps. - * texi/gnus-ja.texi: Sync up with Semi-gnus 6.10. + * lisp/lpath.el (md5): Allow the optional 4th and 5th arguments + `coding' and `noerror'. + (function-max-args): Maybe-fbind for FSF Emacsen. - * lisp/dgnushack.el (dgnushack-install-package): Don't refer to - `configure-package-path'. Use `early-packages', `late-packages' or - `last-packages' instead. + * lisp/imap.el (imap-cram-md5-auth): Specify the 4th arg to `md5' + as `binary' if possible. + (imap-log): Default to nil (synched with pgnus 0.99). + (base64-decode-string): Autoload "mel" instead of "base64". + (md5): Autoload "md5" without `eval-and-compile'. -1999-03-01 Katsumi Yamaoka + * lisp/gnus-util.el (copy-list): New function defined by + `defun-maybe'. - * lisp/gnus.el (gnus-revision-number): Increment to 01. + * lisp/gnus-sum.el (gnus-update-summary-mark-positions): Specify + the 3rd arg of `make-full-mail-header' to "nobody" instead of "". - * lisp/message.el (messgage-inhibit-body-encoding): Default to t. - (message-mode): Abolish `message-mime-attach-file' from doc - string. - (message-mode-map): Abolish `message-mime-attach-file' from - `message-mode-menu'. + * lisp/gnus-start.el (gnus-site-init-file): Use `condition-case' + instead of `ignore-errors'. - * lisp/gnus-start.el (save-buffer-as-coding-system): Abolished. It - is given in APEL 9.13 by now. + * lisp/gnus-picon.el: Require `cl'. - * lisp/gnus-ems.el (gnus-decode-coding-string): Abolished. - (gnus-encode-coding-string): Abolished. - (gnus-mule-cite-add-face): Restored. - (gnus-cite-add-face): Restored. + * lisp/{smiley.el,rfc2104.el,nnvirtual.el,mailheader.el, + gnus-offline.el} (cl): Enclose the requiring procedure with + `eval-when-compile'. - * README.semi.ja: Note that APEL 9.13 or later is required. - * README.semi: Ditto. - * README.T-gnus: Ditto. + * lisp/{imap.el,gnus-mailcap.el} (cl): Enclose the requiring + procedure with `eval-when-compile' instead of `eval-and-compile'. -1999-02-27 Tatsuya Ichikawa +1999-11-09 Yoshiki Hayashi - * lisp/gnus.el (gnus-version-number): Update to 6.10.061. - (gnus-revision-number): Fresh start from 00. + * lisp/read-passwd.el (read-pw-set-mail-source-passwd-cache): + Use mail-sources instead of nnmail-spool-file. + From: Toshiaki -PCX- Tanaka. - * Sync up with Pterodactyl Gnus v0.79. +1999-11-09 Katsumi Yamaoka -1999-02-27 Tatsuya Ichikawa + * lisp/gnus.el (gnus-group-startup-message): Insert space before + "based on". + * lisp/gnus-xmas.el (gnus-xmas-group-startup-message): Ditto. - * lisp/gnus.el (gnus-version-number): Update to 6.10.060. - (gnus-revision-number): Fresh start from 00. +1999-11-09 Katsumi Yamaoka - * Sync up with Pterodactyl Gnus v0.78. + * lisp/gnus.el (gnus-version-number): Update to 6.13.3. + (gnus-revision-number): Clear to 00. -1999-02-26 Katsumi Yamaoka + * README.T-gnus: Update. - * lisp/gnus.el (gnus-revision-number): Increment to 05. + * lisp/{rfc1843.el,qp.el,nntp.el,nnmail.el,nnfolder.el,nnagent.el, + mml.el,mm-view.el,mm-uu.el,mm-util.el,mm-decode.el,mm-bodies.el, + message.el,mail-source.el,lpath.el,gnus-util.el,gnus-topic.el, + gnus-sum.el,gnus-start.el,gnus-srvr.el,gnus-msg.el,gnus-mailcap.el, + gnus-group.el,gnus-art.el,gnus-agent.el,dgnushack.el,binhex.el, + ChangeLog}: Sync up with Pterodactyl Gnus v0.98. - * Makefile.in (add-info-suffix, remove-info-suffix): New targets. - (package, install-package, package-ja, install-package-ja): Use - them. - (xinfo, xinfo-ja): Only build infos. + * lisp/{rfc2104.el,nnimap.el,imap.el}: New files. - * texi/Makefile.in (add-info-suffix): Chdir ../lisp first. + * texi/gnus-ja.texi: Sync up with Pterodactyl Gnus v0.98 without + translation. - * lisp/dgnushack.el (dgnushack-add-info-suffix-maybe): Chdir - ../texi first. - (dgnushack-install-package): Don't refer to `package-path'; error - if the package path does not found. - (TopLevel): Don't define `gnus-revision-number', - `gnus-version-number' and `package-path'. + * texi/{gnus.texi,ChangeLog}: Sync up with Pterodactyl Gnus v0.98. -1999-02-24 Tatsuya Ichikawa +1999-11-08 Kinji Itoh - * README.ichikawa : Removed. + * lisp/gnus-draft.el (gnus-draft-edit-message): Use + `message-save-drafts' instead of `set-buffer-modified-p' and + `save-buffer'. + * lisp/message.el (message-save-drafts): Insert In-Reply-To header + because the reply data is lost in Drafts. + * lisp/gnus-art.el (gnus-signature-face): Don't check + window-system type. - * README.T-gnus : Renamed from README.ichikawa - Remove description about T-gnus 6.8. +1999-11-08 Daiki Ueno -1999-02-24 Katsumi Yamaoka + * lisp/pop3.el (pop3-progress-message): New function. + (pop3-movemail): Use it. - * lisp/gnus.el (gnus-revision-number): Increment to 04. +1999-10-28 Katsumi Yamaoka - * Makefile.in (xinfo, xinfo-ja): Make add-info-suffix, formatting, - and make remove-info-suffix. + * lisp/gnus.el (TopLevel): Autolaod "gnus-msg" for the function + `gnus-following-method'. - * texi/Makefile.in (.texi): Don't specify the output filename when - makeinfo command is used. - (add-info-suffix, remove-info-suffix): New targets. + * lisp/gnus-msg.el (gnus-following-method): Move from gnus-msg.el; + wide reply as a mail if the message is not a news; use the macro + `gnus-setup-message'. - * lisp/dgnushack.el (dgnushack-add-info-suffix-maybe): New - function. It will be used for adding ".info" suffix to @setfilename - line in each .texi files. - (dgnushack-texi-file-regexp): New constant. - (dgnushack-info-file-regexp): Add ".info" suffix. + * lisp/gnus-art.el (gnus-following-method): Move to gnus-msg.el. -1999-02-24 Katsumi Yamaoka +1999-10-26 Katsumi Yamaoka - * lisp/gnus.el (gnus-revision-number): Increment to 03. + * lisp/gnus.el (gnus-revision-number): Increment to 14. + (TopLevel): Autoload "gnus-bitmap" instead of "smiley-mule" for the + function `gnus-smiley-display'. - * lisp/Makefile.in (all, total): Remove "auto-autoloads.el" and - "custom-load.el" as well. + * lisp/gnus-art.el (gnus-treat-display-smileys): Default to nil if + `window-system' is nil. + (gnus-article-x-face-command): Default to external command if + `window-system' is nil. - * Makefile.in (xlick, xinfo, xinfo-ja): New targets. - (install-package-ja, package-ja, install-package, package): Use - them; use $XEMACS instead of $EMACS. - (osome): Use $XEMACS instead of "xemacs21". - (x): Ditto. - (XEMACS): Use "xemacs" instead of "xemacs21" in default. +1999-10-26 Katsumi Yamaoka - * lisp/dgnushack.el (dgnushack-install-package): Remove extra files - in destination lisp directory. - (dgnushack-make-package): Don't generate "_pkg.el" file; don't - remove "auto-autoloads.el*" files. - (dgnushack-compile): Don't remove "_pkg.el" from the list. + * lisp/gnus.el (gnus-revision-number): Increment to 13. + (TopLevel): Rearrange autoload settings. -1999-02-23 Katsumi Yamaoka + * lisp/gnus-art.el (gnus-treatment-function-alist): Don't use + `smiley-buffer'. - * lisp/gnus.el (gnus-revision-number): Increment to 02. + * lisp/gnus-sum.el (gnus-summary-make-menu-bar): Add button + "Toggle smileys" in "Washing" menu. + (gnus-summary-wash-map): Add "s" key for `smiley-toggle-buffer'. - * lisp/mail-source.el (mail-source-fetch-pop): Fix typo in original - source and merged it. + * lisp/smiley.el (gnus-smiley-display): Use `smiley-toggle-buffer'. + (smiley-toggle-buffer): New function. + (smiley-buffer): Don't quote the function. + (smiley-toggle-extents): Ditto. - * README.ichikawa: Update description about the latest T-gnus. +1999-10-24 Tsukamoto Tetsuo -1999-02-22 Tatsuya Ichikawa + * lisp/gnus.el (gnus-revision-number): Increment to 12. + (TopLevel): Add and delete autoloads for functions defined in + "gnus-cus", "gnus-offline", "miee", "pop3-fma" and "mw32misc". - * lisp/gnus-art.el (gnus-narrow-to-page): Fix that "^L" do not work. + * lisp/gnus-offline.el (TopLevel): Do not consider the functions + defined in "miee". - * lisp/gnus.el (gnus-revision-number): Increment to 01. + * lisp/gnus-ofsetup.el (TopLEvel): Do not autoload + `gnus-custom-mode' defined in "gnus-cus". -1999-02-21 Tatsuya Ichikawa +1999-10-21 Tsukamoto Tetsuo - * lisp/mail-source.el (mail-source-fetch-pop): Comment out - postscript block - I don't know why it does not work. - There is no Bug report from ding ML. + * lisp/gnus.el (gnus-revision-number): Increment to 11. - * lisp/gnus.el (gnus-version-number): Update to 6.10.059. - (gnus-revision-number): Fresh start from 00. + * lisp/gnus-offline.el (TopLevel): Call `mime-set-field-decoder' + when "eword-decode" is loaded. It is for X-Gnus-Offline-Backend + header. - * Sync up with Pterodactyl Gnus v0.77. +1999-10-19 Katsumi Yamaoka -1999-02-18 Tsukamoto Tetsuo + * lisp/gnus.el (gnus-revision-number): Increment to 10. + (TopLevel): Autoload "x-face-mule" and "smiley-mule" for the + functions `x-face-mule-gnus-article-display-x-face' and + `smiley-buffer'. + + * lisp/lpath.el (smiley-encode-buffer): Bind it for FSF Emacsen. + + * lisp/gnus-ems.el (gnus-group-startup-message): Don't replace with + `gnus-mule-group-startup-message'. + (gnus-mule-group-startup-message): Remove. + (gnus-mule-bitmap-image-file): Remove. + + * lisp/gnus-msg.el (gnus-copy-article-buffer): Encode smileys to + ordinary text if the feature `smiley-mule' is provided and FSF + Emacs is used. + (TopLevel): Require `static' at the compile time. + + * lisp/gnus-art.el (gnus-article-prepare-display): Bind + `mime-display-text/plain-hook' to nil. + (gnus-article-prepare-mime-display): Use `let' instead of `let*'; + treat the next entity position as a marker. + (gnus-treatment-function-alist): Use `smiley-buffer' instead of + `gnus-smiley-display' under FSF Emacsen. + (gnus-treat-display-smileys): Default to t if the module + `smiley-mule' is installed. + (gnus-treat-display-xface): Default to `head' if the value of + `gnus-article-x-face-command' is + `x-face-mule-gnus-article-display-x-face'. + (gnus-article-x-face-command): Default to + `x-face-mule-gnus-article-display-x-face' if the module + `x-face-mule' is installed. + (TopLevel): Require `static' first; require `path-util'. + +1999-10-18 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 09. - * lisp/gnus-start.el (save-buffers-kill-emacs): Rewrite the - advice. Call `gnus-offer-save-summaries'. - -1999-02-18 Tsukamoto Tetsuo + * lisp/message.el (message-mode): Make + `message-font-lock-last-position' as buffer local. + (message-font-lock-keywords-2): Use + `message-font-lock-cited-text-matcher' instead of regexp. + (message-font-lock-cited-text-matcher): New function. + (font-lock-after-change-function): Advice to the keep last cursor + position in `message-font-lock-last-position' before fontifying. + (message-font-lock-last-position): New variable. + (message-font-lock-citation-name-max-column): New variable. + (message-font-lock-cited-text-regexp): New variable. + (message-font-lock-fence-close-position): New variable. + (message-font-lock-fence-open-position): New variable. + (message-font-lock-fence-close-regexp): New variable. + (message-font-lock-fence-open-regexp): New variables. + +1999-10-04 Masatoshi Tsuchiya + + * lisp/message.el (message-mode): Rearrange `font-lock-defaults' + using `message-font-lock-keywords', `message-font-lock-keywords-1' + and `message-font-lock-keywords-2'. + (message-font-lock-keywords): Restruct. + (message-font-lock-keywords-1): New variable split from + `message-font-lock-keywords'. + (message-font-lock-keywords-2): Ditto. + +1999-10-11 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 08. - * lisp/gnus-start.el (save-buffers-kill-emacs): Advice. Call - `gnus-save-newsrc-file' before `save-some-buffers' is called. - - * README-offline.en: Update. - - * README-offline.ja: Fix typo. + * lisp/gnus-art.el (gnus-treat-article): Buttonize the signature + before highlighting or hiding it. + (gnus-article-buttonize-signature): New function. + (gnus-article-highlight-signature): Don't buttonize. + (gnus-treatment-function-alist): Undo the last change. + (gnus-treat-emphasize): Default to nil. - * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Set - `gnus-offline-hangup-program' and `gnus-offline-dialup-program' to - nil when null string is given. - -1999-02-18 Tatsuya Ichikawa - - * texi/Makefile.in: Change to work on Windows environment and - other platforms. +1999-10-08 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 07. - -1999-02-17 Katsumi Yamaoka - - * lisp/dgnushack.el (dgnushack-make-package): Fix typo. - -1999-02-17 Katsumi Yamaoka + (TopLevel): Autoload "gnus-art" for the function + `gnus-article-show-all'. + + * lisp/gnus-sum.el (gnus-summary-select-article): Expose all + hidden text if the command `gnus-summary-toggle-mime' is used. + + * lisp/gnus-art.el (gnus-signature-toggle): Don't hide the + following parts. + (gnus-article-highlight-signature): Work for forwarded messages. + (gnus-article-show-all): New function based on `article-show-all'. + (gnus-article-show-all-headers): Based on + `article-show-all-headers'. + (article-show-all-headers): New function to show all *HEADERS*. + (article-show-all): Show *ALL* literally. + (article-hide-signature): Work for forwarded messages. + (gnus-treatment-function-alist): Put `gnus-treat-hide-signature' + off after `gnus-treat-highlight-signature'. + +1999-10-08 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 06. - * Makefile.in (install-package-ja, package-ja, install-package, - package): New targets. - (PACKAGEDIR): New user option. + * lisp/gnus-art.el (gnus-article-prepare-mime-display): Protect + against forwarded messages without MIME structure. + (gnus-treatment-function-alist): Move + 'gnus-treat-decode-article-as-default-mime-charset' to the top; + put `gnus-treat-emphasize' off after + `gnus-treat-highlight-headers'. - * lisp/Makefile.in (install-package, package): New targets. - (PACKAGEDIR): New user option. +1999-10-07 Yoshiki Hayashi - * lisp/dgnushack.el (dgnushack-install-package): New function. - (dgnushack-make-package): New function. - (dgnushack-info-file-regexp): New constant. - (dgnushack-compile): Remove "_pkg.el" from the list. + * lisp/gnus.el (gnus-revision-number): Increment to 05. - * configure: Regenerate by autoconf-2.13. +1999-10-07 Katsumi Yamaoka -1999-02-17 Yoshiki Hayashi + * lisp/gnus-art.el (gnus-treat-predicate): Examine whether the + argument is list or not before condition. - * aclocal.m4: install .el files to site-lisp/gnus instead of - site-lisp. - * Makefile.in: add new rule `all-ja'. +1999-10-07 Yoshiki Hayashi -1999-02-15 Tatsuya Ichikawa + * lisp/gnus-art.el (gnus-treat-predicate): Work for + (typep "something"). - * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Bug fix when - using nnspool. +1999-10-07 Yoshiki Hayashi - * lisp/gnus.el (gnus-revision-number): Increment to 05. + * lisp/gnus-art.el (gnus-article-prepare-display): + Pass argument nil as a condition to gnus-treat-article. + * lisp/gnus-art.el (gnus-article-prepare-mime-display): + Ditto. Also, treat last part of multipart article correctly. -1999-02-12 Tatsuya Ichikawa +1999-10-06 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 04. - * lisp/read-passwd.el: Change location of (provide 'read-passwd) - - * lisp/gnus-offline.el: ditto. + * lisp/message.el (message-generate-headers): Don't insert + excessive newline. -1999-02-12 Hidekazu Nakamura + * lisp/gnus-xmas.el (gnus-xmas-group-startup-message): Don't use + negative number for the 2nd arg of `insert-char'. - * lisp/gnus-ofsetup.el (gnus-setup-for-offline): To work with APOP - authentication scheme. +1999-10-06 Tsukamoto Tetsuo - * lisp/read-passwd..el (read-pw-set-mail-source-passwd-cache): - Undo my change. + * lisp/gnus-ofsetup.el (gnus-ofsetup-customize): Info link to + gnus-ja instead of gnus if Japanese environment is on. -1999-02-12 Katsumi Yamaoka +1999-10-06 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 03. + (semi-gnus-developers): Remove. + (gnus-maintainer): Change mail address. + (gnus-group-startup-message): Display version string. - * lisp/gnus-sum.el (gnus-summary-mode-map): Bound the command - `gnus-article-hide-headers' to "t". + * lisp/gnus-msg.el (gnus-bug): Delete `Cc'; modify version string. - * lisp/gnus-art.el (article-hide-headers): Show all headers when - unhiding. + * lisp/gnus-xmas.el (gnus-xmas-group-startup-message): Display + version string; fix glyph position. - * texi/gnus.texi: Fix latin chars. +1999-10-06 Yoshiki Hayashi -1999-02-12 Katsumi Yamaoka + * lisp/gnus-sum.el (gnus-read-move-group-name): Revert + to previous version until problem of respooling from + nnimap to nnml is solved. + (gnus-summary-move-article): Ditto. + +1999-10-05 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 02. - * texi/emacs-mime.texi: Fix latin chars. + * lisp/gnus-art.el (gnus-treat-predicate): Check whether arg's + value is t before checking for `condition'. + (gnus-article-prepare-mime-display): Search for the entity children + if the primary type is `multipart'. -1999-02-12 Tatsuya Ichikawa +1999-10-01 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 01. - * lisp/gnus-sum.el (gnus-nov-parse-line): Use - `nnheader-nov-read-message-id' instead of `nnheader-nov-field' or - `nnheader-generate-fake-message-id'; use `(eobp)' instead of - `(eq (char-after) ?\n)'. + * lisp/gnus-sum.el (gnus-read-move-group-name): Returns nil + instead of signaling an error if the destination group is not + newly created. + (gnus-summary-move-article): Do nothing if the destination group + is not newly created. -1999-02-11 Tatsuya Ichikawa + * lisp/gnus-msg.el (gnus-bug): Use text/plain for the snooped + environment part. - * lisp/gnus.el (gnus-version-number): Update to 6.10.058. - (gnus-revision-number): Fresh start from 00. +1999-09-30 Daiki Ueno - * lisp/message.el (message-forward): Get back to the previous - design. - * lisp/gnus-msg.el (gnus-summary-mail-forward): Ditto. + * nnfolder.el (nnfolder-possibly-change-group): Don't create an + active entry for the group even if it doesn't exist. - * lisp/mail-source.el (mail-source-fetch-pop): Ignore program and - authentication scheme.. +1999-09-28 Daiki Ueno - * lisp/message.el (message-forward-start-separator): Restored. - (message-forward-end-separator): Restored. - (message-signature-before-forwarded-message): Restored. - (message-included-forward-headers): Restored. + * gnus-art.el (gnus-article-mime-part-status): Use `mime-entity-children'. - * lisp/message.el (message-make-forward-subject): Use "(none)" if - the original article has no subject. +1999-09-28 Katsumi Yamaoka - * Sync up with Pterodactyl Gnus v0.76. + * lisp/gnus.el (gnus-version-number): Update to 6.13.2. + (gnus-revision-number): Clear to 00. - * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Change for pGnus 0.76. + * README.T-gnus: Update. -1999-02-09 Katsumi Yamaoka + * texi/{message.texi,message-ja.texi,gnus.texi,gnus-ja.texi, + emacs-mime.texi,ChangeLog}: Sync up with Pterodactyl Gnus v0.97. - * lisp/gnus.el (gnus-revision-number): Increment to 08. + * lisp/{qp.el,nntp.el,nnmail.el,mml.el,mm-util.el,mm-encode.el, + mm-decode.el,message.el,mail-source.el,gnus.el,gnus-xmas.el, + gnus-util.el,gnus-sum.el,gnus-srvr.el,gnus-score.el,gnus-nocem.el, + gnus-msg.el,gnus-group.el,gnus-cache.el,gnus-art.el,gnus-agent.el, + ChangeLog}: Sync up with Pterodactyl Gnus v0.97. - * lisp/score-mode.el (gnus-score-edit-exit): Use - `save-buffer-as-coding-system' instead of - `write-region-as-coding-system'. - * lisp/gnus-start.el (gnus-save-newsrc-file): Ditto. +1999-09-24 Katsumi Yamaoka - * lisp/gnus-start.el (save-buffer-as-coding-system): New function - defined with `defun-maybe'. NOTE: It should be deleted in the - future. + * lisp/gnus.el (gnus-revision-number): Increment to 07. - * lisp/gnus-sum.el (TopLevel): Require `mime-play' when compile. + * lisp/gnus-art.el (gnus-article-prev-page): Rewrite to realize + smooth scrolling under XEmacs. + (gnus-article-next-page):Ditto. -1999-02-09 Katsumi Yamaoka + * Mule23@1934.en, Mule23@1934.ja: Separate from Mule23@1934; add + descriptions about the problem of loaddefs.el and the patch for + CUSTOM 1.9962. - * lisp/gnus.el (gnus-revision-number): Increment to 07. +1999-09-22 Katsumi Yamaoka - * lisp/gnus-sum.el (gnus-mime-extract-message/rfc822): New - implementation. + * lisp/gnus.el (gnus-revision-number): Increment to 06. -1999-02-08 Katsumi Yamaoka + * lisp/nnmail.el (TopLevel): Bind keywords `:user', `:path' and + `:predicate' for old Emacsen; require `static'. - * lisp/gnus.el (gnus-revision-number): Increment to 06. + * lisp/dgnushack.el (TopLevel): Don't bind keywords `:user', + `:path' and `:predicate'. -1999-02-08 Masatoshi Tsuchiya +1999-09-20 Daiki Ueno - * lisp/gnus-sum.el (gnus-articles-to-read): Use maximum number in - default instead of `gnus-large-newsgroup'. + * gnus-agent.el (gnus-agent-toggle-plugged): Mark the current + modeline as modified. -1999-02-08 Katsumi Yamaoka +1999-09-17 Katsumi Yamaoka * lisp/gnus.el (gnus-revision-number): Increment to 05. -1999-02-08 Masatoshi Tsuchiya , - Katsumi Yamaoka , - Keiichi Suzuki + * lisp/gnus-art.el (gnus-treat-article): Inherit the text property + `mime-view-entity' in the modified header under FSF Emacsen. - * lisp/gnus-sum.el (gnus-articles-to-read): If the number of - unread articles is more than `gnus-large-newsgroup', use it in - default instead of the maximum number. +1999-09-13 Tsukamoto Tetsuo -1999-02-08 MORIOKA Tomohiko , - Katsumi Yamaoka - - * lisp/gnus-sum.el (gnus-mime-extract-multipart): New function; - add it to the acting-condition for extracting mulitpart messages. - (gnus-mime-extract-message/rfc822): New function; add it to the - acting-condition for extracting message/rfc822 or message/news. + * README-offline.en: Rewrite the usage description. + * README-offline.ja: Ditto. -1999-02-08 Tatsuya Ichikawa +1999-09-12 Tsukamoto Tetsuo * lisp/gnus.el (gnus-revision-number): Increment to 04. - * lisp/nntp.el: Change nnmail-read-passwd -> mail-source-read-passwd. - -1999-02-08 Tsukamoto Tetsuo - - * README-offline.ja: Change for current version. - * README-offline.en: Ditto. - -1999-02-07 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-revision-number): Increment to 03. - -1999-02-04 Tsukamoto Tetsuo - - * lisp/gnus-offline.el: Delete security notice. - (gnus-offline-pop-password-file): Removed. - (gnus-offline-pop-password-decoding-function): Removed. - (gnus-offline-gnus-get-new-news): Revert to its original. - -1999-02-04 Katsumi Yamaoka - - * lisp/gnus.el (gnus-revision-number): Increment to 02. + * lisp/gnus-ofsetup.el (gnus-offline-lang): Declare before loading + `gnus-offline'. -1999-02-04 YOSHIZAWA Masahiro +1999-09-12 Tsukamoto Tetsuo - * README-offline.en: New description. + * README-offline.en: Do not refer to `gnus-agent-toggle-plugged'. * README-offline.ja: Ditto. -1999-02-03 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-revision-number): Change to 01 - - * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Add default value. - -1999-02-03 Tatsuya Ichikawa +1999-09-11 Tsukamoto Tetsuo - * lisp/gnus.el (gnus-revision-number): New constant. - -1999-02-02 Tatsuya Ichikawa - - * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Ask save password - information to .newsrc file. + * lisp/gnus.el (gnus-revision-number): Increment to 03. - * lisp/gnus.el (gnus-variable-list): Undo my last change. + * lisp/gnus-agent.el (gnus-agent-toggle-plugged): Do not mark + the current buffer as modified. - * lisp/read-password.el (read-pw-set-mail-source-passwd-cache): Do - not input password if mail-source-password-cache is non nil. + * lisp/gnus-offline.el (gnus-offline-menu): New variable. + (gnus-offline-get-menu-items): New function. + (gnus-offline-define-menu-on-miee): Use it. + (gnus-offline-define-menu-on-agent): Ditto. -1999-02-03 Hidekazu Nakamura +1999-09-04 Daiki Ueno - * lisp/read-passwd.el (read-pw-set-mail-source-passwd-cache): To - work with APOP authentication scheme. + * lisp/gnus-msg.el (gnus-configure-posting-styles): Quote `:file'. -1999-02-02 Tatsuya Ichikawa + * lisp/pop3.el (pop3-save-uidls): Don't use `dotimes' to check + backets of `pop3-uidl-obarray'; don't clear `pop3-uidl-obarray'. + (pop3-quit): Clear `pop3-uidl-obarray'. - * lisp/gnus-ofsetup.el (gnus-setup-for-offline): To work with - external movemail program. +1999-09-03 Tsukamoto Tetsuo - * lisp/gnus.el (gnus-variable-list): Add - mail-source-password-cache to save password information. + * lisp/gnus.el (gnus-revision-number): Increment to 02. -1999-02-01 Katsumi Yamaoka + * lisp/gnus-offline.el (gnus-offline-resource-en, + gnus-offline-resource-ja, + gnus-offline-resource-ja_complete): New variables. + (gnus-offline-get-message): News function. + (gnus-offline-error-check): Use it. + (gnus-offline-connect-server): Ditto. + (gnus-offline-get-new-news-function): Ditto. + (gnus-offline-set-mail-group-level): Ditto. + (gnus-offline-hangup-line): Ditto. + (gnus-offline-after-jobs-done): Ditto. + (gnus-offline-toggle-auto-hangup): Ditto. + (gnus-offline-toggle-on/off-send-mail): Ditto. + (gnus-offline-toggle-articles-to-fetch): Ditto. + (gnus-offline-empting-spool): Ditto. + (gnus-offline-set-interval-time): Ditto. + + * lisp/gnus-ofsetup.el (gnus-offline-lang, + gnus-ofsetup-resource-en, gnus-ofsetup-resource-ja): New + variables. + (gnus-ofsetup-get-message): New function. + (gnus-setup-for-offline): Use it. + (gnus-ofsetup-find-parameters): Ditto. + (gnus-ofsetup-prepapre-for-miee): Ditto. + (gnus-ofsetup-completing-read-symbol): Ditto. + (gnus-ofsetup-customize): Ditto. + (gnus-ofsetup-customize-done): Ditto. - * lisp/gnus.el (gnus-version-number): Update to 6.10.057. +1999-09-01 Katsumi Yamaoka - * Sync up with Pterodactyl Gnus v0.75. + * lisp/gnus-sum.el (gnus-summary-isearch-article): Don't bind + `isearch-lazy-highlight'. -1999-02-01 Tatsuya Ichikawa +1999-08-30 Katsumi Yamaoka - * lisp/gnus-offline.el (gnus-offline-gnus-get-new-news): Undo my - change. + * lisp/gnus.el (gnus-revision-number): Increment to 01. -1999-02-01 Katsumi Yamaoka + * lisp/lpath.el (babel-as-string): Bind it. - * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Close - parentheses. - (gnus-offline-define-menu-on-agent): Ditto. + * lisp/gnus-sum.el (gnus-summary-search-article): Keep the + original X-Face field while searching. It is done for only FSF + Emacsen. + (gnus-summary-search-article-highlight-matched-text): Ditto. + (gnus-summary-search-article-matched-data): Bind it explicitly. -1999-02-01 Katsumi Yamaoka +1999-08-29 Katsumi Yamaoka - * README.ichikawa: Fix about the last version of T-gnus based on - Gnus 5.6. + * lisp/gnus.el (gnus-version-number): Update to 6.13.1. + (gnus-revision-number): Clear to 00. -1999-02-01 Akihiro Arisawa + * README.T-gnus: Update. - * lisp/nndoc.el (nndoc-mime-digest-type-p): Add the element of - `header-begin' to type-alist for mime-digest. + * README: Sync up with Pterodactyl Gnus v0.96. + * lisp/{smiley.el,nntp.el,nnmail.el,nnfolder.el,mml.el,mm-view.el, + mm-uu.el,mm-util.el,mm-encode.el,mm-decode.el,mm-bodies.el, + gnus-uu.el,gnus-util.el,gnus-sum.el,gnus-start.el,gnus-score.el, + gnus-mlspl.el,gnus-group.el,gnus-bcklg.el,gnus-art.el, + gnus-agent.el,ChangeLog}: Ditto. + * texi/{gnus.texi,gnus-ja.texi,ChangeLog}: Ditto. -1999-02-01 Tatsuya Ichikawa +1999-08-27 Daiki Ueno - * README-offline.ja: Add description written by YOSHIZAWA Masahiro - + * lisp/pop3.el (pop3-movemail): If the argument `crashbox' is t, + don't retrieve any incoming mails.; Don't filter articles here. + Use `convert-standard-filename' to generate fresh UIDL file names. + (pop3-get-message-numbers): Rewrite. + (pop3-save-uidls): Clear UIDL hash.; Use `with-temp-file' instead + of `with-temp-buffer'. -1999-02-01 Tatsuya Ichikawa - Tsukamoto Tetsuo +1999-08-27 Tsukamoto Tetsuo - * lisp/gnus-offline.el (gnus-offline-gnus-get-new-news): Modify for - pGnus with mail-source.el. + * README-offline.ja : Fix. - * lisp/gnus-offline.el: Use (running-pterodactyl-gnus-0_73-or-later) - to check pGnus 0.73 or later instead of (locate-library "mail-source") + * lisp/gnus-offline.el (gnus-offline-agent-automatic-expire): + Fix typo. -1999-02-01 Katsumi Yamaoka + * lisp/gnus-ofsetup.el : Remove gnus-cus from compile time + requirements; Enclose the autoload for `gnus-custom-mode' with + `eval-and-compile'. - * lisp/nndoc.el (nndoc-mime-parts-type-p): Strip leading white - space from the matching pattern. +1999-08-27 Katsumi Yamaoka -1999-02-01 Katsumi Yamaoka + * lisp/gnus.el (gnus-revision-number): Increment to 15. - * lisp/gnus-sum.el (gnus-nov-parse-extra): Abolished. - (gnus-nov-parse-line): Use `char-after' instead of `following-char' - ; use `nnheader-nov-parse-extra' instead of `gnus-nov-parse-extra'. + * lisp/dgnushack.el (char-before, char-after): Optimize byte code + for them before lpath.el is loaded. Because lpath.el requires + `poe' via `path-util'. [cf. ] -1999-01-31 MORIOKA Tomohiko + * lisp/gnus-sum.el (gnus-summary-search-article): Search for + X-Face image if the regexp "^X-Face:" is specified. + (gnus-summary-search-article-highlight-matched-text): Use + `gnus-summary-search-article-highlight-goto-x-face'; maybe display + X-Face image if it is requested. + (gnus-summary-search-article-highlight-goto-x-face): New macro. - * lisp/gnus-sum.el: Abolish macro `gnus-nov-read-integer', - `gnus-nov-skip-field' and `gnus-nov-field'. - (gnus-nov-parse-line): Use `nnheader-nov-field' and - `nnheader-nov-read-integer' instead of `gnus-nov-field' and - `gnus-nov-read-integer'. - (gnus-get-newsgroup-headers-xover): Use - `gnus-retrieve-parsed-headers'. +1999-08-26 Katsumi Yamaoka - * lisp/gnus-cache.el (gnus-cache-retrieve-parsed-headers): Use - `gnus-cache-braid-headers', - `nnheader-get-newsgroup-headers-xover*' and - `nnheader-retrieve-headers-from-directory*' instead of - `gnus-get-newsgroup-headers-xover', `gnus-cache-braid-parsed-nov' - nor `gnus-cache-braid-parsed-heads'; abolish function - `gnus-cache-braid-parsed-nov' and `gnus-cache-braid-parsed-nov'. - (gnus-cache-braid-headers): New function. + * lisp/gnus.el (gnus-revision-number): Increment to 14. - * lisp/nnheader.el (nnheader-nov-read-integer): Use - `(search-forward "\t" eol 'move)' instead of `(forward-char 1)' as - same as `gnus-nov-read-integer'. - (nnheader-retrieve-headers-from-directory*): New function. - (nnheader-retrieve-headers-from-directory): Use - `nnheader-retrieve-headers-from-directory*'. - (nnheader-get-newsgroup-headers-xover*): New function. + * lisp/gnus-sum.el (gnus-summary-search-article): Treat and + recenter the article when touchdown; popup the article buffer if + it is disappeared. + (gnus-summary-search-article-highlight-matched-text): Treat the + article before highlighting; use old style backquote syntax. + (gnus-summary-search-article-position-point): Fix the beginning + position; use old style backquote syntax. + (gnus-summary-select-article): Undo the last change. + (gnus-summary-display-article): Bind + `gnus-summary-search-article-matched-data' in the article buffer + locally. It is moved from `gnus-summary-select-article'. -1999-01-30 MORIOKA Tomohiko +1999-08-25 NAKAJI Hiroyuki - * lisp/nnmh.el (nnmh-retrieve-parsed-headers): Use - `nnheader-retrieve-headers-from-directory'. + * texi/Makefile.in (EMACS): Use @EMACS@, not emacs directly. + (clean): Remove formatted info files. + (distclean): Just remove Makefile. - * lisp/nnheader.el (nnheader-retrieve-headers-from-directory): New - function. +1999-08-25 Tsukamoto Tetsuo -1999-01-29 MORIOKA Tomohiko + * lisp/gnus.el (gnus-revision-number): Increment to 13. - * lisp/gnus.el (gnus-version): Modify for SEMI 1.13. + * lisp/gnus-agent.el (gnus-agent-large-newsgroup): New variable. + (gnus-agent-fetch-headers): Limit downloadable articles if the + number of unread articles exceeds `gnus-agent-large-newsgroup'. + (gnus-agent-expire): Do not expire saved or replied articles when + `gnus-agent-expire-all' is nil. - * lisp/gnus-int.el (gnus-retrieve-parsed-headers): Use - `gnus-cache-retrieve-parsed-headers' instead of - `gnus-cache-retrieve-headers'. + * lisp/gnus-offline.el (gnus-offline-agent-automatic-expire): New + variable. + (gnus-offline-agent-expire): Check it; Bind + `gnus-agent-expire-all' to nil if `gnus-agent-expire-days' is 0. + (gnus-offline-after-jobs-done): Don't check + `gnus-agent-expire-all'. + + * lisp/gnus-ofsetup.el (gnus-offline-setting-file): Check if + `user-login-name' and `user-real-login-name' returns the same + value or not. + (gnus-ofsetup-prepare-for-miee): Write forms as a variable. + (gnus-ofsetup-update-setting-file): Ditto. + (gnus-ofsetup-prepare): New macro. + (gnus-setup-for-offline): Use it. + (gnus-ofsetup-customize-done): Ditto. + +1999-08-25 Katsumi Yamaoka - * lisp/gnus-cache.el (gnus-cache-retrieve-parsed-headers): New - function. - (gnus-cache-braid-parsed-nov): New function. - (gnus-cache-braid-parsed-heads): New function. + * lisp/gnus.el (gnus-revision-number): Increment to 12. -1999-01-30 Tatsuya Ichikawa + * lisp/gnus-sum.el (gnus-summary-search-article): Rearrange. + (gnus-summary-search-article-highlight-matched-text): Rearrange. + (gnus-summary-search-article-position-point): New macro. + (gnus-summary-search-article-matched-data): Rename from + `gnus-summary-search-article-matched-text'. + (gnus-summary-isearch-article): Bind `gnus-inhibit-treatment' to t; + use `gnus-article-show-all-headers' for exposing the visited + article. + (gnus-summary-select-article): Bind + `gnus-summary-search-article-matched-data' in the article buffer + locally. - * lisp/gnus-offline.el: Rewrite to work with pGnus v0.74 based T-gnus. - * lisp/gnus-ofsetup.el: Ditto. + * lisp/gnus-art.el (gnus-treat-article): Don't treat the article + if the value of `gnus-inhibit-treatment' is non-nil. + (article-toggle-headers): Don't redisplay X-Face if the value of + `gnus-inhibit-treatment' is non-nil. + (gnus-article-treat-custom): Add new treatment variable `mime'. - * lisp/pop3-fma.el: Removed because after pGnus0.73 , pGnus can treat - multiple pop3 account. +1999-08-25 Daiki Ueno -1999-01-29 Tatsuya Ichikawa + * lisp/gnus-group.el (gnus-group-line-format): Fix typo in + documentation. - * lisp/read-passwd.el: New file. + * lisp/gnus-sum.el (gnus-summary-mode): Don't set + `gnus-newsgroup-incorporated' explicitly. -1999-01-28 Katsumi Yamaoka +1999-08-24 Katsumi Yamaoka - * lisp/gnus.el (running-pterodactyl-gnus-0_73-or-later): Provide as - a new feature. + * README.semi: Update for the recent a-ftp sites and directories. + * README.semi.ja: Ditto. + * texi/gnus-faq.texi: Ditto. + * texi/gnus-faq-ja.texi: Ditto. - * lisp/mail-source.el (mail-source-read-passwd): Don't load - "passwd" if the function `read-passwd' already exists. +1999-08-24 Daiki Ueno - * lisp/gnus-start.el (gnus-read-active-file): Eliminate duplicated - select methods. + * lisp/gnus.el (gnus-revision-number): Increment to 11. + (gnus-summary-incorporated-face): New face spec. - * lisp/gnus-group.el (gnus-group-catchup-current): Fix typo. + * lisp/gnus-group.el (gnus-group-line-format-alist): Add + entry about the format specifier `w'. + (gnus-group-line-format): Fix documentation. -1999-01-27 Tatsuya Ichikawa + * lisp/gnus-sum.el (gnus-summary-highlight): Highlight lines on + newly incorporated mails with `gnus-summary-incorporated-face'. + (gnus-newsgroup-incorporated): New variable. + (gnus-summary-local-variables): Add `gnus-newsgroup-incorporated'. + (gnus-summary-mode): Set `gnus-newsgroup-incorporated'. - * lisp/gnus.el (gnus-version-number): Update to 6.10.056. + * lisp/nnmail.el (nnmail-new-mail-numbers): New function. - * Sync up with Pterodactyl Gnus v0.74. + * lisp/gnus-srvr.el (gnus-browse-foreign-server): Don't prepend + `K' if the group has already been subscribed. -1999-01-28 Katsumi Yamaoka +1999-08-24 Katsumi Yamaoka - * lisp/gnus-msg.el (gnus-summary-mail-digest): Reselect the message - frame after selecting a new article if the value of - `message-use-multi-frames' is non-nil and more than one articles - are given. + * lisp/gnus-sum.el (gnus-summary-isearch-article): Set + `isearch-lazy-highlight' t in the buffer locally; goto the + beginning of the buffer before searching. -1999-01-28 Keiichi Suzuki + * lisp/gnus-util.el (gnus-eval-in-buffer-window): Select the last + selected frame. - * lisp/gnus-sum.el (gnus-summary-move-article): Fix, could not - respool article. +1999-08-23 Katsumi Yamaoka -1999-01-26 Katsumi Yamaoka + * lisp/gnus.el (gnus-revision-number): Increment to 10. - * lisp/nnmh.el (nnmh-retrieve-parsed-headers): Bind `in-reply-to' - and `cur' as temporary variables. + * lisp/gnus-sum.el (gnus-summary-search-article): Highlight + matched text after the searching is done; call + `gnus-summary-select-article' with the args nil and t; bind + `gnus-treat-*' to nil. + (gnus-summary-search-article-highlight-matched-text): New macro + for highlighting matched text. It is bound at the compile time + only. + (gnus-summary-isearch-article): Call `gnus-summary-select-article' + with the args nil and t; bind `gnus-treat-*' to nil. + + * lisp/gnus-ems.el (gnus-x-splash): Change the foreground color of + `gnus-splash' to "Brown"; use `with-temp-buffer' instead of + `with-temp-file'; use `insert-file-contents-as-binary' instead of + `insert-file-contents'. -1999-01-25 MORIOKA Tomohiko +1999-08-20 Tsukamoto Tetsuo - * lisp/gnus-sum.el (gnus-article-sort-by-author): fixed. + * lisp/gnus.el (gnus-revision-number): Increment to 09. -1999-01-12 MORIOKA Tomohiko + * lisp/gnus-offline.el: Fix comments. + (TopLevel): Delete the code for emulating custom. Do not inhibit + byte-compile-warnings, but hide useless ones. + (gnus-offline-dialup-program-arguments): defvar instead of + defcustom. + (gnus-offline-hangup-program-arguments): Ditto. + (gnus-offline-interval-time): Ditto. + (gnus-offline-dialup-program, gnus-offline-hangup-program, + gnus-offline-drafts-queue-type, gnus-offline-MTA-type): defvar. + (gnus-offline-disable-fetch-mail): Remove pop3-fma dependent + codes. + Set `mail-sources' instead of `nnmail-spool-file'. + (gnus-offline-enable-fetch-mail): Ditto. + (gnus-offline-toggle-movemail-program): Abolish. + (gnus-offline-define-menu-and-key): Modify according to it. + (gnus-offline-define-menu-on-miee): Ditto. + (gnus-offline-define-menu-on-agent): Ditto. + (gnus-offline-message-add-header): Bind temporary variables. + (gnus-offline-add-custom-header): Ditto. + (gnus-offline-restore-mail-group-level): Ditto. - * lisp/gnus-int.el (gnus-retrieve-parsed-headers): Add new - optional arguments `dependencies' and `force-new'; new - implementation; call `retrieve-parsed-headers' if it is found. + * lisp/gnus-ofsetup.el (TopLevel): Require gnus-cus and + gnus-offline at the compile time. Do not inhibit + byte-compile-warnings. + (gnus-setup-for-offline): Really bind all temporary variables. + (gnus-ofsetup-write-settting-file): Check if interval is a + integer. + Use `mail-sources' instead of `nnmail-spool-file'. + (gnus-ofsetup-update-setting-file): Redefine as a macro. + (gnus-ofsetup-prepare-for-miee): Ditto. - * lisp/nnmh.el (nnmh-retrieve-parsed-headers): New function. + * README-offline.en : Update. + * README-offline.ja : Ditto. -1999-01-12 MORIOKA Tomohiko +1999-08-20 Daiki Ueno - * lisp/gnus-sum.el (gnus-select-newsgroup): Use - `gnus-retrieve-parsed-headers' instead of `gnus-retrieve-headers' - and `gnus-get-newsgroup-headers-xover' or - `gnus-get-newsgroup-headers'. + * lisp/gnus-sum.el (gnus-wheel-summary-scroll): Bind + `inhibit-read-only' to t; bind `buffer-read-only' to nil. - * lisp/gnus-int.el (gnus-retrieve-parsed-headers): New function. +1999-08-20 Katsumi Yamaoka -1999-01-26 Tsukamoto Tetsuo + * lisp/gnus.el (gnus-revision-number): Increment to 08. - * lisp/gnus-offline.el: Add security notice. +1999-08-19 Keiichi Suzuki -1999-01-25 Tatsuya Ichikawa + * lisp/nnmail.el (nnmail-split-it): Match whole word for getting + group name with `\N'. - * README-offline.ja: New file - Variable and command description - for gnus-offline(Japanese edition). - * README-offline.en: New file - Ditto (English edition). +1999-08-19 Daiki Ueno -1999-01-25 Tsukamoto Tetsuo + * lisp/gnus.el (gnus-revision-number): Increment to 07. - * lisp/gnus-offline.el (gnus-offline-pop-password-file): New - variable. - (gnus-offline-pop-password-decoding-function): New variable. - (gnus-offline-get-new-news): When `gnus-offline-pop-password-file' - is non-nil, get one's password information from a file specified - by this variable, and don't store the passwords as a variable. - * lisp/smiley.el (smiley-buffer): Avoid a few duplicate - translations. + * lisp/pop3.el (pop3-except-header-regexp): New variable. + (pop3-movemail): Don't retrieve messages whose headers are + matching `pop3-except-header-regexp'. + (pop3-top): New function. + (pop3-retr): Don't use `save-restriction'. -1999-01-23 Kiyokazu SUTO +1999-08-18 Daiki Ueno - * lisp/gnus-msg.el (gnus-inews-yank-articles): Use - `message-list-references' for gathering IDs from yanked articles. + * lisp/pop3.el (pop3-get-extended-response): Fix regexp. - * lisp/message.el (message-list-references): New function. - (message-yank-original): Use it for gathering IDs from a yanked - article. +1999-08-18 Katsumi Yamaoka -1999-01-22 Katsumi Yamaoka + * lisp/gnus.el (gnus-revision-number): Increment to 06. - * lisp/message.el (message-reply): Get the references from - `In-Reply-To' field if there were no references and `In-Reply-To' - field looks promising. - (message-yank-original): Try to fetch ID from `In-Reply-To' field - if `References' field does not exist. - (message-yank-original): Use `std11-narrow-to-header' instead of - `message-narrow-to-head'. + * lisp/gnus-art.el (mime-preview-over-to-next-method-alist): Use + `gnus-article-next-page' when the last page is not displayed. + (mime-preview-over-to-previous-method-alist): Use + `gnus-article-prev-page' when the first page is not displayed. + (gnus-next-page-map): Use `make-sparse-keymap' instead of + `make-keymap'; don't use `suppress-keymap'. + (gnus-insert-next-page-button, gnus-insert-prev-page-button): + Succeed to the value of the text property `mime-view-situation' in + the Next/Prev buttons; make `gnus-{next|prev}-page-map' have the + current local map as a parent under FSF Emacsen. -1999-01-22 Katsumi Yamaoka +1999-08-18 Daiki Ueno - * lisp/gnus-msg.el (gnus-inews-yank-articles): Fetch IDs from - `gnus-current-headers' instead of article header. + * lisp/pop3.el (pop3-retr): Undo last change. -1999-01-22 Katsumi Yamaoka +1999-08-17 Daiki Ueno - * lisp/gnus-msg.el (gnus-inews-yank-articles): Save the beginning - position of the yanked articles -- apologize to SUTO-san, it has - been supported in his original code, but I didn't. + * lisp/gnus.el (gnus-revision-number): Increment to 05. - * lisp/message.el: Replace line endings from `CRLF' to `LF'. + * lisp/pop3.el (pop3-get-extended-response): Enable timeout of + `accept-process-output'; Move point to the end of the normal + response. + (pop3-movemail): Add suffix to `pop3-uidl-file-name'. + (pop3-get-list): Abolish. + (pop3-retr): Don't use `save-restriction'. + (pop3-uidl): Don't use `condition-case' when checking UIDL support. + (pop3-list): Likewise. -1999-01-21 Hiroaki Matsui +1999-08-17 Katsumi Yamaoka - * lisp/message.el : Fix typo. + * lisp/gnus.el (gnus-revision-number): Increment to 04. -1999-01-20 Katsumi Yamaoka + * lisp/gnus-sum.el (gnus-wheel-summary-scroll): Use + `event-basic-type' instead of `event-button' under FSF Emacsen. - * lisp/message.el (message-yank-original): If - `message-yank-add-new-references' is non-nil and this command is - called interactively, new IDs from the yanked article will be added - to `References' field. - (message-yank-add-new-references): New user option. - (message-header-format-alist): Use `message-shorten-references' for - `References' in default. +1999-08-16 Katsumi Yamaoka -1999-01-20 Kiyokazu SUTO , - Katsumi Yamaoka + * lisp/gnus.el (gnus-revision-number): Increment to 03. - * lisp/gnus-msg.el (gnus-inews-yank-articles): Replace `References' - field with the gathered Message-IDs and References if more than one - articles are given. +1999-08-16 Daiki Ueno -1999-01-20 Katsumi Yamaoka + * lisp/gnus-sum.el: Add `gnus-wheel-install' to + `gnus-summary-mode-hook'. + (gnus-use-wheel): New variable. + (gnus-wheel-scroll-amount): New variable. + (gnus-wheel-edge-resistance): New variable. + (gnus-wheel-summary-scroll): New function. + (gnus-wheel-install): New function. - * lisp/gnus-msg.el (gnus-inews-yank-articles): Reselect the message - frame after selecting a new article if the value of - `message-use-multi-frames' is non-nil and more than one articles - are given. +1999-08-16 Katsumi Yamaoka -1999-01-20 Katsumi Yamaoka + * lisp/gnus.el (gnus-revision-number): Increment to 02. - * lisp/gnus.el (gnus-version-number): Update to 6.10.055. + * lisp/nnheader.el (make-full-mail-header-from-decoded-header): Use + `defun' instead of `defsubst'. + (make-full-mail-header): Ditto. - * Sync up with Pterodactyl Gnus v0.72. + * lisp/dgnushack.el (dgnushack-texi-format): Fold up long lines. + (TopLevel): Autoload "texinfmt" for avoiding byte compile warning. -1999-01-19 Katsumi Yamaoka +1999-08-16 Tsukamoto Tetsuo - * README.semi.ja: Add keiichi and nana-gnus to the branches info. - Modify the directory name for the daily snapshots. - * README.semi: Ditto. + * lisp/gnus.el (gnus-revision-number): Increment to 01. - * README.branch.ja: Modified for Semi-gnus 6.10, etc. + * lisp/gnus-draft.el (gnus-group-send-drafts): Say which message + is being sent. + + * lisp/gnus-ofsetup.el (gnus-ofsetup-completing-read-symbol): New + function from Nana-gnus. + (gnus-setup-for-offline): Rewrite. Bind all temporary variables. + (gnus-ofsetup-update-setting-file): Rename from + `gnus-ofsetup-write-setting-file'. + (gnus-ofsetup-find-parameters): Rename from + `gnus-ofsetup-parameters'. + (gnus-ofsetup-customize-done): Rewrite. + +1999-08-15 Daiki Ueno + + * pop3.el: Sync up with pop3.el version 2.04. + (pop3-leave-mail-on-server): New variable. + (pop3-maximum-message-size): New variable. + (pop3-uidl-file-name): New variable. + (pop3-uidl-support): New variable. + (pop3-uidl-obarray): New variable. + (pop3-movemail): Check message size on every retrieval. + (pop3-open-ssl-stream-1): Use new style macro. + (pop3-get-message-numbers): New function. + (pop3-get-list): New function. + (pop3-get-uidl): New function. + (pop3-get-unread-message-numbers): New function. + (pop3-save-uidls): New function. + (pop3-retr): Use `pop3-get-extended-response'. + (pop3-list): New implementation. + (pop3-uidl): New function. + (pop3-get-extended-response): New function. + +1999-08-04 Katsumi Yamaoka + + * lisp/gnus.el: T-gnus 6.13.0 is released. + +1999-08-04 Katsumi Yamaoka + + * ChangeLog.2: New file, rename from ChangeLog. + + * lisp/dgnushack.el (TopLevel): Rearrange. + + * README.branch.ja: Update for t-gnus-6_12 and t-gnus-6_13 branch. * README.branch: Ditto. -1999-01-19 Katsumi Yamaoka + * texi/gnus-faq.texi: Replace ftp.jaist.ac.jp with ftp.etl.go.jp. - * lisp/message.el (message-reply): Cancel the last change. - (message-followup): Cancel the last change. - (message-wide-reply): Cancel the last change. - - * lisp/gnus-msg.el (gnus-summary-gather-references): Abolished. - (gnus-summary-reply): Cancel the last change. - (gnus-post-news): Cancel the last change. - -1999-01-18 Katsumi Yamaoka - - * lisp/gnus-sum.el (gnus-summary-move-article): Don't copy - expirable marks if the destination group is not expirable. - -1999-01-16 Kiyokazu SUTO - - * lisp/message.el (message-reply): Accept references as a new - optional arg. - (message-followup): Ditto. - (message-wide-reply): Ditto. - - * lisp/gnus-msg.el (gnus-summary-gather-references): New function. - (gnus-summary-reply): Use it - (gnus-post-news): Use it. - -1999-01-16 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.054. - - * Sync up with Pterodactyl Gnus v0.71. - -1999-01-16 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.053. - - * Sync up with Pterodactyl Gnus v0.70. - -1999-01-13 Kiyokazu SUTO - - * lisp/nnspool.el (nnspool-retrieve-headers): Protect against empty - body. - -1999-01-13 Tatsuya Ichikawa - - * lisp/gnus-offline.el: Add Tsukamoto Tetsuo - to author and maintainer. - -1999-01-12 Katsumi Yamaoka - - * lisp/nnmail.el (nnmail-article-group): Don't infloop. - -1999-01-12 Katsumi Yamaoka - - * TODO.ja: Modified for Cancel-Lock feature. - - * lisp/nntp.el (nntp-request-post): Put a Message-ID generated by - server if it does not exist in the article. - (nntp-request-post): Run `nntp-prepare-post-hook'. - (nntp-async-trigger): Save a response from the server in - `nntp-process-response' after sending a command. - (nntp-wait-for): Ditto. - (nntp-prepare-post-hook): New hook, run just before posting an - article. - - * lisp/nnheader.el (nnheader-init-server-buffer): Make - `nntp-process-response' be buffer-local in `nntp-server-buffer'. - (nntp-process-response): New variable, used for holding a response - from the server after sending a command. - -1999-01-11 Tsukamoto Tetsuo - - * lisp/message.el (message-draft-coding-system): Don't Call - `coding-system-p'. Find its default value using - `find-coding-system' instead. - -1999-01-11 Katsumi Yamaoka - - * lisp/pop3.el (pop3-munge-message-separator): Use - `parse-time-string'. - - * lisp/gnus-vm.el (gnus-summary-save-in-vm): Save window config, - select the article before saving. - -1999-01-09 Tsukamoto Tetsuo - - * lisp/gnus-offline.el (gnus-offline-popup-menu): Bug fix -- Use - `gnus-offline-menu-on-agent' if `miee-popup-menu' does not exist. - -1999-01-08 Katsumi Yamaoka - - * lisp/pop3.el (pop3-last): Use `split-string' instead of - `pop3-string-to-list'. - (pop3-stat): Ditto. - (pop3-munge-message-separator): Ditto. - (pop3-string-to-list): Abolished. - -1999-01-06 Tsukamoto Tetsuo - - * lisp/gnus-offline.el (gnus-offline-setup): Don't call - `gnus-offline-agent-expire' when 'gnus-agent-expire-all' is - non-nil. - (gnus-offline-define-menu-on-miee): Call `easy-menu-add' under - XEmacs. - (gnus-offline-popup-menu): New function. - (gnus-offline-define-menu-and-key): Call it under Emacs to create - a popup menu in the group buffer. - -1999-01-04 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.052. - - * Sync up with Pterodactyl Gnus v0.69. - -1998-12-28 Katsumi Yamaoka - - * lisp/gnus-sum.el (gnus-summary-preview-mime-message): Always - select the article before previewing. Abolish prefix arg. - - * lisp/gnus-art.el (gnus-mime-preview-quitting-method): re-select - the article without reservation. - (gnus-article-display-mime-message): Show all headers if - `gnus-have-all-headers' the local var of summary buffer is non-nil. - -1998-12-25 Katsumi Yamaoka - - * lisp/gnus-art.el (gnus-article-check-buffer): Rewrite (checking - for buffer object). - -1998-12-22 Katsumi Yamaoka - - * lisp/gnus-art.el (mime-preview-over-to-next-method-alist): Use - `gnus-summary-next-article' in `gnus-original-article-mode'. - (mime-preview-over-to-previous-method-alist): Use - `gnus-summary-prev-article' in `gnus-original-article-mode'. - -1998-12-22 Katsumi Yamaoka - - * lisp/gnus-bbdb.el (toplevel): Define `bbdb-pop-up-elided-display' - for avoiding byte-compile warning. - - * lisp/gnus-art.el (gnus-article-mode-map): Define almost undefined - keys to `gnus-article-read-summary-keys'. - (gnus-article-check-buffer): Check for a major-mode in - `gnus-original-article-buffer' as well. - (gnus-article-prepare-display): Set `gnus-article-current-summary' - to `gnus-summary-buffer'. - -1998-12-21 Tatsuya Ichikawa - - * lisp/pop3-fma.el (pop3-fma-movemail): Work with movemail.exe - with APOP extention. - -1998-12-18 Katsumi Yamaoka - - * lisp/gnus-start.el (gnus-read-newsrc-el-file): Bug (referring to - unbounded variable) fix. - -1998-12-17 Katsumi Yamaoka - - * lisp/gnus-start.el (gnus-read-newsrc-el-file): Don't load newsrc - file if it does not exist. - -1998-12-16 Tatsuya Ichikawa - - * lisp/gnus-offline.el: (gnus-offline-define-menu-on-miee) - (gnus-offline-define-menu-on-agent): Use Japanized menu when using - under Meadow. - -1998-12-16 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.051. - - * Sync up with Pterodactyl Gnus v0.68. - -1998-12-14 Tatsuya Ichikawa - - * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Bug - fix. - -1998-12-14 Katsumi Yamaoka - - * lisp/nnheader.el (nnheader-find-file-noselect): Call - `find-file-noselect-as-coding-system' with CODING-SYSTEM as the - 1st arg. - - * lisp/gnus-score.el (gnus-score-load-score-alist): Call - `insert-file-contents-as-coding-system' with CODING-SYSTEM as the - 1st arg. - * lisp/nnmail.el (nnmail-find-file): Ditto. - * lisp/nnheader.el (nnheader-insert-file-contents): Ditto. - - * lisp/score-mode.el (gnus-score-edit-exit): Call - `write-region-as-coding-system' as the 1st arg. - * lisp/gnus-start.el (gnus-save-newsrc-file): Ditto. - - * lisp/gnus-start.el (gnus-read-newsrc-el-file): Call - `insert-file-contents-as-coding-system' with CODING-SYSTEM as the - 1st arg. - - * lisp/gnus-score.el (gnus-score-save): Call - `gnus-write-buffer-as-coding-system' with CODING-SYSTEM as the 1st - arg. - * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Ditto. - (gnus-cache-save-buffers): Ditto. - - * lisp/gnus-util.el (gnus-write-buffer-as-coding-system): Be - CODING-SYSTEM the 1st arg. - - * lisp/nnmail.el (nnmail-write-region): Call - `write-region-as-coding-system' as the 1st arg. - * lisp/gnus-agent.el (gnus-agent-expire): Ditto. - (gnus-agent-fetch-headers): Ditto. - (gnus-agent-flush-cache): Ditto. - (gnus-agent-fetch-articles): Ditto. - (gnus-agent-save-history): Ditto. - (gnus-agent-save-groups): Ditto. - (gnus-agent-save-active): Ditto. - -1998-12-14 Tsukamoto Tetsuo - - * lisp/gnus-offline.el (gnus-offline-define-menu-and-key): Bug - fix. - Overwrite the toolbar spec for gnus-group-mode, under XEmacs. - -1998-12-14 Katsumi Yamaoka - - * lisp/nnheader.el (nnheader-find-file-noselect): Use - `find-file-noselect-as-coding-system' (renamed from - `find-file-noselect-as-specified-coding-system'). - - * lisp/gnus-score.el (gnus-score-load-score-alist): Use - `insert-file-contents-as-coding-system' (renamed from - `insert-file-contents-as-specified-coding-system'). - * lisp/nnmail.el (nnmail-find-file): Ditto. - * lisp/nnheader.el (nnheader-insert-file-contents): Ditto. - - * lisp/score-mode.el (gnus-score-edit-exit): Use - `write-region-as-coding-system' (renamed from - `write-region-as-specified-coding-system'). - * lisp/gnus-start.el (gnus-save-newsrc-file): Ditto. - - * lisp/gnus-start.el (gnus-read-newsrc-el-file): Use - `insert-file-contents-as-coding-system' (renamed from - `insert-file-contents-as-specified-coding-system'). - - * lisp/gnus-score.el (gnus-score-save): Use - `gnus-write-buffer-as-coding-system' (renamed from - `gnus-write-buffer-as-specified-coding-system'). - * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Ditto. - (gnus-cache-save-buffers): Ditto. - - * lisp/gnus-util.el (gnus-write-buffer-as-coding-system): Renamed - from 'gnus-write-buffer-as-specified-coding-system'. - - * lisp/nnmail.el (nnmail-write-region): Use - `write-region-as-coding-system' (renamed from - `write-region-as-specified-coding-system'). - * lisp/gnus-agent.el (gnus-agent-expire): Ditto. - (gnus-agent-fetch-headers): Ditto. - (gnus-agent-flush-cache): Ditto. - (gnus-agent-fetch-articles): Ditto. - (gnus-agent-save-history): Ditto. - (gnus-agent-save-groups): Ditto. - (gnus-agent-save-active): Ditto. - -1998-12-14 Tsukamoto Tetsuo - - * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Bug - fix. - (gnus-offline-set-offline-sendmail-function): Bug fix. - -1998-12-12 Hidekazu Nakamura - - * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Bug fix. - -1998-12-12 Tsukamoto Tetsuo - - * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Bug - fix. - (gnus-offline-set-offline-sendmail-function): Bug fix. - -1998-12-11 Tatsuya Ichikawa - - * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Change - easy-menu-define to easy-menu-change to override miee menu. - -1998-12-11 Katsumi Yamaoka - - * lisp/nnheader.el (nnheader-find-file-noselect): Call - `find-file-noselect-as-specified-coding-system' directly. - -1998-12-10 Tatsuya Ichikawa - - * lisp/gnus-offline.el (gnus-offline-setup): Add - gnus-offline-setup to gnus-group-mode-hook. - (gnus-offline-set-offline-sendmail-function): Bug fix. - -1998-12-10 Tsukamoto Tetsuo - - * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Bug - fix. - (gnus-offline-define-menu-on-agent): Bug fix. - -1998-12-10 Katsumi Yamaoka - - * lisp/pop3.el (pop3-movemail): Use `write-region-as-binary' - instead of `append-to-file'. - (pop3-movemail-file-coding-system): Abolished. - - * lisp/nnheader.el (nnheader-find-file-noselect): Use - `find-file-noselect-as-specified-coding-system' instead of - `find-file-noselect'. - - * lisp/gnus-score.el (gnus-score-load-score-alist): Use - `insert-file-contents-as-specified-coding-system' instead of - `insert-file-contents'. - * lisp/nnmail.el (nnmail-find-file): Ditto. - * lisp/nnheader.el (nnheader-insert-file-contents): Ditto. - - * lisp/message.el (message-send-mail-with-qmail): Enclose - `call-process-region' with `as-binary-process'. - (message-send-mail-with-sendmail): Ditto. - (message-send-coding-system): Abolished. - - * lisp/score-mode.el (gnus-score-edit-exit): Emulate - `save-buffer' with `write-region-as-specified-coding-system'. - * lisp/gnus-start.el (gnus-save-newsrc-file): Ditto. - - * lisp/gnus-start.el (gnus-read-newsrc-el-file): Emulate `load' - with `insert-file-contents-as-specified-coding-system' and - `eval-region'. - - * lisp/gnus-score.el (gnus-score-save): Use - `gnus-write-buffer-as-specified-coding-system' instead of - `gnus-write-buffer'. - * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Ditto. - (gnus-cache-save-buffers): Ditto. - - * lisp/gnus-util.el (gnus-output-to-mail): Use - `write-region-as-binary' instead of `append-to-file'. - (gnus-output-to-mail): Use `gnus-write-buffer-as-binary' instead - of `gnus-write-buffer'. - (gnus-write-buffer-as-specified-coding-system): New function. - (gnus-write-buffer-as-binary): New function. - - * lisp/nnmail.el (nnmail-write-region): Use - `write-region-as-specified-coding-system' instead of - `write-region'. - * lisp/gnus-agent.el (gnus-agent-expire): Ditto. - (gnus-agent-fetch-headers): Ditto. - (gnus-agent-flush-cache): Ditto. - (gnus-agent-fetch-articles): Ditto. - (gnus-agent-save-history): Ditto. - (gnus-agent-save-groups): Ditto. - (gnus-agent-save-active): Ditto. - -1998-12-10 Tatsuya Ichikawa - - * lisp/gnus-offline.el (gnus-offline-after-jobs-done): Create menu - using 'easymenu'. - -1998-12-09 Tsukamoto Tetsuo - - * lisp/gnus-offline.el (gnus-offline-after-jobs-done): Don't call - `gnus-offline-agent-expire' under XEmacs. - -1998-12-08 Katsumi Yamaoka - - * texi/gnus-ja.texi: Fix latin chars. + * texi/gnus-faq-ja.texi: Modify for T-gnus 6.13. + * texi/message-ja.texi: Ditto. + * texi/message.texi: Ditto. + * texi/gnus-ja.texi: Ditto. * texi/gnus.texi: Ditto. + * README-offline.ja: Ditto. + * README-offline.en: Ditto. + * README.semi.ja: Ditto. + * README.semi: Ditto. + * README.T-gnus: Ditto. - * texi/ChangeLog: Shrunk. - - * text/widget.texi: Removed. - * texi/custom.texi: Removed. - - * lisp/ChangeLog: Fix latin chars. - - * lisp/pop3.el (pop3-open-server): Use - `open-network-stream-as-binary' instead of `open-network-stream'. - * lisp/nntp.el (nntp-open-network-stream): Ditto. - * lisp/gnus-gl.el (bbb-connect-to-bbbd): Ditto. - - * lisp/nntp.el (nntp-open-rlogin): Enclose `start-process' with - `as-binary-process'. - (nntp-open-telnet): Ditto. - - * lisp/nntp.el (nntp-coding-system-for-write): Abolished. - (nntp-coding-system-for-read): Abolished. - - * lisp/nndb.el: Don't require `tcp'. - -1998-12-07 Katsumi Yamaoka - - * lisp/message.el (message-get-parameter-with-eval): Call - `message-get-parameter' with arg `key' first. - -1998-12-07 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.050. - - * Sync up with Pterodactyl Gnus 0.65. - -1998-12-06 Tatsuya Ichikawa - - * lisp/message.el (message-cite-original-without-signature): Do - not use mml-quote-region. - - * lisp/message.el (message-cite-original): Ditto. - - * lisp/gnus.el (gnus-version-number): Update to 6.10.049. - - * Sync up with Pterodactyl Gnus 0.64. - -1998-12-04 Katsumi Yamaoka - - * lisp/gnus-sum.el (gnus-summary-show-article): Don't use - `mm-destroy-parts'. - -1998-12-04 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.048. - - * Sync up with Pterodactyl Gnus 0.63. - -1998-12-04 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.047. - - * Sync up with Pterodactyl Gnus 0.62. - - * README.ichikawa: Add description of required APEL/FLIM/SEMI. - -1998-12-03 Katsumi Yamaoka - - * lisp/nndraft.el (nndraft-request-article): Don't bind - `nnmail-file-coding-system'. - -1998-12-03 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.046. - - * Sync up with Pterodactyl Gnus 0.61. - -1998-12-02 Tatsuya Ichikawa - - * lisp/smtp.el: Abolished - Use smtp.el in FLIM. - - * lisp/gnus.el (gnus-version-number): Update to 6.10.045. - - * Sync up with Pterodactyl Gnus 0.59. - -1998-12-01 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.044. - - * Sync up with Pterodactyl Gnus 0.58. - -1998-12-01 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.043. - - * Sync up with Pterodactyl Gnus 0.57. - -1998-11-30 Katsumi Yamaoka - - * lisp/base64.el (base64-decode-region): Use `defun-maybe'. - (base64-encode-region): Ditto. - - * lisp/gnus.el (gnus-version-number): Update to 6.10.042. - - * Sync up with Pterodactyl Gnus 0.56. - -1998-11-29 Tatsuya Ichikawa - - * lisp/gnus-offline.el: Fix typo of DOC string. - - * lisp/score-mode.el: Change default value - score-mode-coding-system 'binary to 'ctext. - -1998-11-28 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.041. - - * Sync up with Pterodactyl Gnus 0.55. - -1998-11-26 Katsumi Yamaoka - - * lisp/gnus-msg.el (gnus-summary-supersede-article): Bind - `gnus-message-setup-hook' to minimum setting. - - * lisp/message.el (message-supersede-setup-for-mime-edit): New - function. - (message-supersede-setup-function): New user option. Use - `message-supersede-setup-for-mime-edit' in default. - (message-supersede): Call `message-supersede-setup-function' if it - is non-nil. - (message-supersede-setup-hook): New user option. - - * lisp/message.el (message-bounce-setup-for-mime-edit): Don't - delete header separator. It is up to MIME-Edit to do so. - -1998-11-24 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.040. - - * Sync up with Pterodactyl Gnus 0.54. - -1998-11-24 Tatsuya Ichikawa - - * lisp/gnus-offline.el (gnus-offline-version-number): Update to - 2.00. - - * lisp/pop3-fma.el (pop3-fma-save-password-information): New - variable. Do not save password information when - `pop3-fma-save-password-information' set to nil (in default). - (pop3-fma-encode-string): abolished - because of difference of - FLIM API. - (pop3-fma-decode-string): Ditto. - -1998-11-21 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.039. - - * Sync up with Pterodactyl Gnus 0.53. - - * lisp/pop3-fma.el (pop3-fma-init-message-hook): Change - message-send-hook to mime-edit-translate-hook - enbug. - -1998-11-20 Tatsuya Ichikawa - - * lisp/gnus-offline.el: Update to beta5. - - * lisp/gnus-ofsetup.el: Update to beta5. - - * lisp/gnus.el (gnus-version-number): Update to 6.10.038. - - * Sync up with Pterodactyl Gnus 0.52. - -1998-11-19 Keiichi Suzuki - - * lisp/message.el (message-get-reply-buffer): Abolished. - (message-get-original-reply-buffer): Abolished. - (message-get-parameter): New inline function. - (message-get-parameter-with-eval): New macro. - (message-fetch-reply-field): Do not use `message-get-reply-buffer'. - (message-yank-original): Ditto. - (message-setup): Use `message-get-parameter'. - (message-mime-insert-article): Use - `message-get-parameter-with-eval' instead of - `message-get-original-reply-buffer'. - - * lisp/gnus-msg.el (gnus-inews-add-send-actions): Do not add - `set-window-configuration' to action when - `message-use-multi-frames' is non-`nil'. - -1998-11-19 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.037. - - * Sync up with Pterodactyl Gnus 0.51. - - * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Force set - `use-miee' to t if `news-method' is equal to "nnspool". - (gnus-setup-for-offline): Put a question for "Agent directory" - only if `gnus-offline-news-fetch-method' is equal to `nnagent'. - (Top-Level): Defvar `use-miee' for avoiding byte-compile warning. - -1998-11-18 Katsumi Yamaoka - - * lisp/gnus-sum.el (gnus-summary-save-article-rmail): Use - `gnus-summary-save-in-rmail' instead of - `rmail-output-to-rmail-file'. - -1998-11-18 Katsumi Yamaoka - - * lisp/message.el (message-mimic-kill-buffer): Rewrite. - -1998-11-18 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.036. - - * Sync up with Pterodactyl Gnus 0.50. - -1998-11-18 Katsumi Yamaoka - - * lisp/message.el (message-mimic-kill-buffer): New function. - (message-mode-map): Use it for `C-x k'. - -1998-11-18 Keiichi Suzuki - - * lisp/message.el (message-dont-send): Use `message-delete-frame'. - -1998-11-18 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.035. - - * Sync up with Pterodactyl Gnus 0.49. - -1998-11-17 Tsukamoto Tetsuo - - * lisp/message.el (message-dont-send): Use `message-save-drafts' - instead of `save-buffer'. - -1998-11-17 Hiroaki Matsui - - * lisp/message.el (message-clone-locals): Add - "user-mail-address" and "user-full-name" to matching pattern. - -1998-11-14 Kenji Itoh - - * lisp/nnmail.el (nnmail-read-passwd): Use `read-passwd' if it - exists as a function. - - * lisp/pop3.el (pop3-read-passwd): Ditto. - -1998-11-16 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.034. - (gnus-version): Modify for SEMI 1.11, FLIM 1.12. - -1998-11-16 Katsumi Yamaoka - - * make.bat: Replace line endings from `LF' to `CRLF'. - -1998-11-16 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.033. - - * Sync up with Pterodactyl Gnus 0.48. - -1998-11-16 Katsumi Yamaoka - - * texi/emacs-mime.texi: Fix iso-8859-1 chars. - - * lisp/message.el (message-send-news): Call - `message-maybe-split-and-send-news' with an arg `method'. - (message-maybe-split-and-send-news): Accept an arg `method'. - - * lisp/rfc1843.el: Defvar `gnus-decode-encoded-word-function'. - - * lisp/mm-uu.el: Require `gnus-mailcap'. - * lisp/mm-decode.el: Require `gnus-mailcap' instead of `mailcap'. - * lisp/mm-encode.el: Ditto. - * lisp/gnus-mailcap.el: Provide `gnus-mailcap' instead of `mailcap'. - -1998-11-16 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.032. - - * Sync up with Pterodactyl Gnus 0.47. - -1998-11-15 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.031. - - * Sync up with Pterodactyl Gnus 0.46. - -1998-11-14 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.030. - - * Sync up with Pterodactyl Gnus 0.44. - -1998-11-13 Katsumi Yamaoka - - * lisp/gnus-art.el (gnus-article-header-presentation-method): Use - `mime-insert-header' instead of `mime-insert-decoded-header'. - - * lisp/nnheader.el (nnheader-decode-subject): Change the 2nd arg of - `mime-find-field-decoder' to 'nov'. - (nnheader-decode-from): Ditto. - - * lisp/message.el (message-maybe-split-and-send-mail): Discard - a return from `message-send-mail-function'. - -1998-11-12 Tatsuya Ichikawa - - * lisp/gnus-offline.el: bug fix. - - * lisp/gnus-ofsetup.el: Bug fix. - -1998-11-12 Katsumi Yamaoka - - * texi/Makefile.in (.texi:): Don't escape double quote. - (texi2latex.elc:): Ditto. - -1998-11-12 Tatsuya Ichikawa - - * texi/gnus-ja.texi: Add infos about `pop3-fma' and `gnus-offline'. - -1998-11-12 Katsumi Yamaoka - - * lisp/message.el (message-maybe-split-and-send-mail): Use - `defsubst' instead of `defun'. - (message-maybe-split-and-send-news): Ditto. - -1998-11-12 Katsumi Yamaoka - - * lisp/gnus-msg.el (gnus-summary-resend-bounced-mail): Bind - `gnus-message-setup-hook' to minimum setting. - - * lisp/message.el (message-bounce-setup-for-mime-edit): New - function. - (message-bounce-setup-function): New user option. Use - `message-bounce-setup-for-mime-edit' in default. - (message-bounce): Call `message-bounce-setup-function' if it is - non-nil. - (message-bounce-setup-hook): New user option. - (message-send-mail): Delete useless things. - -1998-11-12 Katsumi Yamaoka - - * lisp/message.el (message-maybe-split-and-send-mail): New function. - (message-send-mail): Use it. - (message-maybe-split-and-send-news): New function. - (message-send-news): Use it. - -1998-11-11 Tatsuya Ichikawa - - * lisp/gnus-offline.el: bug fix. - - * lisp/gnus-ofsetup.el: Bug fix. - -1998-11-11 Katsumi Yamaoka - - * lisp/message.el (message-send-mail): Protect against errors. - (message-send-news): Ditto. - -1998-11-11 Keiichi Suzuki - - * lisp/message.el (message-do-fcc): Sync up with Semi-gnus 6.8. - (message-8bit-encoding-list): New variable. - (message-check-encoding): Use `message-8bit-encoding-list'. Change - search pattern. - -1998-11-11 Keiichi Suzuki - - * lisp/gnus-bbdb.el (gnus-bbdb/extract-address-components): Normalize - return value. - (gnus-bbdb/update-record): Change condition for checking own message. - -1998-11-11 Yoshiki Hayashi - - * README.semi.ja, README.branch.ja: New file. - -1998-11-10 Tatsuya Ichikawa - - * lisp/gnus-offline.el: bug fix. - - * lisp/gnus-ofsetup.el: Bug fix. - -1998-11-09 Tatsuya Ichikawa - - * lisp/gnus-offline.el: v2.00b1 Separate setting part and - functional part - setting part move to gnus-ofsetup.el (New file). - - * lisp/gnus-ofsetup.el: New file - setting function for - gnus-offline. - -1998-11-09 Katsumi Yamaoka - - * lisp/nnheader.el (nnheader-decode-subject): Call - `mime-find-field-decoder' with `summary' as the 2nd arg. - (nnheader-decode-from): Ditto. - -1998-11-09 Katsumi Yamaoka - - * lisp/pop3-fma.el: Set the value of `nnmail-read-passwd' as a - symbol `pop3-fma-read-passwd'. - -1998-11-09 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.029. - - * Sync up with Pterodactyl Gnus 0.42. - -1998-11-09 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.028. - - * Sync up with Pterodactyl Gnus 0.41. - -1998-11-06 Katsumi Yamaoka - - * lisp/gnus-art.el (gnus-article-make-full-mail-header): New - function. - (gnus-article-mime-edit-article-setup): Use it. - (gnus-article-mime-edit-exit): Use it. - - (gnus-article-mime-edit-article-setup): Set `gnus-show-mime' to t. - - * lisp/gnus-bbdb.el: Modify header description. - -1998-11-05 Katsumi Yamaoka - - * lisp/gnus-art.el (gnus-article-edit-done): Remove - `gnus-article-mime-edit-article-unwind' from - `gnus-article-mode-hook' before run `gnus-article-edit-exit'. - (gnus-article-mime-edit-article-setup): Revised. - (gnus-article-mime-edit-article-unwind): New function. - (gnus-article-mime-edit-exit): New function. - - (gnus-insert-mime-button): Fix typo. - -1998-11-04 Yoshiki Hayashi - - * lisp/message.el: (message-do-fcc): Don't run message-header-hook - and message-before-do-fcc-hook. - -1998-11-04 MORIOKA Tomohiko - - * lisp/mmgnus.el (entity-buffer): Must move to (point-min) before - search boundary between header and body (to fix problem with - Emacs). - -1998-11-03 MORIOKA Tomohiko - - * lisp/nnmh.el (nnmh-retrieve-headers): Don't use - `nnheader-fold-continuation-lines'. - - * lisp/gnus-sum.el (gnus-get-newsgroup-headers): Don't expect - unfolded (to fix problem when using gnus-cache). - -1998-11-04 Katsumi Yamaoka - - * lisp/message.el (message-make-in-reply-to): Quote date. - -1998-11-02 Keiichi Suzuki - - * lisp/gnus-bbdb.el (gnus-bbdb/canonicalize-full-name-methods): - New variable. (Merged from `mime-bbdb.el' in SEMI.) - (gnus-bbdb/extract-address-components): New function. (Merged from - `mime-bbdb.el' in SEMI.) - (gnus-bbdb/canonicalize-spaces): Ditto. - (gnus-bbdb/canonicalize-dots): Ditto. - (gnus-bbdb/update-record): Use - `gnus-bbdb/extract-address-components'. - (gnus-bbdb/lines-and-from): Ditto. - (gnus-bbdb/summary-get-author): Ditto. - (gnus-bbdb/summary-author-in-bbdb): Ditto. - (gnus-bbeb/decode-field-body-function): New variable. - (gnus-bbdb/decode-field-body): New macro. - (gnus-bbdb/update-record): Use `gnus-bbdb/decode-field-body'. - (gnus-bbdb/extract-field-value): Ditto. - (gnus-bbdb/decode-field-body-function): Fix typo. - (gnus-bbdb/decode-field-body): Ditto. - (gnus-bbdb/update-record): Use `save-excursion' and change timing - of `save-restriction'. - -1998-10-31 Katsumi Yamaoka - - * lisp/gnus-draft.el (gnus-draft-decoding-function): Use - `mime-edit-decode-message-in-buffer' instead of - `mime-edit-decode-buffer'. - -1998-10-31 Tatsuya Ichikawa - - * lisp/nnheader.el (nnheader-decode-field-body): New inline - function. - - * lisp/gnus-draft.el (gnus-draft-decoding-function): Use - `mime-edit-decode-buffer' and `mime-decode-header-in-buffer'. - - * lisp/gnus-bbdb.el (gnus-bbdb/update-record): Use - `nnheader-decode-field-body' instead of `mime-decode-field-body'. - (gnus-bbdb/extract-field-value): Ditto. - -1998-10-30 Keiichi Suzuki - - * lisp/gnus-bbdb.el (gnus-bbdb/update-record): Check existance of - `To' field before decoding. - -1998-10-30 Katsumi Yamaoka - - * README-gnus-bbdb.en: New file, translated by courtesy of - Hiroshi Kawaguchi . - -1998-10-30 Katsumi Yamaoka - - * lisp/dgnushack.el (dgnushack-compile): Add `gnus-bbdb.el'. - - * lisp/gnus-bbdb.el: New file. By courtesy of Keiichi Suzuki. - * README-gnus-bbdb.ja: Ditto (A part of Nana-TIPS.ja). - -1998-10-30 Tatsuya Ichikawa - - * lisp/gnus.el: Add autoload setting for `gnus-offline' and - `pop3-fma'. - -1998-10-30 Katsumi Yamaoka - - * lisp/gnus-art.el (article-decode-encoded-words): Use - `mime-decode-header-in-buffer' instead of `eword-decode-header'. - (gnus-article-display-message-with-encoded-word): Likewise. - - * lisp/gnus-art.el (gnus-article-mime-edit-article-setup): Fix - typo. - -1998-10-29 MORIOKA Tomohiko - - * lisp/gnus-draft.el (gnus-draft-decoding-function): Use - `mime-edit-decode-buffer' simply as initial value. - - * lisp/message.el (message-make-forward-subject): Use - `nnheader-decode-subject' instead of - `eword-decode-unstructured-field-body'. - - * lisp/nnheader.el (nnheader-decode-subject): New alias. - (nnheader-decode-from): New alias. - (make-full-mail-header): Use `nnheader-decode-subject' and - `nnheader-decode-from' instead of - `eword-decode-and-unfold-unstructured-field' and - `eword-decode-and-unfold-structured-field'. - -1998-10-29 Katsumi Yamaoka - - * lisp/gnus-art.el (gnus-article-mime-edit-article-setup): Force - `font-lock' to turn on at the beginning. Turn off `font-lock' - after editing article. - -1998-10-29 Katsumi Yamaoka - - * lisp/gnus-sum.el (gnus-summary-edit-article-done): Abolish - `gnus-article-decoded-p'. - - * lisp/nnheader.el: Delete useless comments. - - * lisp/gnus-art.el (gnus-article-edit-article): Call - `gnus-article-edit-article-setup-function' if it is non nil. - (gnus-article-mime-edit-article-setup): New function. - (gnus-article-mime-edit-article-setup-hook): New hook. - (gnus-article-edit-article-setup-function): New user option. Use - `gnus-article-mime-edit-article-setup' in default. - -1998-10-28 Tatsuya Ichikawa - - * lisp/pop3-fma.el: Determin base64 encode/decode function by FLIM. - -1998-10-26 Tatsuya Ichikawa - - * lisp/pop3-fma.el: Require `mel-b-el' if `mel-b' does not exist. - -1998-10-26 Katsumi Yamaoka - - * lisp/pop3-fma.el: Require `mel-b-ccl' or `mel-b-el' if `mel-b' - does not exist. - - * lisp/nnheader.el (nnheader-file-coding-system): Restore the - previous default value. - -1998-10-26 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.027. - - * Sync up with Pterodactyl Gnus 0.40. - -1998-10-23 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.026. - (gnus-version): Modify supported version for FLIM and SEMI. - -1998-10-22 Katsumi Yamaoka - - * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Use - `mime-fetch-field' for getting Subject and From field. - -1998-10-20 MORIOKA Tomohiko - - * lisp/nnheader.el (nnheader-insert-nov): Use `mime-fetch-field' - for Subject and From field. - -1998-10-20 Katsumi Yamaoka - - * lisp/nnheader.el (nnheader-parse-nov): Use - `make-full-mail-header'. - -1998-10-20 MORIOKA Tomohiko - - * lisp/nnheader.el (nnheader-parse-head): Use - `make-full-mail-header'. - -1998-10-20 Katsumi Yamaoka - - * lisp/nnheader.el (make-full-mail-header): Sync up with - "chao-6_9" branch. - (mail-header-set-xref): Use `mime-entity-set-xref-internal'. - (mail-header-xref): Use `mime-entity-xref-internal' - (mail-header-set-lines): mime-entity-set-lines-internal'. - (mail-header-lines): Use `mime-entity-lines-internal' - (mail-header-set-chars): Use `mime-entity-set-chars-internal'. - (mail-header-chars): Use `mime-entity-chars-internal'. - (mail-header-set-references): Use - `mime-entity-set-references-internal'. - (mail-header-references): Use `mime-entity-references-internal'. - (mail-header-set-message-id): Use - `mime-entity-set-message-id-internal'. - (mail-header-message-id): Use `mime-entity-message-id-internal'. - (mail-header-set-date): Use `mime-entity-set-date-internal'. - (mail-header-date): Use `mime-entity-date-internal'. - (mail-header-set-from): Use - `mime-entity-set-decoded-from-internal'. - (mail-header-from): Use `mime-entity-decoded-from-internal'. - (mail-header-set-subject): Use - `mime-entity-set-decoded-subject-internal'. - (mail-header-subject): Use `mime-entity-decoded-subject-internal'. - All changes are imported from "chao-6_9" branch. - - * lisp/message.el (message-reply): Use - `make-full-mail-header-from-decoded-header`. - (message-followup): Ditto. - (message-get-reply-buffer-function): Abolished. - (message-fill-address): Don't fold if the current column number is - less than 79. - - * lisp/gnus-sum.el (gnus-summary-insert-line): Use - `gnus-put-text-property-excluding-characters-with-faces' instead - of `gnus-put-text-property'. - (gnus-summary-mode-map): Abolish key definition - "b" for `gnus-article-view-part'. - (gnus-encoded-word-method-alist): Abolished. - (gnus-multi-decode-encoded-word-string) Abolished. - - * lisp/gnus-int.el (gnus-request-replace-article): Don't encode - message body. - - * lisp/gnus-i18n.el (gnus-get-summary-default-charset): Abolished. - (gnus-set-summary-default-charset): Sync up with "chao-6_9" branch. - - * lisp/gnus-art.el (gnus-article-display-method-for-encoded-word): - Abolished. - (gnus-article-display-message-with-encoded-word): Abolished. - -1998-10-14 MORIOKA Tomohiko - - * lisp/gnus-sum.el (gnus-summary-line-format-alist): Use - `mime-read-field', `std11-address-string' and - `std11-full-name-string' instead of - `gnus-extract-address-components'. - (gnus-article-sort-by-author): Likewise. - -1998-10-12 MORIOKA Tomohiko - - * lisp/nnheader.el (make-full-mail-header-from-decoded-header): - New function. - -1998-10-05 MORIOKA Tomohiko - - * lisp/gnus-art.el (gnus-article-display-mime-message): Set up - buffer local variable `default-mime-charset' of - `gnus-original-article-buffer' and `gnus-article-buffer'. - -1998-09-30 MORIOKA Tomohiko - - * lisp/nnheader.el: Use `mime-entity' as gnus-header structure. - (mail-header-number): Use `mime-entity-location-internal'. - (mail-header-set-number): Use `mime-entity-set-location-internal'. - - Change other `mail-header-*' and `mail-header-set-*' to alias of - reference and set functions for mime-entity-internal. - - * lisp/mmgnus.el: New module. - - * lisp/gnus-sum.el: Abolish variable - `gnus-structured-field-decoder' and - `gnus-unstructured-field-decoder'. - (gnus-nov-parse-line): Don't decode from and subject. - (gnus-get-newsgroup-headers): Likewise. - - * lisp/gnus-score.el (gnus-header-index): Modify to use - mime-entity structure as gnus-header structure. - - * lisp/gnus-art.el (gnus-article-prepare-display): Use content of - `gnus-current-headers' as mime-message-structure. - -1998-09-29 MORIOKA Tomohiko - - * lisp/gnus-sum.el (gnus-update-summary-mark-positions): Use - `make-full-mail-header'. - -1997-11-27 MORIOKA Tomohiko - - (gnus-parse-headers-hook): Use - `(gnus-set-summary-default-charset)' in default. - - -1998-10-21 Katsumi Yamaoka - - * lisp/gnus-xmas.el (gnus-tilde-pad-form): Guard for non string - symbol. - -1998-10-21 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.025. - (gnus-version): Fix supported version for FLIM and SEMI. - - * Sync up with Pterodactyl Gnus 0.36. - -1998-10-20 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.024. - Fix supported version for FLIM and SEMI. - - * Sync up with Pterodactyl Gnus 0.35. - -1998-10-17 Tatsuya Ichikawa - - * lisp/gnus-offline.el (gnus-offline-setup-needed-hooks): Change - message-send-hook to mime-edit-translate-hook. - - * lisp/pop3-fma.el (pop3-fma-init-message-hook): Change - message-send-hook to mime-edit-translate-hook. - - * lisp/message.el (message-save-drafts): New function to save - drafts in network code. - -1998-10-16 Katsumi Yamaoka - - * lisp/gnus-msg.el (gnus-message-setup-hook): Replace the default - value to `gnus-maybe-setup-default-charset'. - (gnus-maybe-setup-default-charset): New function. It is called - `message-maybe-setup-default-charset' at one time. - - * lisp/message.el (message-maybe-setup-default-charset): Abolished. - -1998-10-16 Tatsuya Ichikawa - - * TODO.ja: Update. - -1998-10-15 Keiichi Suzuki - - * lisp/gnus-spec.el (gnus-update-format-specifications): Force - update `gnus-format-specs' when `gnus-version' is differ from - saved version. - -1998-10-14 Katsumi Yamaoka - - * lisp/pop3-fma.el (pop3-fma-read-char-exclusive): New macro. Use - `next-command-event' instead of `read-char-exclusive' under XEmacs. - (pop3-fma-read-noecho): Use it. - -1998-10-13 Katsumi Yamaoka - - * lisp/nnheaderxm.el (nnheader-xmas-Y-or-n-p): New function. - It will be used for the substitute of `nnheader-Y-or-n-p' under - XEmacs. - - * lisp/nnheader.el (nnheader-Y-or-n-p): Rewrite for Emacs 19 or - later except for XEmacs. - -1998-10-12 Katsumi Yamaoka - - * lisp/uudecode.el: New file. - -1998-10-11 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.023. - Add version information for SEMI-1.9/FLIM-1.10. - - * Sync up with Pterodactyl Gnus 0.34. - -1998-10-10 Katsumi Yamaoka - - * lisp/gnus-msg.el (gnus-message-make-user-agent): Fix typo in doc - string. - -1998-10-07 Yoshiki Hayashi - - * lisp/nnagent.el (nnagent-open-server): Small bug fix. - -1998-10-07 Keiichi Suzuki - - * TODO.ja: New file. - -1998-10-06 Katsumi Yamaoka - - * lisp/message.el (message-mime-insert-article): Don't refer to - `mark' position. - - * lisp/message.el (message-mime-insert-article): If the optional - arg FULL-HEADERS is non-nil, include full headers when inserting. - -1998-10-06 Keiichi Suzuki - - * lisp/message.el (message-parameter-alist): New variable. - (message-startup-parameter-alist): New variable. - (message-fetch-reply-field): Get reply buffer with - `message-get-reply-buffer()'. - (message-yank-original): Ditto. - (message-eval-parameter): New function. - (message-get-reply-buffer): Ditto. - (message-get-original-reply-buffer): Ditto. - (message-mode): New buffer local variable - `message-parameter-alist'. - (message-setup): Set up `message-reply-buffer' from - `message-parameter-alist'. - (message-mime-insert-article): Get `Original message buffer' with - `message-get-original-reply-buffer' instead of - `gnus-original-article-buffer'. - Remove bogus header fields for forwarding message. - - * lisp/gnus-msg.el (gnus-setup-message): Setup - `message-startup-parameter-alist'. - -1998-10-05 Yoshiki Hayashi - - * lisp/gnus.el (gnus-info-filename): New variable. - (gnus-info-find-node): Use `gnus-info-filename' and - `current-language-environment'. - -1998-10-05 Katsumi Yamaoka - - * lisp/message.el (message-send-mail): Remove misplaced - `interactive'. - - * lisp/message.el (message-yank-original): Get back to the previous - state. - (message-fetch-reply-field): Ditto. - (message-setup): Ditto. - * lisp/gnus-msg.el (gnus-setup-message): Ditto. - -1998-10-05 Katsumi Yamaoka - - * lisp/gnus-draft.el: Remove some useless comments. - - * lisp/gnus-draft.el (gnus-draft-send-draft): Abolished. - -1998-10-05 Katsumi Yamaoka - - * lisp/message.el (message-yank-original): Use the value of - `message-reply-buffer' as a function if it is a function. - (message-fetch-reply-field): Ditto. - - * lisp/message.el (message-setup): Set the value of - `message-reply-buffer' if the variable - `gnus-message-get-reply-buffer' exists. - - * lisp/gnus-msg.el (gnus-setup-message): Bind - `gnus-message-get-reply-buffer' as the function - `gnus-copy-article-buffer'. - -1998-10-03 MORIOKA Tomohiko - - * lisp/gnus-draft.el (gnus-draft-send): Call - `message-send-news-function' or `message-send-mail-function' - instead of `message-send-and-exit'. - -1998-10-03 Katsumi Yamaoka - - * lisp/message.el (message-mode-map): Use `define-key' instead of - `substitute-key-definition' for `message-kill-buffer'. - -1998-10-03 Katsumi Yamaoka - - * lisp/message.el (message-make-user-agent): Replace with the - new code again. It is based on MORIOKA-san's code. - -1998-10-03 Katsumi Yamaoka - - * lisp/message.el (message-make-user-agent): Replace with the - new code. - - * lisp/gnus-msg.el (gnus-message-make-user-agent): New function. - - * lisp/gnus-msg.el (gnus-extended-version): Needn't be interactive. - - * lisp/gnus-msg.el (gnus-inviolable-extended-version): Abolished. - -1998-10-03 Katsumi Yamaoka - - * lisp/message.el (message-kill-buffer): Change the prompt string. - - * lisp/message.el (message-mode-map): Substitute key definition - from `kill-buffer' to `message-kill-buffer'. - -1998-10-03 Katsumi Yamaoka - - * lisp/gnus-msg.el (gnus-message-setup-hook): Set the default value - to `message-maybe-setup-default-charset'. - - * lisp/message.el (message-setup-hook): Move - 'message-maybe-setup-default-charset' to `gnus-message-setup-hook'. - -1998-10-02 Katsumi Yamaoka - - * lisp/message.el (message-kill-buffer): Refer to - `message-kill-buffer-query-function'. - - * lisp/message.el (message-kill-buffer-query-function): New user - option. - - * lisp/nnheader.el (nnheader-Y-or-n-p): New function. - -1998-10-01 Tatsuya Ichikawa - - * lisp/pop3-fma.el (pop3-fma-movemail): Bug fix. - Delete variable pop3-fma-movemail options. - Add new variabel pop3-fma-commandline-arguments. - -1998-10-01 Katsumi Yamaoka - - * lisp/message.el: Fix my stupid changes. - -1998-09-30 Katsumi Yamaoka - - * lisp/message.el (message-make-user-agent): Add the value of - `system-configuration' to Emacs and XEmacs as a comment. - - * lisp/message.el (message-make-user-agent): Fold up the return - value if the optional arg MAX-COLUMN is specified. - -1998-09-29 Katsumi Yamaoka - - * lisp/message.el (message-make-user-agent): Make a user-agent - string without MUA info, if the value of `message-user-agent' is - nil nor `gnus-inviolable-extended-version' is not exists. - -1998-09-28 Tatsuya Ichikawa - - * lisp/nnmh.el (nnmh-request-accept-article): Insert `Message-ID' - only if `group' name is neither "queue" nor "draft". - Fix typo (at 23:25). - - * lisp/message.el (message-send-mail): Add different Message-ID in - each message/partial - -1998-09-26 Katsumi Yamaoka - - * texi/gnus-ja.texi: Sync up with Semi-gnus 6.8.19. - - * lisp/gnus.el: Add autoload setting for - `gnus-quote-arg-for-sh-or-csh'. - -1998-09-26 Katsumi Yamaoka - - * lisp/gnus-sum.el (gnus-summary-insert-pseudos): Use - `gnus-quote-arg-for-sh-or-csh' instead of `mm-quote-arg'. - - * lisp/nndoc.el (nndoc-possibly-change-buffer): Don't eval - `mm-enable-multibyte'. - * lisp/nnmbox.el (nnmbox-possibly-change-newsgroup): Ditto. - -1998-09-25 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.022. - - * Sync up with Pterodactyl Gnus 0.32. - -1998-09-24 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.021. - - * Sync up with Pterodactyl Gnus 0.31. - -1998-09-23 Katsumi Yamaoka - - * lisp/message.el (message-make-user-agent): Add extended version - number to Emacs/{VERSION} (e.g. "Emacs/20.3.90"). - -1998-09-22 Tatsuya Ichikawa - - * lisp/gnus-agent.el (gnus-agent-expire): Bug fix when variable - expired is nil. - -1998-09-18 Tsukamoto Tetsuo - - * lisp/gnus-draft.el: (gnus-draft-edit-message): Fix typo. - -1998-09-17 Katsumi Yamaoka - - * lisp/message.el (message-make-user-agent): Use - `gnus-inviolable-extended-version' if `message-user-agent' is nil. - - * lisp/message.el (message-make-user-agent): In message-mode, make - the most of the `User-Agent' field value if already exists. - - * lisp/gnus-msg.el (gnus-inviolable-extended-version): New constant. - - * lisp/gnus-msg.el (gnus-extended-version): Remove trailing white - space. - -1998-09-17 Tsukamoto Tetsuo - - * lisp/gnus-draft.el (gnus-draft-send-draft): Expire queued message - after news posting. - -1998-09-17 Tatsuya Ichikawa - - * lisp/gnus-draft.el (gnus-draft-send-draft): Error if no - recipients. - -1998-09-17 Tsukamoto Tetsuo - - * lisp/gnus-draft.el (gnus-draft-decoding-function): Uncommented. - -1998-09-17 Tatsuya Ichikawa - - * lisp/gnus-draft.el (gnus-draft-edit-message): Use - `gnus-draft-setup-for-editing' instead of `gnus-draft-setup'. - (gnus-draft-send): Use `gnus-draft-setup-for-sending' instead of - `gnus-draft-setup'. - (gnus-draft-setup-for-editing): New function (renamed from - `gnus-draft-setup'). - (gnus-draft-setup-for-sending): New function. - (gnus-draft-send-draft-buffer): New variable. - -1998-09-16 Katsumi Yamaoka - - * texi/gnus-ja.texi: Sync up with Semi-gnus 6.8.18. - - * Makefile.in: Add entry `info-ja'. - * texi/Makefile.in: Add entry `ja'. - -1998-09-16 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.020. - - * lisp/ietf-drums.el: New file. - * lisp/date.el: Abolished. - * lisp/mm.el: Abolished. - - * Sync up with Pterodactyl Gnus 0.31. - -1998-09-14 Katsumi Yamaoka - - * lisp/message.el (message-encode-message-body): Copied from - Pterodactyl Gnus 0.30. It is useless for Semi-gnus but usefull for - reducing differences while at work for synchronizing up. It will - be removed when the Gnus becomes stable. - * lisp/gnus-art.el (gnus-mime-display-alternative) - (gnus-display-mime) (gnus-widget-press-button) - (gnus-insert-mime-button) (gnus-mime-copy-part) - (gnus-mime-view-part) (gnus-mime-pipe-part) (gnus-mime-save-part) - (gnus-mime-button-map) (gnus-mime-button-line-format-alist) - (gnus-mime-button-line-format) - (article-mime-decode-quoted-printable-buffer) - (article-de-quoted-unreadable) (article-decode-charset) - (article-decode-mime-words) (gnus-decode-header-function) - (gnus-display-mime-function): Ditto. - -1998-09-14 Katsumi Yamaoka - - * lisp/gnus-art.el (article-decode-encoded-words): Renamed from - `gnus-article-decode-rfc1522'. - - * lisp/mail-parse.el: New file. - * lisp/mm-view.el: New file. - * lisp/rfc2231.el: New file. - * texi/emacs-mime.texi: New file. - - * lisp/gnus.el (gnus-version-number): Update to 6.10.019. - - * Sync up with Pterodactyl Gnus 0.30. - -1998-09-11 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.018. - - * Sync up with Pterodactyl Gnus 0.26. - -1998-09-11 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.017. - - * lisp/gnus-art.el (gnus-show-mime) (gnus-summary-toggle-mime): - Revived. - - * lisp/gnus-mailcap.el: New file. Renamed from `mailcap.el'. - - * Sync up with Pterodactyl Gnus 0.25. - -1998-09-11 Katsumi Yamaoka - - * lisp/gnus-art.el (article-make-date-line): Add TZ value to - `local' and `ut' date. - - * lisp/gnus-art.el (article-make-date-line): Fix `ut' date. - - * lisp/parse-time.el (parse-time-string): The last element of the - return list should be TZ. - - * lisp/message.el (message-send): Eval 'message-fix-before-sending' - after encoding. - -1998-09-10 Katsumi Yamaoka - - * lisp/gnus-spec.el (gnus-tilde-pad-form): Use old macro form. - - * lisp/gnus-art.el (article-decode-mime-words): Abolished. - -1998-09-10 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.016. - - * Sync up with Pterodactyl Gnus 0.24. - -1998-09-09 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.015. - - * Sync up with Pterodactyl Gnus 0.23. - -1998-09-09 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.014. - - * Sync up with Pterodactyl Gnus 0.22. - -1998-09-08 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.013. - - * Sync up with Pterodactyl Gnus 0.19. - -1998-09-08 Tatsuya Ichikawa - - * lisp/gnus-draft.el (gnus-draft-send-draft) (gnus-draft-send): New - implementations for testing. - - * lisp/gnus-agent.el (gnus-agent-expire) (gnus-agent-fetch-headers) - (gnus-agent-flush-cache) (gnus-agent-save-history) - (gnus-agent-save-groups): Bind `coding-system-for-write' by - `gnus-agent-file-coding-system' while writing a file. - - * lisp/gnus-agent.el (gnus-agent-file-coding-system): Renamed from - `gnus-agent-article-file-coding-system'. - -1998-09-08 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.012. - - * Sync up with Pterodactyl Gnus 0.18. - -1998-09-07 Tatsuya Ichikawa - - * lisp/gnus-draft.el (gnus-draft-setup): Do not use message mode. - (gnus-draft-send): Ditto. - gnus-draft-send-draft-buffer: New variable. - - * lisp/gnus-msg.el (gnus-extended-version): Display original Gnus - version. - - * lisp/gnus-agent.el : Use pGnus 0.17 gnus-agent.el - -1998-09-07 Katsumi Yamaoka - - * lisp/gnus.el (gnus-continuum-version): Use `char-int' instead of - `mm-char-int'. - * lisp/messagexmas.el (message-xmas-make-caesar-translation-table): - Ditto. - - * lisp/gnus-art.el (gnus-article-setup-buffer): Don't use - `mm-enable-multibyte'. - -1998-09-07 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.10.011. - - * Sync up with Pterodactyl Gnus 0.17. - -1998-09-06 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.10.010. - - * Sync up with Pterodactyl Gnus 0.16. - -1998-09-04 Tatsuya Ichikawa - - * lisp/pop3-fma.el (pop3-fma-movemail): Add error handle. - (pop3-fma-get-movemail-type): Fix typo. - -1998-09-04 Katsumi Yamaoka - - * lisp/gnus.el (gnus-version-number): Update to 6.9.09. - - * Sync up with Pterodactyl Gnus 0.14. - -1998-09-03 Katsumi Yamaoka - - * lisp/nndoc.el (nndoc-transform-mime-parts): Insert - "MIME-Version:" instead of "Mime-Version:". - - * lisp/message.el (message-encode-message-body): Abolished. - - * lisp/message.el: Don't require `rfc2047'. - - * lisp/gnus.el: Delete autoload settings for `qp' and `rfc2047'. - - * lisp/gnus.el (semi-gnus-developers): New constant. - - * lisp/gnus.el (gnus-version-number): Update to 6.9.08. - - * lisp/gnus-xmas.el (gnus-tilde-pad-form): Move to - `gnus-xmas-redefine' from `gnus-xmas-define'. - - * lisp/gnus-sum.el (gnus-set-mode-line): Use `gnus-truncate-string' - instead of `truncate-string'. - - * lisp/gnus-sum.el: Don't define menu for "MIME". - - * lisp/gnus-sum.el: Delete key definitions for - `gnus-article-decode-mime-words' and `gnus-article-decode-charset'. - - * lisp/gnus-spec.el (gnus-tilde-pad-form): New function for the - benefit of avoiding byte-compile warning. - - * lisp/gnus-soup.el (gnus-soup-send-packet): Set - `message-user-agent' instead of `message-newsreader'. - - * lisp/message.el (message-set-work-buffer) (message-mode): Don't - use `mm-enable-multibyte'. - * lisp/gnus-util.el (gnus-set-work-buffer): Ditto. - * lisp/gnus-sum.el (gnus-summary-mode): Ditto. - * lisp/gnus-msg.el (gnus-copy-article-buffer): Ditto. - * lisp/gnus-art.el (gnus-article-mode): Ditto. - - * lisp/gnus-art.el (gnus-article-decode-mime-words) - (gnus-article-decode-charset) (gnus-decode-rfc1522) - (article-decode-rfc1522) (article-de-quoted-unreadable) - (article-mime-decode-quoted-printable-buffer): Abolished. - - * lisp/message.el: Don't require `mm-bodies'. - * lisp/gnus-art.el: Ditto. - - * lisp/gnus-agent.el (gnus-category-line-format-alist): Change - variable name `name' and `groups' to `gnus-tmp-name' and - `gnus-tmp-groups'. - (gnus-category-insert-line): Ditto. - - * lisp/gnus-agent.el (gnus-agent-fetch-articles): Delete useless - binding variables. - -1998-09-01 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.9.07. - - * Sync up with Pterodactyl Gnus 0.13. - -1998-08-31 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.9.04. - - * Sync up with Pterodactyl Gnus 0.10. - - * lisp/gnus-agent.el : back to version Gnus 5.6.32. - -1998-08-31 Katsumi Yamaoka - - * lisp/rfc1522.el: Abolished. - - * lisp/message.el: (message-send-mail) (message-send-news): Don't - use `mm-encode-message-header'. - - * lisp/gnus.el: Delete autoload settings for - `hexl-hex-string-to-integer', `mm-decode-words-region', - `mm-decode-words-string', `gnus-hack-decode-rfc1522', - `gnus-article-de-quoted-unreadable', `gnus-decode-rfc1522' and - `article-decode-rfc1522'. - - * lisp/gnus-sum.el: Delete key definitions for - `gnus-article-decode-mime-words', `gnus-article-decode-mime-words' - and `gnus-article-de-quoted-unreadable'. - - * lisp/gnus-art.el (gnus-article-decode-mime-words) - (gnus-decode-rfc1522) (article-de-quoted-unreadable) - (article-mime-decode-quoted-printable-buffer): Abolished. - - * lisp/gnus.el (gnus-version-number): Update to 6.9.03. - - * Sync up with Pterodactyl Gnus 0.9. - -1998-08-31 Tatsuya Ichikawa - - * lisp/gnus-agent.el: Do not use nnheader-temp-write. - - * lisp/gnus-ems.el: Do not use nnheader-temp-write. - - * lisp/gnus.el (gnus-version-number): Update to 6.9.02. - - * Sync up with Pterodactyl Gnus 0.8. - -1998-08-30 Tatsuya Ichikawa - - * New branch ... pgnus-ichikawa - - * lisp/gnus.el (gnus-original-version-number) - (gnus-original-product-name) : New variable. - - * lisp/gnus.el (gnus-version-number): Update to 6.9.01. - Third version number 0x means Original gnus's status in beta version. - - * Sync up with Pterodactyl Gnus 0.6. - -1998-08-30 Tatsuya Ichikawa - - * lisp/gnus-agent.el (gnus-agent-fetch-headers): Bug Fix. - When add a new newsgroup , gnus-agent cannot fetch articles. - - * lisp/gnus.el (gnus-version-number): Update to 6.8.17. - - * Sync up with Gnus 5.6.42. - -1998-08-28 Shuhei KOBAYASHI - - * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Try - "qualified" newsgroup name first. - -1998-08-28 Shuhei KOBAYASHI - - * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Match - "real" newsgroup name; strip "backend+server" prefix. - -1998-08-28 Katsumi Yamaoka - - * lisp/message.el (message-make-user-agent): New function. - (message-generate-headers): Use it. - These changes are copied from Shoe-gnus. - -1998-08-28 Shuhei KOBAYASHI - - * lisp/message.el (message-make-in-reply-to): - Use `std11-extract-address-components'. - (message-use-mail-reply-to): Doc fix. - -1998-08-27 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.16. - - * Sync up with Gnus 5.6.41. - -1998-08-26 Katsumi Yamaoka - - * lisp/gnus-spec.el (gnus-parse-simple-format): Use - `gnus-tilde-pad-form' instead of the padding faculty of `format' - under XEmacs-mule. - - * lisp/gnus-xmas.el - (gnus-xmas-redefine): Redifine `gnus-truncate-string', - `gnus-tilde-max-form' and `gnus-tilde-cut-form' for XEmacs-mule. - (gnus-xmas-define): New function 'gnus-tilde-pad-form' for - XEmacs-mule. - -1998-08-26 Shuhei KOBAYASHI - - * lisp/gnus-art.el (gnus-article-narrow-to-signature): - Removed TM stuff. - (gnus-article-display-mime-message): - Set `mime-button-mother-dispatcher' in correct buffer. - (gnus-url-mailto): Use `gnus-setup-message'. - (gnus-button-mailto): Ditto. - (gnus-button-reply): Ditto. - - * lisp/gnus-ems.el (gnus-mule-max-width-function): Removed. - (gnus-truncate-string): Use `truncate-string-to-width' if available. - (gnus-tilde-max-form): New implementation. - (gnus-tilde-cut-form): Ditto. - - * lisp/gnus-msg.el (gnus-summary-mail-digest): New function. - (gnus-summary-post-digest): New function. - - * lisp/gnus-sum.el (gnus-summary-make-menu-bar): Use - `gnus-summary-mail-digest' and `gnus-summary-post-digest' instead - of `gnus-uu-digest-mail-forward' and `gnus-uu-digest-post-forward'. - - * lisp/gnus-util.el (gnus-truncate-string): Ignore more than two - arguments. - - * lisp/message.el (message-forward-end-separator): Use - `text/plain' tag. - -1998-08-25 Tatsuya Ichikawa - - * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Write - file in raw-text coding system. - (gnus-cache-save-buffers): Ditto. - * lisp/gnus-cache.el (gnus-cache-write-file-coding-system): New variable. - * lisp/gnus-util.el (gnus-write-buffer): Undo change. - - * lisp/gnus-util.el (gnus-write-file-coding-system): Delete variable. - -1998-08-25 Shuhei KOBAYASHI - - * lisp/gnus-msg.el (gnus-bug-message): About Semi-gnus. - (gnus-extended-version): Return gnus version only. - (gnus-bug): Add Semi-gnus developers to recipients. - - * lisp/message.el (message-make-user-agent): New function. - (message-generate-headers): Use it. - -1998-08-24 Tatsuya Ichikawa - - * lisp/gnus-offline.el (gnus-offline-setup): Bug fix and version - changed to 1.53. - - * lisp/gnus-util.el (gnus-write-buffer): Write file in raw-text coding - system. - - * lisp/gnus-util.el (gnus-write-file-coding-system): New variable. - -1998-08-23 Shuhei KOBAYASHI - - * lisp/message.el: Suppress some byte-compile warnings. - (message-make-forward-subject): Failed to sync. - (message-setup): Ditto. - (message-clone-locals): Modify regexp. - - * lisp/message.el (message-fill-references): Reverted. - -1998-08-23 Shuhei KOBAYASHI - - * lisp/gnus-agent.el (gnus-agent-braid-nov): Use - `nnheader-insert-file-contents'. - - * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Sync up - with "akr" branch. - -1998-08-23 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.15. - - * Sync up with Gnus 5.6.39. - -1998-08-20 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.14. - - * Sync up with Gnus 5.6.38. - - * lisp/gnus-offline.el (gnus-offline-enable-fetch-mail): Enable to get - APOP server. - - * lisp/pop3-fma.el (pop3-fma-movemail): Enable to get from APOP server. - (pop3-fma-set-pop3-password) Enable to get from APOP server. - -1998-08-16 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.13. - - * Sync up with Gnus 5.6.37. - - * lisp/gnus-offline.el (gnus-offline-setup) : To create spol directory - if not exists. - Change default value of gnus-offline-drafts-queue-type 'miee to 'agent - -1998-08-16 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.12. - - * Sync up with Gnus 5.6.36. - - * lisp/gnus-offline.el : New file. - Merge gnus-offline to ichikawa branch. - -1998-08-15 Yoshiki Hayashi - - * texi/gnus-ja.texi: Update. - -1998-08-14 Katsumi Yamaoka - - * lisp/gnus-start.el (gnus-save-newsrc-file): Bind - `coding-system-for-write' by `gnus-startup-file-coding-system' - while saving the quick newsrc file. - - * lisp/gnus-start.el (gnus-startup-file-coding-system): Change - default value to `ctext'. - -1998-08-13 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.11. - - * Sync up with Gnus 5.6.34. - -1998-08-12 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.10. - - * Sync up with Gnus 5.6.33. - -1998-08-11 Keiichi Suzuki - - * lisp/message.el (message-frames): New custom group. - (message-original-frame): New variable. - (message-use-multi-frames): New variable. - (message-delete-frame-on-exit): New variable. - (message-send-and-exit): Delete frame which made for editing - message. - (message-kill-buffer): Ditto. - (message-delete-frame): New function. - (message-pop-to-buffer): Make new frame when edit message. - -1998-08-11 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.9. - - * Sync up with Gnus 5.6.31. - -1998-08-10 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.8. - - * Sync up with Gnus 5.6.30. - -1998-08-10 Shuhei KOBAYASHI - - * lisp/gnus.el (gnus-version-number): Update to 6.8.7. - -1998-08-06 Katsumi Yamaoka - - * lisp/smtp.el: Do not insert empty line at the end of message. - -1998-08-06 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.6. - - * Sync up with Gnus 5.6.29. - -1998-08-05 Tatsuya Ichikawa - - * lisp/gnus-start.el (gnus-read-init-file): Fix indent. - * lisp/gnus-ems.el (gnus-tilde-max-form): Redefine instead of - (gnus-summary-line-format-spec) to display Japanese character - correctly in Gnus summaly. - -1998-08-05 Keiichi Suzuki - - * lisp/gnus-start.el (gnus-read-init-file): Don't restrict - `coding-system-for-read' by `binary' when loading `.gnus'. - -1998-08-04 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.5. - - * Sync up with Gnus 5.6.28. - -1998-07-27 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.4. - - * Sync up with Gnus 5.6.27. - -1998-07-27 Yoshiki Hayashi - - * texi/message-ja.texi: Japanese translation of "message.texi". - -1998-07-26 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.8.3. - - * Sync up with Gnus 5.6.26. - -1998-07-23 Shuhei KOBAYASHI - - * lisp/gnus.el (gnus-version-number): Update to 6.8.2. - (gnus-version): Change to "Semi-gnus". Change comment format. - -1998-07-21 Keisuke Mori - - * texi/gnus-ja.texi: Add "Appendices". - -1998-07-21 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "Appendices". - -1998-07-16 Shuhei KOBAYASHI - - * lisp/gnus.el (gnus-version-number): Update to 6.8.1. - - * Sync up with Gnus 5.6.24. - -1998-07-10 Keiichi Suzuki - - * lisp/gnus-ems.el (gnus-mule-cite-add-face): Fix problem when multi - bytes charactors are used in cite prefix. (for Emacs 20.1 and 20.2) - (gnus-ems-redefine): for Emacs 20.1 and 20.2 - - * lisp/gnus-cite.el (gnus-cite-add-face): Abolish my last bogus change. - -1998-07-09 Keiichi Suzuki - - * lisp/gnus-cite.el (gnus-cite-add-face): Fix problem when multi - bytes charactors are used in cite prefix. - -1998-07-07 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "The End". - -1998-07-06 Keisuke Mori - - * texi/gnus-ja.texi: Add "Various". - -1998-07-06 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "Various". - * texi/gnus-ja.texi: Sync up with Gnus 5.6.22 - -1998-07-02 MORIOKA Tomohiko - - * lisp/message.el (message-header-format-alist): Repair to use - `message-fill-references' for References. - -1998-07-01 MORIOKA Tomohiko - - * lisp/gnus-art.el (gnus-article-header-presentation-method): - Delete nil optional arguments. - - Delete setting for `mime-raw-representation-type-alist'. - -1998-07-01 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.8.0. - (gnus-version): Modify for FLIM 1.8. - - * lisp/gnus-art.el (gnus-article-header-presentation-method): - Modify for FLIM 1.8. - -1998-06-30 Keisuke Mori - - * texi/gnus-ja.texi: Add "Scroing". - -1998-06-30 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "Scoring". - -1998-06-30 Tatsuya Ichikawa - - * Sync up with Gnus 5.6.22 - * lisp/gnus.el (gnus-version-number): Update to 6.7.8. - * lisp/pop3-fma.el : Enable to get localhost mail spool. - -1998-06-29 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.7.7. - - * lisp/gnus-art.el (gnus-article-prepare): Set up - `gnus-article-current-summary' of gnus-article-buffer. - (gnus-request-article-this-buffer): Don't set up - `gnus-article-current-summary'. - -1998-06-27 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.7.6. - -1998-06-27 MORIOKA Tomohiko - - * lisp/gnus-art.el (gnus-mime-preview-quitting-method): Renamed - from `mime-preview-quitting-method-for-gnus'. - -1998-06-27 MORIOKA Tomohiko - - * lisp/gnus-sum.el (gnus-summary-preview-mime-message): New - implementation. - - * lisp/gnus-art.el (mime-preview-quitting-method-for-gnus): Use - `gnus-article-show-summary' is `gnus-show-mime' is not nil. - -1998-06-27 MORIOKA Tomohiko - - * texi/ChangeLog, texi/gnus.texi, texi/message.texi, - lisp/ChangeLog, lisp/gnus.el, lisp/nngateway.el, lisp/nnfolder.el, - lisp/message.el, lisp/gnus-sum.el, lisp/gnus-soup.el: Sync up with - Gnus 5.6.20. - -1998-06-26 MORIOKA Tomohiko - - * README, texi/ChangeLog, texi/gnus.texi, texi/message.texi, - lisp/ChangeLog, lisp/nnweb.el, lisp/nnmail.el, lisp/nndoc.el, - lisp/message.el, lisp/lpath.el, lisp/gnus.el, lisp/gnus-util.el, - lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-score.el, - lisp/gnus-group.el, lisp/gnus-ems.el, lisp/gnus-demon.el, - lisp/gnus-art.el: Sync up with Gnus 5.6.16. - -1998-06-26 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.7.3. - - * lisp/gnus-sum.el (gnus-summary-move-article): Use - `gnus-request-article-this-buffer'. - (gnus-request-partial-message): Likewise. - - * lisp/gnus-art.el (gnus-article-prepare): Use - `gnus-request-article-this-buffer'. - (gnus-request-article-this-buffer): Renamed from - `gnus-request-original-article'; abolish conventional - implementation. - - Abolish unused setting for `mime-view-show-summary-method'. - -1998-06-26 MORIOKA Tomohiko - - * readme, texi/ChangeLog, texi/gnus.texi, texi/message.texi, - lisp/ChangeLog, lisp/gnus.el, lisp/nnmail.el, lisp/nnheader.el, - lisp/nngateway.el, lisp/nnfolder.el, lisp/nnagent.el, - lisp/message.el, lisp/gnus-sum.el, lisp/gnus-score.el, - lisp/gnus-salt.el, lisp/gnus-msg.el, lisp/gnus-cus.el, - lisp/gnus-cache.el, lisp/gnus-art.el: Sync up with Gnus 5.6.15. - -1998-06-24 MORIOKA Tomohiko - - * texi/gnus.texi, texi/message.texi, texi/ChangeLog: Sync up with - Gnus 5.6.13. - -1998-06-14 Tatsuya Ichikawa - - * Sync up with Gnus 5.6.13. - -1998-06-24 MORIOKA Tomohiko - - * lisp/gnus-art.el (gnus-article-display-mime-message): Don't - `save-excursion'. - (gnus-article-prepare): Use `mime-fetch-field' instead of - `mime-entity-fetch-field'. - -1998-06-19 MORIOKA Tomohiko - - * lisp/gnus-art.el (gnus-article-display-mime-message): Use - `mime-display-message' instead of `mime-view-buffer'. - (gnus-article-display-traditional-message): Set - `gnus-article-buffer'. - (gnus-article-display-message-with-encoded-word): Modify for - `gnus-article-display-traditional-message'. - (gnus-article-prepare): Use `mime-parse-buffer' and - `mime-entity-fetch-field'; don't set gnus-article-buffer. - -1998-06-19 MORIOKA Tomohiko - - * lisp/gnus-sum.el (gnus-summary-move-article): Use - `gnus-request-original-article' instead of - `gnus-request-article-this-buffer'. - -1998-06-19 MORIOKA Tomohiko - - * texi/gnus-ja.texi, texi/gnus.texi (Using MIME): Modify - description about new display mechanism. - -1998-06-19 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.6.0. - (gnus-version): Modify for this branch. - - * lisp/gnus-art.el (gnus-article-display-method-for-mime): New - variable; abolish `gnus-show-mime-method'. - (gnus-article-display-method-for-encoded-word): New variable; - abolish `gnus-decode-encoded-word-method'. - (gnus-article-display-method-for-traditional): New variable. - (gnus-article-display-mime-message): New function; abolish - `gnus-article-preview-mime-message'. - (gnus-article-display-traditional-message): New function. - (gnus-article-display-message-with-encoded-word): New function; - abolish `gnus-article-decode-encoded-word'. - (gnus-article-prepare): Change display mechanism; use - `gnus-request-original-article' instead of - `gnus-request-article-this-buffer'. - (gnus-request-original-article): New function. - -1998-06-22 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.6.0. - (gnus-version): Modify for SEMI 1.8. - - * lisp/gnus-sum.el: Modify for interface change in SEMI 1.8 about - automatic message/partial combining. - -1998-06-19 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.5.0. - (gnus-version): Modify for SEMI 1.7. - - * lisp/gnus-sum.el: Rename - `mime-method-to-combine-message/partial-pieces' to - `mime-combine-message/partial-pieces-automatically'. - - * lisp/gnus-art.el (gnus-article-preview-mime-message): Use - `mime-view-buffer'. - (gnus-article-decode-encoded-word): Fix DOC-string. - (gnus-article-header-presentation-method): New function; abolish - `gnus-content-header-filter'. - Modify for SEMI 1.7. - -1998-06-18 Keisuke Mori - - * texi/gnus-ja.texi: Add "Select Methods". - -1998-06-18 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "Select Methods". - -1998-06-17 Tatsuya Ichikawa - - * lisp/pop3-fma.el: Small bug fix. - - * lisp/pop3-fma.el: Delete variable pop3-fma-cypher-key - Use base64-encode-string , base64-decode-string instead. - Both change by Yasuo OKABE - -1998-06-13 Tatsuya Ichikawa - - * lisp/pop3-fma.el: New function pop3-fma-cypher-string - New variable pop3-fma-cypher-key - -1998-06-12 Shuhei KOBAYASHI - - * lisp/message.el (message-required-news-headers): `X-Newsreader' - was replaced by `User-Agent'. - (message-required-mail-headers): `X-Mailer' was replaced by - `User-Agent'. - (message-header-format-alist): `X-Mailer' and `X-Newsreader' were - replaced by `User-Agent'. - (message-generate-headers): Ditto. - - (message-user-agent): New variable. - (message-newsreader): Replaced by `message-user-agent'. - (message-mailer): Ditto. - (message-mode): `message-mailer' and `message-newsreader' were - replaced by `message-user-agent'. - - * lisp/gnus-msg.el (gnus-inews-add-send-actions): `message-mailer' - and `message-newsreader' were replaced by `message-user-agent'. - (gnus-extended-version): Generate "PRODUCT/VERSION" style strings. - - * lisp/gnus-soup.el (gnus-soup-send-packet): `message-mailer' and - `message-newsreader' were replaced by `message-user-agent'. - -1998-06-07 MORIOKA Tomohiko - - * lisp/gnus-art.el: Delete setting for - `article-de-quoted-unreadable' and - `article-mime-decode-quoted-printable' because they have been - already abolished. - -1998-06-07 MORIOKA Tomohiko - - * texi/gnus-ja.texi: Sync up with latest gnus.texi. - - * texi/gnus.texi: Modify for Semi-gnus 6.4.0. - -1998-06-06 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-extract-address-components): Add - `std11-extract-address-components' as a choice. - -1998-06-06 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "Composing Messages". - -1998-06-04 MORIOKA Tomohiko - - * lisp/gnus-ems.el (gnus-ems-redefine): Must require 'path-util - before call `module-installed-p'. - - * lisp/gnus.el (gnus-version-number): Update to 6.4.0. - (gnus-version): Modify for SEMI 1.5. - - * lisp/gnus-art.el: Modify for SEMI 1.5 API. - -1998-06-04 Tatsuya Ichikawa - - * lisp/pop3-fma.el: New file. To handle multiple POP account. - - * lisp/gnus.el (gnus-version-number): Update to 6.3.4. - And fix typo 5.6.10 -> 5.6.11. - -1998-06-03 Shuhei KOBAYASHI - - * lisp/gnus.el (gnus-version-number): Update to 6.3.3. - - * Sync up with Gnus 5.6.11. - -1998-06-03 Keisuke Mori - - * texi/gnus-ja.texi: Add "The Article Buffer". - -1998-06-03 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "The Summary Buffer". - -1998-06-02 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-version-number): Update to 6.3.2. - - * Sync up with Gnus 5.6.10. - -1998-05-30 Shuhei KOBAYASHI - - * README.semi: Add description of `shuhei-k' branch. - -1998-05-17 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.3.1. - -1998-05-17 MORIOKA Tomohiko - - * lisp/gnus-util.el (gnus-output-to-rmail): Guard as binary. - - * lisp/gnus-util.el (gnus-output-to-mail): Guard as binary. - -1998-04-24 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "The Active File". - -1998-05-04 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.3.0. - (gnus-version): Modify for SEMI 1.4. - - * lisp/gnus-sum.el: Use 'mime-add-condition to set up - acting-condition. - -1998-05-04 MORIOKA Tomohiko - - * lisp/lpath.el: Must add "flim" instead of "mel" to load-path. - -1998-05-03 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.2.5. - - * texi/gnus.texi, lisp/ChangeLog: Sync up with Gnus v5.6.9. - - * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el, - lisp/gnus-msg.el, lisp/gnus-draft.el, lisp/gnus-agent.el: Sync up - with Gnus v5.6.9. - -1998-04-30 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.2.4. - - * texi/gnus.texi, lisp/ChangeLog: Sync up with Gnus 5.6.7. - - * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el, - lisp/gnus-msg.el, lisp/gnus-cache.el, lisp/gnus-art.el: Sync up - with Gnus 5.6.7. - -1998-04-28 Shuhei KOBAYASHI - - * lisp/gnus.el (gnus-version-number): Update to 6.2.3. - - * Sync up with Gnus 5.6.6. - -1998-04-27 MORIOKA Tomohiko - - * lisp/nnheader.el: Sync up with Gnus 5.6.5. - -1998-04-26 Shuhei KOBAYASHI - - * lisp/gnus.el (gnus-version-number): Update to 6.2.2. - - * Sync up with Gnus 5.6.5. - - * texi/custom.texi, texi/widget.texi: Removed from Semi-gnus. - -1998-04-25 MORIOKA Tomohiko - - * README.semi (How to get? (via CVS)): Modify descriptions about - TAG. - -1998-04-23 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.2.1. - -1998-04-23 MORIOKA Tomohiko - - * lisp/message.el (message-make-forward-subject): Use - `eword-decode-unstructured-field-body' for subject. - - * lisp/gnus-msg.el (gnus-summary-mail-forward): Make local - variable `default-mime-charset' of `gnus-original-article-buffer' - and set up by `default-mime-charset' of `gnus-summary-buffer'. - -1998-04-23 MORIOKA Tomohiko - - * texi/gnus-ja.texi: Fix typos. - - * texi/gnus.texi: Modify for Semi-gnus. - -1998-04-23 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "Auto Save". - -1998-04-22 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "Startup Files". - -1998-04-21 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.2.0. - (gnus-version): Modify for SEMI 1.3. - - * lisp/gnus-sum.el: Use 'ctree-set-calist-strictly instead of - 'set-atype to set up for 'mime-acting-condition. - -1998-04-21 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "Changing Servers". - -1998-04-20 MORIOKA Tomohiko - - * texi/gnus-ja.texi: Modify styles. - - * texi/gnus.texi: Modify for Semi-gnus (sync up with - gnus-ja.texi). - -1998-04-20 Yoshiki Hayashi - - * texi/gnus-ja.texi: Add "New Groups". - -1998-04-20 Yoshiki Hayashi - - * texi/gnus-ja.texi: Modify styles. - -1998-04-18 MORIOKA Tomohiko - - * texi/gnus-ja.texi: Check and modify for Semi-gnus. - -1998-04-18 Yoshiki Hayashi - - * texi/gnus-ja.texi: New file. - -1998-04-19 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.1.3. - -1998-04-19 MORIOKA Tomohiko - - * lisp/gnus-art.el (gnus-following-method): New function; set up - for 'mime-view-following-method-alist. - -1998-04-18 MORIOKA Tomohiko - - * texi/gnus.texi: Add and modify description for Semi-gnus. - -1998-04-16 MORIOKA Tomohiko - - * texi/gnus.texi: "Gnus 5.6.4" -> "Semi-gnus 6.1.2". - (Top): "Gnus" -> "gnus". - (Starting Up): "Gnus" -> "gnus". - -1998-04-10 Shuhei KOBAYASHI - - * lisp/ChangeLog, lisp/gnus-agent.el: Sync up with Gnus 5.6.4. - -1998-04-08 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.1.2. - (gnus-version): Include corresponding SEMI version. - - * lisp/gnus.el, lisp/nnkiboze.el, lisp/message.el, - lisp/gnus-sum.el, lisp/gnus-agent.el: Sync up with Gnus 5.6.4. - -1998-03-27 Shuhei KOBAYASHI - - * README.semi: Change descriptions of sending bug report. - -1998-03-20 Shuhei KOBAYASHI - - * lisp/gnus.el (gnus-version-number): Update to 6.1.1. - (gnus-version): Include corresponding SEMI version. - - * Sync up with Gnus 5.6.3. - -1998-03-15 Shuhei KOBAYASHI - - * lisp/gnus-agent.el (gnus-agent-crosspost): Use - `nnheader-insert-file-contents'. - (gnus-agent-braid-nov): Ditto. - (gnus-agent-expire): Ditto. - - * lisp/gnus-cache.el (gnus-cache-request-article): Ditto. - (gnus-cache-retrieve-headers): Ditto. - (gnus-cache-change-buffer): Ditto. - (gnus-cache-braid-nov): Ditto. - - * lisp/gnus-sum.el (gnus-summary-import-article): Ditto. - - * lisp/nnkiboze.el (nnkiboze-retrieve-headers): Ditto. - - * lisp/message.el (message-generate-headers): Fix regexp. - (cf. [semi-gnus-ja:107]) - -1998-03-14 MORIOKA Tomohiko - - * lisp/gnus-art.el: Add setting for - `mime-raw-buffer-coding-system-alist'. - -1998-03-13 MORIOKA Tomohiko - - * lisp/gnus-art.el: Rename `mime-view-quitting-method-for-gnus' -> - `mime-preview-quitting-method-for-gnus'. - - * lisp/gnus-art.el: Rename `mime-view-quitting-method-alist' -> - `mime-preview-quitting-method-alist'. - - * lisp/gnus-art.el: Rename `mime-view-kill-buffer' -> - `mime-preview-kill-buffer'. - - * lisp/gnus.el (gnus-version-number): Update to 6.0.10. - - * lisp/gnus-sum.el: Add code to check latest SEMI. - (mime-acting-condition): Separate type and subtype; rename - `mime-combine-message/partials-automatically' -> - `mime-method-to-combine-message/partial-pieces'. - -1998-03-08 Shuhei KOBAYASHI - - * lisp/gnus.el (gnus-version-number): Update to 6.0.9. - - * README.semi (How to get?): Add description of daily snapshot. - (How to join development): Change mailing list command address. - - * Sync up with Gnus 5.6.2. - -1998-03-01 Tatsuya Ichikawa - - * lisp/gnus-ems.el: Change variable name - gnus-bdf-image-file to gnus-mule-bitmap-image-file. - -1998-02-28 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.0.8. - - * lisp/gnus.el: Sync up with qgnus-0.34. - -1998-02-28 MORIOKA Tomohiko - - * lisp/message.el: Sync up with qgnus-0.33. - - * lisp/gnus-ems.el (gnus-bdf-image-file): New variable; moved from - gnus.el. - (gnus-mule-group-startup-message): New function; moved and renamed - from `gnus-group-startup-message' of gnus.el. - - * lisp/gnus.el, lisp/gnus-sum.el, lisp/gnus-art.el, - lisp/gnus-agent.el: Sync up with qgnus-0.33. - -1998-02-28 Tatsuya Ichikawa - - * lisp/gnus.el (gnus-bdf-image-file): New variable. - (gnus-mule-group-startup-message): Display bitmap image using - bitmap.el running with Emacs 20. - - * lisp/gnus-agent.el (gnus-agent-fetch-headers): Fix problem when - Xref field is not exist. - -1998-02-26 MORIOKA Tomohiko - - * README.semi (How to join development): Modify for Semi-gnus - mailing list. - - * lisp/gnus.el (gnus-version-number): Update to 6.0.7. - - * lisp/gnus.el (gnus-article-display-hook): Delete - `gnus-article-de-quoted-unreadable' from options. - - * lisp/gnus-sum.el (gnus-article-make-menu-bar): Delete key for - `gnus-article-de-quoted-unreadable'. - (gnus-summary-make-menu-bar): Delete menu for - `gnus-article-de-quoted-unreadable'. - - * lisp/gnus-art.el (gnus-article-make-menu-bar): Delete menu for - `gnus-article-de-quoted-unreadable'. - -1998-02-24 MORIOKA Tomohiko - - * lisp/gnus.el, lisp/message.el: Sync up with qgnus-0.32. - -1998-02-23 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.0.6. - - * lisp/message.el (message-fill-references): Abolish unused local - variables. - - * lisp/pop3.el, lisp/message.el, lisp/gnus.el, lisp/gnus-sum.el, - lisp/gnus-art.el: Sync up with qgnus-0.31. - - * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el, - lisp/gnus-art.el: Sync up with qgnus-0.30. - -1998-02-20 Christophe Broult - - * README.semi (How to get?): The command `update' must come before - `-r semi-gnus'. (cf. [tm-en:1559]) - -1998-02-17 MORIOKA Tomohiko - - * lisp/gnus.el: Sync up with qgnus-0.29. - - * lisp/gnus.el, lisp/message.el: Sync up with qgnus-0.28. - - * lisp/message.el: Abolish variable - `message-references-generator'. Abolish function - `message-generate-filled-references', - `message-generate-folded-references' and - `message-generate-unfolded-references'. - (message-reply): Don't use `message-references-generator'. - (message-followup): Don't use `message-references-generator'. - - (message-fill-references): New function. - (message-header-format-alist): Use `message-fill-references' for - References. - -1998-02-17 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to 6.0.5. - -1998-02-17 MORIOKA Tomohiko - - * lisp/gnus-sum.el: Check SEMI-0.118.2 (Otomaru) or later. - (gnus-structured-field-decoder): Use - `eword-decode-and-unfold-structured-field'. - - * lisp/gnus-art.el (gnus-article-decode-rfc1522): Use charset - conversion option of `eword-decode-header'. - (gnus-article-decode-encoded-word): Use charset conversion option - of `eword-decode-header'; use `gnus-run-hooks'. - (gnus-content-header-filter): Use charset conversion option of - `eword-decode-header'. - - * README.semi (How to get?): Should specify "-r semi-gnus". - -1998-02-16 MORIOKA Tomohiko - - * lisp/gnus-art.el (gnus-article-decode-rfc1522): Decode header by - localized code. - -1998-02-16 MORIOKA Tomohiko - - * lisp/gnus-msg.el: Delete commented-out function - `gnus-inews-insert-mime-headers'. - - * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el, - lisp/gnus-art.el: Sync up with qgnus-0.27. - -1998-02-16 MORIOKA Tomohiko - - * lisp/nnheader.el: Use original. - - * lisp/gnus.el, lisp/pop3.el, lisp/message.el, lisp/gnus-sum.el, - lisp/gnus-msg.el, lisp/gnus-draft.el, lisp/gnus-art.el: Sync up - with qgnus-0.26. - -1998-02-15 MORIOKA Tomohiko - - * lisp/nnmail.el, lisp/nnmh.el: Use original. - - * lisp/gnus.el, lisp/gnus-draft.el, lisp/gnus-sum.el, - lisp/message.el, lisp/gnus-art.el: Sync up with qgnus-0.25. - -1998-02-11 Shuhei Kobayashi - - * texi/message.texi, texi/gnus.texi, texi/ChangeLog, - lisp/message.el, lisp/gnus.el, lisp/gnus-uu.el, - lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-start.el, - lisp/gnus-score.el, lisp/gnus-group.el, lisp/gnus-art.el, - lisp/gnus-agent.el, lisp/ChangeLog: Importing qgnus-0.24 - -1998-02-10 MORIOKA Tomohiko - - * lisp/gnus-art.el (gnus-article-prepare): Don't bind coding - systems. - - * lisp/gnus.el (gnus-version-number): Update to 6.0.4. - (gnus-version): Sync with qgnus-0.23. - - * lisp/pop3.el, lisp/nnmh.el, lisp/nnheader.el, lisp/message.el, - lisp/gnus-sum.el, lisp/gnus-msg.el, lisp/gnus-draft.el, - lisp/gnus-art.el: Merge qgnus-0.23. - -1998-02-09 Shuhei Kobayashi - - * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/nntp.el, - lisp/nnheader.el, lisp/message.el, lisp/gnus.el, - lisp/gnus-xmas.el, lisp/gnus-sum.el, lisp/gnus-start.el, - lisp/gnus-msg.el, lisp/gnus-group.el, lisp/gnus-draft.el, - lisp/gnus-art.el, lisp/gnus-agent.el, lisp/ChangeLog: Importing - qgnus-0.23 - -1998-02-04 MORIOKA Tomohiko - - * lisp/message.el (message-references-generator): New variable. - (message-generate-filled-references): New function. - (message-generate-folded-references): New function. - (message-generate-unfolded-references): New function. - (message-reply): Refer `message-references-generator'. - (message-followup): Refer `message-references-generator'. - -1998-01-17 MORIOKA Tomohiko - - * lisp/message.el (message-send-mail-with-sendmail): Guard - `coding-system-for-write' by binary. - (message-send-mail-with-qmail): Likewise. - -1998-01-16 MORIOKA Tomohiko - - * lisp/lpath.el: Require path-util; add load-path of APEL, MEL and - SEMI. - -1998-01-12 MORIOKA Tomohiko - - * lisp/message.el: Require smtp.el when compile. - - * lisp/message.el (message-send-mail-with-smtp): Use - `(current-buffer)' instead of `tembuf'; rename - `smtp-recipient-address-list' -> `recipient-address-list'. - -1998-01-12 MORIOKA Tomohiko - - * lisp/smtp.el (smtp-deduce-address-list): Don't use - `smtp-recipient-address-list' as global variable. - - * lisp/message.el (message-send-mail-with-smtp): Don't use - `smtp-recipient-address-list' as global variable. - - * lisp/smtpmail.el (smtpmail-recipient-address-list): New - variable; renamed from `smtp-recipient-address-list'. - (smtpmail-send-it): Remove `(not (null ...))'. - (smtpmail-send-queued-mail): Likewise. - -1998-01-12 MORIOKA Tomohiko - - * lisp/message.el (message-send-mail-with-smtp): Don't generate - temporary buffer for message; don't generate and kill - `smtp-address-buffer' for `smtp-deduce-address-list'. - - * lisp/smtpmail.el (smtpmail-send-it): Don't generate and kill - `smtp-address-buffer' for `smtp-deduce-address-list'. - - * lisp/smtp.el (smtp-deduce-address-list): Bind and generate - `smtp-address-buffer' in itself. - -1998-01-12 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to version 6.0.3. - -1998-01-11 MORIOKA Tomohiko - - * lisp/smtp.el: New file. - - * lisp/smtpmail.el: Split basic features into smtp.el. - - * lisp/message.el (message-send-mail-function): Add - `message-send-mail-with-smtp' as an item. - (message-send-mail-with-smtp): New function. - - * ChangeLog: New file. - -1998-01-08 MORIOKA Tomohiko - - * lisp/smtpmail.el (smtpmail-via-smtp): Bind - `coding-system-for-read' by `smtpmail-coding-system' to avoid - dead-locking in Emacs 20. - - * lisp/gnus.el: gnus.el (gnus-version-number): Update to version - 6.0.2. - -1998-01-07 MORIOKA Tomohiko - - * lisp/nnmail.el, lisp/message.el: Sync with Quassia Gnus v0.22. - - * lisp/gnus.el: Delete autoload setting for `metamail-buffer'. - - * lisp/gnus.el, lisp/gnus-sum.el: Sync with Quassia Gnus v0.22. - - * lisp/gnus-msg.el: Abolish function - `gnus-inews-insert-mime-headers'. - - * lisp/gnus-msg.el, lisp/gnus-draft.el, lisp/gnus-art.el: Sync - with Quassia Gnus v0.22. - - * lisp/smtpmail.el (smtpmail-coding-system): New variable; abolish - `smtpmail-code-conv-from'. - (smtpmail-via-smtp): Guard `coding-system-for-write' by - `smtpmail-coding-system'. - - * lisp/smtpmail.el: Imported from Emacs 20.2. - - * lisp/pop3.el (pop3-movemail-file-coding-system): Change default - value to `binary'. - (pop3-open-server): Guard `coding-system-for-read' by `binary'. - -1998-01-06 Shuhei Kobayashi - - * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/nnoo.el, - lisp/nnml.el, lisp/message.el, lisp/gnus.el, lisp/gnus-sum.el, - lisp/gnus-start.el, lisp/gnus-ems.el, lisp/gnus-draft.el, - lisp/gnus-agent.el, lisp/ChangeLog: Importing qgnus-0.22 - - * texi/message.texi, texi/gnus.texi, lisp/gnus.el, lisp/ChangeLog: - Importing qgnus-0.21 - - * texi/message.texi, texi/gnus.texi, texi/ChangeLog, - lisp/nnvirtual.el, lisp/nnsoup.el, lisp/nnoo.el, lisp/nnmh.el, - lisp/nnmail.el, lisp/nndraft.el, lisp/gnus.el, lisp/gnus-xmas.el, - lisp/gnus-sum.el, lisp/gnus-start.el, lisp/gnus-score.el, - lisp/gnus-msg.el, lisp/gnus-group.el, lisp/gnus-draft.el, - lisp/gnus-art.el, lisp/ChangeLog: Importing qgnus-0.20 - - * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/pop3.el, - lisp/nntp.el, lisp/nnml.el, lisp/nnmail.el, lisp/nndoc.el, - lisp/message.el, lisp/gnus.el, lisp/gnus-uu.el, - lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-start.el, - lisp/gnus-score.el, lisp/gnus-group.el, lisp/gnus-cache.el, - lisp/gnus-agent.el, lisp/ChangeLog: Importing qgnus-0.19 - -1997-12-27 MORIOKA Tomohiko - - * lisp/gnus.el (gnus-version-number): Update to version 6.0.1. - - * lisp/message.el (message-resend): Enclose `message-setup' with - `(let (message-setup-hook) ...)' to avoid to `turn-on-mime-edit'; - must setup `message-encoding-buffer' and `message-edit-buffer' for - `message-send-mail'. - -1997-12-08 Shuhei Kobayashi - - * lisp/pop3.el, lisp/message.el, lisp/gnus.el, lisp/gnus-sum.el, - lisp/gnus-art.el, lisp/ChangeLog: Synch'ed up to qgnus-0.18. - - * texi/message.texi, texi/gnus.texi, texi/ChangeLog, - lisp/smiley.el, lisp/pop3.el, lisp/nnweb.el, lisp/nntp.el, - lisp/nnml.el, lisp/nnmail.el, lisp/nnheader.el, lisp/nndraft.el, - lisp/message.el, lisp/lpath.el, lisp/gnus.el, lisp/gnus-util.el, - lisp/gnus-sum.el, lisp/gnus-start.el, lisp/gnus-picon.el, - lisp/gnus-nocem.el, lisp/gnus-mh.el, lisp/gnus-group.el, - lisp/gnus-ems.el, lisp/gnus-cite.el, lisp/gnus-art.el, - lisp/gnus-agent.el, lisp/dgnushack.el, lisp/ChangeLog: Importing - qgnus-0.18 - -1997-11-29 MORIOKA Tomohiko - - * README.semi: New file. - - * lisp/gnus.el (gnus-version): Rename to "Semi-gnus". - -1997-11-28 MORIOKA Tomohiko + * t-gnus-6_13: NEW PUBLIC BRANCH. - * lisp/gnus-draft.el (gnus-draft-decoding-function): New variable. - (gnus-draft-setup): Use `gnus-draft-decoding-function'. - -1997-11-27 MORIOKA Tomohiko - - * lisp/nnmail.el, lisp/nnheader.el, lisp/message.el, lisp/gnus.el, - lisp/gnus-sum.el, lisp/gnus-msg.el, lisp/gnus-art.el: sync with - qgnus-0.17. - - * texi/message.texi, texi/gnus.texi, lisp/smiley.el, lisp/nnoo.el, - lisp/nnml.el, lisp/nnmail.el, lisp/nnheader.el, - lisp/messagexmas.el, lisp/message.el, lisp/gnus.el, - lisp/gnus-xmas.el, lisp/gnus-util.el, lisp/gnus-sum.el, - lisp/gnus-start.el, lisp/gnus-spec.el, lisp/gnus-score.el, - lisp/gnus-picon.el, lisp/gnus-move.el, lisp/gnus-msg.el, - lisp/gnus-kill.el, lisp/gnus-group.el, lisp/gnus-draft.el, - lisp/gnus-demon.el, lisp/gnus-cite.el, lisp/gnus-art.el, - lisp/ChangeLog: Quassia Gnus v0.17. - - * lisp/gnus-i18n.el: New file. - - * lisp/nnmail.el (nnmail-file-coding-system): Use `raw-text' in - default. - - * lisp/nnheader.el (nnheader-file-coding-system): Use `raw-text' - in default. - - * lisp/message.el (message-encode-function): New variable. - (message-forward-start-separator): Modify for mime-edit. - (message-forward-end-separator): Modify for mime-edit. - (message-setup-hook): Use `(message-maybe-setup-default-charset - turn-on-mime-edit)' in default. - (message-header-hook): Use `(eword-encode-header)' in default. - - (message-send): Use local variable `message-encoding-buffer', - `message-edit-buffer' and `message-mime-mode' as public variables; - use `message-encode-function'. - (message-send-mail): Use `message-encoding-buffer' to get contents - of body; abolish `message-encode-mail-hook'; use - `mime-edit-maybe-split-and-send'; use `message-edit-buffer' to - refer original editing buffer. - (message-send-news): Use `message-encoding-buffer' to get contents - of body; abolish `message-encode-news-hook'; use - `mime-edit-maybe-split-and-send'; use `message-edit-buffer' to - refer original editing buffer. - (message-check-news-syntax): Call `message-check-news-body-syntax' - in `mime-edit-buffer'. - (message-do-fcc): Use `message-encoding-buffer' to get contents; - run `message-header-hook'. - (message-cancel-news): Use `std11-extract-address-components' - instead of `mail-extract-address-components'; bind - `message-encoding-buffer' and `message-edit-buffer'. - - (message-maybe-setup-default-charset): New function. - (message-maybe-encode): New function. - (message-mime-insert-article): New function. - Add setting for mime-view. - - * lisp/gnus.el (gnus-version-number): for version number for Open - gnus. - (gnus-version): Modify for Open gnus. - - * lisp/gnus-sum.el: Autoload gnus-i18n. - - (gnus-show-mime): `t' in default. - (gnus-structured-field-decoder): Use - `eword-decode-structured-field-body' in default. - (gnus-unstructured-field-decoder): Use - `eword-decode-unstructured-field-body' in default. - - (gnus-parse-headers-hook): Use - `(gnus-set-summary-default-charset)' in default. - - (gnus-summary-mode-map): Add binding for - `gnus-summary-scroll-down' and - `gnus-summary-preview-mime-message'. - - (gnus-summary-preview-mime-message): New function. - (gnus-mime-partial-preview-function): New function. - Add setting for mime-view. - - * lisp/gnus-msg.el (gnus-summary-cancel-article): Display - `gnus-article-buffer' instead ofb `gnus-original-article-buffer'. - (gnus-extended-version): Don't return version of emacsen. - (gnus-inews-do-gcc): Refer `message-encoding-buffer'. - - * lisp/gnus-art.el (gnus-show-mime-method): Use - `gnus-article-preview-mime-message' instead of `metamail-buffer' - in default. - (gnus-decode-encoded-word-method): Use - `gnus-article-decode-encoded-word' instead of - `gnus-article-de-quoted-unreadable' in default. - - Abolish `gnus-hack-decode-rfc1522', `gnus-decode-rfc1522', - `article-decode-rfc1522', `article-de-quoted-unreadable', - `article-mime-decode-quoted-printable-buffer' and - `article-mime-decode-quoted-printable'. - (gnus-article-decode-rfc1522): New implementation (use - `eword-decode-header'). - - (gnus-article-preview-mime-message): New function. - (gnus-article-decode-encoded-word): New function. - (gnus-content-header-filter): New function. - (mime-view-quitting-method-for-gnus): New function. - Add setting for mime-view. - - * lisp/message.el: Abolish `message-max-size' because it is not - used. - - * lisp/message.el: sync with qgnus-0.16. - - * texi/Makefile, texi/message.texi, texi/gnus.texi, lisp/nnweb.el, - lisp/nnmh.el, lisp/nnheader.el, lisp/nnfolder.el, lisp/message.el, - lisp/gnus.el, lisp/gnus-xmas.el, lisp/gnus-uu.el, - lisp/gnus-sum.el, lisp/gnus-srvr.el, lisp/gnus-picon.el, - lisp/gnus-group.el, lisp/gnus-cite.el, lisp/gnus-art.el: Quassia - Gnus v0.16. - - * lisp/nnmh.el (nnmh-request-list-1): fix maybe. - - * lisp/message.el (message-do-fcc): Guard - `coding-system-for-write' by `raw-text'; run - `message-before-do-fcc-hook'. - - * lisp/gnus-msg.el (gnus-inews-do-gcc): Guard - `coding-system-for-write' by `raw-text'; run - `gnus-before-do-gcc-hook'. - - * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/nntp.el, - lisp/nnoo.el, lisp/nnml.el, lisp/nndraft.el, lisp/nnbabyl.el, - lisp/message.el, lisp/gnus.el, lisp/gnus-xmas.el, lisp/gnus-uu.el, - lisp/gnus-util.el, lisp/gnus-sum.el, lisp/gnus-start.el, - lisp/gnus-spec.el, lisp/gnus-soup.el, lisp/gnus-score.el, - lisp/gnus-msg.el, lisp/gnus-gl.el, lisp/gnus-ems.el, - lisp/gnus-draft.el, lisp/gnus-cache.el, lisp/gnus-audio.el, - lisp/gnus-art.el, lisp/gnus-agent.el, lisp/ChangeLog: Quassia Gnus - v0.15. - - * lisp/message.el, lisp/ChangeLog: sync with qgnus-0.14. - - * texi/Makefile, texi/gnus.texi: Quassia Gnus v0.14. - - * texi/dir: New file. - - * texi/dir, lisp/pop3.el, lisp/nntp.el, lisp/nnml.el, - lisp/nnmail.el, lisp/nnfolder.el, lisp/message.el, lisp/lpath.el, - lisp/gnus.el, lisp/gnus-win.el, lisp/gnus-util.el, - lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-start.el, - lisp/gnus-score.el, lisp/gnus-msg.el, lisp/gnus-mh.el, - lisp/gnus-cus.el, lisp/gnus-art.el, lisp/gnus-agent.el, - lisp/ChangeLog: Quassia Gnus v0.14. - - * lisp/message.el, lisp/ChangeLog: sync with qgnus-0.13. - - * texi/gnus.texi, texi/ChangeLog, lisp/pop3.el, lisp/nnweb.el, - lisp/nnmail.el: Quassia Gnus v0.13. - - * lisp/nnlistserv.el: New file. - - * lisp/nnlistserv.el, lisp/message.el, lisp/md5.el, lisp/lpath.el, - lisp/gnus.el, lisp/gnus-topic.el, lisp/gnus-sum.el, - lisp/gnus-score.el, lisp/gnus-picon.el, lisp/gnus-msg.el, - lisp/gnus-group.el, lisp/gnus-art.el, lisp/gnus-agent.el, - lisp/dgnushack.el, lisp/ChangeLog, GNUS-NEWS: Quassia Gnus v0.13. - - * lisp/message.el: sync with qgnus-0.12. - - * texi/message.texi, texi/gnus.texi, texi/gnus-faq.texi, - texi/ChangeLog, lisp/nntp.el, lisp/nnmh.el, lisp/nnmail.el, - lisp/nndraft.el, lisp/messcompat.el, lisp/message.el, - lisp/gnus.el, lisp/gnus-xmas.el, lisp/gnus-uu.el, - lisp/gnus-sum.el, lisp/gnus-score.el, lisp/gnus-salt.el, - lisp/gnus-msg.el, lisp/gnus-int.el, lisp/gnus-group.el, - lisp/gnus-demon.el, lisp/gnus-cache.el, lisp/gnus-art.el, - lisp/gnus-agent.el, lisp/ChangeLog, GNUS-NEWS: Quassia Gnus v0.12. - - * lisp/message.el (message-send-news-function): Use - `message-send-news-with-gnus' in default. - (message-send-via-news): Use `message-send-news' instead of - `message-send-news-function'. - (message-send-mail): Don't avoid text properties; run - `message-encode-mail-hook'. - (message-send-news): Don't avoid text properties; run - `message-encode-news-hook'; use `message-send-news-function'. - (message-send-news-with-gnus): New function. - (message-cancel-news): Use `message-send-news' instead of - `message-send-news-function'. +See ChangeLog.2 for earlier changes. diff --git a/ChangeLog.1 b/ChangeLog.1 new file mode 100644 index 0000000..2b2a04e --- /dev/null +++ b/ChangeLog.1 @@ -0,0 +1,4121 @@ +1999-06-08 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 16. + + * lisp/gnus-sum.el (gnus-article-sort-by-author): Bug fix - use the + car of the return value of `mime-read-field'. + +1999-05-28 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 15. + + * texi/gnus.texi (Customizing Articles): Abolish the treatment + variable `nomime' and rename + `gnus-treat-decode-message-body-as-default-mime-charset' with + `gnus-treat-decode-article-as-default-mime-charset'. + + * lisp/gnus-art.el (gnus-treat-predicate): Abolish the treatment + variable `nomime'. + (gnus-article-prepare-mime-display): Call `gnus-treat-article' with + the 1st arg t for treating if the part is not the last one. + (gnus-article-decode-article-as-default-mime-charset): Renamed from + `gnus-article-decode-message-body-as-default-mime-charset'; Don't + work if `gnus-show-mime' is non-nil. + (gnus-treat-decode-article-as-default-mime-charset): Renamed from + `gnus-treat-decode-message-body-as-default-mime-charset'; add + choice item for decoding the whole article. + +1999-05-28 Yoshiki Hayashi + + * lisp/message.el (message-header-hook): Pass optional argument + code-conversion. + +1999-05-26 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 14. + + * lisp/gnus-art.el (gnus-article-prepare-display): Narrow to + header with trailing newline instead of the use of + `std11-narrow-to-header'. + (article-date-ut): Use `text-property-any' instead of + `next-single-property-change'. + (article-toggle-headers): Use `text-property-any' and + `text-property-not-all' instead of `get-text-property' or + `next-single-property-change'; use `gnus-hidden-properties' instead + of the property `invisible' with the function `add-text-properties' + or `remove-text-properties'; use `article-hide-headers' instead of + `gnus-article-maybe-hide-headers'; re-display X-Face image under + XEmacs after sorting fields. + +1999-05-25 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 13. + (TopLevel): Autoload "gnus-art" for `gnus-article-toggle-headers'. + + * texi/gnus.texi, texi/gnus-ja.texi (Article Hiding): Replace + `gnus-article-hide-headers' with `gnus-article-toggle-headers'. + + * lisp/gnus-sum.el (gnus-summary-article-menu, + gnus-summary-wash-hide-map, gnus-summary-wash-map, + gnus-summary-mode-map): Use `gnus-article-toggle-headers' instead + of `gnus-article-hide-headers'. + + * lisp/gnus-msg.el (gnus-copy-article-buffer): Remove bitmap images + with text property `x-face-mule-bitmap-image'; + don't bind `inhibit-read-only'. + + * lisp/gnus-art.el (gnus-article-display-x-face-with-x-face-mule): + Do nothing if `window-system' is nil. + (gnus-article-decode-message-body-as-default-mime-charset): Don't + bind `buffer-read-only'; decode from (point-min) instead of (point). + (gnus-article-prepare-display): Bind `inhibit-read-only' to t; bind + `buffer-read-only' to nil; don't bind + `mime-preview-over-to-next-method-alist'; + strip read-only properties after preparing. + (gnus-article-prepare-mime-display): Put text property + `article-treated-header' to the header; don't use + `mime-preview-move-to-next'; reduce a number of bound variables. + (gnus-article-display-traditional-message): Don't bind + `inhibit-read-only'. + (gnus-article-make-menu-bar): Use `gnus-article-toggle-headers' + instead of `gnus-article-hide-headers'. + (article-toggle-headers): New function. + +1999-05-24 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 12. + + * texi/gnus.texi (Customizing Articles): Remove duplicates; add the + function `gnus-treat-decode-message-body-as-default-mime-charset'. + + * lisp/gnus-msg.el (gnus-copy-article-buffer): Bind + `inhibit-read-only' to t during modifying the destination buffer. + + * lisp/gnus-art.el (gnus-article-prepare-mime-display): Rewrite. + (article-date-ut): If there is a forwarded message, fetch Date from + its header instead of `gnus-current-headers'. + (gnus-article-display-x-face-with-x-face-mule): New function. + (TopLevel): Autoload "x-face-mule" for the function + `x-face-mule-x-face-decode-message-header'. + (gnus-treatment-function-alist): Remove duplicates. + +1999-05-21 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 11. + + * lisp/gnus-art.el (gnus-article-prepare-mime-display): Don't treat + as a MIME message if the article is not so. + (gnus-article-display-traditional-message): Bind + `inhibit-read-only' to t. + (article-hide-headers): Ditto. + +1999-05-19 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 10. + (gnus-article-display-hook): Default to nil; annotate that it is an + obsolete variable. + + * texi/gnus.texi (Customizing Articles): Document the new treatment + variables `mime' and `nomime'. + + * lisp/gnus-art.el (gnus-treat-predicate): Handle the new treatment + variables `mime' and `nomime'. + (gnus-article-decode-message-body-as-default-mime-charset): New + function. + (gnus-article-prepare-display): Rewrite for the use of + `gnus-treat-article'. + (gnus-article-prepare-mime-display): New function. + (article-date-ut): Use `next-single-property-change' instead of + re-search. + (gnus-treatment-function-alist): Add a pair of + `gnus-treat-decode-message-body-as-default-mime-charset' and + `gnus-article-decode-message-body-as-default-mime-charset'. + (gnus-treat-decode-message-body-as-default-mime-charset): New user + option. + +1999-05-19 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 09. + + * lisp/gnus-art.el (article-date-ut): Keep the original X-Sent + field, fix the position of the converted date to be displayed, + etc. + +1999-05-18 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 08. + + * lisp/gnus-art.el (gnus-article-prepare-display): Undo the last + change - don't call `gnus-treat-article'. + +1999-05-17 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 07. + + * lisp/gnus-art.el (gnus-article-prepare-display): Call + `gnus-treat-article'. + +1999-05-17 Daiki Ueno + + * lisp/gnus-art.el (article-date-ut): Always detete the last + newline of any old Date fields. + +1999-05-17 Daiki Ueno + Tsukamoto Tetsuo + + * lisp/gnus.el (gnus-revision-number): Increment to 06. + + * lisp/mail-source.el (mail-source-keyword-map): New keyword + :connection for pop. It is introduced to enable SSL connection. + (mail-source-fetch-pop): Use it to bind `pop3-connection-type'. + + * lisp/pop3.el : Add an autoload for `open-ssl-stream' defined in + `ssl'. + (pop3-connection-type, pop3-ssl-program-arguments): New variables. + (pop3-open-ssl-stream-1, pop3-open-ssl-stream): New functions. + (pop3-open-server): Call the latter when `pop3-connection-type' is + ssl. + +1999-05-17 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 05. + (TopLevel): Remove autoloads for `gnus-picons-display-x-face' and + `gnus-picons-article-display-x-face'. + +1999-05-16 Tsukamoto Tetsuo + + * texi/gnusref-ja.tex (subsec Notes): Complete words. + (sec GroupMode): Translate description of "P". + +1999-05-15 Tsukamoto Tetsuo + + * texi/gnusref-ja.tex: Undo the last change. + +1999-05-15 Tsukamoto Tetsuo + + * texi/gnusref-ja.tex: Fix typo. + +1999-05-14 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 04. + + * lisp/*.el: Undo all of the last changes. + +1999-05-13 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 03. + + * lisp/nnsoup.el (nnsoup-store-reply): Use `forward-char' instead + of `backward-char'. + * lisp/message.el (message-send-news-with-gnus, + message-send-mail-with-smtp, message-send-mail-with-qmail, + message-send-mail-with-sendmail): Ditto. + * lisp/gnus-picon.el (gnus-group-display-picons): Ditto. + + * lisp/nnsoup.el (nnsoup-store-reply): Use `(bolp)' instead of + `(= (preceding-char) ?\n)'. + * lisp/message.el (message-send-news, message-send-mail): Ditto. + + * lisp/gnus-sum.el (gnus-summary-reparent-thread): Use + `(end-of-line 0)' to go to the end of the previous line. + + * lisp/nnmail.el (nnmail-decode-status): Don't use regexp search. + * lisp/message.el (message-next-header, message-remove-header): + Ditto. + * lisp/gnus-art.el (gnus-article-add-buttons-to-head, + gnus-article-highlight-headers, gnus-article-hide-header, + article-hide-boring-headers, article-hide-headers): Ditto. + + * lisp/nntp.el (nntp-snarf-error-message, nntp-read-server-type): + Use `buffer-substring' instead of `buffer-string'. + * lisp/nnspool.el (nnspool-inews-sentinel): Ditto. + * lisp/message.el (message-wash-subject, message-reply, + message-make-from, message-make-organization): Ditto. + * lisp/md5.el (md5): Ditto. + * lisp/mail-source.el (mail-source-movemail): Ditto. + * lisp/gnus.el (gnus-getenv-nntpserver): Ditto. + * lisp/gnus-xmas.el (gnus-xmas-article-display-xface): Ditto. + * lisp/gnus-util.el (gnus-mode-string-quote): Ditto. + * lisp/gnus-sum.el (gnus-summary-edit-article-done, + gnus-simplify-subject-fuzzy): Ditto. + * lisp/gnus-spec.el (gnus-parse-simple-format): Ditto. + * lisp/gnus-picon.el (gnus-picons-make-glyph): Ditto. + * lisp/gnus-msg.el (gnus-copy-article-buffer): Ditto. + * lisp/gnus-mh.el (gnus-summary-save-in-folder): Ditto. + * lisp/gnus-kill.el (gnus-kill-file-apply-buffer): Ditto. + * lisp/gnus-art.el (gnus-article-mime-edit-exit, + gnus-article-edit-exit): Ditto. + * lisp/format-spec.el (format-spec): Ditto. + * lisp/dgnushack.el (dgnushack-make-package): Ditto. + * lisp/base64.el (base64-decode, base64-encode, + base64-run-command-on-region): Ditto. + +1999-05-13 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 02. + + * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Don't specify + the authentication scheme if `password' is selected. + +1999-05-06 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + + * texi/gnus-ja.texi: (gnus-summary-enter-digest-group): Change the + key assignment "C-d" into "A D". + (Article treatment): Document the new variable + `gnus-article-date-lapsed-new-header'. + + * lisp/mail-source.el: Use the original source without any changes. + + * lisp/gnus-art.el (article-hide-headers): To work toggle hiding. + + * README.T-gnus: Update what is the latest T-gnus. + +1999-05-04 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.064. + (gnus-revision-number): Fresh start from 00. + + * Sync up with Pterodactyl Gnus v0.84. + +1999-04-28 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 03. + + * lisp/gnus-vm.el (gnus-summary-save-in-vm): Use + `vm-read-file-name' instead of `read-file-name'. This allows to use + the optional sixth argument HISTORY for the various environments. + (gnus-summary-save-article-vm): Ditto. + (TopLevel): Autoload "vm" for the function `vm-read-file-name'. + +1999-04-27 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 02. + + * lisp/gnus-vm.el (gnus-summary-save-in-vm): To read the name of + FOLDER in the way of VM; give the value of `gnus-current-article' + to the function `gnus-summary-select-article' if it is called non + interactively. + (gnus-summary-save-article-vm): Accept the optional 2nd arg FOLDER. + If it is called interactively the name of FOLDER is read from the + minibuffer; bind `mime-display-header-hook', + `mime-display-text/plain-hook', `mime-text-decode-hook', + `mime-view-define-keymap-hook' and `mime-view-mode-hook' to nil + when the function `gnus-summary-save-article' is called. + (gnus-summary-save-article-vm-count, + gnus-summary-save-article-vm-folder): New internal variables. + (gnus-vm-make-folder): Bind `mime-display-header-hook', + `mime-display-text/plain-hook', `mime-text-decode-hook', + `mime-view-define-keymap-hook' and `mime-view-mode-hook' to nil + when the function `vm-mode' is called. + (vm-use-toolbar, vm-primary-inbox, vm-folder-history, + vm-folder-directory): Define variables for avoiding byte compile + warning. + (gnus-vm-inhibit-window-system): Abolish variable; don't require + `win-vm'. + (TopLevel): Don't autoload "vm" for the functions + `vm-forward-message', `vm-reply' or `vm-mail'; don't require + `sendmail', `message', `gnus' or `gnus-msg' but `gnus-art'. + +1999-04-20 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + + * lisp/pop3.el (pop3-munge-message-separator): Don't put the + Content-Length field break into the other fields. + +1999-04-18 Sin'ya Kanematsu + + * texi/gnus-ja.texi: Fix typo - `gnus-auto-expirable-newgroups' -> + `gnus-auto-expirable-newsgroups'. + +1999-04-18 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.063. + (gnus-revision-number): Fresh start from 00. + + * Sync up with Pterodactyl Gnus v0.83. + +1999-04-15 NAKAGAWA Tsuneo + + * REDME.semi.ja: Fix where the required packages are. + +1999-04-13 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 09. + +1999-04-13 Keiichi Suzuki + + * lisp/gnus-sum.el (gnus-summary-move-article): Fix, + `gnus-article-mark-lists' will be broken by side effect. + +1999-04-09 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 08. + + * lisp/gnus-art.el (TopLevel): Remove symbol's function definition + for `gnus-article-mime-decode-quoted-printable'. + +1999-04-05 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 07. + +1999-03-30 Yoshiki Hayashi + + * texi/gnus-ja.texi: Some fixes. + +1999-03-26 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 06. + + * lisp/pop3.el (pop3-munge-message-separator): If a retrieved + message has a illegal date field, use `(current-time)' instead. + +1999-03-25 Katsumi Yamaoka + + * lisp/message.el (message-send): Kill `message-encoding-buffer' + after sending. + +1999-03-25 Katsumi Yamaoka + + * lisp/message.el (message-maybe-encode): Inherit the buffer local + variable `mime-edit-pgp-processing' and call + `mime-edit-pgp-enclose-buffer'. + +1999-03-24 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 05. + + * lisp/gnus-art.el (gnus-article-display-mime-message): Set up the + buffer local variable `default-mime-charset' of + `gnus-article-buffer' before `mime-display-message' is called. + + * lisp/gnus-i18n.el (gnus-newsgroup-default-charset-alist): Be also + matched with the group name which has a method name and/or a + foreign server name. + (gnus-set-summary-default-charset): Cancel the last change. + +1999-03-24 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 04. + + * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Strip + method and foreign server name from the newsgroup name. + +1999-03-22 Tsukamoto Tetsuo + + * lisp/gnus-offline.el (gnus-offline-popup-menu): Fix. + +1999-03-22 Tsukamoto Tetsuo + + * lisp/gnus.el (gnus-revision-number): Increment to 03. + + * lisp/gnus-offline.el (gnus-offline-popup-menu): Modify so that + the title of a popup menu is displayed under Emacs 19.34. + (gnus-offline-define-menu-and-key): Rewrite the function to change + the behavior of "Get new news" button, under XEmacs. + + * lisp/gnus-ofsetup.el: Modify for Semi-gnus 6.10.xx so that + `pop3-fma-password' can be saved in .newsrc.eld. + + * README-offline.en: Update. + * README-offline.ja: Ditto. + +1999-03-09 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 02. + + * lisp/message.el (message-yank-original): Keep the existing + references. + +1999-03-04 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + (gnus-other-frame): Rewrite on the model of `toolbar-gnus'. + (gnus-frame): New internal variable. + (gnus-frame-properties): New user option. + +1999-03-04 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.062. + (gnus-revision-number): Fresh start from 00. + + * Sync up with Pterodactyl Gnus v0.80. + + * lisp/gnus-sum.el (gnus-summary-edit-article): Don't use + `mime-to-mml' nor `mml-to-mime'. + +1999-03-02 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 03. + + * lisp/gnus-sum.el (gnus-select-newsgroup): Examine cached articles + with `gnus-cache-articles-in-group' if the current group is not + a virtual group. + (TopLevel): Autoload `gnus-cache-articles-in-group' + +1999-03-01 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 02. + + * texi/gnus-ja.texi: Sync up with Semi-gnus 6.10. + + * lisp/dgnushack.el (dgnushack-install-package): Don't refer to + `configure-package-path'. Use `early-packages', `late-packages' or + `last-packages' instead. + +1999-03-01 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + + * lisp/message.el (messgage-inhibit-body-encoding): Default to t. + (message-mode): Abolish `message-mime-attach-file' from doc + string. + (message-mode-map): Abolish `message-mime-attach-file' from + `message-mode-menu'. + + * lisp/gnus-start.el (save-buffer-as-coding-system): Abolished. It + is given in APEL 9.13 by now. + + * lisp/gnus-ems.el (gnus-decode-coding-string): Abolished. + (gnus-encode-coding-string): Abolished. + (gnus-mule-cite-add-face): Restored. + (gnus-cite-add-face): Restored. + + * README.semi.ja: Note that APEL 9.13 or later is required. + * README.semi: Ditto. + * README.T-gnus: Ditto. + +1999-02-27 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.061. + (gnus-revision-number): Fresh start from 00. + + * Sync up with Pterodactyl Gnus v0.79. + +1999-02-27 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.060. + (gnus-revision-number): Fresh start from 00. + + * Sync up with Pterodactyl Gnus v0.78. + +1999-02-26 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 05. + + * Makefile.in (add-info-suffix, remove-info-suffix): New targets. + (package, install-package, package-ja, install-package-ja): Use + them. + (xinfo, xinfo-ja): Only build infos. + + * texi/Makefile.in (add-info-suffix): Chdir ../lisp first. + + * lisp/dgnushack.el (dgnushack-add-info-suffix-maybe): Chdir + ../texi first. + (dgnushack-install-package): Don't refer to `package-path'; error + if the package path does not found. + (TopLevel): Don't define `gnus-revision-number', + `gnus-version-number' and `package-path'. + +1999-02-24 Tatsuya Ichikawa + + * README.ichikawa : Removed. + + * README.T-gnus : Renamed from README.ichikawa + Remove description about T-gnus 6.8. + +1999-02-24 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 04. + + * Makefile.in (xinfo, xinfo-ja): Make add-info-suffix, formatting, + and make remove-info-suffix. + + * texi/Makefile.in (.texi): Don't specify the output filename when + makeinfo command is used. + (add-info-suffix, remove-info-suffix): New targets. + + * lisp/dgnushack.el (dgnushack-add-info-suffix-maybe): New + function. It will be used for adding ".info" suffix to @setfilename + line in each .texi files. + (dgnushack-texi-file-regexp): New constant. + (dgnushack-info-file-regexp): Add ".info" suffix. + +1999-02-24 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 03. + + * lisp/Makefile.in (all, total): Remove "auto-autoloads.el" and + "custom-load.el" as well. + + * Makefile.in (xlick, xinfo, xinfo-ja): New targets. + (install-package-ja, package-ja, install-package, package): Use + them; use $XEMACS instead of $EMACS. + (osome): Use $XEMACS instead of "xemacs21". + (x): Ditto. + (XEMACS): Use "xemacs" instead of "xemacs21" in default. + + * lisp/dgnushack.el (dgnushack-install-package): Remove extra files + in destination lisp directory. + (dgnushack-make-package): Don't generate "_pkg.el" file; don't + remove "auto-autoloads.el*" files. + (dgnushack-compile): Don't remove "_pkg.el" from the list. + +1999-02-23 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 02. + + * lisp/mail-source.el (mail-source-fetch-pop): Fix typo in original + source and merged it. + + * README.ichikawa: Update description about the latest T-gnus. + +1999-02-22 Tatsuya Ichikawa + + * lisp/gnus-art.el (gnus-narrow-to-page): Fix that "^L" do not work. + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + +1999-02-21 Tatsuya Ichikawa + + * lisp/mail-source.el (mail-source-fetch-pop): Comment out + postscript block - I don't know why it does not work. + There is no Bug report from ding ML. + + * lisp/gnus.el (gnus-version-number): Update to 6.10.059. + (gnus-revision-number): Fresh start from 00. + + * Sync up with Pterodactyl Gnus v0.77. + +1999-02-18 Tsukamoto Tetsuo + + * lisp/gnus.el (gnus-revision-number): Increment to 09. + + * lisp/gnus-start.el (save-buffers-kill-emacs): Rewrite the + advice. Call `gnus-offer-save-summaries'. + +1999-02-18 Tsukamoto Tetsuo + + * lisp/gnus.el (gnus-revision-number): Increment to 08. + + * lisp/gnus-start.el (save-buffers-kill-emacs): Advice. Call + `gnus-save-newsrc-file' before `save-some-buffers' is called. + + * README-offline.en: Update. + + * README-offline.ja: Fix typo. + + * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Set + `gnus-offline-hangup-program' and `gnus-offline-dialup-program' to + nil when null string is given. + +1999-02-18 Tatsuya Ichikawa + + * texi/Makefile.in: Change to work on Windows environment and + other platforms. + + * lisp/gnus.el (gnus-revision-number): Increment to 07. + +1999-02-17 Katsumi Yamaoka + + * lisp/dgnushack.el (dgnushack-make-package): Fix typo. + +1999-02-17 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 06. + + * Makefile.in (install-package-ja, package-ja, install-package, + package): New targets. + (PACKAGEDIR): New user option. + + * lisp/Makefile.in (install-package, package): New targets. + (PACKAGEDIR): New user option. + + * lisp/dgnushack.el (dgnushack-install-package): New function. + (dgnushack-make-package): New function. + (dgnushack-info-file-regexp): New constant. + (dgnushack-compile): Remove "_pkg.el" from the list. + + * configure: Regenerate by autoconf-2.13. + +1999-02-17 Yoshiki Hayashi + + * aclocal.m4: install .el files to site-lisp/gnus instead of + site-lisp. + * Makefile.in: add new rule `all-ja'. + +1999-02-15 Tatsuya Ichikawa + + * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Bug fix when + using nnspool. + + * lisp/gnus.el (gnus-revision-number): Increment to 05. + +1999-02-12 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-revision-number): Increment to 04. + + * lisp/read-passwd.el: Change location of (provide 'read-passwd) + + * lisp/gnus-offline.el: ditto. + +1999-02-12 Hidekazu Nakamura + + * lisp/gnus-ofsetup.el (gnus-setup-for-offline): To work with APOP + authentication scheme. + + * lisp/read-passwd..el (read-pw-set-mail-source-passwd-cache): + Undo my change. + +1999-02-12 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 03. + + * lisp/gnus-sum.el (gnus-summary-mode-map): Bound the command + `gnus-article-hide-headers' to "t". + + * lisp/gnus-art.el (article-hide-headers): Show all headers when + unhiding. + + * texi/gnus.texi: Fix latin chars. + +1999-02-12 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 02. + + * texi/emacs-mime.texi: Fix latin chars. + +1999-02-12 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + + * lisp/gnus-sum.el (gnus-nov-parse-line): Use + `nnheader-nov-read-message-id' instead of `nnheader-nov-field' or + `nnheader-generate-fake-message-id'; use `(eobp)' instead of + `(eq (char-after) ?\n)'. + +1999-02-11 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.058. + (gnus-revision-number): Fresh start from 00. + + * lisp/message.el (message-forward): Get back to the previous + design. + * lisp/gnus-msg.el (gnus-summary-mail-forward): Ditto. + + * lisp/mail-source.el (mail-source-fetch-pop): Ignore program and + authentication scheme.. + + * lisp/message.el (message-forward-start-separator): Restored. + (message-forward-end-separator): Restored. + (message-signature-before-forwarded-message): Restored. + (message-included-forward-headers): Restored. + + * lisp/message.el (message-make-forward-subject): Use "(none)" if + the original article has no subject. + + * Sync up with Pterodactyl Gnus v0.76. + + * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Change for pGnus 0.76. + +1999-02-09 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 08. + + * lisp/score-mode.el (gnus-score-edit-exit): Use + `save-buffer-as-coding-system' instead of + `write-region-as-coding-system'. + * lisp/gnus-start.el (gnus-save-newsrc-file): Ditto. + + * lisp/gnus-start.el (save-buffer-as-coding-system): New function + defined with `defun-maybe'. NOTE: It should be deleted in the + future. + + * lisp/gnus-sum.el (TopLevel): Require `mime-play' when compile. + +1999-02-09 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 07. + + * lisp/gnus-sum.el (gnus-mime-extract-message/rfc822): New + implementation. + +1999-02-08 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 06. + +1999-02-08 Masatoshi Tsuchiya + + * lisp/gnus-sum.el (gnus-articles-to-read): Use maximum number in + default instead of `gnus-large-newsgroup'. + +1999-02-08 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 05. + +1999-02-08 Masatoshi Tsuchiya , + Katsumi Yamaoka , + Keiichi Suzuki + + * lisp/gnus-sum.el (gnus-articles-to-read): If the number of + unread articles is more than `gnus-large-newsgroup', use it in + default instead of the maximum number. + +1999-02-08 MORIOKA Tomohiko , + Katsumi Yamaoka + + * lisp/gnus-sum.el (gnus-mime-extract-multipart): New function; + add it to the acting-condition for extracting mulitpart messages. + (gnus-mime-extract-message/rfc822): New function; add it to the + acting-condition for extracting message/rfc822 or message/news. + +1999-02-08 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-revision-number): Increment to 04. + + * lisp/nntp.el: Change nnmail-read-passwd -> mail-source-read-passwd. + +1999-02-08 Tsukamoto Tetsuo + + * README-offline.ja: Change for current version. + * README-offline.en: Ditto. + +1999-02-07 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-revision-number): Increment to 03. + +1999-02-04 Tsukamoto Tetsuo + + * lisp/gnus-offline.el: Delete security notice. + (gnus-offline-pop-password-file): Removed. + (gnus-offline-pop-password-decoding-function): Removed. + (gnus-offline-gnus-get-new-news): Revert to its original. + +1999-02-04 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 02. + +1999-02-04 YOSHIZAWA Masahiro + + * README-offline.en: New description. + * README-offline.ja: Ditto. + +1999-02-03 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-revision-number): Change to 01 + + * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Add default value. + +1999-02-03 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-revision-number): New constant. + +1999-02-02 Tatsuya Ichikawa + + * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Ask save password + information to .newsrc file. + + * lisp/gnus.el (gnus-variable-list): Undo my last change. + + * lisp/read-password.el (read-pw-set-mail-source-passwd-cache): Do + not input password if mail-source-password-cache is non nil. + +1999-02-03 Hidekazu Nakamura + + * lisp/read-passwd.el (read-pw-set-mail-source-passwd-cache): To + work with APOP authentication scheme. + +1999-02-02 Tatsuya Ichikawa + + * lisp/gnus-ofsetup.el (gnus-setup-for-offline): To work with + external movemail program. + + * lisp/gnus.el (gnus-variable-list): Add + mail-source-password-cache to save password information. + +1999-02-01 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.057. + + * Sync up with Pterodactyl Gnus v0.75. + +1999-02-01 Tatsuya Ichikawa + + * lisp/gnus-offline.el (gnus-offline-gnus-get-new-news): Undo my + change. + +1999-02-01 Katsumi Yamaoka + + * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Close + parentheses. + (gnus-offline-define-menu-on-agent): Ditto. + +1999-02-01 Katsumi Yamaoka + + * README.ichikawa: Fix about the last version of T-gnus based on + Gnus 5.6. + +1999-02-01 Akihiro Arisawa + + * lisp/nndoc.el (nndoc-mime-digest-type-p): Add the element of + `header-begin' to type-alist for mime-digest. + +1999-02-01 Tatsuya Ichikawa + + * README-offline.ja: Add description written by YOSHIZAWA Masahiro + + +1999-02-01 Tatsuya Ichikawa + Tsukamoto Tetsuo + + * lisp/gnus-offline.el (gnus-offline-gnus-get-new-news): Modify for + pGnus with mail-source.el. + + * lisp/gnus-offline.el: Use (running-pterodactyl-gnus-0_73-or-later) + to check pGnus 0.73 or later instead of (locate-library "mail-source") + +1999-02-01 Katsumi Yamaoka + + * lisp/nndoc.el (nndoc-mime-parts-type-p): Strip leading white + space from the matching pattern. + +1999-02-01 Katsumi Yamaoka + + * lisp/gnus-sum.el (gnus-nov-parse-extra): Abolished. + (gnus-nov-parse-line): Use `char-after' instead of `following-char' + ; use `nnheader-nov-parse-extra' instead of `gnus-nov-parse-extra'. + +1999-01-31 MORIOKA Tomohiko + + * lisp/gnus-sum.el: Abolish macro `gnus-nov-read-integer', + `gnus-nov-skip-field' and `gnus-nov-field'. + (gnus-nov-parse-line): Use `nnheader-nov-field' and + `nnheader-nov-read-integer' instead of `gnus-nov-field' and + `gnus-nov-read-integer'. + (gnus-get-newsgroup-headers-xover): Use + `gnus-retrieve-parsed-headers'. + + * lisp/gnus-cache.el (gnus-cache-retrieve-parsed-headers): Use + `gnus-cache-braid-headers', + `nnheader-get-newsgroup-headers-xover*' and + `nnheader-retrieve-headers-from-directory*' instead of + `gnus-get-newsgroup-headers-xover', `gnus-cache-braid-parsed-nov' + nor `gnus-cache-braid-parsed-heads'; abolish function + `gnus-cache-braid-parsed-nov' and `gnus-cache-braid-parsed-nov'. + (gnus-cache-braid-headers): New function. + + * lisp/nnheader.el (nnheader-nov-read-integer): Use + `(search-forward "\t" eol 'move)' instead of `(forward-char 1)' as + same as `gnus-nov-read-integer'. + (nnheader-retrieve-headers-from-directory*): New function. + (nnheader-retrieve-headers-from-directory): Use + `nnheader-retrieve-headers-from-directory*'. + (nnheader-get-newsgroup-headers-xover*): New function. + +1999-01-30 MORIOKA Tomohiko + + * lisp/nnmh.el (nnmh-retrieve-parsed-headers): Use + `nnheader-retrieve-headers-from-directory'. + + * lisp/nnheader.el (nnheader-retrieve-headers-from-directory): New + function. + +1999-01-29 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version): Modify for SEMI 1.13. + + * lisp/gnus-int.el (gnus-retrieve-parsed-headers): Use + `gnus-cache-retrieve-parsed-headers' instead of + `gnus-cache-retrieve-headers'. + + * lisp/gnus-cache.el (gnus-cache-retrieve-parsed-headers): New + function. + (gnus-cache-braid-parsed-nov): New function. + (gnus-cache-braid-parsed-heads): New function. + +1999-01-30 Tatsuya Ichikawa + + * lisp/gnus-offline.el: Rewrite to work with pGnus v0.74 based T-gnus. + * lisp/gnus-ofsetup.el: Ditto. + + * lisp/pop3-fma.el: Removed because after pGnus0.73 , pGnus can treat + multiple pop3 account. + +1999-01-29 Tatsuya Ichikawa + + * lisp/read-passwd.el: New file. + +1999-01-28 Katsumi Yamaoka + + * lisp/gnus.el (running-pterodactyl-gnus-0_73-or-later): Provide as + a new feature. + + * lisp/mail-source.el (mail-source-read-passwd): Don't load + "passwd" if the function `read-passwd' already exists. + + * lisp/gnus-start.el (gnus-read-active-file): Eliminate duplicated + select methods. + + * lisp/gnus-group.el (gnus-group-catchup-current): Fix typo. + +1999-01-27 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.056. + + * Sync up with Pterodactyl Gnus v0.74. + +1999-01-28 Katsumi Yamaoka + + * lisp/gnus-msg.el (gnus-summary-mail-digest): Reselect the message + frame after selecting a new article if the value of + `message-use-multi-frames' is non-nil and more than one articles + are given. + +1999-01-28 Keiichi Suzuki + + * lisp/gnus-sum.el (gnus-summary-move-article): Fix, could not + respool article. + +1999-01-26 Katsumi Yamaoka + + * lisp/nnmh.el (nnmh-retrieve-parsed-headers): Bind `in-reply-to' + and `cur' as temporary variables. + +1999-01-25 MORIOKA Tomohiko + + * lisp/gnus-sum.el (gnus-article-sort-by-author): fixed. + +1999-01-12 MORIOKA Tomohiko + + * lisp/gnus-int.el (gnus-retrieve-parsed-headers): Add new + optional arguments `dependencies' and `force-new'; new + implementation; call `retrieve-parsed-headers' if it is found. + + * lisp/nnmh.el (nnmh-retrieve-parsed-headers): New function. + +1999-01-12 MORIOKA Tomohiko + + * lisp/gnus-sum.el (gnus-select-newsgroup): Use + `gnus-retrieve-parsed-headers' instead of `gnus-retrieve-headers' + and `gnus-get-newsgroup-headers-xover' or + `gnus-get-newsgroup-headers'. + + * lisp/gnus-int.el (gnus-retrieve-parsed-headers): New function. + +1999-01-26 Tsukamoto Tetsuo + + * lisp/gnus-offline.el: Add security notice. + +1999-01-25 Tatsuya Ichikawa + + * README-offline.ja: New file - Variable and command description + for gnus-offline(Japanese edition). + * README-offline.en: New file - Ditto (English edition). + +1999-01-25 Tsukamoto Tetsuo + + * lisp/gnus-offline.el (gnus-offline-pop-password-file): New + variable. + (gnus-offline-pop-password-decoding-function): New variable. + (gnus-offline-get-new-news): When `gnus-offline-pop-password-file' + is non-nil, get one's password information from a file specified + by this variable, and don't store the passwords as a variable. + * lisp/smiley.el (smiley-buffer): Avoid a few duplicate + translations. + +1999-01-23 Kiyokazu SUTO + + * lisp/gnus-msg.el (gnus-inews-yank-articles): Use + `message-list-references' for gathering IDs from yanked articles. + + * lisp/message.el (message-list-references): New function. + (message-yank-original): Use it for gathering IDs from a yanked + article. + +1999-01-22 Katsumi Yamaoka + + * lisp/message.el (message-reply): Get the references from + `In-Reply-To' field if there were no references and `In-Reply-To' + field looks promising. + (message-yank-original): Try to fetch ID from `In-Reply-To' field + if `References' field does not exist. + (message-yank-original): Use `std11-narrow-to-header' instead of + `message-narrow-to-head'. + +1999-01-22 Katsumi Yamaoka + + * lisp/gnus-msg.el (gnus-inews-yank-articles): Fetch IDs from + `gnus-current-headers' instead of article header. + +1999-01-22 Katsumi Yamaoka + + * lisp/gnus-msg.el (gnus-inews-yank-articles): Save the beginning + position of the yanked articles -- apologize to SUTO-san, it has + been supported in his original code, but I didn't. + + * lisp/message.el: Replace line endings from `CRLF' to `LF'. + +1999-01-21 Hiroaki Matsui + + * lisp/message.el : Fix typo. + +1999-01-20 Katsumi Yamaoka + + * lisp/message.el (message-yank-original): If + `message-yank-add-new-references' is non-nil and this command is + called interactively, new IDs from the yanked article will be added + to `References' field. + (message-yank-add-new-references): New user option. + (message-header-format-alist): Use `message-shorten-references' for + `References' in default. + +1999-01-20 Kiyokazu SUTO , + Katsumi Yamaoka + + * lisp/gnus-msg.el (gnus-inews-yank-articles): Replace `References' + field with the gathered Message-IDs and References if more than one + articles are given. + +1999-01-20 Katsumi Yamaoka + + * lisp/gnus-msg.el (gnus-inews-yank-articles): Reselect the message + frame after selecting a new article if the value of + `message-use-multi-frames' is non-nil and more than one articles + are given. + +1999-01-20 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.055. + + * Sync up with Pterodactyl Gnus v0.72. + +1999-01-19 Katsumi Yamaoka + + * README.semi.ja: Add keiichi and nana-gnus to the branches info. + Modify the directory name for the daily snapshots. + * README.semi: Ditto. + + * README.branch.ja: Modified for Semi-gnus 6.10, etc. + * README.branch: Ditto. + +1999-01-19 Katsumi Yamaoka + + * lisp/message.el (message-reply): Cancel the last change. + (message-followup): Cancel the last change. + (message-wide-reply): Cancel the last change. + + * lisp/gnus-msg.el (gnus-summary-gather-references): Abolished. + (gnus-summary-reply): Cancel the last change. + (gnus-post-news): Cancel the last change. + +1999-01-18 Katsumi Yamaoka + + * lisp/gnus-sum.el (gnus-summary-move-article): Don't copy + expirable marks if the destination group is not expirable. + +1999-01-16 Kiyokazu SUTO + + * lisp/message.el (message-reply): Accept references as a new + optional arg. + (message-followup): Ditto. + (message-wide-reply): Ditto. + + * lisp/gnus-msg.el (gnus-summary-gather-references): New function. + (gnus-summary-reply): Use it + (gnus-post-news): Use it. + +1999-01-16 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.054. + + * Sync up with Pterodactyl Gnus v0.71. + +1999-01-16 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.053. + + * Sync up with Pterodactyl Gnus v0.70. + +1999-01-13 Kiyokazu SUTO + + * lisp/nnspool.el (nnspool-retrieve-headers): Protect against empty + body. + +1999-01-13 Tatsuya Ichikawa + + * lisp/gnus-offline.el: Add Tsukamoto Tetsuo + to author and maintainer. + +1999-01-12 Katsumi Yamaoka + + * lisp/nnmail.el (nnmail-article-group): Don't infloop. + +1999-01-12 Katsumi Yamaoka + + * TODO.ja: Modified for Cancel-Lock feature. + + * lisp/nntp.el (nntp-request-post): Put a Message-ID generated by + server if it does not exist in the article. + (nntp-request-post): Run `nntp-prepare-post-hook'. + (nntp-async-trigger): Save a response from the server in + `nntp-process-response' after sending a command. + (nntp-wait-for): Ditto. + (nntp-prepare-post-hook): New hook, run just before posting an + article. + + * lisp/nnheader.el (nnheader-init-server-buffer): Make + `nntp-process-response' be buffer-local in `nntp-server-buffer'. + (nntp-process-response): New variable, used for holding a response + from the server after sending a command. + +1999-01-11 Tsukamoto Tetsuo + + * lisp/message.el (message-draft-coding-system): Don't Call + `coding-system-p'. Find its default value using + `find-coding-system' instead. + +1999-01-11 Katsumi Yamaoka + + * lisp/pop3.el (pop3-munge-message-separator): Use + `parse-time-string'. + + * lisp/gnus-vm.el (gnus-summary-save-in-vm): Save window config, + select the article before saving. + +1999-01-09 Tsukamoto Tetsuo + + * lisp/gnus-offline.el (gnus-offline-popup-menu): Bug fix -- Use + `gnus-offline-menu-on-agent' if `miee-popup-menu' does not exist. + +1999-01-08 Katsumi Yamaoka + + * lisp/pop3.el (pop3-last): Use `split-string' instead of + `pop3-string-to-list'. + (pop3-stat): Ditto. + (pop3-munge-message-separator): Ditto. + (pop3-string-to-list): Abolished. + +1999-01-06 Tsukamoto Tetsuo + + * lisp/gnus-offline.el (gnus-offline-setup): Don't call + `gnus-offline-agent-expire' when 'gnus-agent-expire-all' is + non-nil. + (gnus-offline-define-menu-on-miee): Call `easy-menu-add' under + XEmacs. + (gnus-offline-popup-menu): New function. + (gnus-offline-define-menu-and-key): Call it under Emacs to create + a popup menu in the group buffer. + +1999-01-04 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.052. + + * Sync up with Pterodactyl Gnus v0.69. + +1998-12-28 Katsumi Yamaoka + + * lisp/gnus-sum.el (gnus-summary-preview-mime-message): Always + select the article before previewing. Abolish prefix arg. + + * lisp/gnus-art.el (gnus-mime-preview-quitting-method): re-select + the article without reservation. + (gnus-article-display-mime-message): Show all headers if + `gnus-have-all-headers' the local var of summary buffer is non-nil. + +1998-12-25 Katsumi Yamaoka + + * lisp/gnus-art.el (gnus-article-check-buffer): Rewrite (checking + for buffer object). + +1998-12-22 Katsumi Yamaoka + + * lisp/gnus-art.el (mime-preview-over-to-next-method-alist): Use + `gnus-summary-next-article' in `gnus-original-article-mode'. + (mime-preview-over-to-previous-method-alist): Use + `gnus-summary-prev-article' in `gnus-original-article-mode'. + +1998-12-22 Katsumi Yamaoka + + * lisp/gnus-bbdb.el (toplevel): Define `bbdb-pop-up-elided-display' + for avoiding byte-compile warning. + + * lisp/gnus-art.el (gnus-article-mode-map): Define almost undefined + keys to `gnus-article-read-summary-keys'. + (gnus-article-check-buffer): Check for a major-mode in + `gnus-original-article-buffer' as well. + (gnus-article-prepare-display): Set `gnus-article-current-summary' + to `gnus-summary-buffer'. + +1998-12-21 Tatsuya Ichikawa + + * lisp/pop3-fma.el (pop3-fma-movemail): Work with movemail.exe + with APOP extention. + +1998-12-18 Katsumi Yamaoka + + * lisp/gnus-start.el (gnus-read-newsrc-el-file): Bug (referring to + unbounded variable) fix. + +1998-12-17 Katsumi Yamaoka + + * lisp/gnus-start.el (gnus-read-newsrc-el-file): Don't load newsrc + file if it does not exist. + +1998-12-16 Tatsuya Ichikawa + + * lisp/gnus-offline.el: (gnus-offline-define-menu-on-miee) + (gnus-offline-define-menu-on-agent): Use Japanized menu when using + under Meadow. + +1998-12-16 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.051. + + * Sync up with Pterodactyl Gnus v0.68. + +1998-12-14 Tatsuya Ichikawa + + * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Bug + fix. + +1998-12-14 Katsumi Yamaoka + + * lisp/nnheader.el (nnheader-find-file-noselect): Call + `find-file-noselect-as-coding-system' with CODING-SYSTEM as the + 1st arg. + + * lisp/gnus-score.el (gnus-score-load-score-alist): Call + `insert-file-contents-as-coding-system' with CODING-SYSTEM as the + 1st arg. + * lisp/nnmail.el (nnmail-find-file): Ditto. + * lisp/nnheader.el (nnheader-insert-file-contents): Ditto. + + * lisp/score-mode.el (gnus-score-edit-exit): Call + `write-region-as-coding-system' as the 1st arg. + * lisp/gnus-start.el (gnus-save-newsrc-file): Ditto. + + * lisp/gnus-start.el (gnus-read-newsrc-el-file): Call + `insert-file-contents-as-coding-system' with CODING-SYSTEM as the + 1st arg. + + * lisp/gnus-score.el (gnus-score-save): Call + `gnus-write-buffer-as-coding-system' with CODING-SYSTEM as the 1st + arg. + * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Ditto. + (gnus-cache-save-buffers): Ditto. + + * lisp/gnus-util.el (gnus-write-buffer-as-coding-system): Be + CODING-SYSTEM the 1st arg. + + * lisp/nnmail.el (nnmail-write-region): Call + `write-region-as-coding-system' as the 1st arg. + * lisp/gnus-agent.el (gnus-agent-expire): Ditto. + (gnus-agent-fetch-headers): Ditto. + (gnus-agent-flush-cache): Ditto. + (gnus-agent-fetch-articles): Ditto. + (gnus-agent-save-history): Ditto. + (gnus-agent-save-groups): Ditto. + (gnus-agent-save-active): Ditto. + +1998-12-14 Tsukamoto Tetsuo + + * lisp/gnus-offline.el (gnus-offline-define-menu-and-key): Bug + fix. + Overwrite the toolbar spec for gnus-group-mode, under XEmacs. + +1998-12-14 Katsumi Yamaoka + + * lisp/nnheader.el (nnheader-find-file-noselect): Use + `find-file-noselect-as-coding-system' (renamed from + `find-file-noselect-as-specified-coding-system'). + + * lisp/gnus-score.el (gnus-score-load-score-alist): Use + `insert-file-contents-as-coding-system' (renamed from + `insert-file-contents-as-specified-coding-system'). + * lisp/nnmail.el (nnmail-find-file): Ditto. + * lisp/nnheader.el (nnheader-insert-file-contents): Ditto. + + * lisp/score-mode.el (gnus-score-edit-exit): Use + `write-region-as-coding-system' (renamed from + `write-region-as-specified-coding-system'). + * lisp/gnus-start.el (gnus-save-newsrc-file): Ditto. + + * lisp/gnus-start.el (gnus-read-newsrc-el-file): Use + `insert-file-contents-as-coding-system' (renamed from + `insert-file-contents-as-specified-coding-system'). + + * lisp/gnus-score.el (gnus-score-save): Use + `gnus-write-buffer-as-coding-system' (renamed from + `gnus-write-buffer-as-specified-coding-system'). + * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Ditto. + (gnus-cache-save-buffers): Ditto. + + * lisp/gnus-util.el (gnus-write-buffer-as-coding-system): Renamed + from 'gnus-write-buffer-as-specified-coding-system'. + + * lisp/nnmail.el (nnmail-write-region): Use + `write-region-as-coding-system' (renamed from + `write-region-as-specified-coding-system'). + * lisp/gnus-agent.el (gnus-agent-expire): Ditto. + (gnus-agent-fetch-headers): Ditto. + (gnus-agent-flush-cache): Ditto. + (gnus-agent-fetch-articles): Ditto. + (gnus-agent-save-history): Ditto. + (gnus-agent-save-groups): Ditto. + (gnus-agent-save-active): Ditto. + +1998-12-14 Tsukamoto Tetsuo + + * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Bug + fix. + (gnus-offline-set-offline-sendmail-function): Bug fix. + +1998-12-12 Hidekazu Nakamura + + * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Bug fix. + +1998-12-12 Tsukamoto Tetsuo + + * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Bug + fix. + (gnus-offline-set-offline-sendmail-function): Bug fix. + +1998-12-11 Tatsuya Ichikawa + + * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Change + easy-menu-define to easy-menu-change to override miee menu. + +1998-12-11 Katsumi Yamaoka + + * lisp/nnheader.el (nnheader-find-file-noselect): Call + `find-file-noselect-as-specified-coding-system' directly. + +1998-12-10 Tatsuya Ichikawa + + * lisp/gnus-offline.el (gnus-offline-setup): Add + gnus-offline-setup to gnus-group-mode-hook. + (gnus-offline-set-offline-sendmail-function): Bug fix. + +1998-12-10 Tsukamoto Tetsuo + + * lisp/gnus-offline.el (gnus-offline-define-menu-on-miee): Bug + fix. + (gnus-offline-define-menu-on-agent): Bug fix. + +1998-12-10 Katsumi Yamaoka + + * lisp/pop3.el (pop3-movemail): Use `write-region-as-binary' + instead of `append-to-file'. + (pop3-movemail-file-coding-system): Abolished. + + * lisp/nnheader.el (nnheader-find-file-noselect): Use + `find-file-noselect-as-specified-coding-system' instead of + `find-file-noselect'. + + * lisp/gnus-score.el (gnus-score-load-score-alist): Use + `insert-file-contents-as-specified-coding-system' instead of + `insert-file-contents'. + * lisp/nnmail.el (nnmail-find-file): Ditto. + * lisp/nnheader.el (nnheader-insert-file-contents): Ditto. + + * lisp/message.el (message-send-mail-with-qmail): Enclose + `call-process-region' with `as-binary-process'. + (message-send-mail-with-sendmail): Ditto. + (message-send-coding-system): Abolished. + + * lisp/score-mode.el (gnus-score-edit-exit): Emulate + `save-buffer' with `write-region-as-specified-coding-system'. + * lisp/gnus-start.el (gnus-save-newsrc-file): Ditto. + + * lisp/gnus-start.el (gnus-read-newsrc-el-file): Emulate `load' + with `insert-file-contents-as-specified-coding-system' and + `eval-region'. + + * lisp/gnus-score.el (gnus-score-save): Use + `gnus-write-buffer-as-specified-coding-system' instead of + `gnus-write-buffer'. + * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Ditto. + (gnus-cache-save-buffers): Ditto. + + * lisp/gnus-util.el (gnus-output-to-mail): Use + `write-region-as-binary' instead of `append-to-file'. + (gnus-output-to-mail): Use `gnus-write-buffer-as-binary' instead + of `gnus-write-buffer'. + (gnus-write-buffer-as-specified-coding-system): New function. + (gnus-write-buffer-as-binary): New function. + + * lisp/nnmail.el (nnmail-write-region): Use + `write-region-as-specified-coding-system' instead of + `write-region'. + * lisp/gnus-agent.el (gnus-agent-expire): Ditto. + (gnus-agent-fetch-headers): Ditto. + (gnus-agent-flush-cache): Ditto. + (gnus-agent-fetch-articles): Ditto. + (gnus-agent-save-history): Ditto. + (gnus-agent-save-groups): Ditto. + (gnus-agent-save-active): Ditto. + +1998-12-10 Tatsuya Ichikawa + + * lisp/gnus-offline.el (gnus-offline-after-jobs-done): Create menu + using 'easymenu'. + +1998-12-09 Tsukamoto Tetsuo + + * lisp/gnus-offline.el (gnus-offline-after-jobs-done): Don't call + `gnus-offline-agent-expire' under XEmacs. + +1998-12-08 Katsumi Yamaoka + + * texi/gnus-ja.texi: Fix latin chars. + * texi/gnus.texi: Ditto. + + * texi/ChangeLog: Shrunk. + + * text/widget.texi: Removed. + * texi/custom.texi: Removed. + + * lisp/ChangeLog: Fix latin chars. + + * lisp/pop3.el (pop3-open-server): Use + `open-network-stream-as-binary' instead of `open-network-stream'. + * lisp/nntp.el (nntp-open-network-stream): Ditto. + * lisp/gnus-gl.el (bbb-connect-to-bbbd): Ditto. + + * lisp/nntp.el (nntp-open-rlogin): Enclose `start-process' with + `as-binary-process'. + (nntp-open-telnet): Ditto. + + * lisp/nntp.el (nntp-coding-system-for-write): Abolished. + (nntp-coding-system-for-read): Abolished. + + * lisp/nndb.el: Don't require `tcp'. + +1998-12-07 Katsumi Yamaoka + + * lisp/message.el (message-get-parameter-with-eval): Call + `message-get-parameter' with arg `key' first. + +1998-12-07 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.050. + + * Sync up with Pterodactyl Gnus 0.65. + +1998-12-06 Tatsuya Ichikawa + + * lisp/message.el (message-cite-original-without-signature): Do + not use mml-quote-region. + + * lisp/message.el (message-cite-original): Ditto. + + * lisp/gnus.el (gnus-version-number): Update to 6.10.049. + + * Sync up with Pterodactyl Gnus 0.64. + +1998-12-04 Katsumi Yamaoka + + * lisp/gnus-sum.el (gnus-summary-show-article): Don't use + `mm-destroy-parts'. + +1998-12-04 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.048. + + * Sync up with Pterodactyl Gnus 0.63. + +1998-12-04 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.047. + + * Sync up with Pterodactyl Gnus 0.62. + + * README.ichikawa: Add description of required APEL/FLIM/SEMI. + +1998-12-03 Katsumi Yamaoka + + * lisp/nndraft.el (nndraft-request-article): Don't bind + `nnmail-file-coding-system'. + +1998-12-03 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.046. + + * Sync up with Pterodactyl Gnus 0.61. + +1998-12-02 Tatsuya Ichikawa + + * lisp/smtp.el: Abolished - Use smtp.el in FLIM. + + * lisp/gnus.el (gnus-version-number): Update to 6.10.045. + + * Sync up with Pterodactyl Gnus 0.59. + +1998-12-01 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.044. + + * Sync up with Pterodactyl Gnus 0.58. + +1998-12-01 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.043. + + * Sync up with Pterodactyl Gnus 0.57. + +1998-11-30 Katsumi Yamaoka + + * lisp/base64.el (base64-decode-region): Use `defun-maybe'. + (base64-encode-region): Ditto. + + * lisp/gnus.el (gnus-version-number): Update to 6.10.042. + + * Sync up with Pterodactyl Gnus 0.56. + +1998-11-29 Tatsuya Ichikawa + + * lisp/gnus-offline.el: Fix typo of DOC string. + + * lisp/score-mode.el: Change default value + score-mode-coding-system 'binary to 'ctext. + +1998-11-28 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.041. + + * Sync up with Pterodactyl Gnus 0.55. + +1998-11-26 Katsumi Yamaoka + + * lisp/gnus-msg.el (gnus-summary-supersede-article): Bind + `gnus-message-setup-hook' to minimum setting. + + * lisp/message.el (message-supersede-setup-for-mime-edit): New + function. + (message-supersede-setup-function): New user option. Use + `message-supersede-setup-for-mime-edit' in default. + (message-supersede): Call `message-supersede-setup-function' if it + is non-nil. + (message-supersede-setup-hook): New user option. + + * lisp/message.el (message-bounce-setup-for-mime-edit): Don't + delete header separator. It is up to MIME-Edit to do so. + +1998-11-24 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.040. + + * Sync up with Pterodactyl Gnus 0.54. + +1998-11-24 Tatsuya Ichikawa + + * lisp/gnus-offline.el (gnus-offline-version-number): Update to + 2.00. + + * lisp/pop3-fma.el (pop3-fma-save-password-information): New + variable. Do not save password information when + `pop3-fma-save-password-information' set to nil (in default). + (pop3-fma-encode-string): abolished - because of difference of + FLIM API. + (pop3-fma-decode-string): Ditto. + +1998-11-21 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.039. + + * Sync up with Pterodactyl Gnus 0.53. + + * lisp/pop3-fma.el (pop3-fma-init-message-hook): Change + message-send-hook to mime-edit-translate-hook - enbug. + +1998-11-20 Tatsuya Ichikawa + + * lisp/gnus-offline.el: Update to beta5. + + * lisp/gnus-ofsetup.el: Update to beta5. + + * lisp/gnus.el (gnus-version-number): Update to 6.10.038. + + * Sync up with Pterodactyl Gnus 0.52. + +1998-11-19 Keiichi Suzuki + + * lisp/message.el (message-get-reply-buffer): Abolished. + (message-get-original-reply-buffer): Abolished. + (message-get-parameter): New inline function. + (message-get-parameter-with-eval): New macro. + (message-fetch-reply-field): Do not use `message-get-reply-buffer'. + (message-yank-original): Ditto. + (message-setup): Use `message-get-parameter'. + (message-mime-insert-article): Use + `message-get-parameter-with-eval' instead of + `message-get-original-reply-buffer'. + + * lisp/gnus-msg.el (gnus-inews-add-send-actions): Do not add + `set-window-configuration' to action when + `message-use-multi-frames' is non-`nil'. + +1998-11-19 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.037. + + * Sync up with Pterodactyl Gnus 0.51. + + * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Force set + `use-miee' to t if `news-method' is equal to "nnspool". + (gnus-setup-for-offline): Put a question for "Agent directory" + only if `gnus-offline-news-fetch-method' is equal to `nnagent'. + (Top-Level): Defvar `use-miee' for avoiding byte-compile warning. + +1998-11-18 Katsumi Yamaoka + + * lisp/gnus-sum.el (gnus-summary-save-article-rmail): Use + `gnus-summary-save-in-rmail' instead of + `rmail-output-to-rmail-file'. + +1998-11-18 Katsumi Yamaoka + + * lisp/message.el (message-mimic-kill-buffer): Rewrite. + +1998-11-18 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.036. + + * Sync up with Pterodactyl Gnus 0.50. + +1998-11-18 Katsumi Yamaoka + + * lisp/message.el (message-mimic-kill-buffer): New function. + (message-mode-map): Use it for `C-x k'. + +1998-11-18 Keiichi Suzuki + + * lisp/message.el (message-dont-send): Use `message-delete-frame'. + +1998-11-18 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.035. + + * Sync up with Pterodactyl Gnus 0.49. + +1998-11-17 Tsukamoto Tetsuo + + * lisp/message.el (message-dont-send): Use `message-save-drafts' + instead of `save-buffer'. + +1998-11-17 Hiroaki Matsui + + * lisp/message.el (message-clone-locals): Add + "user-mail-address" and "user-full-name" to matching pattern. + +1998-11-14 Kenji Itoh + + * lisp/nnmail.el (nnmail-read-passwd): Use `read-passwd' if it + exists as a function. + + * lisp/pop3.el (pop3-read-passwd): Ditto. + +1998-11-16 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.034. + (gnus-version): Modify for SEMI 1.11, FLIM 1.12. + +1998-11-16 Katsumi Yamaoka + + * make.bat: Replace line endings from `LF' to `CRLF'. + +1998-11-16 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.033. + + * Sync up with Pterodactyl Gnus 0.48. + +1998-11-16 Katsumi Yamaoka + + * texi/emacs-mime.texi: Fix iso-8859-1 chars. + + * lisp/message.el (message-send-news): Call + `message-maybe-split-and-send-news' with an arg `method'. + (message-maybe-split-and-send-news): Accept an arg `method'. + + * lisp/rfc1843.el: Defvar `gnus-decode-encoded-word-function'. + + * lisp/mm-uu.el: Require `gnus-mailcap'. + * lisp/mm-decode.el: Require `gnus-mailcap' instead of `mailcap'. + * lisp/mm-encode.el: Ditto. + * lisp/gnus-mailcap.el: Provide `gnus-mailcap' instead of `mailcap'. + +1998-11-16 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.032. + + * Sync up with Pterodactyl Gnus 0.47. + +1998-11-15 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.031. + + * Sync up with Pterodactyl Gnus 0.46. + +1998-11-14 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.030. + + * Sync up with Pterodactyl Gnus 0.44. + +1998-11-13 Katsumi Yamaoka + + * lisp/gnus-art.el (gnus-article-header-presentation-method): Use + `mime-insert-header' instead of `mime-insert-decoded-header'. + + * lisp/nnheader.el (nnheader-decode-subject): Change the 2nd arg of + `mime-find-field-decoder' to 'nov'. + (nnheader-decode-from): Ditto. + + * lisp/message.el (message-maybe-split-and-send-mail): Discard + a return from `message-send-mail-function'. + +1998-11-12 Tatsuya Ichikawa + + * lisp/gnus-offline.el: bug fix. + + * lisp/gnus-ofsetup.el: Bug fix. + +1998-11-12 Katsumi Yamaoka + + * texi/Makefile.in (.texi:): Don't escape double quote. + (texi2latex.elc:): Ditto. + +1998-11-12 Tatsuya Ichikawa + + * texi/gnus-ja.texi: Add infos about `pop3-fma' and `gnus-offline'. + +1998-11-12 Katsumi Yamaoka + + * lisp/message.el (message-maybe-split-and-send-mail): Use + `defsubst' instead of `defun'. + (message-maybe-split-and-send-news): Ditto. + +1998-11-12 Katsumi Yamaoka + + * lisp/gnus-msg.el (gnus-summary-resend-bounced-mail): Bind + `gnus-message-setup-hook' to minimum setting. + + * lisp/message.el (message-bounce-setup-for-mime-edit): New + function. + (message-bounce-setup-function): New user option. Use + `message-bounce-setup-for-mime-edit' in default. + (message-bounce): Call `message-bounce-setup-function' if it is + non-nil. + (message-bounce-setup-hook): New user option. + (message-send-mail): Delete useless things. + +1998-11-12 Katsumi Yamaoka + + * lisp/message.el (message-maybe-split-and-send-mail): New function. + (message-send-mail): Use it. + (message-maybe-split-and-send-news): New function. + (message-send-news): Use it. + +1998-11-11 Tatsuya Ichikawa + + * lisp/gnus-offline.el: bug fix. + + * lisp/gnus-ofsetup.el: Bug fix. + +1998-11-11 Katsumi Yamaoka + + * lisp/message.el (message-send-mail): Protect against errors. + (message-send-news): Ditto. + +1998-11-11 Keiichi Suzuki + + * lisp/message.el (message-do-fcc): Sync up with Semi-gnus 6.8. + (message-8bit-encoding-list): New variable. + (message-check-encoding): Use `message-8bit-encoding-list'. Change + search pattern. + +1998-11-11 Keiichi Suzuki + + * lisp/gnus-bbdb.el (gnus-bbdb/extract-address-components): Normalize + return value. + (gnus-bbdb/update-record): Change condition for checking own message. + +1998-11-11 Yoshiki Hayashi + + * README.semi.ja, README.branch.ja: New file. + +1998-11-10 Tatsuya Ichikawa + + * lisp/gnus-offline.el: bug fix. + + * lisp/gnus-ofsetup.el: Bug fix. + +1998-11-09 Tatsuya Ichikawa + + * lisp/gnus-offline.el: v2.00b1 Separate setting part and + functional part - setting part move to gnus-ofsetup.el (New file). + + * lisp/gnus-ofsetup.el: New file - setting function for + gnus-offline. + +1998-11-09 Katsumi Yamaoka + + * lisp/nnheader.el (nnheader-decode-subject): Call + `mime-find-field-decoder' with `summary' as the 2nd arg. + (nnheader-decode-from): Ditto. + +1998-11-09 Katsumi Yamaoka + + * lisp/pop3-fma.el: Set the value of `nnmail-read-passwd' as a + symbol `pop3-fma-read-passwd'. + +1998-11-09 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.029. + + * Sync up with Pterodactyl Gnus 0.42. + +1998-11-09 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.028. + + * Sync up with Pterodactyl Gnus 0.41. + +1998-11-06 Katsumi Yamaoka + + * lisp/gnus-art.el (gnus-article-make-full-mail-header): New + function. + (gnus-article-mime-edit-article-setup): Use it. + (gnus-article-mime-edit-exit): Use it. + + (gnus-article-mime-edit-article-setup): Set `gnus-show-mime' to t. + + * lisp/gnus-bbdb.el: Modify header description. + +1998-11-05 Katsumi Yamaoka + + * lisp/gnus-art.el (gnus-article-edit-done): Remove + `gnus-article-mime-edit-article-unwind' from + `gnus-article-mode-hook' before run `gnus-article-edit-exit'. + (gnus-article-mime-edit-article-setup): Revised. + (gnus-article-mime-edit-article-unwind): New function. + (gnus-article-mime-edit-exit): New function. + + (gnus-insert-mime-button): Fix typo. + +1998-11-04 Yoshiki Hayashi + + * lisp/message.el: (message-do-fcc): Don't run message-header-hook + and message-before-do-fcc-hook. + +1998-11-04 MORIOKA Tomohiko + + * lisp/mmgnus.el (entity-buffer): Must move to (point-min) before + search boundary between header and body (to fix problem with + Emacs). + +1998-11-03 MORIOKA Tomohiko + + * lisp/nnmh.el (nnmh-retrieve-headers): Don't use + `nnheader-fold-continuation-lines'. + + * lisp/gnus-sum.el (gnus-get-newsgroup-headers): Don't expect + unfolded (to fix problem when using gnus-cache). + +1998-11-04 Katsumi Yamaoka + + * lisp/message.el (message-make-in-reply-to): Quote date. + +1998-11-02 Keiichi Suzuki + + * lisp/gnus-bbdb.el (gnus-bbdb/canonicalize-full-name-methods): + New variable. (Merged from `mime-bbdb.el' in SEMI.) + (gnus-bbdb/extract-address-components): New function. (Merged from + `mime-bbdb.el' in SEMI.) + (gnus-bbdb/canonicalize-spaces): Ditto. + (gnus-bbdb/canonicalize-dots): Ditto. + (gnus-bbdb/update-record): Use + `gnus-bbdb/extract-address-components'. + (gnus-bbdb/lines-and-from): Ditto. + (gnus-bbdb/summary-get-author): Ditto. + (gnus-bbdb/summary-author-in-bbdb): Ditto. + (gnus-bbeb/decode-field-body-function): New variable. + (gnus-bbdb/decode-field-body): New macro. + (gnus-bbdb/update-record): Use `gnus-bbdb/decode-field-body'. + (gnus-bbdb/extract-field-value): Ditto. + (gnus-bbdb/decode-field-body-function): Fix typo. + (gnus-bbdb/decode-field-body): Ditto. + (gnus-bbdb/update-record): Use `save-excursion' and change timing + of `save-restriction'. + +1998-10-31 Katsumi Yamaoka + + * lisp/gnus-draft.el (gnus-draft-decoding-function): Use + `mime-edit-decode-message-in-buffer' instead of + `mime-edit-decode-buffer'. + +1998-10-31 Tatsuya Ichikawa + + * lisp/nnheader.el (nnheader-decode-field-body): New inline + function. + + * lisp/gnus-draft.el (gnus-draft-decoding-function): Use + `mime-edit-decode-buffer' and `mime-decode-header-in-buffer'. + + * lisp/gnus-bbdb.el (gnus-bbdb/update-record): Use + `nnheader-decode-field-body' instead of `mime-decode-field-body'. + (gnus-bbdb/extract-field-value): Ditto. + +1998-10-30 Keiichi Suzuki + + * lisp/gnus-bbdb.el (gnus-bbdb/update-record): Check existance of + `To' field before decoding. + +1998-10-30 Katsumi Yamaoka + + * README-gnus-bbdb.en: New file, translated by courtesy of + Hiroshi Kawaguchi . + +1998-10-30 Katsumi Yamaoka + + * lisp/dgnushack.el (dgnushack-compile): Add `gnus-bbdb.el'. + + * lisp/gnus-bbdb.el: New file. By courtesy of Keiichi Suzuki. + * README-gnus-bbdb.ja: Ditto (A part of Nana-TIPS.ja). + +1998-10-30 Tatsuya Ichikawa + + * lisp/gnus.el: Add autoload setting for `gnus-offline' and + `pop3-fma'. + +1998-10-30 Katsumi Yamaoka + + * lisp/gnus-art.el (article-decode-encoded-words): Use + `mime-decode-header-in-buffer' instead of `eword-decode-header'. + (gnus-article-display-message-with-encoded-word): Likewise. + + * lisp/gnus-art.el (gnus-article-mime-edit-article-setup): Fix + typo. + +1998-10-29 MORIOKA Tomohiko + + * lisp/gnus-draft.el (gnus-draft-decoding-function): Use + `mime-edit-decode-buffer' simply as initial value. + + * lisp/message.el (message-make-forward-subject): Use + `nnheader-decode-subject' instead of + `eword-decode-unstructured-field-body'. + + * lisp/nnheader.el (nnheader-decode-subject): New alias. + (nnheader-decode-from): New alias. + (make-full-mail-header): Use `nnheader-decode-subject' and + `nnheader-decode-from' instead of + `eword-decode-and-unfold-unstructured-field' and + `eword-decode-and-unfold-structured-field'. + +1998-10-29 Katsumi Yamaoka + + * lisp/gnus-art.el (gnus-article-mime-edit-article-setup): Force + `font-lock' to turn on at the beginning. Turn off `font-lock' + after editing article. + +1998-10-29 Katsumi Yamaoka + + * lisp/gnus-sum.el (gnus-summary-edit-article-done): Abolish + `gnus-article-decoded-p'. + + * lisp/nnheader.el: Delete useless comments. + + * lisp/gnus-art.el (gnus-article-edit-article): Call + `gnus-article-edit-article-setup-function' if it is non nil. + (gnus-article-mime-edit-article-setup): New function. + (gnus-article-mime-edit-article-setup-hook): New hook. + (gnus-article-edit-article-setup-function): New user option. Use + `gnus-article-mime-edit-article-setup' in default. + +1998-10-28 Tatsuya Ichikawa + + * lisp/pop3-fma.el: Determin base64 encode/decode function by FLIM. + +1998-10-26 Tatsuya Ichikawa + + * lisp/pop3-fma.el: Require `mel-b-el' if `mel-b' does not exist. + +1998-10-26 Katsumi Yamaoka + + * lisp/pop3-fma.el: Require `mel-b-ccl' or `mel-b-el' if `mel-b' + does not exist. + + * lisp/nnheader.el (nnheader-file-coding-system): Restore the + previous default value. + +1998-10-26 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.027. + + * Sync up with Pterodactyl Gnus 0.40. + +1998-10-23 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.026. + (gnus-version): Modify supported version for FLIM and SEMI. + +1998-10-22 Katsumi Yamaoka + + * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Use + `mime-fetch-field' for getting Subject and From field. + +1998-10-20 MORIOKA Tomohiko + + * lisp/nnheader.el (nnheader-insert-nov): Use `mime-fetch-field' + for Subject and From field. + +1998-10-20 Katsumi Yamaoka + + * lisp/nnheader.el (nnheader-parse-nov): Use + `make-full-mail-header'. + +1998-10-20 MORIOKA Tomohiko + + * lisp/nnheader.el (nnheader-parse-head): Use + `make-full-mail-header'. + +1998-10-20 Katsumi Yamaoka + + * lisp/nnheader.el (make-full-mail-header): Sync up with + "chao-6_9" branch. + (mail-header-set-xref): Use `mime-entity-set-xref-internal'. + (mail-header-xref): Use `mime-entity-xref-internal' + (mail-header-set-lines): mime-entity-set-lines-internal'. + (mail-header-lines): Use `mime-entity-lines-internal' + (mail-header-set-chars): Use `mime-entity-set-chars-internal'. + (mail-header-chars): Use `mime-entity-chars-internal'. + (mail-header-set-references): Use + `mime-entity-set-references-internal'. + (mail-header-references): Use `mime-entity-references-internal'. + (mail-header-set-message-id): Use + `mime-entity-set-message-id-internal'. + (mail-header-message-id): Use `mime-entity-message-id-internal'. + (mail-header-set-date): Use `mime-entity-set-date-internal'. + (mail-header-date): Use `mime-entity-date-internal'. + (mail-header-set-from): Use + `mime-entity-set-decoded-from-internal'. + (mail-header-from): Use `mime-entity-decoded-from-internal'. + (mail-header-set-subject): Use + `mime-entity-set-decoded-subject-internal'. + (mail-header-subject): Use `mime-entity-decoded-subject-internal'. + All changes are imported from "chao-6_9" branch. + + * lisp/message.el (message-reply): Use + `make-full-mail-header-from-decoded-header`. + (message-followup): Ditto. + (message-get-reply-buffer-function): Abolished. + (message-fill-address): Don't fold if the current column number is + less than 79. + + * lisp/gnus-sum.el (gnus-summary-insert-line): Use + `gnus-put-text-property-excluding-characters-with-faces' instead + of `gnus-put-text-property'. + (gnus-summary-mode-map): Abolish key definition + "b" for `gnus-article-view-part'. + (gnus-encoded-word-method-alist): Abolished. + (gnus-multi-decode-encoded-word-string) Abolished. + + * lisp/gnus-int.el (gnus-request-replace-article): Don't encode + message body. + + * lisp/gnus-i18n.el (gnus-get-summary-default-charset): Abolished. + (gnus-set-summary-default-charset): Sync up with "chao-6_9" branch. + + * lisp/gnus-art.el (gnus-article-display-method-for-encoded-word): + Abolished. + (gnus-article-display-message-with-encoded-word): Abolished. + +1998-10-14 MORIOKA Tomohiko + + * lisp/gnus-sum.el (gnus-summary-line-format-alist): Use + `mime-read-field', `std11-address-string' and + `std11-full-name-string' instead of + `gnus-extract-address-components'. + (gnus-article-sort-by-author): Likewise. + +1998-10-12 MORIOKA Tomohiko + + * lisp/nnheader.el (make-full-mail-header-from-decoded-header): + New function. + +1998-10-05 MORIOKA Tomohiko + + * lisp/gnus-art.el (gnus-article-display-mime-message): Set up + buffer local variable `default-mime-charset' of + `gnus-original-article-buffer' and `gnus-article-buffer'. + +1998-09-30 MORIOKA Tomohiko + + * lisp/nnheader.el: Use `mime-entity' as gnus-header structure. + (mail-header-number): Use `mime-entity-location-internal'. + (mail-header-set-number): Use `mime-entity-set-location-internal'. + - Change other `mail-header-*' and `mail-header-set-*' to alias of + reference and set functions for mime-entity-internal. + + * lisp/mmgnus.el: New module. + + * lisp/gnus-sum.el: Abolish variable + `gnus-structured-field-decoder' and + `gnus-unstructured-field-decoder'. + (gnus-nov-parse-line): Don't decode from and subject. + (gnus-get-newsgroup-headers): Likewise. + + * lisp/gnus-score.el (gnus-header-index): Modify to use + mime-entity structure as gnus-header structure. + + * lisp/gnus-art.el (gnus-article-prepare-display): Use content of + `gnus-current-headers' as mime-message-structure. + +1998-09-29 MORIOKA Tomohiko + + * lisp/gnus-sum.el (gnus-update-summary-mark-positions): Use + `make-full-mail-header'. + +1997-11-27 MORIOKA Tomohiko + + (gnus-parse-headers-hook): Use + `(gnus-set-summary-default-charset)' in default. + + +1998-10-21 Katsumi Yamaoka + + * lisp/gnus-xmas.el (gnus-tilde-pad-form): Guard for non string + symbol. + +1998-10-21 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.025. + (gnus-version): Fix supported version for FLIM and SEMI. + + * Sync up with Pterodactyl Gnus 0.36. + +1998-10-20 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.024. + Fix supported version for FLIM and SEMI. + + * Sync up with Pterodactyl Gnus 0.35. + +1998-10-17 Tatsuya Ichikawa + + * lisp/gnus-offline.el (gnus-offline-setup-needed-hooks): Change + message-send-hook to mime-edit-translate-hook. + + * lisp/pop3-fma.el (pop3-fma-init-message-hook): Change + message-send-hook to mime-edit-translate-hook. + + * lisp/message.el (message-save-drafts): New function to save + drafts in network code. + +1998-10-16 Katsumi Yamaoka + + * lisp/gnus-msg.el (gnus-message-setup-hook): Replace the default + value to `gnus-maybe-setup-default-charset'. + (gnus-maybe-setup-default-charset): New function. It is called + `message-maybe-setup-default-charset' at one time. + + * lisp/message.el (message-maybe-setup-default-charset): Abolished. + +1998-10-16 Tatsuya Ichikawa + + * TODO.ja: Update. + +1998-10-15 Keiichi Suzuki + + * lisp/gnus-spec.el (gnus-update-format-specifications): Force + update `gnus-format-specs' when `gnus-version' is differ from + saved version. + +1998-10-14 Katsumi Yamaoka + + * lisp/pop3-fma.el (pop3-fma-read-char-exclusive): New macro. Use + `next-command-event' instead of `read-char-exclusive' under XEmacs. + (pop3-fma-read-noecho): Use it. + +1998-10-13 Katsumi Yamaoka + + * lisp/nnheaderxm.el (nnheader-xmas-Y-or-n-p): New function. + It will be used for the substitute of `nnheader-Y-or-n-p' under + XEmacs. + + * lisp/nnheader.el (nnheader-Y-or-n-p): Rewrite for Emacs 19 or + later except for XEmacs. + +1998-10-12 Katsumi Yamaoka + + * lisp/uudecode.el: New file. + +1998-10-11 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.023. + Add version information for SEMI-1.9/FLIM-1.10. + + * Sync up with Pterodactyl Gnus 0.34. + +1998-10-10 Katsumi Yamaoka + + * lisp/gnus-msg.el (gnus-message-make-user-agent): Fix typo in doc + string. + +1998-10-07 Yoshiki Hayashi + + * lisp/nnagent.el (nnagent-open-server): Small bug fix. + +1998-10-07 Keiichi Suzuki + + * TODO.ja: New file. + +1998-10-06 Katsumi Yamaoka + + * lisp/message.el (message-mime-insert-article): Don't refer to + `mark' position. + + * lisp/message.el (message-mime-insert-article): If the optional + arg FULL-HEADERS is non-nil, include full headers when inserting. + +1998-10-06 Keiichi Suzuki + + * lisp/message.el (message-parameter-alist): New variable. + (message-startup-parameter-alist): New variable. + (message-fetch-reply-field): Get reply buffer with + `message-get-reply-buffer()'. + (message-yank-original): Ditto. + (message-eval-parameter): New function. + (message-get-reply-buffer): Ditto. + (message-get-original-reply-buffer): Ditto. + (message-mode): New buffer local variable + `message-parameter-alist'. + (message-setup): Set up `message-reply-buffer' from + `message-parameter-alist'. + (message-mime-insert-article): Get `Original message buffer' with + `message-get-original-reply-buffer' instead of + `gnus-original-article-buffer'. + Remove bogus header fields for forwarding message. + + * lisp/gnus-msg.el (gnus-setup-message): Setup + `message-startup-parameter-alist'. + +1998-10-05 Yoshiki Hayashi + + * lisp/gnus.el (gnus-info-filename): New variable. + (gnus-info-find-node): Use `gnus-info-filename' and + `current-language-environment'. + +1998-10-05 Katsumi Yamaoka + + * lisp/message.el (message-send-mail): Remove misplaced + `interactive'. + + * lisp/message.el (message-yank-original): Get back to the previous + state. + (message-fetch-reply-field): Ditto. + (message-setup): Ditto. + * lisp/gnus-msg.el (gnus-setup-message): Ditto. + +1998-10-05 Katsumi Yamaoka + + * lisp/gnus-draft.el: Remove some useless comments. + + * lisp/gnus-draft.el (gnus-draft-send-draft): Abolished. + +1998-10-05 Katsumi Yamaoka + + * lisp/message.el (message-yank-original): Use the value of + `message-reply-buffer' as a function if it is a function. + (message-fetch-reply-field): Ditto. + + * lisp/message.el (message-setup): Set the value of + `message-reply-buffer' if the variable + `gnus-message-get-reply-buffer' exists. + + * lisp/gnus-msg.el (gnus-setup-message): Bind + `gnus-message-get-reply-buffer' as the function + `gnus-copy-article-buffer'. + +1998-10-03 MORIOKA Tomohiko + + * lisp/gnus-draft.el (gnus-draft-send): Call + `message-send-news-function' or `message-send-mail-function' + instead of `message-send-and-exit'. + +1998-10-03 Katsumi Yamaoka + + * lisp/message.el (message-mode-map): Use `define-key' instead of + `substitute-key-definition' for `message-kill-buffer'. + +1998-10-03 Katsumi Yamaoka + + * lisp/message.el (message-make-user-agent): Replace with the + new code again. It is based on MORIOKA-san's code. + +1998-10-03 Katsumi Yamaoka + + * lisp/message.el (message-make-user-agent): Replace with the + new code. + + * lisp/gnus-msg.el (gnus-message-make-user-agent): New function. + + * lisp/gnus-msg.el (gnus-extended-version): Needn't be interactive. + + * lisp/gnus-msg.el (gnus-inviolable-extended-version): Abolished. + +1998-10-03 Katsumi Yamaoka + + * lisp/message.el (message-kill-buffer): Change the prompt string. + + * lisp/message.el (message-mode-map): Substitute key definition + from `kill-buffer' to `message-kill-buffer'. + +1998-10-03 Katsumi Yamaoka + + * lisp/gnus-msg.el (gnus-message-setup-hook): Set the default value + to `message-maybe-setup-default-charset'. + + * lisp/message.el (message-setup-hook): Move + 'message-maybe-setup-default-charset' to `gnus-message-setup-hook'. + +1998-10-02 Katsumi Yamaoka + + * lisp/message.el (message-kill-buffer): Refer to + `message-kill-buffer-query-function'. + + * lisp/message.el (message-kill-buffer-query-function): New user + option. + + * lisp/nnheader.el (nnheader-Y-or-n-p): New function. + +1998-10-01 Tatsuya Ichikawa + + * lisp/pop3-fma.el (pop3-fma-movemail): Bug fix. + Delete variable pop3-fma-movemail options. + Add new variabel pop3-fma-commandline-arguments. + +1998-10-01 Katsumi Yamaoka + + * lisp/message.el: Fix my stupid changes. + +1998-09-30 Katsumi Yamaoka + + * lisp/message.el (message-make-user-agent): Add the value of + `system-configuration' to Emacs and XEmacs as a comment. + + * lisp/message.el (message-make-user-agent): Fold up the return + value if the optional arg MAX-COLUMN is specified. + +1998-09-29 Katsumi Yamaoka + + * lisp/message.el (message-make-user-agent): Make a user-agent + string without MUA info, if the value of `message-user-agent' is + nil nor `gnus-inviolable-extended-version' is not exists. + +1998-09-28 Tatsuya Ichikawa + + * lisp/nnmh.el (nnmh-request-accept-article): Insert `Message-ID' + only if `group' name is neither "queue" nor "draft". + Fix typo (at 23:25). + + * lisp/message.el (message-send-mail): Add different Message-ID in + each message/partial + +1998-09-26 Katsumi Yamaoka + + * texi/gnus-ja.texi: Sync up with Semi-gnus 6.8.19. + + * lisp/gnus.el: Add autoload setting for + `gnus-quote-arg-for-sh-or-csh'. + +1998-09-26 Katsumi Yamaoka + + * lisp/gnus-sum.el (gnus-summary-insert-pseudos): Use + `gnus-quote-arg-for-sh-or-csh' instead of `mm-quote-arg'. + + * lisp/nndoc.el (nndoc-possibly-change-buffer): Don't eval + `mm-enable-multibyte'. + * lisp/nnmbox.el (nnmbox-possibly-change-newsgroup): Ditto. + +1998-09-25 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.022. + + * Sync up with Pterodactyl Gnus 0.32. + +1998-09-24 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.021. + + * Sync up with Pterodactyl Gnus 0.31. + +1998-09-23 Katsumi Yamaoka + + * lisp/message.el (message-make-user-agent): Add extended version + number to Emacs/{VERSION} (e.g. "Emacs/20.3.90"). + +1998-09-22 Tatsuya Ichikawa + + * lisp/gnus-agent.el (gnus-agent-expire): Bug fix when variable + expired is nil. + +1998-09-18 Tsukamoto Tetsuo + + * lisp/gnus-draft.el: (gnus-draft-edit-message): Fix typo. + +1998-09-17 Katsumi Yamaoka + + * lisp/message.el (message-make-user-agent): Use + `gnus-inviolable-extended-version' if `message-user-agent' is nil. + + * lisp/message.el (message-make-user-agent): In message-mode, make + the most of the `User-Agent' field value if already exists. + + * lisp/gnus-msg.el (gnus-inviolable-extended-version): New constant. + + * lisp/gnus-msg.el (gnus-extended-version): Remove trailing white + space. + +1998-09-17 Tsukamoto Tetsuo + + * lisp/gnus-draft.el (gnus-draft-send-draft): Expire queued message + after news posting. + +1998-09-17 Tatsuya Ichikawa + + * lisp/gnus-draft.el (gnus-draft-send-draft): Error if no + recipients. + +1998-09-17 Tsukamoto Tetsuo + + * lisp/gnus-draft.el (gnus-draft-decoding-function): Uncommented. + +1998-09-17 Tatsuya Ichikawa + + * lisp/gnus-draft.el (gnus-draft-edit-message): Use + `gnus-draft-setup-for-editing' instead of `gnus-draft-setup'. + (gnus-draft-send): Use `gnus-draft-setup-for-sending' instead of + `gnus-draft-setup'. + (gnus-draft-setup-for-editing): New function (renamed from + `gnus-draft-setup'). + (gnus-draft-setup-for-sending): New function. + (gnus-draft-send-draft-buffer): New variable. + +1998-09-16 Katsumi Yamaoka + + * texi/gnus-ja.texi: Sync up with Semi-gnus 6.8.18. + + * Makefile.in: Add entry `info-ja'. + * texi/Makefile.in: Add entry `ja'. + +1998-09-16 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.020. + + * lisp/ietf-drums.el: New file. + * lisp/date.el: Abolished. + * lisp/mm.el: Abolished. + + * Sync up with Pterodactyl Gnus 0.31. + +1998-09-14 Katsumi Yamaoka + + * lisp/message.el (message-encode-message-body): Copied from + Pterodactyl Gnus 0.30. It is useless for Semi-gnus but usefull for + reducing differences while at work for synchronizing up. It will + be removed when the Gnus becomes stable. + * lisp/gnus-art.el (gnus-mime-display-alternative) + (gnus-display-mime) (gnus-widget-press-button) + (gnus-insert-mime-button) (gnus-mime-copy-part) + (gnus-mime-view-part) (gnus-mime-pipe-part) (gnus-mime-save-part) + (gnus-mime-button-map) (gnus-mime-button-line-format-alist) + (gnus-mime-button-line-format) + (article-mime-decode-quoted-printable-buffer) + (article-de-quoted-unreadable) (article-decode-charset) + (article-decode-mime-words) (gnus-decode-header-function) + (gnus-display-mime-function): Ditto. + +1998-09-14 Katsumi Yamaoka + + * lisp/gnus-art.el (article-decode-encoded-words): Renamed from + `gnus-article-decode-rfc1522'. + + * lisp/mail-parse.el: New file. + * lisp/mm-view.el: New file. + * lisp/rfc2231.el: New file. + * texi/emacs-mime.texi: New file. + + * lisp/gnus.el (gnus-version-number): Update to 6.10.019. + + * Sync up with Pterodactyl Gnus 0.30. + +1998-09-11 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.018. + + * Sync up with Pterodactyl Gnus 0.26. + +1998-09-11 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.017. + + * lisp/gnus-art.el (gnus-show-mime) (gnus-summary-toggle-mime): + Revived. + + * lisp/gnus-mailcap.el: New file. Renamed from `mailcap.el'. + + * Sync up with Pterodactyl Gnus 0.25. + +1998-09-11 Katsumi Yamaoka + + * lisp/gnus-art.el (article-make-date-line): Add TZ value to + `local' and `ut' date. + + * lisp/gnus-art.el (article-make-date-line): Fix `ut' date. + + * lisp/parse-time.el (parse-time-string): The last element of the + return list should be TZ. + + * lisp/message.el (message-send): Eval 'message-fix-before-sending' + after encoding. + +1998-09-10 Katsumi Yamaoka + + * lisp/gnus-spec.el (gnus-tilde-pad-form): Use old macro form. + + * lisp/gnus-art.el (article-decode-mime-words): Abolished. + +1998-09-10 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.016. + + * Sync up with Pterodactyl Gnus 0.24. + +1998-09-09 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.015. + + * Sync up with Pterodactyl Gnus 0.23. + +1998-09-09 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.014. + + * Sync up with Pterodactyl Gnus 0.22. + +1998-09-08 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.013. + + * Sync up with Pterodactyl Gnus 0.19. + +1998-09-08 Tatsuya Ichikawa + + * lisp/gnus-draft.el (gnus-draft-send-draft) (gnus-draft-send): New + implementations for testing. + + * lisp/gnus-agent.el (gnus-agent-expire) (gnus-agent-fetch-headers) + (gnus-agent-flush-cache) (gnus-agent-save-history) + (gnus-agent-save-groups): Bind `coding-system-for-write' by + `gnus-agent-file-coding-system' while writing a file. + + * lisp/gnus-agent.el (gnus-agent-file-coding-system): Renamed from + `gnus-agent-article-file-coding-system'. + +1998-09-08 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.012. + + * Sync up with Pterodactyl Gnus 0.18. + +1998-09-07 Tatsuya Ichikawa + + * lisp/gnus-draft.el (gnus-draft-setup): Do not use message mode. + (gnus-draft-send): Ditto. + gnus-draft-send-draft-buffer: New variable. + + * lisp/gnus-msg.el (gnus-extended-version): Display original Gnus + version. + + * lisp/gnus-agent.el : Use pGnus 0.17 gnus-agent.el + +1998-09-07 Katsumi Yamaoka + + * lisp/gnus.el (gnus-continuum-version): Use `char-int' instead of + `mm-char-int'. + * lisp/messagexmas.el (message-xmas-make-caesar-translation-table): + Ditto. + + * lisp/gnus-art.el (gnus-article-setup-buffer): Don't use + `mm-enable-multibyte'. + +1998-09-07 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.011. + + * Sync up with Pterodactyl Gnus 0.17. + +1998-09-06 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.10.010. + + * Sync up with Pterodactyl Gnus 0.16. + +1998-09-04 Tatsuya Ichikawa + + * lisp/pop3-fma.el (pop3-fma-movemail): Add error handle. + (pop3-fma-get-movemail-type): Fix typo. + +1998-09-04 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.9.09. + + * Sync up with Pterodactyl Gnus 0.14. + +1998-09-03 Katsumi Yamaoka + + * lisp/nndoc.el (nndoc-transform-mime-parts): Insert + "MIME-Version:" instead of "Mime-Version:". + + * lisp/message.el (message-encode-message-body): Abolished. + + * lisp/message.el: Don't require `rfc2047'. + + * lisp/gnus.el: Delete autoload settings for `qp' and `rfc2047'. + + * lisp/gnus.el (semi-gnus-developers): New constant. + + * lisp/gnus.el (gnus-version-number): Update to 6.9.08. + + * lisp/gnus-xmas.el (gnus-tilde-pad-form): Move to + `gnus-xmas-redefine' from `gnus-xmas-define'. + + * lisp/gnus-sum.el (gnus-set-mode-line): Use `gnus-truncate-string' + instead of `truncate-string'. + + * lisp/gnus-sum.el: Don't define menu for "MIME". + + * lisp/gnus-sum.el: Delete key definitions for + `gnus-article-decode-mime-words' and `gnus-article-decode-charset'. + + * lisp/gnus-spec.el (gnus-tilde-pad-form): New function for the + benefit of avoiding byte-compile warning. + + * lisp/gnus-soup.el (gnus-soup-send-packet): Set + `message-user-agent' instead of `message-newsreader'. + + * lisp/message.el (message-set-work-buffer) (message-mode): Don't + use `mm-enable-multibyte'. + * lisp/gnus-util.el (gnus-set-work-buffer): Ditto. + * lisp/gnus-sum.el (gnus-summary-mode): Ditto. + * lisp/gnus-msg.el (gnus-copy-article-buffer): Ditto. + * lisp/gnus-art.el (gnus-article-mode): Ditto. + + * lisp/gnus-art.el (gnus-article-decode-mime-words) + (gnus-article-decode-charset) (gnus-decode-rfc1522) + (article-decode-rfc1522) (article-de-quoted-unreadable) + (article-mime-decode-quoted-printable-buffer): Abolished. + + * lisp/message.el: Don't require `mm-bodies'. + * lisp/gnus-art.el: Ditto. + + * lisp/gnus-agent.el (gnus-category-line-format-alist): Change + variable name `name' and `groups' to `gnus-tmp-name' and + `gnus-tmp-groups'. + (gnus-category-insert-line): Ditto. + + * lisp/gnus-agent.el (gnus-agent-fetch-articles): Delete useless + binding variables. + +1998-09-01 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.9.07. + + * Sync up with Pterodactyl Gnus 0.13. + +1998-08-31 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.9.04. + + * Sync up with Pterodactyl Gnus 0.10. + + * lisp/gnus-agent.el : back to version Gnus 5.6.32. + +1998-08-31 Katsumi Yamaoka + + * lisp/rfc1522.el: Abolished. + + * lisp/message.el: (message-send-mail) (message-send-news): Don't + use `mm-encode-message-header'. + + * lisp/gnus.el: Delete autoload settings for + `hexl-hex-string-to-integer', `mm-decode-words-region', + `mm-decode-words-string', `gnus-hack-decode-rfc1522', + `gnus-article-de-quoted-unreadable', `gnus-decode-rfc1522' and + `article-decode-rfc1522'. + + * lisp/gnus-sum.el: Delete key definitions for + `gnus-article-decode-mime-words', `gnus-article-decode-mime-words' + and `gnus-article-de-quoted-unreadable'. + + * lisp/gnus-art.el (gnus-article-decode-mime-words) + (gnus-decode-rfc1522) (article-de-quoted-unreadable) + (article-mime-decode-quoted-printable-buffer): Abolished. + + * lisp/gnus.el (gnus-version-number): Update to 6.9.03. + + * Sync up with Pterodactyl Gnus 0.9. + +1998-08-31 Tatsuya Ichikawa + + * lisp/gnus-agent.el: Do not use nnheader-temp-write. + + * lisp/gnus-ems.el: Do not use nnheader-temp-write. + + * lisp/gnus.el (gnus-version-number): Update to 6.9.02. + + * Sync up with Pterodactyl Gnus 0.8. + +1998-08-30 Tatsuya Ichikawa + + * New branch ... pgnus-ichikawa + + * lisp/gnus.el (gnus-original-version-number) + (gnus-original-product-name) : New variable. + + * lisp/gnus.el (gnus-version-number): Update to 6.9.01. + Third version number 0x means Original gnus's status in beta version. + + * Sync up with Pterodactyl Gnus 0.6. + +1998-08-30 Tatsuya Ichikawa + + * lisp/gnus-agent.el (gnus-agent-fetch-headers): Bug Fix. + When add a new newsgroup , gnus-agent cannot fetch articles. + + * lisp/gnus.el (gnus-version-number): Update to 6.8.17. + + * Sync up with Gnus 5.6.42. + +1998-08-28 Shuhei KOBAYASHI + + * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Try + "qualified" newsgroup name first. + +1998-08-28 Shuhei KOBAYASHI + + * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Match + "real" newsgroup name; strip "backend+server" prefix. + +1998-08-28 Katsumi Yamaoka + + * lisp/message.el (message-make-user-agent): New function. + (message-generate-headers): Use it. + These changes are copied from Shoe-gnus. + +1998-08-28 Shuhei KOBAYASHI + + * lisp/message.el (message-make-in-reply-to): + Use `std11-extract-address-components'. + (message-use-mail-reply-to): Doc fix. + +1998-08-27 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.16. + + * Sync up with Gnus 5.6.41. + +1998-08-26 Katsumi Yamaoka + + * lisp/gnus-spec.el (gnus-parse-simple-format): Use + `gnus-tilde-pad-form' instead of the padding faculty of `format' + under XEmacs-mule. + + * lisp/gnus-xmas.el + (gnus-xmas-redefine): Redifine `gnus-truncate-string', + `gnus-tilde-max-form' and `gnus-tilde-cut-form' for XEmacs-mule. + (gnus-xmas-define): New function 'gnus-tilde-pad-form' for + XEmacs-mule. + +1998-08-26 Shuhei KOBAYASHI + + * lisp/gnus-art.el (gnus-article-narrow-to-signature): + Removed TM stuff. + (gnus-article-display-mime-message): + Set `mime-button-mother-dispatcher' in correct buffer. + (gnus-url-mailto): Use `gnus-setup-message'. + (gnus-button-mailto): Ditto. + (gnus-button-reply): Ditto. + + * lisp/gnus-ems.el (gnus-mule-max-width-function): Removed. + (gnus-truncate-string): Use `truncate-string-to-width' if available. + (gnus-tilde-max-form): New implementation. + (gnus-tilde-cut-form): Ditto. + + * lisp/gnus-msg.el (gnus-summary-mail-digest): New function. + (gnus-summary-post-digest): New function. + + * lisp/gnus-sum.el (gnus-summary-make-menu-bar): Use + `gnus-summary-mail-digest' and `gnus-summary-post-digest' instead + of `gnus-uu-digest-mail-forward' and `gnus-uu-digest-post-forward'. + + * lisp/gnus-util.el (gnus-truncate-string): Ignore more than two + arguments. + + * lisp/message.el (message-forward-end-separator): Use + `text/plain' tag. + +1998-08-25 Tatsuya Ichikawa + + * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Write + file in raw-text coding system. + (gnus-cache-save-buffers): Ditto. + * lisp/gnus-cache.el (gnus-cache-write-file-coding-system): New variable. + * lisp/gnus-util.el (gnus-write-buffer): Undo change. + + * lisp/gnus-util.el (gnus-write-file-coding-system): Delete variable. + +1998-08-25 Shuhei KOBAYASHI + + * lisp/gnus-msg.el (gnus-bug-message): About Semi-gnus. + (gnus-extended-version): Return gnus version only. + (gnus-bug): Add Semi-gnus developers to recipients. + + * lisp/message.el (message-make-user-agent): New function. + (message-generate-headers): Use it. + +1998-08-24 Tatsuya Ichikawa + + * lisp/gnus-offline.el (gnus-offline-setup): Bug fix and version + changed to 1.53. + + * lisp/gnus-util.el (gnus-write-buffer): Write file in raw-text coding + system. + + * lisp/gnus-util.el (gnus-write-file-coding-system): New variable. + +1998-08-23 Shuhei KOBAYASHI + + * lisp/message.el: Suppress some byte-compile warnings. + (message-make-forward-subject): Failed to sync. + (message-setup): Ditto. + (message-clone-locals): Modify regexp. + + * lisp/message.el (message-fill-references): Reverted. + +1998-08-23 Shuhei KOBAYASHI + + * lisp/gnus-agent.el (gnus-agent-braid-nov): Use + `nnheader-insert-file-contents'. + + * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Sync up + with "akr" branch. + +1998-08-23 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.15. + + * Sync up with Gnus 5.6.39. + +1998-08-20 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.14. + + * Sync up with Gnus 5.6.38. + + * lisp/gnus-offline.el (gnus-offline-enable-fetch-mail): Enable to get + APOP server. + + * lisp/pop3-fma.el (pop3-fma-movemail): Enable to get from APOP server. + (pop3-fma-set-pop3-password) Enable to get from APOP server. + +1998-08-16 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.13. + + * Sync up with Gnus 5.6.37. + + * lisp/gnus-offline.el (gnus-offline-setup) : To create spol directory + if not exists. + Change default value of gnus-offline-drafts-queue-type 'miee to 'agent + +1998-08-16 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.12. + + * Sync up with Gnus 5.6.36. + + * lisp/gnus-offline.el : New file. + Merge gnus-offline to ichikawa branch. + +1998-08-15 Yoshiki Hayashi + + * texi/gnus-ja.texi: Update. + +1998-08-14 Katsumi Yamaoka + + * lisp/gnus-start.el (gnus-save-newsrc-file): Bind + `coding-system-for-write' by `gnus-startup-file-coding-system' + while saving the quick newsrc file. + + * lisp/gnus-start.el (gnus-startup-file-coding-system): Change + default value to `ctext'. + +1998-08-13 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.11. + + * Sync up with Gnus 5.6.34. + +1998-08-12 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.10. + + * Sync up with Gnus 5.6.33. + +1998-08-11 Keiichi Suzuki + + * lisp/message.el (message-frames): New custom group. + (message-original-frame): New variable. + (message-use-multi-frames): New variable. + (message-delete-frame-on-exit): New variable. + (message-send-and-exit): Delete frame which made for editing + message. + (message-kill-buffer): Ditto. + (message-delete-frame): New function. + (message-pop-to-buffer): Make new frame when edit message. + +1998-08-11 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.9. + + * Sync up with Gnus 5.6.31. + +1998-08-10 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.8. + + * Sync up with Gnus 5.6.30. + +1998-08-10 Shuhei KOBAYASHI + + * lisp/gnus.el (gnus-version-number): Update to 6.8.7. + +1998-08-06 Katsumi Yamaoka + + * lisp/smtp.el: Do not insert empty line at the end of message. + +1998-08-06 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.6. + + * Sync up with Gnus 5.6.29. + +1998-08-05 Tatsuya Ichikawa + + * lisp/gnus-start.el (gnus-read-init-file): Fix indent. + * lisp/gnus-ems.el (gnus-tilde-max-form): Redefine instead of + (gnus-summary-line-format-spec) to display Japanese character + correctly in Gnus summaly. + +1998-08-05 Keiichi Suzuki + + * lisp/gnus-start.el (gnus-read-init-file): Don't restrict + `coding-system-for-read' by `binary' when loading `.gnus'. + +1998-08-04 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.5. + + * Sync up with Gnus 5.6.28. + +1998-07-27 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.4. + + * Sync up with Gnus 5.6.27. + +1998-07-27 Yoshiki Hayashi + + * texi/message-ja.texi: Japanese translation of "message.texi". + +1998-07-26 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.8.3. + + * Sync up with Gnus 5.6.26. + +1998-07-23 Shuhei KOBAYASHI + + * lisp/gnus.el (gnus-version-number): Update to 6.8.2. + (gnus-version): Change to "Semi-gnus". Change comment format. + +1998-07-21 Keisuke Mori + + * texi/gnus-ja.texi: Add "Appendices". + +1998-07-21 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "Appendices". + +1998-07-16 Shuhei KOBAYASHI + + * lisp/gnus.el (gnus-version-number): Update to 6.8.1. + + * Sync up with Gnus 5.6.24. + +1998-07-10 Keiichi Suzuki + + * lisp/gnus-ems.el (gnus-mule-cite-add-face): Fix problem when multi + bytes charactors are used in cite prefix. (for Emacs 20.1 and 20.2) + (gnus-ems-redefine): for Emacs 20.1 and 20.2 + + * lisp/gnus-cite.el (gnus-cite-add-face): Abolish my last bogus change. + +1998-07-09 Keiichi Suzuki + + * lisp/gnus-cite.el (gnus-cite-add-face): Fix problem when multi + bytes charactors are used in cite prefix. + +1998-07-07 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "The End". + +1998-07-06 Keisuke Mori + + * texi/gnus-ja.texi: Add "Various". + +1998-07-06 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "Various". + * texi/gnus-ja.texi: Sync up with Gnus 5.6.22 + +1998-07-02 MORIOKA Tomohiko + + * lisp/message.el (message-header-format-alist): Repair to use + `message-fill-references' for References. + +1998-07-01 MORIOKA Tomohiko + + * lisp/gnus-art.el (gnus-article-header-presentation-method): + Delete nil optional arguments. + - Delete setting for `mime-raw-representation-type-alist'. + +1998-07-01 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.8.0. + (gnus-version): Modify for FLIM 1.8. + + * lisp/gnus-art.el (gnus-article-header-presentation-method): + Modify for FLIM 1.8. + +1998-06-30 Keisuke Mori + + * texi/gnus-ja.texi: Add "Scroing". + +1998-06-30 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "Scoring". + +1998-06-30 Tatsuya Ichikawa + + * Sync up with Gnus 5.6.22 + * lisp/gnus.el (gnus-version-number): Update to 6.7.8. + * lisp/pop3-fma.el : Enable to get localhost mail spool. + +1998-06-29 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.7.7. + + * lisp/gnus-art.el (gnus-article-prepare): Set up + `gnus-article-current-summary' of gnus-article-buffer. + (gnus-request-article-this-buffer): Don't set up + `gnus-article-current-summary'. + +1998-06-27 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.7.6. + +1998-06-27 MORIOKA Tomohiko + + * lisp/gnus-art.el (gnus-mime-preview-quitting-method): Renamed + from `mime-preview-quitting-method-for-gnus'. + +1998-06-27 MORIOKA Tomohiko + + * lisp/gnus-sum.el (gnus-summary-preview-mime-message): New + implementation. + + * lisp/gnus-art.el (mime-preview-quitting-method-for-gnus): Use + `gnus-article-show-summary' is `gnus-show-mime' is not nil. + +1998-06-27 MORIOKA Tomohiko + + * texi/ChangeLog, texi/gnus.texi, texi/message.texi, + lisp/ChangeLog, lisp/gnus.el, lisp/nngateway.el, lisp/nnfolder.el, + lisp/message.el, lisp/gnus-sum.el, lisp/gnus-soup.el: Sync up with + Gnus 5.6.20. + +1998-06-26 MORIOKA Tomohiko + + * README, texi/ChangeLog, texi/gnus.texi, texi/message.texi, + lisp/ChangeLog, lisp/nnweb.el, lisp/nnmail.el, lisp/nndoc.el, + lisp/message.el, lisp/lpath.el, lisp/gnus.el, lisp/gnus-util.el, + lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-score.el, + lisp/gnus-group.el, lisp/gnus-ems.el, lisp/gnus-demon.el, + lisp/gnus-art.el: Sync up with Gnus 5.6.16. + +1998-06-26 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.7.3. + + * lisp/gnus-sum.el (gnus-summary-move-article): Use + `gnus-request-article-this-buffer'. + (gnus-request-partial-message): Likewise. + + * lisp/gnus-art.el (gnus-article-prepare): Use + `gnus-request-article-this-buffer'. + (gnus-request-article-this-buffer): Renamed from + `gnus-request-original-article'; abolish conventional + implementation. + - Abolish unused setting for `mime-view-show-summary-method'. + +1998-06-26 MORIOKA Tomohiko + + * readme, texi/ChangeLog, texi/gnus.texi, texi/message.texi, + lisp/ChangeLog, lisp/gnus.el, lisp/nnmail.el, lisp/nnheader.el, + lisp/nngateway.el, lisp/nnfolder.el, lisp/nnagent.el, + lisp/message.el, lisp/gnus-sum.el, lisp/gnus-score.el, + lisp/gnus-salt.el, lisp/gnus-msg.el, lisp/gnus-cus.el, + lisp/gnus-cache.el, lisp/gnus-art.el: Sync up with Gnus 5.6.15. + +1998-06-24 MORIOKA Tomohiko + + * texi/gnus.texi, texi/message.texi, texi/ChangeLog: Sync up with + Gnus 5.6.13. + +1998-06-14 Tatsuya Ichikawa + + * Sync up with Gnus 5.6.13. + +1998-06-24 MORIOKA Tomohiko + + * lisp/gnus-art.el (gnus-article-display-mime-message): Don't + `save-excursion'. + (gnus-article-prepare): Use `mime-fetch-field' instead of + `mime-entity-fetch-field'. + +1998-06-19 MORIOKA Tomohiko + + * lisp/gnus-art.el (gnus-article-display-mime-message): Use + `mime-display-message' instead of `mime-view-buffer'. + (gnus-article-display-traditional-message): Set + `gnus-article-buffer'. + (gnus-article-display-message-with-encoded-word): Modify for + `gnus-article-display-traditional-message'. + (gnus-article-prepare): Use `mime-parse-buffer' and + `mime-entity-fetch-field'; don't set gnus-article-buffer. + +1998-06-19 MORIOKA Tomohiko + + * lisp/gnus-sum.el (gnus-summary-move-article): Use + `gnus-request-original-article' instead of + `gnus-request-article-this-buffer'. + +1998-06-19 MORIOKA Tomohiko + + * texi/gnus-ja.texi, texi/gnus.texi (Using MIME): Modify + description about new display mechanism. + +1998-06-19 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.6.0. + (gnus-version): Modify for this branch. + + * lisp/gnus-art.el (gnus-article-display-method-for-mime): New + variable; abolish `gnus-show-mime-method'. + (gnus-article-display-method-for-encoded-word): New variable; + abolish `gnus-decode-encoded-word-method'. + (gnus-article-display-method-for-traditional): New variable. + (gnus-article-display-mime-message): New function; abolish + `gnus-article-preview-mime-message'. + (gnus-article-display-traditional-message): New function. + (gnus-article-display-message-with-encoded-word): New function; + abolish `gnus-article-decode-encoded-word'. + (gnus-article-prepare): Change display mechanism; use + `gnus-request-original-article' instead of + `gnus-request-article-this-buffer'. + (gnus-request-original-article): New function. + +1998-06-22 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.6.0. + (gnus-version): Modify for SEMI 1.8. + + * lisp/gnus-sum.el: Modify for interface change in SEMI 1.8 about + automatic message/partial combining. + +1998-06-19 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.5.0. + (gnus-version): Modify for SEMI 1.7. + + * lisp/gnus-sum.el: Rename + `mime-method-to-combine-message/partial-pieces' to + `mime-combine-message/partial-pieces-automatically'. + + * lisp/gnus-art.el (gnus-article-preview-mime-message): Use + `mime-view-buffer'. + (gnus-article-decode-encoded-word): Fix DOC-string. + (gnus-article-header-presentation-method): New function; abolish + `gnus-content-header-filter'. + Modify for SEMI 1.7. + +1998-06-18 Keisuke Mori + + * texi/gnus-ja.texi: Add "Select Methods". + +1998-06-18 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "Select Methods". + +1998-06-17 Tatsuya Ichikawa + + * lisp/pop3-fma.el: Small bug fix. + + * lisp/pop3-fma.el: Delete variable pop3-fma-cypher-key + Use base64-encode-string , base64-decode-string instead. + Both change by Yasuo OKABE + +1998-06-13 Tatsuya Ichikawa + + * lisp/pop3-fma.el: New function pop3-fma-cypher-string + New variable pop3-fma-cypher-key + +1998-06-12 Shuhei KOBAYASHI + + * lisp/message.el (message-required-news-headers): `X-Newsreader' + was replaced by `User-Agent'. + (message-required-mail-headers): `X-Mailer' was replaced by + `User-Agent'. + (message-header-format-alist): `X-Mailer' and `X-Newsreader' were + replaced by `User-Agent'. + (message-generate-headers): Ditto. + + (message-user-agent): New variable. + (message-newsreader): Replaced by `message-user-agent'. + (message-mailer): Ditto. + (message-mode): `message-mailer' and `message-newsreader' were + replaced by `message-user-agent'. + + * lisp/gnus-msg.el (gnus-inews-add-send-actions): `message-mailer' + and `message-newsreader' were replaced by `message-user-agent'. + (gnus-extended-version): Generate "PRODUCT/VERSION" style strings. + + * lisp/gnus-soup.el (gnus-soup-send-packet): `message-mailer' and + `message-newsreader' were replaced by `message-user-agent'. + +1998-06-07 MORIOKA Tomohiko + + * lisp/gnus-art.el: Delete setting for + `article-de-quoted-unreadable' and + `article-mime-decode-quoted-printable' because they have been + already abolished. + +1998-06-07 MORIOKA Tomohiko + + * texi/gnus-ja.texi: Sync up with latest gnus.texi. + + * texi/gnus.texi: Modify for Semi-gnus 6.4.0. + +1998-06-06 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-extract-address-components): Add + `std11-extract-address-components' as a choice. + +1998-06-06 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "Composing Messages". + +1998-06-04 MORIOKA Tomohiko + + * lisp/gnus-ems.el (gnus-ems-redefine): Must require 'path-util + before call `module-installed-p'. + + * lisp/gnus.el (gnus-version-number): Update to 6.4.0. + (gnus-version): Modify for SEMI 1.5. + + * lisp/gnus-art.el: Modify for SEMI 1.5 API. + +1998-06-04 Tatsuya Ichikawa + + * lisp/pop3-fma.el: New file. To handle multiple POP account. + + * lisp/gnus.el (gnus-version-number): Update to 6.3.4. + And fix typo 5.6.10 -> 5.6.11. + +1998-06-03 Shuhei KOBAYASHI + + * lisp/gnus.el (gnus-version-number): Update to 6.3.3. + + * Sync up with Gnus 5.6.11. + +1998-06-03 Keisuke Mori + + * texi/gnus-ja.texi: Add "The Article Buffer". + +1998-06-03 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "The Summary Buffer". + +1998-06-02 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-version-number): Update to 6.3.2. + + * Sync up with Gnus 5.6.10. + +1998-05-30 Shuhei KOBAYASHI + + * README.semi: Add description of `shuhei-k' branch. + +1998-05-17 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.3.1. + +1998-05-17 MORIOKA Tomohiko + + * lisp/gnus-util.el (gnus-output-to-rmail): Guard as binary. + + * lisp/gnus-util.el (gnus-output-to-mail): Guard as binary. + +1998-04-24 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "The Active File". + +1998-05-04 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.3.0. + (gnus-version): Modify for SEMI 1.4. + + * lisp/gnus-sum.el: Use 'mime-add-condition to set up + acting-condition. + +1998-05-04 MORIOKA Tomohiko + + * lisp/lpath.el: Must add "flim" instead of "mel" to load-path. + +1998-05-03 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.2.5. + + * texi/gnus.texi, lisp/ChangeLog: Sync up with Gnus v5.6.9. + + * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el, + lisp/gnus-msg.el, lisp/gnus-draft.el, lisp/gnus-agent.el: Sync up + with Gnus v5.6.9. + +1998-04-30 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.2.4. + + * texi/gnus.texi, lisp/ChangeLog: Sync up with Gnus 5.6.7. + + * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el, + lisp/gnus-msg.el, lisp/gnus-cache.el, lisp/gnus-art.el: Sync up + with Gnus 5.6.7. + +1998-04-28 Shuhei KOBAYASHI + + * lisp/gnus.el (gnus-version-number): Update to 6.2.3. + + * Sync up with Gnus 5.6.6. + +1998-04-27 MORIOKA Tomohiko + + * lisp/nnheader.el: Sync up with Gnus 5.6.5. + +1998-04-26 Shuhei KOBAYASHI + + * lisp/gnus.el (gnus-version-number): Update to 6.2.2. + + * Sync up with Gnus 5.6.5. + + * texi/custom.texi, texi/widget.texi: Removed from Semi-gnus. + +1998-04-25 MORIOKA Tomohiko + + * README.semi (How to get? (via CVS)): Modify descriptions about + TAG. + +1998-04-23 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.2.1. + +1998-04-23 MORIOKA Tomohiko + + * lisp/message.el (message-make-forward-subject): Use + `eword-decode-unstructured-field-body' for subject. + + * lisp/gnus-msg.el (gnus-summary-mail-forward): Make local + variable `default-mime-charset' of `gnus-original-article-buffer' + and set up by `default-mime-charset' of `gnus-summary-buffer'. + +1998-04-23 MORIOKA Tomohiko + + * texi/gnus-ja.texi: Fix typos. + + * texi/gnus.texi: Modify for Semi-gnus. + +1998-04-23 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "Auto Save". + +1998-04-22 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "Startup Files". + +1998-04-21 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.2.0. + (gnus-version): Modify for SEMI 1.3. + + * lisp/gnus-sum.el: Use 'ctree-set-calist-strictly instead of + 'set-atype to set up for 'mime-acting-condition. + +1998-04-21 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "Changing Servers". + +1998-04-20 MORIOKA Tomohiko + + * texi/gnus-ja.texi: Modify styles. + + * texi/gnus.texi: Modify for Semi-gnus (sync up with + gnus-ja.texi). + +1998-04-20 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "New Groups". + +1998-04-20 Yoshiki Hayashi + + * texi/gnus-ja.texi: Modify styles. + +1998-04-18 MORIOKA Tomohiko + + * texi/gnus-ja.texi: Check and modify for Semi-gnus. + +1998-04-18 Yoshiki Hayashi + + * texi/gnus-ja.texi: New file. + +1998-04-19 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.1.3. + +1998-04-19 MORIOKA Tomohiko + + * lisp/gnus-art.el (gnus-following-method): New function; set up + for 'mime-view-following-method-alist. + +1998-04-18 MORIOKA Tomohiko + + * texi/gnus.texi: Add and modify description for Semi-gnus. + +1998-04-16 MORIOKA Tomohiko + + * texi/gnus.texi: "Gnus 5.6.4" -> "Semi-gnus 6.1.2". + (Top): "Gnus" -> "gnus". + (Starting Up): "Gnus" -> "gnus". + +1998-04-10 Shuhei KOBAYASHI + + * lisp/ChangeLog, lisp/gnus-agent.el: Sync up with Gnus 5.6.4. + +1998-04-08 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.1.2. + (gnus-version): Include corresponding SEMI version. + + * lisp/gnus.el, lisp/nnkiboze.el, lisp/message.el, + lisp/gnus-sum.el, lisp/gnus-agent.el: Sync up with Gnus 5.6.4. + +1998-03-27 Shuhei KOBAYASHI + + * README.semi: Change descriptions of sending bug report. + +1998-03-20 Shuhei KOBAYASHI + + * lisp/gnus.el (gnus-version-number): Update to 6.1.1. + (gnus-version): Include corresponding SEMI version. + + * Sync up with Gnus 5.6.3. + +1998-03-15 Shuhei KOBAYASHI + + * lisp/gnus-agent.el (gnus-agent-crosspost): Use + `nnheader-insert-file-contents'. + (gnus-agent-braid-nov): Ditto. + (gnus-agent-expire): Ditto. + + * lisp/gnus-cache.el (gnus-cache-request-article): Ditto. + (gnus-cache-retrieve-headers): Ditto. + (gnus-cache-change-buffer): Ditto. + (gnus-cache-braid-nov): Ditto. + + * lisp/gnus-sum.el (gnus-summary-import-article): Ditto. + + * lisp/nnkiboze.el (nnkiboze-retrieve-headers): Ditto. + + * lisp/message.el (message-generate-headers): Fix regexp. + (cf. [semi-gnus-ja:107]) + +1998-03-14 MORIOKA Tomohiko + + * lisp/gnus-art.el: Add setting for + `mime-raw-buffer-coding-system-alist'. + +1998-03-13 MORIOKA Tomohiko + + * lisp/gnus-art.el: Rename `mime-view-quitting-method-for-gnus' -> + `mime-preview-quitting-method-for-gnus'. + + * lisp/gnus-art.el: Rename `mime-view-quitting-method-alist' -> + `mime-preview-quitting-method-alist'. + + * lisp/gnus-art.el: Rename `mime-view-kill-buffer' -> + `mime-preview-kill-buffer'. + + * lisp/gnus.el (gnus-version-number): Update to 6.0.10. + + * lisp/gnus-sum.el: Add code to check latest SEMI. + (mime-acting-condition): Separate type and subtype; rename + `mime-combine-message/partials-automatically' -> + `mime-method-to-combine-message/partial-pieces'. + +1998-03-08 Shuhei KOBAYASHI + + * lisp/gnus.el (gnus-version-number): Update to 6.0.9. + + * README.semi (How to get?): Add description of daily snapshot. + (How to join development): Change mailing list command address. + + * Sync up with Gnus 5.6.2. + +1998-03-01 Tatsuya Ichikawa + + * lisp/gnus-ems.el: Change variable name + gnus-bdf-image-file to gnus-mule-bitmap-image-file. + +1998-02-28 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.0.8. + + * lisp/gnus.el: Sync up with qgnus-0.34. + +1998-02-28 MORIOKA Tomohiko + + * lisp/message.el: Sync up with qgnus-0.33. + + * lisp/gnus-ems.el (gnus-bdf-image-file): New variable; moved from + gnus.el. + (gnus-mule-group-startup-message): New function; moved and renamed + from `gnus-group-startup-message' of gnus.el. + + * lisp/gnus.el, lisp/gnus-sum.el, lisp/gnus-art.el, + lisp/gnus-agent.el: Sync up with qgnus-0.33. + +1998-02-28 Tatsuya Ichikawa + + * lisp/gnus.el (gnus-bdf-image-file): New variable. + (gnus-mule-group-startup-message): Display bitmap image using + bitmap.el running with Emacs 20. + + * lisp/gnus-agent.el (gnus-agent-fetch-headers): Fix problem when + Xref field is not exist. + +1998-02-26 MORIOKA Tomohiko + + * README.semi (How to join development): Modify for Semi-gnus + mailing list. + + * lisp/gnus.el (gnus-version-number): Update to 6.0.7. + + * lisp/gnus.el (gnus-article-display-hook): Delete + `gnus-article-de-quoted-unreadable' from options. + + * lisp/gnus-sum.el (gnus-article-make-menu-bar): Delete key for + `gnus-article-de-quoted-unreadable'. + (gnus-summary-make-menu-bar): Delete menu for + `gnus-article-de-quoted-unreadable'. + + * lisp/gnus-art.el (gnus-article-make-menu-bar): Delete menu for + `gnus-article-de-quoted-unreadable'. + +1998-02-24 MORIOKA Tomohiko + + * lisp/gnus.el, lisp/message.el: Sync up with qgnus-0.32. + +1998-02-23 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.0.6. + + * lisp/message.el (message-fill-references): Abolish unused local + variables. + + * lisp/pop3.el, lisp/message.el, lisp/gnus.el, lisp/gnus-sum.el, + lisp/gnus-art.el: Sync up with qgnus-0.31. + + * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el, + lisp/gnus-art.el: Sync up with qgnus-0.30. + +1998-02-20 Christophe Broult + + * README.semi (How to get?): The command `update' must come before + `-r semi-gnus'. (cf. [tm-en:1559]) + +1998-02-17 MORIOKA Tomohiko + + * lisp/gnus.el: Sync up with qgnus-0.29. + + * lisp/gnus.el, lisp/message.el: Sync up with qgnus-0.28. + + * lisp/message.el: Abolish variable + `message-references-generator'. Abolish function + `message-generate-filled-references', + `message-generate-folded-references' and + `message-generate-unfolded-references'. + (message-reply): Don't use `message-references-generator'. + (message-followup): Don't use `message-references-generator'. + + (message-fill-references): New function. + (message-header-format-alist): Use `message-fill-references' for + References. + +1998-02-17 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.0.5. + +1998-02-17 MORIOKA Tomohiko + + * lisp/gnus-sum.el: Check SEMI-0.118.2 (Otomaru) or later. + (gnus-structured-field-decoder): Use + `eword-decode-and-unfold-structured-field'. + + * lisp/gnus-art.el (gnus-article-decode-rfc1522): Use charset + conversion option of `eword-decode-header'. + (gnus-article-decode-encoded-word): Use charset conversion option + of `eword-decode-header'; use `gnus-run-hooks'. + (gnus-content-header-filter): Use charset conversion option of + `eword-decode-header'. + + * README.semi (How to get?): Should specify "-r semi-gnus". + +1998-02-16 MORIOKA Tomohiko + + * lisp/gnus-art.el (gnus-article-decode-rfc1522): Decode header by + localized code. + +1998-02-16 MORIOKA Tomohiko + + * lisp/gnus-msg.el: Delete commented-out function + `gnus-inews-insert-mime-headers'. + + * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el, + lisp/gnus-art.el: Sync up with qgnus-0.27. + +1998-02-16 MORIOKA Tomohiko + + * lisp/nnheader.el: Use original. + + * lisp/gnus.el, lisp/pop3.el, lisp/message.el, lisp/gnus-sum.el, + lisp/gnus-msg.el, lisp/gnus-draft.el, lisp/gnus-art.el: Sync up + with qgnus-0.26. + +1998-02-15 MORIOKA Tomohiko + + * lisp/nnmail.el, lisp/nnmh.el: Use original. + + * lisp/gnus.el, lisp/gnus-draft.el, lisp/gnus-sum.el, + lisp/message.el, lisp/gnus-art.el: Sync up with qgnus-0.25. + +1998-02-11 Shuhei Kobayashi + + * texi/message.texi, texi/gnus.texi, texi/ChangeLog, + lisp/message.el, lisp/gnus.el, lisp/gnus-uu.el, + lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-start.el, + lisp/gnus-score.el, lisp/gnus-group.el, lisp/gnus-art.el, + lisp/gnus-agent.el, lisp/ChangeLog: Importing qgnus-0.24 + +1998-02-10 MORIOKA Tomohiko + + * lisp/gnus-art.el (gnus-article-prepare): Don't bind coding + systems. + + * lisp/gnus.el (gnus-version-number): Update to 6.0.4. + (gnus-version): Sync with qgnus-0.23. + + * lisp/pop3.el, lisp/nnmh.el, lisp/nnheader.el, lisp/message.el, + lisp/gnus-sum.el, lisp/gnus-msg.el, lisp/gnus-draft.el, + lisp/gnus-art.el: Merge qgnus-0.23. + +1998-02-09 Shuhei Kobayashi + + * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/nntp.el, + lisp/nnheader.el, lisp/message.el, lisp/gnus.el, + lisp/gnus-xmas.el, lisp/gnus-sum.el, lisp/gnus-start.el, + lisp/gnus-msg.el, lisp/gnus-group.el, lisp/gnus-draft.el, + lisp/gnus-art.el, lisp/gnus-agent.el, lisp/ChangeLog: Importing + qgnus-0.23 + +1998-02-04 MORIOKA Tomohiko + + * lisp/message.el (message-references-generator): New variable. + (message-generate-filled-references): New function. + (message-generate-folded-references): New function. + (message-generate-unfolded-references): New function. + (message-reply): Refer `message-references-generator'. + (message-followup): Refer `message-references-generator'. + +1998-01-17 MORIOKA Tomohiko + + * lisp/message.el (message-send-mail-with-sendmail): Guard + `coding-system-for-write' by binary. + (message-send-mail-with-qmail): Likewise. + +1998-01-16 MORIOKA Tomohiko + + * lisp/lpath.el: Require path-util; add load-path of APEL, MEL and + SEMI. + +1998-01-12 MORIOKA Tomohiko + + * lisp/message.el: Require smtp.el when compile. + + * lisp/message.el (message-send-mail-with-smtp): Use + `(current-buffer)' instead of `tembuf'; rename + `smtp-recipient-address-list' -> `recipient-address-list'. + +1998-01-12 MORIOKA Tomohiko + + * lisp/smtp.el (smtp-deduce-address-list): Don't use + `smtp-recipient-address-list' as global variable. + + * lisp/message.el (message-send-mail-with-smtp): Don't use + `smtp-recipient-address-list' as global variable. + + * lisp/smtpmail.el (smtpmail-recipient-address-list): New + variable; renamed from `smtp-recipient-address-list'. + (smtpmail-send-it): Remove `(not (null ...))'. + (smtpmail-send-queued-mail): Likewise. + +1998-01-12 MORIOKA Tomohiko + + * lisp/message.el (message-send-mail-with-smtp): Don't generate + temporary buffer for message; don't generate and kill + `smtp-address-buffer' for `smtp-deduce-address-list'. + + * lisp/smtpmail.el (smtpmail-send-it): Don't generate and kill + `smtp-address-buffer' for `smtp-deduce-address-list'. + + * lisp/smtp.el (smtp-deduce-address-list): Bind and generate + `smtp-address-buffer' in itself. + +1998-01-12 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to version 6.0.3. + +1998-01-11 MORIOKA Tomohiko + + * lisp/smtp.el: New file. + + * lisp/smtpmail.el: Split basic features into smtp.el. + + * lisp/message.el (message-send-mail-function): Add + `message-send-mail-with-smtp' as an item. + (message-send-mail-with-smtp): New function. + + * ChangeLog: New file. + +1998-01-08 MORIOKA Tomohiko + + * lisp/smtpmail.el (smtpmail-via-smtp): Bind + `coding-system-for-read' by `smtpmail-coding-system' to avoid + dead-locking in Emacs 20. + + * lisp/gnus.el: gnus.el (gnus-version-number): Update to version + 6.0.2. + +1998-01-07 MORIOKA Tomohiko + + * lisp/nnmail.el, lisp/message.el: Sync with Quassia Gnus v0.22. + + * lisp/gnus.el: Delete autoload setting for `metamail-buffer'. + + * lisp/gnus.el, lisp/gnus-sum.el: Sync with Quassia Gnus v0.22. + + * lisp/gnus-msg.el: Abolish function + `gnus-inews-insert-mime-headers'. + + * lisp/gnus-msg.el, lisp/gnus-draft.el, lisp/gnus-art.el: Sync + with Quassia Gnus v0.22. + + * lisp/smtpmail.el (smtpmail-coding-system): New variable; abolish + `smtpmail-code-conv-from'. + (smtpmail-via-smtp): Guard `coding-system-for-write' by + `smtpmail-coding-system'. + + * lisp/smtpmail.el: Imported from Emacs 20.2. + + * lisp/pop3.el (pop3-movemail-file-coding-system): Change default + value to `binary'. + (pop3-open-server): Guard `coding-system-for-read' by `binary'. + +1998-01-06 Shuhei Kobayashi + + * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/nnoo.el, + lisp/nnml.el, lisp/message.el, lisp/gnus.el, lisp/gnus-sum.el, + lisp/gnus-start.el, lisp/gnus-ems.el, lisp/gnus-draft.el, + lisp/gnus-agent.el, lisp/ChangeLog: Importing qgnus-0.22 + + * texi/message.texi, texi/gnus.texi, lisp/gnus.el, lisp/ChangeLog: + Importing qgnus-0.21 + + * texi/message.texi, texi/gnus.texi, texi/ChangeLog, + lisp/nnvirtual.el, lisp/nnsoup.el, lisp/nnoo.el, lisp/nnmh.el, + lisp/nnmail.el, lisp/nndraft.el, lisp/gnus.el, lisp/gnus-xmas.el, + lisp/gnus-sum.el, lisp/gnus-start.el, lisp/gnus-score.el, + lisp/gnus-msg.el, lisp/gnus-group.el, lisp/gnus-draft.el, + lisp/gnus-art.el, lisp/ChangeLog: Importing qgnus-0.20 + + * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/pop3.el, + lisp/nntp.el, lisp/nnml.el, lisp/nnmail.el, lisp/nndoc.el, + lisp/message.el, lisp/gnus.el, lisp/gnus-uu.el, + lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-start.el, + lisp/gnus-score.el, lisp/gnus-group.el, lisp/gnus-cache.el, + lisp/gnus-agent.el, lisp/ChangeLog: Importing qgnus-0.19 + +1997-12-27 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to version 6.0.1. + + * lisp/message.el (message-resend): Enclose `message-setup' with + `(let (message-setup-hook) ...)' to avoid to `turn-on-mime-edit'; + must setup `message-encoding-buffer' and `message-edit-buffer' for + `message-send-mail'. + +1997-12-08 Shuhei Kobayashi + + * lisp/pop3.el, lisp/message.el, lisp/gnus.el, lisp/gnus-sum.el, + lisp/gnus-art.el, lisp/ChangeLog: Synch'ed up to qgnus-0.18. + + * texi/message.texi, texi/gnus.texi, texi/ChangeLog, + lisp/smiley.el, lisp/pop3.el, lisp/nnweb.el, lisp/nntp.el, + lisp/nnml.el, lisp/nnmail.el, lisp/nnheader.el, lisp/nndraft.el, + lisp/message.el, lisp/lpath.el, lisp/gnus.el, lisp/gnus-util.el, + lisp/gnus-sum.el, lisp/gnus-start.el, lisp/gnus-picon.el, + lisp/gnus-nocem.el, lisp/gnus-mh.el, lisp/gnus-group.el, + lisp/gnus-ems.el, lisp/gnus-cite.el, lisp/gnus-art.el, + lisp/gnus-agent.el, lisp/dgnushack.el, lisp/ChangeLog: Importing + qgnus-0.18 + +1997-11-29 MORIOKA Tomohiko + + * README.semi: New file. + + * lisp/gnus.el (gnus-version): Rename to "Semi-gnus". + +1997-11-28 MORIOKA Tomohiko + + * lisp/gnus-draft.el (gnus-draft-decoding-function): New variable. + (gnus-draft-setup): Use `gnus-draft-decoding-function'. + +1997-11-27 MORIOKA Tomohiko + + * lisp/nnmail.el, lisp/nnheader.el, lisp/message.el, lisp/gnus.el, + lisp/gnus-sum.el, lisp/gnus-msg.el, lisp/gnus-art.el: sync with + qgnus-0.17. + + * texi/message.texi, texi/gnus.texi, lisp/smiley.el, lisp/nnoo.el, + lisp/nnml.el, lisp/nnmail.el, lisp/nnheader.el, + lisp/messagexmas.el, lisp/message.el, lisp/gnus.el, + lisp/gnus-xmas.el, lisp/gnus-util.el, lisp/gnus-sum.el, + lisp/gnus-start.el, lisp/gnus-spec.el, lisp/gnus-score.el, + lisp/gnus-picon.el, lisp/gnus-move.el, lisp/gnus-msg.el, + lisp/gnus-kill.el, lisp/gnus-group.el, lisp/gnus-draft.el, + lisp/gnus-demon.el, lisp/gnus-cite.el, lisp/gnus-art.el, + lisp/ChangeLog: Quassia Gnus v0.17. + + * lisp/gnus-i18n.el: New file. + + * lisp/nnmail.el (nnmail-file-coding-system): Use `raw-text' in + default. + + * lisp/nnheader.el (nnheader-file-coding-system): Use `raw-text' + in default. + + * lisp/message.el (message-encode-function): New variable. + (message-forward-start-separator): Modify for mime-edit. + (message-forward-end-separator): Modify for mime-edit. + (message-setup-hook): Use `(message-maybe-setup-default-charset + turn-on-mime-edit)' in default. + (message-header-hook): Use `(eword-encode-header)' in default. + + (message-send): Use local variable `message-encoding-buffer', + `message-edit-buffer' and `message-mime-mode' as public variables; + use `message-encode-function'. + (message-send-mail): Use `message-encoding-buffer' to get contents + of body; abolish `message-encode-mail-hook'; use + `mime-edit-maybe-split-and-send'; use `message-edit-buffer' to + refer original editing buffer. + (message-send-news): Use `message-encoding-buffer' to get contents + of body; abolish `message-encode-news-hook'; use + `mime-edit-maybe-split-and-send'; use `message-edit-buffer' to + refer original editing buffer. + (message-check-news-syntax): Call `message-check-news-body-syntax' + in `mime-edit-buffer'. + (message-do-fcc): Use `message-encoding-buffer' to get contents; + run `message-header-hook'. + (message-cancel-news): Use `std11-extract-address-components' + instead of `mail-extract-address-components'; bind + `message-encoding-buffer' and `message-edit-buffer'. + + (message-maybe-setup-default-charset): New function. + (message-maybe-encode): New function. + (message-mime-insert-article): New function. + Add setting for mime-view. + + * lisp/gnus.el (gnus-version-number): for version number for Open + gnus. + (gnus-version): Modify for Open gnus. + + * lisp/gnus-sum.el: Autoload gnus-i18n. + + (gnus-show-mime): `t' in default. + (gnus-structured-field-decoder): Use + `eword-decode-structured-field-body' in default. + (gnus-unstructured-field-decoder): Use + `eword-decode-unstructured-field-body' in default. + + (gnus-parse-headers-hook): Use + `(gnus-set-summary-default-charset)' in default. + + (gnus-summary-mode-map): Add binding for + `gnus-summary-scroll-down' and + `gnus-summary-preview-mime-message'. + + (gnus-summary-preview-mime-message): New function. + (gnus-mime-partial-preview-function): New function. + Add setting for mime-view. + + * lisp/gnus-msg.el (gnus-summary-cancel-article): Display + `gnus-article-buffer' instead ofb `gnus-original-article-buffer'. + (gnus-extended-version): Don't return version of emacsen. + (gnus-inews-do-gcc): Refer `message-encoding-buffer'. + + * lisp/gnus-art.el (gnus-show-mime-method): Use + `gnus-article-preview-mime-message' instead of `metamail-buffer' + in default. + (gnus-decode-encoded-word-method): Use + `gnus-article-decode-encoded-word' instead of + `gnus-article-de-quoted-unreadable' in default. + + Abolish `gnus-hack-decode-rfc1522', `gnus-decode-rfc1522', + `article-decode-rfc1522', `article-de-quoted-unreadable', + `article-mime-decode-quoted-printable-buffer' and + `article-mime-decode-quoted-printable'. + (gnus-article-decode-rfc1522): New implementation (use + `eword-decode-header'). + + (gnus-article-preview-mime-message): New function. + (gnus-article-decode-encoded-word): New function. + (gnus-content-header-filter): New function. + (mime-view-quitting-method-for-gnus): New function. + Add setting for mime-view. + + * lisp/message.el: Abolish `message-max-size' because it is not + used. + + * lisp/message.el: sync with qgnus-0.16. + + * texi/Makefile, texi/message.texi, texi/gnus.texi, lisp/nnweb.el, + lisp/nnmh.el, lisp/nnheader.el, lisp/nnfolder.el, lisp/message.el, + lisp/gnus.el, lisp/gnus-xmas.el, lisp/gnus-uu.el, + lisp/gnus-sum.el, lisp/gnus-srvr.el, lisp/gnus-picon.el, + lisp/gnus-group.el, lisp/gnus-cite.el, lisp/gnus-art.el: Quassia + Gnus v0.16. + + * lisp/nnmh.el (nnmh-request-list-1): fix maybe. + + * lisp/message.el (message-do-fcc): Guard + `coding-system-for-write' by `raw-text'; run + `message-before-do-fcc-hook'. + + * lisp/gnus-msg.el (gnus-inews-do-gcc): Guard + `coding-system-for-write' by `raw-text'; run + `gnus-before-do-gcc-hook'. + + * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/nntp.el, + lisp/nnoo.el, lisp/nnml.el, lisp/nndraft.el, lisp/nnbabyl.el, + lisp/message.el, lisp/gnus.el, lisp/gnus-xmas.el, lisp/gnus-uu.el, + lisp/gnus-util.el, lisp/gnus-sum.el, lisp/gnus-start.el, + lisp/gnus-spec.el, lisp/gnus-soup.el, lisp/gnus-score.el, + lisp/gnus-msg.el, lisp/gnus-gl.el, lisp/gnus-ems.el, + lisp/gnus-draft.el, lisp/gnus-cache.el, lisp/gnus-audio.el, + lisp/gnus-art.el, lisp/gnus-agent.el, lisp/ChangeLog: Quassia Gnus + v0.15. + + * lisp/message.el, lisp/ChangeLog: sync with qgnus-0.14. + + * texi/Makefile, texi/gnus.texi: Quassia Gnus v0.14. + + * texi/dir: New file. + + * texi/dir, lisp/pop3.el, lisp/nntp.el, lisp/nnml.el, + lisp/nnmail.el, lisp/nnfolder.el, lisp/message.el, lisp/lpath.el, + lisp/gnus.el, lisp/gnus-win.el, lisp/gnus-util.el, + lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-start.el, + lisp/gnus-score.el, lisp/gnus-msg.el, lisp/gnus-mh.el, + lisp/gnus-cus.el, lisp/gnus-art.el, lisp/gnus-agent.el, + lisp/ChangeLog: Quassia Gnus v0.14. + + * lisp/message.el, lisp/ChangeLog: sync with qgnus-0.13. + + * texi/gnus.texi, texi/ChangeLog, lisp/pop3.el, lisp/nnweb.el, + lisp/nnmail.el: Quassia Gnus v0.13. + + * lisp/nnlistserv.el: New file. + + * lisp/nnlistserv.el, lisp/message.el, lisp/md5.el, lisp/lpath.el, + lisp/gnus.el, lisp/gnus-topic.el, lisp/gnus-sum.el, + lisp/gnus-score.el, lisp/gnus-picon.el, lisp/gnus-msg.el, + lisp/gnus-group.el, lisp/gnus-art.el, lisp/gnus-agent.el, + lisp/dgnushack.el, lisp/ChangeLog, GNUS-NEWS: Quassia Gnus v0.13. + + * lisp/message.el: sync with qgnus-0.12. + + * texi/message.texi, texi/gnus.texi, texi/gnus-faq.texi, + texi/ChangeLog, lisp/nntp.el, lisp/nnmh.el, lisp/nnmail.el, + lisp/nndraft.el, lisp/messcompat.el, lisp/message.el, + lisp/gnus.el, lisp/gnus-xmas.el, lisp/gnus-uu.el, + lisp/gnus-sum.el, lisp/gnus-score.el, lisp/gnus-salt.el, + lisp/gnus-msg.el, lisp/gnus-int.el, lisp/gnus-group.el, + lisp/gnus-demon.el, lisp/gnus-cache.el, lisp/gnus-art.el, + lisp/gnus-agent.el, lisp/ChangeLog, GNUS-NEWS: Quassia Gnus v0.12. + + * lisp/message.el (message-send-news-function): Use + `message-send-news-with-gnus' in default. + (message-send-via-news): Use `message-send-news' instead of + `message-send-news-function'. + (message-send-mail): Don't avoid text properties; run + `message-encode-mail-hook'. + (message-send-news): Don't avoid text properties; run + `message-encode-news-hook'; use `message-send-news-function'. + (message-send-news-with-gnus): New function. + (message-cancel-news): Use `message-send-news' instead of + `message-send-news-function'. diff --git a/ChangeLog.2 b/ChangeLog.2 new file mode 100644 index 0000000..616c7b3 --- /dev/null +++ b/ChangeLog.2 @@ -0,0 +1,620 @@ +1999-08-03 NAKAJI Hiroyuki + + * Makefile.in (clean): Exec make clean in both lisp and texi + subdirectories. + (distclean): Use $(MAKE), not `make'. + +1999-08-03 Katsumi Yamaoka + + * message.el (TopLevel): Autoload "mu-cite" for the function + `mu-cite-original' instead of the function `mu-cite/cite-original'. + (message-cite-function): Replace `mu-cite/cite-original' with + `mu-cite-original'. + +1999-08-02 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 06. + + * lisp/Makefile.in (distclean): Remove dgnuspath.el instead of + paths.el. + (install): Don't install dgnuspath.el; don't touch the installed + files. + +1999-08-01 YAMAMOTO Kouji + + * lisp/nnmail.el (nnmail-split-it): Don't compare ".*" and VALUE + of each element of `nnmail-split-fancy' if the length of VALUE is + less than 2. + +1999-07-30 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 05. + +1999-07-30 NAKAJI Hiroyuki + + * lisp/Makefile.in (install): install *.el files too. + to avoid warning about el is newer than elc, exec touch + $(lispdir)/*.elc. + +1999-07-29 Yoshiki Hayashi + + * texi/gnus-ja.texi: Sync up with pGnus 0.95. + +1999-07-28 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 04. + + * lisp/gnus-cite.el (gnus-ems-redefine): Don't replace the function + `gnus-cite-add-face' with `gnus-mule-cite-add-face' because the + former will work well under old Emacsen by now. + (gnus-mule-cite-add-face): Abolish function. + +1999-07-27 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 03. + + * texi/Makefile.in (prefix): Define it first. + + * lisp/dgnuspath.el.in: Rename from paths.el. + + * lisp/dgnushack.el (dgnushack-install-package): Don't install + dgnuspath.el nor dgnuspath.elc. + (dgnushack-make-package): Don't enter dgnuspath.el nor + dgnuspath.elc to MANIFEST file. + (dgnushack-compile): Don't compile dgnuspath.el. + (TopLevel): Use `expand-file-name' for the file "./dgnuspath.el"; + use dgnuspath.el instead of paths.el. + + * lisp/Makefile.in (PACKAGEDIR): Default to @PACKAGEDIR@. + + * configure.in (AC_OUTPUT): Use dgnuspath.el instead of paths.el. + (TopLevel): Add options `--with-xemacs' and `--with-packagedir'. + (ADDITIONAL_LOAD_PATH): Default to empty string. + + * configure: Regenerate. + + * README.T-gnus: Update for the new features. + + * Makefile.in (PACKAGEDIR): Default to @PACKAGEDIR@. + (XEMACS): Default to @XEMACS@. + +1999-07-26 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 02. + + * lisp/dgnushack.el: Load ./paths.el. + + * lisp/paths.el.in: New file. + + * lisp/Makefile.in (distclean): Remove paths.el. + + * Mule23@1934: Update for the new configure usage. + + * configure: Regenerate. + +1999-07-22 TSUCHIYA Masatoshi + + * configure.in: Add an option `--with-addpath' to specify load-path. + + * aclocal.m4: New implementation. + + * acinclude.m4: New file. + +1999-07-20 Tsukamoto Tetsuo + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + + * lisp/gnus-ofsetup.el (gnus-ofsetup-prepare-for-miee, + gnus-ofsetup-write-setting-file): New functions. + (gnus-setup-for-offline): Use them. + (gnus-ofsetup-parameters, gnus-ofsetup-customize, + gnus-ofsetup-customize-done): New functions for customization + support. + + * lisp/gnus-offline.el (gnus-offline-version-number): Update to + 2.20. + (gnus-offline-define-menu-on-miee, + gnus-offline-define-menu-on-agent): Add a menu item which calls + `gnus-ofsetup-customize'. + +1999-07-11 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.11.08. + (gnus-revision-number): Fresh start from 00. + + * texi/{gnus.texi,gnus-ja.texi,ChangeLog}: Update for T-gnus + 6.11.08. + + * lisp{pop3.el,nnmh.el,nnfolder.el,mm-util.el,mm-encode.el, + mm-decode.el,message.el,mail-source.el,gnus-util.el,gnus-topic.el, + gnus-sum.el,gnus-mlspl.el,gnus-mailcap.el,gnus-group.el, + gnus-cus.el,gnus-art.el,ChangeLog}: Sync up with Pterodactyl Gnus + v0.95. + + * README.T-gnus: Update for T-gnus 6.11.08. + +1999-07-08 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + + * lisp/nnheader.el (make-full-mail-header-from-decoded-header): Add + `extra' as a luna-class. + (make-full-mail-header): Ditto. + (nnheader-decode-field-body): Redefine as a regular function. + (mail-header-set-extra): Alias to + `mime-gnus-entity-set-extra-internal'. + (mail-header-extra): Alias to `mime-gnus-entity-extra-internal'. + + * lisp/mmgnus.el (TopLevel): Add definition of `extra' as a + luna-class. + + * lisp/gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Bind + the value of `default-mime-charset' to its local value in + `gnus-summary-buffer'; don't bind `mail-parse-charset' and + `mail-parse-ignored-charsets'. + (gnus-decode-encoded-word-function): New variable. + +1999-07-07 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.11.07. + + * texi/{gnus.texi,gnus-ja.texi,ChangeLog}: Sync up with Pterodactyl + Gnus v0.93. + + * lisp/{pop3.el,nnmail.el,mml.el,mm-view.el,mm-uu.el,mm-util.el, + mm-decode.el,message.el,gnus-util.el,gnus-sum.el,gnus-start.el, + gnus-srvr.el,gnus-score.el,gnus-mlspl.el,gnus-art.el,gnus-agent.el, + ChangeLog}: Sync up with Pterodactyl Gnus v0.93. + + * README.T-gnus: Update for T-gnus 6.11.07. + +1999-07-06 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.11.06. + (gnus-revision-number): Fresh start from 00. + + * texi/{gnus-ja.texi,gnus.texi,emacs-mime.texi,ChangeLog}: Sync up + with Pterodactyl Gnus v0.92. + + * lisp/gnus-mlspl.el: New file copied from Pterodactyl Gnus v0.92. + + * lisp/{nntp.el,nnmail.el,nnfolder.el,nndraft.el,nndoc.el,mml.el, + mm-view.el,mm-util.el,mm-decode.el,message.el,gnus-xmas.el, + gnus-util.el,gnus-sum.el,gnus-start.el,gnus-mailcap.el, + gnus-group.el,gnus-art.el,gnus-agent.el,Makefile.in,ChangeLog}: + Sync up with Pterodactyl Gnus v0.92. + + * README.T-gnus: Update for T-gnus 6.11.06. + +1999-07-06 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + + * lisp/gnus-util.el (gnus-point-at-eol, gnus-point-at-bol): Use + `static-cond'. NOTE: It requires APEL 9.20 or later. + +1999-07-05 Tsukamoto Tetsuo + + * lisp/gnus-agent.el (gnus-agent-expire): Refresh the value of + `gnus-active-hashtb' for each method. + +1999-07-05 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.11.05. + (gnus-revision-number): Fresh start from 00. + + * texi/gnus-ja.texi (Mail in a Newsreader): Translate into Japanese. + + * README.T-gnus: Update for T-gnus 6.11.05. + + * lisp/nnmbox.el (nnmbox-save-buffer): Bind `output-coding-system' + instead of `coding-system-for-write' Under Mule 2. + + * lisp/nnmbox.el (nnmbox-active-file-coding-system, + nnmbox-file-coding-system): Default to `raw-text-dos' or 'raw-text'. + * lisp/nnfolder.el (nnfolder-file-coding-system, + nnfolder-active-file-coding-system): Ditto. + + * lisp/mm-view.el (TopLevel): Don't bind vars `w3-meta-*'. + + * lisp/gnus-util.el (gnus-write-active-file): Abolish function. + (gnus-write-active-file-as-coding-system): New function. + + * lisp/gnus-cache.el (gnus-cache-write-active): Use + `gnus-write-active-file-as-coding-system' instead of + `gnus-write-active-file'. + * lisp/gnus-agent.el (gnus-agent-expire, gnus-agent-write-active): + Ditto. + + * lisp/gnus-agent.el (gnus-agent-expire, gnus-agent-write-active, + gnus-agent-save-active-1): Use + `insert-file-contents-as-coding-system' instead of + `insert-file-contents-literally' or `insert-file-contents'. + +1999-07-05 Katsumi Yamaoka + + * texi/{emacs-mime.texi,ChangeLog}: Sync up with Pterodactyl Gnus + v0.91. + * lisp/{smiley.el,rfc2047.el,qp.el,nnml.el,nnmbox.el,nnmail.el, + nnheader.el,nnfolder.el,mml.el,mm-view.el,mm-uu.el,mm-util.el, + mm-encode.el,mm-decode.el,message.el,lpath.el,gnus-util.el, + gnus-sum.el,gnus-start.el,gnus-srvr.el,gnus-msg.el,gnus-mailcap.el, + gnus-cache.el,gnus-art.el,gnus-agent.el,base64.el}: Ditto. + * GNUS-NEWS: Ditto. + +1999-07-04 Yoshiki Hayashi + + * texi/{gnusref-ja.tex,refcard-ja.tex}: Update to the version 5.5. + +1999-07-04 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 03. + +1999-07-04 Tsukamoto Tetsuo + + * lisp/gnus-sum.el (gnus-get-newsgroup-headers): Don't bind the + value of `mail-parse-ignored-charsets' if its local value in + `gnus-summary-buffer' is nil. + +1999-07-02 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 02. + (gnus-other-frame): Use `static-if'. + (TopLevel): Require `static'. + + * lisp/score-mode.el (score-mode-coding-system): Use `static-if'. + (TopLevel): Require `static'. + + * lisp/gnus-util.el (gnus-point-at-eol, gnus-point-at-bol): Use + `static-cond' if it exists. NOTE: It should be simplified in the + future. + + * lisp/gnus-start.el (gnus-startup-file-coding-system): Use + `static-if'. + (TopLevel): Require `static'. + + * lisp/gnus-art.el (gnus-article-display-x-face-with-x-face-mule): + Abolish function. + + * lisp/dgnushack.el (dgnushack-make-package): Suppress verbose + messages while generating auto-autoloads.el. + (TopLevel): Set coding priority of Shift-JIS to the bottom. + +1999-06-30 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + + * lisp/message.el (message-pop-to-buffer-1): New macro. + (message-pop-to-buffer): Use it. + (message-delete-frame): Use `static-if'. + (TopLevel): Autoload "mu-cite". + (message-cite-function): Add `mu-cite/cite-original'. + + * lisp/dgnushack.el (TopLevel): Bind functions defined by + `defun-maybe' for all Emacsen. + + * lisp/Makefile.in (clean): Fix typo. + + * Makefile.in (elclean): Remove auto-autoloads.el and + custom-load.el as well. + +1999-06-28 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.11.04. + (gnus-revision-number): Fresh start from 00. + + * configure: Regenerate. + + * lisp/mm-view.el (TopLevel): Define `gnus-article-mime-handles' + for avoiding byte compile warning. + + * lisp/{rfc2047.el,nnmail.el,mml.el,mm-view.el,mm-util.el, + mm-bodies.el,message.el,mail-prsvr.el,gnus-xmas.el,gnus-sum.el, + gnus-start.el,gnus-draft.el,gnus-cus.el,gnus-cache.el,gnus-art.el, + ChangeLog}: Sync up with Pterodactyl Gnus v0.89. + * aclocal.m4: Ditto. + + * README.T-gnus: Update for T-gnus 6.11.04. + +1999-06-24 Katsumi Yamaoka + + * Mule23@1934: New file. + +1999-06-23 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 06. + + * lisp/gnus-sum.el (gnus-articles-to-read): Use + `read-from-minibuffer' with specifying the input position instead + of the use of `read-string' with modifying `minibuffer-setup-hook'. + Exceptionally, don't specify the input position under Emacs 19 or + earlier against the mysterious bug. [cf. ] + (TopLevel): Require `static'. + +1999-06-22 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 05. + +1999-06-22 NAKAJI Hiroyuki + + * texi/Makefile.in (distclean, veryclean): Use `clean' instead of + `make clean'. + (complete, tmps, latexboth, psout, pss, latexps): Use `$(MAKE)' + instead of `make'. + (TopLevel): Use `@SET_MAKE@'. + + * lisp/Makefile.in (distclean): New target. + (clean): Renamed from `distclean'; don't remove Makefile. + + * Makefile.in (distclean): Use `clean' instead of `make clean'. + (x, osome): Use `$(MAKE)' instead of `make'. + (elclean): Use the arg `-f'. + (clean): Remove MANIFEST.*. + +1999-06-22 Katsumi Yamaoka + + * lisp/gnus-sum.el (gnus-dont-select-after-jump-to-other-group): + New user option. + (gnus-summary-jump-to-other-group): Use it. + + * lisp/gnus-cite.el (gnus-cite-add-face): Add check for Emacs 21 or + later. + +1999-06-21 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 04. + + * lisp/gnus-cite.el (gnus-cite-add-face): Use `move-to-column' + statically to skip the prefix string under Emacs 20.2 or earlier. + (TopLevel): Require `static'. + + * lisp/gnus-msg.el (gnus-extended-version): Move + `gnus-revision-number' to the last. + +1999-06-21 Daiji KANEMATSU + + * lisp/gnus-sum.el (gnus-summary-jump-to-other-group): Call + `gnus-summary-read-group' with the 3rd arg T. + +1999-06-21 NAKAJI Hiroyuki + + * texi/Makefile.in (clean): Remove gnus.info*, gnus-ja.info*, + message.info*, message-ja.info*, *.texi_ and emacs-mime.info. + + * lisp/Makefile.in (distclean): Remove auto-autoload.el and + custom-load.el. + +1999-06-18 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 03. + + * lisp/gnus-sum.el (gnus-summary-mark-article): Call + `gnus-cache-possibly-enter-article' with the arg `headers'. + (gnus-summary-mark-article-as-unread): Ditto. + (gnus-summary-move-article): Ditto. + + * lisp/gnus-cache.el (gnus-cache-update-article): Call + `gnus-cache-possibly-enter-article' with the arg `headers'. + (gnus-cache-enter-article): Ditto. + (gnus-cache-possibly-enter-article): Accept parameter `headers'. + +1999-06-17 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 02. + + * lisp/gnus-sum.el (gnus-summary-jump-to-other-group): Rewrite as + an independent function. + (gnus-summary-read-group): Revert to the previous form. + + * lisp/gnus-msg.el (gnus-extended-version): Include + `gnus-revision-number' if it is non-zero. + +1999-06-16 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + (TopLevel): Autoload "gnus-sum" for the command + `gnus-summary-jump-to-other-group'. + + * lisp/gnus-art.el (gnus-article-read-summary-keys): Add key "ZJ" + to the list `nosaves'; convert key events to string statically + under XEmacs. + (gnus-article-display-x-face-with-x-face-mule): Use `gnus-xemacs' + instead of `featurep' with an arg `xemacs'. + (article-toggle-headers): Ditto. + (TopLevel): Require `static'. + + * lisp/gnus-sum.el (gnus-summary-exit-map): New keystroke "ZJ" for + the command `gnus-summary-jump-to-other-group'. + +1999-06-16 Katsumi Yamaoka + Daiji KANEMATSU + + * lisp/gnus-sum.el (gnus-summary-read-group): Allow it to be an + user command. + (gnus-summary-jump-to-other-group): Defalias to + `gnus-summary-read-group'. + +1999-06-15 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.11.03. + (gnus-revision-number): Fresh start from 00. + + * lisp/{gnus-sum.el,nnmail.el,ChangeLog}: Sync up with Pterodactyl + Gnus v0.88. + + * README.T-gnus: Update for T-gnus 6.11.03. + +1999-06-14 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + + * lisp/message.el (message-send-news): Don't generate the Lines + field; don't make `tembuf' as unmodified. + (message-send-mail): Ditto. + +1999-06-14 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.11.02. + + * lisp/{mail-source.el,gnus-sum.el,gnus-art.el}: Sync up with + Pterodactyl Gnus v0.87. + + * text/gnus-ja.text (Troubleshooting): Make the return value of + `gnus-version' ambiguous. + + * lisp/message.el (message-send-news): Make `tembuf' as unmodified + after inserting a text from `message-encoding-buffer'. + (message-send-mail): Ditto. + +1999-06-14 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.11.01. + (gnus-revision-number): Fresh start from 00. + + * lisp/mm-view.el (TopLevel): Avoid byte compile warnings for the + use of old W3. + + * lisp/dgnushack.el (TopLevel): Bind `:file' for old Emacsen. + + * texi/{gnus.texi,gnus-ja.texi,ChangeLog}: Sync up with Pterodactyl + Gnus v0.86. + * lisp/{nnmail.el,nnheader.el,nndoc.el,mml.el,mm-view.el, + mm-decode.el,mm-bodies.el,message.el,mail-source.el,lpath.el, + gnus.el,gnus-xmas.el,gnus-uu.el,gnus-util.el,gnus-sum.el, + gnus-start.el,gnus-score.el,gnus-range.el,gnus-msg.el, + gnus-mailcap.el,gnus-group.el,gnus-cus.el,gnus-cite.el, + gnus-cache.el,gnus-art.el,gnus-agent.el,ChangeLog}: Ditto. + + * etc/gnus/x-splash: New file copied from pgnus 0.86. + +1999-06-12 Daiki Ueno + + * lisp/gnus-msg.el (gnus-copy-article-buffer): Bind + `inhibit-read-only' to t during modifying the destination buffer. + +1999-06-11 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 02. + + * sample.lpath.el: New file. It is supposed to be used for telling + old Emacsen where EMU, APEL or CUSTOM packages have already + installed. + + * lisp/score-mode.el (score-mode-coding-system): Default to + `*ctext*' under Mule 2. + + * lisp/nnmail.el (nnmail-save-active): Bind `output-coding-system' + to the value of `nnmail-active-file-coding-system'. + + * lisp/message.el (message-set-auto-save-file-name): Use + `set-file-coding-system' statically under Mule 2. + (message-do-fcc): Bind `output-coding-system' to `raw-text'. + (message-draft-coding-system): Default to `*junet*' under Mule 2. + (TopLevel): Require `static'. + + * lisp/gnus-util.el (gnus-point-at-eol): Defun statically for the + various Emacsen. + (gnus-point-at-bol): Ditto. + (TopLevel): Require `static'. + + * lisp/gnus-start.el (gnus-startup-file-coding-system): Default to + `*ctext*' under Mule 2. + + * lisp/gnus-msg.el (gnus-inews-do-gcc): Bind `output-coding-system' + to `raw-text'. + + * lisp/gnus-ems.el (language-info-alist): Defvar-maybe for old + Emacsen. + (current-language-environment): Ditto. + (set-language-info): Defun-maybe for old Emacsen. + (get-language-info): Ditto. + (assoc-ignore-case): Ditto. + + * lisp/gnus-cite.el (gnus-cite-parse): Bind `mc-flag' to nil. + + * lisp/dgnushack.el (TopLevel): Define some unknown functions for + avoiding byte compile warnings. + (TopLevel): Require `emu' for picking up some macros, bind some + colon keywords, bind functions defined by `defun-maybe', bind + defcustom'ed variables and optimize byte code for `char-after' and + `char-before' for old Emacsen. + (TopLevel): Attempt to load ~/.lpath.el. + + * configure: Regenerate by autoconf 2.14.1. + +1999-06-11 Katsumi Yamaoka + + * lisp/gnus.el (gnus-revision-number): Increment to 01. + + * lisp/gnus-art.el (gnus-article-display-x-face-with-x-face-mule): + Warn if it is used with X-Face-Mule 0.25 or later. Note that it + should be abolished in the future. + +1999-06-08 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version): Modify for SEMI 1.13, FLIM 1.13. + (gnus-revision-number): Fresh start from 00. + (gnus-version-number): Update to 6.11.0. + (gnus-product-name): Rename to ET-gnus. E is short for Experimental. + + * lisp/gnus-sum.el (gnus-summary-reselect-current-group): Rescan + the current newsgroup before exiting. + + * lisp/gnus-art.el (gnus-article-prepare-display): Change + representation-type of `mime-message-structure'. + + * ChangeLog: New file. + * ChangeLog.1: Renamed from ChangeLog. + +1999-06-01 MORIOKA Tomohiko + + * lisp/gnus-score.el (gnus-header-index): Use + `luna-class-slot-index' and `luna-find-class' to get index number + for an entity. + +1999-05-31 MORIOKA Tomohiko + + * lisp/nnheader.el: Require `mmgnus'. + (mail-header-subject): Now an alias for + `mime-gnus-entity-subject-internal'. + (mail-header-set-subject): Now an alias for + `mime-gnus-entity-set-subject-internal)'. + (mail-header-from): Now an alias for + `mime-gnus-entity-from-internal'. + (mail-header-set-from): Now an alias for + `mime-gnus-entity-set-from-internal'. + (mail-header-date): Now an alias for + `mime-gnus-entity-date-internal'. + (mail-header-set-date): Now an alias for + `mime-gnus-entity-set-date-internal'. + (mail-header-message-id): Now an alias for + `mime-gnus-entity-id-internal'. + (mail-header-id): Likewise. + (mail-header-set-message-id): Now an alias for + `mime-gnus-entity-set-id-internal'. + (mail-header-set-id): Likewise. + (mail-header-references): Now an alias for + `mime-gnus-entity-references-internal'. + (mail-header-set-references): Now an alias for + `mime-gnus-entity-set-references-internal'. + (mail-header-chars): Now an alias for + `mime-gnus-entity-chars-internal. + (mail-header-set-chars): Now an alias for + `mime-gnus-entity-set-chars-internal. + (mail-header-lines): Now an alias for + `mime-gnus-entity-lines-internal'. + (mail-header-set-lines): Now an alias for + `mime-gnus-entity-set-lines-internal'. + (mail-header-xref): Now an alias for + `mime-gnus-entity-xref-internal'. + (mail-header-set-xref): Now an alias for + `mime-gnus-entity-set-xref-internal'. + (make-full-mail-header): New implementation [use + `luna-make-entity']. + (make-full-mail-header-from-decoded-header): Likewise. + + * lisp/mmgnus.el (mime-gnus-entity): New definition of luna-class. + (mime-entity-buffer): Abolished. + (initialize-instance): New method. + +See ChangeLog.1 for earlier changes. diff --git a/GNUS-NEWS b/GNUS-NEWS index a725d82..ae36555 100644 --- a/GNUS-NEWS +++ b/GNUS-NEWS @@ -25,3 +25,9 @@ of variables starting with `gnus-treat-' have been added. *** The Gnus posting styles have been redone again and now works in a subtly different manner. +*** New web-based backends have been added: nnslashdot, nnwarchive +and nnultimate. nnweb has been revamped, again, to keep up with +ever-changing layouts. + +*** Gnus can now read IMAP mail via nnimap. + diff --git a/Makefile.in b/Makefile.in index 1c13e2d..0dbddc4 100644 --- a/Makefile.in +++ b/Makefile.in @@ -5,8 +5,8 @@ srcdir = @srcdir@ @SET_MAKE@ EMACS = @EMACS@ -XEMACS = xemacs -PACKAGEDIR = +XEMACS = @XEMACS@ +PACKAGEDIR = @PACKAGEDIR@ all: lick info @@ -20,17 +20,17 @@ install: cd texi && $(MAKE) EMACS="$(EMACS)" install # Rule for XEmacs package. -package: xlick add-info-suffix xinfo remove-info-suffix +package: xlick xinfo cd lisp && $(MAKE) EMACS="$(XEMACS)" package -install-package: add-info-suffix xinfo xinfo remove-info-suffix +install-package: xinfo cd lisp && $(MAKE) EMACS="$(XEMACS)" PACKAGEDIR="$(PACKAGEDIR)" \ install-package -package-ja: xlick add-info-suffix xinfo xinfo-ja remove-info-suffix +package-ja: xlick xinfo xinfo-ja cd lisp && $(MAKE) EMACS="$(XEMACS)" package -install-package-ja: add-info-suffix xinfo xinfo-ja remove-info-suffix +install-package-ja: xinfo xinfo-ja cd lisp && $(MAKE) EMACS="$(XEMACS)" PACKAGEDIR="$(PACKAGEDIR)" \ install-package @@ -38,16 +38,10 @@ xlick: cd lisp && $(MAKE) EMACS="$(XEMACS)" lispdir="$(lispdir)" all xinfo: - cd texi && $(MAKE) EMACS="$(XEMACS)" all + cd texi && $(MAKE) EMACS="$(XEMACS)" all-info xinfo-ja: - cd texi && $(MAKE) EMACS="$(XEMACS)" MAKEINFO=no ja - -add-info-suffix: - cd texi && $(MAKE) EMACS="$(XEMACS)" add-info-suffix - -remove-info-suffix: - cd texi && $(MAKE) remove-info-suffix + cd texi && $(MAKE) EMACS="$(XEMACS)" MAKEINFO=no ja-info # Rule for Lars and nobody else. some: @@ -63,24 +57,25 @@ info-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: - rm lisp/*.elc + cd lisp && rm -f *.elc auto-autoloads.el custom-load.el x: - make EMACS="$(XEMACS)" + $(MAKE) EMACS="$(XEMACS)" -distclean: - make clean +distclean: clean rm -rf *~ - for i in lisp texi; do (cd $$i; make distclean); done + 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 + $(MAKE) EMACS="$(XEMACS)" some config.status: $(srcdir)/configure $(SHELL) ./config.status --recheck diff --git a/Mule23@1934.en b/Mule23@1934.en new file mode 100644 index 0000000..3f764d3 --- /dev/null +++ b/Mule23@1934.en @@ -0,0 +1,76 @@ +How to build T-gnus with Mule 2.3 based on Emacs 19.34. + +FIX 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)) + + +INSTALL CUSTOM, APEL, FLIM, SEMI/WEMI +===================================== + +T-gnus requires the latest version of CUSTOM, APEL, FLIM and SEMI or +WEMI; you should install these packages before installing T-gnus. + +As for CUSTOM, you should apply the following patch before building it. + +------ cut here ------ cut here ------ cut here ------ cut here ------ +--- custom-1.9962/cus-face.el~ Wed Mar 4 19:52:39 1998 ++++ custom-1.9962/cus-face.el Mon Mar 9 08:05:33 1998 +@@ -96,7 +96,7 @@ + "Define a new FACE on all frames, ignoring X resources." + (interactive "SMake face: ") + (or (internal-find-face name) +- (let ((face (make-vector 8 nil))) ++ (let ((face (make-vector face-vector-length nil))) + (aset face 0 'face) + (aset face 1 name) + (let* ((frames (frame-list)) +------ cut here ------ cut here ------ cut here ------ cut here ------ + +By the way, the latest CUSTOM package for Emacs v19 is available from: + +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. + + 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: + + % configure --with-emacs=mule\ + --with-addpath=~/elisp/emu:~/elisp/apel:~elisp/custom + % make install + + 2. Copy `sample.lpath.el' to `~/.lpath.el' and modify it suitably for + your environment. Then type as following: + + % configure + % make EMACS=mule + + In this case, you shuold install manually. diff --git a/Mule23@1934.ja b/Mule23@1934.ja new file mode 100644 index 0000000..d759e64 --- /dev/null +++ b/Mule23@1934.ja @@ -0,0 +1,76 @@ +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 +=============== + +$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)) + + +INSTALL CUSTOM, APEL, FLIM, SEMI +================================ + +T-gnus $B$O:G?7HG$N(B CUSTOM, APEL, FLIM $B$*$h$S(B SEMI $B$+(B WEMI $B$rI,MW$H$7$^(B +$B$9!#$"$J$?$O$3$l$i$N%Q%C%1!<%8$r(B T-gnus $B$NA0$K%$%s%9%H!<%k$7$J$1$l$P$J(B +$B$j$^$;$s!#(BCUSTOM $B$K$D$$$F$O!":n$kA0$K$"$J$?$O0J2<$N%Q%C%A$rEv$F$kI,MW(B +$B$,$"$j$^$9!#(B + +------ cut here ------ cut here ------ cut here ------ cut here ------ +--- custom-1.9962/cus-face.el~ Wed Mar 4 19:52:39 1998 ++++ custom-1.9962/cus-face.el Mon Mar 9 08:05:33 1998 +@@ -96,7 +96,7 @@ + "Define a new FACE on all frames, ignoring X resources." + (interactive "SMake face: ") + (or (internal-find-face name) +- (let ((face (make-vector 8 nil))) ++ (let ((face (make-vector face-vector-length nil))) + (aset face 0 'face) + (aset face 1 name) + (let* ((frames (frame-list)) +------ cut here ------ cut here ------ cut here ------ cut here ------ + +$B$J$*(B Emacs v19 $BMQ$N:G?7$N(B CUSTOM $B$O0J2<$N$b$N$rF~l9g(B install $B$O. It should be installed +. It should be installed into the "gnus-5.6.53/etc" directory. Then you have to tell Emacs where Gnus is. You might put something diff --git a/README-offline.en b/README-offline.en index d889e94..65af7ee 100644 --- a/README-offline.en +++ b/README-offline.en @@ -1,7 +1,7 @@ 1) What's "gnus-offline (Gnus Offline Backend Utility)" ? ========================================================= -This program is a utility for Semi-gnus that handles messages +This program is a utility for T-gnus that handles messages (i.e. mail and news) in the "offline" state in a more simple way. It is basically designed for "gnus-agent". (See info about gnus-agent.) @@ -23,7 +23,7 @@ but "gnus-offline" provides a simple way for setup and operation. o Simple configuration -- An "INTERACTIVE" configuration to set the variables. -o Simple operation -- Type "g" in the *Group* buffer, and gnus-offline +o Simple operation -- Type "g" in the *Group* buffer, and gnus-offline will: o Dial (*) o Send mails & post news articles @@ -35,40 +35,30 @@ o Simple operation -- Type "g" in the *Group* buffer, and gnus-offline manually. This document is written mainly for the case using "gnus-agent" with -gnus-offline.el bundled in T-gnus 6.10.056 or later, and Semi-gnus -6.10.1 or later. (*) - - (*) T-gnus is based on the latest test version of Gnus. It is - called Pterodactyl Gnus or pGnus. - Most versions of Semi-gnus other than T-gnus are based on - Gnus version 5.6.xx. - There are a lot of changes between Gnus 5.6.xx and pGnus. - This document will refer to the differences caused by the - changes when it is important. +gnus-offline.el bundled in T-gnus 6.12.0 or later. 2) Installation =============== -As you are reading this document, this version of Semi-gnus includes +As you are reading this document, this version of T-gnus includes gnus-offline. Installation is simple. "make install" will automatically install "gnus-offline". -If the Semi-gnus comes without gnus-offline, or you want to install -the latest version of gnus-offline, you may manually byte-compile -"gnus-offline.el" and "gnus-ofsetup.el". Make sure they are in one of -the `load-path' directories. - 3) How to use ============= -o First, you must do a general setup for Semi-gnus (See info about the - setup). +o First, you must do a general setup for T-gnus (See info about the + setup). + +o Add the following code to ~/.emacs + + (autoload 'gnus-plugged "gnus-agent" nil t) + (autoload 'gnus-unplugged "gnus-agent" nil t) o Add the following code to ~/.emacs (load "gnus-ofsetup") (gnus-setup-for-offline) - (load gnus-offline-setting-file) o Add the following code to ~/.gnus @@ -84,52 +74,25 @@ o Restart Emacs. gnus-ofsetup.el will ask you some questions and ~/.newsrc.eld or not. Answer it carefully. See section 6) for details. -o At the first time, you must start Gnus in the "online" state and - decide which groups to subscribe (See info about subscribing). - -o Add the following code to ~/.gnus - - (gnus-agent-toggle-plugged nil) - -That's all. Restart Gnus and try typing "g" in the *Group* buffer. - -***Note*** - -Most versions of Semi-gnus have pop3-fma.el to operate multiple POP -accounts. T-gnus 6.10.56 or later does not because it can handle -multiple POP accounts itself. +o At the first time, you must start Gnus in the online state + (by M-x gnus-plugged) and decide which groups to subscribe (See info + about subscribing). -<<<<>>>> -T-gnus 6.10.56 or later doesn't contain "pop3-fma.el". If you are -updating to T-gnus 6.10.56 or later, remove the setting for -pop3-fma.el (or simply, delete the old ~/.gnus-offline.el). + From now on you can start Gnus as an offline reader by M-x gnus-unplugged. + Try typing "g" in the *Group* buffer. -[Semi-gnus with pop3-fma.el] -o pop3-fma-spool-file-alist -$B!!!!!!!!(B'( - ("po:account1@pop-server1" pass) - ("po:account2@pop-server2" pass) - : - : - )) -o pop3-fma-movemail-type - use movemail.exe ('exe) or pop3.el('lisp) +o You may want M-x gnus to start Gnus as an offline reader as + M-x gnus-unplugged. Then write the following code to ~/.emacs -[T-gnus 6.10.56 or later] - -o gnus-offline-mail-source - '( - (pop :user "manbou" :server "pop.ceres.dti.ne.jp") - (pop :user "imp9397" :server "mvb.biglobe.ne.jp") - : - : - ) + (setq gnus-plugged nil) + you can put it into ~/.gnus if there's no need to start Gnus as an online + reader (by M-x gnus-plugged). 4) User customizable variables in gnus-offline ============================================== -o gnus-offline-dialup-program +o gnus-offline-dialup-program Program name to dialup. o gnus-offline-dialup-program-arguments @@ -182,7 +145,7 @@ o gnus-offline-MTA-type o gnus-offline-drafts-queue-type Message queue type when spooling message. - + 'miee ... Use miee.el. 'agent ... Use gnus-agent.el. @@ -198,12 +161,6 @@ o gnus-offline-dialup-function o gnus-offline-hangup-function Function to hangup. -o gnus-offline-pop-password-file - File name to save username , mailserver and password. - -o gnus-offline-pop-password-decoding-function - Function to decode password. - 5) Commands in gnus-offline =========================== @@ -219,9 +176,6 @@ o M-x gnus-offline-toggle-on/off-send-mail o M-x gnus-offline-toggle-articles-to-fetch Toggle articles you want to fetch. -o M-x gnus-offline-toggle-movemail-program - Toggle movemail program. - o M-x gnus-offline-set-interval-time Set interval time(minute) to fetch article. @@ -231,55 +185,19 @@ o M-x gnus-offline-agent-expire 6) [!!!IMPORTANT!!!] About the pop password =========================================== -<<<<>>>> -T-gnus 6.10.56 or later doesn't contain "pop3-fma.el". If you are -updating to T-gnus 6.10.56 or later, remove the setting for -pop3-fma.el (or simply, delete the old ~/.gnus-offline.el). - -Under Semi-gnus with pop3-fma.el, you must enter the password for the -pop server every time you accesses the server. (We recommend you do -it.) - If your machine is stand alone, and nobody else uses it, you can save -the password in some ways. (But, on your own responsibility!) +the password. (But, on your own responsibility!) ---- - -One way is provided by gnus-ofsetup.el. At the first interactive -configuration, it will ask you whether to save the password in -~/.newsrc.eld or not. When you answer "y" to this question, the -password will be saved in ~/.newsrc.eld. (*) +At the first interactive configuration, it will ask you whether to +save the password in ~/.newsrc.eld or not. When you answer "y" to this +question, the password will be saved in ~/.newsrc.eld. (*) (*) Actually the following will be added to ~/.gnus-offline.el. - [Semi-gnus with pop3-fma.el] - - (add-hook 'gnus-setup-news-hook - (lambda () - (setq pop3-fma-save-password-information t) - (add-to-list 'gnus-variable-list 'pop3-fma-password))) - - [T-gnus 6.10.56 or later] - - (add-hook 'gnus-setup-news-hook - (lambda () - (add-to-list 'gnus-variable-list 'mail-source-password-cache))) + (add-hook + 'gnus-setup-news-hook + (lambda () + (add-to-list 'gnus-variable-list 'mail-source-password-cache))) Answer this question carefully, because the password will NOT be encoded! - ---- - -There is another way. It will not save the password in a file but keep -it in the memory as a variable. - -For Semi-gnus with pop3-fma.el, add the following code in -~/.gnus-offline.el. - - (setq pop3-fma-save-password-information t) - -In this way, once you enter the password at the startup of Gnus, it -will be kept as a variable `pop3-fma-password' until you quit Gnus. - -Under T-gnus 6.10.56 or later, the password will be kept as a variable -`mail-source-password-cache' by default. diff --git a/README-offline.ja b/README-offline.ja index 107ae49..40e7245 100644 --- a/README-offline.ja +++ b/README-offline.ja @@ -1,13 +1,12 @@ 1) gnus-offline (Gnus Offline Backend Utility)$B$C$F2?(B? -$B$3$l$O(B Semi-gnus $B$G%a%C%;!<%8$r$h$jMF0W$K%*%U%i%$%s4D6-$G07$&$?$a$N%f!<(B -$B%F%#%j%F%#$G$9!#(B +$B$3$l$O(B T-gnus $B$G%a%C%;!<%8$r$h$jMF0W$K%*%U%i%$%s4D6-$G07$&$?$a$N%f!<%F%#(B +$B%j%F%#$G$9!#(B -$BH$7$F$/$@$5$$!#(B (*) gnspool $B$O(B gn $B$H$$$&%K%e!<%9%j!<%@!<$H6&$KG[I[$5$l$F$$$^$9!#(B @@ -21,96 +20,65 @@ $B!&F0:n$KI,MW$JJQ?t$NBPOCE*@_Dj$,2DG=(B -$B!&%0%k!<%W%P%C%U%!$G!H(Bg$B!I$H%?%$%W$9$k$@$1$G(B $B%@%$%"%k%"%C%W(B->$B%a%$%k$*$h$S(B -$B%M%C%H%K%e!<%9$NAw$B%@%$%"%k%"%C%W$N@ZCG(B $B$H$$$&F0:n$r0l5$$K9T$&$3$H(B -$B$,2DG=$K$J$j$^$9!#(B($B$?$@$7@\B3!&$*$h$S@ZCG$OJLES@lMQ$N%D!<%k$,I,MW$G$9(B) +$B!&%0%k!<%W%P%C%U%!$G!H(Bg$B!I$H%?%$%W$9$k$@$1$G!"%@%$%"%k%"%C%W(B->$B%a%$%k(B + $B$*$h$S(B $B%M%C%H%K%e!<%9$NAw$B%@%$%"%k%"%C%W$N@ZCG(B $B$H$$$&F0:n$r0l5$(B + $B$K9T$&$3$H$,2DG=$K$J$j$^$9!#(B($B$?$@$7@\B3!&$*$h$S@ZCG$OJLES@lMQ$N%D!<(B + $B%k$,I,MW$G$9(B) -$B$J$*!"$3$N%I%-%e%a%s%H$G$Ol9g!"(Bgnus-offline.el $B$OFC$K2?$b9M$($J$/$F$b(B T-gnus $B$H(B -$BF1;~$K%$%s%9%H!<%k$5$l$^$9!#$=$&$G$J$$>l9g$O(B load-path $B$NDL$C$?%G%#%l%/(B -$B%H%j$K(B gnus-offline.el $B$H(B gnus-ofsetup.el $B$r(B($B%P%$%H%3%s%Q%$%k$7$F(B)$BCV$-$^(B -$B$9!#(B +T-gnus $B$r$*;H$$$N>l9g!"(Bgnus-offline.el $B$OFC$K2?$b9M$($J$/$F$b(B T-gnus +$B$HF1;~$K%$%s%9%H!<%k$5$l$^$9!#(B 3) $B;H$$J}(B -$B!&(BSemi-gnus $B$N0lHLE*$J;HMQJ}K!$K$D$$$F(B info $B$J$I$GD4$Y$F@_Dj$7$F$/$@$5$$!#(B +$B!&(BT-gnus $B$N0lHLE*$J;HMQJ}K!$K$D$$$F(B info $B$J$I$GD4$Y$F@_Dj$7$F$/$@$5$$!#(B + +$B!&0J2<$N%3!<%I$r(B .emacs $B$K2C$($^$9!#(B + + (autoload 'gnus-plugged "gnus-agent" nil t) + (autoload 'gnus-unplugged "gnus-agent" nil t) $B!&0J2<$N%3!<%I$r(B .emacs $B$K2C$($^$9!#(B (load "gnus-ofsetup") - (gnus-setup-for-offline) - (load gnus-offline-setting-file) + (gnus-setup-for-offline) $B!&0J2<$N%3!<%I$r(B .gnus $B$K2C$($^$9!#(B (gnus-agentize) -$B!&(BEmacs $B$r:F5/F0$7$^$9!#$9$k$H!"(Bgnus-ofsetup.el $B$,5/F0$7$^$9$N$G!"BPOCE*(B -$B$KI,MW$JJQ?t$N@_Dj$r9T$$$^$9!#(B($B2?$rF~NO$7$?$i$$$$$+$o$+$i$J$$>l9g$O(B 4) -$B$r;2>H$9$k$+!"(BTAB $B$GF~NO2DG=$J8uJd$r0lMwI=<($5$;$k$+$7$F$/$@$5$$(B)$B$9$Y$F(B -$B@_Dj$9$k$H%[!<%`%G%#%l%/%H%j$K(B .gnus-offline.el $B$H$$$&%U%!%$%k$,=PMh>e$,(B -$B$j$^$9!#(B(*) - - (*) $B!V(BPOP $B%Q%9%o!<%I$r(B ~/.newsrc.eld $B$KJ]B8$9$k$+$I$&$+!We$GEz$($F$/$@$5$$!#>\$7$/$O(B 6) $B$r;2(B - $B>H$7$F2<$5$$!#(B - -$B!&$3$N$"$H0lC6%*%s%i%$%s$G%5!<%P!<$K@\B3$7$F!"9XFI$9$k%0%k!<%W$r7h$a$F$/(B -$B$@$5$$!#(B($B>\$7$$J}K!$O(B Gnus $B$N(B info $B$r8+$F$/$@$5$$(B) +$B!&(BEmacs $B$r:F5/F0$7$^$9!#$9$k$H!"(Bgnus-ofsetup.el $B$,5/F0$7$^$9$N$G!"BPOC(B + $BE*$KI,MW$JJQ?t$N@_Dj$r9T$$$^$9!#(B + ($B2?$rF~NO$7$?$i$$$$$+$o$+$i$J$$>l9g$O(B 4) $B$r;2>H$9$k$+!"(BTAB $B$GF~NO(B + $B2DG=$J8uJd$r0lMwI=<($5$;$k$+$7$F$/$@$5$$(B) + $B$9$Y$F@_Dj$9$k$H%[!<%`%G%#%l%/%H%j$K(B .gnus-offline.el $B$H$$$&%U%!%$%k(B + $B$,=PMh>e$,$j$^$9!#(B(*) -$B!&(B.gnus $B$K0J2<$N%3!<%I$r2C$($^$9!#(B + (*) $B!V(BPOP $B%Q%9%o!<%I$r(B ~/.newsrc.eld $B$KJ]B8$9$k$+$I$&$+!We$GEz$($F$/$@$5$$!#>\$7$/$O(B 6) + $B$r;2>H$7$F2<$5$$!#(B -(gnus-agent-toggle-plugged nil) +$B!&$3$N$"$H0lC6(B M-x gnus-plugged $B$G(B Gnus $B$r5/F0$7$F!"9XFI$9$k%0%k!<%W$r(B + $B7h$a$F$/$@$5$$!#(B($B>\$7$$J}K!$O(B Gnus $B$N(B info $B$r8+$F$/$@$5$$(B) -$B$3$l$G(B Gnus $B$r:F5/F0$9$l$P%0%k!<%W%P%C%U%!$G!H(Bg$B!I$H%?%$%W$9$k$3$H$K$h$j(B -$BA05-$NF0:n$r$9$k$O$:$G$9!#(B + $B$=$7$F(B $Bl9g$O!"(B.emacs $B$K(B -$B$^$?!"(BT-gnus 6.10.56 $B0J9_$N$b$N$G$O(B Gnus $B<+BN$,J#?t$N%a%$%k%"%+%&%s%H$r(B -$B07$($^$9!#(B(6.10.55 $B0JA0$N(B T-gnus $B$G$bF1:-$N(B pop3-fma.el $B$rMQ$$$F$bJ#?t$N(B -$B%a%$%k%"%+%&%s%H$r4IM}$9$k$3$H$,=PMh$^$9!#(B) + (setq gnus-plugged nil) -<<<<<< $BCm0U(B >>>>>>>>>>> - -T-gnus 6.10.56 $B0J9_$N%P!<%8%g%s$K$O(B pop3-fma.el $B$O4^$^$l$F$$$^$;$s!#%P!<(B -$B%8%g%s%"%C%W$5$l$?J}$O4{B8$N(B pop3-fma.el $B$N@_Dj$O30$7$F$/$@$5$$!#(B -($B4{B8$N(B .gnus-offline.el $B$r>C$9$N$,$b$C$H$b4JC1$G$9(B) - -$B!Z(BSemi-gnus + pop3-fma.el$B![(B -$B!&(Bpop3-fma-spool-file-alist -$B!!!!!!!!(B'( - ("po:$B%"%+%&%s%H(B1@pop$B%5!<%P(B1" pass) - ("po:$B%"%+%&%s%H(B2@pop$B%5!<%P(B2" pass) - : - : - )) -$B!&(Bpop3-fma-movemail-type - $B%a%$%k(B $B!&(Bgnus-offline-dialup-program-arguments @@ -130,14 +98,14 @@ T-gnus 6.10.56 $B0J9_$N%P!<%8%g%s$K$O(B pop3-fma.el $B$O4^$^$l$F$$$^$;$s!#%P! $B!&(Bgnus-offline-mail-spool-directory $BAw?.%a!<%k$N%9%W!<%k%G%#%l%/%H%j(B - Offline $B>uBV$G(B Mail $B$rAw?.$9$k$H0lC6$3$3$G;XDj$7$?%G%#%l%/%H%j$KJ]B8$5$l(B - $B$^$9!#(B + Offline $B>uBV$G(B Mail $B$rAw?.$9$k$H0lC6$3$3$G;XDj$7$?%G%#%l%/%H%j$KJ](B + $BB8$5$l$^$9!#(B MIEE $B$r;HMQ$9$k>l9g0J30L58z$G$9!#(B $B!&(Bgnus-offline-news-spool-directory $BAw?.%K%e!<%9$N%9%W!<%k%G%#%l%/%H%j(B - Offline $B>uBV$G(B News $B$rAw?.$9$k$H0lC6$3$3$G;XDj$7$?%G%#%l%/%H%j$KJ]B8$5$l(B - $B$^$9!#(B + Offline $B>uBV$G(B News $B$rAw?.$9$k$H0lC6$3$3$G;XDj$7$?%G%#%l%/%H%j$KJ](B + $BB8$5$l$^$9!#(B MIEE $B$r;HMQ$9$k>l9g0J30L58z$G$9!#(B $B!&(Bgnus-offline-mail-treat-environ @@ -161,17 +129,18 @@ T-gnus 6.10.56 $B0J9_$N%P!<%8%g%s$K$O(B pop3-fma.el $B$O4^$^$l$F$$$^$;$s!#%P! $B!&(Bgnus-offline-interval-time Online job $B$r9T$&4V3V(B($BJ,(B) - Emacs $B$,(B idle $B>uBV$K$J$C$F$+$i$3$3$G;XDj$7$?;~4VKh$K(B Online $B>uBV$K$7(B - Mail/News $B$ruBV$K$J$C$F$+$i$3$3$G;XDj$7$?;~4VKh$K(B Online $B>uBV$K(B + $B$7(B Mail/News $B$r$N%j%9%H(B -$B!&(Bgnus-offline-pop-password-file - $B%f!<%6!!"%a!<%k%5!<%P!(B - -$B!&(Bgnus-offline-pop-password-decoding-function - $B%Q%9%o!<%I$rJ]B8$9$k:]$N0E9f2=$r9T$&$?$a$N4X?t!#(B - 5) gnus-offline M-x $B$GuBV(B/Offline $B>uBV$G$N(B Mail $BAw?.>uBV$r@ZBX$($^$9!#(B - Online $B>uBV$G$OD>@\Aw?.$7$^$9$,!"(BOffline $B>uBV$G$O0lC6(B spool $B$K=q$-9~$_!"(B - "g" $B$r2!$7$?;~$KA4ItAw?.$5$l$^$9!#(B + Online $B>uBV$G$OD>@\Aw?.$7$^$9$,!"(BOffline $B>uBV$G$O0lC6(B spool $B$K=q$-9~(B + $B$_!"(B"g" $B$r2!$7$?;~$KA4ItAw?.$5$l$^$9!#(B $B!&(BM-x gnus-offline-toggle-articles-to-fetch $B mail -> news -> both ... $B$N$h$&$K(B $B@Z$jBX$o$j$^$9!#(B -$B!&(BM-x gnus-offline-toggle-movemail-program - movemail $B%W%m%0%i%`$r@ZBX$($^$9!#(B - $B!&(BM-x gnus-offline-set-interval-time $B5-;v(B/Mail $B$N>>>>>>>>>> -T-gnus 6.10.56 $B0J9_$N%P!<%8%g%s$r;HMQ$9$kJ}$O(B pop3-fma.el $B$O4^$^$l$F$$$^(B -$B$;$s!#(BGnus $B$,J#?t$N(B POP3 $B%"%+%&%s%H$r07$($k$h$&$K$J$j$^$7$?$N$G!"(B -$B%P!<%8%g%s%"%C%W$5$l$k:]$O4{B8$N(B pop3-fma.el $B$N@_Dj$O30$7$F$/$@$5$$!#(B - -Semi-gnus + pop3-fma.el $B$G$O!"%G%U%)%k%H$G$O(B pop $B%5!<%P$N%Q%9%o!<%I$O(B -pop $B%5!<%P!<$K%"%/%;%9$9$kEY$KF~NO$9$kI,MW$,$"$j$^$9!#(B($B4pK\E*$K$3$N$^$^(B -$B$K$7$F$*$/$3$H$r?d>)$7$^$9(B) +$B!V$I$&$;<+J,0l?M$7$+;H$o$J$$%3%s%T%e!<%?$@$+$i$=$l$[$I%Q%9%o!<%I$N4IM}(B +$B$K$OCm0U$rJ'$&I,MW$,$J$$!W$H$$$&>l9g$K$OF~NO$NJ$/J}K!$,$"$j$^$9!#(B +$B$?$@$7!"EvA3%Q%9%o!<%I$rEp$^$l$k4m81$OA}$7$^$9$N$Gl9g$K$O$$$/$D$+$N(B -($BJ$/(B)$BJ}K!$,$"$j$^$9!#$?$@$7!"EvA3%Q%9%o!<%I$rEp$^$l$k4m81$OA}$7$^(B -$B$9$N$G0J2<$NJ}K!$N$$$:$l$+$r -$B=i2s5/F0;~$N(B gnus-ofsetup.el $B$K$h$kJQ?t@_Dj$N:]!"(B(=~/.gnus-offline.el $B$,(B -$B$J$$$H$-(B)$B%Q%9%o!<%I$r(B ~/.newsrc.eld $B$KJ]B8$9$k$+$I$&$+l9g$OJ]B8$5$l$k%Q%9%o!<%I$OJ?J8$N$^$^$J$N$G$+$J$j4m81$G$"$k$3(B -$B$H$r$4>5CN$N$&$($*;H$$$/$@$5$$!#(B - -<$BJ}K!(B2> -$B%Q%9%o!<%I$r%U%!%$%k$K;D$7$F$OCV$-$?$/$J$$$,%a%b%j>e$KJQ?t$H$7$F;D$C(B -$B$F$$$F$b9=$o$J$$!"$H$$$&>l9g$O!"(B~/.gnus-offline.el $B$K0J2<$N$h$&$J%3!<%I(B -$B$r2C$($F$/$@$5$$!#(B - -(setq pop3-fma-save-password-information t) - -$B$3$&$9$k$3$H$K$h$j!"%Q%9%o!<%I$O(B Gnus $B5/F0;~$KF~NO$9$k$@$1$K$J$j$^$9!#(B -$B%Q%9%o!<%I$O(B pop3-fma-password $B$H$$$&JQ?t$H$7$FJ];}$5$l$^$9!#(B + (add-hook + 'gnus-setup-news-hook + (lambda () + (add-to-list 'gnus-variable-list 'mail-source-password-cache))) -T-gnus 6.10.56 $B0J9_$N%P!<%8%g%s$r;HMQ$9$kJ}$OFC$K@_Dj$7$J$/$F$b$3$l$HF1(B -$B$8>uBV$,%G%U%)%k%H$K$J$C$F$$$^$9!#%Q%9%o!<%I$O(B mail-source-password-cache -$B$H$$$&JQ?t$KJ];}$5$l$^$9!#(B +$B$?$@$7$3$N>l9g$OJ]B8$5$l$k%Q%9%o!<%I$OJ?J8$N$^$^$J$N$G$+$J$j4m81$G$"$k(B +$B$3$H$r$4>5CN$N$&$($*;H$$$/$@$5$$!#(B diff --git a/README.T-gnus b/README.T-gnus index 1dcaf86..b549f6d 100644 --- a/README.T-gnus +++ b/README.T-gnus @@ -1,23 +1,29 @@ ======================================================================== Codename: T-gnus -Branch Tag: pgnus-ichikawa -Branch Owner: Tatsuya Ichikawa +Branch Tag: t-gnus-6_13 +Branch Status: Public, Stable Branch Goal: Implement latest features of gnus and offline features - Use Gnus in Offline status. + Use Gnus in Offline status. Branch Policy: (not defined yet) ======================================================================== NEWS: * New codename: "T-gnus" - In order to distinguish "ichikawa" branch from other branches, codename + In order to distinguish this branch from the other branches, codename was changed to "T-gnus" , gnu with T-Shirt. * New Features Use T-gnus in offline(Unplugged) status using gnus-offline. - T-gnus have also features that have "shuhei-k" branch, "chao-6_9" branch - , "keiichi" branch and the MainTrunk. + T-gnus have also features that have the branches `shuhei-k', `chao-6_9' + `keiichi', ... and the MainTrunk. + + If you would like to make T-gnus with Mule 2.3 based on Emacs 19.34, + see Mule23@1934 file for more information. + + You can use some convenient configure options, e.g. `--with-addpath=', + to build T-gnus easier. Try `./configure --help'. And added many other features by "ELIPS" @@ -25,8 +31,8 @@ NEWS: See TODO.ja -* T-gnus 6.10 - this is based on Pterodactyl Gnus. +* T-gnus 6.13 - this is based on Pterodactyl Gnus. - The latest T-gnus is T-gnus 6.10.072 (Based on pgnus-0.95). - It requires SEMI/WEMI-1.12/1.13, the latest FLIM-1.12, and the latest - APEL (9.13 or later). + The latest T-gnus is T-gnus 6.13.4 (Based on pgnus-0.99). It requires + SEMI/WEMI (1.13.5 or later), FLIM (1.13.1 or later), and APEL (9.20 or + later). diff --git a/README.branch b/README.branch index 3900dae..1f72794 100644 --- a/README.branch +++ b/README.branch @@ -1,7 +1,7 @@ README.branch --- description of branches and tags. (DRAFT) ======================================================================== -Semi-gnus revision tree (1999-01-19) +Semi-gnus revision tree (1999-08-04) vendor personal main trunk public branch branches branches @@ -9,13 +9,25 @@ Semi-gnus revision tree (1999-01-19) qGnus 0.?? ------> Semi-gnus 6.0.0 : : : himi <-- 6.0.7 - : ichikawa <-- 6.0.8 - : 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 - : | \ + : ichikawa <------ 6.0.8 + : | | + : 6.8.17 ---+ : + : : : : + : V : + : pgnus-ichikawa : + : | : + : 6.9.01 : + : : : (1999.07.02: turn into the public branch) + : +-------->---------------+ + : : : + : : V + : : 6.10.072 -----> t-gnus-6_12 + : akr <-- 6.2.3 : \ (for FLIM 1.12, + : shuhei-k <-- 6.3.1 \ stable) +Gnus 5.6.11 ------> 6.3.3 \ + : 6.4.0 (for SEMI 1.5) --> t-gnus-6_13 + : (6.4.?)------> for SEMI 1.5 (for FLIM 1.13, + : | \ develop) : | \ (Synch with original Gnus | ---> for SEMI 1.6 was done many times, but (6.4.?)------> 6.5 (for SEMI 1.7) @@ -98,6 +110,9 @@ Public Branches gnus-6_8 Semi-gnus for SEMI 1.8, FLIM 1.8 API (stable) gnus-6_9 Semi-gnus for SEMI 1.11, FLIM 1.12 API (stable) gnus-6_10 Semi-gnus for SEMI 1.12, FLIM 1.12 API (develop) + pgnus-ichikawa (Main trunk of T-gnus) + 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) Personal Branches @@ -111,8 +126,7 @@ Personal Branches ichikawa Owner: Tatsuya Ichikawa akr Owner: Tanaka Akira shuhei-k Owner: Shuhei KOBAYASHI - pgnus-ichikawa Owner: Tatsuya Ichikawa - keiichi Owner: Keiichi Suzuki + keiichi Owner: Keiichi Suzuki "semi-gnus" Tag diff --git a/README.branch.ja b/README.branch.ja index baa7360..079e5af 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-01-19) +Semi-gnus revision tree (1999-08-04) vendor personal main trunk public branch branches branches @@ -9,11 +9,23 @@ Semi-gnus revision tree (1999-01-19) qGnus 0.?? ------> Semi-gnus 6.0.0 : : : himi <-- 6.0.7 - : ichikawa <-- 6.0.8 - : akr <-- 6.2.3 - : shuhei-k <-- 6.3.1 -Gnus 5.6.11 ------> 6.3.3 - : 6.4.0 (for SEMI 1.5) + : ichikawa <------ 6.0.8 + : | | + : 6.8.17 ---+ : + : : : : + : V : + : pgnus-ichikawa : + : | : + : 6.9.01 : + : : : (1999.07.02: $B8xE*;^$K0a99$((B) + : +-------->---------------+ + : : : + : : V + : : 6.10.072 ----> t-gnus-6_12 + : akr <-- 6.2.3 : \ (for FLIM 1.12) + : shuhei-k <-- 6.3.1 \ +Gnus 5.6.11 ------> 6.3.3 --> t-gnus-6_13 + : 6.4.0 (for SEMI 1.5) (for FLIM 1.13) : (6.4.?)------> for SEMI 1.5 : | \ : | \ @@ -98,6 +110,9 @@ Public Branches gnus-6_8 Semi-gnus for SEMI 1.8, FLIM 1.8 API (stable) gnus-6_9 Semi-gnus for SEMI 1.11, FLIM 1.12 API (stable) gnus-6_10 Semi-gnus for SEMI 1.12, FLIM 1.12 API (develop) + pgnus-ichikawa (Main trunk of T-gnus) + 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) Personal Branches @@ -112,8 +127,7 @@ Personal Branches ichikawa Owner: Tatsuya Ichikawa akr Owner: Tanaka Akira shuhei-k Owner: Shuhei KOBAYASHI - pgnus-ichikawa Owner: Tatsuya Ichikawa - keiichi Owner: Keiichi Suzuki + keiichi Owner: Keiichi Suzuki "semi-gnus" Tag diff --git a/README.semi b/README.semi index bc1161e..a9910ff 100644 --- a/README.semi +++ b/README.semi @@ -1,16 +1,21 @@ -This package contains T-gnus 6.10. +This package contains T-gnus 6.13. -What is Semi-gnus? -================== +What is T-gnus? +=============== - Semi-gnus is a replacement of Gnus with gnus-mime for SEMI. It has -all features of Gnus and gnus-mime, so there are no need to install -Gnus to use it, and you must not use gnus-mime for SEMI. + T-gnus is a replacement of Gnus with gnus-mime for SEMI. It has all +features of Gnus and gnus-mime, so there are no need to install Gnus +to use it, and you must not use gnus-mime for SEMI. It requires APEL, FLIM and SEMI packages, so please get and install -them before to install it. T-gnus 6.10 requires APEL 9.13 or later, the -latest FLIM 1.12 and SEMI 1.12. You can get these packages from -ftp://ftp.jaist.ac.jp/pub/GNU/elisp/semi/ +them before to install it. T-gnus 6.13 requires APEL 9.20 or later, +FLIM (1.13.1 or later) and SEMI/WEMI (1.13.5 or later). You can get +these packages from: + +ftp://ftp.m17n.org/pub/mule/apel/ +ftp://ftp.m17n.org/pub/mule/flim/flim-1.13/ +ftp://ftp.m17n.org/pub/mule/semi/semi-1.13-for-flim-1.13/ + Required environment for SEMI is written in README.en of SEMI package. @@ -27,21 +32,29 @@ How to get? (via CVS) (1) checkout % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \ - checkout [-r TAG] gnus + checkout -r t-gnus-6_13 gnus (2) compile % cd gnus - % make EMACS= + % configure [options] + % make [options] (3) update - % cvs update [-r TAG] + % cvs update -r t-gnus-6_13 gnus Major tags are following: - semi-gnus assigned to the latest stable version. It is - very conservative. + t-gnus-6_12 Assigned to the latest stable version of T-gnus. + + t-gnus-6_13 Assigned to the latest development version of + T-gnus. + + pgnus-ichikawa The main trunk of T-gnus. + + semi-gnus Assigned to the latest stable version. It is + very conservative. Currently it is not used. for-semi-N1_N2 assigned to the latest stable version for SEMI API N1.N2 (N1 and N2 are natural number). @@ -54,16 +67,13 @@ Major tags are following: himi himi branch - pgnus-ichikawa ichikawa branch - Based on pGnus. - akr akr branch shuhei-k shuhei-k branch Mail-Followup-To/Mail-Reply-To, gnus-cache fix. - keiichi keiichi branch - nana-gnus-N1_N2 Stable version of `keiichi branch'. + keiichi keiichi branch + nana-gnus-N1_N2 Stable version of `keiichi branch'. For more detailed information, please read README.branch. @@ -71,12 +81,22 @@ For more detailed information, please read README.branch. How to get? (via ftp) ===================== - Semi-daily snapshots are also available from + The stable version of T-gnus is available from - ftp://ftp.jaist.ac.jp/pub/GNU/elisp/chamonix/gnus/ + ftp://ftp.jpl.org/pub/elisp/t-gnus-6.12/ - NOTE: These snapshots are automatically created from our repository -if something was changed within a day, and will usually not be tested. + and the experimental version of T-gnus is available from + + ftp://ftp.jpl.org/pub/elisp/t-gnus-6.13/ + + In addition, semi-daily snapshots are also available from + + ftp://ftp.jpl.org/pub/elisp/t-gnus-6.12/snapshots/ + or + ftp://ftp.jpl.org/pub/elisp/t-gnus-6.13/snapshots/ + + NOTE: These snapshots are manually created when the urge takes the + administrator of the a-ftp site, and will usually not be tested. How to join development @@ -85,21 +105,27 @@ How to join development If you have found a bug in Gnus proper, please do `M-x gnus-bug' and send a bug report to the Gnus maintainers. - If you have found a bug in Semi-gnus, or if you're not sure whether it -is a Gnus proper, please send a bug report to the Semi-gnus mailing list: + If you have found a bug in T-gnus, or if you're not sure whether it +is a Gnus proper, please send a bug report to the Semi-gnus mailing +list: semi-gnus-en@meadow.scphys.kyoto-u.ac.jp (English) semi-gnus-ja@meadow.scphys.kyoto-u.ac.jp (Japanese) -Suggestions for Semi-gnus improvements are also welcome. +Suggestions for T-gnus improvements are also welcome. - Via the Semi-gnus ML, you can report Semi-gnus related bugs, obtain -the latest release of Semi-gnus, and discuss future enhancements to -Semi-gnus. To join the Semi-gnus ML, send an empty e-mail to + Via the Semi-gnus ML, you can report T-gnus related bugs, obtain the +latest release of T-gnus, and discuss future enhancements to T-gnus. +To join the Semi-gnus ML, send an empty e-mail to semi-gnus-en-help@meadow.scphys.kyoto-u.ac.jp (English) semi-gnus-ja-help@meadow.scphys.kyoto-u.ac.jp (Japanese) In addition, we need developers. If you would like to develop it, please send mail to cvs@chamonix.jaist.ac.jp with your account name -and UNIX /etc/passwd style crypted password. +and UNIX /etc/passwd style crypted password. You can get the notice +of modifications in chamonix open CVS server via the mail which also +contains informations on the other modules. To subscribe it, send an +empty e-mail to + + cvs-info-help@chamonix.jaist.ac.jp diff --git a/README.semi.ja b/README.semi.ja index 9f44e67..222f17a 100644 --- a/README.semi.ja +++ b/README.semi.ja @@ -1,24 +1,28 @@ -$B$3$N%Q%C%1!<%8$K$O(B T-gnus 6.10 $B$,F~$C$F$$$^$9!#(B +$B$3$N%Q%C%1!<%8$K$O(B T-gnus 6.13 $B$,F~$C$F$$$^$9!#(B -Semi-gnus $B$H$O!)(B -================== +T-gnus $B$H$O!)(B +============= - Semi-gnus $B$O(B SEMI $B$N$?$a$N(B gnus-mime $B$H(B Gnus $B$NAH9g$;$rCV$-49$($k$b(B -$B$N$G$9!#(BGnus $B$H(B gnus-mime $B$NA4$F$N5!G=$r;}$C$F$$$^$9$N$G!"$3$l$r;HMQ$9(B -$B$k$?$a$K(B Gnus $B$r%$%s%9%H!<%k$9$kI,MW$O$J$/!"(BSEMI $B$N$?$a$N(B gnus-mime $B$O(B -$B;HMQ$7$F$O$$$1$^$;$s!#(B + T-gnus $B$O(B SEMI $B$N$?$a$N(B gnus-mime $B$H(B Gnus $B$NAH9g$;$rCV$-49$($k$b$N$G(B +$B$9!#(BGnus $B$H(B gnus-mime $B$NA4$F$N5!G=$r;}$C$F$$$^$9$N$G!"$3$l$r;HMQ$9$k$?(B +$B$a$K(B Gnus $B$r%$%s%9%H!<%k$9$kI,MW$O$J$/!"(BSEMI $B$N$?$a$N(B gnus-mime $B$O;HMQ(B +$B$7$F$O$$$1$^$;$s!#(B APEL, FLIM $B$*$h$S(B SEMI $B%Q%C%1!<%8$,I,MW$G$9$N$G!"%$%s%9%H!<%k$9$kA0(B -$B$K$=$l$i$r%$%s%9%H!<%k$7$F$/$@$5$$!#(BT-gnus 6.10 $B$O(B APEL 9.13 $B0J>e!":G(B -$B?7$N(B FLIM 1.12 $B$*$h$S(B SEMI 1.12 $B$rI,MW$H$7$^$9!#(B -$B$=$l$i$N%Q%C%1!<%8$O(B -ftp://ftp.jaist.ac.jp/pub/GNU/elisp/semi/ +$B$K$=$l$i$r%$%s%9%H!<%k$7$F$/$@$5$$!#(BT-gnus 6.13 $B$O(B APEL 9.20 $B0J>e!"(B +FLIM (1.13.1 $B0J>e(B) $B$*$h$S(B SEMI/WEMI (1.13.5 $B0J>e(B) $B$rI,MW$H$7$^$9!#$=$l(B +$B$i$N%Q%C%1!<%8$O(B + +ftp://ftp.m17n.org/pub/mule/apel/ +ftp://ftp.m17n.org/pub/mule/flim/flim-1.13/ +ftp://ftp.m17n.org/pub/mule/semi/semi-1.13-for-flim-1.13/ + $B$+$iH$7$F(B $B$/$@$5$$!#(B $B + % configure [options] + % make [options] (3) update - % cvs update [-r TAG] + % cvs update -r t-gnus-6_13 gnus $Bo$KJ]\$7$/$O!"(BREADME.branch.ja $B$r;2>H$7$F$/$@$5$$!#(B $B$l-Mh$N3HD%$r5DO@$7$?$j(B - $B$9$k$3$H$,$G$-$^$9!#(BSemi-gnus ML $B$K;22C$9$k$?$a$K$O(B + Semi-gnus ML $B$G$O!"(BT-gnus $B4XO"$N%P%0$rJs9p$7$?$j!":G?7$N(B T-gnus $B$N%j(B + $B%j!<%9$r-Mh$N3HD%$r5DO@$7$?$j$9$k$3$H$,$G$-$^(B + $B$9!#(BSemi-gnus ML $B$K;22C$9$k$?$a$K$O(B semi-gnus-en-help@meadow.scphys.kyoto-u.ac.jp ($B1Q8l(B) semi-gnus-ja-help@meadow.scphys.kyoto-u.ac.jp ($BF|K\8l(B) @@ -109,5 +127,12 @@ Semi-gnus $B$N2~A1$N$?$a$NDs0F$b4?7^$5$l$^$9!#(B $B$K6u$N%a!<%k$rAw$C$F$/$@$5$$!#(B $B2C$($F!"3+H/l9g$O!"(B -cvs@chamonix.jaist.ac.jp $B$K%"%+%&%s%HL>$H(B UNIX $B$N(B /etc/passwd $B$NMM<0$G(B -$B0E9f2=$5$l$?%Q%9%o!<%I$r%a!<%k$rAw$C$F$/$@$5$$!#(B + cvs@chamonix.jaist.ac.jp $B$K%"%+%&%s%HL>$H(B UNIX $B$N(B /etc/passwd $B$NMM<0(B + $B$G0E9f2=$5$l$?%Q%9%o!<%I$r%a!<%k$rAw$C$F$/$@$5$$!#(B + chamonix open CVS server $B$G9T$J$o$l$?JQ99$r%a!<%k$GDLCN$7$F$b$i$&$3(B + $B$H$b2DG=$G$9!#$3$l$K$O(B gnus $B0J30$N(B module $B$K4X$9$k>pJs$b4^$^$l$^$9!#(B + $BI,MW$JJ}$O(B + + cvs-info-help@chamonix.jaist.ac.jp + + $B$K6u$N%a!<%k$rAw$C$F0FFb$K=>$C$F2<$5$$!#(B diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 0000000..79ff3ac --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,103 @@ +dnl Copyright (C) 1999 NISHIDA Keisuke +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2, or (at your option) +dnl any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. + +AC_DEFUN(AM_PATH_LISPDIR, + [dnl # + dnl # Check Emacs + dnl # + AC_ARG_WITH(emacs, + [ --with-emacs=EMACS compile with EMACS [EMACS=emacs, xemacs...]], + [case "${withval}" in + yes) EMACS= ;; + no) AC_MSG_ERROR([emacs is not available]) ;; + *) EMACS=${withval} ;; + esac], EMACS=) + if test "x$EMACS" = "xt" -o "x$EMACS" = x; then + AC_PATH_PROGS(EMACS, emacs xemacs mule, no) + if test $EMACS = no; then + AC_MSG_ERROR(you should install Emacs first) + fi + fi + dnl # + dnl # Check Emacs directories + dnl # + AC_MSG_CHECKING([where emacs files are in]) + EMACS_BASENAME="`echo x$EMACS | sed -e 's/x//' -e 's/^.*\///'`" + if test "x$emacsdir" = x; then + if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix + fi + emacsdir="\$(datadir)/emacs" + case "$EMACS_BASENAME" in + emacs|emacs-*) + if test -d $prefix/lib/emacs; then + emacsdir="$prefix/lib/emacs" + fi + if test -d $prefix/share/emacs; then + emacsdir="$prefix/share/emacs" + fi + ;; + xemacs|xemacs-*) + if test -d $prefix/lib/xemacs; then + emacsdir="$prefix/lib/xemacs" + fi + if test -d $prefix/share/xemacs; then + emacsdir="$prefix/share/xemacs" + fi + ;; + mule|mule-*) + if test -d $prefix/lib/emacs; then + emacsdir="$prefix/lib/emacs" + fi + if test -d $prefix/share/emacs; then + emacsdir="$prefix/share/emacs" + fi + if test -d $prefix/lib/mule; then + emacsdir="$prefix/lib/mule" + fi + if test -d $prefix/share/mule; then + emacsdir="$prefix/share/mule" + fi + ;; + esac + fi + AC_MSG_RESULT($emacsdir) + AC_SUBST(emacsdir) + dnl # + dnl # Check Emacs site-lisp directories + dnl # + AC_ARG_WITH(lispdir, + [ --with-lispdir=DIR emacs lisp files go to DIR [guessed]], + [case "${withval}" in + yes) lispdir= ;; + no) AC_MSG_ERROR(lispdir is not available) ;; + *) lispdir=${withval} ;; + esac], lispdir=) + AC_MSG_CHECKING([where .elc files should go]) + if test "x$lispdir" = x; then + lispdir="$emacsdir/site-lisp" + if test -d $emacsdir/lisp; then + lispdir="$emacsdir/lisp" + fi + case "$EMACS_BASENAME" in + xemacs|xemacs-*) + lispdir="$lispdir/lookup" + ;; + esac + fi + AC_MSG_RESULT($lispdir) + AC_SUBST(lispdir)]) diff --git a/aclocal.m4 b/aclocal.m4 index c37987d..fa32a2a 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,31 +1,217 @@ -# serial 1 +dnl aclocal.m4 generated automatically by aclocal 1.3 + +dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +dnl This Makefile.in is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +dnl Copyright (C) 1999 NISHIDA Keisuke +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2, or (at your option) +dnl any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. AC_DEFUN(AM_PATH_LISPDIR, - [# If set to t, that means we are running in a shell under Emacs. - # If you have an Emacs named "t", then use the full path. - test "$EMACS" = t && EMACS= - AC_PATH_PROGS(EMACS, emacs xemacs, no) - if test $EMACS != "no"; then - AC_MSG_CHECKING([where .elc files should go]) - dnl Set default value - lispdir="\$(datadir)/emacs/site-lisp/gnus" + [dnl # + dnl # Check Emacs + dnl # + AC_ARG_WITH(emacs, + [ --with-emacs=EMACS compile with EMACS [EMACS=emacs, xemacs...]], + [case "${withval}" in + yes) EMACS= ;; + no) AC_MSG_ERROR([emacs is not available]) ;; + *) EMACS=${withval} ;; + esac], EMACS=) + if test "x$EMACS" = "xt" -o "x$EMACS" = x; then + AC_PATH_PROGS(EMACS, emacs xemacs mule, no) + if test $EMACS = no; then + AC_MSG_ERROR(you should install Emacs first) + fi + fi + dnl # + dnl # Check Emacs directories + dnl # + AC_MSG_CHECKING([where emacs files are in]) + EMACS_BASENAME="`echo x$EMACS | sed -e 's/x//' -e 's/^.*\///'`" + if test "x$emacsdir" = x; then if test "x$prefix" = "xNONE"; then - if test -d $ac_default_prefix/share/emacs/site-lisp; then - lispdir="\$(prefix)/share/emacs/site-lisp/gnus" - else - if test -d $ac_default_prefix/lib/emacs/site-lisp; then - lispdir="\$(prefix)/lib/emacs/site-lisp/gnus" - fi - fi - else - if test -d $prefix/share/emacs/site-lisp; then - lispdir="\$(prefix)/share/emacs/site-lisp/gnus" - else - if test -d $prefix/lib/emacs/site-lisp; then - lispdir="\$(prefix)/lib/emacs/site-lisp/gnus" - fi + prefix=$ac_default_prefix + fi + emacsdir="\$(datadir)/emacs" + case "$EMACS_BASENAME" in + emacs|emacs-*) + if test -d $prefix/lib/emacs; then + emacsdir="$prefix/lib/emacs" + fi + if test -d $prefix/share/emacs; then + emacsdir="$prefix/share/emacs" fi + ;; + xemacs|xemacs-*) + if test -d $prefix/lib/xemacs; then + emacsdir="$prefix/lib/xemacs" + fi + if test -d $prefix/share/xemacs; then + emacsdir="$prefix/share/xemacs" + fi + ;; + mule|mule-*) + if test -d $prefix/lib/emacs; then + emacsdir="$prefix/lib/emacs" + fi + if test -d $prefix/share/emacs; then + emacsdir="$prefix/share/emacs" + fi + if test -d $prefix/lib/mule; then + emacsdir="$prefix/lib/mule" + fi + if test -d $prefix/share/mule; then + emacsdir="$prefix/share/mule" + fi + ;; + esac + fi + AC_MSG_RESULT($emacsdir) + AC_SUBST(emacsdir) + dnl # + dnl # Check Emacs site-lisp directories + dnl # + AC_ARG_WITH(lispdir, + [ --with-lispdir=DIR emacs lisp files go to DIR [guessed]], + [case "${withval}" in + yes) lispdir= ;; + no) AC_MSG_ERROR(lispdir is not available) ;; + *) lispdir=${withval} ;; + esac], lispdir=) + AC_MSG_CHECKING([where .elc files should go]) + if test "x$lispdir" = x; then + lispdir="$emacsdir/site-lisp" + if test -d $emacsdir/lisp; then + lispdir="$emacsdir/lisp" fi - AC_MSG_RESULT($lispdir) + case "$EMACS_BASENAME" in + xemacs|xemacs-*) + lispdir="$lispdir/tgnus" + ;; + esac fi + AC_MSG_RESULT($lispdir) AC_SUBST(lispdir)]) + +# Do all the work for Automake. This macro actually does too much -- +# some checks are only needed if your package does certain things. +# But this isn't really a big deal. + +# serial 1 + +dnl Usage: +dnl AM_INIT_AUTOMAKE(package,version, [no-define]) + +AC_DEFUN(AM_INIT_AUTOMAKE, +[AC_REQUIRE([AM_PROG_INSTALL]) +PACKAGE=[$1] +AC_SUBST(PACKAGE) +VERSION=[$2] +AC_SUBST(VERSION) +dnl test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi +ifelse([$3],, +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") +AC_DEFINE_UNQUOTED(VERSION, "$VERSION")) +AC_REQUIRE([AM_SANITY_CHECK]) +AC_REQUIRE([AC_ARG_PROGRAM]) +dnl FIXME This is truly gross. +missing_dir=`cd $ac_aux_dir && pwd` +AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) +AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) +AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) +AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) +AC_REQUIRE([AC_PROG_MAKE_SET])]) + + +# serial 1 + +AC_DEFUN(AM_PROG_INSTALL, +[AC_REQUIRE([AC_PROG_INSTALL]) +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' +AC_SUBST(INSTALL_SCRIPT)dnl +]) + +# +# Check to make sure that the build environment is sane. +# + +AC_DEFUN(AM_SANITY_CHECK, +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "[$]*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "[$]*" != "X $srcdir/configure conftestfile" \ + && test "[$]*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "[$]2" = conftestfile + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +rm -f conftest* +AC_MSG_RESULT(yes)]) + +dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) +dnl The program must properly implement --version. +AC_DEFUN(AM_MISSING_PROG, +[AC_MSG_CHECKING(for working $2) +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if ($2 --version) < /dev/null > /dev/null 2>&1; then + $1=$2 + AC_MSG_RESULT(found) +else + $1="$3/missing $2" + AC_MSG_RESULT(missing) +fi +AC_SUBST($1)]) + diff --git a/configure b/configure index 37904cd..f96ef07 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.14.1 +# Generated automatically using autoconf version 2.13 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation @@ -11,6 +11,17 @@ ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: +ac_help="$ac_help + --with-emacs=EMACS compile with EMACS [EMACS=emacs, xemacs...]" +ac_help="$ac_help + --with-lispdir=DIR emacs lisp files go to DIR [guessed]" +ac_help="$ac_help + --with-addpath=PATH search Emacs-Lisp libraries with PATH + use colons to separate directory names" +ac_help="$ac_help + --with-xemacs=XEMACS compile with XEMACS [XEMACS=xemacs]" +ac_help="$ac_help + --with-packagedir=DIR package DIR for XEmacs [guessed]" # Initialize some variables set by options. # The variables have the same names as the options, with @@ -333,7 +344,7 @@ EOF verbose=yes ;; -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.14.1" + echo "configure generated by autoconf version 2.13" exit 0 ;; -with-* | --with-*) @@ -493,7 +504,7 @@ done if test -r "$cache_file"; then echo "loading cache $cache_file" - test -f "$cache_file" && . $cache_file + . $cache_file else echo "creating cache $cache_file" > $cache_file @@ -522,9 +533,9 @@ fi echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:526: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:537: 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 +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftestmake <<\EOF @@ -563,9 +574,9 @@ done if test -z "$ac_aux_dir"; then { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -579,9 +590,9 @@ 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:583: checking for a BSD compatible install" >&5 +echo "configure:594: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then -if eval "test \"\${ac_cv_path_install+set}\" = set"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" @@ -599,10 +610,6 @@ else grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : - elif test $ac_prog = install && - grep pwplus $ac_dir/$ac_prog >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : else ac_cv_path_install="$ac_dir/$ac_prog -c" break 2 @@ -631,20 +638,30 @@ echo "$ac_t""$INSTALL" 1>&6 # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -# If set to t, that means we are running in a shell under Emacs. - # If you have an Emacs named "t", then use the full path. - test "$EMACS" = t && EMACS= - for ac_prog in emacs xemacs + # Check whether --with-emacs or --without-emacs was given. +if test "${with_emacs+set}" = set; then + withval="$with_emacs" + case "${withval}" in + yes) EMACS= ;; + no) { echo "configure: error: emacs is not available" 1>&2; exit 1; } ;; + *) EMACS=${withval} ;; + esac +else + EMACS= +fi + + if test "x$EMACS" = "xt" -o "x$EMACS" = x; then + for ac_prog in emacs xemacs mule 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:647: checking for $ac_word" >&5 -if eval "test \"\${ac_cv_path_EMACS+set}\" = set"; then +echo "configure:664: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_EMACS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else case "$EMACS" in @@ -679,35 +696,85 @@ test -n "$EMACS" && break done test -n "$EMACS" || EMACS="no" - if test $EMACS != "no"; then - echo $ac_n "checking where .elc files should go""... $ac_c" 1>&6 -echo "configure:685: checking where .elc files should go" >&5 - lispdir="\$(datadir)/emacs/site-lisp/gnus" + if test $EMACS = no; then + { echo "configure: error: you should install Emacs first" 1>&2; exit 1; } + fi + fi + echo $ac_n "checking where emacs files are in""... $ac_c" 1>&6 +echo "configure:705: checking where emacs files are in" >&5 + EMACS_BASENAME="`echo x$EMACS | sed -e 's/x//' -e 's/^.*\///'`" + if test "x$emacsdir" = x; then if test "x$prefix" = "xNONE"; then - if test -d $ac_default_prefix/share/emacs/site-lisp; then - lispdir="\$(prefix)/share/emacs/site-lisp/gnus" - else - if test -d $ac_default_prefix/lib/emacs/site-lisp; then - lispdir="\$(prefix)/lib/emacs/site-lisp/gnus" - fi + prefix=$ac_default_prefix + fi + emacsdir="\$(datadir)/emacs" + case "$EMACS_BASENAME" in + emacs|emacs-*) + if test -d $prefix/lib/emacs; then + emacsdir="$prefix/lib/emacs" fi - else - if test -d $prefix/share/emacs/site-lisp; then - lispdir="\$(prefix)/share/emacs/site-lisp/gnus" - else - if test -d $prefix/lib/emacs/site-lisp; then - lispdir="\$(prefix)/lib/emacs/site-lisp/gnus" - fi + if test -d $prefix/share/emacs; then + emacsdir="$prefix/share/emacs" fi + ;; + xemacs|xemacs-*) + if test -d $prefix/lib/xemacs; then + emacsdir="$prefix/lib/xemacs" + fi + if test -d $prefix/share/xemacs; then + emacsdir="$prefix/share/xemacs" + fi + ;; + mule|mule-*) + if test -d $prefix/lib/emacs; then + emacsdir="$prefix/lib/emacs" + fi + if test -d $prefix/share/emacs; then + emacsdir="$prefix/share/emacs" + fi + if test -d $prefix/lib/mule; then + emacsdir="$prefix/lib/mule" + fi + if test -d $prefix/share/mule; then + emacsdir="$prefix/share/mule" + fi + ;; + esac + fi + echo "$ac_t""$emacsdir" 1>&6 + + # Check whether --with-lispdir or --without-lispdir was given. +if test "${with_lispdir+set}" = set; then + withval="$with_lispdir" + case "${withval}" in + yes) lispdir= ;; + no) { echo "configure: error: lispdir is not available" 1>&2; exit 1; } ;; + *) lispdir=${withval} ;; + esac +else + lispdir= +fi + + echo $ac_n "checking where .elc files should go""... $ac_c" 1>&6 +echo "configure:760: checking where .elc files should go" >&5 + if test "x$lispdir" = x; then + lispdir="$emacsdir/site-lisp" + if test -d $emacsdir/lisp; then + lispdir="$emacsdir/lisp" fi - echo "$ac_t""$lispdir" 1>&6 + case "$EMACS_BASENAME" in + xemacs|xemacs-*) + lispdir="$lispdir/tgnus" + ;; + esac fi + echo "$ac_t""$lispdir" 1>&6 # 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:710: checking for $ac_word" >&5 -if eval "test \"\${ac_cv_path_MAKEINFO+set}\" = set"; then +echo "configure:777: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else case "$MAKEINFO" in @@ -739,6 +806,34 @@ else echo "$ac_t""no" 1>&6 fi + +ADDITIONAL_LOAD_PATH= +# Check whether --with-addpath or --without-addpath was given. +if test "${with_addpath+set}" = set; then + withval="$with_addpath" + ADDITIONAL_LOAD_PATH=$with_addpath +fi + + + +XEMACS="xemacs" +# Check whether --with-xemacs or --without-xemacs was given. +if test "${with_xemacs+set}" = set; then + withval="$with_xemacs" + XEMACS=$with_xemacs +fi + + + +PACKAGEDIR= +# Check whether --with-packagedir or --without-packagedir was given. +if test "${with_packagedir+set}" = set; then + withval="$with_packagedir" + PACKAGEDIR=$with_packagedir +fi + + + trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure @@ -806,7 +901,7 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. cat > conftest.defs <<\EOF -s%#define \([^ ][^ ]*\) *\(.*\)%-D\1=\2%g +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g s%\[%\\&%g s%\]%\\&%g @@ -841,7 +936,7 @@ do echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.14.1" + echo "$CONFIG_STATUS generated by autoconf version 2.13" exit 0 ;; -help | --help | --hel | --he | --h) echo "\$ac_cs_usage"; exit 0 ;; @@ -852,7 +947,7 @@ done ac_given_srcdir=$srcdir ac_given_INSTALL="$INSTALL" -trap 'rm -fr `echo "Makefile lisp/Makefile texi/Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +trap 'rm -fr `echo "Makefile lisp/Makefile lisp/dgnuspath.el texi/Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then diff --git a/configure.in b/configure.in index 675635b..dc7bafa 100644 --- a/configure.in +++ b/configure.in @@ -3,4 +3,30 @@ AC_SET_MAKE AC_PROG_INSTALL AM_PATH_LISPDIR AC_PATH_PROG(MAKEINFO, makeinfo, no) -AC_OUTPUT(Makefile lisp/Makefile texi/Makefile) + +ADDITIONAL_LOAD_PATH= +AC_ARG_WITH( + addpath, + [ --with-addpath=PATH search Emacs-Lisp libraries with PATH + use colons to separate directory names], + ADDITIONAL_LOAD_PATH=$with_addpath, +) +AC_SUBST(ADDITIONAL_LOAD_PATH) + +XEMACS="xemacs" +AC_ARG_WITH( + xemacs, + [ --with-xemacs=XEMACS compile with XEMACS [XEMACS=xemacs]], + XEMACS=$with_xemacs, +) +AC_SUBST(XEMACS) + +PACKAGEDIR= +AC_ARG_WITH( + packagedir, + [ --with-packagedir=DIR package DIR for XEmacs [guessed]], + PACKAGEDIR=$with_packagedir, +) +AC_SUBST(PACKAGEDIR) + +AC_OUTPUT(Makefile lisp/Makefile lisp/dgnuspath.el texi/Makefile) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 09a7cf5..46c0f9c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,1193 @@ +Wed Dec 1 16:31:31 1999 Lars Magne Ingebrigtsen + + * gnus.el: Pterodactyl Gnus v0.99 is released. + +1999-12-01 14:28:49 Lars Magne Ingebrigtsen + + * dgnushack.el (dgnushack-compile): No webmail under Emacs. + + * gnus-sum.el (gnus-summary-refer-article): Wrong interactive + spec. + + * gnus-msg.el (gnus-configure-posting-styles): Eval `eval'. + (gnus-configure-posting-styles): No, don't. + (gnus-configure-posting-styles): Allow overriding files. + + * gnus-art.el (gnus-header-button-alist): Use browse-url + directly. + + * mm-decode.el (mm-inline-media-tests): Check feature vcard. + + * gnus-msg.el (gnus-summary-yank-message): New command and + keystroke. + + * message.el (message-yank-buffer): New command. + (message-buffers): New function. + + * gnus-sum.el (gnus-summary-catchup-and-goto-next-group): Select + next group in a more normal fasion. + + * mml.el (mml-boundary-function): New variable. + (mml-compute-boundary): Use it. + + * nnmh.el (nnmh-active-number): Skip past files that have buffers + that exist for them. + + * gnus-async.el (gnus-async-prefetch-next): Cancel timers. + (gnus-async-timer): New variable. + +1999-11-30 02:07:18 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-request-list): Be more lenient with + root addresses. + +1999-11-28 20:22:37 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-treatment-function-alist): Do + gnus-treat-capitalize-sentences. + +1999-11-30 09:07:53 Shenghuo ZHU + + * webmail.el (webmail-hotmail-article): Hotmail changes the + format. + +1999-11-29 Simon Josefsson + + * mm-decode.el (mm-display-external): For `copiousoutput' methods, + switch to buffer after calling program. + (mm-display-external): Use `shell-command-switch' instead of "-c". + +1999-11-27 15:21:25 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-possibly-change-server): Don't always + read groups file. + + * nnslashdot.el (nnslashdot-request-article): Convert

to +

. + +1999-11-24 20:18:24 Lars Magne Ingebrigtsen + + * message.el (message-mode): Doc fix. + +1999-11-24 09:25:00 Shenghuo ZHU + + * gnus-art.el (article-emphasize): Check group variable. + * rfc1843.el (rfc1843-decode-article-body): Ditto. + +1999-11-24 00:11:27 Shenghuo ZHU + + * mm-decode.el (mm-save-part-to-file): Inhibit jka-compr for any + type. + +1999-11-23 17:21:05 Shenghuo ZHU + + * webmail.el: Support www.netaddress.com, i.e. usa.net. + +1999-11-23 Hrvoje Niksic + + * mml.el (mml-quote-region): Insert ! after the hash. + +1999-11-23 05:08:23 Shenghuo ZHU + + * gnus-group.el (gnus-group-warchive-address-history): Change to + nil. + +1999-11-23 02:33:13 Shenghuo ZHU + + * webmail.el: Support mail.yahoo.com. + + * mail-source.el (mail-source-fetch-webmail): Add password check. + (mail-source-keyword-map): Use `subtype'. + +1999-11-22 04:35:43 Shenghuo ZHU + + * mail-source.el (mail-source-keyword-map): Add webmail. + (mail-source-fetcher-alist): Ditto. + (mail-source-fetch-webmail): New function. + * webmail.el: New file. + +1999-11-21 12:20:02 Shenghuo ZHU + + * nnwarchive.el (nnwarchive-request-group): Print 0 if it is nil. + +1999-11-21 12:19:11 Shenghuo ZHU + + * mailcap.el (mailcap-parse-mailcap): Don't skip double semicolon. + +1999-11-20 12:54:25 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-request-list): Add fetch-time slot. + (nnultimate-prune-days): New function. + (nnultimate-create-mapping): Use it. + (nnultimate-request-group): Only fetch the groups list if it has + not been done before. + (nnultimate-retrieve-headers): Don't write groups. + (nnultimate-create-mapping): Off-by-one error. + +1999-11-19 12:17:25 Lars Magne Ingebrigtsen + + * nnslashdot.el (nnslashdot-sane-retrieve-headers): Fix to match + threaded subjects. + +1999-11-20 02:22:52 Shenghuo ZHU + + * nnwarchive.el: Lots of changes make agent happy. + +1999-11-19 21:37:41 Shenghuo ZHU + + * gnus-start.el (gnus-get-unread-articles): Assert group is in + hashtb. + +1999-11-19 19:53:08 Shenghuo ZHU + + * mm-decode.el (mm-display-external): Write region with binary + mode. + +1999-11-18 14:52:05 Shenghuo ZHU + + * nnweb.el (nnweb-dejanews-create-mapping): Bind `text'. + +1999-11-18 14:35:01 Shenghuo ZHU + + * mm-uu.el (mm-uu-dissect): Use fake charset `gnus-decoded'. + (mm-uu-test): Now it is in restricted region. + + * gnus-art.el (article-decode-charset): Don't mm-uu-test. + + * mm-view.el (mm-view-message): Fix buffer leak. + (mm-inline-message): Support 'gnus-decoded. + + * mm-bodies.el (mm-decode-body): Ditto. + + * rfc2047.el (rfc2047-decode-region): Ditto. + +1999-11-18 Matthias Andree + + * imap.el (require): Added autoload for base64-encode-string. + +1999-11-17 Per Abrahamsen + + * gnus.el (gnus-refer-article-method): Made list value + customizable. + +1999-11-17 13:09:37 Shenghuo ZHU + + * gnus-sum.el (gnus-summary-recenter): set-window-start with + NOFORCE in Emacs case. + +1999-11-17 13:04:01 Shenghuo ZHU + + * gnus-art.el (gnus-request-article-this-buffer): Set + gnus-newsgroup-name. + +1999-11-16 23:53:22 Shenghuo ZHU + + * gnus-xmas.el (gnus-xmas-summary-recenter): set-window-start with + NOFORCE. + +1999-11-17 Simon Josefsson + + * gnus-start.el (gnus-get-unread-articles): Check server before + scanning. + +1999-11-16 10:01:03 Lars Magne Ingebrigtsen + + * gnus.el (gnus-valid-select-methods): nnslashdot is news. + + * nnslashdot.el (nnslashdot-login-name): New variable. + (nnslashdot-password): Ditto. + (nnslashdot-request-post): New function. + + * gnus-art.el (gnus-treat-buttonize): More testing. + + * mm-encode.el: Another CVS test. + + * gnus-art.el (gnus-treat-emphasize): Change default. + (gnus-treat-buttonize): Ditto. + (gnus-treat-buttonize): This is a test. + + * gnus-sum.el (gnus-build-old-threads): Bind mail-parse-charset. + (gnus-build-sparse-threads): Ditto. + (gnus-build-all-threads): Ditto. + + * nnheader.el (make-full-mail-header): Make into a subst. + + * dgnushack.el (dgnushack-compile): Skip all w3-dependent files + unless w3 is supplied. + + * gnus.el (gnus-refer-article-method): Doc fix. + + * gnus-sum.el: Do not accept a prefix. + (gnus-summary-refer-article): Accept a list of select methods. + +1999-11-15 21:28:40 Shenghuo ZHU + + * Makefile.in: Change `^ *' to `\t'. + +1999-11-11 Matt Pharr + + * message.el (message-forward): Pay attention to prefix argument + again and forward all headers when it is set, regardless of the + value of message-forward-ignored-headers. + +1999-11-15 20:44:50 William M. Perry + + * dgnushack.el (dgnushack-compile): Vpath file. + + * Makefile.in (SHELL): VPATH support. + +1999-11-15 20:37:17 Lars Magne Ingebrigtsen + + * gnus-ems.el: Check for cygwin32. + +1999-11-14 18:15:28 Shenghuo ZHU + + * mm-decode.el (mm-display-external): Use 'non-viewer. + +1999-11-14 15:21:06 Shenghuo ZHU + + * base64.el (base64-encode-string): An alias for base64-encode for + compatibility. + +1999-11-14 01:58:18 Shenghuo ZHU + + * nntp.el (nntp-retrieve-groups): Erase nntp-sever-buffer before + nntp-inhibit-erase. + +1999-11-13 Simon Josefsson + + * gnus-start.el (gnus-get-unread-articles): Use + nnfoo-retrieve-groups to find new news, if available. + (gnus-read-active-file-2): New function. + (gnus-get-unread-articles): Use it. + (gnus-read-active-file-1): Ditto. + +1999-11-13 17:59:18 Lars Magne Ingebrigtsen + + * mm-util.el (mm-find-mime-charset-region): Make sure + find-coding-systems-for-charsets is fbound. + + * gnus-ems.el: Typo fix. + +1999-11-13 Florian Weimer + + * mm-util.el (mm-find-mime-charset-region): Use UTF-8 if + it's available and makes sense. + +1999-11-12 19:56:23 Fabrice POPINEAU + + * gnus-score.el (gnus-score-save): Translate score file. + +1999-11-13 Simon Josefsson + + * mail-source.el (mail-source-keyword-map): For IMAP mail source, + added fetchflag and dontexpunge keywords. + (mail-source-fetch-imap): Use them. + +1999-11-12 Per Abrahamsen + + * gnus-start.el (gnus-level-subscribed, gnus-level-unsubscribed, + gnus-level-zombie, gnus-level-killed): Changed from `defcustom' to + `defconst'. + + * gnus-cus.el (gnus-group-parameters): Changed from `defcustom' to + `defconst'. + Mention that it is both for group and topic parameters. + (gnus-extra-topic-parameters): New constant, including `subscribe' + parameter. + (gnus-extra-group-parameters): New constant. + (gnus-group-customize): Use them. + + * gnus.el (gnus-select-method): Added default value and tag. + (gnus-refer-article-method): Added `DejaNews' customization option. + +1999-11-12 05:04:43 Lars Magne Ingebrigtsen + + * gnus-int.el (gnus-server-opened): Ignore denied servers. + + * gnus-ems.el (gnus-mule-max-width-function): New backquote + syntax. + + * nndoc.el (nndoc-mime-digest-type-p): Reinstated. + + * nnslashdot.el (nnslashdot-group-number): Changed default. + + * nnweb.el (nnweb-dejanews-create-mapping): Work with new deja. + (nnweb-dejanews-wash-article): Removed. + (nnweb-type-definition): Fetch by id. + + * gnus-msg.el (gnus-configure-posting-styles): Don't insert unless + we mean it. + + * nnslashdot.el (nnslashdot-group-number): Doc fix. + (nnslashdot-request-list): Use Ultramode as well. + (nnslashdot-date-to-date): Be more lenient. + (nnslashdot-threaded): New function. + +1999-11-11 17:40:54 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-mime-internalize-part): Doc fix. + +1999-11-11 14:32:48 Steinar Bang + + * nnweb.el (nnweb-type-definition): /=dnc + +1999-11-11 10:58:38 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-retrieve-headers): Work with american + dates. + (nnultimate-retrieve-headers): Wrong ordering. + +1999-11-11 07:31:51 Matt Pharr + + * message.el (message-forward-as-mime): New variable. + +1999-11-11 05:24:13 Lars Magne Ingebrigtsen + + * gnus-util.el (gnus-dd-mmm): Beware buggy dates. + +1999-11-10 16:50:01 Shenghuo ZHU + + * mail-source.el (mail-source-movemail-and-remove): New function. + (mail-source-keyword-map): Add `function' for `maildir'. + (mail-source-fetch-maildir): Use it. + +1999-11-10 13:48:10 Shenghuo ZHU + + * nnwarchive.el: New file. + * gnus-group.el (gnus-group-make-warchive-group): New function. + * gnus.el (gnus-valid-select-methods): Add `nnwarchive'. + +1999-11-10 12:13:30 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-retrieve-headers): Work for multi-page + subjects. + +1999-11-10 11:33:23 Rajappa Iyer + + * gnus-salt.el (gnus-pick-article-or-thread): Don't move point. + +1999-11-10 05:22:56 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-open-server): Do address. + (nnultimate-forum-table-p): New function. + + * nnweb.el (nnweb-insert-html): Renamed. + (nnweb-insert): New function. + + * nnultimate.el (nnultimate-insert-html): New function. + + * nnslashdot.el (nnslashdot-retrieve-headers): Don't do anything + if nov is evil. + (nnslashdot-retrieve-headers): use the sane version instead. + +1999-11-09 00:13:25 Lars Magne Ingebrigtsen + + * nnslashdot.el (nnslashdot-request-article): Fold case. + + * nnultimate.el: New file. + + * nnslashdot.el (nnslashdot-retrieve-headers): Skip the article + unless wanted. + + * gnus-start.el (gnus-active-to-gnus-format): Catch errors. + (gnus-read-active-file-1): Separated into own function. + (gnus-read-active-file): Catch quits. + + * nnslashdot.el (nnslashdot-request-article): Search better on + first article. + (nnslashdot-request-list): Fold case. + (nnslashdot-retrieve-headers): Ditto. + +1999-11-08 05:33:15 Lars Magne Ingebrigtsen + + * gnus.el: Autoload gnus-subscribe-topics. + +1999-11-07 22:56:46 Shenghuo ZHU + + * gnus-agent.el (gnus-agent-save-group-info): Remove backslash + before dot. + * gnus-util.el (gnus-write-active-file): Ditto. + +1999-11-07 22:31:10 Shenghuo ZHU + + * nnheader.el (nnheader-replace-duplicate-chars-in-string): New + function. + * gnus-cache.el (gnus-cache-file-name): Use it. + * gnus-agent.el (gnus-agent-group-path): Use it. + * nnmail.el (nnmail-group-pathname): Use it. + +1999-11-07 21:07:55 Shenghuo ZHU + + * gnus-start.el (gnus-active-to-gnus-format): Don't insert backslash + if cooked. + * gnus-util.el (gnus-write-active-file): Write cooked active file. + * gnus-agent.el (gnus-agent-save-group-info): Ditto. + * gnus.el (gnus-short-group-name): "..." proof. + +1999-11-07 20:03:16 Shenghuo ZHU + + * gnus-srvr.el (gnus-browse-foreign-server): Keep using `read' to + support nnslashdot. + +1999-11-08 00:06:02 Lars Magne Ingebrigtsen + + * nnslashdot.el (nnslashdot-retrieve-headers): Don't fetch too + many articles. + (nnslashdot-generate-active): New function. + (nnslashdot-request-newgroups): Use it. + + * gnus-start.el (gnus-active-to-gnus-format): Intern strings group + names. + + * nnslashdot.el (nnslashdot-request-newgroups): New function. + (nnslashdot-request-list): Not moderated. + +1999-11-07 Simon Josefsson + + * nnimap.el (nnimap-open-server): Remove error signal if + nnimap-server-buffer is nil (the check should've been `boundp'). + + * imap.el (imap-log): + * nnimap.el (nnimap-debug): Disable debugging by default. + +1999-11-07 01:17:53 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-subscribe-newsgroup-method): Doc fix. + + * gnus-topic.el (gnus-subscribe-topic): New function. + + * nnslashdot.el (nnslashdot-request-list): Give out extended group + names. + + * gnus-start.el (gnus-ignored-newsgroups): Disregard bogus chars + if starting with a quote. + +1999-11-07 13:06:11 Shenghuo ZHU + + * gnus-srvr.el (gnus-browse-foreign-server): Support backslash in + group name. + +1999-11-07 01:17:53 Lars Magne Ingebrigtsen + + * nnslashdot.el: New file. + + * nnheader.el (nnheader-insert-header): New function. + + * gnus-art.el (gnus-mime-internalize-part): Bind + mm-inlined-types. + + * nndraft.el (nndraft-request-expire-articles): Do all the backup + files. + +1999-10-29 David S. Goldberg + + * emacs-mime.texi (Customization): Document mm-inline-override-types + +1999-10-29 David S. Goldberg + + * emacs-mime.texi (Customization): Document mm-inline-override-types + +1999-10-29 David S. Goldberg + + * emacs-mime.texi (Customization): Document mm-inline-override-types + +1999-10-26 Katsumi Yamaoka + + * smiley.el (gnus-smiley-display): Use `smiley-toggle-buffer'. + (smiley-toggle-buffer): New function. + (smiley-buffer): Don't quote the function. + (smiley-toggle-extents): Ditto. + +1999-11-07 01:00:32 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-goto-missing-topic): Work even in + empty buffers. + +1999-11-06 23:16:24 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-mode-map): Use the summary article + edit. + +1999-11-06 22:56:49 Jens-Ulrik Petersen + + * gnus-group.el (gnus-group-read-ephemeral-group): Doc fix. + +1999-11-06 21:40:30 Lars Magne Ingebrigtsen + + * gnus-uu.el (gnus-uu-mark-thread): Don't move point around. + +1999-10-07 Katsumi Yamaoka + + * gnus-art.el (gnus-treat-predicate): Examine whether the argument + is list or not before condition. + +1999-10-07 Yoshiki Hayashi + + * gnus-art.el (gnus-treat-predicate): Work for (typep "something"). + +1999-11-06 19:18:14 Kevin the Bandicoot + + * gnus-art.el (gnus-emphasis-alist): New value. + +1999-11-06 13:57:13 Shenghuo ZHU + + * gnus-srvr.el (gnus-browse-foreign-server): Use both `read' and + `buffer-substring'. + +1999-11-06 04:24:30 Lars Magne Ingebrigtsen + + * gnus-art.el (article-date-ut): Keep the updated timer. + (gnus-emphasis-underline-italic): Doc fix. + + * gnus-msg.el (gnus-post-method): Doc fix. + (gnus-post-method): Change default. + +1999-11-06 04:12:13 Francisco Solsona + + * message.el (message-newline-and-reformat): Improvements. + +1999-11-06 03:51:24 Lars Magne Ingebrigtsen + + * message.el (message-newline-and-reformat): Don't insert too many + newlines. + (message-newline-and-reformat): Work even if not sc. + + * mm-view.el (mm-inline-message): Insert a delimiter at the end. + + * mm-decode.el (mm-inline-media-tests): Only if diff mode. + +1999-11-06 03:48:02 Toby Speight + + * mm-view.el (mm-display-patch-inline): New function. + +1999-11-06 03:47:54 Robert Bihlmeyer + + * mm-view.el (mm-display-patch-inline): New function. + +1999-11-06 02:17:54 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-read-move-group-name): Subscribe to the + group. + + * message.el (message-forward): Narrow to the right header. + + * gnus-sum.el (gnus-summary-limit-to-age): Protect against bogus + dates. + + * gnus-msg.el (gnus-configure-posting-styles): Use the + user-full-name function. + + * mm-bodies.el (mm-body-encoding): Use the choosing function. + (mm-body-charset-encoding-alist): Default to nil. + + * message.el (message-elide-ellipsis): Fix typo. + (message-elide-region): Ditto. + (message-elide-region): Don't insert a newline first. + +1999-11-05 20:28:27 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-cut-thread): Also cut for numberp + gnus-fetch-old-headers. + (gnus-cut-threads): Ditto. + (gnus-summary-initial-limit): Ditto. + (gnus-summary-limit-children): Ditto. + + * gnus-msg.el (gnus-configure-posting-styles): Allow `header' + matches. + +1999-11-06 Simon Josefsson + + * gnus-art.el (article-decode-encoded-words): + (gnus-mime-display-single): Don't assume gnus-summary-buffer is + live. + + * gnus.el (gnus-read-method): Add methods from + `gnus-opened-servers' to completion. Map entered method/address + into existing methods if possible. + + * gnus-group.el (gnus-group-make-group): Simplify method. + + * gnus-srvr.el (gnus-browse-unsubscribe-group): Simplify method. + + * mml.el (mml-preview): Remove mail-header-separator before + encoding. + +1999-11-05 20:28:27 Lars Magne Ingebrigtsen + + * message.el (message-read-from-minibuffer): New function. + +Fri Nov 5 19:10:02 1999 Lars Magne Ingebrigtsen + + * gnus.el: Pterodactyl Gnus v0.98 is released. + +1999-11-05 01:27:49 Shenghuo ZHU + + * gnus-agent.el (gnus-agent-expire): Remove bad line in NOV. + +1999-11-04 22:20:35 Shenghuo ZHU + + * mml.el (mml-generate-mime-1): Read attached binary file in + binary mode. + +1999-11-03 16:08:56 Shenghuo ZHU + + * gnus-sum.el (gnus-summary-toggle-header): Fix arg bug. + +1999-11-03 15:27:38 Shenghuo ZHU + + * mailcap.el (mailcap-viewer-lessp): Fix bug. + +1999-11-02 17:28:33 Shenghuo ZHU + + * gnus-sum.el (gnus-summary-search-article): Fix loop search bug. + +1999-10-31 21:24:59 Shenghuo ZHU + + * gnus-art.el (gnus-article-mime-match-handle-first): New function. + (gnus-article-mime-match-handle-function): New variable. + (gnus-article-view-part): Make `b' customizable. + +1999-10-29 14:30:07 Shenghuo ZHU + + * gnus-sum.el (gnus-article-get-xrefs): Test eobp. + +1999-09-27 Hrvoje Niksic + + * mm-decode.el (mm-attachment-override-types): Exclude text/plain. + +1999-10-26 23:27:44 Shenghuo ZHU + + * mm-decode.el (mm-dissect-buffer): CTE may come without CTL. + +1999-10-26 21:44:05 Shenghuo ZHU + + * gnus-srvr.el (gnus-browse-foreign-server): Use + `buffer-substring' instead of `read'. + +1999-10-23 Simon Josefsson + + * nnimap.el, imap.el, rfc2104.el: New files. + + * gnus.el (gnus-valid-select-methods): Add nnimap. + + * gnus-group.el (gnus-group-group-map): Add + gnus-group-nnimap-edit-acl, gnus-group-nnimap-expunge. + (gnus-group-nnimap-expunge): New function. + (gnus-group-nnimap-edit-acl): New function. + + * gnus-agent.el (gnus-agent-group-mode-map): Add + gnus-agent-synchronize. + (gnus-agent-synchronize): New function. + (gnus-agent-fetch-group-1): Check if server is open. + + * nnagent.el (nnagent-request-set-mark): Save marks. + + * mail-source.el (mail-source-keyword-map): New imap mail-source. + (mail-source-fetcher-alist): Map to imap fetcher function. + (mail-source-fetch-imap): New function. + + * gnus-art.el (article-hide-pgp): Hide all headers, not just + Hash:. + +1999-10-22 11:03:00 Shenghuo ZHU + + * gnus-topic.el (gnus-topic-sort-topics-1): New function. + (gnus-topic-sort-topics): New function. + (gnus-topic-make-menu-bar): Add sort-topics. + (gnus-topic-move): New function. + (gnus-topic-move-group): Move the topic if no group selected. + +1999-10-13 21:31:50 Shenghuo ZHU + + * gnus-art.el (gnus-article-setup-buffer): Fix buffer leak. + +1999-10-13 12:52:18 Shenghuo ZHU + + * mm-view.el (mm-inline-message): Fix leaving group bug. + +1999-10-07 17:59:49 Shenghuo ZHU + + * gnus-msg.el (gnus-post-method): Use normal method if current is + not available. + +1999-10-07 17:09:34 Shenghuo ZHU + + * nnmail.el (nnmail-insert-xref): Dealing with empty articles. + (nnmail-insert-lines): Ditto. + +1999-10-07 Shenghuo ZHU + + * nnfolder.el (nnfolder-insert-newsgroup-line): Insert a blank + line. + + * message.el (message-unsent-separator): One more separator. + +1999-10-06 Shenghuo ZHU + + * nnfolder.el (nnfolder-request-move-article): For empty article, + search till (point-max). + (nnfolder-retrieve-headers): Ditto. + (nnfolder-request-accept-article): Ditto. + (nnfolder-save-mail): Ditto. + (nnfolder-insert-newsgroup-line): Ditto. + +1999-10-05 Shenghuo ZHU + + * qp.el (quoted-printable-encode-region): Check eobp. + +1999-10-03 Shenghuo ZHU + + * nntp.el (nntp-retrieve-headers-with-xover): Fix hanging problem. + +1999-10-02 Shenghuo ZHU + + * nntp.el (nntp-send-xover-command): Wait for nothing if not + wait-for-reply. + +1999-09-29 Shenghuo ZHU + + * mm-uu.el (mm-uu-forward-begin-line): Change the regexp. + (mm-uu-forward-end-line): Ditto. + +1999-09-29 Didier Verna + + * binhex.el (binhex-decode-region): don't consider the value of + `enable-multibyte-characters' in XEmacs. + + * gnus-start.el (gnus-read-descriptions-file): ditto. + + * mm-util.el (mm-multibyte-p): ditto. + (mm-with-unibyte-buffer): ditto. + (mm-find-charset-region): use `mm-multibyte-p'. + + * mm-bodies.el (mm-decode-body): ditto. + (mm-decode-string): ditto. + + * lpath.el ((string-match "XEmacs" emacs-version)): Don't define + `enable-multibyte-characters' in XEmacs. + +1999-09-29 Shenghuo ZHU + + * mm-util.el (mm-binary-coding-system): Try binary first. + +1999-09-14 Shenghuo ZHU + + * rfc1843.el (rfc1843-decode-article-body): Don't decode twice. + +1999-09-10 Shenghuo ZHU + + * gnus-art.el (article-make-date-line): Add time-zone in iso8601 + format. + (article-date-ut): Find correct insert position. + +1999-09-03 Shenghuo ZHU + + * mm-uu.el (mm-uu-dissect): Do not dissect quoted-printable + forwarded message. + +1999-09-27 20:33:41 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-find-groups): Work for unactivated + groups. + + * message.el (message-resend): Use message mode when prompting. + + * gnus-art.el (article-hide-headers): Mark wash. + (article-emphasize): Ditto. + +1999-09-27 19:52:14 Vladimir Volovich + + * message.el (message-newline-and-reformat): Work for SC. + +1999-09-27 19:38:33 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-group-posting-charset-alist): 2047 in de.*. + + * gnus-sum.el (gnus-newsgroup-ignored-charsets): Add x-unknown. + +1999-10-20 David S. Goldberg + + * mm-decode.el mm-inline-override-types: New variable + + * mm-decode.el (mm-inline-override-p): New function + + * mm-decode.el (mm-inlined-p): Use it + +1999-10-20 David S. Goldberg + + * mm-decode.el mm-inline-override-types: New variable + + * mm-decode.el (mm-inline-override-p): New function + + * mm-decode.el (mm-inlined-p): Use it + +Mon Sep 27 15:18:05 1999 Lars Magne Ingebrigtsen + + * gnus.el: Pterodactyl Gnus v0.97 is released. + +1999-09-01 Brendan Kehoe + + * gnus-sum.el (gnus-summary-catchup-and-goto-next-group): Use + gnus-summary-next-group, not gnus-summary-next-article. Only give + 3 args. + +1999-09-25 08:07:57 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-fetch-group-1): Look in the group + buffer for params. + + * gnus-xmas.el (gnus-xmas-summary-recenter): Display one more + line. + + * message.el (message-forward-ignored-headers): New variable. + + * gnus-art.el (gnus-article-prepare-display): Nix out + gnus-article-wash-types. + + * gnus-agent.el (gnus-agent-create-buffer): New function. + (gnus-agent-fetch-group-1): Use it. + (gnus-agent-start-fetch): Ditto. + + * gnus-sum.el (gnus-summary-exit): Don't use + `gnus-use-adaptive-scoring'. + + * mail-source.el (mail-source-fetch-pop): Only store password when + successful. + + * gnus-nocem.el (gnus-nocem-scan-groups): Message better. + +1999-09-24 18:43:23 Lars Magne Ingebrigtsen + + * message.el (message-reply): Use it. + (message-dont-reply-to-names): New variable. + + * nntp.el (nntp-open-telnet): Don't erase-buffer. + + * mm-util.el (mm-preferred-coding-system): Typo fix. + + * message.el (message-bounce): Work for non-MIME. + + * gnus.el (gnus-short-group-name): Short the right parts of the + name. + +1999-09-24 18:17:48 Johan Kullstam + + * mm-encode.el (mm-qp-or-base64): New version. + +1999-09-10 Shenghuo ZHU + + * gnus-art.el (article-make-date-line): Fix time-zone bug. + +1999-09-09 Shenghuo ZHU + + * gnus-art.el (gnus-article-add-buttons): Don't delete markers out + of restricted region. + (gnus-mime-display-single): Set beg at correct point. + +1999-09-09 Shenghuo ZHU + + * nnmail.el (nnmail-process-maildir-mail-format): Typo. + +1999-09-09 Jens-Ulrik Petersen + + * gnus-msg.el (gnus-configure-posting-styles): Let + `gnus-posting-styles' have its say in posting-style: local + variable `styles' is already bound to `gnus-posting-styles' so + don't rebind it to nil. + +1999-09-24 18:10:56 Robert Bihlmeyer + + * gnus-score.el (gnus-summary-increase-score): Allow editing of + Message-ID. + +1999-09-08 Shenghuo ZHU + + * mm-encode.el (mm-encode-content-transfer-encoding): Fold + quoted-printable-encode-region. + + * qp.el (quoted-printable-encode-region): Assume charset + encoded. Fold every line in the region. + +1999-09-02 Shenghuo ZHU + + * gnus-srvr.el (gnus-browse-foreign-server): Read the first line + of active file. + +1999-09-01 Didier Verna + + * message.el (message-mode): allows whitespaces between multiple + instances of the fill character ">". + +1999-09-24 18:02:50 Kim-Minh Kaplan + + * mm-encode.el (mm-qp-or-base64): Fix. + +1999-09-01 12:18:01 Katsumi Yamaoka + + * message.el (message-send): Too much and. + +1999-09-24 17:58:07 Andreas Schwab + + * gnus-art.el (gnus-mime-view-part-as-type): Renamed. + +1999-08-28 12:44:20 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-score-headers): Work for nil scores. + +1999-08-27 20:46:11 Lars Magne Ingebrigtsen + + * gnus-cache.el (gnus-cache-write-active): Write full names. + + * gnus-util.el (gnus-write-active-file): Accept full name. + + * mm-decode.el (mm-inlinable-p): Use string-match on the types. + (mm-assoc-string-match): New function. + (mm-display-inline): Use it. + + * gnus-group.el (gnus-group-set-info): Work for nil group params. + + * gnus-msg.el (gnus-configure-posting-styles): Allow eval. + +1999-08-27 19:08:10 Florian Weimer + + * mml.el (mml-generate-multipart-alist): New variable. + +1999-08-27 15:30:02 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-treat-predicate): Work for (not 5). + +1999-08-27 Peter von der Ah-Ai + + * message.el (message-send): More helpful error message if sending + fails + +Fri Aug 27 13:17:48 1999 Lars Magne Ingebrigtsen + + * gnus.el: Pterodactyl Gnus v0.96 is released. + +1999-08-17 Simon Josefsson + + * gnus-start.el (gnus-groups-to-gnus-format): Only use agent + to get active info if method is covered by agent, otherwise + active info is lost. + +1999-08-17 Simon Josefsson + + * gnus-sum.el (gnus-summary-move-article): Report backend errors. + +1999-08-09 Dave Love + + * mm-util.el: Use `defalias', not `fset' for dummy functions. + +1999-08-09 Simon Josefsson + + * gnus-art.el (gnus-ignored-headers): Remove "X-Pgp-*" + (already matched by "^X-Pgp"), removed duplicate + X-Mailing-List, added several new junk headers. + +1999-08-01 Simon Josefsson + + * gnus-art.el (article-decode-charset): Don't assume + gnus-summary-buffer is live. + +1999-08-27 15:07:43 Paul Flinders + + * smiley.el (smiley-deformed-regexp-alist): Fix % smileys. + +1999-08-27 15:02:58 Florian Weimer + + * gnus-score.el (gnus-home-score-file): Work with absolute path + names. + +1999-07-17 Shenghuo ZHU + + * gnus-sum.el (gnus-articles-to-read): Return cached articles if + nothing else in the group. + +1999-07-16 Shenghuo ZHU + + * gnus-bcklg.el (gnus-backlog-enter-article): Check the size of + the article. + +1999-07-15 Shenghuo ZHU + + * mm-uu.el (mm-uu-dissect): Fix for base64 message. + +1999-07-15 Shenghuo ZHU + + * mm-uu.el (mm-uu-forward-end-line): Support forwarded message + from mutt. + +1999-07-14 Shenghuo ZHU + + * mm-bodies.el (mm-decode-content-transfer-encoding): Delete + whitespace. + +1999-07-14 Shenghuo ZHU + + * mm-util.el (mm-text-coding-system-for-write): New variable. + (mm-append-to-file): New function. + (mm-write-region): New function. + + * gnus-art.el (gnus-output-to-file): Use it. + * gnus-util.el (gnus-output-to-rmail): Ditto. + (gnus-output-to-mail): Ditto. + * gnus-uu.el (gnus-uu-binhex-article): Ditto. + +1999-07-14 Shenghuo ZHU + + * nnmail.el (nnmail-find-file): Use mm-auto-mode-alist. + + * nnheader.el (nnheader-insert-file-contents): Revert and use + mm-insert-file-contents. + (nnheader-find-file-noselect): Use mm-auto-mode-alist. + (nnheader-auto-mode-alist): Removed. + + * mm-util.el (mm-inhibit-file-name-handlers): New variable. + (mm-insert-file-contents): Add a new parameter for inserting + compressed file literally. + + * mml.el (mml-generate-mime-1): Insert non-text literally. + + * gnus.el: Change most mm-insert-file-contents back to nnheader. + +1999-07-13 Hrvoje Niksic + + * gnus-art.el (gnus-unbuttonized-mime-types): Fix docstring. + +1999-08-27 14:53:42 Oleg S. Tihonov + + * gnus-sum.el (gnus-group-charset-alist): Default fido7 to + koi8-r. + +1999-07-11 Shenghuo ZHU + + * mml.el (mml-insert-mime): Decode text. + (mml-to-mime): Narrow to headers-or-head. + +1999-07-11 Shenghuo ZHU + + * mm-view.el (mm-inline-text): Check + w3-meta-content-type-charset-regexp. + +1999-07-10 Simon Josefsson + + * gnus-agent.el (gnus-agent-fetch-group-1): Search topics for + predicate. + +1999-07-10 Alexandre Oliva + + * gnus-mlspl.el: Documentation fixes. + +1999-08-27 14:42:14 Rui Zhu + + * gnus-sum.el (gnus-summary-limit-to-age): Prompt better. + +1999-08-27 14:40:52 Michael Cook + + * gnus-art.el (gnus-article-setup-buffer): Kill all local + variables. + +1999-08-27 14:39:34 Hrvoje Niksic + + * nnmail.el (nnmail-get-new-mail): "Done". + +1999-08-27 14:38:14 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-kill-all-zombies): Only prompt when + interactive. + +1999-07-12 Shenghuo ZHU + + * gnus-art.el (article-decode-charset): Fix broken CT. + +1999-07-12 Shenghuo ZHU + + * gnus-agent.el (gnus-agent-fetch-group-1): Recreate agent + overview buffer if it is killed. +1999-08-27 14:26:03 Eric Marsden + + * gnus-art.el (article-babel): New version. + +1999-08-27 14:22:39 Jon Kv + + * nnfolder.el (nnfolder-request-list-newsgroups): Faster expiry. + +1999-07-10 Mike McEwan + + * gnus.texi (More Threading): Document new variable + `gnus-sort-gathered-threads-function'. + +1999-07-10 Mike McEwan + + * gnus.texi (More Threading): Document new variable + `gnus-sort-gathered-threads-function'. + +1999-07-11 Andreas Jaeger + + * gnus-uu.el (gnus-uu-digest-mail-forward): Delete file after + usage. + +1999-07-10 Shenghuo ZHU + + * mm-util.el (mm-running-xemacs): Removed. + (mm-coding-system-p): New function. + (mm-binary-coding-system): Safe guess. + (mm-text-coding-system): Ditto. + (mm-auto-save-coding-system): Ditto. + +1999-07-11 11:02:03 Lars Magne Ingebrigtsen + + * mm-encode.el (mm-qp-or-base64): Also consider control chars. + (mm-qp-or-base64): Reversed logic. + + * mm-decode.el (mm-save-part-to-file): Let coding system be + binary. + +1999-07-15 Mike McEwan + + * gnus-agent.el (gnus-agent-fetch-group-1): Allow 'agent-score' to + be set in topic parameters. + +1999-07-10 Mike McEwan + + * gnus-sum.el (gnus-sort-gathered-threads-function): New variable. + (gnus-sort-gathered-threads): Allow the user to specify the + function to use when sorting gathered threads. + + * gnus-agent.el (gnus-agent-get-undownloaded-list): Don't + mark cached articles as `undownloaded'. + +Tue Jul 20 02:39:56 1999 Peter von der Ah-Ai + + * gnus-sum.el (gnus-summary-exit): Allow gnus-use-adaptive-scoring + to have buffer local values. + +1999-07-25 Matt Pharr + + * gnus-group.el (gnus-group-make-doc-group): Notice when user + types 'g' for 'guess group type. + +1999-07-30 Simon Josefsson + + * nnmail.el (nnmail-remove-list-identifiers): Remove whitespace + after each regexp in nnmail-list-identifiers, not just after last + one. + + * gnus-sum.el (gnus-list-identifiers): New variable. + (gnus-summary-remove-list-identifiers): New function. + (gnus-select-newsgroup): Use it. + (gnus-summary-wash-hide-map): Bind + `gnus-article-hide-list-identifiers' to W W l. + (gnus-summary-make-menu-bar): Add list-identifiers command. + + * gnus-art.el (gnus-treat-strip-list-identifiers): New variable. + (gnus-treatment-function-alist): Add variable. + (article-hide-list-identifiers): New function. + (mapcar): Add function. + (gnus-article-hide): Use it. + Fri Jul 9 22:21:16 1999 Lars Magne Ingebrigtsen * gnus.el: Pterodactyl Gnus v0.95 is released. @@ -2521,7 +3711,7 @@ Mon Nov 30 23:38:02 1998 Shenghuo ZHU * mm-uu.el (mm-uu-dissect): Use mm-make-handle. -1998-12-01 01:53:49 François Pinard +1998-12-01 01:53:49 Fran-Agois Pinard * nndoc.el (nndoc-mime-parts-type-p): Do related. @@ -4267,7 +5457,7 @@ Mon Sep 14 18:55:38 1998 Lars Magne Ingebrigtsen * rfc2047.el (rfc2047-q-encode-region): Would bug out. -1998-09-13 François Pinard +1998-09-13 Fran-Agois Pinard * nndoc.el: Make nndoc-dissection-alist simpler for MIME, adjust all related functions. Handle message/rfc822 parts. Display subject on diff --git a/lisp/Makefile.in b/lisp/Makefile.in index dec6b87..2672f43 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -6,39 +6,46 @@ subdir = lisp top_srcdir = @top_srcdir@ EMACS = @EMACS@ -FLAGS = -batch -q -no-site-file -l ./dgnushack.el +FLAGS = -batch -q -no-site-file -l $(srcdir)/dgnushack.el INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ SHELL = /bin/sh VPATH = @srcdir@ -PACKAGEDIR = +PACKAGEDIR = @PACKAGEDIR@ all total: - rm -f *.elc auto-autoloads.el custom-load.el ; \ - $(EMACS) $(FLAGS) -f dgnushack-compile + rm -f *.elc auto-autoloads.el custom-load.el + srcdir=$(srcdir) $(EMACS) $(FLAGS) -f dgnushack-compile warn: - rm -f *.elc ; $(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" + 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" # The "clever" rule is unsafe, since redefined macros are loaded from # .elc files, and not the .el file. clever some: - $(EMACS) $(FLAGS) -f dgnushack-compile + srcdir=$(srcdir) $(EMACS) $(FLAGS) -f dgnushack-compile install: clever rm -f dgnushack.elc $(SHELL) $(top_srcdir)/mkinstalldirs $(lispdir) - for p in *.elc; do \ - echo " $(INSTALL_DATA) $$p $(lispdir)/$$p"; \ - $(INSTALL_DATA) $$p $(lispdir)/$$p; \ + @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; \ + fi; \ done package: - $(EMACS) $(FLAGS) -f dgnushack-make-package + srcdir=$(srcdir) $(EMACS) $(FLAGS) -f dgnushack-make-package install-package: clever rm -f dgnushack.elc - $(EMACS) $(FLAGS) -f dgnushack-make-package \ + srcdir=$(srcdir) $(EMACS) $(FLAGS) -f dgnushack-make-package \ -f dgnushack-install-package $(PACKAGEDIR) tags: @@ -62,8 +69,12 @@ gnus-load.el: echo >> gnus-load.el echo ";;; gnus-load.el ends here" >> gnus-load.el -distclean: - rm -f *.orig *.rej *.elc *~ Makefile +clean: + rm -f *.orig *.rej *.elc *~ + rm -f auto-autoloads.el custom-load.el + +distclean: clean + rm -f Makefile dgnuspath.el Makefile: $(srcdir)/Makefile.in ../config.status cd .. \ diff --git a/lisp/base64.el b/lisp/base64.el index a30d292..a396808 100644 --- a/lisp/base64.el +++ b/lisp/base64.el @@ -273,5 +273,6 @@ base64-encoder-program.") (kill-buffer (current-buffer))))) (fset 'base64-decode-string 'base64-decode) +(fset 'base64-encode-string 'base64-encode) (provide 'base64) diff --git a/lisp/binhex.el b/lisp/binhex.el index 9137a0a..45c7b60 100644 --- a/lisp/binhex.el +++ b/lisp/binhex.el @@ -3,7 +3,7 @@ ;; Author: Shenghuo Zhu ;; Create Date: Oct 1, 1998 -;; $Revision: 1.1.2.7 $ +;; $Revision: 1.1.2.8 $ ;; Time-stamp: ;; Keywords: binhex @@ -199,12 +199,12 @@ 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 (boundp 'enable-multibyte-characters) + (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 work-buffer (generate-new-buffer " *binhex-work*")) (setq-default enable-multibyte-characters multibyte)) (setq work-buffer (generate-new-buffer " *binhex-work*"))) (buffer-disable-undo work-buffer) diff --git a/lisp/dgnushack.el b/lisp/dgnushack.el index e2b30e4..cdedb1b 100644 --- a/lisp/dgnushack.el +++ b/lisp/dgnushack.el @@ -27,12 +27,170 @@ ;;; 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)) +(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))))) + ((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)))))) + (fset 'facep 'ignore) (require 'cl) + +;; cl functions. +(define-compiler-macro mapc (&whole form fn seq &rest rest) + (if (and (fboundp 'mapc) + (subrp (symbol-function 'mapc))) + form + (if rest + `(let* ((fn ,fn) + (seq ,seq) + (args (cons seq ,rest)) + (m (apply (function min) (mapcar (function length) args))) + (n 0)) + (while (< n m) + (apply fn (mapcar (function (lambda (arg) (nth n arg))) args)) + (setq n (1+ n))) + seq) + `(let ((seq ,seq)) + (mapcar ,fn seq) + seq)))) + +(define-compiler-macro last (&whole form x &optional n) + (if (and (fboundp 'last) + (subrp (symbol-function 'last))) + form + (if n + `(let* ((x ,x) + (n ,n) + (m 0) + (p x)) + (while (consp p) + (incf m) + (pop p)) + (if (<= n 0) + p + (if (< n m) + (nthcdr (- m n) x) + x))) + `(let ((x ,x)) + (while (consp (cdr x)) + (pop x)) + x)))) + +;; 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 +;; before loading bytecomp. Bytecomp doesn't overwrite this function. +(defun byte-compile-dest-file (filename) + "Convert an Emacs Lisp source file name to a compiled file name. + In addition, remove directory name part from FILENAME." + (setq filename (byte-compiler-base-file-name filename)) + (setq filename (file-name-sans-versions filename)) + (setq filename (file-name-nondirectory filename)) + (if (memq system-type '(win32 w32 mswindows windows-nt)) + (setq filename (downcase filename))) + (cond ((eq system-type 'vax-vms) + (concat (substring filename 0 (string-match ";" filename)) "c")) + ((string-match emacs-lisp-file-regexp filename) + (concat (substring filename 0 (match-beginning 0)) ".elc")) + (t (concat filename ".elc")))) + (require 'bytecomp) -(push "." load-path) -(load "./lpath.el" nil t) + +(defvar srcdir (or (getenv "srcdir") ".")) + +(push srcdir 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 + ;; Optimize byte code for `char-after'. +;;; (put 'char-after 'byte-optimizer 'byte-optimize-char-after) +;;; (defun byte-optimize-char-after (form) +;;; (if (null (cdr form)) +;;; '(char-after (point)) +;;; form)) + (byte-defop-compiler char-after 0-1))) + +(condition-case nil + (char-before) + (wrong-number-of-arguments + (define-compiler-macro char-before (&whole form &optional pos) + (if (null pos) + '(char-before (point)) + 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) + +(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)) + +;; Bind functions defined by `defun-maybe'. +(put 'defun-maybe 'byte-hunk-handler 'byte-compile-file-form-defun-maybe) +(defun byte-compile-file-form-defun-maybe (form) + (if (and (not (fboundp (nth 1 form))) + (memq 'unresolved byte-compile-warnings)) + (setq byte-compile-function-environment + (cons (cons (nth 1 form) + (cons 'lambda (cdr (cdr form)))) + byte-compile-function-environment))) + form) + +(condition-case nil + :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)))) + +;; Unknown variables and functions. +(unless (boundp 'buffer-file-coding-system) + (defvar buffer-file-coding-system (symbol-value 'file-coding-system))) +(autoload 'font-lock-set-defaults "font-lock") +(unless (fboundp 'coding-system-get) + (defalias 'coding-system-get 'ignore)) +(when (boundp 'MULE) + (defalias 'find-coding-system 'ignore)) +(unless (fboundp 'get-charset-property) + (defalias 'get-charset-property 'ignore)) +(unless (featurep 'xemacs) + (defalias 'Custom-make-dependencies 'ignore) + (defalias 'toolbar-gnus 'ignore) + (defalias 'update-autoloads-from-directory 'ignore)) +(autoload 'texinfo-parse-line-arg "texinfmt") + +(unless (fboundp 'with-temp-buffer) + ;; Pickup some macros. + (require 'emu)) (defalias 'device-sound-enabled-p 'ignore) (defalias 'play-sound-file 'ignore) @@ -61,23 +219,30 @@ 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 "." nil "^[^=].*\\.el$")) + (let ((files (delete "dgnuspath.el" + (directory-files srcdir nil "^[^=].*\\.el$"))) (xemacs (string-match "XEmacs" emacs-version)) ;;(byte-compile-generate-call-tree t) file elc) (condition-case () (require 'w3-forms) - (error (setq files (delete "nnweb.el" (delete "nnlistserv.el" files))))) + (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)) - (when (or (and (not xemacs) - (not (member file '("gnus-xmas.el" "gnus-picon.el" - "messagexmas.el" "nnheaderxm.el" - "smiley.el" "x-overlay.el")))) - (and xemacs - (not (member file '("md5.el"))))) + (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 @@ -112,8 +277,18 @@ Modify to suit your needs.")) (message "Updating autoloads for directory %s..." default-directory) (let ((generated-autoload-file "auto-autoloads.el") - noninteractive) - (update-autoloads-from-directory default-directory)) + 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 @@ -129,7 +304,9 @@ Modify to suit your needs.")) lisp-dir (mapconcat 'identity - (sort (directory-files "." nil "\\.elc?$") + (sort (delete "dgnuspath.el" + (delete "patchs.elc" + (directory-files "." nil "\\.elc?$"))) 'string-lessp) (concat "\n" lisp-dir)) "\ninfo/" @@ -179,7 +356,11 @@ You must specify the name of the package path as follows: (unless (file-directory-p pkginfo-dir) (make-directory pkginfo-dir)) - (setq files (sort (directory-files "." nil "\\.elc?$") 'string-lessp)) + (setq files + (sort (delete "dgnuspath.el" + (delete "dgnuspath.elc" + (directory-files "." nil "\\.elc?$"))) + 'string-lessp)) (mapcar (lambda (file) (unless (member file files) @@ -210,21 +391,101 @@ You must specify the name of the package path as follows: (message "Done"))) -(defun dgnushack-add-info-suffix-maybe () - ;; This function must be invoked from lisp directory. - (setq default-directory "../texi/") - (let ((coding-system-for-read 'raw-text) - (coding-system-for-write 'raw-text) - (files (directory-files "." nil dgnushack-texi-file-regexp)) - file make-backup-files) - (while (setq file (pop files)) - (find-file file) - (when (and (re-search-forward - "^@setfilename[\t ]+\\([^\t\n ]+\\)" nil t) - (not (string-match "\\.info$" (match-string 1)))) - (copy-file file (concat file "_") nil t) - (insert ".info") - (save-buffer)) - (kill-buffer (current-buffer))))) +(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) + (let ((auto-save-default nil) + (find-file-run-dired nil) + coding-system-for-write) + (let ((error 0) + file + (files ())) + (while command-line-args-left + (setq file (expand-file-name (car command-line-args-left))) + (cond ((not (file-exists-p file)) + (message ">> %s does not exist!" file) + (setq error 1 + command-line-args-left (cdr command-line-args-left))) + ((file-directory-p file) + (setq command-line-args-left + (nconc (directory-files file) + (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)) + (condition-case err + (progn + (if buffer-file-name (kill-buffer (current-buffer))) + (find-file file) + (setq coding-system-for-write buffer-file-coding-system) + (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)) + ;; process @include before updating node + ;; This might produce some problem if we use @lowersection or + ;; such. + (let ((input-directory default-directory) + (texinfo-command-end)) + (while (re-search-forward "^@include" nil t) + (setq texinfo-command-end (point)) + (let ((filename (concat input-directory + (texinfo-parse-line-arg)))) + (re-search-backward "^@include") + (delete-region (point) (save-excursion + (forward-line 1) + (point))) + (message "Reading included file: %s" filename) + (save-excursion + (save-restriction + (narrow-to-region + (point) + (+ (point) + (car (cdr (insert-file-contents filename))))) + (goto-char (point-min)) + ;; Remove `@setfilename' line from included file, + ;; if any, so @setfilename command not duplicated. + (if (re-search-forward "^@setfilename" + (save-excursion + (forward-line 100) + (point)) + t) + (progn + (beginning-of-line) + (delete-region (point) (save-excursion + (forward-line 1) + (point)))))))))) + (texinfo-mode) + (texinfo-every-node-update) + (set-buffer-modified-p nil) + (message "texinfo formatting %s..." file) + (texinfo-format-buffer nil) + (if (buffer-modified-p) + (progn (message "Saving modified %s" (buffer-file-name)) + (save-buffer)))) + (error + (message ">> Error: %s" (prin1-to-string err)) + (message ">> point at") + (let ((s (buffer-substring (point) + (min (+ (point) 100) + (point-max)))) + (tem 0)) + (while (setq tem (string-match "\n+" s tem)) + (setq s (concat (substring s 0 (match-beginning 0)) + "\n>> " + (substring s (match-end 0))) + tem (1+ tem))) + (message ">> %s" s)) + (setq error 1)))) + (kill-emacs error)))) ;;; dgnushack.el ends here diff --git a/lisp/dgnuspath.el.in b/lisp/dgnuspath.el.in new file mode 100644 index 0000000..36749e6 --- /dev/null +++ b/lisp/dgnuspath.el.in @@ -0,0 +1,15 @@ +;; -*- Emacs-Lisp -*- +(let ((addpath + "@ADDITIONAL_LOAD_PATH@" + ) + path paths) + (while (string-match "[^\0-\37:]+" addpath) + (setq path (file-name-as-directory + (expand-file-name (match-string 0 addpath))) + addpath (substring addpath (match-end 0))) + (if (string-match "apel/" path) + (setq path (substring path 0 (match-beginning 0)))) + (if (file-directory-p path) + (setq paths (nconc paths (list path))))) + (or (null paths) + (setq load-path (nconc paths load-path)))) diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index 9c366ef..889283f 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -24,13 +24,12 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'gnus) (require 'gnus-cache) (require 'nnvirtual) (require 'gnus-sum) -(eval-when-compile - (require 'cl) - (require 'gnus-score)) +(eval-when-compile (require 'gnus-score)) (defcustom gnus-agent-directory (nnheader-concat gnus-directory "agent/") "Where the Gnus agent will store its files." @@ -78,6 +77,14 @@ If nil, only read articles will be expired." :group 'gnus-agent :type 'hook) +(defcustom gnus-agent-large-newsgroup nil + "*The number of articles which indicates a large newsgroup. +If the number of unread articles exceeds it, The number of articles to be +fetched will be limited to it. If not a positive integer, never consider it." + :group 'gnus-agent + :type '(choice (const nil) + (integer :tag "Number"))) + ;;; Internal variables (defvar gnus-agent-history-buffers nil) @@ -111,12 +118,20 @@ If nil, only read articles will be expired." (setq gnus-agent t) (gnus-agent-read-servers) (gnus-category-read) - (setq gnus-agent-overview-buffer - (gnus-get-buffer-create " *Gnus agent overview*")) + (gnus-agent-create-buffer) (add-hook 'gnus-group-mode-hook 'gnus-agent-mode) (add-hook 'gnus-summary-mode-hook 'gnus-agent-mode) (add-hook 'gnus-server-mode-hook 'gnus-agent-mode)) +(defun gnus-agent-create-buffer () + (if (gnus-buffer-live-p gnus-agent-overview-buffer) + t + (setq gnus-agent-overview-buffer + (gnus-get-buffer-create " *Gnus agent overview*")) + (with-current-buffer gnus-agent-overview-buffer + (set-buffer-multibyte t)) + nil)) + (gnus-add-shutdown 'gnus-close-agent 'gnus) (defun gnus-close-agent () @@ -158,7 +173,8 @@ If nil, only read articles will be expired." (defun gnus-agent-start-fetch () "Initialize data structures for efficient fetching." (gnus-agent-open-history) - (setq gnus-agent-current-history (gnus-agent-history-buffer))) + (setq gnus-agent-current-history (gnus-agent-history-buffer)) + (gnus-agent-create-buffer)) (defun gnus-agent-stop-fetch () "Save all data structures and clean up." @@ -219,6 +235,7 @@ If nil, only read articles will be expired." "Jc" gnus-enter-category-buffer "Jj" gnus-agent-toggle-plugged "Js" gnus-agent-fetch-session + "JY" gnus-agent-synchronize "JS" gnus-group-send-drafts "Ja" gnus-agent-add-group "Jr" gnus-agent-remove-group) @@ -281,7 +298,7 @@ If nil, only read articles will be expired." (setq gnus-plugged plugged) (gnus-run-hooks 'gnus-agent-unplugged-hook) (setcar (cdr gnus-agent-mode-status) " Unplugged")) - (set-buffer-modified-p t)) + (force-mode-line-update)) (defun gnus-agent-close-connections () "Close all methods covered by the Gnus agent." @@ -410,6 +427,27 @@ 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." + (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) + (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"))))))) + ;;; ;;; Server mode commands ;;; @@ -520,7 +558,8 @@ the actual number of articles toggled is returned." article) (while (setq article (pop articles)) (unless (or (cdr (assq article gnus-agent-article-alist)) - (memq article gnus-newsgroup-downloadable)) + (memq article gnus-newsgroup-downloadable) + (memq article gnus-newsgroup-cached)) (push article gnus-newsgroup-undownloaded)))) ;; Then mark downloaded downloadable as not-downloadable, ;; if you get my drift. @@ -594,16 +633,24 @@ the actual number of articles toggled is returned." (when (re-search-forward (concat "^" (regexp-quote group) " ") nil t) (gnus-delete-line)) - (insert group " " (number-to-string (cdr active)) " " - (number-to-string (car active)) " y\n"))))) + (insert (format "%S %d %d y\n" (intern group) (cdr active) + (car active))) + (goto-char (point-max)) + (while (search-backward "\\." nil t) + (delete-char 1)))))) (defun gnus-agent-group-path (group) "Translate GROUP into a path." (if nnmail-use-long-file-names (gnus-group-real-name group) - (nnheader-replace-chars-in-string - (nnheader-translate-file-chars (gnus-group-real-name group)) - ?. ?/))) + (nnheader-translate-file-chars + (nnheader-replace-chars-in-string + (nnheader-replace-duplicate-chars-in-string + (nnheader-replace-chars-in-string + (gnus-group-real-name group) + ?/ ?_) + ?. ?_) + ?. ?/)))) @@ -798,13 +845,20 @@ the actual number of articles toggled is returned." (pop gnus-agent-group-alist)))) (defun gnus-agent-fetch-headers (group &optional force) - (let ((articles (gnus-list-of-unread-articles group)) - (gnus-decode-encoded-word-function 'identity) - (file (gnus-agent-article-name ".overview" group))) + (let* ((articles (gnus-list-of-unread-articles group)) + (len (length articles)) + (gnus-decode-encoded-word-function 'identity) + (file (gnus-agent-article-name ".overview" group)) + i) + ;; Check the number of articles is not too large. + (when (and (integerp gnus-agent-large-newsgroup) + (< 0 gnus-agent-large-newsgroup)) + (and (< 0 (setq i (- len gnus-agent-large-newsgroup))) + (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) @@ -947,22 +1001,29 @@ the actual number of articles toggled is returned." gnus-newsgroup-scored gnus-headers gnus-score gnus-use-cache articles arts category predicate info marks score-param) + (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))) - ;; 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 articles (gnus-agent-fetch-headers group)) + (progn + ;; 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))) + ;; `gnus-agent-overview-buffer' may be killed for + ;; timeout reason. If so, recreate it. + (gnus-agent-create-buffer))) (setq category (gnus-group-category group)) (setq predicate (gnus-get-predicate - (or (gnus-group-get-parameter group 'agent-predicate t) + (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) @@ -976,7 +1037,7 @@ the actual number of articles toggled is returned." (setq score-param (let ((score-method (or - (gnus-group-get-parameter group 'agent-score t) + (gnus-group-find-parameter group 'agent-score t) (caddr category)))) (when score-method (require 'gnus-score) @@ -1195,7 +1256,7 @@ The following commands are available: (gnus-edit-form (cadr info) (format "Editing the predicate for category %s" category) `(lambda (predicate) - (setf (cadr (assq ',category gnus-category-alist)) predicate) + (setcar (cdr (assq ',category gnus-category-alist)) predicate) (gnus-category-write) (gnus-category-list))))) @@ -1207,7 +1268,7 @@ The following commands are available: (caddr info) (format "Editing the score expression for category %s" category) `(lambda (groups) - (setf (caddr (assq ',category gnus-category-alist)) groups) + (setcar (nthcdr 2 (assq ',category gnus-category-alist)) groups) (gnus-category-write) (gnus-category-list))))) @@ -1218,7 +1279,7 @@ The following commands are available: (gnus-edit-form (cadddr info) (format "Editing the group list for category %s" category) `(lambda (groups) - (setf (cadddr (assq ',category gnus-category-alist)) groups) + (setcar (nthcdr 3 (assq ',category gnus-category-alist)) groups) (gnus-category-write) (gnus-category-list))))) @@ -1366,158 +1427,166 @@ The following commands are available: (save-excursion (setq overview (gnus-get-buffer-create " *expire overview*")) (while (setq gnus-command-method (pop methods)) - (with-temp-buffer - (insert-file-contents-as-coding-system - gnus-agent-file-coding-system (gnus-agent-lib-file "active")) - (gnus-active-to-gnus-format - gnus-command-method - (setq orig (gnus-make-hashtable - (count-lines (point-min) (point-max)))))) - (let ((expiry-hashtb (gnus-make-hashtable 1023))) - (gnus-agent-open-history) - (set-buffer - (setq gnus-agent-current-history - (setq history (gnus-agent-history-buffer)))) - (goto-char (point-min)) - (when (> (buffer-size) 1) - (goto-char (point-min)) - (while (not (eobp)) - (skip-chars-forward "^\t") - (if (> (read (current-buffer)) day) - ;; New article; we don't expire it. - (forward-line 1) - ;; Old article. Schedule it for possible nuking. - (while (not (eolp)) - (setq sym (let ((obarray expiry-hashtb)) - (read (current-buffer)))) - (if (boundp sym) - (set sym (cons (cons (read (current-buffer)) (point)) - (symbol-value sym))) - (set sym (list (cons (read (current-buffer)) (point))))) - (skip-chars-forward " ")) - (forward-line 1))) - ;; We now have all articles that can possibly be expired. - (mapatoms - (lambda (sym) - (setq group (symbol-name sym) - articles (sort (symbol-value sym) 'car-less-than-car) - low (car (gnus-active group)) - info (gnus-get-info group) - unreads (ignore-errors (gnus-list-of-unread-articles group)) - marked (nconc (gnus-uncompress-range - (cdr (assq 'tick (gnus-info-marks info)))) - (gnus-uncompress-range - (cdr (assq 'dormant - (gnus-info-marks info))))) - nov-file (gnus-agent-article-name ".overview" group) - lowest nil - highest nil) - (gnus-agent-load-alist group) - (gnus-message 5 "Expiring articles in %s" group) - (set-buffer overview) - (erase-buffer) - (when (file-exists-p nov-file) - (nnheader-insert-file-contents nov-file)) - (goto-char (point-min)) - (setq article 0) - (while (setq elem (pop articles)) - (setq article (car elem)) - (when (or (null low) - (< article low) - gnus-agent-expire-all - (and (not (memq article unreads)) - (not (memq article marked)))) - ;; Find and nuke the NOV line. - (while (and (not (eobp)) - (or (not (numberp - (setq art (read (current-buffer))))) - (< art article))) - (if (file-exists-p - (gnus-agent-article-name - (number-to-string art) group)) - (progn - (unless lowest - (setq lowest art)) - (setq highest art) - (forward-line 1)) - ;; Remove old NOV lines that have no articles. - (gnus-delete-line))) - (if (or (eobp) - (/= art article)) - (beginning-of-line) - (gnus-delete-line)) - ;; Nuke the article. - (when (file-exists-p (setq file (gnus-agent-article-name - (number-to-string article) - group))) - (delete-file file)) - ;; Schedule the history line for nuking. - (push (cdr elem) histories))) - (gnus-make-directory (file-name-directory nov-file)) - (write-region-as-coding-system - gnus-agent-file-coding-system - (point-min) (point-max) nov-file nil 'silent) - ;; Delete the unwanted entries in the alist. - (setq gnus-agent-article-alist - (sort gnus-agent-article-alist 'car-less-than-car)) - (let* ((alist gnus-agent-article-alist) - (prev (cons nil alist)) - (first prev) - expired) - (while (and alist - (<= (caar alist) article)) - (if (or (not (cdar alist)) - (not (file-exists-p - (gnus-agent-article-name - (number-to-string - (caar alist)) - group)))) - (progn - (push (caar alist) expired) - (setcdr prev (setq alist (cdr alist)))) - (setq prev alist - alist (cdr alist)))) - (setq gnus-agent-article-alist (cdr first)) - (gnus-agent-save-alist group) - ;; Mark all articles up to the first article - ;; in `gnus-article-alist' as read. - (when (and info (caar gnus-agent-article-alist)) - (setcar (nthcdr 2 info) - (gnus-range-add - (nth 2 info) - (cons 1 (- (caar gnus-agent-article-alist) 1))))) - ;; Maybe everything has been expired from `gnus-article-alist' - ;; and so the above marking as read could not be conducted, - ;; or there are expired article within the range of the alist. - (when (and info - expired - (or (not (caar gnus-agent-article-alist)) - (> (car expired) - (caar gnus-agent-article-alist)))) - (setcar (nthcdr 2 info) - (gnus-add-to-range - (nth 2 info) - (nreverse expired)))) - (gnus-dribble-enter - (concat "(gnus-group-set-info '" - (gnus-prin1-to-string info) - ")"))) - (when lowest - (if (gnus-gethash group orig) - (setcar (gnus-gethash group orig) lowest) - (gnus-sethash group (cons lowest highest) orig)))) - expiry-hashtb) - (set-buffer history) - (setq histories (nreverse (sort histories '<))) - (while histories - (goto-char (pop histories)) - (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-message 4 "Expiry...done")))))) + (when (file-exists-p (gnus-agent-lib-file "active")) + (with-temp-buffer + (insert-file-contents-as-coding-system + gnus-agent-file-coding-system (gnus-agent-lib-file "active")) + (gnus-active-to-gnus-format + gnus-command-method + (setq orig (gnus-make-hashtable + (count-lines (point-min) (point-max)))))) + (let ((expiry-hashtb (gnus-make-hashtable 1023))) + (gnus-agent-open-history) + (set-buffer + (setq gnus-agent-current-history + (setq history (gnus-agent-history-buffer)))) + (goto-char (point-min)) + (when (> (buffer-size) 1) + (goto-char (point-min)) + (while (not (eobp)) + (skip-chars-forward "^\t") + (if (> (read (current-buffer)) day) + ;; New article; we don't expire it. + (forward-line 1) + ;; Old article. Schedule it for possible nuking. + (while (not (eolp)) + (setq sym (let ((obarray expiry-hashtb)) + (read (current-buffer)))) + (if (boundp sym) + (set sym (cons (cons (read (current-buffer)) (point)) + (symbol-value sym))) + (set sym (list (cons (read (current-buffer)) (point))))) + (skip-chars-forward " ")) + (forward-line 1))) + ;; We now have all articles that can possibly be expired. + (mapatoms + (lambda (sym) + (setq group (symbol-name sym) + articles (sort (symbol-value sym) 'car-less-than-car) + low (car (gnus-active group)) + info (gnus-get-info group) + unreads (ignore-errors + (gnus-list-of-unread-articles group)) + marked (nconc + (gnus-uncompress-range + (cdr (assq 'tick (gnus-info-marks info)))) + (gnus-uncompress-range + (cdr (assq 'dormant (gnus-info-marks info)))) + (gnus-uncompress-range + (cdr (assq 'save (gnus-info-marks info)))) + (gnus-uncompress-range + (cdr (assq 'reply (gnus-info-marks info))))) + nov-file (gnus-agent-article-name ".overview" group) + lowest nil + highest nil) + (gnus-agent-load-alist group) + (gnus-message 5 "Expiring articles in %s" group) + (set-buffer overview) + (erase-buffer) + (when (file-exists-p nov-file) + (nnheader-insert-file-contents nov-file)) + (goto-char (point-min)) + (setq article 0) + (while (setq elem (pop articles)) + (setq article (car elem)) + (when (or (null low) + (< article low) + gnus-agent-expire-all + (and (not (memq article unreads)) + (not (memq article marked)))) + ;; Find and nuke the NOV line. + (while (and (not (eobp)) + (or (not (numberp + (setq art (read (current-buffer))))) + (< art article))) + (if (and (numberp art) + (file-exists-p + (gnus-agent-article-name + (number-to-string art) group))) + (progn + (unless lowest + (setq lowest art)) + (setq highest art) + (forward-line 1)) + ;; Remove old NOV lines that have no articles. + (gnus-delete-line))) + (if (or (eobp) + (/= art article)) + (beginning-of-line) + (gnus-delete-line)) + ;; Nuke the article. + (when (file-exists-p + (setq file (gnus-agent-article-name + (number-to-string article) + group))) + (delete-file file)) + ;; Schedule the history line for nuking. + (push (cdr elem) histories))) + (gnus-make-directory (file-name-directory nov-file)) + (write-region-as-coding-system + gnus-agent-file-coding-system + (point-min) (point-max) nov-file nil 'silent) + ;; Delete the unwanted entries in the alist. + (setq gnus-agent-article-alist + (sort gnus-agent-article-alist 'car-less-than-car)) + (let* ((alist gnus-agent-article-alist) + (prev (cons nil alist)) + (first prev) + expired) + (while (and alist + (<= (caar alist) article)) + (if (or (not (cdar alist)) + (not (file-exists-p + (gnus-agent-article-name + (number-to-string + (caar alist)) + group)))) + (progn + (push (caar alist) expired) + (setcdr prev (setq alist (cdr alist)))) + (setq prev alist + alist (cdr alist)))) + (setq gnus-agent-article-alist (cdr first)) + (gnus-agent-save-alist group) + ;; Mark all articles up to the first article + ;; in `gnus-article-alist' as read. + (when (and info (caar gnus-agent-article-alist)) + (setcar (nthcdr 2 info) + (gnus-range-add + (nth 2 info) + (cons 1 (- (caar gnus-agent-article-alist) 1))))) + ;; Maybe everything has been expired from `gnus-article-alist' + ;; and so the above marking as read could not be conducted, + ;; or there are expired article within the range of the alist. + (when (and info + expired + (or (not (caar gnus-agent-article-alist)) + (> (car expired) + (caar gnus-agent-article-alist)))) + (setcar (nthcdr 2 info) + (gnus-add-to-range + (nth 2 info) + (nreverse expired)))) + (gnus-dribble-enter + (concat "(gnus-group-set-info '" + (gnus-prin1-to-string info) + ")"))) + (when lowest + (if (gnus-gethash group orig) + (setcar (gnus-gethash group orig) lowest) + (gnus-sethash group (cons lowest highest) orig)))) + expiry-hashtb) + (set-buffer history) + (setq histories (nreverse (sort histories '<))) + (while histories + (goto-char (pop histories)) + (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-message 4 "Expiry...done"))))))) ;;;###autoload (defun gnus-agent-batch () diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index b7f048c..cf5e933 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -28,7 +28,9 @@ ;;; Code: (eval-when-compile (require 'cl)) +(eval-when-compile (require 'static)) +(require 'path-util) (require 'custom) (require 'gnus) (require 'gnus-sum) @@ -39,9 +41,9 @@ (require 'mime-view) ;; Avoid byte-compile warnings. +(defvar gnus-article-decoded-p) +(defvar gnus-article-mime-handles) (eval-when-compile - (defvar gnus-article-decoded-p) - (defvar gnus-article-mime-handles) (require 'mm-bodies) (require 'mail-parse) (require 'mm-decode) @@ -126,11 +128,18 @@ "^Originator:" "^X-Problems-To:" "^X-Auth-User:" "^X-Post-Time:" "^X-Admin:" "^X-UID:" "^Resent-[-A-Za-z]+:" "^X-Mailing-List:" "^Precedence:" "^Original-[-A-Za-z]+:" "^X-filename:" "^X-Orcpt:" - "^Old-Received:" "^X-Pgp-Fingerprint:" "^X-Pgp-Key-Id:" - "^X-Pgp-Public-Key-Url:" "^X-Auth:" "^X-From-Line:" + "^Old-Received:" "^X-Pgp" "^X-Auth:" "^X-From-Line:" "^X-Gnus-Article-Number:" "^X-Majordomo:" "^X-Url:" "^X-Sender:" - "^X-Mailing-List:" "^MBOX-Line" "^Priority:" "^X-Pgp" "^X400-[-A-Za-z]+:" - "^Status:" "^X-Gnus-Mail-Source:" "^Cancel-Lock:") + "^MBOX-Line" "^Priority:" "^X-Pgp" "^X400-[-A-Za-z]+:" + "^Status:" "^X-Gnus-Mail-Source:" "^Cancel-Lock:" + "^X-FTN" "^X-EXP32-SerialNo:" "^Encoding:" "^Importance:" + "^Autoforwarded:" "^Original-Encoded-Information-Types:" "^X-Ya-Pop3:" + "^X-Face-Version:" "^X-Vms-To:" "^X-ML-NAME:" "^X-ML-COUNT:" + "^Mailing-List:" "^X-finfo:" "^X-md5sum:" "^X-md5sum-Origin:" + "^X-Sun-Charset:" "^X-Accept-Language:" "^X-Envelope-Sender:" + "^List-[A-Za-z]+:" "^X-Listprocessor-Version:" + "^X-Received:" "^X-Distribute:" "^X-Sequence:" "^X-Juno-Line-Breaks:" + "^X-Notes-Item:" "^X-MS-TNEF-Correlator:" "^x-uunet-gateway:") "*All headers that start with this regexp will be hidden. This variable can also be a list of regexps of headers to be ignored. If `gnus-visible-headers' is non-nil, this variable will be ignored." @@ -203,7 +212,12 @@ regexp. If it matches, the text in question is not a signature." :group 'gnus-article-hiding) (defcustom gnus-article-x-face-command - "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | display -" + (if (and (not gnus-xemacs) + window-system + (module-installed-p 'x-face-mule)) + 'x-face-mule-gnus-article-display-x-face + "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | display -" + ) "*String or function to be executed to display an X-Face header. If it is a string, the command will be executed in a sub-shell asynchronously. The compressed face will be piped to this command." @@ -217,7 +231,7 @@ asynchronously. The compressed face will be piped to this command." (defcustom gnus-emphasis-alist (let ((format - "\\(\\s-\\|^\\|[-\"]\\|\\s(\\|\\s)\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\\(\\s-\\|[-?!.,;:\"]\\|\\s(\\|\\s)\\)") + "\\(\\s-\\|^\\|[-\"]\\|\\s(\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\\(\\s-\\|[-,;:\"]\\s-\\|[?!.]+\\s-\\|\\s)\\)") (types '(("_" "_" underline) ("/" "/" italic) @@ -231,7 +245,7 @@ asynchronously. The compressed face will be piped to this command." ,@(mapcar (lambda (spec) (list - (format format (car spec) (cadr spec)) + (format format (car spec) (car (cdr spec))) 2 3 (intern (format "gnus-emphasis-%s" (nth 2 spec))))) types))) "*Alist that says how to fontify certain phrases. @@ -268,7 +282,7 @@ is the face used for highlighting." :group 'gnus-article-emphasis) (defface gnus-emphasis-underline-italic '((t (:italic t :underline t))) - "Face used for displaying underlined italic emphasized text (_*word*_)." + "Face used for displaying underlined italic emphasized text (_/word/_)." :group 'gnus-article-emphasis) (defface gnus-emphasis-bold-italic '((t (:bold t :italic t))) @@ -420,7 +434,7 @@ beginning of a line." :type 'regexp :group 'gnus-article-various) -(defcustom gnus-article-mode-line-format "Gnus: %g %S%m" +(defcustom gnus-article-mode-line-format "Gnus: %g [%w] %S%m" "*The format specification for the article mode line. See `gnus-summary-mode-line-format' for a closer description. @@ -475,8 +489,7 @@ Obsolete; use the face `gnus-signature-face' for customizations instead." :group 'gnus-article-signature) (defface gnus-signature-face - '((((type x)) - (:italic t))) + '((t (:italic t))) "Face used for highlighting a signature in the article buffer." :group 'gnus-article-highlight :group 'gnus-article-signature) @@ -610,7 +623,7 @@ displayed by the first non-nil matching CONTENT face." :type '(repeat regexp)) (defcustom gnus-unbuttonized-mime-types '(".*/.*") - "List of MIME types that should not be given buttons when rendered." + "List of MIME types that should not be given buttons when rendered inline." :group 'gnus-article-mime :type '(repeat regexp)) @@ -632,6 +645,22 @@ be added below it (otherwise)." :group 'gnus-article-headers :type 'boolean) +(defcustom gnus-article-mime-match-handle-function 'undisplayed-alternative + "Function called with a MIME handle as the argument. +This is meant for people who want to view first matched part. +For `undisplayed-alternative' (default), the first undisplayed +part or alternative part is used. For `undisplayed', the first +undisplayed part is used. For a function, the first part which +the function return `t' is used. For `nil', the first part is +used." + :group 'gnus-article-mime + :type '(choice + (item :tag "first" :value nil) + (item :tag "undisplayed" :value undisplayed) + (item :tag "undisplayed or alternative" + :value undisplayed-alternative) + (function))) + ;;; ;;; The treatment variables ;;; @@ -644,6 +673,7 @@ be added below it (otherwise)." (const :tag "On" t) (const :tag "Header" head) (const :tag "Last" last) + (const :tag "Mime" mime) (integer :tag "Less") (repeat :tag "Groups" regexp) (sexp :tag "Predicate"))) @@ -666,7 +696,7 @@ See the manual for details." :type gnus-article-treat-custom) (put 'gnus-treat-highlight-signature 'highlight t) -(defcustom gnus-treat-buttonize t +(defcustom gnus-treat-buttonize 100000 "Add buttons. Valid values are nil, t, `head', `last', an integer or a predicate. See the manual for details." @@ -682,7 +712,7 @@ See the manual for details." :type gnus-article-treat-head-custom) (put 'gnus-treat-buttonize-head 'highlight t) -(defcustom gnus-treat-emphasize t +(defcustom gnus-treat-emphasize nil "Emphasize text. Valid values are nil, t, `head', `last', an integer or a predicate. See the manual for details." @@ -732,6 +762,13 @@ 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. +See the manual for details." + :group 'gnus-article-treat + :type gnus-article-treat-custom) + (defcustom gnus-treat-strip-pgp t "Strip PGP signatures. Valid values are nil, t, `head', `last', an integer or a predicate. @@ -849,8 +886,12 @@ See the manual for details." :type gnus-article-treat-custom) (put 'gnus-treat-overstrike 'highlight t) -(defcustom gnus-treat-display-xface (if (and gnus-xemacs (featurep 'xface)) - 'head nil) +(defcustom gnus-treat-display-xface + (if (or (and gnus-xemacs (featurep 'xface)) + (eq 'x-face-mule-gnus-article-display-x-face + gnus-article-x-face-command)) + 'head + nil) "Display X-Face headers. Valid values are nil, t, `head', `last', an integer or a predicate. See the manual for details." @@ -858,9 +899,13 @@ See the manual for details." :type gnus-article-treat-head-custom) (put 'gnus-treat-display-xface 'highlight t) -(defcustom gnus-treat-display-smileys (if (and gnus-xemacs - (featurep 'xpm)) - t nil) +(defcustom gnus-treat-display-smileys + (if (or (and gnus-xemacs (featurep 'xpm)) + (and (not gnus-xemacs) + window-system + (module-installed-p 'smiley-mule))) + t + nil) "Display smileys. Valid values are nil, t, `head', `last', an integer or a predicate. See the manual for details." @@ -922,21 +967,24 @@ See the manual for details." (defvar gnus-article-mime-handle-alist-1 nil) (defvar gnus-treatment-function-alist - '((gnus-treat-strip-banner gnus-article-strip-banner) + '((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) (gnus-treat-buttonize gnus-article-add-buttons) (gnus-treat-fill-article gnus-article-fill-cited-article) (gnus-treat-fill-long-lines gnus-article-fill-long-lines) (gnus-treat-strip-cr gnus-article-remove-cr) - (gnus-treat-emphasize gnus-article-emphasize) (gnus-treat-display-xface gnus-article-display-x-face) (gnus-treat-hide-headers gnus-article-maybe-hide-headers) (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-strip-list-identifiers gnus-article-hide-list-identifiers) (gnus-treat-strip-pgp gnus-article-hide-pgp) (gnus-treat-strip-pem gnus-article-hide-pem) (gnus-treat-highlight-headers gnus-article-highlight-headers) + (gnus-treat-emphasize gnus-article-emphasize) (gnus-treat-highlight-citation gnus-article-highlight-citation) (gnus-treat-highlight-signature gnus-article-highlight-signature) (gnus-treat-date-ut gnus-article-date-ut) @@ -954,10 +1002,9 @@ See the manual for details." (gnus-treat-overstrike gnus-article-treat-overstrike) (gnus-treat-buttonize-head gnus-article-add-buttons-to-head) (gnus-treat-display-smileys gnus-smiley-display) + (gnus-treat-capitalize-sentences gnus-article-capitalize-sentences) (gnus-treat-display-picons gnus-article-display-picons) - (gnus-treat-play-sounds gnus-earcon-display) - (gnus-treat-decode-article-as-default-mime-charset - gnus-article-decode-article-as-default-mime-charset))) + (gnus-treat-play-sounds gnus-earcon-display))) (defvar gnus-article-mime-handle-alist nil) (defvar article-lapsed-timer nil) @@ -1116,6 +1163,7 @@ Initialized from `text-mode-syntax-table.") (when (setq beg (text-property-any (point-min) (point-max) 'message-rank (+ 2 max))) ;; We delete or make invisible the unwanted headers. + (push 'headers gnus-article-wash-types) (if delete (progn (add-text-properties @@ -1285,7 +1333,8 @@ if given a positive prefix, always hide." (let ((func (cadr (assq 'gnus-treat-display-xface gnus-treatment-function-alist))) (condition 'head)) - (when (and func + (when (and (not gnus-inhibit-treatment) + func (gnus-treat-predicate gnus-treat-display-xface)) (funcall func) (put-text-property header-start header-end 'read-only nil)))) @@ -1370,23 +1419,29 @@ MAP is an alist where the elements are on the form (\"from\" \"to\")." (let ((buffer-read-only nil)) (while (search-forward "\b" nil t) (let ((next (char-after)) - (previous (char-after (- (point) 2)))) + start end previous) + (backward-char 2) + (setq start (point) + previous (char-after)) + (forward-char 3) + (setq end (point)) + (backward-char) ;; We do the boldification/underlining by hiding the ;; overstrikes and putting the proper text property ;; on the letters. (cond ((eq next previous) - (gnus-article-hide-text-type (- (point) 2) (point) 'overstrike) - (put-text-property (point) (1+ (point)) 'face 'bold)) + (gnus-article-hide-text-type start (point) 'overstrike) + (put-text-property (point) end 'face 'bold)) ((eq next ?_) (gnus-article-hide-text-type (1- (point)) (1+ (point)) 'overstrike) (put-text-property - (- (point) 2) (1- (point)) 'face 'underline)) + start (1- (point)) 'face 'underline)) ((eq previous ?_) - (gnus-article-hide-text-type (- (point) 2) (point) 'overstrike) + (gnus-article-hide-text-type start (point) 'overstrike) (put-text-property - (point) (1+ (point)) 'face 'underline))))))))) + (point) end 'face 'underline))))))))) (defun article-fill-long-lines () "Fill lines that are wider than the window width." @@ -1530,16 +1585,19 @@ If PROMPT (the prefix), prompt for a coding system to use." (mail-content-type-get ctl 'charset)))) (mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets - (save-excursion (set-buffer gnus-summary-buffer) + (save-excursion (condition-case nil + (set-buffer gnus-summary-buffer) + (error)) gnus-newsgroup-ignored-charsets)) buffer-read-only) + (if (and ctl (not (string-match "/" (car ctl)))) + (setq ctl nil)) (goto-char (point-max)) (widen) (forward-line 1) (narrow-to-region (point) (point-max)) (when (and (or (not ctl) - (equal (car ctl) "text/plain")) - (not (mm-uu-test))) + (equal (car ctl) "text/plain"))) (mm-decode-body charset (and cte (intern (downcase (gnus-strip-whitespace cte)))) @@ -1572,6 +1630,24 @@ or not." (when charset (mm-decode-body charset))))))) +(defun article-hide-list-identifiers () + "Remove any list identifiers in `gnus-list-identifiers' from Subject +header in the current article." + (interactive) + (save-excursion + (save-restriction + (let ((inhibit-point-motion-hooks t) + buffer-read-only) + (article-narrow-to-head) + (let ((regexp (if (stringp gnus-list-identifiers) gnus-list-identifiers + (mapconcat 'identity gnus-list-identifiers " *\\|")))) + (when regexp + (goto-char (point-min)) + (when (re-search-forward + (concat "^Subject: +\\(Re: +\\)?\\(" regexp " *\\)") + nil t) + (delete-region (match-beginning 2) (match-end 0))))))))) + (defun article-hide-pgp () "Remove any PGP headers and signatures in the current article." (interactive) @@ -1584,9 +1660,9 @@ or not." (when (re-search-forward "^-----BEGIN PGP SIGNED MESSAGE-----\n" nil t) (push 'pgp gnus-article-wash-types) (delete-region (match-beginning 0) (match-end 0)) - ;; PGP 5 and GNU PG add a `Hash: <>' comment, hide that too - (when (looking-at "Hash:.*$") - (delete-region (point) (1+ (gnus-point-at-eol)))) + ;; Remove armor headers (rfc2440 6.2) + (delete-region (point) (or (re-search-forward "^[ \t]*\n" nil t) + (point))) (setq beg (point)) ;; Hide the actual signature. (and (search-forward "\n-----BEGIN PGP SIGNATURE-----\n" nil t) @@ -1656,17 +1732,9 @@ always hide." (while (re-search-forward banner nil t) (delete-region (match-beginning 0) (match-end 0)))))))))) -(defun article-babel-prompt () - "Prompt for a babel translation." - (require 'babel) - (completing-read "Translate from: " - babel-translations nil t - (car (car babel-translations)) - babel-history)) - -(defun article-babel (translation) - "Translate article according to TRANSLATION using babelfish." - (interactive (list (article-babel-prompt))) +(defun article-babel () + "Translate article using an online translation service." + (interactive) (require 'babel) (save-excursion (set-buffer gnus-article-buffer) @@ -1674,27 +1742,40 @@ always hide." (let* ((buffer-read-only nil) (start (point)) (end (point-max)) - (msg (buffer-substring start end))) + (orig (buffer-substring start end)) + (trans (babel-as-string orig))) (save-restriction (narrow-to-region start end) (delete-region start end) - (babel-fetch msg (cdr (assoc translation babel-translations))) - (save-restriction - (narrow-to-region start (point-max)) - (babel-wash))))))) + (insert trans)))))) (defun article-hide-signature (&optional arg) "Hide the signature in the current article. If given a negative prefix, always show; if given a positive prefix, always hide." (interactive (gnus-article-hidden-arg)) - (unless (gnus-article-check-hidden-text 'signature arg) - (save-excursion - (save-restriction - (let ((buffer-read-only nil)) - (when (gnus-article-narrow-to-signature) - (gnus-article-hide-text-type - (point-min) (point-max) 'signature))))))) + (save-excursion + (save-restriction + (if (interactive-p) + (progn + (widen) + (article-goto-body)) + (goto-char (point-min))) + (unless (gnus-article-check-hidden-text 'signature arg) + (let ((buffer-read-only nil) + (button (point))) + (while (setq button (text-property-any button (point-max) + 'gnus-callback + 'gnus-signature-toggle)) + (setq button (text-property-not-all button (point-max) + 'gnus-callback + 'gnus-signature-toggle)) + (when (and button (not (eobp))) + (gnus-article-hide-text-type + (1+ button) + (next-single-property-change (1+ button) 'mime-view-entity + nil (point-max)) + 'signature)))))))) (defun article-strip-headers-in-body () "Strip offensive headers from bodies." @@ -1932,6 +2013,9 @@ should replace the \"Date:\" one, or should be added below it." ;; If Date is missing, try again for X-Sent. (re-search-forward "^X-Sent:[ \t]" nil t)) (setq bface (get-text-property (gnus-point-at-bol) 'face) + date (or (get-text-property (gnus-point-at-bol) + 'original-date) + date) eface (get-text-property (1- (gnus-point-at-eol)) 'face))) (let ((buffer-read-only nil)) @@ -1971,6 +2055,8 @@ should replace the \"Date:\" one, or should be added below it." ;; Do highlighting. (when (looking-at "\\([^:]+\\): *\\(.*\\)$") (put-text-property (match-beginning 1) (1+ (match-end 1)) + 'original-date date) + (put-text-property (match-beginning 1) (1+ (match-end 1)) 'face bface) (put-text-property (match-beginning 2) (match-end 2) 'face eface)))))))) @@ -1986,9 +2072,10 @@ should replace the \"Date:\" one, or should be added below it." ;; functions since they aren't particularly resistant to ;; buggy dates. ((eq type 'local) - (let ((tz (car (current-time-zone)))) + (let ((tz (car (current-time-zone time)))) (format "Date: %s %s%02d%02d" (current-time-string time) - (if (> tz 0) "+" "-") (/ tz 3600) (/ (% tz 3600) 60)))) + (if (> tz 0) "+" "-") (/ (abs tz) 3600) + (/ (% (abs tz) 3600) 60)))) ;; Convert to Universal Time. ((eq type 'ut) (concat "Date: " @@ -1996,7 +2083,7 @@ should replace the \"Date:\" one, or should be added below it." (let* ((e (parse-time-string date)) (tm (apply 'encode-time e)) (ms (car tm)) - (ls (- (cadr tm) (car (current-time-zone))))) + (ls (- (cadr tm) (car (current-time-zone time))))) (cond ((< ls 0) (list (1- ms) (+ ls 65536))) ((> ls 65535) (list (1+ ms) (- ls 65536))) (t (list ms ls))))) @@ -2015,9 +2102,13 @@ should replace the \"Date:\" one, or should be added below it." (format-time-string gnus-article-time-format time)))) ;; ISO 8601. ((eq type 'iso8601) - (concat - "Date: " - (format-time-string "%Y%m%dT%H%M%S" time))) + (let ((tz (car (current-time-zone time)))) + (concat + "Date: " + (format-time-string "%Y%m%dT%H%M%S" time) + (format "%s%02d%02d" + (if (> tz 0) "+" "-") (/ (abs tz) 3600) + (/ (% (abs tz) 3600) 60))))) ;; Do an X-Sent lapsed format. ((eq type 'lapsed) ;; If the date is seriously mangled, the timezone functions are @@ -2128,17 +2219,33 @@ This format is defined by the `gnus-article-time-format' variable." "Show all hidden text in the article buffer." (interactive) (save-excursion + (widen) (let ((buffer-read-only nil)) - (gnus-article-unhide-text (point-min) (point-max))))) + (gnus-article-unhide-text (point-min) (point-max)) + (gnus-remove-text-with-property 'gnus-prev) + (gnus-remove-text-with-property 'gnus-next)))) + +(defun article-show-all-headers () + "Show all hidden headers in the article buffer." + (interactive) + (save-excursion + (save-restriction + (widen) + (article-narrow-to-head) + (let ((buffer-read-only nil)) + (gnus-article-unhide-text (point-min) (point-max)))))) (defun article-emphasize (&optional arg) "Emphasize text according to `gnus-emphasis-alist'." (interactive (gnus-article-hidden-arg)) (unless (gnus-article-check-hidden-text 'emphasis arg) (save-excursion - (let ((alist (or (with-current-buffer gnus-summary-buffer - gnus-article-emphasis-alist) - gnus-emphasis-alist)) + (let ((alist (or + (condition-case nil + (with-current-buffer gnus-summary-buffer + gnus-article-emphasis-alist) + (error)) + gnus-emphasis-alist)) (buffer-read-only nil) (props (append '(article-type emphasis) gnus-hidden-properties)) @@ -2153,6 +2260,7 @@ This format is defined by the `gnus-article-time-format' variable." face (nth 3 elem)) (while (re-search-forward regexp nil t) (when (and (match-beginning visible) (match-beginning invisible)) + (push 'emphasis gnus-article-wash-types) (gnus-article-hide-text (match-beginning invisible) (match-end invisible) props) (gnus-article-unhide-text-type @@ -2167,18 +2275,18 @@ This format is defined by the `gnus-article-time-format' variable." (let ((name (and gnus-newsgroup-name (gnus-group-real-name gnus-newsgroup-name)))) (make-local-variable 'gnus-article-emphasis-alist) - (setq gnus-article-emphasis-alist - (nconc + (setq gnus-article-emphasis-alist + (nconc (let ((alist gnus-group-highlight-words-alist) elem highlight) (while (setq elem (pop alist)) (when (and name (string-match (car elem) name)) (setq alist nil - highlight (copy-list (cdr elem))))) + highlight (copy-sequence (cdr elem))))) highlight) - (copy-list highlight-words) + (copy-sequence highlight-words) (if gnus-newsgroup-name - (copy-list (gnus-group-find-parameter - gnus-newsgroup-name 'highlight-words t))) + (copy-sequence (gnus-group-find-parameter + gnus-newsgroup-name 'highlight-words t))) gnus-emphasis-alist))))) (defvar gnus-summary-article-menu) @@ -2498,6 +2606,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is article-remove-cr article-display-x-face article-de-quoted-unreadable + article-hide-list-identifiers article-hide-pgp article-strip-banner article-babel @@ -2523,7 +2632,8 @@ If variable `gnus-use-long-file-name' is non-nil, it is article-emphasize article-treat-dumbquotes article-normalize-headers - (article-show-all . gnus-article-show-all-headers)))) + (article-show-all-headers . gnus-article-show-all-headers) + (article-show-all . gnus-article-show-all)))) ;;; ;;; Gnus article mode @@ -2541,11 +2651,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is "s" gnus-article-show-summary "\C-c\C-m" gnus-article-mail "?" gnus-article-describe-briefly - gnus-mouse-2 gnus-article-push-button - "\r" gnus-article-press-button - "\t" gnus-article-next-button - "\M-\t" gnus-article-prev-button - "e" gnus-article-edit + "e" gnus-summary-article-edit "<" beginning-of-buffer ">" end-of-buffer "\C-c\C-i" gnus-info-find-node @@ -2677,6 +2783,7 @@ commands: (if (get-buffer name) (save-excursion (set-buffer name) + (kill-all-local-variables) (buffer-disable-undo) (setq buffer-read-only t) (unless (eq major-mode 'gnus-article-mode) @@ -2881,11 +2988,15 @@ If ALL-HEADERS is non-nil, no headers are hidden." (goto-char (point-min)) (when (re-search-forward "^[^\t ]+:" nil t) (goto-char (match-beginning 0))) - (let* ((entity (if (eq 1 (point-min)) - (get-text-property 1 'mime-view-entity) - (get-text-property (point) 'mime-view-entity))) - (number (or number 0)) - next type ids) + (let ((entity (if (eq 1 (point-min)) + (get-text-property 1 'mime-view-entity) + (get-text-property (point) 'mime-view-entity))) + last-entity child-entity next type) + (setq child-entity (mime-entity-children entity)) + (if child-entity + (setq last-entity (nth (1- (length child-entity)) + child-entity)) + (setq last-entity entity)) (save-restriction (narrow-to-region (point) (if (search-forward "\n\n" nil t) @@ -2894,54 +3005,71 @@ If ALL-HEADERS is non-nil, no headers are hidden." (gnus-treat-article 'head) (put-text-property (point-min) (point-max) 'article-treated-header t) (goto-char (point-max))) - (while (and (not (eobp)) - entity - (setq next (next-single-property-change (point) - 'mime-view-entity))) - (setq type (mime-entity-content-type entity) - type (format "%s/%s" - (mime-content-type-primary-type type) - (mime-content-type-subtype type))) + (while (and (not (eobp)) entity) + (setq next (set-marker + (make-marker) + (next-single-property-change (point) 'mime-view-entity + nil (point-max)))) + (let ((types (mime-entity-content-type entity))) + (while (eq 'multipart (mime-content-type-primary-type types)) + (setq entity (car (mime-entity-children entity)) + types (mime-entity-content-type entity))) + (when types + (setq type (format "%s/%s" + (mime-content-type-primary-type types) + (mime-content-type-subtype types))))) (if (string-equal type "message/rfc822") - (save-restriction - (narrow-to-region (point) (point-max)) - (gnus-article-prepare-mime-display number) - (goto-char (point-max))) - (setq ids (length (mime-entity-node-id entity)) - entity (get-text-property next 'mime-view-entity) - number (1+ number)) + (progn + (setq next (point)) + (let ((children (mime-entity-children entity)) + last-children) + (when children + (setq last-children (nth (1- (length children)) children)) + (while + (and + (not (eq last-children + (get-text-property next 'mime-view-entity))) + (setq next + (next-single-property-change next + 'mime-view-entity + nil (point-max))))))) + (setq next (next-single-property-change next 'mime-view-entity + nil (point-max))) + (save-restriction + (narrow-to-region (point) next) + (gnus-article-prepare-mime-display) + (goto-char (point-max))) + (setq entity (get-text-property (point) 'mime-view-entity))) (save-restriction (narrow-to-region (point) next) - (if (or (null entity) - (< (length (mime-entity-node-id entity)) ids)) - (gnus-treat-article 'last number number type) - (gnus-treat-article t number nil type)) - (goto-char (point-max))))) - (unless (eobp) - (save-restriction - (narrow-to-region (point) (point-max)) - (if entity - (progn - (setq type (mime-entity-content-type entity) - type (format "%s/%s" - (mime-content-type-primary-type type) - (mime-content-type-subtype type))) - (if (string-equal type "message/rfc822") - (gnus-article-prepare-mime-display number) - (incf number) - (gnus-treat-article 'last number number type))) - (gnus-treat-article t)))))) + ;; Kludge. We have to count true number, but for now, + ;; part number is here only to achieve `last'. + (gnus-treat-article nil 1 + (if (eq entity last-entity) + 1 2) + type) + (setq entity (get-text-property next 'mime-view-entity)) + (goto-char (point-max))))))) ;;;###autoload (defun gnus-article-prepare-display () "Make the current buffer look like a nice article." + (setq gnus-article-wash-types nil) (gnus-run-hooks 'gnus-tmp-internal-hook) (gnus-run-hooks 'gnus-article-prepare-hook) ;; Display message. - (let (mime-display-header-hook) + (let (mime-display-header-hook mime-display-text/plain-hook) (funcall (if gnus-show-mime (progn (setq mime-message-structure gnus-current-headers) + (mime-buffer-entity-set-buffer-internal + mime-message-structure + gnus-original-article-buffer) + (mime-entity-set-representation-type-internal + mime-message-structure 'mime-buffer-entity) + (luna-send mime-message-structure + 'initialize-instance + mime-message-structure) gnus-article-display-method-for-mime) gnus-article-display-method-for-traditional))) ;; Associate this article with the current summary buffer. @@ -2962,7 +3090,7 @@ If ALL-HEADERS is non-nil, no headers are hidden." (goto-char (point-max)) (widen) (narrow-to-region (point) (point-max)) - (gnus-treat-article t)) + (gnus-treat-article nil)) (put-text-property (point-min) (point-max) 'read-only nil))) ;; Perform the article display hooks. Incidentally, this hook is ;; an obsolete variable by now. @@ -2976,43 +3104,6 @@ value of the variable `gnus-show-mime' is non-nil." (with-current-buffer gnus-summary-buffer default-mime-charset)))) -;; The following procedures will be abolished in the future. -(autoload 'x-face-mule-x-face-decode-message-header "x-face-mule") -(defvar x-face-mule-version-number) -(defun gnus-article-display-x-face-with-x-face-mule (&rest args) - "Decode and show X-Face with the function -`x-face-mule-x-face-decode-message-header'. The buffer is expected to be -narrowed to just the headers of the article." - (when gnus-xemacs - (error "`%s' won't work under XEmacs." - 'gnus-article-display-x-face-with-x-face-mule)) - (when window-system - (when (and (boundp 'x-face-mule-version-number) - (> (string-to-number x-face-mule-version-number) 0.24) - (not (gnus-buffer-live-p "*X-Face-Mule WARNING*"))) - (let ((buffer (generate-new-buffer "*X-Face-Mule WARNING*"))) - (save-window-excursion - (pop-to-buffer buffer) - (insert (format - "WARNING: -`%s' is an obsolete function. -You have no use for setting the variable `%s', -however, it will be set suitably by X-Face-Mule %s. -Type any key: " - 'gnus-article-display-x-face-with-x-face-mule - 'gnus-article-x-face-command - x-face-mule-version-number)) - (let ((inhibit-quit t) (echo-keystrokes 0) cursor-in-echo-area) - (read-char-exclusive)) - (beginning-of-line) - (delete-region (point) (point-max))))) - (condition-case err - (x-face-mule-x-face-decode-message-header) - (error (error "%s" - (if (featurep 'x-face-mule) - "Please install x-face-mule 0.25 or later." - err)))))) - ;;; ;;; Gnus MIME viewing functions ;;; @@ -3048,9 +3139,11 @@ Type any key: " (gnus-mime-pipe-part "|" "Pipe To Command..."))) (defun gnus-article-mime-part-status () - (if gnus-article-mime-handle-alist-1 - (format " (%d parts)" (length gnus-article-mime-handle-alist-1)) - "")) + (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 @@ -3113,7 +3206,7 @@ Type any key: " (let ((data (get-text-property (point) 'gnus-data))) (mm-interactively-view-part data))) -(defun gnus-mime-view-part-as-media () +(defun gnus-mime-view-part-as-type () "Choose a MIME media type, and view the part as such." (interactive (list (completing-read "View as MIME type: " mailcap-mime-types))) @@ -3175,11 +3268,12 @@ Type any key: " (mm-display-part handle)))) (defun gnus-mime-internalize-part (&optional handle) - "View the MIME part under point with an internal viewer." + "View the MIME part under point with an internal viewer. +In no internal viewer is available, use an external viewer." (interactive) (gnus-article-check-buffer) (let* ((handle (or handle (get-text-property (point) 'gnus-data))) - (mm-user-display-methods '((".*" . inline))) + (mm-inlined-types '(".*")) (mm-inline-large-images t) (mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets @@ -3228,11 +3322,33 @@ Type any key: " (interactive "p") (gnus-article-part-wrapper n 'gnus-mime-inline-part)) -(defun gnus-article-view-part (n) +(defun gnus-article-mime-match-handle-first (condition) + (if condition + (let ((alist gnus-article-mime-handle-alist) ihandle n) + (while (setq ihandle (pop alist)) + (if (and (cond + ((functionp condition) + (funcall condition (cdr ihandle))) + ((eq condition 'undisplayed) + (not (or (mm-handle-undisplayer (cdr ihandle)) + (equal (mm-handle-media-type (cdr ihandle)) + "multipart/alternative")))) + ((eq condition 'undisplayed-alternative) + (not (mm-handle-undisplayer (cdr ihandle)))) + (t t)) + (gnus-article-goto-part (car ihandle)) + (or (not n) (< (car ihandle) n))) + (setq n (car ihandle)))) + (or n 1)) + 1)) + +(defun gnus-article-view-part (&optional n) "View MIME part N, which is the numerical prefix." - (interactive "p") + (interactive "P") (save-current-buffer (set-buffer gnus-article-buffer) + (or (numberp n) (setq n (gnus-article-mime-match-handle-first + gnus-article-mime-match-handle-function))) (when (> n (length gnus-article-mime-handle-alist)) (error "No such part")) (let ((handle (cdr (assq n gnus-article-mime-handle-alist)))) @@ -3443,10 +3559,11 @@ Type any key: " (when (string-match (pop ignored) type) (throw 'ignored nil))) (if (and (setq not-attachment - (or (not (mm-handle-disposition handle)) - (equal (car (mm-handle-disposition handle)) - "inline") - (mm-attachment-override-p handle))) + (and (not (mm-inline-override-p handle)) + (or (not (mm-handle-disposition handle)) + (equal (car (mm-handle-disposition handle)) + "inline") + (mm-attachment-override-p handle)))) (mm-automatic-display-p handle) (or (mm-inlined-p handle) (mm-automatic-external-display-p type))) @@ -3467,16 +3584,20 @@ Type any key: " (cond (display (when move - (forward-line -2)) + (forward-line -2) + (setq beg (point))) (let ((mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets - (save-excursion (set-buffer gnus-summary-buffer) + (save-excursion (condition-case () + (set-buffer gnus-summary-buffer) + (error)) gnus-newsgroup-ignored-charsets))) (mm-display-part handle t)) (goto-char (point-max))) ((and text not-attachment) (when move - (forward-line -2)) + (forward-line -2) + (setq beg (point))) (gnus-article-insert-newline) (mm-insert-inline handle (mm-get-part handle)) (goto-char (point-max)))) @@ -3599,22 +3720,21 @@ Type any key: " "Return a string which display status of article washing." (save-excursion (set-buffer gnus-article-buffer) - (let ((cite (gnus-article-hidden-text-p 'cite)) - (headers (gnus-article-hidden-text-p 'headers)) - (boring (gnus-article-hidden-text-p 'boring-headers)) - (pgp (gnus-article-hidden-text-p 'pgp)) - (pem (gnus-article-hidden-text-p 'pem)) - (signature (gnus-article-hidden-text-p 'signature)) - (overstrike (gnus-article-hidden-text-p 'overstrike)) - (emphasis (gnus-article-hidden-text-p 'emphasis)) - (mime gnus-show-mime)) + (let ((cite (memq 'cite gnus-article-wash-types)) + (headers (memq 'headers gnus-article-wash-types)) + (boring (memq 'boring-headers gnus-article-wash-types)) + (pgp (memq 'pgp gnus-article-wash-types)) + (pem (memq 'pem gnus-article-wash-types)) + (signature (memq 'signature gnus-article-wash-types)) + (overstrike (memq 'overstrike gnus-article-wash-types)) + (emphasis (memq 'emphasis gnus-article-wash-types))) (format "%c%c%c%c%c%c%c" (if cite ?c ? ) (if (or headers boring) ?h ? ) (if (or pgp pem) ?p ? ) (if signature ?s ? ) (if overstrike ?o ? ) - (if mime ?m ? ) + (if gnus-show-mime ?m ? ) (if emphasis ?e ? ))))) (fset 'gnus-article-hide-headers-if-wanted 'gnus-article-maybe-hide-headers) @@ -3639,7 +3759,7 @@ Provided for backwards compatibility." ;; save it to file. (goto-char (point-max)) (insert "\n") - (append-to-file (point-min) (point-max) file-name) + (write-region-as-binary (point-min) (point-max) file-name 'append) t))) (defun gnus-narrow-to-page (&optional arg) @@ -3698,48 +3818,53 @@ If given a numerical ARG, move forward ARG pages." If end of article, return non-nil. Otherwise return nil. Argument LINES specifies lines to be scrolled up." (interactive "p") - (move-to-window-line -1) - (if (save-excursion - (end-of-line) - (and (pos-visible-in-window-p) ;Not continuation line. - (eobp))) - ;; Nothing in this page. - (if (or (not gnus-page-broken) - (save-excursion - (save-restriction - (widen) (forward-line 1) (eobp)))) ;Real end-of-buffer? - t ;Nothing more. - (gnus-narrow-to-page 1) ;Go to next page. - nil) - ;; More in this page. - (let ((scroll-in-place nil)) - (condition-case () - (scroll-up lines) - (end-of-buffer - ;; Long lines may cause an end-of-buffer error. - (goto-char (point-max))))) - (move-to-window-line 0) - nil)) + (let ((start (window-start)) + end-of-buffer end-of-page) + (save-excursion + (move-to-window-line -1) + (if (<= (point) start) + (progn + (forward-line 2) + (setq start (point))) + (forward-line 1) + (setq start nil)) + (unless (or (cond ((eq (1+ (buffer-size)) (point)) + (setq end-of-buffer t)) + ((eobp) + (setq end-of-page t))) + (not lines)) + (move-to-window-line lines) + (unless (search-backward "\n\n" nil t) + (setq start (point))))) + (cond (end-of-buffer t) + (end-of-page + (gnus-narrow-to-page 1) + nil) + (t + (if start + (set-window-start (selected-window) start) + (scroll-up lines)) + nil)))) (defun gnus-article-prev-page (&optional lines) "Show previous page of current article. Argument LINES specifies lines to be scrolled down." (interactive "p") - (move-to-window-line 0) - (if (and gnus-page-broken - (bobp) - (not (save-restriction (widen) (bobp)))) ;Real beginning-of-buffer? - (progn - (gnus-narrow-to-page -1) ;Go to previous page. - (goto-char (point-max)) - (recenter -1)) - (let ((scroll-in-place nil)) - (prog1 - (condition-case () - (scroll-down lines) - (beginning-of-buffer - (goto-char (point-min)))) - (move-to-window-line 0))))) + (let (beginning-of-buffer beginning-of-page) + (save-excursion + (move-to-window-line 0) + (cond ((eq 1 (point)) + (setq beginning-of-buffer t)) + ((bobp) + (setq beginning-of-page t)))) + (cond (beginning-of-buffer) + (beginning-of-page + (gnus-narrow-to-page -1)) + (t + (condition-case nil + (scroll-down lines) + (beginning-of-buffer + (goto-char (point-min)))))))) (defun gnus-article-refer-article () "Read article specified by message-id around point." @@ -3801,7 +3926,7 @@ Argument LINES specifies lines to be scrolled down." (gnus-article-check-buffer) (let ((nosaves '("q" "Q" "c" "r" "R" "\C-c\C-f" "m" "a" "f" "F" - "Zc" "ZC" "ZE" "ZQ" "ZZ" "Zn" "ZR" "ZG" "ZN" "ZP" + "Zc" "ZC" "ZE" "ZJ" "ZQ" "ZZ" "Zn" "ZR" "ZG" "ZN" "ZP" "=" "^" "\M-^" "|")) (nosave-but-article '("A\r")) @@ -3814,10 +3939,9 @@ Argument LINES specifies lines to be scrolled down." (set-buffer gnus-article-current-summary) (let (gnus-pick-mode) (push (or key last-command-event) unread-command-events) - (setq keys (if gnus-xemacs + (setq keys (static-if (featurep 'xemacs) (events-to-keys (read-key-sequence nil)) (read-key-sequence nil))))) - (message "") (if (or (member keys nosaves) @@ -3876,6 +4000,7 @@ headers will be hidden. If given a prefix, show the hidden text instead." (interactive (append (gnus-article-hidden-arg) (list 'force))) (gnus-article-hide-headers arg) + (gnus-article-hide-list-identifiers arg) (gnus-article-hide-pgp arg) (gnus-article-hide-citation-maybe arg force) (gnus-article-hide-signature arg)) @@ -3985,7 +4110,8 @@ If given a prefix, show the hidden text instead." (buffer-read-only nil)) (erase-buffer) (gnus-kill-all-overlays) - (gnus-check-group-server) + (let ((gnus-newsgroup-name group)) + (gnus-check-group-server)) (when (gnus-request-article article group (current-buffer)) (when (numberp article) (gnus-async-prefetch-next group article gnus-summary-buffer) @@ -4301,7 +4427,7 @@ after replacing with the original article." ;; This is how URLs _should_ be embedded in text... ("]*\\)>" 0 t gnus-button-embedded-url 1) ;; Raw URLs. - (,gnus-button-url-regexp 0 t gnus-button-url 0)) + (,gnus-button-url-regexp 0 t browse-url 0)) "*Alist of regexps matching buttons in article bodies. Each entry has the form (REGEXP BUTTON FORM CALLBACK PAR...), where @@ -4329,9 +4455,9 @@ variable it the real callback function." ("^\\(From\\|Reply-To\\):" ": *\\(.+\\)$" 1 t gnus-button-reply 1) ("^\\(Cc\\|To\\):" "[^ \t\n<>,()\"]+@[^ \t\n<>,()\"]+" 0 t gnus-button-mailto 0) - ("^X-[Uu][Rr][Ll]:" ,gnus-button-url-regexp 0 t gnus-button-url 0) - ("^Subject:" ,gnus-button-url-regexp 0 t gnus-button-url 0) - ("^[^:]+:" ,gnus-button-url-regexp 0 t gnus-button-url 0) + ("^X-[Uu][Rr][Ll]:" ,gnus-button-url-regexp 0 t browse-url 0) + ("^Subject:" ,gnus-button-url-regexp 0 t browse-url 0) + ("^[^:]+:" ,gnus-button-url-regexp 0 t browse-url 0) ("^[^:]+:" "\\(<\\(url: \\)?news:\\([^>\n ]*\\)>\\)" 1 t gnus-button-message-id 3)) "*Alist of headers and regexps to match buttons in article heads. @@ -4487,21 +4613,28 @@ do the highlighting. See the documentation for those functions." It does this by highlighting everything after `gnus-signature-separator' using `gnus-signature-face'." (interactive) + (when gnus-signature-face + (save-excursion + (set-buffer gnus-article-buffer) + (let ((buffer-read-only nil) + (inhibit-point-motion-hooks t)) + (save-restriction + (when (gnus-article-narrow-to-signature) + (gnus-overlay-put (gnus-make-overlay (point-min) (point-max)) + 'face gnus-signature-face))))))) + +(defun gnus-article-buttonize-signature () + "Add button to the signature." + (interactive) (save-excursion (set-buffer gnus-article-buffer) (let ((buffer-read-only nil) (inhibit-point-motion-hooks t)) - (save-restriction - (when (and gnus-signature-face - (gnus-article-narrow-to-signature)) - (gnus-overlay-put (gnus-make-overlay (point-min) (point-max)) - 'face gnus-signature-face) - (widen) - (gnus-article-search-signature) - (let ((start (match-beginning 0)) - (end (set-marker (make-marker) (1+ (match-end 0))))) - (gnus-article-add-button start (1- end) 'gnus-signature-toggle - end))))))) + (when (gnus-article-search-signature) + (gnus-article-add-button (match-beginning 0) (match-end 0) + 'gnus-signature-toggle + (set-marker (make-marker) + (1+ (match-end 0)))))))) (defun gnus-button-in-region-p (b e prop) "Say whether PROP exists in the region." @@ -4520,14 +4653,17 @@ specified by `gnus-button-alist'." (alist gnus-button-alist) beg entry regexp) ;; Remove all old markers. - (let (marker entry) + (let (marker entry new-list) (while (setq marker (pop gnus-button-marker-list)) - (goto-char marker) - (when (setq entry (gnus-button-entry)) - (put-text-property (match-beginning (nth 1 entry)) - (match-end (nth 1 entry)) - 'gnus-callback nil)) - (set-marker marker nil))) + (if (or (< marker (point-min)) (>= marker (point-max))) + (push marker new-list) + (goto-char marker) + (when (setq entry (gnus-button-entry)) + (put-text-property (match-beginning (nth 1 entry)) + (match-end (nth 1 entry)) + 'gnus-callback nil)) + (set-marker marker nil))) + (setq gnus-button-marker-list new-list)) ;; We skip the headers. (article-goto-body) (setq beg (point)) @@ -4613,10 +4749,12 @@ specified by `gnus-button-alist'." (save-excursion (set-buffer gnus-article-buffer) (let ((buffer-read-only nil) - (inhibit-point-motion-hooks t)) + (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 (point-max)) - (gnus-article-hide-text end (point-max) gnus-hidden-properties))))) + (gnus-article-unhide-text end limit) + (gnus-article-hide-text end limit gnus-hidden-properties))))) (defun gnus-button-entry () ;; Return the first entry in `gnus-button-alist' matching this place. @@ -4760,13 +4898,6 @@ forbidden in URL encoding." (gnus-setup-message 'reply (message-reply address))) -(defun gnus-button-url (address) - "Browse ADDRESS." - ;; In Emacs 20, `browse-url-browser-function' may be an alist. - (if (listp browse-url-browser-function) - (browse-url address) - (funcall browse-url-browser-function address))) - (defun gnus-button-embedded-url (address) "Browse ADDRESS." ;; In Emacs 20, `browse-url-browser-function' may be an alist. @@ -4785,18 +4916,29 @@ forbidden in URL encoding." (define-key gnus-prev-page-map gnus-mouse-2 'gnus-button-prev-page) (define-key gnus-prev-page-map "\r" 'gnus-button-prev-page)) -(defun gnus-insert-prev-page-button () - (let ((buffer-read-only nil)) - (gnus-eval-format - gnus-prev-page-line-format nil - `(gnus-prev t local-map ,gnus-prev-page-map - gnus-callback gnus-article-button-prev-page - article-type annotation)))) +(static-if (featurep 'xemacs) + (defun gnus-insert-prev-page-button () + (let ((buffer-read-only nil)) + (gnus-eval-format + gnus-prev-page-line-format nil + `(gnus-prev t local-map ,gnus-prev-page-map + gnus-callback gnus-article-button-prev-page + article-type annotation)))) + (defun gnus-insert-prev-page-button () + (let ((buffer-read-only nil) + (situation (get-text-property (point-min) 'mime-view-situation))) + (set-keymap-parent gnus-prev-page-map (current-local-map)) + (gnus-eval-format + gnus-prev-page-line-format nil + `(gnus-prev t local-map ,gnus-prev-page-map + gnus-callback gnus-article-button-prev-page + article-type annotation + mime-view-situation ,situation)))) + ) (defvar gnus-next-page-map nil) (unless gnus-next-page-map - (setq gnus-next-page-map (make-keymap)) - (suppress-keymap gnus-prev-page-map) + (setq gnus-next-page-map (make-sparse-keymap)) (define-key gnus-next-page-map gnus-mouse-2 'gnus-button-next-page) (define-key gnus-next-page-map "\r" 'gnus-button-next-page)) @@ -4816,13 +4958,25 @@ forbidden in URL encoding." (gnus-article-prev-page) (select-window win))) -(defun gnus-insert-next-page-button () - (let ((buffer-read-only nil)) - (gnus-eval-format gnus-next-page-line-format nil - `(gnus-next - t local-map ,gnus-next-page-map - gnus-callback gnus-article-button-next-page - article-type annotation)))) +(static-if (featurep 'xemacs) + (defun gnus-insert-next-page-button () + (let ((buffer-read-only nil)) + (gnus-eval-format gnus-next-page-line-format nil + `(gnus-next + t local-map ,gnus-next-page-map + gnus-callback gnus-article-button-next-page + article-type annotation)))) + (defun gnus-insert-next-page-button () + (let ((buffer-read-only nil) + (situation (get-text-property (point-min) 'mime-view-situation))) + (set-keymap-parent gnus-next-page-map (current-local-map)) + (gnus-eval-format gnus-next-page-line-format nil + `(gnus-next + t local-map ,gnus-next-page-map + gnus-callback gnus-article-button-next-page + article-type annotation + mime-view-situation ,situation)))) + ) (defun gnus-article-button-next-page (arg) "Go to the next page." @@ -4894,17 +5048,33 @@ For example: (when (string-match (pop list) type) (throw 'found t))))))) (highlightp (gnus-visual-p 'article-highlight 'highlight)) - val elem) + (entity (static-unless (featurep 'xemacs) + (when (eq 'head condition) + (get-text-property (point-min) 'mime-view-entity)))) + val elem buttonized) (gnus-run-hooks 'gnus-part-display-hook) - (while (setq elem (pop alist)) - (setq val (symbol-value (car elem))) - (when (and (or (consp val) - treated-type) - (gnus-treat-predicate val) - (or (not (get (car elem) 'highlight)) - highlightp)) - (save-restriction - (funcall (cadr elem))))))) + (unless gnus-inhibit-treatment + (while (setq elem (pop alist)) + (setq val (symbol-value (car elem))) + (when (and (or (consp val) + treated-type) + (gnus-treat-predicate val) + (or (not (get (car elem) 'highlight)) + highlightp)) + (when (and (not buttonized) + (memq (car elem) + '(gnus-treat-hide-signature + gnus-treat-highlight-signature))) + (gnus-article-buttonize-signature) + (setq buttonized t)) + (save-restriction + (funcall (cadr elem))))) + ;; FSF Emacsen does not inherit the existing text properties + ;; in the new text, so we should do it for `mime-view-entity'. + (static-unless (featurep 'xemacs) + (when entity + (put-text-property (point-min) (point-max) + 'mime-view-entity entity)))))) ;; Dynamic variables. (defvar part-number) @@ -4914,10 +5084,13 @@ For example: (defvar length) (defun gnus-treat-predicate (val) (cond - ((eq val 'mime) - (not (not gnus-show-mime))) ((null val) nil) + ((and (listp val) + (stringp (car val))) + (apply 'gnus-or (mapcar `(lambda (s) + (string-match s ,(or gnus-newsgroup-name ""))) + val))) ((listp val) (let ((pred (pop val))) (cond @@ -4926,11 +5099,13 @@ For example: ((eq pred 'and) (apply 'gnus-and (mapcar 'gnus-treat-predicate val))) ((eq pred 'not) - (not (gnus-treat-predicate val))) + (not (gnus-treat-predicate (car val)))) ((eq pred 'typep) - (equal (cadr val) type)) + (equal (car val) type)) (t - (gnus-treat-predicate pred))))) + (error "%S is not a valid predicate" pred))))) + ((eq val 'mime) + gnus-show-mime) (condition (eq condition val)) ((eq val t) @@ -4941,11 +5116,6 @@ For example: (eq part-number total-parts)) ((numberp val) (< length val)) - ((and (listp val) - (stringp (car val))) - (apply 'gnus-or (mapcar `(lambda (s) - (string-match s ,(or gnus-newsgroup-name ""))) - val))) (t (error "%S is not a valid value" val)))) @@ -4970,28 +5140,24 @@ For example: (set-alist 'mime-preview-quitting-method-alist 'gnus-original-article-mode #'gnus-mime-preview-quitting-method) -(defun gnus-following-method (buf) - (set-buffer buf) - (message-followup) - (message-yank-original) - (kill-buffer buf) - (goto-char (point-min)) - ) - (set-alist 'mime-preview-following-method-alist 'gnus-original-article-mode #'gnus-following-method) (set-alist 'mime-preview-over-to-previous-method-alist 'gnus-original-article-mode (lambda () - (gnus-article-read-summary-keys - nil (gnus-character-to-event ?P)))) + (if (> (point-min) 1) + (gnus-article-prev-page) + (gnus-article-read-summary-keys + nil (gnus-character-to-event ?P))))) (set-alist 'mime-preview-over-to-next-method-alist 'gnus-original-article-mode' (lambda () - (gnus-article-read-summary-keys - nil (gnus-character-to-event ?N)))) + (if (< (point-max) (buffer-size)) + (gnus-article-next-page) + (gnus-article-read-summary-keys + nil (gnus-character-to-event ?N))))) ;;; @ end diff --git a/lisp/gnus-async.el b/lisp/gnus-async.el index 6cfc152..0009e85 100644 --- a/lisp/gnus-async.el +++ b/lisp/gnus-async.el @@ -26,7 +26,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) (require 'gnus-sum) (require 'nntp) @@ -80,6 +79,7 @@ It should return non-nil if the article is to be prefetched." (defvar gnus-async-hashtb nil) (defvar gnus-async-current-prefetch-group nil) (defvar gnus-async-current-prefetch-article nil) +(defvar gnus-async-timer nil) (defvar gnus-async-prefetch-headers-buffer " *Async Prefetch Headers*") (defvar gnus-async-header-prefetched nil) @@ -146,8 +146,13 @@ It should return non-nil if the article is to be prefetched." ;; do this, which leads to slightly slower article ;; buffer display. (gnus-async-prefetch-article group next summary) - (run-with-idle-timer - 0.1 nil 'gnus-async-prefetch-article group next summary))))))) + (when gnus-async-timer + (ignore-errors + (nnheader-cancel-timer 'gnus-async-timer))) + (setq gnus-async-timer + (run-with-idle-timer + 0.1 nil 'gnus-async-prefetch-article + group next summary)))))))) (defun gnus-async-prefetch-article (group article summary &optional next) "Possibly prefetch several articles starting with ARTICLE." diff --git a/lisp/gnus-bcklg.el b/lisp/gnus-bcklg.el index 9badf94..a47a199 100644 --- a/lisp/gnus-bcklg.el +++ b/lisp/gnus-bcklg.el @@ -82,7 +82,9 @@ (setq b (point)) (insert-buffer-substring buffer) ;; Tag the beginning of the article with the ident. - (gnus-put-text-property b (1+ b) 'gnus-backlog ident)))))) + (if (> (point-max) b) + (gnus-put-text-property b (1+ b) 'gnus-backlog ident) + (gnus-error 3 "Article %d is blank" number))))))) (defun gnus-backlog-remove-oldest-article () (save-excursion diff --git a/lisp/gnus-cache.el b/lisp/gnus-cache.el index cadedf6..12b491a 100644 --- a/lisp/gnus-cache.el +++ b/lisp/gnus-cache.el @@ -476,7 +476,9 @@ Returns the list of articles removed." (nnheader-translate-file-chars (if (gnus-use-long-file-name 'not-cache) group - (let ((group (nnheader-replace-chars-in-string group ?/ ?_))) + (let ((group (nnheader-replace-duplicate-chars-in-string + (nnheader-replace-chars-in-string group ?/ ?_) + ?. ?_))) ;; Translate the first colon into a slash. (when (string-match ":" group) (aset group (match-beginning 0) ?/)) @@ -687,7 +689,7 @@ $ emacs -batch -l ~/.emacs -l gnus -f gnus-jog-cache" 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) + gnus-cache-active-file gnus-cache-active-hashtb t) ;; Mark the active hashtb as unaltered. (setq gnus-cache-active-altered nil))) diff --git a/lisp/gnus-cite.el b/lisp/gnus-cite.el index 6c70d44..33ff4fd 100644 --- a/lisp/gnus-cite.el +++ b/lisp/gnus-cite.el @@ -21,11 +21,12 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) (require 'gnus-art) (require 'gnus-range) +(eval-when-compile (require 'static)) + ;;; Customization: (defgroup gnus-cite nil @@ -660,7 +661,7 @@ 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) + alist entry start begin end numbers prefix mc-flag) ;; Get all potential prefixes in `alist'. (while (< (point) max) ;; Each line. @@ -905,7 +906,12 @@ See also the documentation for `gnus-article-highlight-citation'." from to overlay) (goto-char (point-min)) (when (zerop (forward-line (1- number))) - (forward-char (length prefix)) + (static-if (or (featurep 'xemacs) + (and (eq emacs-major-version 20) + (>= emacs-minor-version 3)) + (> emacs-major-version 20));-) + (forward-char (length prefix)) + (move-to-column (string-width prefix))) (skip-chars-forward " \t") (setq from (point)) (end-of-line 1) diff --git a/lisp/gnus-cus.el b/lisp/gnus-cus.el index 8127d65..995d6b4 100644 --- a/lisp/gnus-cus.el +++ b/lisp/gnus-cus.el @@ -56,7 +56,7 @@ if that value is non-nil." ;;; Group Customization: -(defcustom gnus-group-parameters +(defconst gnus-group-parameters '((to-address (gnus-email-address :tag "To Address") "\ This will be used when doing followups and posts. @@ -238,12 +238,29 @@ default charset will be used instead.") gnus-emphasis-highlight-words)))) "highlight regexps. See gnus-emphasis-alist.")) - "Alist of valid group parameters. + "Alist of valid group or topic parameters. Each entry has the form (NAME TYPE DOC), where NAME is the parameter itself (a symbol), TYPE is the parameters type (a sexp widget), and DOC is a documentation string for the parameter.") +(defconst gnus-extra-topic-parameters + '((subscribe (regexp :tag "Subscribe") "\ +If `gnus-subscribe-newsgroup-method' is set to +`gnus-subscribe-topics', new groups that matches this regexp will +automatically be subscribed to this topic")) + "Alist of topic parameters that are not also group parameters. + +Each entry has the form (NAME TYPE DOC), where NAME is the parameter +itself (a symbol), TYPE is the parameters type (a sexp widget), and +DOC is a documentation string for the parameter.") + +(defconst gnus-extra-group-parameters nil + "Alist of group parameters that are not also topic parameters. + +Each entry has the form (NAME TYPE DOC), where NAME is the parameter +itself (a symbol), TYPE is the parameters type (a sexp widget), and +DOC is a documentation string for the parameter.") (defvar gnus-custom-params) (defvar gnus-custom-method) (defvar gnus-custom-group) @@ -258,7 +275,10 @@ DOC is a documentation string for the parameter.") :doc ,(nth 2 entry) (const :format "" ,(nth 0 entry)) ,(nth 1 entry))) - gnus-group-parameters))) + (append gnus-group-parameters + (if group + gnus-extra-group-parameters + gnus-extra-topic-parameters))))) (unless (or group topic) (error "No group on current line")) (when (and group topic) diff --git a/lisp/gnus-draft.el b/lisp/gnus-draft.el index a917ea5..b0df871 100644 --- a/lisp/gnus-draft.el +++ b/lisp/gnus-draft.el @@ -97,8 +97,7 @@ (let ((article (gnus-summary-article-number))) (gnus-summary-mark-as-read article gnus-canceled-mark) (gnus-draft-setup-for-editing article gnus-newsgroup-name) - (set-buffer-modified-p t) - (save-buffer) + (message-save-drafts) (let ((gnus-verbose-backends nil)) (gnus-request-expire-articles (list article) gnus-newsgroup-name t)) (push @@ -177,14 +176,18 @@ (interactive) (gnus-activate-group "nndraft:queue") (save-excursion - (let ((articles (nndraft-articles)) - (unsendable (gnus-uncompress-range - (cdr (assq 'unsend - (gnus-info-marks - (gnus-get-info "nndraft:queue")))))) - article) + (let* ((articles (nndraft-articles)) + (unsendable (gnus-uncompress-range + (cdr (assq 'unsend + (gnus-info-marks + (gnus-get-info "nndraft:queue")))))) + (n (length articles)) + article i) (while (setq article (pop articles)) - (unless (memq article unsendable) + (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)))))) ;;; Utility functions diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el index 65eca97..84dff68 100644 --- a/lisp/gnus-ems.el +++ b/lisp/gnus-ems.el @@ -53,74 +53,6 @@ ;;; Mule functions. -(defun gnus-mule-cite-add-face (number prefix face) - ;; At line NUMBER, ignore PREFIX and add FACE to the rest of the line. - (when face - (let ((inhibit-point-motion-hooks t) - from to overlay) - (goto-char (point-min)) - (when (zerop (forward-line (1- number))) - (move-to-column (string-width prefix)) - (skip-chars-forward " \t") - (setq from (point)) - (end-of-line 1) - (skip-chars-backward " \t") - (setq to (point)) - (when (< from to) - (push (setq overlay (gnus-make-overlay from to)) - gnus-cite-overlay-list) - (gnus-overlay-put overlay 'face face)))))) - -(defvar gnus-mule-bitmap-image-file nil) -(defun gnus-mule-group-startup-message (&optional x y) - "Insert startup message in current buffer." - ;; Insert the message. - (erase-buffer) - (insert - (if (featurep 'bitmap) - (format " %s - -" - "" (if (and (stringp gnus-mule-bitmap-image-file) - (file-exists-p gnus-mule-bitmap-image-file)) - (insert-file gnus-mule-bitmap-image-file))) - (format " %s - _ ___ _ _ - _ ___ __ ___ __ _ ___ - __ _ ___ __ ___ - _ ___ _ - _ _ __ _ - ___ __ _ - __ _ - _ _ _ - _ _ _ - _ _ _ - __ ___ - _ _ _ _ - _ _ - _ _ - _ _ - _ - __ - -" - ""))) - ;; And then hack it. - (gnus-indent-rigidly (point-min) (point-max) - (/ (max (- (window-width) (or x 46)) 0) 2)) - (goto-char (point-min)) - (forward-line 1) - (let* ((pheight (count-lines (point-min) (point-max))) - (wheight (window-height)) - (rest (- wheight pheight))) - (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n))) - ;; Fontify some. - (put-text-property (point-min) (point-max) 'face 'gnus-splash-face) - (goto-char (point-min)) - (setq mode-line-buffer-identification (concat " " gnus-version)) - (setq gnus-simple-splash t) - (set-buffer-modified-p t)) - (eval-and-compile (if (string-match "XEmacs\\|Lucid" emacs-version) nil @@ -163,7 +95,8 @@ (eval-and-compile (let ((case-fold-search t)) (cond - ((string-match "windows-nt\\|os/2\\|emx" (symbol-name system-type)) + ((string-match "windows-nt\\|os/2\\|emx\\|cygwin32" + (symbol-name system-type)) (setq nnheader-file-name-translation-alist (append nnheader-file-name-translation-alist '((?: . ?_) @@ -251,20 +184,11 @@ val (- (string-width val) ,cut) ,cut)) val))))) - (when window-system - (require 'path-util) - (if (module-installed-p 'bitmap) - (fset 'gnus-group-startup-message 'gnus-mule-group-startup-message) - )) - (when (boundp 'gnus-check-before-posting) (setq gnus-check-before-posting (delq 'long-lines (delq 'control-chars gnus-check-before-posting)))) - (when (fboundp 'chars-in-string) - (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face)) - ))) (defun gnus-region-active-p () @@ -294,8 +218,8 @@ (erase-buffer) (when (and dir (file-exists-p (setq file (concat dir "x-splash")))) - (with-temp-file nil - (insert-file-contents file) + (with-temp-buffer + (insert-file-contents-as-binary file) (goto-char (point-min)) (ignore-errors (setq pixmap (read (current-buffer)))))) @@ -304,7 +228,7 @@ (make-face 'gnus-splash)) (setq height (/ (car pixmap) (frame-char-height)) width (/ (cadr pixmap) (frame-char-width))) - (set-face-foreground 'gnus-splash "ForestGreen") + (set-face-foreground 'gnus-splash "Brown") (set-face-stipple 'gnus-splash pixmap) (insert-char ?\n (* (/ (window-height) 2 height) height)) (setq i height) @@ -318,15 +242,48 @@ (goto-char (point-min)) (sit-for 0)))))) -(if (fboundp 'split-string) - (fset 'gnus-split-string 'split-string) - (defun gnus-split-string (string pattern) - "Return a list of substrings of STRING which are separated by PATTERN." - (let (parts (start 0)) - (while (string-match pattern string start) - (setq parts (cons (substring string start (match-beginning 0)) parts) - start (match-end 0))) - (nreverse (cons (substring string start) parts))))) +(defun-maybe assoc-ignore-case (key alist) + "Like `assoc', but assumes KEY is a string and ignores case when comparing." + (setq key (downcase key)) + (let (element) + (while (and alist (not element)) + (if (equal key (downcase (car (car alist)))) + (setq element (car alist))) + (setq alist (cdr alist))) + element)) + + +;;; Language support staffs. + +(defvar-maybe current-language-environment "English" + "The language environment.") + +(defvar-maybe language-info-alist nil + "Alist of language environment definitions.") + +(defun-maybe get-language-info (lang-env key) + "Return information listed under KEY for language environment LANG-ENV." + (if (symbolp lang-env) + (setq lang-env (symbol-name lang-env))) + (let ((lang-slot (assoc-ignore-case lang-env language-info-alist))) + (if lang-slot + (cdr (assq key (cdr lang-slot)))))) + +(defun-maybe set-language-info (lang-env key info) + "Modify part of the definition of language environment LANG-ENV." + (if (symbolp lang-env) + (setq lang-env (symbol-name lang-env))) + (let (lang-slot key-slot) + (setq lang-slot (assoc lang-env language-info-alist)) + (if (null lang-slot) ; If no slot for the language, add it. + (setq lang-slot (list lang-env) + language-info-alist (cons lang-slot language-info-alist))) + (setq key-slot (assq key lang-slot)) + (if (null key-slot) ; If no slot for the key, add it. + (progn + (setq key-slot (list key)) + (setcdr lang-slot (cons key-slot (cdr lang-slot))))) + (setcdr key-slot info))) (provide 'gnus-ems) diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index 5cd3cd8..17b58fe 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -26,7 +26,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) (require 'gnus-start) (require 'nnmail) @@ -157,6 +156,7 @@ with some simple extensions. %O Moderated group (string, \"(m)\" or \"\") %P Topic indentation (string) %m Whether there is new(ish) mail in the group (char, \"%\") +%w Number of new(ish) mails in the group (integer) %l Whether there are GroupLens predictions for this group (string) %n Select from where (string) %z A string that look like `<%s:%n>' if a foreign select method is used @@ -407,6 +407,13 @@ ticked: The number of ticked articles." (?l gnus-tmp-grouplens ?s) (?z gnus-tmp-news-method-string ?s) (?m (gnus-group-new-mail gnus-tmp-group) ?c) + (?w (if (gnus-news-group-p gnus-tmp-group) + "" + (int-to-string + (length + (nnmail-new-mail-numbers (gnus-group-real-name gnus-tmp-group)) + ))) + ?s) (?d (gnus-group-timestamp-string gnus-tmp-group) ?s) (?u gnus-tmp-user-defined ?s))) @@ -514,6 +521,7 @@ ticked: The number of ticked articles." "u" gnus-group-make-useful-group "a" gnus-group-make-archive-group "k" gnus-group-make-kiboze-group + "l" gnus-group-nnimap-edit-acl "m" gnus-group-make-group "E" gnus-group-edit-group "e" gnus-group-edit-group-method @@ -525,6 +533,7 @@ ticked: The number of ticked articles." "w" gnus-group-make-web-group "r" gnus-group-rename-group "c" gnus-group-customize + "x" gnus-group-nnimap-expunge "\177" gnus-group-delete-group [delete] gnus-group-delete-group) @@ -1473,7 +1482,9 @@ and with point over the group in question." (let ((,groups (gnus-group-process-prefix arg)) (,window (selected-window)) ,group) - (while (setq ,group (pop ,groups)) + (while ,groups + (setq ,group (car ,groups) + ,groups (cdr ,groups)) (select-window ,window) (gnus-group-remove-mark ,group) (save-selected-window @@ -1600,7 +1611,7 @@ ephemeral group. If REQUEST-ONLY, don't actually read the group; just request it. If SELECT-ARTICLES, only select those articles. -Return the name of the group is selection was successful." +Return the name of the group if selection was successful." ;; Transform the select method into a unique server. (when (stringp method) (setq method (gnus-server-to-method method))) @@ -1808,10 +1819,11 @@ ADDRESS." (when (stringp method) (setq method (or (gnus-server-to-method method) method))) - (let* ((meth (when (and method - (not (gnus-server-equal method gnus-select-method))) - (if address (list (intern method) address) - method))) + (let* ((meth (gnus-method-simplify + (when (and method + (not (gnus-server-equal method gnus-select-method))) + (if address (list (intern method) address) + method)))) (nname (if method (gnus-group-prefixed-name name meth) name)) backend info) (when (gnus-gethash nname gnus-newsrc-hashtb) @@ -2046,6 +2058,7 @@ and NEW-NAME will be prompted for." ((= char ?d) 'digest) ((= char ?f) 'forward) ((= char ?a) 'mmfd) + ((= char ?g) 'guess) (t (setq err (format "%c unknown. " char)) nil)))) (setq type found))) @@ -2096,6 +2109,42 @@ If SOLID (the prefix), create a solid group." (cons (current-buffer) (if (eq major-mode 'gnus-summary-mode) 'summary 'group)))))) +(defvar nnwarchive-type-definition) +(defvar gnus-group-warchive-type-history nil) +(defvar gnus-group-warchive-login-history nil) +(defvar gnus-group-warchive-address-history nil) + +(defun gnus-group-make-warchive-group () + "Create a nnwarchive group." + (interactive) + (require 'nnwarchive) + (let* ((group (gnus-read-group "Group name: ")) + (default-type (or (car gnus-group-warchive-type-history) + (symbol-name (caar nnwarchive-type-definition)))) + (type + (gnus-string-or + (completing-read + (format "Warchive type (default %s): " default-type) + (mapcar (lambda (elem) (list (symbol-name (car elem)))) + nnwarchive-type-definition) + nil t nil 'gnus-group-warchive-type-history) + default-type)) + (address (read-string "Warchive address: " + nil 'gnus-group-warchive-address-history)) + (default-login (or (car gnus-group-warchive-login-history) + user-mail-address)) + (login + (gnus-string-or + (read-string + (format "Warchive login (default %s): " user-mail-address) + default-login 'gnus-group-warchive-login-history) + user-mail-address)) + (method + `(nnwarchive ,address + (nnwarchive-type ,(intern type)) + (nnwarchive-login ,login)))) + (gnus-group-make-group group method))) + (defun gnus-group-make-archive-group (&optional all) "Create the (ding) Gnus archive group of the most recent articles. Given a prefix, create a full group." @@ -2214,6 +2263,62 @@ score file entries for articles to include in the group." 'summary 'group))) (error "Couldn't enter %s" dir)))) +(eval-and-compile + (autoload 'nnimap-expunge "nnimap") + (autoload 'nnimap-acl-get "nnimap") + (autoload 'nnimap-acl-edit "nnimap")) + +(defun gnus-group-nnimap-expunge (group) + "Expunge deleted articles in current nnimap GROUP." + (interactive (list (gnus-group-group-name))) + (let ((mailbox (gnus-group-real-name group)) method) + (unless group + (error "No group on current line")) + (unless (gnus-get-info group) + (error "Killed group; can't be edited")) + (unless (eq 'nnimap (car (setq method (gnus-find-method-for-group group)))) + (error "%s is not an nnimap group" group)) + (nnimap-expunge mailbox (cadr method)))) + +(defun gnus-group-nnimap-edit-acl (group) + "Edit the Access Control List of current nnimap GROUP." + (interactive (list (gnus-group-group-name))) + (let ((mailbox (gnus-group-real-name group)) method acl) + (unless group + (error "No group on current line")) + (unless (gnus-get-info 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'. + + An access control list is a list of (identifier . rights) elements. + + The identifier string specifies the corresponding user. The + identifier \"anyone\" is reserved to refer to the universal identity. + + Rights is a string listing a (possibly empty) set of alphanumeric + characters, each character listing a set of operations which is being + controlled. Letters are reserved for ``standard'' rights, listed + below. Digits are reserved for implementation or site defined rights. + + l - lookup (mailbox is visible to LIST/LSUB commands) + r - read (SELECT the mailbox, perform CHECK, FETCH, PARTIAL, + SEARCH, COPY from mailbox) + s - keep seen/unseen information across sessions (STORE SEEN flag) + w - write (STORE flags other than SEEN and DELETED) + i - insert (perform APPEND, COPY into mailbox) + p - post (send mail to submission address for mailbox, + not enforced by IMAP4 itself) + c - create (CREATE new sub-mailboxes in any implementation-defined + hierarchy) + d - delete (STORE DELETED flag, perform EXPUNGE) + a - administer (perform SETACL)" group) + `(lambda (form) + (nnimap-acl-edit + ,mailbox ',method ',acl form))))) + ;; Group sorting commands ;; Suggested by Joe Hildebrand . @@ -2679,10 +2784,11 @@ N and the number of steps taken is returned." (gnus-group-yank-group) (gnus-group-position-point))) -(defun gnus-group-kill-all-zombies () - "Kill all zombie newsgroups." - (interactive) - (when (gnus-yes-or-no-p "Really kill all zombies? ") +(defun gnus-group-kill-all-zombies (&optional dummy) + "Kill all zombie newsgroups. +The optional DUMMY should always be nil." + (interactive (list (not (gnus-yes-or-no-p "Really kill all zombies? ")))) + (unless dummy (setq gnus-killed-list (nconc gnus-zombie-list gnus-killed-list)) (setq gnus-zombie-list nil) (gnus-dribble-touch) @@ -2865,7 +2971,8 @@ entail asking the server for the groups." (interactive) ;; First we make sure that we have really read the active file. (unless (gnus-read-active-file-p) - (let ((gnus-read-active-file t)) + (let ((gnus-read-active-file t) + (gnus-agent nil)) ; Trick the agent into ignoring the active file. (gnus-read-active-file))) ;; Find all groups and sort them. (let ((groups @@ -3287,7 +3394,7 @@ and the second element is the address." (gnus-browse-foreign-server method)) (defun gnus-group-set-info (info &optional method-only-group part) - (when info + (when (or info part) (let* ((entry (gnus-gethash (or method-only-group (gnus-info-group info)) gnus-newsrc-hashtb)) diff --git a/lisp/gnus-int.el b/lisp/gnus-int.el index 5231a58..df5fdc8 100644 --- a/lisp/gnus-int.el +++ b/lisp/gnus-int.el @@ -220,10 +220,12 @@ If it is down, start it up (again)." (defun gnus-server-opened (gnus-command-method) "Check whether a connection to GNUS-COMMAND-METHOD has been opened." - (when (stringp gnus-command-method) - (setq gnus-command-method (gnus-server-to-method gnus-command-method))) - (funcall (inline (gnus-get-function gnus-command-method 'server-opened)) - (nth 1 gnus-command-method))) + (unless (eq (gnus-server-status gnus-command-method) + 'denied) + (when (stringp gnus-command-method) + (setq gnus-command-method (gnus-server-to-method gnus-command-method))) + (funcall (inline (gnus-get-function gnus-command-method 'server-opened)) + (nth 1 gnus-command-method)))) (defun gnus-status-message (gnus-command-method) "Return the status message from GNUS-COMMAND-METHOD. diff --git a/lisp/gnus-kill.el b/lisp/gnus-kill.el index 6121552..1d04718 100644 --- a/lisp/gnus-kill.el +++ b/lisp/gnus-kill.el @@ -27,7 +27,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) (require 'gnus-art) (require 'gnus-range) diff --git a/lisp/gnus-logic.el b/lisp/gnus-logic.el index 0b14ce0..c40f49e 100644 --- a/lisp/gnus-logic.el +++ b/lisp/gnus-logic.el @@ -26,7 +26,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) (require 'gnus-score) (require 'gnus-util) diff --git a/lisp/gnus-mailcap.el b/lisp/gnus-mailcap.el index 0e0f44f..dd2b499 100644 --- a/lisp/gnus-mailcap.el +++ b/lisp/gnus-mailcap.el @@ -26,8 +26,7 @@ ;;; Code: -(eval-and-compile - (require 'cl)) +(eval-when-compile (require 'cl)) (require 'mail-parse) (defvar mailcap-parse-args-syntax-table @@ -365,48 +364,56 @@ If FORCE, re-parse even if already parsed." (skip-chars-forward " \t\n") (setq save-pos (point) info nil) - (skip-chars-forward "^/;") + (skip-chars-forward "^/; \t\n") (downcase-region save-pos (point)) (setq major (buffer-substring save-pos (point))) - (skip-chars-forward "/ \t\n") - (setq save-pos (point)) - (skip-chars-forward "^;") - (downcase-region save-pos (point)) - (setq minor - (cond - ((eq ?* (or (char-after save-pos) 0)) ".*") - ((= (point) save-pos) ".*") - (t (regexp-quote (buffer-substring save-pos (point)))))) - (skip-chars-forward "; \t\n") + (skip-chars-forward " \t\n") + (setq minor "") + (when (eq (char-after) ?/) + (forward-char) + (skip-chars-forward " \t\n") + (setq save-pos (point)) + (skip-chars-forward "^; \t\n") + (downcase-region save-pos (point)) + (setq minor + (cond + ((eq ?* (or (char-after save-pos) 0)) ".*") + ((= (point) save-pos) ".*") + (t (regexp-quote (buffer-substring save-pos (point))))))) + (skip-chars-forward " \t\n") ;;; 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) - (skip-chars-forward "; \t\n") - (setq save-pos (point)) - (skip-chars-forward "^;\n") - ;;; skip \; - (while (eq (char-before) ?\\) - (backward-delete-char 1) - (skip-chars-forward ";") - (skip-chars-forward "^;\n")) - (if (eq (or (char-after save-pos) 0) ?') - (setq viewer (progn - (narrow-to-region (1+ save-pos) (point)) - (goto-char (point-min)) - (prog1 - (read (current-buffer)) - (goto-char (point-max)) - (widen)))) - (setq viewer (buffer-substring save-pos (point)))) + (setq viewer "") + (when (eq (char-after) ?\;) + (forward-char) + (skip-chars-forward " \t\n") + (setq save-pos (point)) + (skip-chars-forward "^;\n") + ;; skip \; + (while (eq (char-before) ?\\) + (backward-delete-char 1) + (forward-char) + (skip-chars-forward "^;\n")) + (if (eq (or (char-after save-pos) 0) ?') + (setq viewer (progn + (narrow-to-region (1+ save-pos) (point)) + (goto-char (point-min)) + (prog1 + (read (current-buffer)) + (goto-char (point-max)) + (widen)))) + (setq viewer (buffer-substring save-pos (point))))) (setq save-pos (point)) (end-of-line) - (setq info (nconc (list (cons 'viewer viewer) - (cons 'type (concat major "/" - (if (string= minor ".*") - "*" minor)))) - (mailcap-parse-mailcap-extras save-pos (point)))) - (mailcap-mailcap-entry-passes-test info) - (mailcap-add-mailcap-entry major minor info))))) + (unless (equal viewer "") + (setq info (nconc (list (cons 'viewer viewer) + (cons 'type (concat major "/" + (if (string= minor ".*") + "*" minor)))) + (mailcap-parse-mailcap-extras save-pos (point)))) + (mailcap-mailcap-entry-passes-test info) + (mailcap-add-mailcap-entry major minor info)))))) (defun mailcap-parse-mailcap-extras (st nd) ;; Grab all the extra stuff from a mailcap entry @@ -623,12 +630,12 @@ If TEST is not given, it defaults to t." (x-lisp (not (stringp (or (cdr-safe (assq 'viewer x)) "")))) (y-lisp (not (stringp (or (cdr-safe (assq 'viewer y)) ""))))) (cond - ((and x-lisp (not y-lisp)) - t) - ((and (not y-lisp) x-wild (not y-wild)) - t) + ((and x-wild (not y-wild)) + nil) ((and (not x-wild) y-wild) t) + ((and (not y-lisp) x-lisp) + t) (t nil)))) (defun mailcap-mime-info (string &optional request) diff --git a/lisp/gnus-mlspl.el b/lisp/gnus-mlspl.el index 8936bc5..e305b88 100644 --- a/lisp/gnus-mlspl.el +++ b/lisp/gnus-mlspl.el @@ -19,6 +19,7 @@ ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. +(eval-when-compile (require 'cl)) (require 'gnus) (require 'gnus-sum) (require 'gnus-group) @@ -38,8 +39,8 @@ default catch-all group") splitting, and defines the variable nnmail-split-fancy according with group parameters. -if AUTO-UPDATE is non-nil (prefix argument accepted, if called -interactive), makes sure nnmail-split-fancy is re-computed before +If AUTO-UPDATE is non-nil (prefix argument accepted, if called +interactively), it makes sure nnmail-split-fancy is re-computed before getting new mail, by adding gnus-group-split-update to nnmail-pre-get-new-mail-hook." (interactive "P") @@ -92,7 +93,7 @@ otherwise, a | split, that does not allow crossposting, will be returned. if CATCH-ALL is not nil, and there is no selected group whose -split-regexp matches the empty string, nor is there a selected group +SPLIT-REGEXP matches the empty string, nor is there a selected group whose SPLIT-SPEC is 'catch-all, this group name will be appended to the returned SPLIT list, as the last element in a '| SPLIT. @@ -121,10 +122,10 @@ nnml:mail.others: Calling (gnus-group-split-fancy nil nil \"mail.misc\") returns: \(| (& (any \"\\\\(bar@femail\\\\.com\\\\|.*@femail\\\\.com\\\\)\" - \"nnml:mail.bar\") + \"mail.bar\") (any \"\\\\(foo@nowhere\\\\.gov\\\\|foo@localhost\\\\|foo-redist@home\\\\)\" - - \"bugs-foo\" - \"rambling-foo\" \"nnml:mail.foo\")) - \"nnml:mail.others\")" + - \"bugs-foo\" - \"rambling-foo\" \"mail.foo\")) + \"mail.others\")" (let* ((newsrc (cdr gnus-newsrc-alist)) split) (dolist (info newsrc) diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index a124cef..b6a61c8 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -31,18 +31,19 @@ ;;; Code: (eval-when-compile (require 'cl)) +(eval-when-compile (require 'static)) (require 'gnus) (require 'gnus-ems) (require 'message) (require 'gnus-art) -(defcustom gnus-post-method nil +(defcustom gnus-post-method 'current "*Preferred method for posting USENET news. If this variable is `current', Gnus will use the \"current\" select method when posting. If it is nil (which is the default), Gnus will -use the native posting method of the server. +use the native select method when posting. This method will not be used in mail groups and the like, only in \"real\" newsgroups. @@ -107,6 +108,7 @@ the second with the current group name.") (defcustom gnus-group-posting-charset-alist '(("^no\\." iso-8859-1) (message-this-is-mail nil) + ("^de\\." nil) (".*" iso-8859-1) (message-this-is-news iso-8859-1)) "Alist of regexps (to match group names) and default charsets to be unencoded when posting." @@ -174,6 +176,7 @@ Thank you for your help in stamping out bugs. "c" gnus-summary-cancel-article "s" gnus-summary-supersede-article "r" gnus-summary-reply + "y" gnus-summary-yank-message "R" gnus-summary-reply-with-original "w" gnus-summary-wide-reply "W" gnus-summary-wide-reply-with-original @@ -479,6 +482,10 @@ header line with the old Message-ID." (set-buffer gnus-article-copy) (delete-region (goto-char (point-min)) (or (search-forward "\n\n" nil t) (point-max))) + ;; Encode bitmap smileys to ordinary text. + (static-unless (featurep 'xemacs) + (when (featurep 'smiley-mule) + (smiley-encode-buffer))) ;; Insert the original article headers. (insert-buffer-substring gnus-original-article-buffer beg end) (article-decode-encoded-words))) @@ -609,6 +616,7 @@ If SILENT, don't prompt the user." ;; Override normal method. ((and (eq gnus-post-method 'current) (not (eq (car group-method) 'nndraft)) + (gnus-get-function group-method 'request-post t) (not arg)) group-method) ((and gnus-post-method @@ -939,23 +947,26 @@ If YANK is non-nil, include the original article." (insert gnus-bug-message) (goto-char (point-min))) (message-pop-to-buffer "*Gnus Bug*") - (message-setup - `((To . ,gnus-maintainer) (Cc . ,semi-gnus-developers) (Subject . ""))) + (message-setup `((To . ,gnus-maintainer) (Subject . ""))) (when gnus-bug-create-help-buffer (push `(gnus-bug-kill-buffer) message-send-actions)) (goto-char (point-min)) (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$")) (forward-line 1) - (insert (gnus-version) "\n" + (insert gnus-product-name " " gnus-version-number + " (r" gnus-revision-number ") " + "based on " gnus-original-product-name " v" + gnus-original-version-number "\n" (emacs-version) "\n") (when (and (boundp 'nntp-server-type) (stringp nntp-server-type)) (insert nntp-server-type)) (insert "\n\n\n\n\n") - (save-excursion - (set-buffer (gnus-get-buffer-create " *gnus environment info*")) - (gnus-debug)) - (insert "<#part type=application/x-emacs-lisp buffer=\" *gnus environment info*\" disposition=inline description=\"User settings\"><#/part>") + (let (mime-content-types) + (mime-edit-insert-tag "text" "plain" "; type=emacs-lisp")) + (insert (with-temp-buffer + (gnus-debug) + (buffer-string))) (goto-char (point-min)) (search-forward "Subject: " nil t) (message ""))) @@ -964,6 +975,19 @@ If YANK is non-nil, include the original article." (when (get-buffer "*Gnus Help Bug*") (kill-buffer "*Gnus Help Bug*"))) +(defun gnus-summary-yank-message (buffer n) + "Yank the current article into a composed message." + (interactive + (list (completing-read "Buffer: " (mapcar 'list (message-buffers)) nil t) + current-prefix-arg)) + (gnus-summary-iterate n + (let ((gnus-display-mime-function nil) + (gnus-inhibit-treatment t)) + (gnus-summary-select-article)) + (save-excursion + (set-buffer buffer) + (message-yank-buffer gnus-article-buffer)))) + (defun gnus-debug () "Attempts to go through the Gnus source file and report what variables have been changed. The source file has to be in the Emacs load path." @@ -1058,6 +1082,7 @@ this is a reply." (message-narrow-to-headers) (let ((gcc (or gcc (mail-fetch-field "gcc" nil t))) (coding-system-for-write 'raw-text) + (output-coding-system 'raw-text) groups group method) (when gcc (message-remove-header "gcc") @@ -1196,7 +1221,7 @@ this is a reply." (unless gnus-inhibit-posting-styles (let ((group (or gnus-newsgroup-name "")) (styles gnus-posting-styles) - style match variable attribute value v styles results + style match variable attribute value v results filep name address element) ;; If the group has a posting-style parameter, add it at the end with a ;; regexp matching everything, to be sure it takes precedence over all @@ -1208,10 +1233,15 @@ this is a reply." ;; Go through all styles and look for matches. (dolist (style styles) (setq match (pop style)) + (goto-char (point-min)) (when (cond ((stringp match) ;; Regexp string match on the group name. (string-match match group)) + ((eq match 'header) + (let ((header (message-fetch-field (pop style)))) + (and header + (string-match (pop style) header)))) ((or (symbolp match) (gnus-functionp match)) (cond @@ -1231,7 +1261,7 @@ this is a reply." filep nil) (setq value (cond - ((eq (car attribute) :file) + ((eq (car attribute) ':file) (setq filep t) (cadr attribute)) ((eq (car attribute) :value) @@ -1256,7 +1286,7 @@ this is a reply." (setq element 'signature filep t)) ;; Get the contents of file elems. - (when filep + (when (and filep v) (setq v (with-temp-buffer (insert-file-contents v) (buffer-string)))) @@ -1271,6 +1301,8 @@ this is a reply." (when (cdr result) (add-hook 'message-setup-hook (cond + ((eq 'eval (car result)) + 'ignore) ((eq 'body (car result)) `(lambda () (save-excursion @@ -1282,7 +1314,8 @@ this is a reply." `(lambda () (save-excursion (let ((message-signature ,(cdr result))) - (message-insert-signature))))) + (when message-signature + (message-insert-signature)))))) (t (let ((header (if (symbolp (car result)) @@ -1296,7 +1329,7 @@ this is a reply." (when (or name address) (add-hook 'message-setup-hook `(lambda () - (let ((user-full-name ,(or (cdr name) user-full-name)) + (let ((user-full-name ,(or (cdr name) (user-full-name))) (user-mail-address ,(or (cdr address) user-mail-address))) (save-excursion @@ -1322,6 +1355,21 @@ this is a reply." )))) +;;; @ for MIME view mode +;;; + +(defun gnus-following-method (buf) + (gnus-setup-message 'reply-yank + (set-buffer buf) + (if (message-news-p) + (message-followup) + (message-reply nil 'wide)) + (let ((message-reply-buffer buf)) + (message-yank-original)) + (message-goto-body)) + (kill-buffer buf)) + + ;;; Allow redefinition of functions. (gnus-ems-redefine) diff --git a/lisp/gnus-nocem.el b/lisp/gnus-nocem.el index 391b8e0..7e8a862 100644 --- a/lisp/gnus-nocem.el +++ b/lisp/gnus-nocem.el @@ -121,7 +121,7 @@ matches an previously scanned and verified nocem message." (interactive) (let ((groups gnus-nocem-groups) (gnus-inhibit-demon t) - group active gactive articles) + group active gactive articles check-headers) (gnus-make-directory gnus-nocem-directory) ;; Load any previous NoCeM headers. (gnus-nocem-load-cache) @@ -173,7 +173,14 @@ matches an previously scanned and verified nocem message." (null (mail-header-references header))) (not (member (mail-header-message-id header) gnus-nocem-seen-message-ids)))) - (gnus-nocem-check-article group header))))))) + (push header check-headers))) + (let ((i 0) + (len (length check-headers))) + (dolist (h check-headers) + (gnus-message + 7 "Checking article %d in %s for NoCeM (%d of %d)..." + (mail-header-number h) group (incf i) len) + (gnus-nocem-check-article group h))))))) (setq gnus-nocem-active (cons (list group gactive) (delq (assoc group gnus-nocem-active) @@ -185,8 +192,6 @@ matches an previously scanned and verified nocem message." (defun gnus-nocem-check-article (group header) "Check whether the current article is an NCM article and that we want it." ;; Get the article. - (gnus-message 7 "Checking article %d in %s for NoCeM..." - (mail-header-number header) group) (let ((date (mail-header-date header)) issuer b e type) (when (or (not date) diff --git a/lisp/gnus-offline.el b/lisp/gnus-offline.el index b5786b4..0510161 100644 --- a/lisp/gnus-offline.el +++ b/lisp/gnus-offline.el @@ -1,5 +1,4 @@ ;;; gnus-offline.el --- To process mail & news at offline environment. -;;; $Id: gnus-offline.el,v 1.1.2.5.2.36 1999-07-20 14:53:45 czkmt Exp $ ;;; Copyright (C) 1998 Tatsuya Ichikawa ;;; Yukihiro Ito @@ -8,7 +7,7 @@ ;;; Hidekazu Nakamura ;;; Tsukamoto Tetsuo -;;; Version: 2.10 +;;; Version: 2.20 ;;; Keywords: news , mail , offline , gnus ;;; ;;; SPECIAL THANKS @@ -39,7 +38,7 @@ ;;; This file needs miee.el and SEMI. ;;; If you set gnus-offline-drafts-queue-type to 'agent , you don't need ;;; miee.el -;;; You must use Semi-gnus 6.X.X. +;;; You must use T-gnus 6.12.0 or later. ;;; ;;; How to use. ;;; @@ -47,7 +46,6 @@ ;;; ;;; (load "gnus-ofsetup") ;;; (gnus-setup-for-offline) -;;; (load gnus-offline-setting-file) ;;; ;;; If you use gnus-agent as souper , put gnus-agent setup code in you .gnus.el ;;; @@ -79,24 +77,18 @@ (eval '(run-hooks 'gnus-offline-load-hook)) -(require 'cl) +(eval-when-compile (require 'cl) (require 'static)) (require 'custom) (require 'easymenu) (provide 'gnus-offline) -(unless (and (condition-case () - (require 'custom) - (file-error nil)) - (fboundp 'defgroup) - (fboundp 'defcustom)) - (require 'backquote) - (defmacro defgroup (&rest args)) - (defmacro defcustom (symbol value &optional doc &rest args) - (` (defvar (, symbol) (, value) (, doc)))) - ) +(eval-after-load "eword-decode" + '(mime-set-field-decoder 'X-Gnus-Offline-Backend nil nil)) + (defgroup gnus-offline nil "Offline backend utility for Gnus." :prefix "gnus-offline-" + :group 'gnus :group 'mail :group 'news) @@ -114,20 +106,32 @@ (defconst gnus-offline-version (format "Gnus offline backend utiliy v%s" gnus-offline-version-number)) -(defcustom gnus-offline-dialup-program-arguments nil - "*Program arguments of gnus-offline-dialup-program." - :group 'gnus-offline - :type '(repeat (string :tag "Argument"))) - -(defcustom gnus-offline-hangup-program-arguments nil - "*Program arguments of gnus-offline-hangup-program." - :group 'gnus-offline - :type '(repeat (string :tag "Argument"))) +(eval-when-compile + (mapc + (lambda (symbol) + (unless (boundp symbol) + (make-local-variable symbol) + (eval (list 'setq symbol nil)))) + '(nnagent-version + nnspool-version + msspool-news-server + msspool-news-service + miee-popup-menu + gnus-group-toolbar))) + +(static-if (eq system-type 'windows-nt) + (define-process-argument-editing "/hang\\.exe\\'" + (lambda (x) + (general-process-argument-editing-function + x nil t t nil t t)))) -(defcustom gnus-offline-auto-hangup t - "*Whether dialup-network automatically hang up when all online jobs has done." +(defcustom gnus-offline-auto-ppp '(connect disconnect) + "*This variable decides whether to connect and/or disconnect automatically." :group 'gnus-offline - :type 'boolean) + :type '(choice + (const :tag "Connection and Disconnection" (connect disconnect)) + (const :tag "Connection Only" (connect)) + (const :tag "Do Everything Manually" nil))) (defcustom gnus-offline-load-hook nil "*Hook to be run after the gnus-offline package has been loaded." @@ -160,12 +164,6 @@ If mail , gnus-offline only fetch mail articles. (const mail) (const news))) -(defcustom gnus-offline-interval-time 0 - "*Interval time(minutes) to do online jobs. -If set to 0 , timer call is disabled." - :group 'gnus-offline - :type 'integer) - (defcustom gnus-offline-mail-group-level 1 "*Group level for mail group." :group 'gnus-offline @@ -191,6 +189,36 @@ If set to 0 , timer call is disabled." :group 'gnus-offline :type 'function) +(defcustom gnus-offline-agent-automatic-expire t + "*Non-nil means expire articles on every session." + :group 'gnus-offline + :type 'boolean) + +;; These variables should be customized using `gnus-offline-customize', +;; not by `customize'. + +(defvar gnus-offline-dialup-program nil + "*Program name for dialup.") + +(defvar gnus-offline-hangup-program nil + "*Program name for hangup.") + +(defvar gnus-offline-dialup-program-arguments nil + "*Program arguments of gnus-offline-dialup-program.") + +(defvar gnus-offline-hangup-program-arguments nil + "*Program arguments of gnus-offline-hangup-program.") + +(defvar gnus-offline-interval-time 0 + "*Interval time(minutes) to do online jobs. +If set to 0 , timer call is disabled.") + +(defvar gnus-offline-drafts-queue-type 'agent + "*Queuing function used for draft messages.") + +(defvar gnus-offline-MTA-type 'smtp + "*Type of MTA, sendmail or smtp.el.") + ;;; Internal variables. (defvar gnus-offline-connected nil "*If value is t , dialup line is connected status. @@ -211,70 +239,123 @@ If value is nil , dialup line is disconnected status.") (defvar gnus-offline-stored-group-level nil "*Mail Group level before changing.") -(defvar gnus-offline-movemail-arguments nil - "*All command line arguments of exec-directory/movemail.") - (defvar gnus-offline-mail-source nil - "*nnmail-spool-file save variable.") - -;;; Temporary variable: -(defvar string) -(defvar hdr) -(defvar str) -(defvar ver) -(defvar passwd) -(defvar num) -(defvar gnus-offline-error-buffer " *Error*") -(defvar gnus-offline-map (make-sparse-keymap)) - -;;; To silence byte compiler -(and - (fboundp 'eval-when-compile) - (eval-when-compile - (save-excursion - (beginning-of-defun) - (eval-region (point-min) (point))) - (let (case-fold-search) - (mapcar - (function - (lambda (symbol) - (unless (boundp symbol) - (make-local-variable symbol) - (eval (list 'setq symbol nil))))) - '(:group - :prefix :type - sendmail-to-spool-directory - news-spool-request-post-directory - nnspool-version - nnagent-version - msspool-news-server - msspool-news-service - gnspool-get-news - mail-spool-send - news-spool-post - gnus-agent-handle-level - )) - (make-local-variable 'byte-compile-warnings) - (setq byte-compile-warnings nil)))) - -(put 'gnus-offline-set-unplugged-state 'menu-enable 'gnus-offline-connected) -(if (eq system-type 'windows-nt) - (define-process-argument-editing "/hang\\.exe\\'" - (lambda (x) (general-process-argument-editing-function - x nil t t nil t t)))) + "*mail-sources save variable.") + +(defvar gnus-offline-lang) + +(defvar gnus-offline-resource-en + '((error-check-1 + . "WARNING!!: gnus-agent.el or nnagent.el is not loaded. +Please check your .emacs or .gnus.el to work gnus-agent fine.") + (error-check-2 ."WARNING!!: nnspool.el is not loaded. +Please check your .emacs or .gnus.el to work nnspool fine.") + (connect-server-1 . "Dialing ...") + (connect-server-2 . "Dialing ... done.") + (get-new-news-function-1 . "Set to online status.") + (hangup-line-1 . "Hang up line ... ") + (hangup-line-2 . "Hang up line ... done.") + (after-jobs-done-1 . "All online jobs has done.") + (set-auto-ppp-1 . "Connect and disconnect automatically.") + (set-auto-ppp-2 . "Connect automatically.") + (set-auto-ppp-3 . "Connect and disconnect manually.") + (set-auto-ppp-menu-1 . "Automatically Connect/Disconnect") + (set-auto-ppp-menu-2 . "Automatically Connect") + (set-auto-ppp-menu-3 . "Manually Connect/Disconnect") + (toggle-on/off-send-mail-1 . "Sending mail immidiately.") + (toggle-on/off-send-mail-2 . "Sending mail temporary to spool directory.") + (toggle-articles-to-fetch-1 . "Articles fetch from server.") + (toggle-articles-to-fetch-2 . "Only Mail") + (toggle-articles-to-fetch-3 . "Only News") + (toggle-articles-to-fetch-4 . "Mail/News both") + (empting-spool-1 . "Sending mails in spool ...") + (empting-spool-2 . "Sending mails in spool ... done.") + (empting-spool-3 . "Posting news in spool ...") + (empting-spool-4 . "Posting news in spool ... done.") + (empting-spool-5 . "Sending messages in spool ...") + (empting-spool-6 . "Sending messages in spool ... done.") + (interval-time-1 . "Interval time (now %d minutes) : ") + (interval-time-2 . "Retrieving message logic by timer is disabled.") + (interval-time-3 . "Interval time set to %d minutes") + (menu-miee-1 . "Post news in spool") + (menu-miee-2 . "Send mails in spool") + (menu-miee-3 . "Message Offline") + (menu-miee-4 . "Message Online") + (menu-1 . "Toggle articles to fetch") + (menu-2 . "Toggle online/offline send mail") + (menu-3 . "Set auto PPP") + (menu-4 . "Expire articles") + (menu-5 . "Set interval time") + (menu-6 . "Hang up Line.") + (menu-7 . "Customize options..."))) + +(defvar gnus-offline-resource-ja + '((error-check-1 + . "$B7Y9p(B!!: gnus-agent.el $B$^$?$O(B nnagent.el $B$,%m!<%I$5$l$F$$$^$;$s!#(B +.emacs $B$^$?$O(B .gnus.el $B$N(B gnus-agent $B$N@_Dj$r@5$7$/$7$F$/$@$5$$!#(B") + (error-check-2 ."$B7Y9p(B!!: nnspool.el $B$,%m!<%I$5$l$F$$$^$;$s!#(B +.emacs $B$^$?$O(B .gnus.el $B$N(B nnspool $B$N@_Dj$r@5$7$/$7$F$/$@$5$$!#(B") + (connect-server-1 . "$B@\B3$7$F$$$^$9(B...") + (connect-server-2 . "$B@\B3$7$F$$$^$9(B...$B40N;!#(B") + (get-new-news-function-1 . "$B%*%s%i%$%s>uBV$G$9!#(B") + (set-auto-ppp-1 . "$B<+F0E*$K(B PPP $B@\B3!&@ZCG$7$^$9!#(B") + (set-auto-ppp-2 . "$B<+F0E*$K(B PPP $B@\B3$7$^$9!#(B") + (set-auto-ppp-3 . "$B@\Aw?.$7$^$9!#(B") + (toggle-on/off-send-mail-2 . "$B%a!<%k$O%-%e!<$KAw$i$l$^$9!#(B") + (toggle-articles-to-fetch-1 . "$BJ}$G$9!#(B") + (empting-spool-1 . "$B%-%e!<$N%a!<%k$rAw?.Cf(B...") + (empting-spool-2 . "$B%-%e!<$N%a!<%k$rAw?.Cf(B... $B40N;!#(B") + (empting-spool-3 . "$B%-%e!<$N%K%e!<%95-;v$rAw?.Cf(B...") + (empting-spool-4 . "$B%-%e!<$N%K%e!<%95-;v$rAw?.Cf(B... $B40N;!#(B") + (empting-spool-5 . "$B%-%e!<$N%a%C%;!<%8$rAw?.Cf(B...") + (empting-spool-6 . "$B%-%e!<$N%a%C%;!<%8$rAw?.Cf(B... $B40N;!#(B") + (interval-time-1 . "$BAwuBV$X(B") + (menu-miee-4 . "Online $B>uBV$X(B") + (menu-1 . "$BC$9(B") + (menu-5 . "$B5-;v mail -> news -> both ;; (defun gnus-offline-toggle-articles-to-fetch () "*Set articles to fetch... both(Mail/News) -> mail only -> News only -> both" (interactive) - (setq string "Articles fetch from server.") - (cond ((eq gnus-offline-articles-to-fetch 'both) - (setq gnus-offline-articles-to-fetch 'mail - str "Only Mail")) - ((eq gnus-offline-articles-to-fetch 'mail) + (let ((string (gnus-offline-get-message 'toggle-articles-to-fetch-1)) + str) + (cond ((eq gnus-offline-articles-to-fetch 'both) + (setq gnus-offline-articles-to-fetch 'mail + str (gnus-offline-get-message 'toggle-articles-to-fetch-2))) + ((eq gnus-offline-articles-to-fetch 'mail) (setq gnus-offline-articles-to-fetch 'news - str "Only News")) - (t - (setq gnus-offline-articles-to-fetch 'both - str "Mail/News both"))) - (message (format "%s %s" string str))) -;; -;; Toggle movemail program pop3.el -> movemail -> pop3.el -;; -(defun gnus-offline-toggle-movemail-program () - "*Toggle movemail program movemail -> pop3.el -> movemail ->..." - (interactive) - (setq string "Set nnmail-movemail-program") - (cond ((eq pop3-fma-movemail-type 'lisp) - (setq pop3-fma-movemail-type 'exe - str "to movemail")) - (t - (setq pop3-fma-movemail-type 'lisp - str "to pop3.el"))) - (message (format "%s %s" string str))) + str (gnus-offline-get-message 'toggle-articles-to-fetch-3))) + (t + (setq gnus-offline-articles-to-fetch 'both + str (gnus-offline-get-message 'toggle-articles-to-fetch-4)))) + (message (format "%s %s" string str)))) ;; ;; Send mail and Post news using Miee or gnus-agent. ;; @@ -679,11 +765,11 @@ If value is nil , dialup line is disconnected status.") (progn (if (eq gnus-offline-mail-treat-environ 'offline) (progn - (message "Sending mails in spool ...") + (message (gnus-offline-get-message 'empting-spool-1)) ;; Using miee to send mail. (mail-spool-send) - (message "Sending mails in spool ... done."))) - (message "Posting news in spool ...") + (message (gnus-offline-get-message 'empting-spool-2)))) + (message (gnus-offline-get-message 'empting-spool-3)) ;; Using miee to post news. (if (and (not (stringp msspool-news-server)) (not msspool-news-service)) @@ -691,11 +777,11 @@ If value is nil , dialup line is disconnected status.") (setq msspool-news-server (nth 1 gnus-select-method)) (setq msspool-news-service 119))) (news-spool-post) - (message "Posting news in spool ... done.")) + (message (gnus-offline-get-message 'empting-spool-4))) ;; Send queued message by gnus-agent - (message "Sending messages in spool ...") + (message (gnus-offline-get-message 'empting-spool-5)) (gnus-group-send-drafts) - (message "Sending messages in spool ... done.")) + (message (gnus-offline-get-message 'empting-spool-6))) ;; (run-hooks 'gnus-offline-after-empting-spool-hook)) ;; @@ -706,14 +792,16 @@ If value is nil , dialup line is disconnected status.") (interactive) (setq gnus-offline-interval-time (string-to-int (read-from-minibuffer - (format "Interval time (now %s minutes) : " + (format (gnus-offline-get-message 'interval-time-1) gnus-offline-interval-time) nil))) (if (< gnus-offline-interval-time 2) (progn - (message "Retrieving message logic by timer is disabled.") + (message (gnus-offline-get-message 'interval-time-2)) (setq gnus-offline-interval-time 0)) - (message (format "Interval time set to %d minutes" gnus-offline-interval-time))) + (message + (format (gnus-offline-get-message 'interval-time-3) + gnus-offline-interval-time))) (gnus-offline-processed-by-timer)) ;; ;; Expire articles using gnus-agent. @@ -721,25 +809,27 @@ If value is nil , dialup line is disconnected status.") (defun gnus-offline-agent-expire () "*Expire expirable article on News group." (interactive) - (gnus-agent-expire)) + (and gnus-offline-agent-automatic-expire + (if (eq 0 gnus-agent-expire-days) + (let (gnus-agent-expire-all) + (gnus-agent-expire)) + (gnus-agent-expire)))) ;; ;; Menu. ;; (defun gnus-offline-define-menu-and-key () "*Set key and menu." (if (eq gnus-offline-drafts-queue-type 'miee) - (if (featurep 'xemacs) + (static-if (featurep 'xemacs) (add-hook 'gnus-group-mode-hook 'gnus-offline-define-menu-on-miee) (gnus-offline-define-menu-on-miee)) (add-hook 'gnus-group-mode-hook 'gnus-offline-define-menu-on-agent)) (add-hook 'gnus-group-mode-hook '(lambda () (local-set-key "\C-coh" 'gnus-offline-set-unplugged-state) - (if (not (featurep 'running-pterodactyl-gnus-0_73-or-later)) - (local-set-key "\C-com" 'gnus-offline-toggle-movemail-program)) (local-set-key "\C-cof" 'gnus-offline-toggle-articles-to-fetch) (local-set-key "\C-coo" 'gnus-offline-toggle-on/off-send-mail) - (local-set-key "\C-cox" 'gnus-offline-toggle-auto-hangup) + (local-set-key "\C-cox" 'gnus-offline-set-auto-ppp) (local-set-key "\C-cos" 'gnus-offline-set-interval-time) (substitute-key-definition 'gnus-group-get-new-news 'gnus-offline-gnus-get-new-news @@ -749,149 +839,139 @@ If value is nil , dialup line is disconnected status.") (substitute-key-definition 'gnus-agent-toggle-plugged 'gnus-offline-toggle-plugged gnus-agent-group-mode-map) - (local-set-key "\C-coe" 'gnus-offline-agent-expire))) - (or (featurep 'xemacs) - (define-key gnus-group-mode-map - (if (eq system-type 'windows-nt) [S-mouse-2] [mouse-3]) - 'gnus-offline-popup-menu)))) + (local-set-key "\C-coe" 'gnus-offline-agent-expire))))) (if (eq gnus-offline-news-fetch-method 'nnagent) (add-hook 'gnus-summary-mode-hook '(lambda () (substitute-key-definition 'gnus-agent-toggle-plugged 'gnus-offline-toggle-plugged gnus-agent-summary-mode-map)))) - (if (featurep 'xemacs) - ;; Overwrite the toolbar spec for gnus-group-mode. - (add-hook 'gnus-startup-hook - (lambda () + (static-cond + ((featurep 'xemacs) + ;; Overwrite the toolbar spec for gnus-group-mode. + (add-hook 'gnus-startup-hook + #'(lambda () (catch 'tag - (mapcar (lambda (but) - (when (eq 'gnus-group-get-new-news (aref but 1)) - (aset but 1 'gnus-offline-gnus-get-new-news) - (throw 'tag nil))) - gnus-group-toolbar)))))) -;; -;; + (mapc (lambda (but) + (when (eq 'gnus-group-get-new-news (aref but 1)) + (aset but 1 'gnus-offline-gnus-get-new-news) + (throw 'tag nil))) + gnus-group-toolbar))))) + (t + (add-hook + 'gnus-group-mode-hook + `(lambda () + (define-key gnus-group-mode-map + ,(static-if (eq system-type 'windows-nt) [S-mouse-2] [mouse-3]) + 'gnus-offline-popup-menu)))))) +;; +;; +(defun gnus-offline-popup (menu &optional title) + (static-cond + ((featurep 'xemacs) + (popup-menu menu)) + (t + (let ((menu-func (or (and (fboundp 'easy-menu-create-menu) + 'easy-menu-create-menu) + 'easy-menu-create-keymaps)) + keymap pop func) + (static-cond ((< emacs-major-version 20) + ;; For Emacsen from 19.34 down to 19.28. + ;; Seems the first item in MENU will be ignored. + (or (keymapp menu) + (setq menu + (append (list "" ;; This will be ignored. + (or title "Popup Menu") + "-----" + "-----") + (cdr menu)))) + (setq keymap + (if (keymapp menu) + (append (list 'keymap + (if title + `(nil ,title) + '(nil "Popup Menu")) + '(nil "") + '(nil "")) + (cdr menu)) + (funcall menu-func (car menu) (cdr menu))))) + (t + (setq keymap + (if (keymapp menu) + menu + (funcall menu-func (car menu) (cdr menu)))))) + ;; Display the popup menu. + (if (and (setq pop (x-popup-menu t keymap)) + (setq func (lookup-key keymap + (apply 'vector pop)))) + (funcall func)))))) + +(defun gnus-offline-get-menu-items (list) + (mapcar + #'(lambda (el) + (if (listp el) + (apply 'vector + (cons (gnus-offline-get-message (car el)) (cdr el))) + el)) + list)) + +(defvar gnus-offline-menu + (gnus-offline-get-menu-items + '((menu-1 gnus-offline-toggle-articles-to-fetch t) + (menu-2 gnus-offline-toggle-on/off-send-mail t) + (menu-3 gnus-offline-set-auto-ppp t) + "----" + (menu-4 gnus-offline-agent-expire + (eq gnus-offline-news-fetch-method 'nnagent)) + (menu-5 gnus-offline-set-interval-time t) + "----" + (menu-6 gnus-offline-set-unplugged-state gnus-offline-connected) + "----" + (menu-7 gnus-ofsetup-customize t)))) + (defun gnus-offline-define-menu-on-miee () "*Set and change menu bar on MIEE menu." - (let ((menu - (if (featurep 'meadow) - (easy-menu-change - nil - "Miee" - '( - ["Spool $B$K$"$k5-;v$NAw?.(B" news-spool-post t] - ["Spool $B$K$"$k(B Mail $B$NAw?.(B" mail-spool-send t] - "----" - ["Offline $B>uBV$X(B" message-offline-state (not message-offline-state)] - ["Online $B>uBV$X(B" message-online-state message-offline-state] - "----" - ("Gnus Offline" - ["movemail $B$N@ZBX$((B" gnus-offline-toggle-movemail-program - (not (featurep 'running-pterodactyl-gnus-0_73-or-later))] - ["$BC$9(B" gnus-offline-agent-expire (eq gnus-offline-news-fetch-method 'nnagent)] - ["$B5-;vC$9(B" gnus-offline-agent-expire (eq gnus-offline-news-fetch-method 'nnagent)] - ["$B5-;v +;;; Tsukamoto Tetsuo ;;; ;;; This file is part of Semi-gnus. ;;; @@ -31,449 +30,234 @@ ;;; Code: -(defvar gnus-offline-setting-file "~/.gnus-offline.el") -(defvar gnus-offline-use-miee nil) -(defvar gnus-offline-news-fetch-method nil) -(defvar gnus-offline-mail-fetch-method nil) -(defvar gnus-offline-hangup-program nil) -(defvar gnus-offline-dialup-program nil) -(defvar gnus-offline-mail-spool-directory nil) -(defvar gnus-offline-news-spool-directory nil) -(defvar pop3-fma-spool-file-alist nil) -(defvar pop3-fma-movemail-type nil) -(defvar pop3-fma-movemail-arguments nil) -(defvar use-miee nil) -(defvar address nil) -(defvar mail-source nil) -(defvar options nil) - -;;; To silence byte compiler -(and - (fboundp 'eval-when-compile) - (eval-when-compile - (save-excursion - (beginning-of-defun) - (eval-region (point-min) (point))) - (let (case-fold-search) - (mapcar - (function - (lambda (symbol) - (unless (boundp symbol) - (make-local-variable symbol) - (eval (list 'setq symbol nil))))) - '(:group - :prefix :type - sendmail-to-spool-directory - news-spool-request-post-directory - nnspool-version - nnagent-version - msspool-news-server - msspool-news-service - gnspool-get-news - mail-spool-send - news-spool-post - gnus-agent-handle-level - )) - (make-local-variable 'byte-compile-warnings) - (setq byte-compile-warnings nil)))) - -(defun gnus-setup-for-offline () - "*Set up Gnus for offline environment." - (interactive) - - (if (not (file-exists-p gnus-offline-setting-file)) - (progn - (let ((news-method - (completing-read - "Method for offline News reading (TAB to completion): " - '(("gnus-agent" 1) ("nnspool" 2)) - nil t nil)) - (mail-method 'nnmail) - (program - (read-file-name "Dialup/Hangup program(type nil or null string you do not use): ")) - (mta-type - (completing-read - "Select MTA type for sending mail (TAB to completion): " - '(("smtp" 1) ("sendmail" 2)) - nil t nil)) - (num-of-address - (read-from-minibuffer "How many e-mail address do you have: ")) - ) - (if (string-equal news-method "nnspool") - (setq use-miee t) - (setq use-miee (y-or-n-p "Use MIEE post/send message "))) - ;; - ;; Set variables. - (if (string-equal news-method "gnus-agent") - (setq gnus-offline-news-fetch-method 'nnagent) - (setq gnus-offline-news-fetch-method 'nnspool)) - ;; - (setq gnus-offline-mail-fetch-method mail-method) - (setq gnus-offline-use-miee use-miee) - - ;; Set programs. - (if (or (string-equal program "nil") - (string-equal program "")) - (progn - (setq gnus-offline-hangup-program nil) - (setq gnus-offline-dialup-program nil)) - (let ((options - (read-from-minibuffer "Dialup program options: "))) - (setq gnus-offline-dialup-program-arguments - (split-string options "[\t ]+"))) - (let ((options - (read-from-minibuffer "Hangup program options: "))) - (setq gnus-offline-hangup-program-arguments - (split-string options "[\t ]+"))) - (setq gnus-offline-hangup-program program) - (setq gnus-offline-dialup-program program)) - - ;; Set spool directory for outgoing messages. - (if use-miee - (progn - ;; Setting for MIEE with nnspool. - (let ((news-spool - (read-from-minibuffer - "News spool directory for sending: " - "/usr/spool/news.out")) - (mail-spool - (read-from-minibuffer - "Mail spool directory for sending: " - "/usr/spool/mail.out"))) - (setq gnus-offline-mail-spool-directory mail-spool) - (setq gnus-offline-news-spool-directory news-spool) - (setq gnus-offline-drafts-queue-type 'miee) - - (gnus-ofsetup-prepare-for-miee))) - - ;; Set drafts type gnus-agent. - (setq gnus-offline-drafts-queue-type 'agent)) - - ;; Setting for gnus-agent. - (if (eq gnus-offline-news-fetch-method 'nnagent) - (let ((agent-directory - (read-from-minibuffer "Agent directory: " "~/News/agent"))) - (setq gnus-agent-directory agent-directory))) - - ;; Determin MTA type. - (if (string-equal mta-type "smtp") - (setq gnus-offline-MTA-type 'smtp) - (setq gnus-offline-MTA-type 'sendmail) - ) - ;; - ;; Set E-Mail Address and pop3 movemail type. - (setq i (string-to-int num-of-address)) - (setq address nil) - (if (not (locate-library "mail-source")) - (progn - (while (> i 0) - (setq address - (append address - (list - (list - (concat "po:" - (read-from-minibuffer - "Email address (user@mailhost): ")) - (completing-read - "Authentification Method (TAB to completion): " - '(("pass" 1) ("apop" 2)) nil t nil))))) - (setq i (- i 1))) - ;; Replace "hoge" -> 'hoge - (mapcar - (lambda (x) - (if (string-equal (nth 1 x) "pass") - (setcar (cdr x) 'pass) - (setcar (cdr x) 'apop))) - address) - (setq pop3-fma-spool-file-alist address) - ;; Set movemail type. - (let ((movemail-type - (completing-read - "Select movemail type for retreave mail (TAB to completion): " - '(("exe" 1) ("lisp" 2)) - nil t nil)) - ) - (if (string-equal movemail-type "exe") - (let ((options - (read-from-minibuffer "movemail options: "))) - (setq pop3-fma-movemail-arguments (split-string options "[\t ]+")))) - (if (string-equal movemail-type "exe") - (setq pop3-fma-movemail-type 'exe) - (setq pop3-fma-movemail-type 'lisp)))) - ;; - ;; Use mail-source.el - (setq mail-source nil) - (while (> i 0) - (let ((user (read-from-minibuffer "Mail Account name : ")) - (server (read-from-minibuffer "Mail server : ")) - (auth (completing-read - "Authentification Method (TAB to completion): " - '(("password") ("apop")) nil t nil)) - (islisp (y-or-n-p "Do you use pop3.el to fetch mail? ")) - source) - (if (not islisp) - (let ((prog (read-file-name "movemail program name: " - exec-directory "movemail")) - (args (read-from-minibuffer "movemail options: " - "-pf"))) - (setq source (list 'pop - :user user - :server server - :program (format "%s %s %s %s %s" - prog - args - "po:%u" - "%t" - "%p")))) - (setq source (list 'pop - :user user - :server server))) - (setq mail-source - (nconc mail-source - (list - (if (string-equal "apop" auth) - (nconc source '(:authentication apop)) - source))))) - (setq i (1- i))) - (setq gnus-offline-mail-source mail-source))) - - (setq save-passwd - (y-or-n-p "Do you save password information to newsrc file? ")) - - (gnus-ofsetup-write-setting-file))) - (load gnus-offline-setting-file)) - -(defun gnus-ofsetup-prepare-for-miee () - ;; Load MIEE. - (if (not (boundp 'miee-version)) - (load "miee")) - ;; Set news post function for MIEE. - (setq message-send-news-function 'gnspool-request-post) - ;; Spool directory setting - MIEE. - (if (not (file-exists-p gnus-offline-mail-spool-directory)) - (make-directory gnus-offline-mail-spool-directory t)) - (setq sendmail-to-spool-directory - gnus-offline-mail-spool-directory) - (if (not (file-exists-p gnus-offline-news-spool-directory)) - (make-directory gnus-offline-news-spool-directory t)) - (setq news-spool-request-post-directory - gnus-offline-news-spool-directory)) - -(defun gnus-ofsetup-write-setting-file () - ;; Write to setting file. - (setq tmp-buffer (get-buffer-create "* Setting")) - (set-buffer "* Setting") - (erase-buffer) - (insert ";;\n"); - (insert ";; This file is created by gnus-ofsetup.el\n") - (insert ";; Creation date : ") - (insert (current-time-string)) - (insert "\n") - (insert ";;\n") - - ;; write Basic setting - (insert "(setq gnus-offline-news-fetch-method '") - (insert (prin1-to-string gnus-offline-news-fetch-method)) - (insert ")\n") - (insert "(setq gnus-offline-mail-fetch-method '") - (insert (prin1-to-string gnus-offline-mail-fetch-method)) - (insert ")\n") - (insert "(setq gnus-offline-use-miee ") - (insert (prin1-to-string gnus-offline-use-miee)) - (insert ")\n") - (insert "(setq gnus-offline-dialup-program ") - (insert (prin1-to-string gnus-offline-dialup-program)) - (insert ")\n") - - ;; write dialup/hangup program and options. - (if (stringp gnus-offline-dialup-program) - (progn - (insert "(setq gnus-offline-dialup-program-arguments '") - (insert (prin1-to-string gnus-offline-dialup-program-arguments)) - (insert ")\n"))) - (insert "(setq gnus-offline-hangup-program ") - (insert (prin1-to-string gnus-offline-hangup-program)) - (insert ")\n") - (if (stringp gnus-offline-hangup-program) - (progn - (insert "(setq gnus-offline-hangup-program-arguments '") - (insert (prin1-to-string gnus-offline-hangup-program-arguments)) - (insert ")\n"))) - - (if (boundp 'gnus-offline-interval-time) - (progn - (insert "(setq gnus-offline-interval-time ") - (insert (prin1-to-string gnus-offline-interval-time)) - (insert ")\n"))) - - ;; write setting about MIEE. - (if gnus-offline-use-miee - (progn - (insert "(setq gnus-offline-mail-spool-directory ") - (insert (prin1-to-string gnus-offline-mail-spool-directory)) - (insert ")\n") - (insert "(setq gnus-offline-news-spool-directory ") - (insert (prin1-to-string gnus-offline-news-spool-directory)) - (insert ")\n") - (insert "(setq sendmail-to-spool-directory gnus-offline-mail-spool-directory)\n") - (insert "(setq news-spool-request-post-directory gnus-offline-news-spool-directory)\n") - (insert "(load \"miee\")\n") - (insert "(setq message-send-news-function '") - (insert (prin1-to-string message-send-news-function)) - (insert ")\n"))) - - ;; write setting about nnspool and gnus-agent. - (if (equal gnus-offline-news-fetch-method 'nnspool) - (insert "(message-offline-state)\n") - (insert "(setq gnus-agent-directory ") - (insert (prin1-to-string gnus-agent-directory)) - (insert ")\n")) - - ;; write setting about queue type -- MIEE or nnagent. - (insert "(setq gnus-offline-drafts-queue-type '") - (insert (prin1-to-string gnus-offline-drafts-queue-type)) - (insert ")\n") - (insert "(setq gnus-offline-MTA-type '") - (insert (prin1-to-string gnus-offline-MTA-type)) - (insert ")\n") - - ;; Offline setting for gnus-nntp-* - (insert "(setq gnus-nntp-service nil)\n") - (insert "(setq gnus-nntp-server nil)\n") - - ;; Write setting about hooks. - (insert "(add-hook 'gnus-group-mode-hook 'gnus-offline-processed-by-timer t)\n") - (insert "(add-hook 'gnus-group-mode-hook 'gnus-offline-error-check t)\n") - (insert "(add-hook 'gnus-after-getting-new-news-hook 'gnus-offline-after-get-new-news)\n") - (insert "(add-hook 'gnus-after-getting-news-hook 'gnus-offline-after-get-new-news)\n") - (if (eq gnus-offline-news-fetch-method 'nnspool) - (progn - (insert "(add-hook 'after-getting-news-hook 'gnus-offline-nnspool-hangup-line)\n") - (insert "(add-hook 'gnus-before-startup-hook (lambda () (setq nnmail-spool-file nil)))\n"))) - (insert "(add-hook 'message-send-hook 'gnus-offline-message-add-header)\n") - (insert "(autoload 'gnus-offline-setup \"gnus-offline\")\n") - (insert "(add-hook 'gnus-load-hook 'gnus-offline-setup)\n") - - (if (not (locate-library "mail-source")) - (progn - ;; Write setting about pop3-fma. - (insert "(require 'pop3-fma)\n") - (insert "(add-hook 'message-send-hook 'pop3-fma-message-add-header)\n") - (insert "(setq pop3-fma-spool-file-alist '") - (insert (prin1-to-string pop3-fma-spool-file-alist)) - (insert ")\n") - (insert "(setq pop3-fma-movemail-type '") - (insert (prin1-to-string pop3-fma-movemail-type)) - (insert ")\n") +(eval-when-compile (require 'cl)) + +(eval-and-compile + (defvar gnus-offline-lang + (cond ((and (featurep 'meadow) + (string= current-language-environment "Japanese")) + "ja_complete") + ((and (boundp 'current-language-environment) + (string= current-language-environment "Japanese")) + "ja") + (t + "en")) + "This variable decides which language will be used for display.")) + +(eval-when-compile + (require 'gnus-offline)) + +(defvar gnus-offline-setting-file + (let ((user (user-login-name)) + (real-user (user-real-login-name))) + (if (string= user real-user) + "~/.gnus-offline.el" + ;; Seems it is after "su". + (let ((file (concat "~" user "/.gnus-offline.el")) + (real-file (concat "~" real-user "/.gnus-offline.el"))) + (cond ((file-exists-p real-file) + real-file) + ((file-exists-p file) + file) + (t + real-file)))))) + +(eval-when-compile + (defvar gnus-ofsetup-prepare-for-miee + '(;; Spool directory setting - MIEE. + (setq mail-spool (or mail-spool "/usr/spool/mail.out")) + (setq news-spool (or news-spool "/usr/spool/news.out")) + (condition-case nil + (progn + (if (not (file-exists-p mail-spool)) + (make-directory mail-spool t)) + (if (not (file-exists-p news-spool)) + (make-directory news-spool t))) + (error + (error (gnus-ofsetup-get-message 'prepare-miee-1)))))) + + (defvar gnus-ofsetup-update-setting-file + '((save-excursion + (set-buffer (get-buffer-create "* Setting")) + (erase-buffer) + (insert ";;\n") + (insert ";; This file is created by gnus-ofsetup.el\n") + (insert ";; Creation date : " (current-time-string) "\n") + (insert ";;\n") + + ;; write Basic setting + (insert "(setq gnus-offline-news-fetch-method '" + (prin1-to-string news-method) ")\n") + (insert "(setq gnus-offline-mail-fetch-method '" + (prin1-to-string mail-method) ")\n") + + ;; write dialup/hangup program and options. + (insert "(setq gnus-offline-dialup-program " + (prin1-to-string dialup-program) ")\n") + (if (stringp dialup-program) + (insert "(setq gnus-offline-dialup-program-arguments '" + (prin1-to-string dialup-program-arguments) ")\n")) + (insert "(setq gnus-offline-hangup-program " + (prin1-to-string hangup-program) ")\n") + (if (stringp hangup-program) + (insert "(setq gnus-offline-hangup-program-arguments '" + (prin1-to-string hangup-program-arguments) ")\n")) + + (if (integerp interval) + (insert "(setq gnus-offline-interval-time " + (prin1-to-string interval) ")\n")) + + ;; write setting about MIEE. + (when use-miee + (insert "(setq sendmail-to-spool-directory " + (prin1-to-string mail-spool) ")\n") + (insert "(setq news-spool-request-post-directory " + (prin1-to-string news-spool) ")\n") + (insert "(if (not (boundp 'miee-version)) + (load \"miee\"))\n") + (insert "(setq message-send-news-function 'gnspool-request-post)\n")) + + ;; write setting about nnspool and gnus-agent. + (if (eq news-method 'nnspool) + (insert "(message-offline-state)\n") + (insert "(setq gnus-agent-directory " + (prin1-to-string agent-directory) ")\n")) + + ;; write setting about queue type -- MIEE or nnagent. + (insert "(setq gnus-offline-drafts-queue-type '" + (prin1-to-string drafts-queue-type) ")\n") + (insert "(setq gnus-offline-MTA-type '" + (prin1-to-string MTA-type) ")\n") + + ;; Offline setting for gnus-nntp-* + (insert "(setq gnus-nntp-service nil)\n") + (insert "(setq gnus-nntp-server nil)\n") + + ;; Write setting about hooks. + (insert (format "%s %s %s\n" + "(add-hook" + "'gnus-group-mode-hook" + "'gnus-offline-processed-by-timer t)")) + (insert (format "%s %s %s\n" + "(add-hook" + "'gnus-group-mode-hook" + "'gnus-offline-error-check t)")) + (insert (format "%s %s %s\n" + "(add-hook" + "'gnus-after-getting-new-news-hook" + "'gnus-offline-after-get-new-news)")) + (when (eq news-method 'nnspool) + (insert (format "%s %s %s\n" + "(add-hook" + "'after-getting-news-hook" + "'gnus-offline-nnspool-hangup-line)")) + (insert (format "%s %s %s\n" + "(add-hook" + "'gnus-before-startup-hook" + "(lambda () (setq nnmail-spool-file nil) + (setq mail-sources nil)))"))) + (insert (format "%s %s %s\n" + "(add-hook" + "'message-send-hook" + "'gnus-offline-message-add-header)")) + (insert "(autoload 'gnus-offline-setup \"gnus-offline\")\n") + (insert "(add-hook 'gnus-load-hook 'gnus-offline-setup)\n") + + ;; Write stting about mail-source.el + (insert "(setq gnus-offline-mail-source '" + (prin1-to-string mail-source) ")\n") + (insert "(setq mail-sources gnus-offline-mail-source)\n") + (insert "(require 'read-passwd)\n") + (insert "(setq mail-source-read-passwd 'read-pw-read-passwd)\n") + (insert (format "%s %s %s\n" + "(add-hook" + "'gnus-setup-news-hook" + "'read-pw-set-mail-source-passwd-cache)")) (if save-passwd - (insert "(add-hook 'gnus-setup-news-hook \n (lambda ()\n (setq pop3-fma-save-password-information t)\n (add-to-list 'gnus-variable-list 'pop3-fma-password)))\n")) - (if (eq pop3-fma-movemail-type 'exe) - (progn - (insert "(setq pop3-fma-movemail-arguments '") - (insert (prin1-to-string pop3-fma-movemail-arguments)) - (insert ")\n")))) - ;; Write stting about mail-source.el - (insert "(setq gnus-offline-mail-source '") - (insert (prin1-to-string gnus-offline-mail-source)) - (insert ")\n") - (insert "(setq nnmail-spool-file gnus-offline-mail-source)\n") - (insert "(require 'read-passwd)\n") - (insert "(setq mail-source-read-passwd 'read-pw-read-passwd)\n") - (insert "(add-hook 'gnus-setup-news-hook 'read-pw-set-mail-source-passwd-cache)\n") - (if save-passwd - (insert "(add-hook 'gnus-setup-news-hook \n (lambda ()\n (add-to-list 'gnus-variable-list 'mail-source-password-cache)))\n")) - ) - (write-region (point-min) (point-max) gnus-offline-setting-file) - (kill-buffer "* Setting")) - - -;;; Suppport for customizing gnus-ofsetup parameters. - -(autoload 'gnus-custom-mode "gnus-cus" nil t) - -(defun gnus-ofsetup-parameters () - "Return alist of gnus-offline configuration parameters." - `((news-method - (choice :tag "News Method" :value ,gnus-offline-news-fetch-method - (const :tag "Gnus Agent" nnagent) - (const :tag "nnspool" nnspool)) "\ + (insert "(add-hook 'gnus-setup-news-hook + (lambda () + (add-to-list 'gnus-variable-list 'mail-source-password-cache)))\n")) + + ;; + (write-region (point-min) (point-max) gnus-offline-setting-file)) + (kill-buffer "* Setting"))) + + (defmacro gnus-ofsetup-prepare (list) + (let ((forms (symbol-value list))) + `(progn ,@forms)))) + +(defvar gnus-ofsetup-resource-en + '((prepare-miee-1 + . "Making directories failed. Set mail/news spool directories properly.") + (completing-read-symbol-1 . " (TAB to completion): ") + (setup-1 . "Method for offline News reading") + (setup-2 . "Agent directory: ") + (setup-3 . "Dialup program (give a null string if you do not use): ") + (setup-4 . "Dialup program options: ") + (setup-5 . "Hangup program (give a null string if you do not use): ") + (setup-6 . "Hangup program options: ") + (setup-7 . "Select MTA type for sending mail") + (setup-8 . "Use MIEE post/send message ") + (setup-9 . "News spool directory for sending: ") + (setup-10 . "Mail spool directory for sending: ") + (setup-11 . "How many e-mail address do you have: ") + (setup-12 . "Mail Account name : ") + (setup-13 . "Mail server : ") + (setup-14 . "Authentification Method (TAB to completion): ") + (setup-15 . "Do you use pop3.el to fetch mail? ") + (setup-16 . "movemail program name: ") + (setup-17 . "movemail options: ") + (setup-18 . "Do you save password information to newsrc file? ") + (param-news-method-1 . "News Method") + (param-news-method-2 . "Gnus Agent") + (param-news-method-3 . "nnspool") + (param-news-method-4 . "\ Method to fetch news articles.") - - (dialup-program - (choice :tag "Dialup Program" :value ,gnus-offline-dialup-program - (string :tag "Use Program..") - (const :tag "Don't auto-dial." nil)) "\ + (param-dialup-program-1 . "Dialup Program") + (param-dialup-program-2 . "Use program..") + (param-dialup-program-3 . "Don't use a program.") + (param-dialup-program-4 . "\ Program which does dial.") - - (dialup-prog-args - (repeat :tag "Dialup Program Arguments" - :value ,gnus-offline-dialup-program-arguments - (string :tag "Argument"))"\ + (param-dialup-program-arg-1 . "Dialup Program Arguments") + (param-dialup-program-arg-2 . "Argument") + (param-dialup-program-arg-3 . "\ Program arguments of gnus-offline-dialup-program.") - - (hangup-program - (choice :tag "Hangup Program" :value ,gnus-offline-hangup-program - (string :tag "Use Program..") - (const :tag "Don't auto-hangup." nil)) "\ + (param-hangup-program-1 . "Hangup Program") + (param-hangup-program-2 . "Use program..") + (param-hangup-program-3 . "Don't use a program.") + (param-hangup-program-4 . "\ Program which does hangup.") - - (hangup-prog-args - (repeat :tag "Hangup Program Arguments" - :value ,gnus-offline-hangup-program-arguments - (string :tag "Argument")) "\ + (param-hangup-program-arg-1 . "Hangup Program Arguments") + (param-hangup-program-arg-2 . "Argument") + (param-hangup-program-arg-3 . "\ Program arguments of gnus-offline-hangup-program.") - - (interval - (integer :tag "Interval between Jobs" - :value ,gnus-offline-interval-time) "\ + (param-interval-1 . "Interval between Jobs") + (param-interval-2 . "\ Interval time(minutes) to do online jobs. If set to 0 , timer call is disabled.") - - (draft-type - (choice :tag "Drafts Queue Type" :value ,gnus-offline-drafts-queue-type - (const :tag "Gnus Draft for queuing." agent) - (const :tag "I prefer MIEE for queuing." miee)) "\ + (param-drafts-queue-type-1 . "Drafts Queue Type") + (param-drafts-queue-type-2 . "Gnus Draft for queuing.") + (param-drafts-queue-type-3 . "I prefer MIEE for queuing.") + (param-drafts-queue-type-4 . "\ Type of queue used for draft messages. If the select method for news is nnspool, you must choose MIEE. MIEE is another library for offline messaging. It isn't part of Semi-gnus. If you want to know about MIEE, see README-offline.{en,ja}.") - - (mail-spool - (directory :tag "Mail Spool Directory for MIEE" - :value ,(cond (gnus-offline-mail-spool-directory - gnus-offline-mail-spool-directory) - ((and (boundp 'sendmail-to-spool-directory) - sendmail-to-spool-directory) - sendmail-to-spool-directory) - (t "~/")))) - - (news-spool - (directory :tag "News Spool Directory for MIEE" - :value ,(cond (gnus-offline-news-spool-directory - gnus-offline-news-spool-directory) - ((and (boundp 'news-spool-request-post-directory) - news-spool-request-post-directory) - news-spool-request-post-directory) - (t "~/")))) - - (mta-type - (choice :tag "MTA Type" :value ,gnus-offline-MTA-type - (const :tag "Use smtp.el" smtp) - (const :tag "Use sendmail" sendmail)) "\ + (param-mail-spool-1 . "Mail Spool Directory for MIEE") + (param-news-spool-1 . "News Spool Directory for MIEE") + (param-MTA-type-1 . "MTA Type") + (param-MTA-type-2 . "Use smtp.el") + (param-MTA-type-3 . "Use sendmail") + (param-MTA-type-4 . "\ Type of MTA used for sending mail.") - - (save-password - (choice :tag "Save Password in Startup File" - :value ,(if (memq 'mail-source-password-cache gnus-variable-list) - t - nil) - (const :tag "OK, I'm sure it's safe." t) - (const :tag "No way, it's too dangerous!" nil)) "\ + (param-save-passwd-1 . "Save Password in Startup File") + (param-save-passwd-2 . "OK, I'm sure it's safe.") + (param-save-passwd-3 . "No way, it's too dangerous!") + (param-save-passwd-4 . "\ Whether you want your POP passwords written in .newsrc.eld or not.") - - (mail-source - (sexp :tag "Mail Sources" :value ,gnus-offline-mail-source) "\ + (param-mail-source-1 . "Mail Sources") + (param-mail-source-2 . "\ Information of mail sources. Actually, a list of `Mail Source Specifiers'. The format of this variable is just the same as `mail-sources' (or @@ -487,26 +271,376 @@ below: (pop :program \"movemail -pf po:%u %t %p\") If you want to know more about mail source specifiers and keywords, -click the button below."))) +click the button below.") + (customize-1 . "Customize the Gnus Offline Parameters, and press ") + (customize-2 . "done") + (customize-3 . "Push me when done customizing.") + (customize-4 . "Parameters") + (customize-5 . "\ +These parameters will be saved in ~/.gnus-offline.el. + +Note: Touching these parameters may require Gnus or even Emacs to be +restarted.") + (customize-6 . "Push me to learn more.") + (customize-done-1 . "(No changes need to be saved)") + (customize-done-2 + . "Invalid parameters. Check the news method and drafts queue type."))) + +(defvar gnus-ofsetup-resource-ja + '((prepare-miee-1 + . "$B%G%#%l%/%H%j$,:n$l$^$;$s!#%9%W!<%k$N@_Dj$r@5$7$/$7$F$/$@$5$$!#(B") + (completing-read-symbol-1 . "(TAB $B$GJd40$7$^$9(B): ") + (setup-1 . "$B%*%U%i%$%s$G%K%e!<%9$rFI$`J}K!$rA*$s$G$/$@$5$$(B ") + (setup-2 . "Gnus Agent $B$N%G%#%l%/%H%j(B: ") + (setup-3 + . "$B%@%$%d%k@\B3%W%m%0%i%`L>(B ($B;H$o$J$$>l9g$O6uJ8;zNs$rJV$7$F2<$5$$(B): ") + (setup-4 . "$B%@%$%d%k@\B3%W%m%0%i%`$N0z?t(B: ") + (setup-5 + . "$B%@%$%d%k@ZCG%W%m%0%i%`L>(B ($B;H$o$J$$>l9g$O6uJ8;zNs$rJV$7$F2<$5$$(B): ") + (setup-6 . "$B%@%$%d%k@ZCG%W%m%0%i%`$N0z?t(B: ") + (setup-7 . "$B%a!<%kAw?.$K;H$&(B MTA $B$rA*$s$G2<$5$$(B ") + (setup-8 . "$B%a%C%;!<%8$NAw?.$K(B MIEE $B$r;H$$$^$9$+(B? ") + (setup-9 . "$B%K%e!<%9$N%9%W!<%k%G%#%l%/%H%j(B: ") + (setup-10 . "$B%a!<%k$N%9%W!<%k%G%#%l%/%H%j(B: ") + (setup-11 . "$B%a!<%k%"%+%&%s%H$N?t$rEz$($F$/$@$5$$(B: ") + (setup-12 . "$B%a!<%k$N%"%+%&%s%HL>(B: ") + (setup-13 . "$B$=$N%"%+%&%s%H$N$"$k%a!<%k%5!<%PL>(B: ") + (setup-14 . "$B$=$N%5!<%P$G$NG'>ZJ}<0$O(B? (TAB $B$GJd40$7$^$9(B): ") + (setup-15 . "$B%a!<%k$NA0(B: ") + (setup-17 . "movemail $B%W%m%0%i%`$KEO$90z?t(B: ") + (setup-18 . "newsrc $B%U%!%$%k$K(B POP $B%Q%9%o!<%I$rJ]B8$7$^$9$+(B? ") + + (param-news-method-4 . "\ +$B%K%e!<%95-;v$rl9g!"(BMIEE $B$r;XDj$9$kI,MW$,$"$j$^$9!#(B +MIEE $B$O%*%U%i%$%s$G$N%a!<%k(B/$B%K%e!<%9Aw?.5!G=$rDs6!$9$k%i%$%V%i%j$G$9$,!"(B +Semi-gnus $B$K$OIUB0$7$F$$$^$;$s!#(BMIEE $B$K$D$$$FCN$j$?$$>l9g$O(B +README-offline.{en,ja} $B$r;2>H$7$F$/$@$5$$!#(B") + (param-MTA-type-4 . "\ +MTA $B$O%a!<%k$NAw?.$rl9g$K$O!"(B:program $B$r$$$&%-!<%o!<(B +$B%I$r;XDj$7$F0J2<$NMM$K5-=R$7$^$9!#(B + + (pop :program \"movemail -pf po:%u %t %p\") + +mail source specifier $B$H$+>e5-$N$h$&$J%-!<%o!<%I$K$D$$$F$b$C$H$h$/(B +$BCN$j$?$$>l9g$O!"0J2<$N%\%?%s$r%/%j%C%/$7$F$/$@$5$$!#(B(Info $B$N3:Ev2U=j(B +$B$X$N%j%s%/$K$J$C$F$$$^$9!#(B)" ) + + (customize-1 + . "Gnus Offline $B$N%Q%i%a!<%?!#=*$o$C$?$i1&$N%\%?%s$r2!$7$F$/$@$5$$!#(B") + (customize-2 . "done") + (customize-3 . "$B@_Dj$7=*$o$C$?$i%\%/$r2!$7$F$M!#(B") + (customize-4 . "$B%Q%i%a!<%?(B") + (customize-5 . "\ +$B$3$l$i$N%Q%i%a!<%?$O(B ~/.gnus-offline.el $B$KJ]B8$5$l$^$9!#(B + +$BCm0U(B: $B$3$l$i$N%Q%i%a!<%?$NJQ99$O>l9g$K$h$C$F$O(B Gnus ($B$5$i$K>l9g$K(B +$B$h$C$F$O(B Emacs) $B$N:F5/F0$rI,MW$H$9$k$3$H$,$"$j$^$9!#(B") + (customize-6 . "$B$b$C$HCN$j$?$$>l9g$O%\%/$r2!$7$F$M!#(B") + (customize-done-1 . "($BJ]B8$9$Y$-JQ99$O$"$j$^$;$s(B)") + (customize-done-2 + . "$B%K%e!<%99VFI$7$F$/$@$5$$!#(B") + )) + +(defvar gnus-ofsetup-resource-ja_complete + (append + gnus-ofsetup-resource-ja + '((param-news-method-1 . "$B%K%e!<%99VFIJ}K!(B") + (param-news-method-2 . "Gnus Agent") + (param-news-method-3 . "nnspool") + (param-dialup-program-1 . "$B%@%$%d%k@\B3%W%m%0%i%`(B") + (param-dialup-program-2 . "$B%W%m%0%i%`$r;H$&(B..") + (param-dialup-program-3 . "$B%W%m%0%i%`$O;XDj$7$J$$(B") + (param-dialup-program-arg-1 . "$B%@%$%d%k@\B3%W%m%0%i%`$N0z?t(B") + (param-dialup-program-arg-2 . "$B0z?t(B") + (param-hangup-program-1 . "$B%@%$%d%k@ZCG%W%m%0%i%`(B") + (param-hangup-program-2 . "$B%W%m%0%i%`$r;H$&(B..") + (param-hangup-program-3 . "$B%W%m%0%i%`$O;XDj$7$J$$(B") + (param-hangup-program-arg-1 . "$B%@%$%d%k@ZCG%W%m%0%i%`$N0z?t(B") + (param-hangup-program-arg-2 . "$B0z?t(B") + (param-interval-1 . "$B<+F0AwpJs(B")))) + +(defun gnus-ofsetup-get-message (symbol &optional lang) + (setq lang (or lang gnus-offline-lang)) + (or + (cdr (assq symbol (symbol-value + (intern (format "gnus-ofsetup-resource-%s" lang))))) + (cdr (assq symbol gnus-ofsetup-resource-en)))) + +(defun gnus-ofsetup-completing-read-symbol (msg &rest syms) + (intern + (completing-read (concat + msg + (gnus-ofsetup-get-message 'completing-read-symbol-1)) + (mapcar + (lambda (sym) + (list (symbol-name sym))) + syms) + nil t nil))) + +(defun gnus-setup-for-offline () + "*Set up Gnus for offline environment." + (interactive) + (unless (file-exists-p gnus-offline-setting-file) + (let (news-method + mail-method agent-directory drafts-queue-type news-spool mail-spool + use-miee MTA-type dialup-program dialup-program-arguments + hangup-program hangup-program-arguments interval + num-of-address i mail-source save-passwd) + (setq news-method + (gnus-ofsetup-completing-read-symbol + (gnus-ofsetup-get-message 'setup-1) + 'nnagent 'nnspool)) + ;; Setting for gnus-agent. + (if (eq news-method 'nnagent) + (setq agent-directory + (read-from-minibuffer + (gnus-ofsetup-get-message 'setup-2) "~/News/agent"))) + (setq mail-method 'nnmail) + (setq dialup-program + (read-file-name + (gnus-ofsetup-get-message 'setup-3) + nil nil t)) + (if (string-match "^[ \t]*$" dialup-program) + (setq dialup-program nil) + (setq dialup-program-arguments + (delete "" (split-string + (read-from-minibuffer + (gnus-ofsetup-get-message 'setup-4)) + "[\t ]+")))) + (setq hangup-program + (read-file-name + (gnus-ofsetup-get-message 'setup-5) + nil nil t)) + (if (string-match "^[ \t]*$" hangup-program) + (setq hangup-program nil) + (setq hangup-program-arguments + (delete "" (split-string + (read-from-minibuffer + (gnus-ofsetup-get-message 'setup-6)) + "[\t ]+")))) + (setq MTA-type (gnus-ofsetup-completing-read-symbol + (gnus-ofsetup-get-message 'setup-7) + 'smtp 'sendmail)) + (if (eq news-method 'nnspool) + (setq use-miee t) + (setq use-miee (y-or-n-p (gnus-ofsetup-get-message 'setup-8)))) + (if use-miee + (progn + ;; Setting for MIEE. + (setq news-spool + (read-from-minibuffer + (gnus-ofsetup-get-message 'setup-9) + "/usr/spool/news.out")) + (setq mail-spool + (read-from-minibuffer + (gnus-ofsetup-get-message 'setup-10) + "/usr/spool/mail.out")) + (setq drafts-queue-type 'miee) + (gnus-ofsetup-prepare gnus-ofsetup-prepare-for-miee)) + ;; Set drafts type gnus-agent. + (setq drafts-queue-type 'agent)) + ;; Set E-Mail Address and pop3 movemail type. + (setq num-of-address + (read-from-minibuffer (gnus-ofsetup-get-message 'setup-11))) + (setq i (string-to-int num-of-address)) + (while (> i 0) + (let ((user (read-from-minibuffer (gnus-ofsetup-get-message 'setup-12))) + (server (read-from-minibuffer + (gnus-ofsetup-get-message 'setup-13))) + (auth (completing-read + (gnus-ofsetup-get-message 'setup-14) + '(("password") ("apop")) nil t nil)) + (islisp (y-or-n-p (gnus-ofsetup-get-message 'setup-15))) + source) + (if (not islisp) + (let ((prog (read-file-name (gnus-ofsetup-get-message 'setup-16) + exec-directory "movemail")) + (args (read-from-minibuffer + (gnus-ofsetup-get-message 'setup-17) + "-pf"))) + (setq source `(pop + :user ,user + :server ,server + :program ,(format "%s %s %s %s %s" + prog + args + "po:%u" + "%t" + "%p")))) + (setq source `(pop + :user ,user + :server ,server))) + (setq mail-source + (nconc mail-source + (list + (if (string-equal "apop" auth) + (nconc source '(:authentication apop)) + source))))) + (setq i (1- i))) + (setq save-passwd + (y-or-n-p (gnus-ofsetup-get-message 'setup-18))) + ;; + (gnus-ofsetup-prepare gnus-ofsetup-update-setting-file))) + (load gnus-offline-setting-file)) + +;; Suppport for customizing gnus-ofsetup parameters. + +(defvar sendmail-to-spool-directory) +(defvar news-spool-request-post-directory) + +(defun gnus-ofsetup-find-parameters () + "Return the each current value of gnus-offline parameters." + `((news-method + (choice :tag ,(gnus-ofsetup-get-message 'param-news-method-1) + :value ,gnus-offline-news-fetch-method + (const :tag ,(gnus-ofsetup-get-message 'param-news-method-2) + nnagent) + (const :tag ,(gnus-ofsetup-get-message 'param-news-method-3) + nnspool)) + ,(gnus-ofsetup-get-message 'param-news-method-4)) + + (dialup-program + (choice :tag ,(gnus-ofsetup-get-message 'param-dialup-program-1) + :value ,gnus-offline-dialup-program + (string :tag ,(gnus-ofsetup-get-message 'param-dialup-program-2)) + (const :tag ,(gnus-ofsetup-get-message + 'param-dialup-program-3) nil)) + ,(gnus-ofsetup-get-message 'param-dialup-program-4)) + + (dialup-program-arguments + (repeat :tag ,(gnus-ofsetup-get-message 'param-dialup-program-arg-1) + :value ,gnus-offline-dialup-program-arguments + (string :tag ,(gnus-ofsetup-get-message + 'param-dialup-program-arg-2))) + ,(gnus-ofsetup-get-message 'param-dialup-program-arg-3)) + + (hangup-program + (choice :tag ,(gnus-ofsetup-get-message 'param-hangup-program-1) + :value ,gnus-offline-hangup-program + (string :tag ,(gnus-ofsetup-get-message 'param-hangup-program-2)) + (const :tag ,(gnus-ofsetup-get-message 'param-hangup-program-3) + nil)) + ,(gnus-ofsetup-get-message 'param-hangup-program-4)) + + (hangup-program-arguments + (repeat :tag ,(gnus-ofsetup-get-message 'param-hangup-program-arg-1) + :value ,gnus-offline-hangup-program-arguments + (string :tag ,(gnus-ofsetup-get-message + 'param-hangup-program-arg-2))) + ,(gnus-ofsetup-get-message 'param-hangup-program-arg-3)) + + (interval + (integer :tag ,(gnus-ofsetup-get-message 'param-interval-1) + :value ,gnus-offline-interval-time) + ,(gnus-ofsetup-get-message 'param-interval-2)) + + (drafts-queue-type + (choice :tag ,(gnus-ofsetup-get-message 'param-drafts-queue-type-1) + :value ,gnus-offline-drafts-queue-type + (const :tag ,(gnus-ofsetup-get-message 'param-drafts-queue-type-2) + agent) + (const :tag ,(gnus-ofsetup-get-message 'param-drafts-queue-type-3) + miee)) + ,(gnus-ofsetup-get-message 'param-drafts-queue-type-4)) + + (mail-spool + (directory :tag ,(gnus-ofsetup-get-message 'param-mail-spool-1) + :value ,(cond ((and (boundp 'sendmail-to-spool-directory) + sendmail-to-spool-directory) + sendmail-to-spool-directory) + (t + "/usr/spool/mail.out")))) + + (news-spool + (directory :tag ,(gnus-ofsetup-get-message 'param-news-spool-1) + :value ,(cond ((and (boundp 'news-spool-request-post-directory) + news-spool-request-post-directory) + news-spool-request-post-directory) + (t + "/usr/spool/news.out")))) + + (MTA-type + (choice :tag ,(gnus-ofsetup-get-message 'param-MTA-type-1) + :value ,gnus-offline-MTA-type + (const :tag ,(gnus-ofsetup-get-message 'param-MTA-type-2) smtp) + (const :tag ,(gnus-ofsetup-get-message 'param-MTA-type-3) + sendmail)) + ,(gnus-ofsetup-get-message 'param-MTA-type-4)) + + (save-passwd + (choice :tag ,(gnus-ofsetup-get-message 'param-save-passwd-1) + :value ,(if (memq 'mail-source-password-cache gnus-variable-list) + t + nil) + (const :tag ,(gnus-ofsetup-get-message 'param-save-passwd-2) t) + (const :tag ,(gnus-ofsetup-get-message 'param-save-passwd-3) nil)) + ,(gnus-ofsetup-get-message 'param-save-passwd-4)) + + (mail-source + (sexp :tag ,(gnus-ofsetup-get-message 'param-mail-source-1) + :value ,gnus-offline-mail-source) + ,(gnus-ofsetup-get-message 'param-mail-source-2)))) + +(defvar gnus-ofsetup-params) (defun gnus-ofsetup-customize () "Edit the gnus-offline parameters." (interactive) - (let* ((params (gnus-ofsetup-parameters)) + (let* ((params (gnus-ofsetup-find-parameters)) (types (mapcar (lambda (entry) `(cons :format "%v%h\n" :doc ,(nth 2 entry) (const :format "" ,(nth 0 entry)) ,(nth 1 entry))) params))) - ;; Ready. (kill-buffer (gnus-get-buffer-create "*Gnus Offline Customize*")) (switch-to-buffer (gnus-get-buffer-create "*Gnus Offline Customize*")) (gnus-custom-mode) - (widget-insert "Customize the Gnus Offline Parameters, and press ") + (widget-insert (gnus-ofsetup-get-message 'customize-1)) (widget-create 'push-button - :tag "done" - :help-echo "Push me when done customizing." + :tag (gnus-ofsetup-get-message 'customize-2) + :help-echo (gnus-ofsetup-get-message 'customize-3) :action 'gnus-ofsetup-customize-done) (widget-insert "\n\n") (make-local-variable 'gnus-ofsetup-params) @@ -514,19 +648,17 @@ click the button below."))) (widget-create 'group `(set :inline t :greedy t - :tag "Parameters" + :tag ,(gnus-ofsetup-get-message 'customize-4) :format "%t:\n%h%v" - :doc "\ -These paramerters will be saved in ~/.gnus-offline.el. - -Note: Touching these parameters may require Gnus or even Emacs to be -restarted." + :doc ,(gnus-ofsetup-get-message 'customize-5) ,@types))) - + (widget-create 'info-link - :help-echo "Push me to learn more." + :help-echo (gnus-ofsetup-get-message 'customize-6) :tag " mail sources" - "(gnus)Mail Sources") + (if (string-match "^ja" gnus-offline-lang) + "(gnus-ja)Mail Sources" + "(gnus)Mail Sources")) (use-local-map widget-keymap) (local-set-key "q" 'bury-buffer) @@ -537,46 +669,55 @@ restarted." "Apply changes and bury the buffer." (interactive) (let ((params (widget-value gnus-ofsetup-params)) - (combi '((news-method . gnus-offline-news-fetch-method) - (dialup-program . gnus-offline-dialup-program) - (dialup-prog-args . gnus-offline-dialup-program-arguments) - (hangup-program . gnus-offline-hangup-program) - (hangup-prog-args . gnus-offline-hangup-program-arguments) - (interval . gnus-offline-interval-time) - (draft-type . gnus-offline-drafts-queue-type) - (mail-spool . gnus-offline-mail-spool-directory) - (news-spool . gnus-offline-news-spool-directory) - (mta-type . gnus-offline-MTA-type) - (mail-source . gnus-offline-mail-source) - (save-password . save-passwd))) + (news-method gnus-offline-news-fetch-method) + (mail-method gnus-offline-mail-fetch-method) + (agent-directory gnus-agent-directory) + (dialup-program gnus-offline-dialup-program) + (dialup-program-arguments gnus-offline-dialup-program-arguments) + (hangup-program gnus-offline-hangup-program) + (hangup-program-arguments gnus-offline-hangup-program-arguments) + (drafts-queue-type gnus-offline-drafts-queue-type) + (interval gnus-offline-interval-time) + (use-miee (and (boundp 'miee-version) + (or (eq gnus-offline-news-fetch-method 'nnspool) + (eq gnus-offline-drafts-queue-type 'miee)))) + (mail-spool (or (and (boundp 'sendmail-to-spool-directory) + sendmail-to-spool-directory) + "/usr/spool/mail.out")) + (news-spool (or (and (boundp 'news-spool-request-post-directory) + news-spool-request-post-directory) + "/usr/spool/news.out")) + (MTA-type gnus-offline-MTA-type) + (mail-source gnus-offline-mail-source) (save-passwd (and (memq 'mail-source-password-cache gnus-variable-list) t))) (if (null params) - (gnus-message 4 "(No changes need to be saved)") - (mapcar (lambda (el) + (gnus-message 4 (gnus-ofsetup-get-message 'customize-done-1)) + (mapc #'(lambda (el) (let ((sym (car el)) (val (cdr el))) - (set (cdr (assq sym combi)) val) + (set sym val) (cond ((eq sym 'news-method) (if (eq val 'nnspool) - (setq gnus-offline-use-miee t))) - ((eq sym 'draft-type) - (setq gnus-offline-use-miee + (setq use-miee t))) + ((eq sym 'drafts-queue-type) + (setq use-miee (if (eq val 'miee) t nil))) - ((eq sym 'save-password) + ((eq sym 'save-passwd) (if val (add-to-list 'gnus-variable-list 'mail-source-password-cache) (setq gnus-variable-list (delq 'mail-source-password-cache gnus-variable-list))))))) - params) - (if (and (eq gnus-offline-news-fetch-method 'nnspool) - (not (eq gnus-offline-drafts-queue-type 'miee))) - (error "Invalid parameters. Check the news method and drafts queue type.")) - (if gnus-offline-use-miee - (gnus-ofsetup-prepare-for-miee)) - (gnus-ofsetup-write-setting-file))) + params) + (if (and (eq news-method 'nnspool) + (not (eq drafts-queue-type 'miee))) + (error (gnus-ofsetup-get-message 'customize-done-2))) + (if use-miee + (gnus-ofsetup-prepare gnus-ofsetup-prepare-for-miee)) + (gnus-ofsetup-prepare gnus-ofsetup-update-setting-file) + (load gnus-offline-setting-file))) (bury-buffer) (switch-to-buffer gnus-group-buffer)) diff --git a/lisp/gnus-picon.el b/lisp/gnus-picon.el index 38de8df..867d004 100644 --- a/lisp/gnus-picon.el +++ b/lisp/gnus-picon.el @@ -25,6 +25,7 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'gnus) ;; (require 'xpm) (require 'annotations) @@ -96,9 +97,9 @@ Some people may want to add \"unknown\" to this list." (when (featurep 'x) (let ((types (list "xbm"))) (when (featurep 'gif) - (push "gif" types)) + (setq types (cons "gif" types))) (when (featurep 'xpm) - (push "xpm" types)) + (setq types (cons "xpm" types))) types)) "*List of suffixes on picon file names to try." :type '(repeat string) diff --git a/lisp/gnus-salt.el b/lisp/gnus-salt.el index 60a47f4..3d5e80f 100644 --- a/lisp/gnus-salt.el +++ b/lisp/gnus-salt.el @@ -26,7 +26,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) (require 'gnus-sum) @@ -189,7 +188,10 @@ If ARG, pick the article/thread on that line instead." (when arg (gnus-pick-goto-article arg)) (if gnus-thread-hide-subtree - (gnus-uu-mark-thread) + (progn + (save-excursion + (gnus-uu-mark-thread)) + (forward-line 1)) (gnus-summary-mark-as-processable 1))) (defun gnus-pick-unmark-article-or-thread (&optional arg) @@ -200,7 +202,8 @@ If ARG, unmark thread/article on that line instead." (when arg (gnus-pick-goto-article arg)) (if gnus-thread-hide-subtree - (gnus-uu-unmark-thread) + (save-excursion + (gnus-uu-unmark-thread)) (gnus-summary-unmark-as-processable 1))) (defun gnus-pick-mouse-pick (e) diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index 3a1384e..50583bf 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -27,7 +27,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) (require 'gnus-sum) (require 'gnus-range) @@ -437,21 +436,55 @@ of the last successful match.") (defconst gnus-header-index ;; Name to index alist. - '(("number" 1 gnus-score-integer) - ("subject" 8 gnus-score-string) - ("from" 9 gnus-score-string) - ("date" 10 gnus-score-date) - ("message-id" 11 gnus-score-string) - ("references" 12 gnus-score-string) - ("chars" 13 gnus-score-integer) - ("lines" 14 gnus-score-integer) - ("xref" 15 gnus-score-string) - ("extra" 16 gnus-score-string) + `(("number" + ,(luna-class-slot-index (luna-find-class 'mime-gnus-entity) + 'location) + gnus-score-integer) + ("subject" + ,(luna-class-slot-index (luna-find-class 'mime-gnus-entity) + 'subject) + gnus-score-string) + ("from" + ,(luna-class-slot-index (luna-find-class 'mime-gnus-entity) + 'from) + gnus-score-string) + ("date" + ,(luna-class-slot-index (luna-find-class 'mime-gnus-entity) + 'date) + gnus-score-date) + ("message-id" + ,(luna-class-slot-index (luna-find-class 'mime-gnus-entity) + 'id) + gnus-score-string) + ("references" + ,(luna-class-slot-index (luna-find-class 'mime-gnus-entity) + 'references) + gnus-score-string) + ("chars" + ,(luna-class-slot-index (luna-find-class 'mime-gnus-entity) + 'chars) + gnus-score-integer) + ("lines" + ,(luna-class-slot-index (luna-find-class 'mime-gnus-entity) + 'lines) + gnus-score-integer) + ("xref" + ,(luna-class-slot-index (luna-find-class 'mime-gnus-entity) + 'xref) + gnus-score-string) +;; ("extra" 16 gnus-score-string) + ("extra" -1 gnus-score-body) ("head" -1 gnus-score-body) ("body" -1 gnus-score-body) ("all" -1 gnus-score-body) - ("followup" 9 gnus-score-followup) - ("thread" 12 gnus-score-thread))) + ("followup" + ,(luna-class-slot-index (luna-find-class 'mime-gnus-entity) + 'from) + gnus-score-followup) + ("thread" + ,(luna-class-slot-index (luna-find-class 'mime-gnus-entity) + 'references) + gnus-score-thread))) ;;; Summary mode score maps. @@ -502,7 +535,7 @@ used as score." (?s "subject" nil nil string) (?b "body" "" nil body-string) (?h "head" "" nil body-string) - (?i "message-id" nil t string) + (?i "message-id" nil nil string) (?r "references" "message-id" nil string) (?x "xref" nil nil string) (?e "extra" nil nil string) @@ -1342,7 +1375,7 @@ EXTRA is the possible non-standard header." (while cache (current-buffer) (setq entry (pop cache) - file (car entry) + file (nnheader-translate-file-chars (car entry) t) score (cdr entry)) (if (or (not (equal (gnus-score-get 'touched score) '(t))) (gnus-score-get 'read-only score) @@ -1477,7 +1510,7 @@ EXTRA is the possible non-standard header." (let (score) (while (setq score (pop scores)) (while score - (when (listp (caar score)) + (when (consp (caar score)) (gnus-score-advanced (car score) trace)) (pop score)))) @@ -2853,7 +2886,9 @@ If ADAPT, return the home adaptive file instead." (when (string-match (gnus-globalify-regexp (car elem)) group) (replace-match (cadr elem) t nil group )))))) (when found - (nnheader-concat gnus-kill-files-directory found)))) + (if (file-name-absolute-p found) + found + (nnheader-concat gnus-kill-files-directory found))))) (defun gnus-hierarchial-home-score-file (group) "Return the score file of the top-level hierarchy of GROUP." diff --git a/lisp/gnus-spec.el b/lisp/gnus-spec.el index ca97b05..23781b6 100644 --- a/lisp/gnus-spec.el +++ b/lisp/gnus-spec.el @@ -27,7 +27,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) ;;; Internal variables. @@ -304,10 +303,10 @@ by `gnus-xmas-redefine'." ;; SPEC-ALIST and returns a list that can be eval'ed to return the ;; string. If the FORMAT string contains the specifiers %( and %) ;; the text between them will have the mouse-face text property. - ;; If the FORMAT string contains the specifiers %< and %>, the text between + ;; If the FORMAT string contains the specifiers %[ and %], the text between ;; them will have the balloon-help text property. (if (string-match - "\\`\\(.*\\)%[0-9]?[{(<]\\(.*\\)%[0-9]?[})>]\\(.*\n?\\)\\'" + "\\`\\(.*\\)%[0-9]?[{(«]\\(.*\\)%[0-9]?[»})]\\(.*\n?\\)\\'" format) (gnus-parse-complex-format format spec-alist) ;; This is a simple format. @@ -322,13 +321,13 @@ by `gnus-xmas-redefine'." (replace-match "\\\"" nil t)) (goto-char (point-min)) (insert "(\"") - (while (re-search-forward "%\\([0-9]+\\)?\\([{}()<>]\\)" nil t) + (while (re-search-forward "%\\([0-9]+\\)?\\([«»{}()]\\)" nil t) (let ((number (if (match-beginning 1) (match-string 1) "0")) (delim (aref (match-string 2) 0))) (if (or (= delim ?\() (= delim ?\{) - (= delim ?\<)) + (= delim ?\«)) (replace-match (concat "\"(" (cond ((= delim ?\() "mouse") ((= delim ?\{) "face") diff --git a/lisp/gnus-srvr.el b/lisp/gnus-srvr.el index 7d15a9f..66c67ed 100644 --- a/lisp/gnus-srvr.el +++ b/lisp/gnus-srvr.el @@ -26,7 +26,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) (require 'gnus-spec) (require 'gnus-group) @@ -592,19 +591,38 @@ The following commands are available: (goto-char (point-min)) (unless (string= gnus-ignored-newsgroups "") (delete-matching-lines gnus-ignored-newsgroups)) - (while (and (not (eobp)) (forward-line)) + (while (not (eobp)) (ignore-errors - (push (cons (read cur) - (max 0 (- (1+ (read cur)) (read cur)))) - groups))))) + (push (cons + (if (eq (char-after) ?\") + (read cur) + (let ((p (point)) (name "")) + (skip-chars-forward "^ \t\\\\") + (setq name (buffer-substring p (point))) + (while (eq (char-after) ?\\) + (setq p (1+ (point))) + (forward-char 2) + (skip-chars-forward "^ \t\\\\") + (setq name (concat name (buffer-substring + p (point))))) + name)) + (max 0 (- (1+ (read cur)) (read cur)))) + groups)) + (forward-line)))) (setq groups (sort groups (lambda (l1 l2) (string< (car l1) (car l2))))) - (let ((buffer-read-only nil)) + (let ((buffer-read-only nil) + (gnus-select-method nil) + name) (while groups - (setq group (car groups)) - (insert - (format "K%7d: %s\n" (cdr group) (car group))) + (setq group (car groups) + name (format "%s" (car group))) + (insert (if (cadr (gnus-gethash + (gnus-group-prefixed-name name method) + gnus-newsrc-hashtb)) + " " "K") + (format "%7d: " (cdr group)) name "\n") (setq groups (cdr groups)))) (switch-to-buffer (current-buffer)) (goto-char (point-min)) @@ -723,7 +741,8 @@ buffer. nil nil (if (gnus-server-equal gnus-browse-current-method "native") nil - gnus-browse-current-method)) + (gnus-method-simplify + gnus-browse-current-method))) gnus-level-default-subscribed gnus-level-killed (and (car (nth 1 gnus-newsrc-alist)) (gnus-gethash (car (nth 1 gnus-newsrc-alist)) diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index 5dbe591..bf285a5 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -25,6 +25,8 @@ ;;; Code: +(eval-when-compile (require 'cl)) +(eval-when-compile (require 'static)) (require 'gnus) (require 'gnus-win) (require 'gnus-int) @@ -32,7 +34,6 @@ (require 'gnus-range) (require 'gnus-util) (require 'message) -(eval-when-compile (require 'cl)) (defcustom gnus-startup-file (nnheader-concat gnus-home-directory ".newsrc") "Your `.newsrc' file. @@ -47,10 +48,11 @@ If a file with the `.el' or `.elc' suffixes exists, it will be read instead." :type 'file) (defcustom gnus-site-init-file - (ignore-errors - (concat (file-name-directory - (directory-file-name installation-directory)) - "site-lisp/gnus-init")) + (condition-case nil + (concat (file-name-directory + (directory-file-name installation-directory)) + "site-lisp/gnus-init") + (error nil)) "*The site-wide Gnus Emacs-Lisp startup file name, or nil if none. If a file with the `.el' or `.elc' suffixes exists, it will be read instead." :group 'gnus-start @@ -141,27 +143,19 @@ properly with all servers." (const some) (const t))) -(defcustom gnus-level-subscribed 5 - "*Groups with levels less than or equal to this variable are subscribed." - :group 'gnus-group-levels - :type 'integer) +(defconst gnus-level-subscribed 5 + "Groups with levels less than or equal to this variable are subscribed.") -(defcustom gnus-level-unsubscribed 7 - "*Groups with levels less than or equal to this variable are unsubscribed. +(defconst gnus-level-unsubscribed 7 + "Groups with levels less than or equal to this variable are unsubscribed. Groups with levels less than `gnus-level-subscribed', which should be -less than this variable, are subscribed." - :group 'gnus-group-levels - :type 'integer) +less than this variable, are subscribed.") -(defcustom gnus-level-zombie 8 - "*Groups with this level are zombie groups." - :group 'gnus-group-levels - :type 'integer) +(defconst gnus-level-zombie 8 + "Groups with this level are zombie groups.") -(defcustom gnus-level-killed 9 - "*Groups with this level are killed." - :group 'gnus-group-levels - :type 'integer) +(defconst gnus-level-killed 9 + "Groups with this level are killed.") (defcustom gnus-level-default-subscribed 3 "*New subscribed groups will be subscribed at this level." @@ -235,7 +229,7 @@ not match this regexp will be removed before saving the list." (mapconcat 'identity '("^to\\." ; not "real" groups "^[0-9. \t]+ " ; all digits in name - "[][\"#'()]" ; bogus characters + "^[\"][]\"[#'()]" ; bogus characters ) "\\|") "*A regexp to match uninteresting newsgroups in the active file. @@ -253,7 +247,9 @@ inserts new groups at the beginning of the list of groups; alphabetic order; `gnus-subscribe-hierarchically' inserts new groups in hierarchical newsgroup order; `gnus-subscribe-interactively' asks for your decision; `gnus-subscribe-killed' kills all new groups; -`gnus-subscribe-zombies' will make all new groups into zombies." +`gnus-subscribe-zombies' will make all new groups into zombies; +`gnus-subscribe-topics' will enter groups into the topics that +claim them." :group 'gnus-group-new :type '(radio (function-item gnus-subscribe-randomly) (function-item gnus-subscribe-alphabetically) @@ -261,6 +257,7 @@ for your decision; `gnus-subscribe-killed' kills all new groups; (function-item gnus-subscribe-interactively) (function-item gnus-subscribe-killed) (function-item gnus-subscribe-zombies) + (function-item gnus-subscribe-topics) function)) (defcustom gnus-subscribe-options-newsgroup-method @@ -369,7 +366,7 @@ This hook is called as the first thing when Gnus is started." (defcustom gnus-after-getting-new-news-hook (when (gnus-boundp 'display-time-timer) '(display-time-event-handler)) - "*A hook run after Gnus checks for new news when Gnus is already running." + "A hook run after Gnus checks for new news when Gnus is already running." :group 'gnus-group-new :type 'hook) @@ -395,7 +392,9 @@ Can be used to turn version control on or off." :group 'gnus-newsrc :type 'boolean) -(defvar gnus-startup-file-coding-system 'ctext +(defvar gnus-startup-file-coding-system (static-if (boundp 'MULE) + '*ctext* + 'ctext) "*Coding system for startup file.") ;;; Internal variables @@ -1161,12 +1160,15 @@ for new groups, and subscribe the new groups as zombies." (when gnus-novice-user (gnus-message 7 "`A k' to list killed groups")))))) -(defun gnus-subscribe-group (group previous &optional method) + +(defun gnus-subscribe-group (group &optional previous method) + "Subcribe GROUP and put it after PREVIOUS." (gnus-group-change-level (if method (list t group gnus-level-default-subscribed nil nil method) group) - gnus-level-default-subscribed gnus-level-killed previous t)) + gnus-level-default-subscribed gnus-level-killed previous t) + t) ;; `gnus-group-change-level' is the fundamental function for changing ;; subscription levels of newsgroups. This might mean just changing @@ -1386,7 +1388,7 @@ newsgroup." t) (condition-case () (inline (gnus-request-group group dont-check method)) - (error nil) + ;(error nil) (quit nil)) (setq active (gnus-parse-active)) ;; If there are no articles in the group, the GROUP @@ -1500,7 +1502,7 @@ newsgroup." gnus-activate-foreign-newsgroups) (t 0)) level)) - info group active method) + info group active method retrievegroups) (gnus-message 5 "Checking new news...") (while newsrc @@ -1537,8 +1539,15 @@ newsgroup." (setq active 'ignore)) ;; Activate groups. ((not gnus-read-active-file) + (if (gnus-check-backend-function 'retrieve-groups group) + ;; if server support gnus-retrieve-groups we push + ;; the group onto retrievegroups for later checking + (if (assoc method retrievegroups) + (setcdr (assoc method retrievegroups) + (cons group (cdr (assoc method retrievegroups)))) + (push (list method group) retrievegroups)) (setq active (gnus-activate-group group 'scan)) - (inline (gnus-close-group group))))) + (inline (gnus-close-group group)))))) ;; Get the number of unread articles in the group. (cond @@ -1551,7 +1560,32 @@ newsgroup." ;; The group couldn't be reached, so we nix out the number of ;; unread articles and stuff. (gnus-set-active group nil) - (setcar (gnus-gethash group gnus-newsrc-hashtb) t)))) + (let ((tmp (gnus-gethash group gnus-newsrc-hashtb))) + (if tmp (setcar tmp t)))))) + + ;; iterate through groups on methods which support gnus-retrieve-groups + ;; and fetch a partial active file and use it to find new news. + (while retrievegroups + (let* ((mg (pop retrievegroups)) + (method (or (car mg) gnus-select-method)) + (groups (cdr mg))) + (gnus-check-server method) + ;; Request that the backend scan its incoming messages. + (when (gnus-check-backend-function 'request-scan (car method)) + (gnus-request-scan nil method)) + (gnus-read-active-file-2 (mapcar (lambda (group) + (gnus-group-real-name group)) + groups) method) + (dolist (group groups) + (cond + ((setq active (gnus-active (gnus-info-group + (setq info (gnus-get-info group))))) + (inline (gnus-get-unread-articles-in-group info active t))) + (t + ;; The group couldn't be reached, so we nix out the number of + ;; unread articles and stuff. + (gnus-set-active group nil) + (setcar (gnus-gethash group gnus-newsrc-hashtb) t)))))) (gnus-message 5 "Checking new news...done"))) @@ -1672,65 +1706,78 @@ newsgroup." ;; Also read from the archive server. (when (gnus-archive-server-wanted-p) (list "archive"))))) - method where mesg list-type) + method) (setq gnus-have-read-active-file nil) (save-excursion (set-buffer nntp-server-buffer) (while (setq method (pop methods)) + ;; Only do each method once, in case the methods appear more + ;; than once in this list. (unless (member method methods) - (setq where (nth 1 method) - mesg (format "Reading active file%s via %s..." - (if (and where (not (zerop (length where)))) - (concat " from " where) "") - (car method))) + (condition-case () + (gnus-read-active-file-1 method force) + ;; We catch C-g so that we can continue past servers + ;; that do not respond. + (quit nil))))))) + +(defun gnus-read-active-file-1 (method force) + (let (where mesg) + (setq where (nth 1 method) + mesg (format "Reading active file%s via %s..." + (if (and where (not (zerop (length where)))) + (concat " from " where) "") + (car method))) + (gnus-message 5 mesg) + (when (gnus-check-server method) + ;; Request that the backend scan its incoming messages. + (when (gnus-check-backend-function 'request-scan (car method)) + (gnus-request-scan nil method)) + (cond + ((and (eq gnus-read-active-file 'some) + (gnus-check-backend-function 'retrieve-groups (car method)) + (not force)) + (let ((newsrc (cdr gnus-newsrc-alist)) + (gmethod (gnus-server-get-method nil method)) + groups info) + (while (setq info (pop newsrc)) + (when (inline + (gnus-server-equal + (inline + (gnus-find-method-for-group + (gnus-info-group info) info)) + gmethod)) + (push (gnus-group-real-name (gnus-info-group info)) + groups))) + (gnus-read-active-file-2 groups method))) + ((null method) + t) + (t + (if (not (gnus-request-list method)) + (unless (equal method gnus-message-archive-method) + (gnus-error 1 "Cannot read active file from %s server" + (car method))) (gnus-message 5 mesg) - (when (gnus-check-server method) - ;; Request that the backend scan its incoming messages. - (when (gnus-check-backend-function 'request-scan (car method)) - (gnus-request-scan nil method)) - (cond - ((and (eq gnus-read-active-file 'some) - (gnus-check-backend-function 'retrieve-groups (car method)) - (not force)) - (let ((newsrc (cdr gnus-newsrc-alist)) - (gmethod (gnus-server-get-method nil method)) - groups info) - (while (setq info (pop newsrc)) - (when (inline - (gnus-server-equal - (inline - (gnus-find-method-for-group - (gnus-info-group info) info)) - gmethod)) - (push (gnus-group-real-name (gnus-info-group info)) - groups))) - (when groups - (gnus-check-server method) - (setq list-type (gnus-retrieve-groups groups method)) - (cond - ((not list-type) - (gnus-error - 1.2 "Cannot read partial active file from %s server." - (car method))) - ((eq list-type 'active) - (gnus-active-to-gnus-format - method gnus-active-hashtb nil t)) - (t - (gnus-groups-to-gnus-format - method gnus-active-hashtb t)))))) - ((null method) - t) - (t - (if (not (gnus-request-list method)) - (unless (equal method gnus-message-archive-method) - (gnus-error 1 "Cannot read active file from %s server" - (car method))) - (gnus-message 5 mesg) - (gnus-active-to-gnus-format method gnus-active-hashtb nil t) - ;; We mark this active file as read. - (push method gnus-have-read-active-file) - (gnus-message 5 "%sdone" mesg)))))))))) - + (gnus-active-to-gnus-format method gnus-active-hashtb nil t) + ;; We mark this active file as read. + (push method gnus-have-read-active-file) + (gnus-message 5 "%sdone" mesg))))))) + +(defun gnus-read-active-file-2 (groups method) + "Read an active file for GROUPS in METHOD using gnus-retrieve-groups." + (when groups + (save-excursion + (set-buffer nntp-server-buffer) + (gnus-check-server method) + (let ((list-type (gnus-retrieve-groups groups method))) + (cond ((not list-type) + (gnus-error + 1.2 "Cannot read partial active file from %s server." + (car method))) + ((eq list-type 'active) + (gnus-active-to-gnus-format method gnus-active-hashtb nil t)) + (t + (gnus-groups-to-gnus-format method gnus-active-hashtb t))))))) + ;; Read an active file and place the results in `gnus-active-hashtb'. (defun gnus-active-to-gnus-format (&optional method hashtb ignore-errors real-active) @@ -1754,11 +1801,13 @@ newsgroup." (t (delete-matching-lines (concat "^to\\.\\|" gnus-ignored-newsgroups)))) - ;; Make the group names readable as a lisp expression even if they - ;; contain special characters. - (goto-char (point-max)) - (while (re-search-backward "[][';?()#]" nil t) - (insert ?\\)) + (goto-char (point-min)) + (unless (re-search-forward "[\\\"]" nil t) + ;; Make the group names readable as a lisp expression even if they + ;; contain special characters. + (goto-char (point-max)) + (while (re-search-backward "[][';?()#]" nil t) + (insert ?\\))) ;; Let the Gnus agent save the active file. (when (and gnus-agent real-active gnus-plugged) @@ -1772,18 +1821,25 @@ newsgroup." (let ((prefix (gnus-group-prefixed-name "" method))) (goto-char (point-min)) (while (and (not (eobp)) - (progn (insert prefix) - (zerop (forward-line 1))))))) + (progn + (when (= (following-char) ?\") + (forward-char 1)) + (insert prefix) + (zerop (forward-line 1))))))) ;; Store the active file in a hash table. (goto-char (point-min)) (let (group max min) (while (not (eobp)) - (condition-case () + (condition-case err (progn (narrow-to-region (point) (gnus-point-at-eol)) ;; group gets set to a symbol interned in the hash table ;; (what a hack!!) - jwz (setq group (let ((obarray hashtb)) (read cur))) + ;; ### The extended group name scheme makes + ;; the previous optimization strategy sort of pointless... + (when (stringp group) + (setq group (intern group hashtb))) (if (and (numberp (setq max (read cur))) (numberp (setq min (read cur))) (progn @@ -1828,7 +1884,7 @@ newsgroup." (gnus-group-prefixed-name "" method)))) ;; Let the Gnus agent save the active file. - (if (and gnus-agent real-active gnus-plugged) + (if (and gnus-agent real-active gnus-plugged (gnus-agent-method-p method)) (progn (gnus-agent-save-groups method) (gnus-active-to-gnus-format method hashtb nil real-active)) @@ -2557,8 +2613,9 @@ If FORCE is non-nil, the .newsrc file is read." (let ((str (buffer-substring (point) (progn (end-of-line) (point)))) (coding - (and (boundp 'enable-multibyte-characters) - enable-multibyte-characters + (and (or gnus-xemacs + (and (boundp 'enable-multibyte-characters) + enable-multibyte-characters)) (fboundp 'gnus-mule-get-coding-system) (gnus-mule-get-coding-system (symbol-name group))))) (when coding diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index d4f8d5c..7587108 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -28,7 +28,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) (require 'gnus-group) (require 'gnus-spec) @@ -40,10 +39,7 @@ (eval-when-compile (require 'mime-play) - ;; Avoid byte-compile warnings. - (defvar gnus-article-decoded-p) - (defvar gnus-decode-encoded-word-function) - ) + (require 'static)) (eval-and-compile (autoload 'gnus-cache-articles-in-group "gnus-cache")) @@ -285,6 +281,14 @@ in some newsgroups, set the variable to nil in (function-item gnus-summary-first-unread-article) (function-item gnus-summary-best-unread-article))) +(defcustom gnus-dont-select-after-jump-to-other-group nil + "If non-nil, don't select the first unread article after entering the +other group by the command `gnus-summary-jump-to-other-group'. If nil, +it is depend on the value of `gnus-auto-select-first' whether to select +or not." + :group 'gnus-group-select + :type 'boolean) + (defcustom gnus-auto-select-next t "*If non-nil, offer to go to the next group from the end of the previous. If the value is t and the next newsgroup is empty, Gnus will exit @@ -563,6 +567,15 @@ with some simple extensions: :group 'gnus-summary-format :type 'string) +(defcustom gnus-list-identifiers nil + "Regexp that matches list identifiers to be removed from subject. +This can also be a list of regexps." + :group 'gnus-summary-format + :group 'gnus-article-hiding + :type '(choice (const :tag "none" nil) + (regexp :value ".*") + (repeat :value (".*") regexp))) + (defcustom gnus-summary-mark-below 0 "*Mark all articles with a score below this variable as read. This variable is local to each summary buffer and usually set by the @@ -766,6 +779,9 @@ 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) + (= mark gnus-unread-mark)) + . gnus-summary-incorporated-face) ((= mark gnus-unread-mark) . gnus-summary-normal-unread-face) ((and (> score default) (memq mark (list gnus-downloadable-mark @@ -804,6 +820,10 @@ mark: The articles mark." The function is called with one parameter, the article header vector, which it may alter in any way.") +(defvar gnus-decode-encoded-word-function + (mime-find-field-decoder 'From 'nov) + "Variable that says which function should be used to decode a string with encoded words.") + (defcustom gnus-extra-headers nil "*Extra headers to parse." :group 'gnus-summary @@ -820,6 +840,7 @@ which it may alter in any way.") ("^cn\\>\\|\\" cn-gb-2312) ("^fj\\>\\|^japan\\>" iso-2022-jp-2) ("^relcom\\>" koi8-r) + ("^fido7\\>" koi8-r) ("^\\(cz\\|hun\\|pl\\|sk\\|hr\\)\\>" iso-8859-2) ("^israel\\>" iso-8859-1) ("^han\\>" euc-kr) @@ -830,7 +851,7 @@ which it may alter in any way.") (symbol :tag "Charset"))) :group 'gnus-charset) -(defcustom gnus-newsgroup-ignored-charsets '(unknown-8bit) +(defcustom gnus-newsgroup-ignored-charsets '(unknown-8bit x-unknown) "List of charsets that should be ignored. When these charsets are used in the \"charset\" parameter, the default charset will be used instead." @@ -857,6 +878,25 @@ This variable uses the same syntax as `gnus-emphasis-alist'." gnus-emphasis-highlight-words))))) :group 'gnus-summary-visual) +(defcustom gnus-use-wheel nil + "Use Intelli-mouse on summary movement" + :type 'boolean + :group 'gnus-summary-maneuvering) + +(defcustom gnus-wheel-scroll-amount '(5 . 1) + "Amount to scroll messages by spinning the mouse wheel. +This is actually a cons cell, where the first item is the amount to scroll +on a normal wheel event, and the second is the amount to scroll when the +wheel is moved with the shift key depressed." + :type '(cons (integer :tag "Shift") integer) + :group 'gnus-summary-maneuvering) + +(defcustom gnus-wheel-edge-resistance 2 + "How hard it should be to change the current article +by moving the mouse over the edge of the article window." + :type 'integer + :group 'gnus-summary-maneuvering) + ;;; Internal variables (defvar gnus-scores-exclude-files nil) @@ -869,6 +909,9 @@ This variable uses the same syntax as `gnus-emphasis-alist'." (defvar gnus-thread-indent-array nil) (defvar gnus-thread-indent-array-level gnus-thread-indent-level) +(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.") ;; Avoid highlighting in kill files. (defvar gnus-summary-inhibit-highlight nil) @@ -956,6 +999,11 @@ variable (string, integer, character, etc).") (defvar gnus-last-search-regexp nil "Default regexp for article search command.") +(defvar gnus-summary-search-article-matched-data nil + "Last matched data of article search command. It is the local variable +in `gnus-article-buffer' which consists of the list of start position, +end position and text.") + (defvar gnus-last-shell-command nil "Default shell command on article.") @@ -1025,6 +1073,9 @@ variable (string, integer, character, etc).") (defvar gnus-newsgroup-scored nil "List of scored articles in the current newsgroup.") +(defvar gnus-newsgroup-incorporated nil + "List of incorporated articles in the current newsgroup.") + (defvar gnus-newsgroup-headers nil "List of article headers in the current newsgroup.") @@ -1080,7 +1131,8 @@ variable (string, integer, character, etc).") gnus-cache-removable-articles gnus-newsgroup-cached gnus-newsgroup-data gnus-newsgroup-data-reverse gnus-newsgroup-limit gnus-newsgroup-limits - gnus-newsgroup-charset) + gnus-newsgroup-charset + gnus-newsgroup-incorporated) "Variables that are buffer-local to the summary buffers.") ;; Byte-compiler warning. @@ -1423,6 +1475,7 @@ increase the score of each group you read." "c" gnus-summary-catchup-and-exit "C" gnus-summary-catchup-all-and-exit "E" gnus-summary-exit-no-update + "J" gnus-summary-jump-to-other-group "Q" gnus-summary-exit "Z" gnus-summary-exit "n" gnus-summary-catchup-and-goto-next-group @@ -1470,7 +1523,8 @@ increase the score of each group you read." "v" gnus-summary-verbose-headers "m" gnus-summary-toggle-mime "H" gnus-article-strip-headers-in-body - "d" gnus-article-treat-dumbquotes) + "d" gnus-article-treat-dumbquotes + "s" gnus-smiley-display) (gnus-define-keys (gnus-summary-wash-hide-map "W" gnus-summary-wash-map) "a" gnus-article-hide @@ -1479,6 +1533,7 @@ increase the score of each group you read." "s" gnus-article-hide-signature "c" gnus-article-hide-citation "C" gnus-article-hide-citation-in-followups + "l" gnus-article-hide-list-identifiers "p" gnus-article-hide-pgp "B" gnus-article-strip-banner "P" gnus-article-hide-pem @@ -1595,6 +1650,7 @@ increase the score of each group you read." ["Headers" gnus-article-toggle-headers t] ["Signature" gnus-article-hide-signature t] ["Citation" gnus-article-hide-citation t] + ["List identifiers" gnus-article-hide-list-identifiers t] ["PGP" gnus-article-hide-pgp t] ["Banner" gnus-article-strip-banner t] ["Boring headers" gnus-article-hide-boring-headers t]) @@ -1634,7 +1690,8 @@ increase the score of each group you read." ["Stop page breaking" gnus-summary-stop-page-breaking t] ["Toggle MIME" gnus-summary-toggle-mime t] ["Verbose header" gnus-summary-verbose-headers t] - ["Toggle header" gnus-summary-toggle-header t]) + ["Toggle header" gnus-summary-toggle-header t] + ["Toggle smileys" gnus-smiley-display t]) ("Output" ["Save in default format" gnus-summary-save-article t] ["Save in file" gnus-summary-save-article-file t] @@ -1992,6 +2049,9 @@ The following commands are available: (gnus-summary-set-display-table) (gnus-set-default-directory) (setq gnus-newsgroup-name group) + (unless (gnus-news-group-p group) + (setq gnus-newsgroup-incorporated + (nnmail-new-mail-numbers (gnus-group-real-name group)))) (make-local-variable 'gnus-summary-line-format) (make-local-variable 'gnus-summary-line-format-spec) (make-local-variable 'gnus-summary-dummy-line-format) @@ -2052,7 +2112,7 @@ The following commands are available: `(nth 3 ,data)) (defmacro gnus-data-set-header (data header) - `(setf (nth 3 ,data) ,header)) + `(setcar (nthcdr 3 ,data) ,header)) (defmacro gnus-data-level (data) `(nth 4 ,data)) @@ -2477,7 +2537,7 @@ marks of articles." (let ((gnus-summary-line-format-spec spec) (gnus-newsgroup-downloadable '((0 . t)))) (gnus-summary-insert-line - (make-full-mail-header 0 "" "" "" "" "" 0 0 "" nil) + (make-full-mail-header 0 "" "nobody" "" "" "" 0 0 "" nil) 0 nil 128 t nil "" nil 1) (goto-char (point-min)) (setq pos (list (cons 'unread (and (search-forward "\200" nil t) @@ -2505,10 +2565,8 @@ marks of articles." (defun gnus-summary-from-or-to-or-newsgroups (header) (let ((to (cdr (assq 'To (mail-header-extra header)))) (newsgroups (cdr (assq 'Newsgroups (mail-header-extra header)))) - (mail-parse-charset gnus-newsgroup-charset) - (mail-parse-ignored-charsets - (save-excursion (set-buffer gnus-summary-buffer) - gnus-newsgroup-ignored-charsets))) + (default-mime-charset (with-current-buffer gnus-summary-buffer + default-mime-charset))) (cond ((and to gnus-ignored-from-addresses @@ -2689,6 +2747,26 @@ If NO-DISPLAY, don't generate a summary buffer." (setq group nil))) result)) +(defun gnus-summary-jump-to-other-group (group &optional show-all) + "Directly jump to the other GROUP from summary buffer. +If SHOW-ALL is non-nil, already read articles are also listed." + (interactive + (if (eq gnus-summary-buffer (current-buffer)) + (list (completing-read + "Group: " gnus-active-hashtb nil t + (when (and gnus-newsgroup-name + (string-match "[.:][^.:]+$" gnus-newsgroup-name)) + (substring gnus-newsgroup-name 0 (1+ (match-beginning 0)))) + 'gnus-group-history) + current-prefix-arg) + (error "%s must be invoked from a gnus summary buffer." this-command))) + (unless (or (zerop (length group)) + (and gnus-newsgroup-name + (string-equal gnus-newsgroup-name group))) + (gnus-summary-exit) + (gnus-summary-read-group group show-all + gnus-dont-select-after-jump-to-other-group))) + (defun gnus-summary-read-group-1 (group show-all no-article kill-buffer no-display &optional select-articles) @@ -2771,6 +2849,7 @@ If NO-DISPLAY, don't generate a summary buffer." (let ((gnus-newsgroup-dormant nil)) (gnus-summary-initial-limit show-all)) (gnus-summary-initial-limit show-all)) + ;; When untreaded, all articles are always shown. (setq gnus-newsgroup-limit (mapcar (lambda (header) (mail-header-number header)) @@ -2974,7 +3053,7 @@ If NO-DISPLAY, don't generate a summary buffer." (while threads (when (stringp (caar threads)) (setcdr (car threads) - (sort (cdar threads) 'gnus-thread-sort-by-number))) + (sort (cdar threads) gnus-sort-gathered-threads-function))) (setq threads (cdr threads))) result)) @@ -3109,6 +3188,7 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise." (defun gnus-build-sparse-threads () (let ((headers gnus-newsgroup-headers) + (mail-parse-charset gnus-newsgroup-charset) (gnus-summary-ignore-duplicates t) header references generation relations subject child end new-child date) @@ -3161,7 +3241,8 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise." ;; fetch the headers for the articles that aren't there. This will ;; build complete threads - if the roots haven't been expired by the ;; server, that is. - (let (id heads) + (let ((mail-parse-charset gnus-newsgroup-charset) + id heads) (mapatoms (lambda (refs) (when (not (car (symbol-value refs))) @@ -3243,6 +3324,7 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise." (defun gnus-build-all-threads () "Read all the headers." (let ((gnus-summary-ignore-duplicates t) + (mail-parse-charset gnus-newsgroup-charset) (dependencies gnus-newsgroup-dependencies) header article) (save-excursion @@ -3252,8 +3334,7 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise." (while (not (eobp)) (ignore-errors (setq article (read (current-buffer)) - header (gnus-nov-parse-line - article dependencies))) + header (gnus-nov-parse-line article dependencies))) (when header (save-excursion (set-buffer gnus-summary-buffer) @@ -3971,6 +4052,20 @@ or a straight list of headers." (cdr (assq number gnus-newsgroup-scored)) (memq number gnus-newsgroup-processable)))))) +(defun gnus-summary-remove-list-identifiers () + "Remove list identifiers in `gnus-list-identifiers' from articles in the current group." + (let ((regexp (if (stringp gnus-list-identifiers) + gnus-list-identifiers + (mapconcat 'identity gnus-list-identifiers " *\\|")))) + (dolist (header gnus-newsgroup-headers) + (when (string-match (concat "\\(Re: +\\)?\\(" regexp " *\\)") + (mail-header-subject header)) + (mail-header-set-subject + header (concat (substring (mail-header-subject header) + 0 (match-beginning 2)) + (substring (mail-header-subject header) + (match-end 2)))))))) + (defun gnus-select-newsgroup (group &optional read-all select-articles) "Select newsgroup GROUP. If READ-ALL is non-nil, all articles in the group are selected. @@ -4087,6 +4182,9 @@ If SELECT-ARTICLES, only select those articles from GROUP." ;; Let the Gnus agent mark articles as read. (when gnus-agent (gnus-agent-get-undownloaded-list)) + ;; Remove list identifiers from subject + (when gnus-list-identifiers + (gnus-summary-remove-list-identifiers)) ;; Check whether auto-expire is to be done in this group. (setq gnus-newsgroup-auto-expire (gnus-group-auto-expirable-p group)) @@ -4113,7 +4211,9 @@ If SELECT-ARTICLES, only select those articles from GROUP." (zerop (length gnus-newsgroup-unreads))) (eq (gnus-group-find-parameter group 'display) 'all)) - (gnus-uncompress-range (gnus-active group)) + (or + (gnus-uncompress-range (gnus-active group)) + (gnus-cache-articles-in-group group)) (sort (append gnus-newsgroup-dormant gnus-newsgroup-marked (copy-sequence gnus-newsgroup-unreads)) '<))) @@ -4132,15 +4232,16 @@ If SELECT-ARTICLES, only select those articles from GROUP." ((and (or (<= scored marked) (= scored number)) (natnump gnus-large-newsgroup) (> number gnus-large-newsgroup)) - (let* ((minibuffer-setup-hook (append - minibuffer-setup-hook - '(beginning-of-line))) - (input (read-string - (format - "How many articles from %s (max %d): " - (gnus-limit-string gnus-newsgroup-name 35) - number) - (number-to-string gnus-large-newsgroup)))) + (let ((input (read-from-minibuffer + (format + "How many articles from %s (max %d): " + (gnus-limit-string gnus-newsgroup-name 35) + number) + (static-if (< emacs-major-version 20) + (number-to-string gnus-large-newsgroup) + (cons + (number-to-string gnus-large-newsgroup) + 0))))) (if (string-match "^[ \t]*$" input) number input))) @@ -4758,7 +4859,8 @@ This is meant to be called in `gnus-article-internal-prepare-hook'." (save-restriction (nnheader-narrow-to-headers) (goto-char (point-min)) - (when (or (and (eq (downcase (char-after)) ?x) + (when (or (and (not (eobp)) + (eq (downcase (char-after)) ?x) (looking-at "Xref:")) (search-forward "\nXref:" nil t)) (goto-char (1+ (match-end 0))) @@ -5040,7 +5142,8 @@ displayed, no centering will be performed." ;; whichever is the least. (set-window-start window (min bottom (save-excursion - (forward-line (- top)) (point))))) + (forward-line (- top)) (point))) + t)) ;; Do horizontal recentering while we're at it. (when (and (get-buffer-window (current-buffer) t) (not (eq gnus-auto-center-summary 'vertical))) @@ -5159,22 +5262,24 @@ With arg, turn line truncation on iff arg is positive." (redraw-display)) (defun gnus-summary-reselect-current-group (&optional all rescan) - "Exit and then reselect the current newsgroup. + "Rescan the current newsgroup, exit and then reselect it. The prefix argument ALL means to select all articles." (interactive "P") (when (gnus-ephemeral-group-p gnus-newsgroup-name) (error "Ephemeral groups can't be reselected")) (let ((current-subject (gnus-summary-article-number)) (group gnus-newsgroup-name)) + (save-excursion + (set-buffer gnus-group-buffer) + ;; We have to adjust the point of group mode buffer because + ;; point was moved to the next unread newsgroup by exiting. + (gnus-summary-jump-to-group group) + (when rescan + (save-excursion + (gnus-group-get-new-news-this-group 1)))) (setq gnus-newsgroup-begin nil) (gnus-summary-exit) - ;; We have to adjust the point of group mode buffer because - ;; point was moved to the next unread newsgroup by exiting. - (gnus-summary-jump-to-group group) - (when rescan - (save-excursion - (gnus-group-get-new-news-this-group 1))) - (gnus-group-read-group all t) + (gnus-group-read-group all t group) (gnus-summary-goto-subject current-subject nil t))) (defun gnus-summary-rescan-group (&optional all) @@ -5328,7 +5433,7 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil." (gnus-async-halt-prefetch) (mapcar 'funcall (delq 'gnus-summary-expire-articles - (copy-list gnus-summary-prepare-exit-hook))) + (copy-sequence gnus-summary-prepare-exit-hook))) ;; If we have several article buffers, we kill them at exit. (unless gnus-single-article-buffer (gnus-kill-buffer gnus-article-buffer) @@ -5680,6 +5785,9 @@ Given a prefix, will force an `article' buffer configuration." (if gnus-summary-display-article-function (funcall gnus-summary-display-article-function article all-header) (gnus-article-prepare article all-header)) + (with-current-buffer gnus-article-buffer + (set (make-local-variable 'gnus-summary-search-article-matched-data) + nil)) (gnus-run-hooks 'gnus-select-article-hook) (when (and gnus-current-article (not (zerop gnus-current-article))) @@ -5727,7 +5835,9 @@ be displayed." (gnus-summary-display-article article all-headers) (setq did article) (when (or all-headers gnus-show-all-headers) - (gnus-article-show-all-headers))) + (if (eq 'gnus-summary-toggle-mime this-command) + (gnus-article-show-all) + (gnus-article-show-all-headers)))) (when (or all-headers gnus-show-all-headers) (gnus-article-show-all-headers)) 'old)) @@ -6145,7 +6255,21 @@ If given a prefix, remove all limits." "Limit the summary buffer to articles that are older than (or equal) AGE days. If YOUNGER-P (the prefix) is non-nil, limit the summary buffer to articles that are younger than AGE days." - (interactive "nLimit to articles older than (in days): \nP") + (interactive + (let ((younger current-prefix-arg) + (days-got nil) + 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): "))) + (when (> (length days) 0) + (setq days (read days))) + (if (numberp days) + (setq days-got t) + (message "Please enter a number.") + (sleep-for 1))) + (list days younger))) (prog1 (let ((data gnus-newsgroup-data) (cutoff (days-to-time age)) @@ -6154,7 +6278,9 @@ articles that are younger than AGE days." (when (and (vectorp (gnus-data-header d)) (setq date (mail-header-date (gnus-data-header d)))) (setq is-younger (time-less-p - (time-since (date-to-time date)) + (time-since (condition-case () + (date-to-time date) + (error '(0 0)))) cutoff)) (when (if younger-p is-younger @@ -6384,6 +6510,7 @@ If ALL, mark even excluded ticked and dormants as read." "Go forwards in the thread until we find an article that we want to display." (when (or (eq gnus-fetch-old-headers 'some) (eq gnus-fetch-old-headers 'invisible) + (numberp gnus-fetch-old-headers) (eq gnus-build-sparse-threads 'some) (eq gnus-build-sparse-threads 'more)) ;; Deal with old-fetched headers and sparse threads. @@ -6413,6 +6540,7 @@ If ALL, mark even excluded ticked and dormants as read." "Cut off all uninteresting articles from the beginning of threads." (when (or (eq gnus-fetch-old-headers 'some) (eq gnus-fetch-old-headers 'invisible) + (numberp gnus-fetch-old-headers) (eq gnus-build-sparse-threads 'some) (eq gnus-build-sparse-threads 'more)) (let ((th threads)) @@ -6430,6 +6558,7 @@ fetch-old-headers verbiage, and so on." (if (or gnus-inhibit-limiting (and (null gnus-newsgroup-dormant) (not (eq gnus-fetch-old-headers 'some)) + (not (numberp gnus-fetch-old-headers)) (not (eq gnus-fetch-old-headers 'invisible)) (null gnus-summary-expunge-below) (not (eq gnus-build-sparse-threads 'some)) @@ -6483,7 +6612,8 @@ fetch-old-headers verbiage, and so on." (zerop children)) ;; If this is "fetch-old-headered" and there is no ;; visible children, then we don't want this article. - (and (eq gnus-fetch-old-headers 'some) + (and (or (eq gnus-fetch-old-headers 'some) + (numberp gnus-fetch-old-headers)) (gnus-summary-article-ancient-p number) (zerop children)) ;; If this is "fetch-old-headered" and `invisible', then @@ -6634,11 +6764,9 @@ of what's specified by the `gnus-refer-thread-limit' variable." (gnus-message 5 "Fetching headers for %s...done" gnus-newsgroup-name)) (gnus-summary-limit-include-thread id))) -(defun gnus-summary-refer-article (message-id &optional arg) - "Fetch an article specified by MESSAGE-ID. -If ARG (the prefix), fetch the article using `gnus-refer-article-method' -or `gnus-select-method', no matter what backend the article comes from." - (interactive "sMessage-ID: \nP") +(defun gnus-summary-refer-article (message-id) + "Fetch an article specified by MESSAGE-ID." + (interactive "sMessage-ID: ") (when (and (stringp message-id) (not (zerop (length message-id)))) ;; Construct the correct Message-ID if necessary. @@ -6652,7 +6780,8 @@ or `gnus-select-method', no matter what backend the article comes from." (gnus-summary-article-sparse-p (mail-header-number header)) (memq (mail-header-number header) - gnus-newsgroup-limit)))) + gnus-newsgroup-limit))) + number) (cond ;; If the article is present in the buffer we just go to it. ((and header @@ -6665,22 +6794,23 @@ or `gnus-select-method', no matter what backend the article comes from." (when sparse (gnus-summary-update-article (mail-header-number header))))) (t - ;; We fetch the article - (let ((gnus-override-method - (cond ((gnus-news-group-p gnus-newsgroup-name) - gnus-refer-article-method) - (arg - (or gnus-refer-article-method gnus-select-method)) - (t nil))) - number) - ;; Start the special refer-article method, if necessary. - (when (and gnus-refer-article-method - (gnus-news-group-p gnus-newsgroup-name)) - (gnus-check-server gnus-refer-article-method)) - ;; Fetch the header, and display the article. - (if (setq number (gnus-summary-insert-subject message-id)) + ;; We fetch the article. + (catch 'found + (dolist (gnus-override-method + (cond ((null gnus-refer-article-method) + (list 'current gnus-select-method)) + ((consp (car gnus-refer-article-method)) + gnus-refer-article-method) + (t + (list gnus-refer-article-method)))) + (when (eq 'current gnus-override-method) + (setq gnus-override-method gnus-current-select-method)) + (gnus-check-server gnus-override-method) + ;; Fetch the header, and display the article. + (when (setq number (gnus-summary-insert-subject message-id)) (gnus-summary-select-article nil nil nil number) - (gnus-message 3 "Couldn't fetch article %s" message-id)))))))) + (throw 'found t))) + (gnus-message 3 "Couldn't fetch article %s" message-id))))))) (defun gnus-summary-edit-parameters () "Edit the group parameters of the current group." @@ -6732,7 +6862,7 @@ to guess what the document format is." (gnus-group-read-ephemeral-group name `(nndoc ,name (nndoc-address ,(get-buffer dig)) (nndoc-article-type - ,(if force 'digest 'guess))) t)) + ,(if force 'mbox 'guess))) t)) ;; Make all postings to this group go to the parent group. (nconc (gnus-info-params (gnus-get-info name)) params) @@ -6797,12 +6927,16 @@ Obeys the standard process/prefix convention." "Do incremental search forward on the current article. If REGEXP-P (the prefix) is non-nil, do regexp isearch." (interactive "P") - (gnus-summary-select-article) - (gnus-configure-windows 'article) - (gnus-eval-in-buffer-window gnus-article-buffer - (save-restriction - (widen) - (isearch-forward regexp-p)))) + (let* ((gnus-inhibit-treatment t) + (old (gnus-summary-select-article))) + (gnus-configure-windows 'article) + (gnus-eval-in-buffer-window gnus-article-buffer + (save-restriction + (widen) + (when (eq 'old old) + (gnus-article-show-all-headers)) + (goto-char (point-min)) + (isearch-forward regexp-p))))) (defun gnus-summary-search-article-forward (regexp &optional backward) "Search for an article containing REGEXP forward. @@ -6832,6 +6966,84 @@ If BACKWARD, search backward instead." ""))))) (gnus-summary-search-article-forward regexp 'backward)) +(eval-when-compile + (defmacro gnus-summary-search-article-position-point (regexp backward) + "Dehighlight the last matched text and goto the beginning position." + (` (if (and gnus-summary-search-article-matched-data + (let ((text (caddr gnus-summary-search-article-matched-data)) + (inhibit-read-only t) + buffer-read-only) + (delete-region + (goto-char (car gnus-summary-search-article-matched-data)) + (cadr gnus-summary-search-article-matched-data)) + (insert text) + (string-match (, regexp) text))) + (if (, backward) (beginning-of-line) (end-of-line)) + (goto-char (if (, backward) (point-max) (point-min)))))) + + (defmacro gnus-summary-search-article-highlight-goto-x-face (opoint) + "Place point where X-Face image is displayed." + (if (featurep 'xemacs) + (` (let ((end (if (search-forward "\n\n" nil t) + (goto-char (1- (point))) + (point-min))) + extent) + (or (search-backward "\n\n" nil t) (goto-char (point-min))) + (unless (and (re-search-forward "^From:" end t) + (setq extent (extent-at (point))) + (extent-begin-glyph extent)) + (goto-char (, opoint))))) + (` (let ((end (if (search-forward "\n\n" nil t) + (goto-char (1- (point))) + (point-min)))) + (goto-char + (or (text-property-any (or (search-backward "\n\n" nil t) + (point-min)) + end 'x-face-mule-bitmap-image t) + (, opoint))))))) + + (defmacro gnus-summary-search-article-highlight-matched-text + (backward treated x-face) + "Highlight matched text in the function `gnus-summary-search-article'." + (` (let ((start (set-marker (make-marker) (match-beginning 0))) + (end (set-marker (make-marker) (match-end 0))) + (inhibit-read-only t) + buffer-read-only) + (unless treated + (let ((,@ + (let ((items (mapcar 'car gnus-treatment-function-alist))) + (mapcar + (lambda (item) (setq items (delq item items))) + '(gnus-treat-buttonize + gnus-treat-fill-article + gnus-treat-fill-long-lines + gnus-treat-emphasize + gnus-treat-highlight-headers + gnus-treat-highlight-citation + gnus-treat-highlight-signature + gnus-treat-overstrike + gnus-treat-display-xface + gnus-treat-buttonize-head + gnus-treat-decode-article-as-default-mime-charset)) + (static-if (featurep 'xemacs) + items + (cons '(x-face-mule-delete-x-face-field + (quote never)) + items)))) + (gnus-treat-display-xface + (when (, x-face) gnus-treat-display-xface))) + (gnus-article-prepare-mime-display))) + (goto-char (if (, backward) start end)) + (when (, x-face) + (gnus-summary-search-article-highlight-goto-x-face (point))) + (setq gnus-summary-search-article-matched-data + (list start end (buffer-substring start end))) + (unless (eq start end);; matched text has been deleted. :-< + (put-text-property start end 'face + (or (find-face 'isearch) + 'secondary-selection)))))) + ) + (defun gnus-summary-search-article (regexp &optional backward) "Search for an article containing REGEXP. Optional argument BACKWARD means do search for backward. @@ -6842,18 +7054,44 @@ Optional argument BACKWARD means do search for backward. (require 'gnus-art) (let ((gnus-select-article-hook nil) ;Disable hook. (gnus-article-display-hook nil) + (gnus-article-prepare-hook nil) (gnus-mark-article-hook nil) ;Inhibit marking as read. (gnus-use-article-prefetch nil) (gnus-xmas-force-redisplay nil) ;Inhibit XEmacs redisplay. (gnus-use-trees nil) ;Inhibit updating tree buffer. (sum (current-buffer)) (found nil) - point) + point treated) (gnus-save-hidden-threads - (gnus-summary-select-article) + (static-if (featurep 'xemacs) + (let ((gnus-inhibit-treatment t)) + (setq treated (eq 'old (gnus-summary-select-article))) + (when (and treated + (not (and (gnus-buffer-live-p gnus-article-buffer) + (window-live-p (get-buffer-window + gnus-article-buffer t))))) + (gnus-summary-select-article nil t) + (setq treated nil))) + (let ((gnus-inhibit-treatment t) + (x-face-mule-delete-x-face-field 'never)) + (setq treated (eq 'old (gnus-summary-select-article))) + (when (and treated + (not + (and (gnus-buffer-live-p gnus-article-buffer) + (window-live-p (get-buffer-window + gnus-article-buffer t)) + (or (not (string-match "^\\^X-Face:" regexp)) + (with-current-buffer gnus-article-buffer + gnus-summary-search-article-matched-data))))) + (gnus-summary-select-article nil t) + (setq treated nil)))) (set-buffer gnus-article-buffer) - (when backward - (forward-line -1)) + (widen) + (if treated + (progn + (gnus-article-show-all-headers) + (gnus-summary-search-article-position-point regexp backward)) + (goto-char (if backward (point-max) (point-min)))) (while (not found) (gnus-message 7 "Searching article: %d..." (cdr gnus-article-current)) (if (if backward @@ -6861,12 +7099,16 @@ Optional argument BACKWARD means do search for backward. (re-search-forward regexp nil t)) ;; We found the regexp. (progn + (gnus-summary-search-article-highlight-matched-text + backward treated (string-match "^\\^X-Face:" regexp)) (setq found 'found) - (beginning-of-line) + (forward-line + (/ (- 2 (window-height + (get-buffer-window gnus-article-buffer t))) + 2)) (set-window-start (get-buffer-window (current-buffer)) (point)) - (forward-line 1) (set-buffer sum) (setq point (point))) ;; We didn't find it, so we go to the next article. @@ -6881,7 +7123,9 @@ Optional argument BACKWARD means do search for backward. (unless (gnus-summary-article-sparse-p (gnus-summary-article-number)) (setq found nil) - (gnus-summary-select-article) + (let ((gnus-inhibit-treatment t)) + (gnus-summary-select-article)) + (setq treated nil) (set-buffer gnus-article-buffer) (widen) (goto-char (if backward (point-max) (point-min)))))))) @@ -7064,9 +7308,12 @@ If ARG is a negative number, hide the unwanted header lines." (let* ((buffer-read-only nil) (inhibit-point-motion-hooks t) hidden e) - (save-restriction - (article-narrow-to-head) - (setq hidden (gnus-article-hidden-text-p 'headers))) + (setq hidden + (if (numberp arg) + (>= arg 0) + (save-restriction + (article-narrow-to-head) + (gnus-article-hidden-text-p 'headers)))) (goto-char (point-min)) (when (search-forward "\n\n" nil t) (delete-region (point-min) (1- (point)))) @@ -7079,8 +7326,7 @@ If ARG is a negative number, hide the unwanted header lines." (save-restriction (narrow-to-region (point-min) (point)) (article-decode-encoded-words) - (if (or hidden - (and (numberp arg) (< arg 0))) + (if hidden (let ((gnus-treat-hide-headers nil) (gnus-treat-hide-boring-headers nil)) (gnus-treat-article 'head)) @@ -7248,8 +7494,9 @@ and `request-accept' functions." art-group)))))) (cond ((not art-group) - (gnus-message 1 "Couldn't %s article %s" - (cadr (assq action names)) article)) + (gnus-message 1 "Couldn't %s article %s: %s" + (cadr (assq action names)) article + (nnheader-get-report (car to-method)))) ((and (eq art-group 'junk) (eq action 'move)) (gnus-summary-mark-article article gnus-canceled-mark) @@ -8337,7 +8584,6 @@ If prefix argument ALL is non-nil, all articles are marked as read." (interactive "P") (gnus-summary-catchup-and-exit t quietly)) -;; Suggested by "Arne Eofsson" . (defun gnus-summary-catchup-and-goto-next-group (&optional all) "Mark all articles in this group as read and select the next group. If given a prefix, mark all articles, unread as well as ticked, as @@ -8345,7 +8591,7 @@ read." (interactive "P") (save-excursion (gnus-summary-catchup all)) - (gnus-summary-next-article t nil nil t)) + (gnus-summary-next-group)) ;; Thread-based commands. @@ -8896,9 +9142,10 @@ save those articles instead." to-newsgroup)) (or (and (gnus-request-create-group to-newsgroup (gnus-group-name-to-method to-newsgroup)) - (gnus-activate-group to-newsgroup nil nil - (gnus-group-name-to-method - to-newsgroup))) + (gnus-activate-group + to-newsgroup nil nil + (gnus-group-name-to-method to-newsgroup)) + (gnus-subscribe-group to-newsgroup)) (error "Couldn't create group %s" to-newsgroup))) (error "No such group: %s" to-newsgroup))) to-newsgroup)) @@ -9481,6 +9728,64 @@ treated as multipart/mixed." (gnus-summary-show-article))) ;;; +;;; Intelli-mouse commmands +;;; + +(defun gnus-wheel-summary-scroll (event) + (interactive "e") + (let ((amount (if (memq 'shift (event-modifiers event)) + (car gnus-wheel-scroll-amount) + (cdr gnus-wheel-scroll-amount))) + (direction (- (* (static-if (featurep 'xemacs) + (event-button event) + (cond ((eq 'mouse-4 (event-basic-type event)) + 4) + ((eq 'mouse-5 (event-basic-type event)) + 5))) + 2) 9)) + edge) + (gnus-summary-scroll-up (* amount direction)) + (when (gnus-eval-in-buffer-window gnus-article-buffer + (save-restriction + (widen) + (and (if (< 0 direction) + (gnus-article-next-page 0) + (gnus-article-prev-page 0) + (bobp)) + (if (setq edge (get-text-property + (point-min) 'gnus-wheel-edge)) + (setq edge (* edge direction)) + (setq edge -1)) + (or (plusp edge) + (let ((buffer-read-only nil) + (inhibit-read-only t)) + (put-text-property (point-min) (point-max) + 'gnus-wheel-edge direction) + nil)) + (or (> edge gnus-wheel-edge-resistance) + (let ((buffer-read-only nil) + (inhibit-read-only t)) + (put-text-property (point-min) (point-max) + 'gnus-wheel-edge + (* (1+ edge) direction)) + nil)) + (eq last-command 'gnus-wheel-summary-scroll)) + )) + (gnus-summary-next-article nil nil (minusp direction))) + )) + +(defun gnus-wheel-install () + "Enable mouse wheel support on summary window." + (when gnus-use-wheel + (let ((keys + '([(mouse-4)] [(shift mouse-4)] [(mouse-5)] [(shift mouse-5)]))) + (dolist (key keys) + (define-key gnus-summary-mode-map key + 'gnus-wheel-summary-scroll))))) + +(add-hook 'gnus-summary-mode-hook 'gnus-wheel-install) + +;;; ;;; with article ;;; @@ -9557,7 +9862,7 @@ If N, the prefix, then repeat N times. If N is negative, move in reverse order. The difference between N and the actual number of articles marked is returned." - name (cadr lway)) + name (car (cdr lway))) (interactive "p") (gnus-summary-generic-mark n ,mark ',(nth 2 lway) ,(nth 3 lway)))) diff --git a/lisp/gnus-topic.el b/lisp/gnus-topic.el index 97da766..d86f573 100644 --- a/lisp/gnus-topic.el +++ b/lisp/gnus-topic.el @@ -27,7 +27,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) (require 'gnus-group) (require 'gnus-start) @@ -212,11 +211,12 @@ If TOPIC, start with that topic." (if (member group gnus-zombie-list) gnus-level-zombie gnus-level-killed)))) (and - unread ; nil means that the group is dead. + info ; nil means that the group is dead. (<= clevel level) (>= clevel lowest) ; Is inside the level we want. (or all - (if (eq unread t) + (if (or (eq unread t) + (eq unread nil)) gnus-group-list-inactive-groups (> unread 0)) (and gnus-list-groups-with-ticked-articles @@ -617,15 +617,18 @@ articles in the topic and its subtopics." (let* ((top (gnus-topic-find-topology (gnus-topic-parent-topic topic))) (tp (reverse (cddr top)))) - (while (not (equal (caaar tp) topic)) - (setq tp (cdr tp))) - (pop tp) - (while (and tp - (not (gnus-topic-goto-topic (caaar tp)))) - (pop tp)) - (if tp - (gnus-topic-forward-topic 1) - (gnus-topic-goto-missing-topic (caadr top)))) + (if (not top) + (gnus-topic-insert-topic-line + topic t t (car (gnus-topic-find-topology topic)) nil 0) + (while (not (equal (caaar tp) topic)) + (setq tp (cdr tp))) + (pop tp) + (while (and tp + (not (gnus-topic-goto-topic (caaar tp)))) + (pop tp)) + (if tp + (gnus-topic-forward-topic 1) + (gnus-topic-goto-missing-topic (caadr top))))) nil)) (defun gnus-topic-update-topic-line (topic-name &optional reads) @@ -981,6 +984,7 @@ articles in the topic and its subtopics." ["Create" gnus-topic-create-topic t] ["Mark" gnus-topic-mark-topic t] ["Indent" gnus-topic-indent t] + ["Sort" gnus-topic-sort-topics t] ["Toggle hide empty" gnus-topic-toggle-display-empty-topics t] ["Edit parameters" gnus-topic-edit-parameters t]) ["List active" gnus-topic-list-active t])))) @@ -1119,23 +1123,25 @@ If COPYP, copy the groups instead." (completing-read "Move to topic: " gnus-topic-alist nil t))) (let ((groups (gnus-group-process-prefix n)) (topicl (assoc topic gnus-topic-alist)) - (start-group (progn (forward-line 1) (gnus-group-group-name))) (start-topic (gnus-group-topic-name)) + (start-group (progn (forward-line 1) (gnus-group-group-name))) entry) - (mapcar - (lambda (g) - (gnus-group-remove-mark g) - (when (and - (setq entry (assoc (gnus-current-topic) gnus-topic-alist)) - (not copyp)) - (setcdr entry (gnus-delete-first g (cdr entry)))) - (nconc topicl (list g))) - groups) - (gnus-topic-enter-dribble) - (if start-group - (gnus-group-goto-group start-group) - (gnus-topic-goto-topic start-topic)) - (gnus-group-list-groups))) + (if (and (not groups) (not copyp) start-topic) + (gnus-topic-move start-topic topic) + (mapcar + (lambda (g) + (gnus-group-remove-mark g) + (when (and + (setq entry (assoc (gnus-current-topic) gnus-topic-alist)) + (not copyp)) + (setcdr entry (gnus-delete-first g (cdr entry)))) + (nconc topicl (list g))) + groups) + (gnus-topic-enter-dribble) + (if start-group + (gnus-group-goto-group start-group) + (gnus-topic-goto-topic start-topic)) + (gnus-group-list-groups)))) (defun gnus-topic-remove-group (&optional arg) "Remove the current group from the topic." @@ -1475,6 +1481,68 @@ If REVERSE, sort in reverse order." (interactive "P") (gnus-topic-sort-groups 'gnus-group-sort-by-method reverse)) +(defun gnus-topic-sort-topics-1 (top reverse) + (if (cdr top) + (let ((subtop + (mapcar `(lambda (top) + (gnus-topic-sort-topics-1 top ,reverse)) + (sort (cdr top) + '(lambda (t1 t2) + (string-lessp (caar t1) (caar t2))))))) + (setcdr top (if reverse (reverse subtop) subtop)))) + top) + +(defun gnus-topic-sort-topics (&optional topic reverse) + "Sort topics in TOPIC alphabeticaly by topic name. +If REVERSE, reverse the sorting order." + (interactive + (list (completing-read "Sort topics in : " gnus-topic-alist nil t + (gnus-current-topic)) + current-prefix-arg)) + (let ((topic-topology (or (and topic (cdr (gnus-topic-find-topology topic))) + gnus-topic-topology))) + (gnus-topic-sort-topics-1 topic-topology reverse) + (gnus-topic-enter-dribble) + (gnus-group-list-groups) + (gnus-topic-goto-topic topic))) + +(defun gnus-topic-move (current to) + "Move the CURRENT topic to TO." + (interactive + (list + (gnus-group-topic-name) + (completing-read "Move to topic: " gnus-topic-alist nil t))) + (unless (and current to) + (error "Can't find topic")) + (let ((current-top (cdr (gnus-topic-find-topology current))) + (to-top (cdr (gnus-topic-find-topology to)))) + (unless current-top + (error "Can't find topic `%s'" current)) + (unless to-top + (error "Can't find topic `%s'" to)) + (if (gnus-topic-find-topology to current-top 0) ;; Don't care the level + (error "Can't move `%s' to its sub-level" current)) + (gnus-topic-find-topology current nil nil 'delete) + (while (cdr to-top) + (setq to-top (cdr to-top))) + (setcdr to-top (list current-top)) + (gnus-topic-enter-dribble) + (gnus-group-list-groups) + (gnus-topic-goto-topic current))) + +(defun gnus-subscribe-topics (newsgroup) + (catch 'end + (let (match gnus-group-change-level-function) + (dolist (topic (gnus-topic-list)) + (when (and (setq match (cdr (assq 'subscribe + (gnus-topic-parameters topic)))) + (string-match match newsgroup)) + ;; Just subscribe the group. + (gnus-subscribe-alphabetically newsgroup) + ;; Add the group to the topic. + (nconc (assoc topic gnus-topic-alist) (list newsgroup)) + (throw 'end t)))))) + (provide 'gnus-topic) ;;; gnus-topic.el ends here diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index bb42ef6..54f73e0 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -31,8 +31,9 @@ ;;; Code: -(require 'custom) (eval-when-compile (require 'cl)) +(eval-when-compile (require 'static)) +(require 'custom) (require 'nnheader) (require 'message) (require 'time-date) @@ -51,10 +52,12 @@ "Pop to BUFFER, evaluate FORMS, and then return to the original window." (let ((tempvar (make-symbol "GnusStartBufferWindow")) (w (make-symbol "w")) - (buf (make-symbol "buf"))) + (buf (make-symbol "buf")) + (frame (make-symbol "frame"))) `(let* ((,tempvar (selected-window)) (,buf ,buffer) - (,w (get-buffer-window ,buf 'visible))) + (,w (get-buffer-window ,buf 'visible)) + ,frame) (unwind-protect (progn (if ,w @@ -63,7 +66,9 @@ (set-buffer (window-buffer ,w))) (pop-to-buffer ,buf)) ,@forms) - (select-window ,tempvar))))) + (setq ,frame (selected-frame)) + (select-window ,tempvar) + (select-frame ,frame))))) (put 'gnus-eval-in-buffer-window 'lisp-indent-function 1) (put 'gnus-eval-in-buffer-window 'edebug-form-spec '(form body)) @@ -109,15 +114,34 @@ (when (gnus-buffer-exists-p buf) (kill-buffer buf)))) -(fset 'gnus-point-at-bol - (if (fboundp 'point-at-bol) - 'point-at-bol - 'line-beginning-position)) - -(fset 'gnus-point-at-eol - (if (fboundp 'point-at-eol) - 'point-at-eol - 'line-end-position)) +(static-cond + ((fboundp 'point-at-bol) + (fset 'gnus-point-at-bol 'point-at-bol)) + ((fboundp 'line-beginning-position) + (fset 'gnus-point-at-bol 'line-beginning-position)) + (t + (defun gnus-point-at-bol () + "Return point at the beginning of the line." + (let ((p (point))) + (beginning-of-line) + (prog1 + (point) + (goto-char p)))) + )) +(static-cond + ((fboundp 'point-at-eol) + (fset 'gnus-point-at-eol 'point-at-eol)) + ((fboundp 'line-end-position) + (fset 'gnus-point-at-eol 'line-end-position)) + (t + (defun gnus-point-at-eol () + "Return point at the end of the line." + (let ((p (point))) + (end-of-line) + (prog1 + (point) + (goto-char p)))) + )) (defun gnus-delete-first (elt list) "Delete by side effect the first occurrence of ELT as a member of LIST." @@ -298,7 +322,9 @@ (defun gnus-dd-mmm (messy-date) "Return a string like DD-MMM from a big messy string." - (format-time-string "%d-%b" (safe-date-to-time messy-date))) + (condition-case () + (format-time-string "%d-%b" (safe-date-to-time messy-date)) + (error " - "))) (defmacro gnus-date-get-time (date) "Convert DATE string to Emacs time. @@ -709,7 +735,7 @@ with potentially long computations." ;; Decide whether to append to a file or to an Emacs buffer. (let ((outbuf (get-file-buffer filename))) (if (not outbuf) - (append-to-file (point-min) (point-max) filename) + (write-region-as-binary (point-min) (point-max) filename 'append) ;; File has been visited, in buffer OUTBUF. (set-buffer outbuf) (let ((buffer-read-only nil) @@ -961,19 +987,37 @@ ARG is passed to the first function." (throw 'found nil))) t)) -(defun gnus-write-active-file-as-coding-system (coding-system file hashtb) - (let ((coding-system-for-write coding-system)) +(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)) (with-temp-file file (mapatoms (lambda (sym) (when (and sym (boundp sym) (symbol-value sym)) - (insert (format "%s %d %d y\n" - (gnus-group-real-name (symbol-name sym)) - (cdr (symbol-value sym)) + (insert (format "%S %d %d y\n" + (if full-names + sym + (intern (gnus-group-real-name (symbol-name sym)))) + (or (cdr (symbol-value sym)) + (car (symbol-value sym))) (car (symbol-value sym)))))) - hashtb)))) + hashtb) + (goto-char (point-max)) + (while (search-backward "\\." nil t) + (delete-char 1))))) + +(defun gnus-union (a b) + "Add members of list A to list B +if they are not equal to items already in B." + (if (null a) + b + (if (member (car a) b) + (gnus-union (cdr a) b) + (gnus-union (cdr a) (cons (car a) b))))) (provide 'gnus-util) diff --git a/lisp/gnus-uu.el b/lisp/gnus-uu.el index 38d7edb..b3f6a37 100644 --- a/lisp/gnus-uu.el +++ b/lisp/gnus-uu.el @@ -526,6 +526,7 @@ didn't work, and overwrite existing files. Otherwise, ask each time." (gnus-get-buffer-create " *gnus-uu-forward*"))) (erase-buffer) (insert-file file) + (delete-file file) (let ((fs gnus-uu-digest-from-subject)) (when fs (setq from (caar fs) @@ -623,8 +624,9 @@ didn't work, and overwrite existing files. Otherwise, ask each time." (interactive) (gnus-save-hidden-threads (let ((level (gnus-summary-thread-level))) - (while (and (gnus-summary-set-process-mark (gnus-summary-article-number)) - (zerop (gnus-summary-next-subject 1)) + (while (and (gnus-summary-set-process-mark + (gnus-summary-article-number)) + (zerop (gnus-summary-next-subject 1 nil t)) (> (gnus-summary-thread-level) level))))) (gnus-summary-position-point)) @@ -954,7 +956,8 @@ didn't work, and overwrite existing files. Otherwise, ask each time." (beginning-of-line) (forward-line 1) (when (file-exists-p gnus-uu-binhex-article-name) - (append-to-file start-char (point) gnus-uu-binhex-article-name)))) + (write-region-as-binary start-char (point) + gnus-uu-binhex-article-name 'append)))) (if (memq 'begin state) (cons gnus-uu-binhex-article-name state) state))) diff --git a/lisp/gnus-vm.el b/lisp/gnus-vm.el index 40123c4..74fae9f 100644 --- a/lisp/gnus-vm.el +++ b/lisp/gnus-vm.el @@ -31,10 +31,10 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'gnus-art) (eval-when-compile - (require 'cl) (autoload 'vm-mode "vm") (autoload 'vm-read-file-name "vm") (autoload 'vm-save-message "vm")) diff --git a/lisp/gnus-win.el b/lisp/gnus-win.el index 254b401..bbaa4f9 100644 --- a/lisp/gnus-win.el +++ b/lisp/gnus-win.el @@ -26,7 +26,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'gnus) (defgroup gnus-windows nil diff --git a/lisp/gnus-xmas.el b/lisp/gnus-xmas.el index 1446289..4b74674 100644 --- a/lisp/gnus-xmas.el +++ b/lisp/gnus-xmas.el @@ -178,7 +178,7 @@ displayed, no centering will be performed." (sit-for 0)) (when gnus-auto-center-summary (let* ((height (if (fboundp 'window-displayed-height) - (1- (window-displayed-height)) + (window-displayed-height) (- (window-height) 2))) (top (cond ((< height 4) 0) ((< height 7) 1) @@ -194,8 +194,10 @@ displayed, no centering will be performed." ;; Set the window start to either `bottom', which is the biggest ;; possible valid number, or the second line from the top, ;; whichever is the least. + ;; NOFORCE parameter suggested by Daniel Pittman . (set-window-start - window (min bottom (save-excursion (forward-line (- top)) (point))))) + window (min bottom (save-excursion (forward-line (- top)) (point))) + t)) ;; Do horizontal recentering while we're at it. (when (and (get-buffer-window (current-buffer) t) (not (eq gnus-auto-center-summary 'vertical))) @@ -623,7 +625,11 @@ the resulting string may be narrower than END-COLUMN. ("background" . ,(face-background 'default)))]) ((featurep 'xbm) `[xbm :file ,logo-xbm]) - (t [nothing]))))) + (t [nothing])))) + (wpheight (window-pixel-height)) + (rest (max 0 (1- (/ (* (- wpheight (glyph-height glyph)) + (window-height)) + wpheight 2))))) (insert " ") (set-extent-begin-glyph (make-extent (point) (point)) glyph) (goto-char (point-min)) @@ -631,15 +637,23 @@ the resulting string may be narrower than END-COLUMN. (insert (make-string (/ (max (- (window-width) (or x 35)) 0) 2) ?\ )) (forward-line 1)) - (setq gnus-simple-splash nil)) - (goto-char (point-min)) - (let* ((pheight (+ 20 (count-lines (point-min) (point-max)))) - (wheight (window-height)) - (rest (- wheight pheight))) - (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n)))) + (setq gnus-simple-splash nil) + (goto-char (point-min)) + (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") + (goto-char (point-min)) + (put-text-property (point) (gnus-point-at-eol) 'face 'gnus-splash-face) + (insert-char ?\ ; space + (max 0 (/ (- (window-width) (gnus-point-at-eol)) 2))) + (forward-line 1) + (insert-char ?\n rest) + (set-window-start (selected-window) (point-min)))) (t - (insert - (format " %s + (insert " _ ___ _ _ _ ___ __ ___ __ _ ___ __ _ ___ __ ___ @@ -659,9 +673,20 @@ the resulting string may be narrower than END-COLUMN. __ " - "")) + ) + (goto-char (point-min)) + (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) + (goto-char (point-min)) + (insert-char ?\ ; space + (max 0 (/ (- (window-width) (gnus-point-at-eol)) 2))) + (forward-line 1) ;; And then hack it. - (gnus-indent-rigidly (point-min) (point-max) + (gnus-indent-rigidly (point) (point-max) (/ (max (- (window-width) (or x 46)) 0) 2)) (goto-char (point-min)) (forward-line 1) diff --git a/lisp/gnus.el b/lisp/gnus.el index fe9c8dd..5a648ba 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -4,7 +4,7 @@ ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen ;; Tatsuya Ichikawa -;; Yoshiki Hayashi +;; Yoshiki Hayashi ;; Keywords: news, mail ;; This file is part of GNU Emacs. @@ -31,6 +31,7 @@ (eval '(run-hooks 'gnus-load-hook)) (eval-when-compile (require 'cl)) +(eval-when-compile (require 'static)) (require 'custom) (eval-and-compile @@ -264,14 +265,14 @@ is restarted, and sometimes reloaded." (defconst gnus-product-name "T-gnus" "Product name of this version of gnus.") -(defconst gnus-version-number "6.10.072" +(defconst gnus-version-number "6.13.4" "Version number for this version of gnus.") -(defconst gnus-revision-number "03" +(defconst gnus-revision-number "01" "Revision number for this version of gnus.") -(defconst gnus-original-version-number "0.95" - "Version number for this version of Gnus.") +(defconst gnus-original-version-number "0.99" + "Version number for this version of Gnus.") (provide 'running-pterodactyl-gnus-0_73-or-later) @@ -279,8 +280,8 @@ is restarted, and sometimes reloaded." "Product name of the original version of Gnus.") (defconst gnus-version - (format "%s %s (based on %s v%s ; for SEMI 1.12/1.13, FLIM 1.12)" - gnus-product-name gnus-version-number + (format "%s %s r%s (based on %s v%s ; for SEMI 1.13, FLIM 1.13)" + gnus-product-name gnus-version-number gnus-revision-number gnus-original-product-name gnus-original-version-number) "Version string for this version of gnus.") @@ -655,6 +656,11 @@ be set in `.emacs' instead." ())) "Face used for normal interest unread articles.") +(defface gnus-summary-incorporated-face + '((t + ())) + "Face used for incorporated articles.") + (defface gnus-summary-high-read-face '((((class color) (background dark)) @@ -768,8 +774,7 @@ be set in `.emacs' instead." "Insert startup message in current buffer." ;; Insert the message. (erase-buffer) - (insert - (format " %s + (insert " _ ___ _ _ _ ___ __ ___ __ _ ___ __ _ ___ __ ___ @@ -789,9 +794,20 @@ be set in `.emacs' instead." __ " - "")) + ) + (goto-char (point-min)) + (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) + (goto-char (point-min)) + (insert-char ?\ ; space + (max 0 (/ (- (window-width) (gnus-point-at-eol)) 2))) + (forward-line 1) ;; And then hack it. - (gnus-indent-rigidly (point-min) (point-max) + (gnus-indent-rigidly (point) (point-max) (/ (max (- (window-width) (or x 46)) 0) 2)) (goto-char (point-min)) (forward-line 1) @@ -884,18 +900,20 @@ used to 899, you would say something along these lines: (kill-buffer (current-buffer)))))))) (defcustom gnus-select-method - (ignore-errors - (nconc - (list 'nntp (or (ignore-errors - (gnus-getenv-nntpserver)) - (when (and gnus-default-nntp-server - (not (string= gnus-default-nntp-server ""))) - gnus-default-nntp-server) - "news")) - (if (or (null gnus-nntp-service) - (equal gnus-nntp-service "nntp")) - nil - (list gnus-nntp-service)))) + (condition-case nil + (nconc + (list 'nntp (or (condition-case nil + (gnus-getenv-nntpserver) + (error nil)) + (when (and gnus-default-nntp-server + (not (string= gnus-default-nntp-server ""))) + gnus-default-nntp-server) + "news")) + (if (or (null gnus-nntp-service) + (equal gnus-nntp-service "nntp")) + nil + (list gnus-nntp-service))) + (error nil)) "*Default method for selecting a newsgroup. This variable should be a list, where the first element is how the news is to be fetched, the second is the address. @@ -1014,10 +1032,23 @@ articles by Message-ID is painfully slow. By setting this method to an nntp method, you might get acceptable results. The value of this variable must be a valid select method as discussed -in the documentation of `gnus-select-method'." +in the documentation of `gnus-select-method'. + +It can also be a list of select methods, as well as the special symbol +`current', which means to use the current select method. If it is a +list, Gnus will try all the methods in the list until it finds a match." :group 'gnus-server :type '(choice (const :tag "default" nil) - gnus-select-method)) + (const :tag "DejaNews" (nnweb "refer" (nnweb-type dejanews))) + gnus-select-method + (repeat :menu-tag "Try multiple" + :tag "Multiple" + :value (current (nnweb "refer" (nnweb-type dejanews))) + (choice :tag "Method" + (const current) + (const :tag "DejaNews" + (nnweb "refer" (nnweb-type dejanews))) + gnus-select-method)))) (defcustom gnus-group-faq-directory '("/ftp@mirrors.aol.com:/pub/rtfm/usenet/" @@ -1252,8 +1283,12 @@ slower." ("nnfolder" mail respool address) ("nngateway" post-mail address prompt-address physical-address) ("nnweb" none) + ("nnslashdot" post) + ("nnultimate" none) + ("nnwarchive" none) ("nnlistserv" none) - ("nnagent" post-mail)) + ("nnagent" post-mail) + ("nnimap" post-mail address prompt-address physical-address)) "*An alist of valid select methods. The first element of each list lists should be a string with the name of the select method. The other elements may be the category of @@ -1276,6 +1311,8 @@ this variable. I think." (define-widget 'gnus-select-method 'list "Widget for entering a select method." + :value '(nntp "") + :tag "Select Method" :args `((choice :tag "Method" ,@(mapcar (lambda (entry) (list 'const :format "%v\n" @@ -1527,14 +1564,8 @@ If nil, no default charset is assumed when posting." (defvar gnus-have-read-active-file nil) (defconst gnus-maintainer - "bugs@gnus.org (The Gnus Bugfixing Girls + Boys)" - "The mail address of the Gnus maintainers.") - -(defconst semi-gnus-developers - "Semi-gnus Developers: - semi-gnus-en@meadow.scphys.kyoto-u.ac.jp (In English),\ - semi-gnus-ja@meadow.scphys.kyoto-u.ac.jp (In Japanese);" - "The mail address of the Semi-gnus developers.") + "semi-gnus-ja@meadow.scphys.kyoto-u.ac.jp (T-gnus Bugfixing Girls + Boys)" + "The mail address of the T-gnus maintainers.") (defcustom gnus-info-filename nil "*Controls language of gnus Info. @@ -1645,6 +1676,7 @@ use the article treating faculties instead. Is is described in Info node ("browse-url" browse-url) ("message" :interactive t message-send-and-exit message-yank-original) + ("babel" babel-as-string) ("nnmail" nnmail-split-fancy nnmail-article-group) ("nnvirtual" nnvirtual-catchup-group nnvirtual-convert-headers) ("rmailout" rmail-output rmail-output-to-rmail-file) @@ -1702,9 +1734,11 @@ use the article treating faculties instead. Is is described in Info node (gnus-summary-score-map keymap) gnus-score-save gnus-score-headers gnus-current-score-file-nondirectory gnus-score-adaptive gnus-score-find-trace gnus-score-file-name) - ("gnus-cus" :interactive t gnus-group-customize gnus-score-customize) + ("gnus-cus" :interactive t gnus-custom-mode gnus-group-customize + gnus-score-customize) ("gnus-topic" :interactive t gnus-topic-mode) - ("gnus-topic" gnus-topic-remove-group gnus-topic-set-parameters) + ("gnus-topic" gnus-topic-remove-group gnus-topic-set-parameters + gnus-subscribe-topics) ("gnus-salt" :interactive t gnus-pick-mode gnus-binary-mode) ("gnus-uu" (gnus-uu-extract-map keymap) (gnus-uu-mark-map keymap)) ("gnus-uu" :interactive t @@ -1722,7 +1756,8 @@ use the article treating faculties instead. Is is described in Info node ("gnus-uu" gnus-uu-delete-work-dir gnus-quote-arg-for-sh-or-csh gnus-uu-unmark-thread) ("gnus-msg" (gnus-summary-send-map keymap) - gnus-article-mail gnus-copy-article-buffer gnus-extended-version) + gnus-article-mail gnus-copy-article-buffer gnus-extended-version + gnus-following-method) ("gnus-msg" :interactive t gnus-group-post-news gnus-group-mail gnus-summary-post-news gnus-summary-followup gnus-summary-followup-with-original @@ -1747,7 +1782,7 @@ use the article treating faculties instead. Is is described in Info node gnus-offer-save-summaries gnus-make-thread-indent-array gnus-summary-exit gnus-update-read-articles gnus-summary-last-subject gnus-summary-skip-intangible gnus-summary-article-number - gnus-data-header gnus-data-find) + gnus-data-header gnus-data-find gnus-summary-jump-to-other-group) ("gnus-group" gnus-group-insert-group-line gnus-group-quit gnus-group-list-groups gnus-group-first-unread-group gnus-group-set-mode-line gnus-group-set-info gnus-group-save-newsrc @@ -1771,7 +1806,7 @@ use the article treating faculties instead. Is is described in Info node gnus-article-hide-pem gnus-article-hide-signature gnus-article-strip-leading-blank-lines gnus-article-date-local gnus-article-date-original gnus-article-date-lapsed - gnus-article-show-all-headers + gnus-article-show-all-headers gnus-article-show-all gnus-article-edit-mode gnus-article-edit-article gnus-article-edit-done article-decode-encoded-words gnus-start-date-timer gnus-stop-date-timer @@ -1798,11 +1833,12 @@ use the article treating faculties instead. Is is described in Info node gnus-offline-toggle-auto-hangup gnus-offline-toggle-on/off-send-mail gnus-offline-toggle-articles-to-fetch - gnus-offline-toggle-movemail-program gnus-offline-set-interval-time gnus-offline-agent-expire) - ("pop3-fma" :interactive t - pop3-fma-set-pop3-password) + ("miee" :interactive t gnspool-get-news + mail-spool-send news-spool-post) + ("international/mw32misc" define-process-argument-editing + general-process-argument-editing-function) ("gnus-agent" gnus-open-agent gnus-agent-get-function gnus-agent-save-groups gnus-agent-save-active gnus-agent-method-p gnus-agent-get-undownloaded-list gnus-agent-fetch-session @@ -1816,6 +1852,11 @@ use the article treating faculties instead. Is is described in Info node ("gnus-mlspl" :interactive t gnus-group-split-setup gnus-group-split-update)))) +(eval-and-compile + (unless (featurep 'xemacs) + (autoload 'gnus-smiley-display "gnus-bitmap") + (autoload 'x-face-mule-gnus-article-display-x-face "x-face-mule"))) + ;;; gnus-sum.el thingies @@ -2630,31 +2671,33 @@ just the host name." (setq skip (match-end 0) depth (+ depth 1))) depth)))) - ;; separate foreign select method from group name and collapse. - ;; if method contains a server, collapse to non-domain server name, - ;; otherwise collapse to select method - (let* ((colon (string-match ":" group)) + ;; Separate foreign select method from group name and collapse. + ;; If method contains a server, collapse to non-domain server name, + ;; otherwise collapse to select method. + (let* ((colon (string-match ":" group)) (server (and colon (substring group 0 colon))) - (plus (and server (string-match "+" server)))) + (plus (and server (string-match "+" server)))) (when server - (cond (plus - (setq foreign (substring server (+ 1 plus) - (string-match "\\." server)) - group (substring group (+ 1 colon)))) - (t - (setq foreign server - group (substring group (+ 1 colon))))) - (setq foreign (concat foreign ":")))) - ;; collapse group name leaving LEVELS uncollapsed elements - (while group - (if (and (string-match "\\." group) (> levels 0)) - (setq name (concat name (substring group 0 1)) - group (substring group (match-end 0)) - levels (- levels 1) - name (concat name ".")) - (setq name (concat foreign name group) - group nil))) - name)) + (if plus + (setq foreign (substring server (+ 1 plus) + (string-match "\\." server)) + group (substring group (+ 1 colon))) + (setq foreign server + group (substring group (+ 1 colon)))) + (setq foreign (concat foreign ":"))) + ;; Collapse group name leaving LEVELS uncollapsed elements + (let* ((glist (split-string group "\\.")) + (glen (length glist)) + res) + (setq levels (- glen levels)) + (dolist (g glist) + (push (if (>= (decf levels) 0) + (if (zerop (length g)) + "" + (substring g 0 1)) + g) + res)) + (concat foreign (mapconcat 'identity (nreverse res) ".")))))) (defun gnus-narrow-to-body () "Narrow to the body of an article." @@ -2819,6 +2862,9 @@ Disallow invalid group names." Allow completion over sensible values." (let* ((servers (append gnus-valid-select-methods + (mapcar (lambda (i) (list (format "%s:%s" (caar i) + (cadar i)))) + gnus-opened-servers) gnus-predefined-server-alist gnus-server-alist)) (method @@ -2829,11 +2875,18 @@ Allow completion over sensible values." ((equal method "") (setq method gnus-select-method)) ((assoc method gnus-valid-select-methods) - (list (intern method) - (if (memq 'prompt-address - (assoc method gnus-valid-select-methods)) - (read-string "Address: ") - ""))) + (let ((address (if (memq 'prompt-address + (assoc method gnus-valid-select-methods)) + (read-string "Address: ") + ""))) + (or (let ((opened gnus-opened-servers)) + (while (and opened + (not (equal (format "%s:%s" method address) + (format "%s:%s" (caaar opened) + (cadaar opened))))) + (pop opened)) + (caar opened)) + (list (intern method) address)))) ((assoc method servers) method) (t @@ -2879,7 +2932,7 @@ the variable `toolbar-news-frame-plist' will be refered instead." (defun gnus-other-frame (&optional arg) "Pop up a frame to read news." (interactive "P") - (if (featurep 'xemacs) + (static-if (featurep 'xemacs) (let ((toolbar-news-use-separate-frame t)) (toolbar-gnus)) (if (frame-live-p gnus-frame) diff --git a/lisp/imap.el b/lisp/imap.el index 661dd0a..d91e160 100644 --- a/lisp/imap.el +++ b/lisp/imap.el @@ -132,17 +132,40 @@ ;;; Code: +(eval-when-compile (require 'cl)) +(eval-when-compile (require 'static)) + (eval-and-compile - (require 'cl) (autoload 'open-ssl-stream "ssl") - (autoload 'base64-decode-string "base64") + (autoload 'starttls-open-stream "starttls") + (autoload 'starttls-negotiate "starttls") (autoload 'rfc2104-hash "rfc2104") - (autoload 'md5 "md5") (autoload 'utf7-encode "utf7") (autoload 'utf7-decode "utf7") (autoload 'format-spec "format-spec") (autoload 'format-spec-make "format-spec")) +(static-if (and (fboundp 'base64-decode-string) + (subrp (symbol-function 'base64-decode-string))) + (eval-and-compile (fset 'imap-base64-decode-string 'base64-decode-string)) + (require 'mel) + (defun imap-base64-decode-string (string) + (fset 'imap-base64-decode-string + (symbol-function (mel-find-function 'mime-decode-string "base64"))) + (imap-base64-decode-string string)) + ) + +(static-if (and (fboundp 'base64-encode-string) + (subrp (symbol-function 'base64-encode-string))) + (eval-and-compile (fset 'imap-base64-encode-string 'base64-encode-string)) + (defun imap-base64-encode-string (string) + (fset 'imap-base64-encode-string + (symbol-function (mel-find-function 'mime-encode-string "base64"))) + (imap-base64-encode-string string)) + ) + +(autoload 'md5 "md5") + ;; User variables. (defvar imap-imtest-program "imtest -kp %s %p" @@ -190,7 +213,8 @@ server.") (defvar imap-stream-alist '((kerberos4 imap-kerberos4s-p imap-kerberos4-open) (ssl imap-ssl-p imap-ssl-open) - (network imap-network-p imap-network-open)) + (network imap-network-p imap-network-open) + (tls imap-tls-p imap-tls-open)) "Definition of network streams. (NAME CHECK OPEN) @@ -227,8 +251,6 @@ encoded mailboxes which doesn't translate into ISO-8859-1.") (defconst imap-default-port 143) (defconst imap-default-ssl-port 993) (defconst imap-default-stream 'network) -(defconst imap-coding-system-for-read 'binary) -(defconst imap-coding-system-for-write 'binary) (defconst imap-local-variables '(imap-server imap-port imap-client-eol @@ -313,7 +335,7 @@ string).") "Non-nil indicates that the server emitted a continuation request. The actually value is really the text on the continuation line.") -(defvar imap-log "*imap-log*" +(defvar imap-log nil "Imap session trace.") (defvar imap-debug nil;"*imap-debug*" @@ -322,11 +344,6 @@ actually value is really the text on the continuation line.") ;; Utility functions: -(defsubst imap-disable-multibyte () - "Enable multibyte in the current buffer." - (when (fboundp 'set-buffer-multibyte) - (set-buffer-multibyte nil))) - (defun imap-read-passwd (prompt &rest args) "Read a password using PROMPT. If ARGS, PROMPT is used as an argument to `format'." @@ -384,13 +401,13 @@ argument to `format'." (defun imap-kerberos4-open (name buffer server port) (message "Opening Kerberized IMAP connection...") (let* ((port (or port imap-default-port)) - (coding-system-for-read imap-coding-system-for-read) - (coding-system-for-write imap-coding-system-for-write) - (process (start-process - name buffer shell-file-name shell-command-switch - (format-spec - imap-imtest-program - (format-spec-make ?s server ?p (number-to-string port)))))) + (process (as-binary-process + (start-process + name buffer shell-file-name shell-command-switch + (format-spec + imap-imtest-program + (format-spec-make ?s server ?p (number-to-string port)) + ))))) (when process (with-current-buffer buffer (setq imap-client-eol "\n") @@ -403,7 +420,6 @@ argument to `format'." (sit-for 1)) (and imap-log (with-current-buffer (get-buffer-create imap-log) - (imap-disable-multibyte) (buffer-disable-undo) (goto-char (point-max)) (insert-buffer-substring buffer))) @@ -423,13 +439,13 @@ argument to `format'." (defun imap-ssl-open-2 (name buffer server port &optional extra-ssl-args) (let* ((port (or port imap-default-ssl-port)) - (coding-system-for-read imap-coding-system-for-read) - (coding-system-for-write imap-coding-system-for-write) (ssl-program-name imap-ssl-program) (ssl-program-arguments (append imap-ssl-arguments extra-ssl-args (list "-connect" (format "%s:%d" server port)))) - (process (ignore-errors (open-ssl-stream name buffer server port)))) + (process (ignore-errors + (as-binary-process + (open-ssl-stream name buffer server port))))) (when process (with-current-buffer buffer (goto-char (point-min)) @@ -441,7 +457,6 @@ argument to `format'." (sit-for 1)) (and imap-log (with-current-buffer (get-buffer-create imap-log) - (imap-disable-multibyte) (buffer-disable-undo) (goto-char (point-max)) (insert-buffer-substring buffer))) @@ -476,9 +491,28 @@ argument to `format'." (defun imap-network-open (name buffer server port) (let* ((port (or port imap-default-port)) - (coding-system-for-read imap-coding-system-for-read) - (coding-system-for-write imap-coding-system-for-write) - (process (open-network-stream name buffer server port))) + (process (open-network-stream-as-binary name buffer server port))) + (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)) + (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)) + process)))) + +(defun imap-tls-p (buffer) + (imap-capability 'STARTTLS buffer)) + +(defun imap-tls-open (name buffer server port) + (let* ((port (or port imap-default-port)) + (process (as-binary-process + (starttls-open-stream name buffer server port)))) (when process (while (and (memq (process-status process) '(open run)) (goto-char (point-min)) @@ -487,10 +521,17 @@ argument to `format'." (sit-for 1)) (and imap-log (with-current-buffer (get-buffer-create imap-log) - (imap-disable-multibyte) (buffer-disable-undo) (goto-char (point-max)) (insert-buffer-substring buffer))) + (let ((imap-process process)) + (unwind-protect + (progn + (set-process-filter imap-process 'imap-arrival-filter) + (when (and (eq imap-stream 'tls) + (imap-ok-p (imap-send-command-wait "STARTTLS"))) + (starttls-negotiate imap-process))) + (set-process-filter imap-process nil))) (when (memq (process-status process) '(open run)) process)))) @@ -553,10 +594,15 @@ successful, nil otherwise." (list "AUTHENTICATE CRAM-MD5" (lambda (challenge) - (let* ((decoded (base64-decode-string challenge)) - (hash (rfc2104-hash 'md5 64 16 passwd decoded)) + (let* ((decoded (imap-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 (imap-base64-encode-string response))) encoded)))))))) (defun imap-login-p (buffer) @@ -619,7 +665,6 @@ necessery. If nil, the buffer name is generated." (if (imap-opened buffer) (imap-close buffer)) (mapc 'make-variable-buffer-local imap-local-variables) - (imap-disable-multibyte) (buffer-disable-undo) (setq imap-server (or server imap-server)) (setq imap-port (or port imap-port)) @@ -1240,7 +1285,6 @@ BODY." (setq cmdstr (concat cmdstr imap-client-eol)) (and imap-log (with-current-buffer (get-buffer-create imap-log) - (imap-disable-multibyte) (buffer-disable-undo) (goto-char (point-max)) (insert cmdstr))) @@ -1276,7 +1320,6 @@ BODY." (and imap-log (with-current-buffer (get-buffer-create imap-log) - (imap-disable-multibyte) (buffer-disable-undo) (goto-char (point-max)) (insert-buffer-substring cmd))) @@ -1334,7 +1377,6 @@ literals. Return nil if no complete line has arrived." (insert string) (and imap-log (with-current-buffer (get-buffer-create imap-log) - (imap-disable-multibyte) (buffer-disable-undo) (goto-char (point-max)) (insert string))) @@ -1399,7 +1441,7 @@ literals. Return nil if no complete line has arrived." (defsubst imap-parse-string () (let (strstart strend) - (cond ((and (eq (char-after) ?\") + (cond ((and (eq (char-after (point)) ?\") (setq strstart (point)) (setq strend (search-forward "\"" nil t 2))) (buffer-substring-no-properties (1+ strstart) (1- strend))) diff --git a/lisp/lpath.el b/lisp/lpath.el index d2a5db0..ebc9cec 100644 --- a/lisp/lpath.el +++ b/lisp/lpath.el @@ -42,18 +42,18 @@ find-charset-region find-coding-systems-region get-charset-property coding-system-get w3-region - w3-coding-system-for-mime-charset + 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)) (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 gnus-newsgroup-charset gnus-newsgroup-emphasis-alist - mail-mode-hook enable-multibyte-characters + 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 @@ -69,9 +69,10 @@ w3-meta-content-type-charset-regexp w3-meta-charset-content-type-regexp babel-translations babel-history)) - (maybe-fbind '(color-instance-rgb-components temp-directory + (maybe-fbind '(color-instance-rgb-components + temp-directory glyph-width annotation-glyph window-pixel-width glyph-height - window-pixel-height + window-pixel-height map-extents make-color-instance color-instance-name specifier-instance device-type device-class get-popup-menu-response event-object x-defined-colors read-color add-submenu set-font-family @@ -93,12 +94,14 @@ 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))) + babel-fetch babel-wash find-coding-systems-for-charsets + sc-cite-regexp smiley-encode-buffer function-max-args + map-extents))) (setq load-path (cons "." load-path)) (require 'custom) -(defun md5 (a &optional b c) +(defun md5 (object &optional start end coding noerror) ) (provide 'lpath) diff --git a/lisp/mail-source.el b/lisp/mail-source.el index 6853e49..f288242 100644 --- a/lisp/mail-source.el +++ b/lisp/mail-source.el @@ -90,7 +90,24 @@ This variable is a list of mail source specifiers." (:connection) (:authentication password)) (maildir - (:path "~/Maildir/new/"))) + (:path "~/Maildir/new/") + (:function)) + (imap + (:server (getenv "MAILHOST")) + (:port) + (:stream) + (:authentication) + (:user (or (user-login-name) (getenv "LOGNAME") (getenv "USER"))) + (:password) + (:mailbox "INBOX") + (:predicate "UNSEEN UNDELETED") + (:fetchflag "\Deleted") + (:dontexpunge)) + (webmail + (:subtype hotmail) + (:user (or (user-login-name) (getenv "LOGNAME") (getenv "USER"))) + (:password) + (:authentication password))) "Mapping from keywords to default values. All keywords that can be used must be listed here.")) @@ -98,7 +115,9 @@ All keywords that can be used must be listed here.")) '((file mail-source-fetch-file) (directory mail-source-fetch-directory) (pop mail-source-fetch-pop) - (maildir mail-source-fetch-maildir)) + (maildir mail-source-fetch-maildir) + (imap mail-source-fetch-imap) + (webmail mail-source-fetch-webmail)) "A mapping from source type to fetcher function.") (defvar mail-source-password-cache nil) @@ -285,6 +304,12 @@ Pass INFO on to CALLBACK." ;; Return whether we moved successfully or not. to))) +(defun mail-source-movemail-and-remove (from to) + "Move FROM to TO using movemail, then remove FROM if empty." + (or (not (mail-source-movemail from to)) + (not (zerop (nth 7 (file-attributes from)))) + (delete-file from))) + (defvar mail-source-read-passwd nil) (defun mail-source-read-passwd (prompt &rest args) "Read a password using PROMPT. @@ -369,9 +394,7 @@ If ARGS, PROMPT is used as an argument to `format'." (or password (cdr (assoc from mail-source-password-cache)) (mail-source-read-passwd - (format "Password for %s at %s: " user server)))) - (unless (assoc from mail-source-password-cache) - (push (cons from password) mail-source-password-cache))) + (format "Password for %s at %s: " user server))))) (when server (setenv "MAILHOST" server)) (setq result @@ -395,12 +418,16 @@ If ARGS, PROMPT is used as an argument to `format'." (pop3-connection-type connection)) (save-excursion (pop3-movemail mail-source-crash-box)))))) (if result - (prog1 - (mail-source-callback callback server) - (mail-source-run-script - postscript - (format-spec-make ?p password ?t mail-source-crash-box - ?s server ?P port ?u user))) + (progn + (when (eq authentication 'password) + (unless (assoc from mail-source-password-cache) + (push (cons from password) mail-source-password-cache))) + (prog1 + (mail-source-callback callback server) + (mail-source-run-script + postscript + (format-spec-make ?p password ?t mail-source-crash-box + ?s server ?P port ?u user)))) ;; We nix out the password in case the error ;; was because of a wrong password being given. (setq mail-source-password-cache @@ -415,10 +442,76 @@ If ARGS, PROMPT is used as an argument to `format'." (mail-source-string (format "maildir:%s" path))) (dolist (file (directory-files path t)) (when (and (file-regular-p file) - (not (rename-file file mail-source-crash-box))) + (not (if function + (funcall function file mail-source-crash-box) + (rename-file file mail-source-crash-box)))) (incf found (mail-source-callback callback file)))) found))) +(eval-and-compile + (autoload 'imap-open "imap") + (autoload 'imap-authenticate "imap") + (autoload 'imap-mailbox-select "imap") + (autoload 'imap-mailbox-unselect "imap") + (autoload 'imap-mailbox-close "imap") + (autoload 'imap-search "imap") + (autoload 'imap-fetch "imap") + (autoload 'imap-close "imap") + (autoload 'imap-error-text "imap") + (autoload 'imap-message-flags-add "imap") + (autoload 'imap-list-to-message-set "imap") + (autoload 'nnheader-ms-strip-cr "nnheader")) + +(defun mail-source-fetch-imap (source callback) + "Fetcher for imap sources." + (mail-source-bind (imap source) + (let ((found 0) + (buf (get-buffer-create (generate-new-buffer-name " *imap source*"))) + (mail-source-string (format "imap:%s:%s" server mailbox)) + remove) + (if (and (imap-open server port stream authentication buf) + (imap-authenticate user password buf) + (imap-mailbox-select mailbox nil buf)) + (let (str (coding-system-for-write 'binary)) + (with-temp-file mail-source-crash-box + ;; if predicate is nil, use all uids + (dolist (uid (imap-search (or predicate "1:*") buf)) + (when (setq str (imap-fetch uid "RFC822.PEEK" 'RFC822 nil buf)) + (push uid remove) + (insert "From imap " (current-time-string) "\n") + (save-excursion + (insert str "\n\n")) + (while (re-search-forward "^From " nil t) + (replace-match ">From ")) + (goto-char (point-max)))) + (nnheader-ms-strip-cr)) + (incf found (mail-source-callback callback server)) + (when (and remove fetchflag) + (imap-message-flags-add + (imap-list-to-message-set remove) fetchflag nil buf)) + (if dontexpunge + (imap-mailbox-unselect buf) + (imap-mailbox-close buf)) + (imap-close buf)) + (imap-close buf) + (error (imap-error-text buf))) + (kill-buffer buf) + found))) + +(eval-and-compile + (autoload 'webmail-fetch "webmail")) + +(defun mail-source-fetch-webmail (source callback) + "Fetch for webmail source." + (mail-source-bind (webmail source) + (when (eq authentication 'password) + (setq password + (or password + (mail-source-read-passwd + (format "Password for %s at %s: " user subtype))))) + (webmail-fetch mail-source-crash-box subtype user password) + (mail-source-callback callback (symbol-name subtype)))) + (provide 'mail-source) ;;; mail-source.el ends here diff --git a/lisp/mailheader.el b/lisp/mailheader.el index 6eb5669..796ae75 100644 --- a/lisp/mailheader.el +++ b/lisp/mailheader.el @@ -46,7 +46,7 @@ ;;; Code: -(require 'cl) +(eval-when-compile (require 'cl)) ;; Make the byte-compiler shut up. (defvar headers) diff --git a/lisp/md5.el b/lisp/md5.el index 91a3041..a6c19aa 100644 --- a/lisp/md5.el +++ b/lisp/md5.el @@ -369,11 +369,15 @@ Returns a vector of 16 bytes containing the message digest." ;;; Here begins the merger with the XEmacs API and the md5.el from the URL ;;; package. Courtesy wmperry@spry.com ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun md5 (object &optional start end) +(defun md5 (object &optional start end coding noerror) "Return the MD5 (a secure message digest algorithm) of an object. OBJECT is either a string or a buffer. Optional arguments START and END denote buffer positions for computing the -hash of a portion of OBJECT." +hash of a portion of OBJECT. + +The optional CODING and NOERROR arguments are ignored. They are only +placeholders to ensure the compatibility with XEmacsen with file-coding or +Mule support." (let ((buffer nil)) (unwind-protect (save-excursion diff --git a/lisp/message.el b/lisp/message.el index b38f228..c1cb1ff 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -35,11 +35,8 @@ ;;; Code: -(eval-when-compile - (require 'cl) - (require 'smtp) - ) - +(eval-when-compile (require 'cl)) +(eval-when-compile (require 'smtp)) (require 'mailheader) (require 'nnheader) (require 'easymenu) @@ -48,6 +45,7 @@ (require 'mail-abbrevs) (require 'mailabbrev)) (require 'mime-edit) +(eval-when-compile (require 'static)) ;; Avoid byte-compile warnings. (eval-when-compile @@ -312,7 +310,7 @@ is the symbol `guess', try to detect \"Re: \" within an encoded-word." :type 'regexp :group 'message-various) -(defcustom message-elide-elipsis "\n[...]\n\n" +(defcustom message-elide-ellipsis "\n[...]\n\n" "*The string which is inserted for elided text." :type 'string :group 'message-various) @@ -407,6 +405,11 @@ The provided functions are: :type '(radio (function-item message-forward-subject-author-subject) (function-item message-forward-subject-fwd))) +(defcustom message-forward-as-mime t + "*If non-nil, forward messages as an inline/rfc822 MIME section. Otherwise, directly inline the old message in the forwarded message." + :group 'message-forwarding + :type 'boolean) + (defcustom message-wash-forwarded-subjects nil "*If non-nil, try to remove as much old cruft as possible from the subject of messages before generating the new subject of a forward." :group 'message-forwarding @@ -417,6 +420,12 @@ The provided functions are: :group 'message-interface :type 'regexp) +(defcustom message-forward-ignored-headers nil + "*All headers that match this regexp will be deleted when forwarding a message." + :group 'message-forwarding + :type '(choice (const :tag "None" nil) + regexp)) + (defcustom message-ignored-cited-headers "." "*Delete these headers from the messages you yank." :group 'message-insertion @@ -647,6 +656,7 @@ Predefined functions include `message-cite-original' and Note that `message-cite-original' uses `mail-citation-hook' if that is non-nil." :type '(radio (function-item message-cite-original) (function-item message-cite-original-without-signature) + (function-item mu-cite-original) (function-item sc-cite-original) (function :tag "Other")) :group 'message-insertion) @@ -822,6 +832,13 @@ Valid valued are `unique' and `unsent'." :group 'message :type 'symbol) +(defcustom message-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)) + ;;; Internal variables. ;;; Well, not really internal. @@ -961,10 +978,152 @@ Defaults to `text-mode-abbrev-table'.") "Face used for displaying MML." :group 'message-faces) -(defvar message-font-lock-keywords - (let* ((cite-prefix "A-Za-z") - (cite-suffix (concat cite-prefix "0-9_.@-")) - (content "[ \t]*\\(.+\\(\n[ \t].*\\)*\\)")) +(defvar message-font-lock-fence-open-regexp "[+|]" + "*Regexp that matches fence open string.") + +(defvar message-font-lock-fence-close-regexp "|" + "*Regexp that matches fence close string.") + +(defvar message-font-lock-fence-open-position nil + "*Cons of SYMBOL of a function or a variable and a number of OFFSET that +indicate the fence open position. If it is non-nil, +`message-font-lock-fence-open-regexp' is not used for searching for the +fence open position. If SYMBOL is a function, it is called with one argument +last cursor position and should return the fence open position as a number +or a marker. If SYMBOL is a variable symbol, the value is examined with +`symbol-value'. OFFSET is added to the position to compensate the value. +For example, the following combinations of variable symbol and offset value +can be used: + +Egg v3: '(egg:*region-start* . -1) +Canna: '(canna:*region-start* . 0) +") + +(defvar message-font-lock-fence-close-position nil + "*Cons of SYMBOL of a function or a variable and a number of OFFSET that +indicate the fence close position. If it is non-nil, +`message-font-lock-fence-close-regexp' is not used for searching for the +fence close position. If SYMBOL is a function, it is called with one argument +last cursor position and should return the fence close position as a number +or a marker. If SYMBOL is a variable symbol, the value is examined with +`symbol-value'. OFFSET is added to the position to compensate the value. +For example, the following combinations of variable symbol and offset value +can be used: + +Egg v3: '(egg:*region-end* . 0) +Canna: '(canna:*region-end* . 0) +") + +(defvar message-font-lock-cited-text-regexp + "^[\t ]*\\([^\000- :>|}\177]*\\)[:>|}].*" + "*Regexp that matches cited text. It should have a grouping for the +citation prefix which is ended at the beginning of citation mark string.") + +(defvar message-font-lock-citation-name-max-column 10 + "*Maximun number of column for citation name for fontifying.") + +(defvar message-font-lock-last-position nil + "Internal buffer local variable to save the last cursor position +before fontifying.") + +(eval-after-load "font-lock" + '(defadvice font-lock-after-change-function + (before message-font-lock-save-last-position activate compile) + "Save last cursor position before fontifying." + (if (eq 'message-mode major-mode) + (setq message-font-lock-last-position (point))))) + +(defun message-font-lock-cited-text-matcher (limit) + "Search for a cited text containing `message-font-lock-cited-text-regexp' +forward. Argument LIMIT bounds the search. If a cited text is found, it +returns t and sets match data 1 and 2, otherwise it returns nil. Normally, +match data 2 has zero length, but if the FENCE (for input method) is detected +in matched text, result is divided into match data 1 and 2 across the FENCE. +See also the documentations for the following variables: + `message-font-lock-fence-open-regexp' + `message-font-lock-fence-close-regexp' + `message-font-lock-fence-open-position' + `message-font-lock-fence-close-position' +" + (prog1 + (when (re-search-forward message-font-lock-cited-text-regexp limit t) + (let* ((start0 (match-beginning 0)) + (end0 (match-end 0)) + (cite-mark (match-end 1)) + (should-fontify + (progn + (goto-char cite-mark) + (<= (current-column) + message-font-lock-citation-name-max-column))) + end1 start2) + (and + should-fontify + message-font-lock-last-position + (>= message-font-lock-last-position start0) + (<= message-font-lock-last-position end0) + (cond + (message-font-lock-fence-open-position + (let* ((symbol (car message-font-lock-fence-open-position)) + (open + (cond ((functionp symbol) + (funcall symbol message-font-lock-last-position)) + ((and (symbolp symbol) + (boundp symbol)) + (symbol-value symbol))))) + (when (markerp open) + (setq open (marker-position open))) + (and (numberp open) + (setq open + (+ open + (cdr message-font-lock-fence-open-position))) + (>= message-font-lock-last-position open) + (goto-char open) + (or (not message-font-lock-fence-open-regexp) + (looking-at message-font-lock-fence-open-regexp)) + (setq end1 open)))) + (message-font-lock-fence-open-regexp + (goto-char message-font-lock-last-position) + (when (re-search-backward + message-font-lock-fence-open-regexp start0 t) + (setq end1 (match-beginning 0))))) + (setq should-fontify + (and message-font-lock-fence-open-position + (not (eq cite-mark end1)))) + (cond + (message-font-lock-fence-close-position + (let* ((symbol (car message-font-lock-fence-close-position)) + (close + (cond ((functionp symbol) + (funcall symbol message-font-lock-last-position)) + ((and (symbolp symbol) + (boundp symbol)) + (symbol-value symbol))))) + (when (markerp close) + (setq close (marker-position close))) + (and (numberp close) + (setq close + (+ close + (cdr message-font-lock-fence-close-position))) + (<= message-font-lock-last-position close) + (setq start2 close)))) + (message-font-lock-fence-close-regexp + (goto-char message-font-lock-last-position) + (when (looking-at message-font-lock-fence-close-regexp) + (setq start2 (match-end 0))))) + (setq should-fontify + (and (not (and (not message-font-lock-fence-open-position) + (eq cite-mark end1))) + (not (eq cite-mark start2))))) + (goto-char end0) + (when should-fontify + (if start2 + (store-match-data (list start0 end0 start0 end1 start2 end0)) + (store-match-data (list start0 end0 start0 end0 end0 end0))) + t))) + (setq message-font-lock-last-position nil))) + +(defvar message-font-lock-keywords-1 + (let ((content "[ \t]*\\(.+\\(\n[ \t].*\\)*\\)")) `((,(concat "^\\([Tt]o:\\)" content) (1 'message-header-name-face) (2 'message-header-to-face nil t)) @@ -990,18 +1149,27 @@ Defaults to `text-mode-abbrev-table'.") (not (equal mail-header-separator ""))) `((,(concat "^\\(" (regexp-quote mail-header-separator) "\\)$") 1 'message-separator-face)) - nil) - (,(concat "^[ \t]*" - "\\([" cite-prefix "]+[" cite-suffix "]*\\)?" - "[:>|}].*") - (0 'message-cited-text-face)) - ("<#/?\\(multipart\\|part\\|external\\).*>" - (0 'message-mml-face)))) + nil)))) + +(defvar message-font-lock-keywords-2 + (append message-font-lock-keywords-1 + '((message-font-lock-cited-text-matcher + (1 'message-cited-text-face) + (2 'message-cited-text-face)) + ("<#/?\\(multipart\\|part\\|external\\).*>" + (0 'message-mml-face))))) + +(defvar message-font-lock-keywords message-font-lock-keywords-2 "Additional expressions to highlight in Message mode.") ;; XEmacs does it like this. For Emacs, we have to set the ;; `font-lock-defaults' buffer-local variable. -(put 'message-mode 'font-lock-defaults '(message-font-lock-keywords t)) +(put 'message-mode 'font-lock-defaults + '((message-font-lock-keywords + message-font-lock-keywords-1 + message-font-lock-keywords-2) + nil nil nil nil + (font-lock-mark-block-function . mark-paragraph))) (defvar message-face-alist '((bold . bold-region) @@ -1047,6 +1215,7 @@ The cdr of ech entry is a function for applying the face to a region.") (defvar message-draft-coding-system (cond + ((boundp 'MULE) '*junet*) ((not (fboundp 'find-coding-system)) nil) ((find-coding-system 'emacs-mule) (if (memq system-type '(windows-nt ms-dos ms-windows)) @@ -1131,6 +1300,7 @@ The cdr of ech entry is a function for applying the face to a region.") "^ *---+ +Original message +---+ *$\\|" "^ *--+ +begin message +--+ *$\\|" "^ *---+ +Original message follows +---+ *$\\|" + "^ *---+ +Undelivered message follows +---+ *$\\|" "^|? *---+ +Message text follows: +---+ *|?$") "A regexp that matches the separator before the text of a failed message.") @@ -1166,7 +1336,8 @@ The cdr of ech entry is a function for applying the face to a region.") (autoload 'gnus-request-post "gnus-int") (autoload 'gnus-copy-article-buffer "gnus-msg") (autoload 'gnus-alive-p "gnus-util") - (autoload 'rmail-output "rmail")) + (autoload 'rmail-output "rmail") + (autoload 'mu-cite-original "mu-cite")) @@ -1250,7 +1421,7 @@ The cdr of ech entry is a function for applying the face to a region.") (when value (while (string-match "\n[\t ]+" value) (setq value (replace-match " " t t value))) - ;; We remove all text props.delete-region + ;; We remove all text props. (format "%s" value)))) (defun message-narrow-to-field () @@ -1280,6 +1451,7 @@ The cdr of ech entry is a function for applying the face to a region.") (insert (car headers) ?\n)))) (setq headers (cdr headers)))) + (defun message-fetch-reply-field (header) "Fetch FIELD from the message we're replying to." (let ((buffer (message-eval-parameter message-reply-buffer))) @@ -1491,6 +1663,7 @@ Point is left at the beginning of the narrowed-to region." (define-key message-mode-map "\C-c\C-n" 'message-insert-newsgroups) (define-key message-mode-map "\C-c\C-y" 'message-yank-original) + (define-key message-mode-map "\C-c\C-Y" 'message-yank-buffer) (define-key message-mode-map "\C-c\C-q" 'message-fill-yanked-message) (define-key message-mode-map "\C-c\C-w" 'message-insert-signature) (define-key message-mode-map "\C-c\M-h" 'message-insert-headers) @@ -1582,7 +1755,8 @@ C-c C-q message-fill-yanked-message (fill what was yanked). C-c C-e message-elide-region (elide the text between point and mark). C-c C-v message-delete-not-region (remove the text outside the region). C-c C-z message-kill-to-signature (kill the text up to the signature). -C-c C-r message-caesar-buffer-body (rot13 the message body)." +C-c C-r message-caesar-buffer-body (rot13 the message body). +M-RET message-newline-and-reformat (break the line and reformat)." (interactive) (kill-all-local-variables) (set (make-local-variable 'message-reply-buffer) nil) @@ -1645,15 +1819,21 @@ C-c C-r message-caesar-buffer-body (rot13 the message body)." (message-set-auto-save-file-name) (unless (string-match "XEmacs" emacs-version) (set (make-local-variable 'font-lock-defaults) - '(message-font-lock-keywords t))) + '((message-font-lock-keywords + message-font-lock-keywords-1 + message-font-lock-keywords-2) + nil nil nil nil + (font-lock-mark-block-function . mark-paragraph)))) + (set (make-local-variable 'message-font-lock-last-position) nil) (make-local-variable 'adaptive-fill-regexp) (setq adaptive-fill-regexp - (concat "[ \t]*[-a-z0-9A-Z]*>+[ \t]*\\|" 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]*\\|" + (concat "[ \t]*[-a-z0-9A-Z]*\\(>[ \t]*\\)+[ \t]*\\|" adaptive-fill-first-line-regexp)) (make-local-variable 'indent-tabs-mode) ;Turn off tabs for indentation. (setq indent-tabs-mode nil) @@ -1827,17 +2007,24 @@ With the prefix argument FORCE, insert the header anyway." (defun message-newline-and-reformat () "Insert four newlines, and then reformat if inside quoted text." (interactive) - (let ((point (point)) - quoted) - (save-excursion - (beginning-of-line) - (setq quoted (looking-at (regexp-quote message-yank-prefix)))) - (insert "\n\n\n\n") + (let ((prefix "[]>»|:}+ \t]*") + (supercite-thing "[-._a-zA-Z0-9]*[>]+[ \t]*") + quoted point) + (unless (bolp) + (save-excursion + (beginning-of-line) + (when (looking-at (concat prefix + supercite-thing)) + (setq quoted (match-string 0)))) + (insert "\n")) + (setq point (point)) + (insert "\n\n\n") + (delete-region (point) (re-search-forward "[ \t]*")) (when quoted - (insert message-yank-prefix)) + (insert quoted)) (fill-paragraph nil) (goto-char point) - (forward-line 2))) + (forward-line 1))) (defun message-insert-signature (&optional force) "Insert a signature. See documentation for the `message-signature' variable." @@ -1878,13 +2065,11 @@ With the prefix argument FORCE, insert the header anyway." (defun message-elide-region (b e) "Elide the text between point and mark. -An ellipsis (from `message-elide-elipsis') will be inserted where the +An ellipsis (from `message-elide-ellipsis') will be inserted where the text was killed." (interactive "r") (kill-region b e) - (unless (bolp) - (insert "\n")) - (insert message-elide-elipsis)) + (insert message-elide-ellipsis)) (defvar message-caesar-translation-table nil) @@ -1953,7 +2138,7 @@ Mail and USENET news headers are not rotated." (unless (equal 0 (call-process-region (point-min) (point-max) program t t)) (insert body) - (message "%s failed." program)))))) + (message "%s failed" program)))))) (defun message-rename-buffer (&optional enter-string) "Rename the *message* buffer to \"*message* RECIPIENT\". @@ -2120,6 +2305,24 @@ be added to \"References\" field." (unless modified (setq message-checksum (message-checksum)))))) +(defun message-yank-buffer (buffer) + "Insert BUFFER into the current buffer and quote it." + (interactive "bYank buffer: ") + (let ((message-reply-buffer buffer)) + (save-window-excursion + (message-yank-original)))) + +(defun message-buffers () + "Return a list of active message buffers." + (let (buffers) + (save-excursion + (dolist (buffer (buffer-list t)) + (set-buffer buffer) + (when (and (eq major-mode 'message-mode) + (null message-sent-message-via)) + (push (buffer-name buffer) buffers)))) + (nreverse buffers))) + (defun message-cite-original-without-signature () "Cite function in the standard Message manner." (let ((start (point)) @@ -2293,9 +2496,9 @@ The text will also be indented the normal way." (defun message-delete-frame (frame org-frame) "Delete frame for editing message." - (when (and (or (and (featurep 'xemacs) - (not (eq 'tty (device-type)))) - window-system + (when (and (or (static-if (featurep 'xemacs) + (device-on-window-system-p) + window-system) (>= emacs-major-version 20)) (or (and (eq message-delete-frame-on-exit t) (select-frame frame) @@ -2352,22 +2555,20 @@ the user from the mailer." (message-fix-before-sending) (while (and success (setq elem (pop alist))) - (when (and (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))))) + (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)))) - (unless sent + (unless (or sent (not success)) (error "No methods specified to send by")) (prog1 (when (and success sent) (message-do-fcc) - ;;(when (fboundp 'mail-hist-put-headers-into-history) - ;; (mail-hist-put-headers-into-history)) (save-excursion (run-hooks 'message-sent-hook)) (message "Sending...done") @@ -3123,6 +3324,7 @@ This sub function is for exclusive use of `message-send-news'." "Process Fcc headers in the current buffer." (let ((case-fold-search t) (coding-system-for-write 'raw-text) + (output-coding-system 'raw-text) list file) (save-excursion (set-buffer (get-buffer-create " *message temp*")) @@ -3589,12 +3791,16 @@ Headers already prepared in the buffer are not modified." ;; This header didn't exist, so we insert it. (goto-char (point-max)) (insert (if (stringp header) header (symbol-name header)) - ": " value "\n") + ": " value) + (unless (bolp) + (insert "\n")) (forward-line -1)) ;; The value of this header was empty, so we clear ;; totally and insert the new value. (delete-region (point) (gnus-point-at-eol)) - (insert value)) + (insert value) + (when (bolp) + (delete-char -1))) ;; Add the deletable property to the headers that require it. (and (memq header message-deletable-headers) (progn (beginning-of-line) (looking-at "[^:]+: ")) @@ -3774,40 +3980,36 @@ Headers already prepared in the buffer are not modified." (t (format "*%s message*" type)))) +(defmacro message-pop-to-buffer-1 (buffer) + `(if pop-up-frames + (let (special-display-buffer-names + special-display-regexps + same-window-buffer-names + same-window-regexps) + (pop-to-buffer ,buffer)) + (pop-to-buffer ,buffer))) + (defun message-pop-to-buffer (name) "Pop to buffer NAME, and warn if it already exists and is modified." - (let ((pop-up-frames pop-up-frames) - (special-display-buffer-names special-display-buffer-names) - (special-display-regexps special-display-regexps) - (same-window-buffer-names same-window-buffer-names) - (same-window-regexps same-window-regexps) - (buffer (get-buffer name)) - (cur (current-buffer))) - (if (or (and (featurep 'xemacs) - (not (eq 'tty (device-type)))) - window-system - (>= emacs-major-version 20)) - (when message-use-multi-frames - (setq pop-up-frames t - special-display-buffer-names nil - special-display-regexps nil - same-window-buffer-names nil - same-window-regexps nil)) - (setq pop-up-frames nil)) + (let ((buffer (get-buffer name)) + (pop-up-frames (and (or (static-if (featurep 'xemacs) + (device-on-window-system-p) + window-system) + (>= emacs-major-version 20)) + message-use-multi-frames))) (if (and buffer (buffer-name buffer)) (progn - (set-buffer (pop-to-buffer buffer)) + (message-pop-to-buffer-1 buffer) (when (and (buffer-modified-p) (not (y-or-n-p "Message already being composed; erase? "))) (error "Message being composed"))) - (set-buffer (pop-to-buffer name))) + (message-pop-to-buffer-1 name)) (erase-buffer) (message-mode) (when pop-up-frames - (make-local-variable 'message-original-frame) - (setq message-original-frame (selected-frame))))) + (set (make-local-variable 'message-original-frame) (selected-frame))))) (defun message-do-send-housekeeping () "Kill old message buffers." @@ -3906,7 +4108,9 @@ Headers already prepared in the buffer are not modified." message-auto-save-directory)) (setq buffer-auto-save-file-name (make-auto-save-file-name))) (clear-visited-file-modtime) - (setq buffer-file-coding-system message-draft-coding-system))) + (static-if (boundp 'MULE) + (set-file-coding-system message-draft-coding-system) + (setq buffer-file-coding-system message-draft-coding-system)))) (defun message-disassociate-draft () "Disassociate the message buffer from the drafts directory." @@ -4066,9 +4270,9 @@ directs your response to " (if (string-match "," mft) A typical situation where Mail-Followup-To is used is when the author thinks that further discussion should take place only in " - (if (string-match "," mft) - "the specified mailing lists" - "that mailing list") "."))) + (if (string-match "," mft) + "the specified mailing lists" + "that mailing list") "."))) (setq follow-to (list (cons 'To mft))) (when mct (push (cons 'Cc mct) follow-to))) @@ -4085,8 +4289,9 @@ that further discussion should take place only in " (while (re-search-forward "[ \t]+" nil t) (replace-match " " t t)) ;; Remove addresses that match `rmail-dont-reply-to-names'. - (insert (prog1 (rmail-dont-reply-to (buffer-string)) - (erase-buffer))) + (let ((rmail-dont-reply-to-names message-dont-reply-to-names)) + (insert (prog1 (rmail-dont-reply-to (buffer-string)) + (erase-buffer)))) (goto-char (point-min)) ;; Perhaps Mail-Copies-To: never removed the only address? (when (eobp) @@ -4522,7 +4727,8 @@ Optional NEWS will use news to forward instead of mail." ;;;###autoload (defun message-resend (address) "Resend the current article to ADDRESS." - (interactive "sResend message to: ") + (interactive + (list (message-read-from-minibuffer "Resend message to: "))) (message "Resending message to %s..." address) (save-excursion (let ((cur (current-buffer)) @@ -4938,16 +5144,28 @@ regexp varstr." (forward-line 1) (insert "Content-Type: text/plain; charset=us-ascii\n"))))) +(defun message-read-from-minibuffer (prompt) + "Read from the minibuffer while providing abbrev expansion." + (if (fboundp 'mail-abbrevs-setup) + (let ((mail-abbrev-mode-regexp "") + (minibuffer-setup-hook 'mail-abbrevs-setup)) + (read-from-minibuffer prompt))) + (let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook)) + (read-string prompt))) + (defvar message-save-buffer " *encoding") (defun message-save-drafts () (interactive) (if (not (get-buffer message-save-buffer)) (get-buffer-create message-save-buffer)) (let ((filename buffer-file-name) - (buffer (current-buffer))) + (buffer (current-buffer)) + (reply-headers message-reply-headers)) (set-buffer message-save-buffer) (erase-buffer) (insert-buffer buffer) + (setq message-reply-headers reply-headers) + (message-generate-headers '((optional . In-Reply-To))) (mime-edit-translate-buffer) (write-region (point-min) (point-max) filename) (set-buffer buffer) diff --git a/lisp/mm-bodies.el b/lisp/mm-bodies.el index 1107947..ad7bbeb 100644 --- a/lisp/mm-bodies.el +++ b/lisp/mm-bodies.el @@ -38,25 +38,7 @@ ;; BS, vertical TAB, form feed, and ^_ (defvar mm-8bit-char-regexp "[^\x20-\x7f\r\n\t\x7\x8\xb\xc\x1f]") -(defvar mm-body-charset-encoding-alist - '((us-ascii . 7bit) - (iso-8859-1 . quoted-printable) - (iso-8859-2 . quoted-printable) - (iso-8859-3 . quoted-printable) - (iso-8859-4 . quoted-printable) - (iso-8859-5 . base64) - (koi8-r . 8bit) - (iso-8859-7 . quoted-printable) - (iso-8859-8 . quoted-printable) - (iso-8859-9 . quoted-printable) - (iso-2022-jp . base64) - (iso-2022-kr . base64) - (gb2312 . base64) - (cn-gb . base64) - (cn-gb-2312 . base64) - (euc-kr . 8bit) - (iso-2022-jp-2 . base64) - (iso-2022-int-1 . base64)) +(defvar mm-body-charset-encoding-alist nil "Alist of MIME charsets to encodings. Valid encodings are `7bit', `8bit', `quoted-printable' and `base64'.") @@ -123,7 +105,7 @@ If no encoding was done, nil is returned." bits) (t (let ((encoding (or (cdr (assq charset mm-body-charset-encoding-alist)) - 'quoted-printable))) + (mm-qp-or-base64)))) (mm-encode-content-transfer-encoding encoding "text/plain") encoding))))) @@ -168,6 +150,7 @@ If no encoding was done, nil is returned." (save-excursion (goto-char (point-max)) (skip-chars-backward "\n\t ") + (delete-region (point) (point-max)) (point)))) ((memq encoding '(7bit 8bit binary)) ) @@ -208,9 +191,10 @@ The characters in CHARSET should then be decoded." ;; buffer-file-coding-system ;;Article buffer is nil coding system ;;in XEmacs - enable-multibyte-characters + (mm-multibyte-p) (or (not (eq mule-charset 'ascii)) - (setq mule-charset mail-parse-charset))) + (setq mule-charset mail-parse-charset)) + (not (eq mule-charset 'gnus-decoded))) (mm-decode-coding-region (point-min) (point-max) mule-charset)))))) (defun mm-decode-string (string charset) @@ -224,7 +208,7 @@ The characters in CHARSET should then be decoded." (let (mule-charset) (when (and charset (setq mule-charset (mm-charset-to-coding-system charset)) - enable-multibyte-characters + (mm-multibyte-p) (or (not (eq mule-charset 'ascii)) (setq mule-charset mail-parse-charset))) (mm-decode-coding-string string mule-charset)))) diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index c43b1b6..8fbef31 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -104,6 +104,9 @@ ("text/plain" mm-inline-text identity) ("text/enriched" mm-inline-text identity) ("text/richtext" mm-inline-text identity) + ("text/x-patch" mm-display-patch-inline + (lambda (handle) + (locate-library "diff-mode"))) ("text/html" mm-inline-text (lambda (handle) @@ -111,7 +114,8 @@ ("text/x-vcard" mm-inline-text (lambda (handle) - (locate-library "vcard"))) + (or (featurep 'vcard) + (locate-library "vcard")))) ("message/delivery-status" mm-inline-text identity) ("message/rfc822" mm-inline-message identity) ("text/.*" mm-inline-text identity) @@ -124,25 +128,32 @@ (lambda (handle) (and (or (featurep 'nas-sound) (featurep 'native-sound)) (device-sound-enabled-p)))) + ("application/pgp-signature" ignore identity) ("multipart/alternative" ignore identity) ("multipart/mixed" ignore identity) ("multipart/related" ignore identity)) "Alist of media types/test that say whether the media types can be displayed inline.") (defvar mm-inlined-types - '("image/.*" "text/.*" "message/delivery-status" "message/rfc822") + '("image/.*" "text/.*" "message/delivery-status" "message/rfc822" + "application/pgp-signature") "List of media types that are to be displayed inline.") (defvar mm-automatic-display '("text/plain" "text/enriched" "text/richtext" "text/html" "text/x-vcard" "image/.*" "message/delivery-status" "multipart/.*" - "message/rfc822") + "message/rfc822" "text/x-patch" "application/pgp-signature") "A list of MIME types to be displayed automatically.") -(defvar mm-attachment-override-types - '("text/plain" "text/x-vcard") +(defvar mm-attachment-override-types '("text/x-vcard") "Types that should have \"attachment\" ignored if they can be displayed inline.") +(defvar mm-inline-override-types nil + "Types that should be treated as attachments even if they can be displayed inline.") + +(defvar mm-inline-override-types nil + "Types that should be treated as attachments even if they can be displayed inline.") + (defvar mm-automatic-external-display nil "List of MIME type regexps that will be displayed externally automatically.") @@ -191,7 +202,11 @@ to: (if (or (not ctl) (not (string-match "/" (car ctl)))) (mm-dissect-singlepart - '("text/plain") nil no-strict-mime + '("text/plain") + (and cte (intern (downcase (mail-header-remove-whitespace + (mail-header-remove-comments + cte))))) + no-strict-mime (and cd (ignore-errors (mail-header-parse-content-disposition cd))) description) (setq type (split-string (car ctl) "/")) @@ -315,9 +330,9 @@ external if displayed external." (insert-buffer-substring cur) (message "Viewing with %s" method) (let ((mm (current-buffer)) - (non-viewer (assoc "non-viewer" - (mailcap-mime-info - (mm-handle-media-type handle) t)))) + (non-viewer (assq 'non-viewer + (mailcap-mime-info + (mm-handle-media-type handle) t)))) (unwind-protect (if method (funcall method) @@ -334,6 +349,7 @@ external if displayed external." (mm-handle-media-type handle) t)) (needsterm (or (assoc "needsterm" mime-info) (assoc "needsterminal" mime-info))) + (copiousoutput (assoc "copiousoutput" mime-info)) process file buffer) ;; We create a private sub-directory where we store our files. (make-directory dir) @@ -342,22 +358,35 @@ external if displayed external." (setq file (expand-file-name (file-name-nondirectory filename) dir)) (setq file (make-temp-name (expand-file-name "mm." dir)))) - (write-region (point-min) (point-max) file nil 'nomesg) + (let ((coding-system-for-write mm-binary-coding-system)) + (write-region (point-min) (point-max) file nil 'nomesg)) (message "Viewing with %s" method) (unwind-protect (setq process - (if needsterm - (start-process "*display*" nil - "xterm" - "-e" shell-file-name "-c" - (mm-mailcap-command - method file (mm-handle-type handle))) - (start-process "*display*" - (setq buffer (generate-new-buffer "*mm*")) - shell-file-name - "-c" - (mm-mailcap-command - method file (mm-handle-type handle))))) + (cond (needsterm + (start-process "*display*" nil + "xterm" + "-e" shell-file-name + shell-command-switch + (mm-mailcap-command + method file (mm-handle-type handle)))) + (copiousoutput + (start-process "*display*" + (setq buffer + (generate-new-buffer "*mm*")) + shell-file-name + shell-command-switch + (mm-mailcap-command + method file (mm-handle-type handle))) + (switch-to-buffer buffer)) + (t + (start-process "*display*" + (setq buffer + (generate-new-buffer "*mm*")) + shell-file-name + shell-command-switch + (mm-mailcap-command + method file (mm-handle-type handle)))))) (mm-handle-set-undisplayer handle (cons file buffer))) (message "Displaying %s..." (format method file)))))) @@ -437,17 +466,22 @@ external if displayed external." (defun mm-display-inline (handle) (let* ((type (mm-handle-media-type handle)) - (function (cadr (assoc type mm-inline-media-tests)))) + (function (cadr (mm-assoc-string-match mm-inline-media-tests type)))) (funcall function handle) (goto-char (point-min)))) +(defun mm-assoc-string-match (alist type) + (dolist (elem alist) + (when (string-match (car elem) type) + (return elem)))) + (defun mm-inlinable-p (handle) "Say whether HANDLE can be displayed inline." (let ((alist mm-inline-media-tests) (type (mm-handle-media-type handle)) test) (while alist - (when (equal type (caar alist)) + (when (string-match (caar alist) type) (setq test (caddar alist) alist nil) (setq test (funcall test handle))) @@ -460,7 +494,8 @@ external if displayed external." (type (mm-handle-media-type handle)) method result) (while (setq method (pop methods)) - (when (and (string-match method type) + (when (and (not (mm-inline-override-p handle)) + (string-match method type) (mm-inlinable-p handle)) (setq result t methods nil))) @@ -472,7 +507,8 @@ external if displayed external." (type (mm-handle-media-type handle)) method result) (while (setq method (pop methods)) - (when (and (string-match method type) + (when (and (not (mm-inline-override-p handle)) + (string-match method type) (mm-inlinable-p handle)) (setq result t methods nil))) @@ -489,6 +525,16 @@ external if displayed external." (mm-inlinable-p handle)) (throw 'found t)))))) +(defun mm-inline-override-p (handle) + "Say whether HANDLE should have inline behavior overridden." + (let ((types mm-inline-override-types) + (type (mm-handle-media-type handle)) + ty) + (catch 'found + (while (setq ty (pop types)) + (when (string-match ty type) + (throw 'found t)))))) + (defun mm-automatic-external-display-p (type) "Return the user-defined method for TYPE." (let ((methods mm-automatic-external-display) @@ -566,21 +612,13 @@ external if displayed external." (defun mm-save-part-to-file (handle file) (mm-with-unibyte-buffer (mm-insert-part handle) - ;; Now every coding system is 100% binary within mm-with-unibyte-buffer - ;; Is text still special? - (let ((coding-system-for-write - (if (equal "text" (mm-handle-media-supertype handle)) - buffer-file-coding-system - 'binary)) + (let ((coding-system-for-write 'binary) ;; Don't re-compress .gz & al. Arguably we should make ;; `file-name-handler-alist' nil, but that would chop - ;; ange-ftp which it's reasonable to use here. + ;; ange-ftp, which is reasonable to use here. (inhibit-file-name-operation 'write-region) (inhibit-file-name-handlers - (if (equal (mm-handle-media-type handle) - "application/octet-stream") - (cons 'jka-compr-handler inhibit-file-name-handlers) - inhibit-file-name-handlers))) + (cons 'jka-compr-handler inhibit-file-name-handlers))) (write-region (point-min) (point-max) file)))) (defun mm-pipe-part (handle) diff --git a/lisp/mm-encode.el b/lisp/mm-encode.el index ddb5b0b..766f1ea 100644 --- a/lisp/mm-encode.el +++ b/lisp/mm-encode.el @@ -1,4 +1,4 @@ -;;; mm-encode.el --- Functions for encoding MIME things +;;; mm-encode.el --- Functions for encoding MIME things ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -63,7 +63,7 @@ or base64 will be used, depending on what is more efficient.") (defun mm-encode-content-transfer-encoding (encoding &optional type) (cond ((eq encoding 'quoted-printable) - (quoted-printable-encode-region (point-min) (point-max))) + (quoted-printable-encode-region (point-min) (point-max) t)) ((eq encoding 'base64) (when (equal type "text/plain") (goto-char (point-min)) @@ -126,24 +126,17 @@ The encoding used is returned." (defun mm-qp-or-base64 () (save-excursion - (save-restriction - (narrow-to-region (point-min) (min (+ (point-min) 1000) (point-max))) + (let ((limit (min (point-max) (+ 2000 (point-min)))) + (n8bit 0)) (goto-char (point-min)) - (let ((8bit 0)) - (cond - ((not (featurep 'mule)) - (while (re-search-forward "[^\x00-\x7f]" nil t) - (incf 8bit))) - (t - ;; Mule version - (while (not (eobp)) - (skip-chars-forward "\0-\177") - (unless (eobp) - (forward-char 1) - (incf 8bit))))) - (if (> (/ (* 8bit 1.0) (buffer-size)) 0.166) - 'quoted-printable - 'base64))))) + (skip-chars-forward "\x20-\x7f\r\n\t" limit) + (while (< (point) limit) + (incf n8bit) + (forward-char 1) + (skip-chars-forward "\x20-\x7f\r\n\t" limit)) + (if (< (* 6 n8bit) (- limit (point-min))) + 'quoted-printable + 'base64)))) (provide 'mm-encode) diff --git a/lisp/mm-util.el b/lisp/mm-util.el index a8e8f8b..a23a7f6 100644 --- a/lisp/mm-util.el +++ b/lisp/mm-util.el @@ -24,19 +24,6 @@ ;;; Code: -(defconst mm-running-xemacs (string-match "XEmacs" emacs-version)) - -(defconst mm-binary-coding-system - (if mm-running-xemacs - 'binary 'no-conversion) - "100% binary coding system.") - -(defconst mm-text-coding-system - (and (fboundp 'coding-system-list) - (if (memq system-type '(windows-nt ms-dos ms-windows)) - 'raw-text-dos 'raw-text)) - "Text-safe coding system (For removing ^M).") - (defvar mm-mime-mule-charset-alist '((us-ascii ascii) (iso-8859-1 latin-iso8859-1) @@ -84,8 +71,8 @@ (lambda (elem) (let ((nfunc (intern (format "mm-%s" (car elem))))) (if (fboundp (car elem)) - (fset nfunc (car elem)) - (fset nfunc (cdr elem))))) + (defalias nfunc (car elem)) + (defalias nfunc (cdr elem))))) '((decode-coding-string . (lambda (s a) s)) (encode-coding-string . (lambda (s a) s)) (encode-coding-region . ignore) @@ -118,16 +105,37 @@ (x-ctext . ctext)) "A mapping from invalid charset names to the real charset names.") -(defconst mm-auto-save-coding-system +(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-binary-coding-system (cond - ((memq 'emacs-mule (mm-get-coding-system-list)) - (if (memq system-type '(windows-nt ms-dos ms-windows)) - 'emacs-mule-dos 'emacs-mule)) - ((memq 'escape-quoted (mm-get-coding-system-list)) - 'escape-quoted) - ((memq 'no-conversion (mm-get-coding-system-list)) - 'no-conversion) + ((mm-coding-system-p 'binary) 'binary) + ((mm-coding-system-p 'no-conversion) 'no-conversion) (t nil)) + "100% binary coding system.") + +(defvar mm-text-coding-system + (or (if (memq system-type '(windows-nt ms-dos ms-windows)) + (and (mm-coding-system-p 'raw-text-dos) 'raw-text-dos) + (and (mm-coding-system-p 'raw-text) 'raw-text)) + mm-binary-coding-system) + "Text-safe coding system (For removing ^M).") + +(defvar mm-text-coding-system-for-write nil + "Text coding system for write.") + +(defvar mm-auto-save-coding-system + (cond + ((mm-coding-system-p 'emacs-mule) + (if (memq system-type '(windows-nt ms-dos ms-windows)) + (if (mm-coding-system-p 'emacs-mule-dos) + 'emacs-mule-dos mm-binary-coding-system) + 'emacs-mule)) + ((mm-coding-system-p 'escape-quoted) 'escape-quoted) + (t mm-binary-coding-system)) "Coding system of auto save file.") ;;; Internal variables: @@ -198,7 +206,7 @@ used as the line break code type of the coding system." (defun mm-preferred-coding-system (charset) ;; A typo in some Emacs versions. (or (get-charset-property charset 'prefered-coding-system) - (get-charset-property charset 'preffered-coding-system))) + (get-charset-property charset 'preferred-coding-system))) (defun mm-mime-charset (charset) "Return the MIME charset corresponding to the MULE CHARSET." @@ -223,19 +231,26 @@ used as the line break code type of the coding system." (mm-find-charset-region b e))))) (when (memq 'iso-2022-jp-2 charsets) (setq charsets (delq 'iso-2022-jp charsets))) - (delete-duplicates charsets))) + (delete-duplicates charsets) + (if (and (> (length charsets) 1) + (fboundp 'find-coding-systems-for-charsets) + (memq 'utf-8 (find-coding-systems-for-charsets charsets))) + '(utf-8) + charsets))) (defsubst mm-multibyte-p () "Say whether multibyte is enabled." - (and (boundp 'enable-multibyte-characters) - enable-multibyte-characters)) + (or (string-match "XEmacs\\|Lucid" emacs-version) + (and (boundp 'enable-multibyte-characters) + enable-multibyte-characters))) (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 (not (boundp 'enable-multibyte-characters)) + `(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) @@ -259,8 +274,7 @@ See also `with-temp-file' and `with-output-to-string'." (defun mm-find-charset-region (b e) "Return a list of charsets in the region." (cond - ((and (boundp 'enable-multibyte-characters) - enable-multibyte-characters + ((and (mm-multibyte-p) (fboundp 'find-charset-region)) (find-charset-region b e)) ((not (boundp 'current-language-environment)) @@ -317,21 +331,74 @@ See also `with-temp-file' and `with-output-to-string'." (pop alist)) (nreverse out))) -(defun mm-insert-file-contents (filename &optional visit beg end replace) +(defvar mm-inhibit-file-name-handlers + '(jka-compr-handler) + "A list of handlers doing (un)compression (etc) thingies.") + +(defun mm-insert-file-contents (filename &optional visit beg end replace + inhibit) "Like `insert-file-contents', q.v., but only reads in the file. A buffer may be modified in several ways after reading into the buffer due to advanced Emacs features, such as file-name-handlers, format decoding, find-file-hooks, etc. +If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers. This function ensures that none of these modifications will take place." (let ((format-alist nil) - (auto-mode-alist (mm-auto-mode-alist)) + (auto-mode-alist (if inhibit nil (mm-auto-mode-alist))) (default-major-mode 'fundamental-mode) (enable-local-variables nil) (after-insert-file-functions nil) (enable-local-eval nil) - (find-file-hooks nil)) + (find-file-hooks nil) + (inhibit-file-name-operation (if inhibit + 'insert-file-contents + inhibit-file-name-operation)) + (inhibit-file-name-handlers + (if inhibit + (append mm-inhibit-file-name-handlers + inhibit-file-name-handlers) + inhibit-file-name-handlers))) (insert-file-contents filename visit beg end replace))) +(defun mm-append-to-file (start end filename &optional codesys inhibit) + "Append the contents of the region to the end of file FILENAME. +When called from a function, expects three arguments, +START, END and FILENAME. START and END are buffer positions +saying what text to write. +Optional fourth argument specifies the coding system to use when +encoding the file. +If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers." + (let ((coding-system-for-write + (or codesys mm-text-coding-system-for-write + mm-text-coding-system)) + (inhibit-file-name-operation (if inhibit + 'append-to-file + inhibit-file-name-operation)) + (inhibit-file-name-handlers + (if inhibit + (append mm-inhibit-file-name-handlers + inhibit-file-name-handlers) + inhibit-file-name-handlers))) + (append-to-file start end filename))) + +(defun mm-write-region (start end filename &optional append visit lockname + coding-system inhibit) + + "Like `write-region'. +If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers." + (let ((coding-system-for-write + (or coding-system mm-text-coding-system-for-write + mm-text-coding-system)) + (inhibit-file-name-operation (if inhibit + 'write-region + inhibit-file-name-operation)) + (inhibit-file-name-handlers + (if inhibit + (append mm-inhibit-file-name-handlers + inhibit-file-name-handlers) + inhibit-file-name-handlers))) + (write-region start end filename append visit lockname))) + (provide 'mm-util) ;;; mm-util.el ends here diff --git a/lisp/mm-uu.el b/lisp/mm-uu.el index c3991c3..4f66013 100644 --- a/lisp/mm-uu.el +++ b/lisp/mm-uu.el @@ -81,8 +81,8 @@ decoder, such as hexbin." ;;; Thanks to Edward J. Sabol and ;;; Peter von der Ah\'e -(defconst mm-uu-forward-begin-line "^-+ \\(?:Start of \\)?Forwarded message") -(defconst mm-uu-forward-end-line "^-+ End of forwarded message") +(defconst mm-uu-forward-begin-line "^-+ \\(Start of \\)?Forwarded message") +(defconst mm-uu-forward-end-line "^-+ End \\(of \\)?forwarded message") (defvar mm-uu-begin-line nil) @@ -131,28 +131,19 @@ To disable dissecting shar codes, for instance, add (defun mm-uu-dissect () "Dissect the current buffer and return a list of uu handles." - (let (ct ctl cte charset text-start start-char end-char - type file-name end-line result text-plain-type - start-char-1 end-char-1 - (case-fold-search t)) + (let (text-start start-char end-char + type file-name end-line result text-plain-type + start-char-1 end-char-1 + (case-fold-search t)) (save-excursion (save-restriction (mail-narrow-to-head) - (when (and (mail-fetch-field "mime-version") - (setq ct (mail-fetch-field "content-type"))) - (setq cte (message-fetch-field "content-transfer-encoding" t) - ctl (ignore-errors (mail-header-parse-content-type ct)) - charset (and ctl (mail-content-type-get ctl 'charset))) - (if (stringp cte) - (setq cte (intern (downcase (mail-header-remove-whitespace - (mail-header-remove-comments - cte))))))) (goto-char (point-max))) (forward-line) + ;;; gnus-decoded is a fake charset, which means no further + ;;; decoding. (setq text-start (point) - text-plain-type (cons "text/plain" - (if charset - (list (cons 'charset charset))))) + text-plain-type '("text/plain" (charset . gnus-decoded))) (while (re-search-forward mm-uu-begin-line nil t) (setq start-char (match-beginning 0)) (setq type (cdr (assq (aref (match-string 0) 0) @@ -181,7 +172,7 @@ To disable dissecting shar codes, for instance, add (if (> start-char text-start) (push (mm-make-handle (mm-uu-copy-to-buffer text-start start-char) - text-plain-type cte) + text-plain-type) result)) (push (cond @@ -190,7 +181,7 @@ To disable dissecting shar codes, for instance, add '("application/postscript"))) ((eq type 'forward) (mm-make-handle (mm-uu-copy-to-buffer start-char-1 end-char-1) - '("message/rfc822"))) + '("message/rfc822" (charset . gnus-decoded)))) ((eq type 'uu) (mm-make-handle (mm-uu-copy-to-buffer start-char end-char) (list (or (and file-name @@ -222,7 +213,7 @@ To disable dissecting shar codes, for instance, add (if (> (point-max) (1+ text-start)) (push (mm-make-handle (mm-uu-copy-to-buffer text-start (point-max)) - text-plain-type cte) + text-plain-type) result)) (setq result (cons "multipart/mixed" (nreverse result)))) result))) @@ -231,10 +222,7 @@ To disable dissecting shar codes, for instance, add (defun mm-uu-test () "Check whether the current buffer contains uu stuffs." (save-excursion - (save-restriction - (mail-narrow-to-head) - (goto-char (point-max))) - (forward-line) + (goto-char (point-min)) (let (type end-line result (case-fold-search t)) (while (and mm-uu-begin-line diff --git a/lisp/mm-view.el b/lisp/mm-view.el index 19e017a..7a4851a 100644 --- a/lisp/mm-view.el +++ b/lisp/mm-view.el @@ -31,7 +31,11 @@ (eval-and-compile (autoload 'gnus-article-prepare-display "gnus-art") (autoload 'vcard-parse-string "vcard") - (autoload 'vcard-format-string "vcard")) + (autoload 'vcard-format-string "vcard") + (autoload 'diff-mode "diff-mode")) + +;; Avoid byte compile warning. +(defvar gnus-article-mime-handles) ;;; ;;; Functions for displaying various formats inline @@ -81,10 +85,12 @@ (save-restriction (narrow-to-region b (point)) (goto-char (point-min)) - (if (or (re-search-forward - w3-meta-content-type-charset-regexp nil t) - (re-search-forward - w3-meta-charset-content-type-regexp nil t)) + (if (or (and (boundp 'w3-meta-content-type-charset-regexp) + (re-search-forward + w3-meta-content-type-charset-regexp nil t)) + (and (boundp 'w3-meta-charset-content-type-regexp) + (re-search-forward + w3-meta-charset-content-type-regexp nil t))) (setq charset (w3-coding-system-for-mime-charset (buffer-substring-no-properties (match-beginning 2) @@ -165,25 +171,43 @@ (defun mm-view-message () (mm-enable-multibyte) - (gnus-article-prepare-display) - (run-hooks 'gnus-article-decode-hook) + (let (handles) + (let (gnus-article-mime-handles) + ;; Double decode problem may happen. See mm-inline-message. + (run-hooks 'gnus-article-decode-hook) + (gnus-article-prepare-display) + (setq handles gnus-article-mime-handles)) + (when handles + (setq gnus-article-mime-handles + (nconc gnus-article-mime-handles + (if (listp (car handles)) + handles (list handles)))))) (fundamental-mode) (goto-char (point-min))) (defun mm-inline-message (handle) (let ((b (point)) + (charset (mail-content-type-get + (mm-handle-type handle) 'charset)) gnus-displaying-mime handles) (save-excursion (save-restriction (narrow-to-region b b) (mm-insert-part handle) - (let (gnus-article-mime-handles) + (let (gnus-article-mime-handles + (gnus-newsgroup-charset (or charset gnus-newsgroup-charset))) (run-hooks 'gnus-article-decode-hook) (gnus-article-prepare-display) (setq handles gnus-article-mime-handles)) + (goto-char (point-max)) + (unless (bolp) + (insert "\n")) + (insert "----------\n\n") (when handles (setq gnus-article-mime-handles - (append gnus-article-mime-handles handles))) + (nconc gnus-article-mime-handles + (if (listp (car handles)) + handles (list handles))))) (mm-handle-set-undisplayer handle `(lambda () @@ -196,6 +220,20 @@ '(background background-pixmap foreground))) (delete-region ,(point-min-marker) ,(point-max-marker))))))))) +(defun mm-display-patch-inline (handle) + (let (text) + (with-temp-buffer + (mm-insert-part handle) + (diff-mode) + (font-lock-fontify-buffer) + (when (fboundp 'extent-list) + (map-extents (lambda (ext ignored) + (set-extent-property ext 'duplicable t) + nil) + nil nil nil nil nil 'text-prop)) + (setq text (buffer-string))) + (mm-insert-inline handle text))) + (provide 'mm-view) ;; mm-view.el ends here diff --git a/lisp/mmgnus.el b/lisp/mmgnus.el index a2f5d2c..3493ee1 100644 --- a/lisp/mmgnus.el +++ b/lisp/mmgnus.el @@ -26,32 +26,62 @@ (require 'mmbuffer) -(mm-define-backend gnus (generic)) - -(mm-define-method entity-buffer ((entity gnus)) - ;; (if (with-current-buffer gnus-summary-buffer - ;; (eq gnus-current-article (mail-header-number entity))) - ;; ...) - (unless (mime-entity-header-start-internal entity) - (set-buffer gnus-original-article-buffer) - (mime-entity-set-header-start-internal entity (point-min)) - (mime-entity-set-body-end-internal entity (point-max)) - (goto-char (point-min)) - (if (re-search-forward "^$" nil t) - (progn - (mime-entity-set-header-end-internal entity (match-end 0)) - (mime-entity-set-body-start-internal - entity - (if (= (mime-entity-header-end-internal entity) - (mime-entity-body-end-internal entity)) - (mime-entity-body-end-internal entity) - (1+ (mime-entity-header-end-internal entity)) - )) - ) - (mime-entity-set-header-end-internal entity (point-min)) - (mime-entity-set-body-start-internal entity (point-min)) - )) - gnus-original-article-buffer) +(luna-define-class mime-gnus-entity (mime-buffer-entity) + (number + subject from date id references chars lines xref extra)) + +(luna-define-internal-accessors 'mime-gnus-entity) + +(luna-define-method initialize-instance ((entity mime-gnus-entity) + &rest init-args) + (apply (car (luna-class-find-functions + (luna-find-class 'standard-object) + 'initialize-instance)) + entity init-args) + ) + +;; (luna-define-method mime-entity-fetch-field ((entity mime-gnus-entity) +;; field-name) +;; (or (funcall (car (luna-class-find-functions +;; (luna-find-class 'mime-entity) +;; 'mime-entity-fetch-field)) +;; entity field-name) +;; (with-current-buffer gnus-original-article-buffer +;; (let ((ret (std11-field-body field-name))) +;; (when ret +;; (or (symbolp field-name) +;; (setq field-name +;; (intern (capitalize (capitalize field-name))))) +;; (mime-entity-set-original-header-internal +;; entity +;; (put-alist field-name ret +;; (mime-entity-original-header-internal entity))) +;; ret))))) + +;; (luna-define-method mime-entity-buffer ((entity mime-gnus-entity)) +;; ;; (if (with-current-buffer gnus-summary-buffer +;; ;; (eq gnus-current-article (mail-header-number entity))) +;; ;; ...) +;; (unless (mime-buffer-entity-header-end-internal entity) +;; (set-buffer gnus-original-article-buffer) +;; (mime-buffer-entity-set-header-start-internal entity (point-min)) +;; (mime-buffer-entity-set-body-end-internal entity (point-max)) +;; (goto-char (point-min)) +;; (if (re-search-forward "^$" nil t) +;; (progn +;; (mime-buffer-entity-set-header-end-internal entity (match-end 0)) +;; (mime-buffer-entity-set-body-start-internal +;; entity +;; (if (= (mime-buffer-entity-header-end-internal entity) +;; (mime-buffer-entity-body-end-internal entity)) +;; (mime-buffer-entity-body-end-internal entity) +;; (1+ (mime-buffer-entity-header-end-internal entity)) +;; )) +;; ) +;; (mime-buffer-entity-set-header-end-internal entity (point-min)) +;; (mime-buffer-entity-set-body-start-internal entity (point-min)) +;; )) +;; gnus-original-article-buffer) ;;; @ end diff --git a/lisp/mml.el b/lisp/mml.el index 286c8e4..e84e955 100644 --- a/lisp/mml.el +++ b/lisp/mml.el @@ -31,6 +31,19 @@ (eval-and-compile (autoload 'message-make-message-id "message")) +(defvar mml-generate-multipart-alist + '(("signed" . rfc2015-generate-signed-multipart) + ("encrypted" . rfc2015-generate-encrypted-multipart)) + "*Alist of multipart generation functions. + +Each entry has the form (NAME . FUNCTION), where +NAME: is a string containing the name of the part (without the +leading \"/multipart/\"), +FUNCTION: is a Lisp function which is called to generate the part. + +The Lisp function has to supply the appropriate MIME headers and the +contents of this part.") + (defvar mml-syntax-table (let ((table (copy-syntax-table emacs-lisp-mode-syntax-table))) (modify-syntax-entry ?\\ "/" table) @@ -44,6 +57,13 @@ (modify-syntax-entry ?\' " " table) table)) +(defvar mml-boundary-function 'mml-make-boundary + "A function called to suggest a boundary. +The function may be called several times, and should try to make a new +suggestion each time. The function is called with one parameter, +which is a number that says how many times the function has been +called for this message.") + (defun mml-parse () "Parse the current buffer as an MML document." (goto-char (point-min)) @@ -229,7 +249,8 @@ (insert-buffer-substring (cdr (assq 'buffer cont)))) ((and (setq filename (cdr (assq 'filename cont))) (not (equal (cdr (assq 'nofile cont)) "yes"))) - (mm-insert-file-contents filename)) + (let ((coding-system-for-read mm-binary-coding-system)) + (mm-insert-file-contents filename nil nil nil nil t))) (t (insert (cdr (assq 'contents cont))))) (setq encoding (mm-encode-buffer type) @@ -271,22 +292,27 @@ (insert (or (cdr (assq 'contents cont)))) (insert "\n")) ((eq (car cont) 'multipart) - (let ((mml-boundary (mml-compute-boundary cont))) - (insert (format "Content-Type: multipart/%s; boundary=\"%s\"\n" - (or (cdr (assq 'type cont)) "mixed") - mml-boundary)) - (insert "\n") - (setq cont (cddr cont)) - (while cont - (insert "\n--" mml-boundary "\n") - (mml-generate-mime-1 (pop cont))) - (insert "\n--" mml-boundary "--\n"))) + (let* ((type (or (cdr (assq 'type cont)) "mixed")) + (handler (assoc type mml-generate-multipart-alist))) + (if handler + (funcall (cdr handler) cont) + ;; No specific handler. Use default one. + (let ((mml-boundary (mml-compute-boundary cont))) + (insert (format "Content-Type: multipart/%s; boundary=\"%s\"\n" + type mml-boundary)) + (insert "\n") + (setq cont (cddr cont)) + (while cont + (insert "\n--" mml-boundary "\n") + (mml-generate-mime-1 (pop cont))) + (insert "\n--" mml-boundary "--\n"))))) (t (error "Invalid element: %S" cont)))) (defun mml-compute-boundary (cont) "Return a unique boundary that does not exist in CONT." - (let ((mml-boundary (mml-make-boundary))) + (let ((mml-boundary (funcall mml-boundary-function + (incf mml-multipart-number)))) ;; This function tries again and again until it has found ;; a unique boundary. (while (not (catch 'not-unique @@ -309,16 +335,17 @@ (goto-char (point-min)) (when (re-search-forward (concat "^--" (regexp-quote mml-boundary)) nil t) - (setq mml-boundary (mml-make-boundary)) + (setq mml-boundary (funcall mml-boundary-function + (incf mml-multipart-number))) (throw 'not-unique nil)))) ((eq (car cont) 'multipart) (mapcar 'mml-compute-boundary-1 (cddr cont)))) t)) -(defun mml-make-boundary () - (concat (make-string (% (incf mml-multipart-number) 60) ?=) - (if (> mml-multipart-number 17) - (format "%x" mml-multipart-number) +(defun mml-make-boundary (number) + (concat (make-string (% number 60) ?=) + (if (> number 17) + (format "%x" number) "") mml-base-boundary)) @@ -430,7 +457,7 @@ "Translate the current buffer from MML to MIME." (message-encode-message-body) (save-restriction - (message-narrow-to-headers) + (message-narrow-to-headers-or-head) (mail-encode-encoded-word-buffer))) (defun mml-insert-mime (handle &optional no-markup) @@ -449,7 +476,10 @@ (mapcar 'mml-insert-mime (cdr handle)) (insert "<#/multipart>\n")) (textp - (mm-insert-part handle) + (let ((text (mm-get-part handle)) + (charset (mail-content-type-get + (mm-handle-type handle) 'charset))) + (insert (mm-decode-string text charset))) (goto-char (point-max))) (t (insert "<#/part>\n"))))) @@ -499,6 +529,7 @@ (define-key map "p" 'mml-insert-part) (define-key map "v" 'mml-validate) (define-key map "P" 'mml-preview) + (define-key map "n" 'mml-narrow-to-part) (define-key main "\M-m" map) main)) @@ -512,6 +543,7 @@ ("Insert" ["Multipart" mml-insert-multipart t] ["Part" mml-insert-part t]) + ["Narrow" mml-narrow-to-part t] ["Quote" mml-quote-region t] ["Validate" mml-validate t] ["Preview" mml-preview t])) @@ -605,7 +637,8 @@ ;; Quote parts. (while (re-search-forward "<#/?!*\\(multipart\\|part\\|external\\)" nil t) - (goto-char (match-beginning 1)) + ;; Insert ! after the #. + (goto-char (+ (match-beginning 0) 2)) (insert "!"))))) (defun mml-insert-tag (name &rest plist) @@ -684,6 +717,9 @@ If RAW, don't highlight the article." "*MIME preview of ") (buffer-name)))) (erase-buffer) (insert-buffer buf) + (if (re-search-forward + (concat "^" (regexp-quote mail-header-separator) "\n") nil t) + (replace-match "\n")) (mml-to-mime) (unless raw (run-hooks 'gnus-article-decode-hook) diff --git a/lisp/nnagent.el b/lisp/nnagent.el index 9d94eb8..ed62850 100644 --- a/lisp/nnagent.el +++ b/lisp/nnagent.el @@ -114,7 +114,12 @@ (gnus-request-accept-article "nndraft:queue" nil t t)) (deffoo nnagent-request-set-mark (group action server) - action) + (with-temp-buffer + (insert (format "(%s-request-set-mark \"%s\" '%s \"%s\")\n" + (nth 0 gnus-command-method) group action + (or server (nth 1 gnus-command-method)))) + (append-to-file (point-min) (point-max) (gnus-agent-lib-file "flags"))) + nil) ;; Use nnml functions for just about everything. (nnoo-import nnagent diff --git a/lisp/nnbabyl.el b/lisp/nnbabyl.el index f26fe4f..3d5c5b9 100644 --- a/lisp/nnbabyl.el +++ b/lisp/nnbabyl.el @@ -29,6 +29,7 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'nnheader) (condition-case nil (require 'rmail) @@ -36,7 +37,6 @@ 5 "Ignore rmail errors from this file, you don't have rmail"))) (require 'nnmail) (require 'nnoo) -(eval-when-compile (require 'cl)) (nnoo-declare nnbabyl) diff --git a/lisp/nndoc.el b/lisp/nndoc.el index 8cd81b1..180d03c 100644 --- a/lisp/nndoc.el +++ b/lisp/nndoc.el @@ -26,12 +26,12 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'nnheader) (require 'message) (require 'nnmail) (require 'nnoo) (require 'gnus-util) -(eval-when-compile (require 'cl)) (nnoo-declare nndoc) @@ -83,6 +83,12 @@ from the document.") (head-end . "^\t") (generate-head-function . nndoc-generate-clari-briefs-head) (article-transform-function . nndoc-transform-clari-briefs)) + (mime-digest + (article-begin . "") + (head-end . "^ ?$") + (body-end . "") + (file-end . "") + (subtype digest guess)) (mime-parts (generate-head-function . nndoc-generate-mime-parts-head) (article-transform-function . nndoc-transform-mime-parts)) @@ -507,6 +513,28 @@ from the document.") (insert "From: " "clari@clari.net (" (or from "unknown") ")" "\nSubject: " (or subject "(no subject)") "\n"))) + +(defun nndoc-mime-digest-type-p () + (let ((case-fold-search t) + boundary-id b-delimiter entry) + (when (and + (re-search-forward + (concat "^Content-Type: *multipart/digest;[ \t\n]*[ \t]" + "boundary=\"?\\([^\"\n]*[^\" \t\n]\\)") + nil t) + (match-beginning 1)) + (setq boundary-id (match-string 1) + b-delimiter (concat "\n--" boundary-id "[\n \t]+")) + (setq entry (assq 'mime-digest nndoc-type-alist)) + (setcdr entry + (list + (cons 'head-end "^ ?$") + (cons 'body-begin "^ ?\n") + (cons 'article-begin b-delimiter) + (cons 'body-end-function 'nndoc-digest-body-end) + (cons 'file-end (concat "\n--" boundary-id "--[ \t]*$")))) + t))) + (defun nndoc-standard-digest-type-p () (when (and (re-search-forward (concat "^" (make-string 70 ?-) "\n\n") nil t) (re-search-forward diff --git a/lisp/nndraft.el b/lisp/nndraft.el index 2866da5..0e765fc 100644 --- a/lisp/nndraft.el +++ b/lisp/nndraft.el @@ -25,13 +25,13 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'nnheader) (require 'nnmail) (require 'gnus-start) (require 'nnmh) (require 'nnoo) (eval-when-compile - (require 'cl) ;; This is just to shut up the byte-compiler. (fset 'nndraft-request-group 'ignore)) @@ -177,8 +177,8 @@ (dolist (backup (let ((kept-new-versions 1) (kept-old-versions 0)) - (cdr (find-backup-file-name - (nndraft-article-filename article))))) + (find-backup-file-name + (nndraft-article-filename article)))) (when (file-exists-p backup) (funcall nnmail-delete-file-function backup))))) res)) diff --git a/lisp/nneething.el b/lisp/nneething.el index 2c6fb78..3caee7b 100644 --- a/lisp/nneething.el +++ b/lisp/nneething.el @@ -27,7 +27,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'nnheader) (require 'nnmail) (require 'nnoo) diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index 1937780..3146e54 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -121,8 +121,9 @@ If NIL, NNFOLDER-FILE-CODING-SYSTEM is used.") (set-buffer nnfolder-current-buffer) (when (nnfolder-goto-article article) (setq start (point)) - (search-forward "\n\n" nil t) - (setq stop (1- (point))) + (setq stop (if (search-forward "\n\n" nil t) + (1- (point)) + (point-max))) (set-buffer nntp-server-buffer) (insert (format "221 %d Article retrieved.\n" article)) (insert-buffer-substring nnfolder-current-buffer start stop) @@ -297,39 +298,66 @@ If NIL, NNFOLDER-FILE-CODING-SYSTEM is used.") (let ((nnmail-file-coding-system nnfolder-file-coding-system)) (nnmail-find-file nnfolder-newsgroups-file)))) +;; Return a list consisting of all article numbers existing in the +;; current folder. + +(defun nnfolder-existing-articles () + (save-excursion + (when nnfolder-current-buffer + (set-buffer nnfolder-current-buffer) + (goto-char (point-min)) + (let ((marker (concat "\n" nnfolder-article-marker)) + (number "[0-9]+") + numbers) + + (while (and (search-forward marker nil t) + (re-search-forward number nil t)) + (let ((newnum (string-to-number (match-string 0)))) + (if (nnmail-within-headers-p) + (push newnum numbers)))) + numbers)))) + (deffoo nnfolder-request-expire-articles (articles newsgroup &optional server force) (nnfolder-possibly-change-group newsgroup server) (let* ((is-old t) - rest) + ;; The articles we have deleted so far. + (deleted-articles nil) + ;; The articles that really exist and will + ;; be expired if they are old enough. + (maybe-expirable + (gnus-intersection articles (nnfolder-existing-articles)))) (nnmail-activate 'nnfolder) (save-excursion (set-buffer nnfolder-current-buffer) - (while (and articles is-old) + ;; Since messages are sorted in arrival order and expired in the + ;; same order, we can stop as soon as we find a message that is + ;; too old. + (while (and maybe-expirable is-old) (goto-char (point-min)) - (when (and (nnfolder-goto-article (car articles)) + (when (and (nnfolder-goto-article (car maybe-expirable)) (search-forward (concat "\n" nnfolder-article-marker) nil t)) (forward-sexp) - (if (setq is-old + (when (setq is-old (nnmail-expired-article-p newsgroup (buffer-substring (point) (progn (end-of-line) (point))) force nnfolder-inhibit-expiry)) - (progn (nnheader-message 5 "Deleting article %d..." - (car articles) newsgroup) - (nnfolder-delete-mail)) - (push (car articles) rest))) - (setq articles (cdr articles))) + (car maybe-expirable) newsgroup) + (nnfolder-delete-mail) + ;; Must remember which articles were actually deleted + (push (car maybe-expirable) deleted-articles))) + (setq maybe-expirable (cdr maybe-expirable))) (unless nnfolder-inhibit-expiry (nnheader-message 5 "Deleting articles...done")) (nnfolder-save-buffer) (nnfolder-adjust-min-active newsgroup) (nnfolder-save-active nnfolder-group-alist nnfolder-active-file) - (nconc rest articles)))) + (gnus-sorted-complement articles (nreverse deleted-articles))))) (deffoo nnfolder-request-move-article (article group server accept-form &optional last) @@ -345,7 +373,8 @@ If NIL, NNFOLDER-FILE-CODING-SYSTEM is used.") (goto-char (point-min)) (while (re-search-forward (concat "^" nnfolder-article-marker) - (save-excursion (search-forward "\n\n" nil t) (point)) t) + (save-excursion (and (search-forward "\n\n" nil t) (point))) + t) (delete-region (progn (beginning-of-line) (point)) (progn (forward-line 1) (point)))) (setq result (eval accept-form)) @@ -377,8 +406,9 @@ If NIL, NNFOLDER-FILE-CODING-SYSTEM is used.") (save-excursion (set-buffer buf) (goto-char (point-min)) - (search-forward "\n\n" nil t) - (forward-line -1) + (if (search-forward "\n\n" nil t) + (forward-line -1) + (goto-char (point-max))) (while (re-search-backward (concat "^" nnfolder-article-marker) nil t) (delete-region (point) (progn (forward-line 1) (point)))) (when nnmail-cache-accepted-message-ids @@ -551,51 +581,33 @@ deleted. Point is left where the deleted region was." ;; Change group. (when (and group (not (equal group nnfolder-current-group))) - (let ((pathname-coding-system nnmail-pathname-coding-system)) - (nnmail-activate 'nnfolder) - (when (and (not (assoc group nnfolder-group-alist)) - (not (file-exists-p - (nnfolder-group-pathname group)))) - ;; The group doesn't exist, so we create a new entry for it. - (push (list group (cons 1 0)) nnfolder-group-alist) - (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)) - - (if dont-check - (setq nnfolder-current-group group - nnfolder-current-buffer nil) - (let (inf file) - ;; If we have to change groups, see if we don't already have the - ;; folder in memory. If we do, verify the modtime and destroy - ;; the folder if needed so we can rescan it. - (setq nnfolder-current-buffer - (nth 1 (assoc group nnfolder-buffer-alist))) - - ;; If the buffer is not live, make sure it isn't in the alist. If it - ;; is live, verify that nobody else has touched the file since last - ;; time. - (when (and nnfolder-current-buffer - (not (gnus-buffer-live-p nnfolder-current-buffer))) - (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist) - nnfolder-current-buffer nil)) - - (setq nnfolder-current-group group) - - (when (or (not nnfolder-current-buffer) - (not (verify-visited-file-modtime - nnfolder-current-buffer))) - (save-excursion - (setq file (nnfolder-group-pathname group)) - ;; See whether we need to create the new file. - (unless (file-exists-p file) - (gnus-make-directory (file-name-directory file)) - (let ((nnmail-file-coding-system - (or nnfolder-file-coding-system-for-write - nnfolder-file-coding-system))) - (nnmail-write-region 1 1 file t 'nomesg))) - (when (setq nnfolder-current-buffer (nnfolder-read-folder group)) - (set-buffer nnfolder-current-buffer) - (push (list group nnfolder-current-buffer) - nnfolder-buffer-alist))))))))) + (nnmail-activate 'nnfolder) + (if dont-check + (setq nnfolder-current-group group + nnfolder-current-buffer nil) + ;; If we have to change groups, see if we don't already have the + ;; folder in memory. If we do, verify the modtime and destroy + ;; the folder if needed so we can rescan it. + (setq nnfolder-current-buffer + (nth 1 (assoc group nnfolder-buffer-alist))) + + ;; If the buffer is not live, make sure it isn't in the alist. If it + ;; is live, verify that nobody else has touched the file since last + ;; time. + (when (and nnfolder-current-buffer + (not (gnus-buffer-live-p nnfolder-current-buffer))) + (setq nnfolder-current-buffer nil)) + + (setq nnfolder-current-group group) + + (when (or (not nnfolder-current-buffer) + (not (verify-visited-file-modtime + nnfolder-current-buffer))) + (save-excursion + (when (setq nnfolder-current-buffer (nnfolder-read-folder group)) + (set-buffer nnfolder-current-buffer) + (push (list group nnfolder-current-buffer) + nnfolder-buffer-alist))))))) (defun nnfolder-save-mail (group-art-list) "Called narrowed to an article." @@ -624,8 +636,9 @@ deleted. Point is left where the deleted region was." (while (setq group-art (pop group-art-list)) ;; Kill any previous newsgroup markers. (goto-char (point-min)) - (search-forward "\n\n" nil t) - (forward-line -1) + (if (search-forward "\n\n" nil t) + (forward-line -1) + (goto-char (point-max))) (while (search-backward (concat "\n" nnfolder-article-marker) nil t) (delete-region (1+ (point)) (progn (forward-line 2) (point)))) @@ -654,10 +667,12 @@ deleted. Point is left where the deleted region was." (defun nnfolder-insert-newsgroup-line (group-art) (save-excursion (goto-char (point-min)) - (when (search-forward "\n\n" nil t) - (forward-char -1) - (insert (format (concat nnfolder-article-marker "%d %s\n") - (cdr group-art) (current-time-string)))))) + (unless (search-forward "\n\n" nil t) + (goto-char (point-max)) + (insert "\n")) + (forward-char -1) + (insert (format (concat nnfolder-article-marker "%d %s\n") + (cdr group-art) (current-time-string))))) (defun nnfolder-active-number (group) ;; Find the next article number in GROUP. @@ -840,9 +855,10 @@ This command does not work if you use short group names." (when (buffer-modified-p) (run-hooks 'nnfolder-save-buffer-hook) (gnus-make-directory (file-name-directory (buffer-file-name))) - (let ((coding-system-for-write - (or nnfolder-file-coding-system-for-write - nnfolder-file-coding-system))) + (let* ((coding-system-for-write + (or nnfolder-file-coding-system-for-write + nnfolder-file-coding-system)) + (output-coding-system coding-system-for-write)) (save-buffer)))) (defun nnfolder-save-active (group-alist active-file) diff --git a/lisp/nnheader.el b/lisp/nnheader.el index 74a2633..24a31ae 100644 --- a/lisp/nnheader.el +++ b/lisp/nnheader.el @@ -29,7 +29,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'mail-utils) (require 'mime) @@ -68,6 +67,8 @@ on your system, you could say something like: ;; (That next-to-last entry is defined as "misc" in the NOV format, ;; but Gnus uses it for xrefs.) +(require 'mmgnus) + (defmacro mail-header-number (header) "Return article number in HEADER." `(mime-entity-location-internal ,header)) @@ -76,86 +77,85 @@ on your system, you could say something like: "Set article number of HEADER to NUMBER." `(mime-entity-set-location-internal ,header ,number)) -(defalias 'mail-header-subject 'mime-entity-decoded-subject-internal) -(defalias 'mail-header-set-subject 'mime-entity-set-decoded-subject-internal) +(defalias 'mail-header-subject 'mime-gnus-entity-subject-internal) +(defalias 'mail-header-set-subject 'mime-gnus-entity-set-subject-internal) -(defalias 'mail-header-from 'mime-entity-decoded-from-internal) -(defalias 'mail-header-set-from 'mime-entity-set-decoded-from-internal) +(defalias 'mail-header-from 'mime-gnus-entity-from-internal) +(defalias 'mail-header-set-from 'mime-gnus-entity-set-from-internal) -(defalias 'mail-header-date 'mime-entity-date-internal) -(defalias 'mail-header-set-date 'mime-entity-set-date-internal) +(defalias 'mail-header-date 'mime-gnus-entity-date-internal) +(defalias 'mail-header-set-date 'mime-gnus-entity-set-date-internal) -(defalias 'mail-header-message-id 'mime-entity-message-id-internal) -(defalias 'mail-header-id 'mime-entity-message-id-internal) -(defalias 'mail-header-set-message-id 'mime-entity-set-message-id-internal) -(defalias 'mail-header-set-id 'mime-entity-set-message-id-internal) +(defalias 'mail-header-message-id 'mime-gnus-entity-id-internal) +(defalias 'mail-header-id 'mime-gnus-entity-id-internal) +(defalias 'mail-header-set-message-id 'mime-gnus-entity-set-id-internal) +(defalias 'mail-header-set-id 'mime-gnus-entity-set-id-internal) -(defalias 'mail-header-references 'mime-entity-references-internal) -(defalias 'mail-header-set-references 'mime-entity-set-references-internal) +(defalias 'mail-header-references 'mime-gnus-entity-references-internal) +(defalias 'mail-header-set-references + 'mime-gnus-entity-set-references-internal) -(defalias 'mail-header-chars 'mime-entity-chars-internal) -(defalias 'mail-header-set-chars 'mime-entity-set-chars-internal) +(defalias 'mail-header-chars 'mime-gnus-entity-chars-internal) +(defalias 'mail-header-set-chars 'mime-gnus-entity-set-chars-internal) -(defalias 'mail-header-lines 'mime-entity-lines-internal) -(defalias 'mail-header-set-lines 'mime-entity-set-lines-internal) +(defalias 'mail-header-lines 'mime-gnus-entity-lines-internal) +(defalias 'mail-header-set-lines 'mime-gnus-entity-set-lines-internal) -(defalias 'mail-header-xref 'mime-entity-xref-internal) -(defalias 'mail-header-set-xref 'mime-entity-set-xref-internal) +(defalias 'mail-header-xref 'mime-gnus-entity-xref-internal) +(defalias 'mail-header-set-xref 'mime-gnus-entity-set-xref-internal) (defalias 'nnheader-decode-subject (mime-find-field-decoder 'Subject 'nov)) (defalias 'nnheader-decode-from (mime-find-field-decoder 'From 'nov)) -(defalias 'mail-header-extra 'ignore) -(defalias 'mail-header-set-extra 'ignore) +(defalias 'mail-header-extra 'mime-gnus-entity-extra-internal) +(defalias 'mail-header-set-extra 'mime-gnus-entity-set-extra-internal) -(defsubst nnheader-decode-field-body (field-body field-name - &optional mode max-column) +(defun nnheader-decode-field-body (field-body field-name + &optional mode max-column) (mime-decode-field-body field-body - (if (stringp field-name) - (intern (capitalize field-name)) - field-name) - mode max-column)) - -(defsubst make-full-mail-header - (&optional number subject from date id references chars lines xref extra) + (if (stringp field-name) + (intern (capitalize field-name)) + field-name) + mode max-column)) + +(defsubst make-full-mail-header (&optional number subject from date id + references chars lines xref + extra) "Create a new mail header structure initialized with the parameters given." - (make-mime-entity-internal - 'gnus number - nil - nil nil nil - (if subject - (nnheader-decode-subject subject) - ) - (if from - (nnheader-decode-from from) - ) - date id references - chars lines xref - (list (cons 'Subject subject) - (cons 'From from)) - nil nil nil nil nil nil -;; extra - )) + (luna-make-entity (mm-expand-class-name 'gnus) + :location number + :subject (if subject + (nnheader-decode-subject subject)) + :from (if from + (nnheader-decode-from from)) + :date date + :id id + :references references + :chars chars + :lines lines + :xref xref + :original-header (list (cons 'Subject subject) + (cons 'From from)) + :extra extra)) (defsubst make-full-mail-header-from-decoded-header (&optional number subject from date id references chars lines xref extra) "Create a new mail header structure initialized with the parameters given." - (make-mime-entity-internal - 'gnus number - nil - nil nil nil - subject - from - date id references - chars lines xref - nil - nil nil nil nil nil nil -;; extra - )) - -(defun make-mail-header (&optional init) + (luna-make-entity (mm-expand-class-name 'gnus) + :location number + :subject subject + :from from + :date date + :id id + :references references + :chars chars + :lines lines + :xref xref + :extra extra)) + +(defsubst make-mail-header (&optional init) "Create a new mail header structure initialized with INIT." (make-full-mail-header init init init init init init init init init init)) @@ -362,6 +362,17 @@ on your system, you could say something like: (pop extra)))) (insert "\n")) +(defun nnheader-insert-header (header) + (insert + "Subject: " (or (mail-header-subject header) "(none)") "\n" + "From: " (or (mail-header-from header) "(nobody)") "\n" + "Date: " (or (mail-header-date header) "") "\n" + "Message-ID: " (or (mail-header-id header) (nnmail-message-id)) "\n" + "References: " (or (mail-header-references header) "") "\n" + "Lines: ") + (princ (or (mail-header-lines header) 0) (current-buffer)) + (insert "\n\n")) + (defun nnheader-insert-article-line (article) (goto-char (point-min)) (insert "220 ") @@ -853,6 +864,21 @@ without formatting." (setq idx (1+ idx))) string)) +(defun nnheader-replace-duplicate-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) prev i) + ;; Replace all occurrences of FROM with TO. + (while (< idx len) + (setq i (aref string idx)) + (when (and (eq prev from) (= i from)) + (aset string (1- idx) to) + (aset string idx to)) + (setq prev i) + (setq idx (1+ idx))) + string)) + (defun nnheader-file-to-group (file &optional top) "Return a group name based on FILE and TOP." (nnheader-replace-chars-in-string diff --git a/lisp/nnimap.el b/lisp/nnimap.el index c8c57f9..9f027fb 100644 --- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -59,13 +59,12 @@ ;;; Code: -(eval-and-compile - (require 'imap)) +(eval-when-compile (require 'cl)) +(eval-and-compile (require 'imap)) (require 'nnoo) (require 'nnmail) (require 'nnheader) -(require 'mm-util) (require 'gnus) (require 'gnus-async) (require 'gnus-range) @@ -256,7 +255,7 @@ restrict visible folders.") ;; Internal variables: -(defvar nnimap-debug "*nnimap-debug*") +(defvar nnimap-debug nil) ;; "*nnimap-debug*") (defvar nnimap-current-move-server nil) (defvar nnimap-current-move-group nil) (defvar nnimap-current-move-article nil) @@ -370,35 +369,37 @@ If EXAMINE is non-nil the group is selected read-only." (with-current-buffer nntp-server-buffer (nnheader-insert-nov (with-current-buffer nnimap-server-buffer - (vector imap-current-message - (nnimap-replace-whitespace - (imap-message-envelope-subject imap-current-message)) - (nnimap-replace-whitespace - (imap-envelope-from - (car-safe (imap-message-envelope-from - imap-current-message)))) - (nnimap-replace-whitespace - (imap-message-envelope-date imap-current-message)) - (nnimap-replace-whitespace - (imap-message-envelope-message-id imap-current-message)) - (nnimap-replace-whitespace - (let ((str (if (imap-capability 'IMAP4rev1) - (nth 2 (assoc - "HEADER.FIELDS REFERENCES" - (imap-message-get - imap-current-message 'BODYDETAIL))) - (imap-message-get imap-current-message - 'RFC822.HEADER)))) - (if (> (length str) (length "References: ")) - (substring str (length "References: ")) - (if (and (setq str (imap-message-envelope-in-reply-to - imap-current-message)) - (string-match "<[^>]+>" str)) - (substring str (match-beginning 0) (match-end 0)))))) - (imap-message-get imap-current-message 'RFC822.SIZE) - (imap-body-lines (imap-message-body imap-current-message)) - nil ;; xref - nil))))) ;; extra-headers + (make-full-mail-header + imap-current-message + (or (nnimap-replace-whitespace + (imap-message-envelope-subject imap-current-message)) + "(none)") + (nnimap-replace-whitespace + (imap-envelope-from + (car-safe (imap-message-envelope-from + imap-current-message)))) + (nnimap-replace-whitespace + (imap-message-envelope-date imap-current-message)) + (nnimap-replace-whitespace + (imap-message-envelope-message-id imap-current-message)) + (nnimap-replace-whitespace + (let ((str (if (imap-capability 'IMAP4rev1) + (nth 2 (assoc + "HEADER.FIELDS REFERENCES" + (imap-message-get + imap-current-message 'BODYDETAIL))) + (imap-message-get imap-current-message + 'RFC822.HEADER)))) + (if (> (length str) (length "References: ")) + (substring str (length "References: ")) + (if (and (setq str (imap-message-envelope-in-reply-to + imap-current-message)) + (string-match "<[^>]+>" str)) + (substring str (match-beginning 0) (match-end 0)))))) + (imap-message-get imap-current-message 'RFC822.SIZE) + (imap-body-lines (imap-message-body imap-current-message)) + nil ;; xref + nil))))) ;; extra-headers (defun nnimap-retrieve-which-headers (articles fetch-old) "Get a range of articles to fetch based on ARTICLES and FETCH-OLD." @@ -431,7 +432,7 @@ If EXAMINE is non-nil the group is selected read-only." (if (or nnmail-use-long-file-names (file-exists-p (concat dir file))) (concat dir file) - (concat dir (mm-encode-coding-string + (concat dir (encode-coding-string (nnheader-replace-chars-in-string file ?. ?/) nnmail-pathname-coding-system))))) @@ -439,7 +440,7 @@ If EXAMINE is non-nil the group is selected read-only." (with-current-buffer nntp-server-buffer (let ((nov (nnimap-group-overview-filename group server))) (when (file-exists-p nov) - (mm-insert-file-contents nov) + (nnheader-insert-file-contents nov) (set-buffer-modified-p nil) (let ((min (progn (goto-char (point-min)) (when (not (eobp)) @@ -557,9 +558,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) - (if (null nnimap-server-buffer) - (error "this shouldn't happen")) - (or (imap-opened nnimap-server-buffer) + (or (and nnimap-server-buffer + (imap-opened nnimap-server-buffer)) (nnimap-open-connection server)))) (deffoo nnimap-server-opened (&optional server) @@ -937,12 +937,15 @@ function is generally only called when Gnus is shutting down." (erase-buffer) (dolist (pattern (nnimap-pattern-to-list-arguments nnimap-list-pattern)) - (dolist (mbx (imap-mailbox-lsub "*" (car pattern) nil + (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 (let ((mailboxes (imap-mailbox-get 'list-flags mbx + nnimap-server-buffer))) + (while (and mailboxes + (not (string-equal (downcase (car mailboxes)) + "\\noselect"))) + (pop mailboxes)) + mailboxes) ;; Escape SPC in mailboxes xxx relies on gnus internals (let ((info (nnimap-find-minmax-uid mbx 'examine))) (when info diff --git a/lisp/nnlistserv.el b/lisp/nnlistserv.el index e450dec..a226328 100644 --- a/lisp/nnlistserv.el +++ b/lisp/nnlistserv.el @@ -29,7 +29,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'nnoo) (require 'nnweb) diff --git a/lisp/nnmail.el b/lisp/nnmail.el index e742727..baa18b1 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -26,7 +26,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'nnheader) (require 'message) (require 'custom) @@ -37,6 +36,15 @@ (autoload 'gnus-error "gnus-util") (autoload 'gnus-buffer-live-p "gnus-util")) +(eval-when-compile (require 'static)) + +(static-condition-case nil + :symbol-for-testing-whether-colon-keyword-is-available-or-not + (void-variable + (defconst :user ':user) + (defconst :path ':path) + (defconst :predicate ':predicate))) + (defgroup nnmail nil "Reading mail with Gnus." :group 'gnus) @@ -461,6 +469,9 @@ parameter. It should return nil, `warn' or `delete'." "Make pathname for GROUP." (concat (let ((dir (file-name-as-directory (expand-file-name dir)))) + (setq group (nnheader-replace-duplicate-chars-in-string + (nnheader-replace-chars-in-string group ?/ ?_) + ?. ?_)) (setq group (nnheader-translate-file-chars group)) ;; If this directory exists, we use it directly. (if (or nnmail-use-long-file-names @@ -496,7 +507,8 @@ nn*-request-list should have been called before calling this function." (defun nnmail-save-active (group-assoc file-name) "Save GROUP-ASSOC in ACTIVE-FILE." - (let ((coding-system-for-write nnmail-active-file-coding-system)) + (let ((coding-system-for-write nnmail-active-file-coding-system) + (output-coding-system nnmail-active-file-coding-system)) (when file-name (with-temp-file file-name (nnmail-generate-active group-assoc))))) @@ -812,8 +824,8 @@ If SOURCE is a directory spec, try to return the group name component." ;; if there is no head-body delimiter, we search a bit manually. (while (and (looking-at "From \\|[^ \t]+:") (not (eobp))) - (forward-line 1) - (point)))) + (forward-line 1)) + (point))) ;; Find the Message-ID header. (goto-char (point-min)) (if (re-search-forward "^Message-ID:[ \t]*\\(<[^>]+>\\)" nil t) @@ -997,35 +1009,39 @@ Return the number of characters in the body." (let (lines chars) (save-excursion (goto-char (point-min)) - (when (search-forward "\n\n" nil t) - (setq chars (- (point-max) (point))) - (setq lines (count-lines (point) (point-max))) - (forward-char -1) - (save-excursion - (when (re-search-backward "^Lines: " nil t) - (delete-region (point) (progn (forward-line 1) (point))))) - (beginning-of-line) - (insert (format "Lines: %d\n" (max lines 0))) - chars)))) + (unless (search-forward "\n\n" nil t) + (goto-char (point-max)) + (insert "\n")) + (setq chars (- (point-max) (point))) + (setq lines (count-lines (point) (point-max))) + (forward-char -1) + (save-excursion + (when (re-search-backward "^Lines: " nil t) + (delete-region (point) (progn (forward-line 1) (point))))) + (beginning-of-line) + (insert (format "Lines: %d\n" (max lines 0))) + chars))) (defun nnmail-insert-xref (group-alist) "Insert an Xref line based on the (group . article) alist." (save-excursion (goto-char (point-min)) - (when (search-forward "\n\n" nil t) - (forward-char -1) - (when (re-search-backward "^Xref: " nil t) - (delete-region (match-beginning 0) - (progn (forward-line 1) (point)))) - (insert (format "Xref: %s" (system-name))) - (while group-alist - (insert (format " %s:%d" - (encode-coding-string - (caar group-alist) - nnmail-pathname-coding-system) - (cdar group-alist))) - (setq group-alist (cdr group-alist))) - (insert "\n")))) + (unless (search-forward "\n\n" nil t) + (goto-char (point-max)) + (insert "\n")) + (forward-char -1) + (when (re-search-backward "^Xref: " nil t) + (delete-region (match-beginning 0) + (progn (forward-line 1) (point)))) + (insert (format "Xref: %s" (system-name))) + (while group-alist + (insert (format " %s:%d" + (encode-coding-string + (caar group-alist) + nnmail-pathname-coding-system) + (cdar group-alist))) + (setq group-alist (cdr group-alist))) + (insert "\n"))) ;;; Message washing functions @@ -1038,11 +1054,11 @@ Return the number of characters in the body." (defun nnmail-remove-list-identifiers () "Remove list identifiers from Subject headers." (let ((regexp (if (stringp nnmail-list-identifiers) nnmail-list-identifiers - (mapconcat 'identity nnmail-list-identifiers "\\|")))) + (mapconcat 'identity nnmail-list-identifiers " *\\|")))) (when regexp (goto-char (point-min)) (when (re-search-forward - (concat "^Subject: +\\(Re: +\\)?\\(" regexp "\\) *") + (concat "^Subject: +\\(Re: +\\)?\\(" regexp " *\\)") nil t) (delete-region (match-beginning 2) (match-end 0)))))) @@ -1159,7 +1175,7 @@ See the documentation for the variable `nnmail-split-fancy' for documentation." (setq value (cdr (assq value nnmail-split-abbrev-alist)))) ;; Someone might want to do a \N sub on this match, so get the ;; correct match positions. - (re-search-backward value start-of-value)) + (re-search-backward (concat "\\<" value "\\>") start-of-value)) (dolist (sp (nnmail-split-it (car split-rest))) (unless (memq sp split-result) (push sp split-result)))))) @@ -1446,7 +1462,9 @@ See the documentation for the variable `nnmail-split-fancy' for documentation." (incf total new) (incf i)))) ;; If we did indeed read any incoming spools, we save all info. - (unless (zerop total) + (if (zerop total) + (nnheader-message 4 "%s: Reading incoming mail (no new mail)...done" + method (car source)) (nnmail-save-active (nnmail-get-value "%s-group-alist" method) (nnmail-get-value "%s-active-file" method)) @@ -1592,6 +1610,16 @@ See the documentation for the variable `nnmail-split-fancy' for documentation." his nil))) found)) +(defun nnmail-new-mail-numbers (group) + "Say how many articles has been incorporated to GROUP." + (let ((his (apply 'append nnmail-split-history)) + numbers) + (while his + (when (string= group (caar his)) + (push (cdar his) numbers)) + (setq his (cdr his))) + numbers)) + (defun nnmail-within-headers-p () "Check to see if point is within the headers of a unix mail message. Doesn't change point." diff --git a/lisp/nnmbox.el b/lisp/nnmbox.el index 2e077f3..2dd8311 100644 --- a/lisp/nnmbox.el +++ b/lisp/nnmbox.el @@ -24,11 +24,12 @@ ;;; Code: +(eval-when-compile (require 'cl)) +(eval-when-compile (require 'static)) (require 'nnheader) (require 'message) (require 'nnmail) (require 'nnoo) -(eval-when-compile (require 'cl)) (nnoo-declare nnmbox) @@ -188,11 +189,18 @@ (1+ (- (cdr active) (car active))) (car active) (cdr active) group))))) -(defun nnmbox-save-buffer () - (let ((coding-system-for-write - (or nnmbox-file-coding-system-for-write - nnmbox-file-coding-system))) - (save-buffer))) +(static-if (boundp 'MULE) + (defun nnmbox-save-buffer () + (let ((output-coding-system + (or nnmbox-file-coding-system-for-write + nnmbox-file-coding-system))) + (save-buffer))) + (defun nnmbox-save-buffer () + (let ((coding-system-for-write + (or nnmbox-file-coding-system-for-write + nnmbox-file-coding-system))) + (save-buffer))) + ) (defun nnmbox-save-active (group-alist active-file) (let ((nnmail-active-file-coding-system diff --git a/lisp/nnmh.el b/lisp/nnmh.el index 6ee74d7..37415e5 100644 --- a/lisp/nnmh.el +++ b/lisp/nnmh.el @@ -31,11 +31,11 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'nnheader) (require 'nnmail) (require 'gnus-start) (require 'nnoo) -(eval-when-compile (require 'cl)) (nnoo-declare nnmh) @@ -480,7 +480,8 @@ "Compute the next article number in GROUP." (let ((active (cadr (assoc group nnmh-group-alist))) (dir (nnmail-group-pathname group nnmh-directory)) - (pathname-coding-system 'binary)) + (pathname-coding-system 'binary) + file) (unless active ;; The group wasn't known to nnmh, so we just create an active ;; entry for it. @@ -498,9 +499,15 @@ (when files (setcdr active (car files))))) (setcdr active (1+ (cdr active))) - (while (file-exists-p - (concat (nnmail-group-pathname group nnmh-directory) - (int-to-string (cdr active)))) + (while (or + ;; See whether the file exists... + (file-exists-p + (setq file (concat (nnmail-group-pathname group nnmh-directory) + (int-to-string (cdr active))))) + ;; ... or there is a buffer that will make that file exist + ;; in the future. + (get-file-buffer file)) + ;; Skip past that file. (setcdr active (1+ (cdr active)))) (cdr active))) diff --git a/lisp/nnml.el b/lisp/nnml.el index b9b2661..23b1401 100644 --- a/lisp/nnml.el +++ b/lisp/nnml.el @@ -30,10 +30,10 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'nnheader) (require 'nnmail) (require 'nnoo) -(eval-when-compile (require 'cl)) (nnoo-declare nnml) diff --git a/lisp/nnoo.el b/lisp/nnoo.el index 21b17c3..44a0f83 100644 --- a/lisp/nnoo.el +++ b/lisp/nnoo.el @@ -25,8 +25,8 @@ ;;; Code: -(require 'nnheader) (eval-when-compile (require 'cl)) +(require 'nnheader) (defvar nnoo-definition-alist nil) (defvar nnoo-state-alist nil) diff --git a/lisp/nnsoup.el b/lisp/nnsoup.el index 031c0ac..ace0c9a 100644 --- a/lisp/nnsoup.el +++ b/lisp/nnsoup.el @@ -26,12 +26,12 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'nnheader) (require 'nnmail) (require 'gnus-soup) (require 'gnus-msg) (require 'nnoo) -(eval-when-compile (require 'cl)) (nnoo-declare nnsoup) diff --git a/lisp/nnspool.el b/lisp/nnspool.el index 106aee0..07b0b80 100644 --- a/lisp/nnspool.el +++ b/lisp/nnspool.el @@ -26,10 +26,10 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'nnheader) (require 'nntp) (require 'nnoo) -(eval-when-compile (require 'cl)) (nnoo-declare nnspool) diff --git a/lisp/nntp.el b/lisp/nntp.el index f2bc3d9..1f3e23d 100644 --- a/lisp/nntp.el +++ b/lisp/nntp.el @@ -25,14 +25,13 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'nnheader) (require 'nnoo) (require 'gnus-util) (nnoo-declare nntp) -(eval-when-compile (require 'cl)) - (defvoo nntp-address nil "Address of the physical nntp server.") @@ -296,6 +295,11 @@ noticing asynchronous data.") (unless discard (erase-buffer))))) +(defun nntp-kill-buffer (buffer) + (when (buffer-name buffer) + (kill-buffer buffer) + (nnheader-init-server-buffer))) + (defsubst nntp-find-connection (buffer) "Find the connection delivering to BUFFER." (let ((alist nntp-connection-alist) @@ -308,8 +312,7 @@ noticing asynchronous data.") (when process (if (memq (process-status process) '(open run)) process - (when (buffer-name (process-buffer process)) - (kill-buffer (process-buffer process))) + (nntp-kill-buffer (process-buffer process)) (setq nntp-connection-alist (delq entry nntp-connection-alist)) nil)))) @@ -482,6 +485,9 @@ noticing asynchronous data.") (nntp-possibly-change-group nil server) (when (nntp-find-connection-buffer nntp-server-buffer) (save-excursion + ;; Erase nntp-sever-buffer before nntp-inhibit-erase. + (set-buffer nntp-server-buffer) + (erase-buffer) (set-buffer (nntp-find-connection-buffer nntp-server-buffer)) ;; The first time this is run, this variable is `try'. So we ;; try. @@ -700,8 +706,7 @@ noticing asynchronous data.") ;; QUIT command actually is sent out before we kill ;; the process. (sleep-for 1)))) - (when (buffer-name (process-buffer process)) - (kill-buffer (process-buffer process))) + (nntp-kill-buffer (process-buffer process)) (setq process (car (pop nntp-connection-alist)))) (nnoo-close-server 'nntp))) @@ -717,8 +722,7 @@ noticing asynchronous data.") ;; QUIT command actually is sent out before we kill ;; the process. (sleep-for 1)))) - (when (buffer-name (process-buffer process)) - (kill-buffer (process-buffer process)))))) + (nntp-kill-buffer (process-buffer process))))) (deffoo nntp-request-list (&optional server) (nntp-possibly-change-group nil server) @@ -866,8 +870,7 @@ password contained in '~/.nntp-authinfo'." (nnheader-run-at-time nntp-connection-timeout nil `(lambda () - (when (buffer-name ,pbuffer) - (kill-buffer ,pbuffer)))))) + (nntp-kill-buffer ,pbuffer))))) (process (condition-case () (funcall nntp-open-connection-function pbuffer) @@ -891,8 +894,7 @@ password contained in '~/.nntp-authinfo'." (let ((nnheader-callback-function nil)) (run-hooks 'nntp-server-opened-hook) (nntp-send-authinfo t)))) - (when (buffer-name (process-buffer process)) - (kill-buffer (process-buffer process))) + (nntp-kill-buffer (process-buffer process)) nil)))) (defun nntp-open-network-stream (buffer) @@ -1141,9 +1143,10 @@ password contained in '~/.nntp-authinfo'." ((numberp nntp-nov-gap) (let ((count 0) (received 0) - (last-point (point-min)) + last-point + in-process-buffer-p (buf nntp-server-buffer) - ;;(process-buffer (nntp-find-connection (current-buffer)))) + (process-buffer (nntp-find-connection-buffer nntp-server-buffer)) first) ;; We have to check `nntp-server-xover'. If it gets set to nil, ;; that means that the server does not understand XOVER, but we @@ -1156,40 +1159,55 @@ password contained in '~/.nntp-authinfo'." (< (- (nth 1 articles) (car articles)) nntp-nov-gap)) (setq articles (cdr articles))) - (when (nntp-send-xover-command first (car articles)) - (setq articles (cdr articles) - count (1+ count)) - + (setq in-process-buffer-p (stringp nntp-server-xover)) + (nntp-send-xover-command first (car articles)) + (setq articles (cdr articles)) + + (when (and nntp-server-xover in-process-buffer-p) + ;; Don't count tried request. + (setq count (1+ count)) + ;; Every 400 requests we have to read the stream in ;; order to avoid deadlocks. (when (or (null articles) ;All requests have been sent. (zerop (% count nntp-maximum-request))) - (accept-process-output) + + (nntp-accept-response) ;; On some Emacs versions the preceding function has ;; a tendency to change the buffer. Perhaps. It's ;; quite difficult to reproduce, because it only ;; seems to happen once in a blue moon. - (set-buffer buf) + (set-buffer process-buffer) (while (progn - (goto-char last-point) + (goto-char (or last-point (point-min))) ;; Count replies. (while (re-search-forward "^[0-9][0-9][0-9] " nil t) (setq received (1+ received))) (setq last-point (point)) (< received count)) - (accept-process-output) - (set-buffer buf))))) + (nntp-accept-response) + (set-buffer process-buffer)) + (set-buffer buf)))) (when nntp-server-xover - ;; Wait for the reply from the final command. - (goto-char (point-max)) - (re-search-backward "^[0-9][0-9][0-9] " nil t) - (when (looking-at "^[23]") - (while (progn - (goto-char (point-max)) - (forward-line -1) - (not (looking-at "^\\.\r?\n"))) - (nntp-accept-response))) + (when in-process-buffer-p + (set-buffer process-buffer) + ;; Wait for the reply from the final command. + (goto-char (point-max)) + (re-search-backward "^[0-9][0-9][0-9] " nil t) + (when (looking-at "^[23]") + (while (progn + (goto-char (point-max)) + (forward-line -1) + (not (looking-at "^\\.\r?\n"))) + (nntp-accept-response) + (set-buffer process-buffer))) + (set-buffer buf) + (goto-char (point-max)) + (insert-buffer-substring process-buffer) + (set-buffer process-buffer) + (erase-buffer) + (set-buffer buf)) ;; We remove any "." lines and status lines. (goto-char (point-min)) @@ -1212,7 +1230,7 @@ password contained in '~/.nntp-authinfo'." (nntp-send-command-nodelete "\r?\n\\.\r?\n" nntp-server-xover range) ;; We do not wait for the reply. - (nntp-send-command-nodelete "\r?\n\\.\r?\n" nntp-server-xover range)) + (nntp-send-command-nodelete nil nntp-server-xover range)) (let ((commands nntp-xover-commands)) ;; `nntp-xover-commands' is a list of possible XOVER commands. ;; We try them all until we get at positive response. @@ -1281,7 +1299,6 @@ password contained in '~/.nntp-authinfo'." (setq nntp-telnet-passwd (mail-source-read-passwd "Password: "))) "\n")) - (erase-buffer) (nntp-wait-for-string nntp-telnet-shell-prompt) (process-send-string proc (concat (mapconcat 'identity nntp-telnet-parameters " ") "\n")) diff --git a/lisp/nnvirtual.el b/lisp/nnvirtual.el index 19fa59f..8d46ed5 100644 --- a/lisp/nnvirtual.el +++ b/lisp/nnvirtual.el @@ -31,6 +31,7 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'nntp) (require 'nnheader) (require 'gnus) @@ -39,16 +40,14 @@ (require 'gnus-start) (require 'gnus-sum) (require 'gnus-msg) -(require 'cl) (nnoo-declare nnvirtual) (defvoo nnvirtual-always-rescan t "*If non-nil, always scan groups for unread articles when entering a group. -If this variable is nil (which is the default) and you read articles -in a component group after the virtual group has been activated, the -read articles from the component group will show up when you enter the -virtual group.") +If this variable is nil and you read articles in a component group +after the virtual group has been activated, the read articles from the +component group will show up when you enter the virtual group.") (defvoo nnvirtual-component-regexp nil "*Regexp to match component groups.") diff --git a/lisp/nnweb.el b/lisp/nnweb.el index d46aefd..b3327da 100644 --- a/lisp/nnweb.el +++ b/lisp/nnweb.el @@ -29,7 +29,6 @@ ;;; Code: (eval-when-compile (require 'cl)) - (require 'nnoo) (require 'message) (require 'gnus-util) @@ -56,18 +55,19 @@ Valid types include `dejanews', `dejanewsold', `reference', and `altavista'.") -(defvoo nnweb-type-definition +(defvar nnweb-type-definition '((dejanews - (article . nnweb-dejanews-wash-article) + (article . ignore) + (id . "http://search.dejanews.com/msgid.xp?MID=%s&fmt=text") (map . nnweb-dejanews-create-mapping) (search . nnweb-dejanews-search) - (address . "http://x8.dejanews.com/dnquery.xp") + (address . "http://www.deja.com/=dnc/qs.xp") (identifier . nnweb-dejanews-identity)) (dejanewsold - (article . nnweb-dejanews-wash-article) + (article . ignore) (map . nnweb-dejanews-create-mapping) (search . nnweb-dejanewsold-search) - (address . "http://x8.dejanews.com/dnquery.xp") + (address . "http://www.deja.com/dnquery.xp") (identifier . nnweb-dejanews-identity)) (reference (article . nnweb-reference-wash-article) @@ -130,11 +130,14 @@ and `altavista'.") (not (equal group nnweb-group)) (not nnweb-ephemeral-p)) (let ((info (assoc group nnweb-group-alist))) - (setq nnweb-group group) - (setq nnweb-type (nth 2 info)) - (setq nnweb-search (nth 3 info)) - (unless dont-check - (nnweb-read-overview group)))) + (when info + (setq nnweb-group group) + (setq nnweb-type (nth 2 info)) + (setq nnweb-search (nth 3 info)) + (unless dont-check + (nnweb-read-overview group))))) + (unless dont-check + (nnweb-request-scan group)) (cond ((not nnweb-articles) (nnheader-report 'nnweb "No matching articles")) @@ -261,6 +264,7 @@ and `altavista'.") (defun nnweb-write-active () "Save the active file." + (gnus-make-directory nnweb-directory) (with-temp-file (nnheader-concat nnweb-directory "active") (prin1 `(setq nnweb-group-alist ',nnweb-group-alist) (current-buffer)))) @@ -337,42 +341,6 @@ and `altavista'.") (url-retrieve url)) (setq-default url-be-asynchronous old-asynch))) -(defun nnweb-encode-www-form-urlencoded (pairs) - "Return PAIRS encoded for forms." - (mapconcat - (function - (lambda (data) - (concat (w3-form-encode-xwfu (car data)) "=" - (w3-form-encode-xwfu (cdr data))))) - pairs "&")) - -(defun nnweb-fetch-form (url pairs) - (let ((url-request-data (nnweb-encode-www-form-urlencoded pairs)) - (url-request-method "POST") - (url-request-extra-headers - '(("Content-type" . "application/x-www-form-urlencoded")))) - (url-insert-file-contents url) - (setq buffer-file-name nil)) - t) - -(defun nnweb-decode-entities () - (goto-char (point-min)) - (while (re-search-forward "&\\([a-z]+\\);" nil t) - (replace-match (char-to-string (or (cdr (assq (intern (match-string 1)) - w3-html-entities)) - ?#)) - t t))) - -(defun nnweb-remove-markup () - (goto-char (point-min)) - (while (search-forward "" nil t) - (point-max)))) - (goto-char (point-min)) - (while (re-search-forward "<[^>]+>" nil t) - (replace-match "" t t))) - ;;; ;;; DejaNews functions. ;;; @@ -388,51 +356,42 @@ and `altavista'.") (case-fold-search t) (active (or (cadr (assoc nnweb-group nnweb-group-alist)) (cons 1 0))) - Subject (Score "0") Date Newsgroup Author - map url) + subject date from + map url parse a table group text) (while more ;; Go through all the article hits on this page. (goto-char (point-min)) - (nnweb-decode-entities) - (goto-char (point-min)) - (while (re-search-forward "^

\n" nil t) - (narrow-to-region - (point) - (cond ((re-search-forward "^

\n" nil t) - (match-beginning 0)) - ((search-forward "\n\n" nil t) - (point)) - (t - (point-max)))) - (goto-char (point-min)) - (looking-at ".*HREF=\"\\([^\"]+\\)\"\\(.*\\)") - (setq url (match-string 1)) - (let ((begin (point))) - (nnweb-remove-markup) - (goto-char begin) - (while (search-forward "\t" nil t) - (replace-match " ")) - (goto-char begin) - (end-of-line) - (setq Subject (buffer-substring begin (point))) - (if (re-search-forward - "^ Newsgroup: \\(.*\\)\n Posted on \\([0-9/]+\\) by \\(.*\\)$" nil t) - (setq Newsgroup (match-string 1) - Date (match-string 2) - Author (match-string 3)))) - (widen) - (incf i) - (unless (nnweb-get-hashtb url) - (push - (list - (incf (cdr active)) - (make-full-mail-header - (cdr active) Subject Author Date - (concat "<" (nnweb-identifier url) "@dejanews>") - nil 0 (string-to-int Score) url)) - map) - (nnweb-set-hashtb (cadar map) (car map)))) + (setq parse (w3-parse-buffer (current-buffer)) + table (nth 1 (nnweb-parse-find-all 'table parse))) + (dolist (row (nth 2 (car (nth 2 table)))) + (setq a (nnweb-parse-find 'a row) + url (cdr (assq 'href (nth 1 a))) + text (nnweb-text row)) + (when a + (setq subject (nth 2 text) + group (nth 4 text) + date (nth 5 text) + from (nth 6 text)) + (string-match "\\([0-9]+\\)/\\([0-9]+\\)/\\([0-9]+\\)" date) + (setq date (format "%s %s %s" + (car (rassq (string-to-number + (match-string 2 date)) + parse-time-months)) + (match-string 3 date) (match-string 1 date))) + (incf i) + (setq url (concat url "&fmt=text")) + (unless (nnweb-get-hashtb url) + (push + (list + (incf (cdr active)) + (make-full-mail-header + (cdr active) (concat subject " (" group ")") from date + (concat "<" (nnweb-identifier url) "@dejanews>") + nil 0 0 url)) + map) + (nnweb-set-hashtb (cadar map) (car map))))) ;; See whether there is a "Get next 20 hits" button here. + (goto-char (point-min)) (if (or (not (re-search-forward "HREF=\"\\([^\"]+\\)\"[<>b]+Next result" nil t)) (>= i nnweb-max-hits)) @@ -445,39 +404,25 @@ and `altavista'.") (setq nnweb-articles (sort (nconc nnweb-articles map) 'car-less-than-car)))))) -(defun nnweb-dejanews-wash-article () - (let ((case-fold-search t)) - (goto-char (point-min)) - (re-search-forward "

" nil t)
-    (delete-region (point-min) (point))
-    (re-search-forward "
" nil t) - (delete-region (point) (point-max)) - (nnweb-remove-markup) - (goto-char (point-min)) - (while (and (looking-at " *$") - (not (eobp))) - (gnus-delete-line)) - (while (looking-at "\\(^[^ ]+:\\) *") - (replace-match "\\1 " t) - (forward-line 1)) - (when (re-search-forward "\n\n+" nil t) - (replace-match "\n" t t)) - (goto-char (point-min)) - (when (search-forward "[More Headers]" nil t) - (replace-match "" t t)))) - (defun nnweb-dejanews-search (search) - (nnweb-fetch-form - (nnweb-definition 'address) - `(("query" . ,search) - ("defaultOp" . "AND") - ("svcclass" . "dncurrent") - ("maxhits" . "100") - ("format" . "verbose2") - ("threaded" . "0") - ("showsort" . "date") - ("agesign" . "1") - ("ageweight" . "1"))) + (nnweb-insert + (concat + (nnweb-definition 'address) + "?" + (nnweb-encode-www-form-urlencoded + `(("ST" . "PS") + ("svcclass" . "dnyr") + ("QRY" . ,search) + ("defaultOp" . "AND") + ("DBS" . "1") + ("OP" . "dnquery.xp") + ("LNG" . "ALL") + ("maxhits" . "100") + ("threaded" . "0") + ("format" . "verbose2") + ("showsort" . "date") + ("agesign" . "1") + ("ageweight" . "1"))))) t) (defun nnweb-dejanewsold-search (search) @@ -496,7 +441,7 @@ and `altavista'.") (defun nnweb-dejanews-identity (url) "Return an unique identifier based on URL." - (if (string-match "recnum=\\([0-9]+\\)" url) + (if (string-match "AN=\\([0-9]+\\)" url) (match-string 1 url) url)) @@ -718,6 +663,122 @@ and `altavista'.") (setq buffer-file-name nil) t) +;;; +;;; General web/w3 interface utility functions +;;; + +(defun nnweb-insert-html (parse) + "Insert HTML based on a w3 parse tree." + (if (stringp parse) + (insert parse) + (insert "<" (symbol-name (car parse)) " ") + (insert (mapconcat + (lambda (param) + (concat (symbol-name (car param)) "=" + (prin1-to-string + (if (consp (cdr param)) + (cadr param) + (cdr param))))) + (nth 1 parse) + " ")) + (insert ">\n") + (mapcar 'nnweb-insert-html (nth 2 parse)) + (insert "\n"))) + +(defun nnweb-encode-www-form-urlencoded (pairs) + "Return PAIRS encoded for forms." + (mapconcat + (function + (lambda (data) + (concat (w3-form-encode-xwfu (car data)) "=" + (w3-form-encode-xwfu (cdr data))))) + pairs "&")) + +(defun nnweb-fetch-form (url pairs) + "Fetch a form from URL with PAIRS as the data using the POST method." + (let ((url-request-data (nnweb-encode-www-form-urlencoded pairs)) + (url-request-method "POST") + (url-request-extra-headers + '(("Content-type" . "application/x-www-form-urlencoded")))) + (url-insert-file-contents url) + (setq buffer-file-name nil)) + t) + +(defun nnweb-decode-entities () + "Decode all HTML entities." + (goto-char (point-min)) + (while (re-search-forward "&\\([a-z]+\\);" nil t) + (replace-match (char-to-string (or (cdr (assq (intern (match-string 1)) + w3-html-entities)) + ?#)) + t t))) + +(defun nnweb-remove-markup () + "Remove all HTML markup, leaving just plain text." + (goto-char (point-min)) + (while (search-forward "" nil t) + (point-max)))) + (goto-char (point-min)) + (while (re-search-forward "<[^>]+>" nil t) + (replace-match "" t t))) + +(defun nnweb-insert (url) + "Insert the contents from an URL in the current buffer." + (let ((name buffer-file-name)) + (url-insert-file-contents url) + (setq buffer-file-name name))) + +(defun nnweb-parse-find (type parse &optional maxdepth) + "Find the element of TYPE in PARSE." + (catch 'found + (nnweb-parse-find-1 type parse maxdepth))) + +(defun nnweb-parse-find-1 (type contents maxdepth) + (when (or (null maxdepth) + (not (zerop maxdepth))) + (when (consp contents) + (when (eq (car contents) type) + (throw 'found contents)) + (when (listp (cdr contents)) + (dolist (element contents) + (when (consp element) + (nnweb-parse-find-1 type element + (and maxdepth (1- maxdepth))))))))) + +(defun nnweb-parse-find-all (type parse) + "Find all elements of TYPE in PARSE." + (catch 'found + (nnweb-parse-find-all-1 type parse))) + +(defun nnweb-parse-find-all-1 (type contents) + (let (result) + (when (consp contents) + (if (eq (car contents) type) + (push contents result) + (when (listp (cdr contents)) + (dolist (element contents) + (when (consp element) + (setq result + (nconc result (nnweb-parse-find-all-1 type element)))))))) + result)) + +(defvar nnweb-text) +(defun nnweb-text (parse) + "Return a list of text contents in PARSE." + (let ((nnweb-text nil)) + (nnweb-text-1 parse) + (nreverse nnweb-text))) + +(defun nnweb-text-1 (contents) + (dolist (element contents) + (if (stringp element) + (push element nnweb-text) + (when (and (consp element) + (listp (cdr element))) + (nnweb-text-1 element))))) + (provide 'nnweb) ;;; nnweb.el ends here diff --git a/lisp/pop3.el b/lisp/pop3.el index 44f033a..4885f61 100644 --- a/lisp/pop3.el +++ b/lisp/pop3.el @@ -3,6 +3,7 @@ ;; Copyright (C) 1996-1999 Free Software Foundation, Inc. ;; Author: Richard L. Pieri +;; Daiki Ueno ;; Keywords: mail, pop3 ;; Version: 1.3s @@ -34,8 +35,8 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'mail-utils) -(provide 'pop3) (defconst pop3-version "1.3s") @@ -62,25 +63,52 @@ values are 'apop.") "Timestamp returned when initially connected to the POP server. Used for APOP authentication.") +(defvar pop3-leave-mail-on-server nil + "Non-nil if mail is to be left on the server and UIDL used for message retrieval.") + +(defvar pop3-maximum-message-size nil + "If non-nil only download messages smaller than this.") + +(defvar pop3-except-header-regexp nil + "If non-nil we do not retrieve messages whose headers are matching this regexp.") + +(defvar pop3-uidl-file-name "~/.uidls" + "File in which to store the UIDL of processed messages.") + +(defvar pop3-uidl-support 'dont-know + "Whether the server supports UIDL. +Nil means no, t means yes, not-nil-or-t means yet to be determined.") + +(defvar pop3-uidl-obarray (make-vector 31 0) + "Uidl hash table.") + (defvar pop3-read-point nil) (defvar pop3-debug nil) (eval-and-compile - (autoload 'open-ssl-stream "ssl")) + (autoload 'open-ssl-stream "ssl") + (autoload 'starttls-open-stream "starttls") + (autoload 'starttls-negotiate "starttls")) (defvar pop3-ssl-program-arguments '("-quiet") "Arguments to be passed to the program `pop3-ssl-program-name'.") +(defun pop3-progress-message (format percent &rest args) + (apply (function message) format args)) + (defun pop3-movemail (&optional crashbox) "Transfer contents of a maildrop to the specified CRASHBOX." (or crashbox (setq crashbox (expand-file-name "~/.crashbox"))) (let* ((process (pop3-open-server pop3-mailhost pop3-port)) (crashbuf (get-buffer-create " *pop3-retr*")) (n 1) - message-count (pop3-password pop3-password) - ) + (pop3-uidl-file-name + (convert-standard-filename + (concat pop3-uidl-file-name "-" pop3-mailhost))) + (retrieved-messages nil) + messages message-count) ;; for debugging only (if pop3-debug (switch-to-buffer (process-buffer process))) ;; query for password @@ -92,49 +120,61 @@ Used for APOP authentication.") ((equal 'pass pop3-authentication-scheme) (pop3-user process pop3-maildrop) (pop3-pass process)) - (t (error "Invalid POP3 authentication scheme."))) - (setq message-count (car (pop3-stat process))) + (t (error "Invalid POP3 authentication scheme"))) + ;; get messages that are suitable for download + (message "Retrieving message list...") + (setq messages (pop3-get-message-numbers process) + message-count (length (cdr messages))) + (message (format "Retrieving message list...%d of %d unread" + message-count (pop messages))) (unwind-protect - (while (<= n message-count) - (message (format "Retrieving message %d of %d from %s..." - n message-count pop3-mailhost)) - (pop3-retr process n crashbuf) - (save-excursion - (set-buffer crashbuf) + (unless (not (stringp crashbox)) + (while messages + (pop3-progress-message + "Retrieving message %d of %d (%d octets) from %s..." + (floor (* (/ (float n) message-count) 100)) + n message-count (cdar messages) pop3-mailhost) + (pop3-retr process (caar messages) crashbuf) + (push (caar messages) retrieved-messages) + (setq messages (cdr messages) + n (1+ n))) + (with-current-buffer crashbuf (write-region-as-binary (point-min) (point-max) - crashbox 'append 'nomesg) - (set-buffer (process-buffer process)) - (while (> (buffer-size) 5000) - (goto-char (point-min)) - (forward-line 50) - (delete-region (point-min) (point)))) - (pop3-dele process n) - (setq n (+ 1 n)) - (if pop3-debug (sit-for 1) (sit-for 0.1)) + crashbox 'append 'nomesg)) + ;; mark messages as read + (when pop3-leave-mail-on-server + (pop3-save-uidls)) + ;; now delete the messages we have retrieved + (unless pop3-leave-mail-on-server + (dolist (n retrieved-messages) + (message (format "Deleting message %d of %d from %s..." + n message-count pop3-mailhost)) + (pop3-dele process n))) ) (pop3-quit process)) (kill-buffer crashbuf) - ) - t) + message-count)) (defun pop3-open-server (mailhost port) "Open TCP connection to MAILHOST. -Returns the process associated with the connection." +Returns the process associated with the connection. +Argument PORT specifies connecting port." (let ((process-buffer (get-buffer-create (format "trace of POP session to %s" mailhost))) (process)) (save-excursion (set-buffer process-buffer) - (erase-buffer) - (setq pop3-read-point (point-min)) - ) + (erase-buffer)) (setq process (cond ((eq pop3-connection-type 'ssl) (pop3-open-ssl-stream "POP" process-buffer mailhost port)) + ((eq pop3-connection-type 'tls) + (pop3-open-tls-stream "POP" process-buffer mailhost port)) (t - (open-network-stream-as-binary "POP"process-buffer mailhost port)))) + (open-network-stream-as-binary "POP" process-buffer mailhost port)))) + (setq pop3-read-point (point-min)) (let ((response (pop3-read-response process t))) (setq pop3-timestamp (substring response (or (string-match "<" response) 0) @@ -142,9 +182,9 @@ Returns the process associated with the connection." process)) (defun pop3-open-ssl-stream-1 (name buffer host service extra-arg) - (let* ((ssl-program-arguments - (` ((,@ pop3-ssl-program-arguments) (, extra-arg) - "-connect" (, (format "%s:%d" host service))))) + (let* ((ssl-program-arguments + `(,@pop3-ssl-program-arguments ,extra-arg + "-connect" ,(format "%s:%d" host service))) (process (open-ssl-stream name buffer host service))) (when process (with-current-buffer buffer @@ -160,11 +200,24 @@ Returns the process associated with the connection." process)))) (defun pop3-open-ssl-stream (name buffer host service) - "Open a SSL connection for a service to a host." + "Open a SSL connection for a service to a host. +Returns a subprocess-object to represent the connection. +Args are NAME BUFFER HOST SERVICE." (as-binary-process (or (pop3-open-ssl-stream-1 name buffer host service "-ssl3") (pop3-open-ssl-stream-1 name buffer host service "-ssl2")))) +(defun pop3-open-tls-stream (name buffer host service) + "Open a TLSv1 connection for a service to a host. +Returns a subprocess-object to represent the connection. +Args are NAME BUFFER HOST SERVICE." + (let ((process + (as-binary-process (starttls-open-stream + name buffer host service)))) + (pop3-stls process) + (starttls-negotiate process) + process)) + ;; Support functions (defun pop3-process-filter (process output) @@ -185,8 +238,8 @@ Returns the process associated with the connection." ) (defun pop3-read-response (process &optional return) - "Read the response from the server. -Return the response string if optional second argument is non-nil." + "Read the response from the server PROCESS. +Return the response string if optional second argument RETURN is non-nil." (let ((case-fold-search nil) match-end) (save-excursion @@ -207,22 +260,6 @@ Return the response string if optional second argument is non-nil." t) ))))) -(defun pop3-string-to-list (string &optional regexp) - "Chop up a string into a list." - (let ((list) - (regexp (or regexp " ")) - (string (if (string-match "\r" string) - (substring string 0 (match-beginning 0)) - string))) - (store-match-data nil) - (while string - (if (string-match regexp string) - (setq list (cons (substring string 0 (- (match-end 0) 1)) list) - string (substring string (match-end 0))) - (setq list (cons string list) - string nil))) - (nreverse list))) - (defvar pop3-read-passwd nil) (defun pop3-read-passwd (prompt) (if (not pop3-read-passwd) @@ -241,6 +278,9 @@ Return the response string if optional second argument is non-nil." (while (and (< (point) end) (search-forward "\r\n" end t)) (replace-match "\n" t t)) (goto-char start) + (while (re-search-forward "\n\n\\(From \\)" end t) + (replace-match "\n\n>\\1" t nil)) + (goto-char start) (while (and (< (point) end) (re-search-forward "^\\." end t)) (replace-match "" t t) (forward-char))) @@ -278,15 +318,91 @@ Return the response string if optional second argument is non-nil." (setq From_ (concat (substring From_ 0 (match-beginning 0)) (substring From_ (match-end 0))))) (goto-char (point-min)) - (insert From_) - (re-search-forward "\n\n") - (narrow-to-region (point) (point-max)) - (let ((size (- (point-max) (point-min)))) - (goto-char (point-min)) - (widen) - (forward-line -1) - (insert (format "Content-Length: %s\n" size))) - ))))) + (insert From_)))))) + +;; UIDL support + +(defun pop3-get-message-numbers (process) + "Get the list of message numbers and lengths to retrieve via PROCESS." + ;; we use the LIST comand first anyway to get the message lengths. + ;; then if we're leaving mail on the server, see if the UIDL command + ;; is implemented. if so, we use it to get the message number list. + (let* ((messages (pop3-list process)) + (total (or (pop messages) 0)) + (uidl (if pop3-leave-mail-on-server + (pop3-get-uidl process))) + out) + (while messages + ;; only retrieve messages matching our regexp or in the uidl list + (when (and + ;; remove elements not in the uidl, this assumes the uidl is short + (or (not (eq pop3-uidl-support t)) + (memq (caar messages) uidl)) + (caar messages) + ;; don't download messages that are too large + (not (and pop3-maximum-message-size + (> (cdar messages) pop3-maximum-message-size))) + (not (and pop3-except-header-regexp + (string-match pop3-except-header-regexp + (pop3-top process (caar messages) 0))))) + (push (car messages) out)) + (setq messages (cdr messages))) + (cons total (reverse out)))) + +(defun pop3-get-uidl (process) + "Use PROCESS to get a list of unread message numbers." + (let ((messages (pop3-uidl process)) uidl) + (if (or (null messages) (null pop3-uidl-support)) + (setq pop3-uidl-support nil) + (setq pop3-uidl-support t) + (save-excursion + (with-temp-buffer + (when (file-readable-p pop3-uidl-file-name) + (insert-file-contents pop3-uidl-file-name)) + (goto-char (point-min)) + (while (looking-at "\\([^ \n\t]+\\)") + (set (intern (match-string 1) pop3-uidl-obarray) + (cons nil t)) + (forward-line 1)) + )) + (dolist (message (cdr messages)) + (if (setq uidl (intern-soft (cdr message) pop3-uidl-obarray)) + (setcar (symbol-value uidl) (car message)) + (set (intern (cdr message) pop3-uidl-obarray) + (cons (car message) nil)))) + (pop3-get-unread-message-numbers)) + )) + +(defun pop3-get-unread-message-numbers () + "Return a sorted list of unread msg numbers to retrieve." + (let (nums) + (mapatoms (lambda (atom) + (if (not (cdr (symbol-value atom))) + (push (car (symbol-value atom)) nums))) + pop3-uidl-obarray) + (sort nums '<))) + +(defun pop3-save-uidls () + "Save the updated UIDLs to disk for use next time." + (when (and pop3-leave-mail-on-server + ;; UIDL hash table is non-empty + (let ((len (length pop3-uidl-obarray))) + (while (< 0 len) + (setq len (if (symbolp (aref pop3-uidl-obarray (1- len))) + -1 (1- len)))) + (minusp len))) + (when (file-readable-p pop3-uidl-file-name) + (copy-file pop3-uidl-file-name + (concat pop3-uidl-file-name ".old") + 'overwrite 'keeptime)) + (save-excursion + (with-temp-file pop3-uidl-file-name + (mapatoms + (lambda (atom) + (when (car (symbol-value atom)) + (insert (format "%s\n" atom)))) + pop3-uidl-obarray))))) + ;; The Command Set @@ -306,15 +422,23 @@ Return the response string if optional second argument is non-nil." (if (not (and response (string-match "+OK" response))) (pop3-quit process)))) +(autoload 'md5 "md5") + (defun pop3-apop (process user) "Send alternate authentication information to the server." - (if (not (fboundp 'md5)) (autoload 'md5 "md5")) (let ((hash (md5 (concat pop3-timestamp pop3-password)))) (pop3-send-command process (format "APOP %s %s" user hash)) (let ((response (pop3-read-response process t))) (if (not (and response (string-match "+OK" response))) (pop3-quit process))))) +(defun pop3-stls (process) + "Query whether TLS extension is supported" + (pop3-send-command process "STLS") + (let ((response (pop3-read-response process t))) + (if (not (and response (string-match "+OK" response))) + (pop3-quit process)))) + ;; TRANSACTION STATE (defun pop3-stat (process) @@ -325,49 +449,15 @@ Return the response string if optional second argument is non-nil." (string-to-int (nth 2 (split-string response)))) )) -(defun pop3-list (process &optional msg) - "Scan listing of available messages. -This function currently does nothing.") - (defun pop3-retr (process msg crashbuf) "Retrieve message-id MSG to buffer CRASHBUF." (pop3-send-command process (format "RETR %s" msg)) (pop3-read-response process) - (let ((start pop3-read-point) end) - (save-excursion - (set-buffer (process-buffer process)) - (while (not (re-search-forward "^\\.\r\n" nil t)) - (accept-process-output process 3) - ;; bill@att.com ... to save wear and tear on the heap - ;; uncommented because the condensed version below is a problem for - ;; some. - (if (> (buffer-size) 20000) (sleep-for 1)) - (if (> (buffer-size) 50000) (sleep-for 1)) - (if (> (buffer-size) 100000) (sleep-for 1)) - (if (> (buffer-size) 200000) (sleep-for 1)) - (if (> (buffer-size) 500000) (sleep-for 1)) - ;; bill@att.com - ;; condensed into: - ;; (sometimes causes problems for really large messages.) -; (if (> (buffer-size) 20000) (sleep-for (/ (buffer-size) 20000))) - (goto-char start)) - (setq pop3-read-point (point-marker)) -;; this code does not seem to work for some POP servers... -;; and I cannot figure out why not. -; (goto-char (match-beginning 0)) -; (backward-char 2) -; (if (not (looking-at "\r\n")) -; (insert "\r\n")) -; (re-search-forward "\\.\r\n") - (goto-char (match-beginning 0)) - (setq end (point-marker)) - (pop3-clean-region start end) - (pop3-munge-message-separator start end) - (save-excursion - (set-buffer crashbuf) - (erase-buffer)) - (copy-to-buffer crashbuf start end) - (delete-region start end) + (save-excursion + (let ((region (pop3-get-extended-response process))) + (pop3-munge-message-separator (car region) (cadr region)) + (append-to-buffer crashbuf (car region) (cadr region)) + (delete-region (car region) (cadr region)) ))) (defun pop3-dele (process msg) @@ -400,11 +490,106 @@ Tell server to remove all messages marked as deleted, unlock the maildrop, and close the connection." (pop3-send-command process "QUIT") (pop3-read-response process t) - (if process + (when process + (save-excursion + (set-buffer (process-buffer process)) + (goto-char (point-max)) + (delete-process process) + )) + (when pop3-leave-mail-on-server + (mapatoms + (lambda (atom) + (when (car (symbol-value atom)) + (unintern atom pop3-uidl-obarray))) + pop3-uidl-obarray))) + +(defun pop3-uidl (process &optional msgno) + "Return the results of a UIDL command in PROCESS for optional MSGNO. +If UIDL is unsupported on this mail server or if msgno is invalid, return nil. +Otherwise, return a list in the form + + (N (1 UIDL-1) (2 UIDL-2) ... (N UIDL-N)) + +where + + N is an integer for the number of UIDLs returned (could be 0) + UIDL-n is a string." + + (if msgno + (pop3-send-command process (format "UIDL %d" msgno)) + (pop3-send-command process "UIDL")) + + (if (null (pop3-read-response process t)) + nil ;; UIDL is not supported on this server + (let (pairs uidl) (save-excursion - (set-buffer (process-buffer process)) - (goto-char (point-max)) - (delete-process process)))) + (save-restriction + (apply 'narrow-to-region (pop3-get-extended-response process)) + (goto-char (point-min)) + (while (looking-at "\\([^ \n\t]*\\) \\([^ \n\t]*\\)") + (setq msgno (string-to-int (match-string 1)) + uidl (match-string 2)) + (push (cons msgno uidl) pairs) + (beginning-of-line 2)) + (cons (length pairs) (nreverse pairs)) + ))))) + +(defun pop3-list (process &optional msgno) + "Return the results of a LIST command for PROCESS and optional MSGNO. +If (optional) msgno is invalid, return nil. Otherwise, return a list +in the form + + (N (1 LEN-1) (2 LEN-2) ... (N LEN-N)) + +where + + N is an integer for the number of msg/len pairs (could be 0) + LEN-n is an integer." + (if msgno + (pop3-send-command process (format "LIST %d" msgno)) + (pop3-send-command process "LIST")) + + (if (null (pop3-read-response process t)) + nil ;; MSGNO is not valid number + (let (pairs len) + (save-excursion + (save-restriction + (apply 'narrow-to-region (pop3-get-extended-response process)) + (goto-char (point-min)) + (while (looking-at "\\([^ \n\t]*\\) \\([^ \n\t]*\\)") + (setq msgno (string-to-int (match-string 1)) + len (string-to-int (match-string 2))) + (push (cons msgno len) pairs) + (beginning-of-line 2)) + (cons (length pairs) (nreverse pairs)) + ))))) + +(defun pop3-top (process msgno &optional lines) + "Return the top LINES of messages for PROCESS and MSGNO. +If msgno is invalid, return nil. Otherwise, return a string." + (pop3-send-command process (format "TOP %d %d" msgno (or lines 1))) + (if (pop3-read-response process t) + nil ;; MSGNO is not valid number + (save-excursion + (apply 'buffer-substring (pop3-get-extended-response process))) + )) + +;;; Utility code + +(defun pop3-get-extended-response (process) + "Get the extended pop3 response in the PROCESS buffer." + (let ((start pop3-read-point) end) + (set-buffer (process-buffer process)) + (goto-char start) + (while (not (re-search-forward "^\\.\r\n" nil t)) + (accept-process-output process 3) + (goto-char start)) + (setq pop3-read-point (point-marker)) + (goto-char (match-beginning 0)) + (setq end (point-marker)) + (pop3-clean-region start end) + (list start end))) + ;; Summary of POP3 (Post Office Protocol version 3) commands and responses @@ -431,6 +616,13 @@ and close the connection." ;; -ERR [invalid password] ;; -ERR [unable to lock maildrop] +;; STLS +;; Arguments: none +;; Restrictions: authorization state +;; Possible responses: +;; +OK [negotiation is ready] +;; -ERR [security layer is already active] + ;;; TRANSACTION STATE ;; STAT @@ -446,6 +638,20 @@ and close the connection." ;; +OK [scan listing follows] ;; -ERR [no such message] +;; TOP msg [lines] +;; Arguments: a message-id (required), number of lines (optional) +;; Restrictions: transaction state; msg must not be deleted +;; Possible responses: +;; +OK [partial message listing follows] +;; -ERR [no such message] + +;; UIDL [msg] +;; Arguments: a message-id (optional) +;; Restrictions: transaction state; msg must not be deleted +;; Possible responses: +;; +OK [uidl listing follows] +;; -ERR [no such message] + ;; RETR msg ;; Arguments: a message-id (required) ;; Restrictions: transaction state; msg must not be deleted @@ -485,3 +691,7 @@ and close the connection." ;; Restrictions: none ;; Possible responses: ;; +OK [TCP connection closed] + +(provide 'pop3) + +;;; pop3.el ends here diff --git a/lisp/qp.el b/lisp/qp.el index 50fd046..56203e9 100644 --- a/lisp/qp.el +++ b/lisp/qp.el @@ -73,7 +73,7 @@ matched by that regexp." (save-excursion (save-restriction (narrow-to-region from to) - (mm-encode-body) +;; (mm-encode-body) ;; Encode all the non-ascii and control characters. (goto-char (point-min)) (while (and (skip-chars-forward @@ -95,13 +95,16 @@ matched by that regexp." (when fold ;; Fold long lines. (goto-char (point-min)) - (end-of-line) - (while (> (current-column) 72) - (beginning-of-line) - (forward-char 72) - (search-backward "=" (- (point) 2) t) - (insert "=\n") - (end-of-line)))))) + (while (not (eobp)) + (end-of-line) + (while (> (current-column) 72) + (beginning-of-line) + (forward-char 71) ;; 71 char 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." diff --git a/lisp/read-passwd.el b/lisp/read-passwd.el index 6f3c712..d99e37d 100644 --- a/lisp/read-passwd.el +++ b/lisp/read-passwd.el @@ -100,7 +100,7 @@ Argument PROMPT ." (format "%s:%s:%s" server user port) pw)) (cdr (assoc from mail-source-password-cache))))) - nnmail-spool-file)))) + mail-sources)))) ;; ;; (defvar passwd nil) @@ -109,4 +109,4 @@ Argument PROMPT ." (message "POP Password for %s at %s : " user server))) passwd) ;; -;; read-passwd.el ends here. \ No newline at end of file +;; read-passwd.el ends here. diff --git a/lisp/rfc1843.el b/lisp/rfc1843.el index 07b2cf2..adf475d 100644 --- a/lisp/rfc1843.el +++ b/lisp/rfc1843.el @@ -1,13 +1,10 @@ ;;; rfc1843.el --- HZ (rfc1843) decoding -;; Copyright (c) 1998 by Shenghuo Zhu +;; Copyright (c) 1998,1999 by Shenghuo Zhu ;; Author: Shenghuo Zhu -;; $Revision: 1.1.2.6 $ ;; Keywords: news HZ -;; Time-stamp: -;; This file is not part of GNU Emacs, but the same permissions -;; apply. +;; This file is 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 @@ -135,13 +132,24 @@ ftp://ftp.math.psu.edu/pub/simpson/chinese/hzp/hzp.doc" (defun rfc1843-decode-article-body () "Decode HZ encoded text in the article body." (if (string-match (concat "\\<\\(" rfc1843-newsgroups-regexp "\\)\\>") - gnus-newsgroup-name) + (or gnus-newsgroup-name "")) (save-excursion (save-restriction (message-narrow-to-head) - (goto-char (point-max)) - (widen) - (rfc1843-decode-region (point) (point-max)))))) + (let* ((inhibit-point-motion-hooks t) + (case-fold-search t) + (ct (message-fetch-field "Content-Type" t)) + (ctl (and ct (ignore-errors + (mail-header-parse-content-type ct))))) + (if (and ctl (not (string-match "/" (car ctl)))) + (setq ctl nil)) + (goto-char (point-max)) + (widen) + (forward-line 1) + (narrow-to-region (point) (point-max)) + (when (or (not ctl) + (equal (car ctl) "text/plain")) + (rfc1843-decode-region (point) (point-max)))))))) (defvar rfc1843-old-gnus-decode-header-function nil) (defvar gnus-decode-header-methods) diff --git a/lisp/rfc2047.el b/lisp/rfc2047.el index 6e7512c..1a08b3c 100644 --- a/lisp/rfc2047.el +++ b/lisp/rfc2047.el @@ -297,12 +297,14 @@ Should be called narrowed to the head of the message." (match-string 0) (delete-region (match-beginning 0) (match-end 0))))) (when (and (mm-multibyte-p) - mail-parse-charset) + mail-parse-charset + (not (eq mail-parse-charset 'gnus-decoded))) (mm-decode-coding-region b e mail-parse-charset)) (setq b (point))) (when (and (mm-multibyte-p) mail-parse-charset - (not (eq mail-parse-charset 'us-ascii))) + (not (eq mail-parse-charset 'us-ascii)) + (not (eq mail-parse-charset 'gnus-decoded))) (mm-decode-coding-region b (point-max) mail-parse-charset)))))) (defun rfc2047-decode-string (string) diff --git a/lisp/rfc2104.el b/lisp/rfc2104.el index dd4d5ac..c7ce5ab 100644 --- a/lisp/rfc2104.el +++ b/lisp/rfc2104.el @@ -44,7 +44,7 @@ ;;; 1998-09-25 renamed from hmac.el to rfc2104.el, also renamed functions ;;; 1999-10-23 included in pgnus -(require 'cl) +(eval-when-compile (require 'cl)) ;; Magic character for inner HMAC round. 0x36 == 54 == '6' (defconst rfc2104-ipad ?\x36) diff --git a/lisp/score-mode.el b/lisp/score-mode.el index 4d03128..dd8eba3 100644 --- a/lisp/score-mode.el +++ b/lisp/score-mode.el @@ -25,8 +25,9 @@ ;;; Code: -(require 'easymenu) (eval-when-compile (require 'cl)) +(eval-when-compile (require 'static)) +(require 'easymenu) (defvar gnus-score-mode-hook nil "*Hook run in score mode buffers.") @@ -51,7 +52,9 @@ table) "Syntax table used in score-mode buffers.") -(defvar score-mode-coding-system 'ctext) +(defvar score-mode-coding-system (static-if (boundp 'MULE) + '*ctext* + 'ctext)) ;;;###autoload (defun gnus-score-mode () diff --git a/lisp/smiley.el b/lisp/smiley.el index 34b416e..76b2884 100644 --- a/lisp/smiley.el +++ b/lisp/smiley.el @@ -35,9 +35,9 @@ ;; The smilies were drawn by Joe Reiss . +(eval-when-compile (require 'cl)) (require 'annotations) (require 'messagexmas) -(require 'cl) (require 'custom) (defgroup smiley nil @@ -65,7 +65,7 @@ ("\\(:-*[)>}(I;(B]+\\)\\W" 1 "FaceHappy.xpm") ("\\(=[)>(I;(B]+\\)\\W" 1 "FaceHappy.xpm") ("\\(:-*[/\\\"]\\)[^/]\\W" 1 "FaceIronic.xpm") - ("\\([8|]-*[|Oo%]\\)\\W" 1 "FaceKOed.xpm") + ("[^.0-9]\\([8|]-*[|Oo%]\\)\\W" 1 "FaceKOed.xpm") ("\\([:|]-*#+\\)\\W" 1 "FaceNyah.xpm") ("\\(:-*[({]+\\)\\W" 1 "FaceSad.xpm") ("\\(=[({]+\\)\\W" 1 "FaceSad.xpm") @@ -213,18 +213,17 @@ above them." (defun smiley-toggle-extents (e) (interactive "e") (map-extents - '(lambda (e void) - (let (ant) - (if (annotationp (setq ant (extent-property e 'smiley-annotation))) - (progn - (if (eq (extent-property e 'invisible) nil) - (progn - (reveal-annotation ant) - (set-extent-property e 'invisible t) - ) - (hide-annotation ant) - (set-extent-property e 'invisible nil)))) - nil)) + (lambda (e void) + (let (ant) + (if (annotationp (setq ant (extent-property e 'smiley-annotation))) + (if (eq (extent-property e 'invisible) nil) + (progn + (reveal-annotation ant) + (set-extent-property e 'invisible t) + ) + (hide-annotation ant) + (set-extent-property e 'invisible nil))) + nil)) (event-buffer e))) ;;;###autoload @@ -241,10 +240,10 @@ above them." (case-fold-search nil) entry regexp beg group file) (map-extents - '(lambda (e void) - (when (or (extent-property e 'smiley-extent) - (extent-property e 'smiley-annotation)) - (delete-extent e))) + (lambda (e void) + (when (or (extent-property e 'smiley-extent) + (extent-property e 'smiley-annotation)) + (delete-extent e))) buffer st nd) (goto-char (or st (point-min))) (setq beg (point)) @@ -259,8 +258,8 @@ above them." (end (match-end group)) (glyph (and (or (eq start 1) - (not (string-match "\\(\\^\\|;\\|_\\);)" - (buffer-substring + (not (string-match "\\(\\^\\|;\\|_\\);)" + (buffer-substring (1- start) (+ start 2))))) (smiley-create-glyph (buffer-substring start end) file)))) @@ -309,15 +308,46 @@ Mouse button3 - menu")) (eq (char-after (1- (point))) ?\())) t))) +(defun smiley-toggle-buffer (&optional arg buffer st nd) + "Toggle displaying smiley faces. +With arg, turn displaying on if and only if arg is positive." + (interactive "P") + (let (on off) + (map-extents + (lambda (e void) + (let (ant) + (if (annotationp (setq ant (extent-property e 'smiley-annotation))) + (if (eq (extent-property e 'invisible) nil) + (setq off (cons (cons ant e) off)) + (setq on (cons (cons ant e) on))))) + nil) + buffer st nd) + (if (and (not (and (numberp arg) (< arg 0))) + (or (and (numberp arg) (> arg 0)) + (null on))) + (if off + (while off + (reveal-annotation (caar off)) + (set-extent-property (cdar off) 'invisible t) + (setq off (cdr off))) + (smiley-buffer)) + (while on + (hide-annotation (caar on)) + (set-extent-property (cdar on) 'invisible nil) + (setq on (cdr on)))))) + (defvar gnus-article-buffer) ;;;###autoload -(defun gnus-smiley-display () - "Display \"smileys\" as small graphical icons." - (interactive) +(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") (save-excursion (set-buffer gnus-article-buffer) - (article-goto-body) - (smiley-buffer (current-buffer) (point-min) (point-max)))) + (save-restriction + (widen) + (article-goto-body) + (smiley-toggle-buffer arg (current-buffer) (point) (point-max))))) (provide 'smiley) diff --git a/lisp/time-date.el b/lisp/time-date.el index c40ddbe..448bc54 100644 --- a/lisp/time-date.el +++ b/lisp/time-date.el @@ -24,6 +24,7 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'parse-time) (defun date-to-time (date) diff --git a/sample.lpath.el b/sample.lpath.el new file mode 100644 index 0000000..4a17420 --- /dev/null +++ b/sample.lpath.el @@ -0,0 +1,28 @@ +;; This is a sample of `~/.lpath.el' file. +;; +;; This file will be loaded from dgnushack.el at the compile time. It +;; is supposed to be used for telling old Emacsen where EMU, APEL or +;; CUSTOM packages have already installed. +;; +;; For instance, if you would like to make gnus with Mule 2.3 based on +;; Emacs 19.34, copy this file to `~/.lpath.el' and modify it suitably +;; for your environment. + +(when (boundp 'MULE) + (let ((EMU + ;; Where is EMU packege? + "/usr/local/share/mule/19.34/site-lisp" + ) + (APEL + ;; Where is APEL package? + "/usr/local/share/mule/site-lisp/apel" + ) + (CUSTOM + ;; Where is CUSTOM package? + "/usr/local/share/mule/site-lisp/custom" + )) + ;; No user servicable parts beyond this point. + + (when (string-match "/apel/?$" APEL) + (setq APEL (substring APEL 0 (match-beginning 0)))) + (setq load-path (nconc (list EMU APEL CUSTOM) load-path)))) diff --git a/texi/ChangeLog b/texi/ChangeLog index 42c9e20..54e7f9b 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,152 @@ +1999-12-01 14:21:19 Lars Magne Ingebrigtsen + + * gnus.texi (Topic Parameters): Addition. + (Summary Message Commands): New. + (Canceling and Superseding): Made into subsection. + +1999-11-30 10:54:31 Shenghuo ZHU + + * gnus.texi (Mail Source Specifiers): Add a note. + +1999-11-27 17:15:00 Lars Magne Ingebrigtsen + + * gnus.texi: Typo fixes and @sc. + +1999-11-26 16:59:29 Lars Magne Ingebrigtsen + + * gnus.texi (On Writing Manuals): New. + +1999-11-23 17:23:37 Shenghuo ZHU + + * gnus.texi (Mail Source Specifiers): Update. + +1999-11-23 05:07:59 Shenghuo ZHU + + * gnus.texi (Web Archive): Add nnwarchive. + +1999-11-23 03:05:32 Shenghuo ZHU + + * gnus.texi (Mail Source Specifiers): Add webmail. + +1999-11-19 12:15:23 Lars Magne Ingebrigtsen + + * gnus.texi (Slashdot): Addition. + +1999-11-17 Per Abrahamsen + + * gnus.texi (Finding the Parent): Fix example. + +1999-11-16 10:09:44 Lars Magne Ingebrigtsen + + * gnus.texi: Addition. + (present): Addition. + +1999-11-13 Simon Josefsson + + * gnus.texi (Mail Source Specifiers): Fix. Added documentation for + IMAP mail-source keywords `fetchflag' and `dontexpunge'. + +1999-11-12 18:00:56 Eli Zaretskii + + * gnus.texi (Fancy Mail Splitting): Fix @vars. + +1999-11-12 17:08:35 Gunnar Evermann + + * gnus.texi (Splitting in IMAP): @@ fix. + +1999-11-12 08:17:49 Lars Magne Ingebrigtsen + + * gnus.texi (Mail Source Specifiers): Addition. + +1999-11-12 08:17:44 Ulf Betlehem + + * gnus.texi (Mail Source Specifiers): Example. + +1999-11-12 05:26:22 Lars Magne Ingebrigtsen + + * gnus.texi (Slashdot): Addition. + +1999-11-11 04:32:57 Lars Magne Ingebrigtsen + + * message.texi (News Headers): Fix. + + * gnus.texi (Browsing the Web): New. + (Slashdot): New. + (Ultimate): New. + +1999-11-10 11:32:00 Lars Magne Ingebrigtsen + + * gnus.texi (Archived Messages): Fix. + +1999-11-07 01:28:07 Lars Magne Ingebrigtsen + + * gnus.texi (MIME Commands): Addition. + +1999-11-06 23:09:31 Lars Magne Ingebrigtsen + + * gnus.texi (Customizing Articles): Fix. + +1999-11-05 22:34:23 Lars Magne Ingebrigtsen + + * gnus.texi (Posting Styles): Addition. + +1999-10-23 Simon Josefsson + + * gnus.texi (Mail Source Specifiers): Add imap mail-source. + (IMAP): New subsection. + (SOUP): Typo. + +1999-09-27 16:07:31 Lars Magne Ingebrigtsen + + * emacs-mime.texi (New Viewers): Fix. + +1999-10-29 David S. Goldberg + + * emacs-mime.texi (Customization): Document mm-inline-override-types + +1999-09-25 10:58:17 Lars Magne Ingebrigtsen + + * message.texi (Forwarding): Updated. + + * emacs-mime.texi (New Viewers): New. + +1999-09-24 18:52:34 Lars Magne Ingebrigtsen + + * gnus.texi (Group Line Specification): Doc fix. + +1999-09-24 18:06:33 Bill White + + * gnus.texi (Article Washing): Fix. + +1999-08-27 20:47:39 Lars Magne Ingebrigtsen + + * gnus.texi (Posting Styles): Doc fix. + +1999-08-27 18:51:42 Robin S. Socha + + * gnus.texi: Typo fix. + +1999-08-27 15:09:01 Jim Meyering + + * gnus.texi (The Active File): Typo fix. + +1999-08-27 15:00:23 Yoshiki Hayashi + + * gnus.texi (Generic Marking Commands): Typo fixes. + +1999-08-27 14:46:21 Lee Willis + + * gnus.texi (Customizing Articles): More explanation. + +1999-07-10 Mike McEwan + + * gnus.texi (More Threading): Document new variable + `gnus-sort-gathered-threads-function'. + +1999-07-30 Simon Josefsson + + * gnus.texi: Added `gnus-list-identifiers' stuff. + 1999-07-09 19:41:34 Lars Magne Ingebrigtsen * gnus.texi (Using MIME): Addition. diff --git a/texi/Makefile.in b/texi/Makefile.in index 4e4391a..eb03f40 100644 --- a/texi/Makefile.in +++ b/texi/Makefile.in @@ -1,15 +1,17 @@ -infodir = @infodir@ prefix = @prefix@ +infodir = @infodir@ srcdir = @srcdir@ subdir = texi top_srcdir = @top_srcdir@ +@SET_MAKE@ +VPATH=$(srcdir) TEXI2DVI=texi2dvi -EMACS=emacs +EMACS=@EMACS@ MAKEINFO=@MAKEINFO@ -EMACSINFO=$(EMACS) -batch -q -no-site-file -INFOSWI=-l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer -XINFOSWI=-l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer +FLAGS=-batch -q -no-site-file +INFOSWI=-l ./dgnushack.el -f dgnushack-texi-format +XINFOSWI=-l ./dgnushack.el -f dgnushack-texi-add-suffix-and-format LATEX=latex DVIPS=dvips PERL=perl @@ -19,28 +21,32 @@ SHELL = /bin/sh PAPERTYPE=a4 all: gnus message emacs-mime +all-info: gnus.info message.info emacs-mime.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 -# Rule for XEmacs package. -add-info-suffix: - cd ../lisp && $(EMACS) -batch -q -no-site-file \ - -l dgnushack.el -f dgnushack-add-info-suffix-maybe - -remove-info-suffix: - for file in gnus message emacs-mime gnus-ja message-ja; do \ - if test -f $$file.texi_; then \ - mv $$file.texi_ $$file.texi; \ - fi; \ - done +gnus-ja.info: gnus-ja.texi gnus-faq-ja.texi +message-ja.info: message-ja.texi most: texi2latex.elc latex latexps +%.info: %.texi + if test $(MAKEINFO) = no; then \ + cd ../lisp && $(EMACS) $(FLAGS) $(XINFOSWI) ../texi/$<; \ + else \ + makeinfo -o $@ $<; \ + fi + .SUFFIXES: .texi .dvi .ps .texi: if test $(MAKEINFO) = no; then \ - $(EMACSINFO) $< $(XINFOSWI); \ + cd ../lisp && $(EMACS) $(FLAGS) $(INFOSWI) ../texi/$<; \ else \ makeinfo $<; \ fi @@ -61,7 +67,14 @@ clean: *.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.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] makeinfo: makeinfo -o gnus gnus.texi @@ -74,7 +87,7 @@ latex: gnus.texi texi2latex.elc $(EMACS) -batch -q -no-site-file gnus.texi -l ./texi2latex.elc -f latexi-translate latexps: - make texi2latex.elc + $(MAKE) texi2latex.elc rm -f gnus.aux egrep -v "label.*Index|chapter.*Index" gnus.latexi > gnus.tmplatexi1 $(LATEX) gnus.tmplatexi1 @@ -91,22 +104,22 @@ latexps: $(DVIPS) -t $(PAPERTYPE) -f gnus.dvi > gnus.ps pss: - make latex - make latexps + $(MAKE) latex + $(MAKE) latexps psout: - make latex - make latexboth - make out + $(MAKE) latex + $(MAKE) latexboth + $(MAKE) out latexboth: rm -f gnus-manual-a4.ps.gz gnus-manual-standard.ps.gz - make latexps + $(MAKE) latexps mv gnus.ps gnus-manual-a4.ps gzip gnus-manual-a4.ps sed 's/,a4paper/,letterpaper/' gnus.latexi > gnus-standard.latexi mv gnus-standard.latexi gnus.latexi - make latexps PAPERTYPE=letter + $(MAKE) latexps PAPERTYPE=letter mv gnus.ps gnus-manual-standard.ps gzip gnus-manual-standard.ps @@ -118,15 +131,11 @@ out: gnus-manual-a4.ps.gz \ /hom/larsi/www_docs/www.gnus.org/documents -veryclean: - make clean +veryclean: clean rm -f gnus.dvi gnus.ps texi2latex.elc -distclean: - make clean - rm -f *.orig *.rej *.elc *~ gnus gnus-[0-9] gnus-[0-9][0-9] Makefile - rm -f message message-[0-9] - rm -f emacs-mime +distclean: clean + rm -f Makefile install: $(SHELL) $(top_srcdir)/mkinstalldirs $(infodir) @@ -141,13 +150,13 @@ install: tmps: if [ ! -e tmp ]; then mkdir tmp; fi - make screens - make herdss - make etcs - make piconss - make xfaces - make smiley - make miscs + $(MAKE) screens + $(MAKE) herdss + $(MAKE) etcs + $(MAKE) piconss + $(MAKE) xfaces + $(MAKE) smiley + $(MAKE) miscs herdss: cd herds ; for i in new-herd-[0-9]*.gif; do echo $$i; giftopnm $$i | pnmcrop -white | pnmmargin -white 9 | pnmscale 2 | pnmconvol convol5.pnm | ppmtopgm | pnmdepth 255 | pnmtops -width 100 -height 100 -noturn > ../tmp/`basename $$i .gif`.ps; done @@ -191,9 +200,9 @@ pspackage: tar czvf pspackage.tar.gz gnus-faq.texi gnus.texi herds misc pagestyle.sty picons pixidx.sty postamble.tex ps screen smilies splitindex texi2latex.el xface Makefile README etc complete: - make texi2latex.elc - make tmps - make pss + $(MAKE) texi2latex.elc + $(MAKE) tmps + $(MAKE) pss Makefile: $(srcdir)/Makefile.in ../config.status cd .. \ diff --git a/texi/emacs-mime.texi b/texi/emacs-mime.texi index 93e1d6e..225a5f5 100644 --- a/texi/emacs-mime.texi +++ b/texi/emacs-mime.texi @@ -746,6 +746,7 @@ returned as a result of this analysis. * Handles:: Handle manipulations. * Display:: Displaying handles. * Customization:: Variables that affect display. +* New Viewers:: How to write your own viewers. @end menu @@ -898,10 +899,46 @@ library will display it externally (e.g. with @samp{ImageMagick} or makes the library display all inline images as inline, regardless of their size. +@item mm-inline-override-p +@code{mm-inlined-types} may include regular expressions, for example to +specify that all @samp{text/.*} parts be displayed inline. If a user +prefers to have a type that matches such a regular expression be treated +as an attachment, that can be accomplished by setting this variable to a +list containing that type. For example assuming @code{mm-inlined-types} +includes @samp{text/.*}, then including @samp{text/html} in this +variable will cause @samp{text/html} parts to be treated as attachments. @end table +@node New Viewers +@section New Viewers + +Here's an example viewer for displaying @code{text/enriched} inline: + +@lisp +(defun mm-display-enriched-inline (handle) + (let (text) + (with-temp-buffer + (mm-insert-part handle) + (save-window-excursion + (enriched-decode (point-min) (point-max)) + (setq text (buffer-string)))) + (mm-insert-inline handle text))) +@end lisp + +We see that the function takes a @sc{mime} handle as its parameter. It +then goes to a temporary buffer, inserts the text of the part, does some +work on the text, stores the result, goes back to the buffer it was +called from and inserts the result. + +The two important helper functions here are @code{mm-insert-part} and +@code{mm-insert-inline}. The first function inserts the text of the +handle in the current buffer. It handles charset and/or content +transfer decoding. The second function just inserts whatever text you +tell it to insert, but it also sets things up so that the text can be +``undisplayed' in a convenient manner. + @node Composing @chapter Composing diff --git a/texi/gnus-faq-ja.texi b/texi/gnus-faq-ja.texi index 31e588e..8cf1711 100644 --- a/texi/gnus-faq-ja.texi +++ b/texi/gnus-faq-ja.texi @@ -6,8 +6,8 @@ @node Frequently Asked Questions @section $BIQHK$K?R$M$i$l$kR2p(B -$B$3$NJ8=q$O!"(B Semi-gnus $B$KBP$9$k$h$/$"$ke$GF0:n$9$k%M%C%H%K%e!<%9!&%j!<%@!<(B / $BEE;R%a!<%k!&%f!<(B -$B%6!e$GF0:n$9$k%M%C%H%K%e!<%9!&%j!<%@!<(B / $BEE;R%a!<%k!&%f!<(B +$B%6!$=$&$H7h0U$7$^$7$?!#(B -$B$7$+$7!"(B Gnus $BC1FH$G$O(B MIME $B2=$5$l$?5-;v!&%a!<%k$rFI$`$3$H$O$G$-$^$;$s!#(B +$B$7$+$7!"(B Gnus $BC1FH$G$O(B MIME $B2=$5$l$?5-;v!&%a!<%k$rFI$`$3$H$O$G$-$^$;$s!#(B $B$=$3$G!"(B Emacs $B>e$G(B MIME $B%5%]!<%H$r$9$k$?$a$N%Q%C%1!<%8$G$"$k(B SEMI $B$r;H(B -$BMQ$7$F0lIt$N?M$?$A$,(B Gnus $B$r;HMQ$9$k$h$&$K$J$j$^$7$?!#$7$+$7!"$3$l$K$O(B -Gnus $B$K(B patch $B$r$"$F$kI,MW$,$"$k>e$K%*%j%8%J%k$N(B Gnus ($B$3$A$i$b(B +$BMQ$7$F0lIt$N?M$?$A$,(B Gnus $B$r;HMQ$9$k$h$&$K$J$j$^$7$?!#$7$+$7!"$3$l$K$O(B +Gnus $B$K(B patch $B$r$"$F$kI,MW$,$"$k>e$K%*%j%8%J%k$N(B Gnus ($B$3$A$i$b(B Quassia-Gnus $B$H8F$P$l3+H/ESCf$G$7$?(B)$B$NJQ99FbMF$K$h$C$F$O$=$N(B patch $B<+BN(B -$B$b:n$jD>$5$J$1$l$P$J$j$^$;$s$G$7$?!#$=$s$J(B 1997$BG/$N(B11$B7n!"$5$J$1$l$P$J$j$^$;$s$G$7$?!#$=$s$J(B 1997$BG/$N(B11$B7n!" $B$O<~0O(B($B9%$-/62I]$r46$8$k$+$bCN$l$^$;$s!"$7$+$7!"(B -$B$"$J$?$,$=$N5!G=$rI,MW$K$J$k$^$G$OJ#;($J5!G=$N$[$H$s$I$rL5;k$9$k$3$H$,$G(B -$B$-$^$9!#(B $B$b$7!"$"$J$?$,$^$"$^$"$NNL$N%a%$%k$ro$KN.NL$NB?$$%a!<%j%s%0%j%9%H$K;22C(B -$B$7$F$$$k$N$G$"$l$P!"$"$J$?$O(B Semi-gnus $B$G%a%$%k$rFI$`$?$a$ND4::$r$O$8$a(B -$B$?$/$J$k$G$7$g$&!#(B +T-gnus $B$N:GBg$N6/$_$O%*%j%8%J%k$N(B Gnus $B$+$i0z$-7Q$,$l$?!"6/NO$J%+%9%?%^(B +$B%$%:5!G=$H(B SEMI $B$,$b$?$i$96/NO$J(BMIME $B%5%]!<%H$K$"$j$^$9!#:G=i$N0lJM$G$O(B +$B$3$N%+%9%?%^%$%:5!G=$NK-IY$5$KB?>/62I]$r46$8$k$+$bCN$l$^$;$s!"$7$+$7!"$"(B +$B$J$?$,$=$N5!G=$rI,MW$K$J$k$^$G$OJ#;($J5!G=$N$[$H$s$I$rL5;k$9$k$3$H$,$G$-(B +$B$^$9!#(B $B$b$7!"$"$J$?$,$^$"$^$"$NNL$N%a%$%k$ro$KN.NL$NB?$$%a!<%j%s%0%j%9%H$K;22C$7(B +$B$F$$$k$N$G$"$l$P!"$"$J$?$O(B T-gnus $B$G%a%$%k$rFI$`$?$a$ND4::$r$O$8$a$?$/$J(B +$B$k$G$7$g$&!#(B $B$3$N(B FAQ $B$O!"NkLZ7=0l$K$h$C$FJ]$NJ}K!(B($B%a%$%k!"%M%C%H%K%e!<%9Ey(B)$B$G>pJs$rF@$h$&$H$9$kA0$K!"$^$:$3$N(B FAQ +$BB>$NJ}K!(B($B%a%$%k!"%M%C%H%K%e!<%9Ey(B)$B$G>pJs$rF@$h$&$H$9$kA0$K!"$^$:$3$N(B FAQ $B$r8+$F$_$F$/$@$5$$!#(B $B$3$N>pJs$O(B Semi-gnus (Ja) $B%a%$%j%s%0!&%j%9%H$N1g=u$r!"(B APEL $B$,I,MW$K$J$j$^$9$,!"I,MW$J%P!<%8%g(B -$B%s$O(B FLIM / SEMI (WEMI) $B%Q%C%1!<%8Fb$N(B README $B$r;2>H$7$F$/$@$5$$!#(B +$B8=:_$N3+H/HG$N:G?7%P!<%8%g%s$O(B T-gnus 6.13 (tag: t-gnus-6_13) $B$G!"I8=`%Q%C(B +$B%1!<%8$N:G?7%P!<%8%g%s$O(B T-gnus 6.12 (tag: t-gnus-6_12) $B$G$9!#(B -Semi-gnus $B$N%P!<%8%g%s$O!"I,MW$J(B SEMI (WEMI) $B$*$h$S(B FLIM $B$N%P!<%8%g%s$K(B -$B?<$/4X78$7$F$$$^$9!#(B $BI,$:!"(B Semi-gnus $B$N%P!<%8%g%s$K$"$C$?(B SEMI (WEMI) -$B$*$h$S(B FLIM $B$r;HMQ$7$F$/$@$5$$!#(B +T-gnus 6.13 $B$r;HMQ$9$k$?$a$K$OJL%Q%C%1!<%8$N(B FLIM 1.13.1 $B0J>e(B, SEMI ($B$^(B +$B$?$O(B WEMI) 1.13.5 $B0J>e$,I,MW$G$9!#(B $B$=$NB>!"(B APEL $B$,I,MW$K$J$j$^$9$,!"I,(B +$BMW$J%P!<%8%g%s$O(B FLIM / SEMI (WEMI) $B%Q%C%1!<%8Fb$N(B README $B$r;2>H$7$F$/$@(B +$B$5$$!#(B -$B8=:_!"$+$J$j$N%O%$%Z!<%9$G%P!<%8%g%s$,>e$,$C$F$$$^$9!#(B CVS $B$N(B main trunk -(tag $BL5$7(B) $B$,0BDj%P!<%8%g%s$G$9!#(B +T-gnus $B$N%P!<%8%g%s$O!"I,MW$J(B SEMI (WEMI) $B$*$h$S(B FLIM $B$N%P!<%8%g%s$K?<$/(B +$B4X78$7$F$$$^$9!#(B $BI,$:!"(B T-gnus $B$N%P!<%8%g%s$K$"$C$?(B SEMI (WEMI) $B$*$h$S(B +FLIM $B$r;HMQ$7$F$/$@$5$$!#(B -@item -Q1.2: $BF~l=j$+$il=j$+$ie!#(B +$B%P!<%8%g%s(B 19.34 $B0J>e$N(B Mule $B5!G=IU$-(B -@item +@item XEmacs -$B%P!<%8%g%s(B 20.2 $B0J>e$N(BMule $B5!G=IU$-(B +$B%P!<%8%g%s(B 20.2 $B0J>e$N(B Mule $B5!G=IU$-(B @item Meadow @@ -165,38 +163,30 @@ Meadow $B%P!<%8%g%s(B 1.00 $B0J>e!#(B(Mule for Windows $B$G$OF0$-$^$;$s!#(B) @end itemize -$B;32,9nH~$5$s(B $B:n$NHs8x<0$N(B -@file{semi-mule23@@1934-YYMMDD.tar.gz} $B$r;HMQ$9$l$P(B Mule 2.3 / Emacs -19.34 $B$G$OF0:n$9$k$G$7$g$&!#(B - -$B$3$l$O!"J}$GF0$+$9$3$H$O$G$-$^$9$+(B? +Q1.4: T-gnus $B$r(B GNU Emacs $B$H(B XEmacs $B$NN>J}$GF0$+$9$3$H$O$G$-$^$9$+(B? -$B%=!<%9!&%l%Y%k(B( *.el )$B$G$O2DG=$G$9!#(B +$B%=!<%9!&%l%Y%k(B( *.el )$B$G$O2DG=$G$9!#(B $B$7$+$7!"%P%$%H!&%3%s%Q%$%k$7$?%U%!%$%k(B ( *.elc ) $B$O6&M-$G$-$^$;$s$N$G!"(B $B$=$l$>$l;HMQ$9$k(B emacs $B$G%P%$%H%3%s%Q%$%k$9$kI,MW$,$"$j$^$9!#(B @item -Q1.5: Semi-gnus $B$K$D$$$F$N>pJs8;$O(B? +Q1.5: T-gnus $B$K$D$$$F$N>pJs8;$O(B? @table @var @item $B%K%e!<%9%0%k!<%W(B -fj.news.reader.gnus $B$,$"$j$^$9$,!"(B Semi-gnus $B$K4X$7$F$N\$7$/$O!"(B@xref{Mailing list FAQ, $B%a!<%j%s%0%j%9%H(B}, $B$r;2>H$7$F$/$@$5$$!#(B -$B8=:_!"$3$l$,$b$C$H$b3NpJs8;$G$7$g$&!#(B Semi-gnus $B$r;H$&$N$G$"$l$P!"(B -$B@'Hs;22C$9$k$3$H$r$*$9$9$a$7$^$9!#(B +$B8=:_!"$3$l$,$b$C$H$b3NpJs8;$G$7$g$&!#(B T-gnus $B$r;H$&$N$G$"$l$P!"@'Hs(B +$B;22C$9$k$3$H$r$*$9$9$a$7$^$9!#(B $B%@%$%8%'%9%HHG%5!<%S%9$O$"$j$^$;$s!#(B @@ -207,14 +197,14 @@ fj.news.reader.gnus $B$,$"$j$^$9$,!"(B Semi-gnus $B$K4X$7$F$N$J(B Jamie Zawinski $B$N:n$G!"(BGNU -Emacs $BMQ$N(Brolodex-like $B$J%G!<%?%Y!<%9%W%m%0%i%`$G$9!#(B Jamie $B$O(B BBDB $B$N(B +Emacs $BMQ$N(Brolodex-like $B$J%G!<%?%Y!<%9%W%m%0%i%`$G$9!#(B Jamie $B$O(B BBDB $B$N(B Web $B%Z!<%8$r;}$C$F$$$^$9!#(B @file{http://people.netscape.com/jwz/bbdb/}$B$3(B -$B$l$O!"l=j$K$"$j$^$9!#(B +$B$9!#(B $B$3$l$Ol=j$K$"$j$^$9!#(B @file{http://www.netcom.com/%7Esimmonmt/index.html} -Semi-gnus $B$G;HMQ$9$k>l9g$K$O!"I,$:(B Q2.1 $B$r;2>H$7$F$/$@$5$$!#(B +T-gnus $B$G;HMQ$9$k>l9g$K$O!"I,$:(B Q2.1 $B$r;2>H$7$F$/$@$5$$!#(B @item gnus-offline -gnus-offline $B$O!";T@nC#:H(B $B$N:n$G!"(B Semi-gnus -$B$r$$$o$f$k!V%*%U%i%$%s;HMQ!W(B($B%K%e!<%95-;v!"%a%$%k$NAw $B$N:n$G!"(B T-gnus $B$r(B +$B$$$o$f$k!V%*%U%i%$%s;HMQ!W(B($B%K%e!<%95-;v!"%a%$%k$NAwuBV$G9T$&(B)$B$9$k$3$H$rMF(B -$B0W$K$9$k$?$a$N%Q%C%1!<%8$G$9!#(B - -$BF~H$7$F2<$5$$!#(B -@item -Q1.8: Semi-gnus $B$N5/F0$rAa$/$9$k$K$O(B? +@item +Q1.8: T-gnus $B$N5/F0$rAa$/$9$k$K$O(B? $B9XFI$7$F$$$J$$%0%k!<%W$r(B ``kill'' (*Group* $B%P%C%U%!!<$G(B C-k) $B$7$F$"$k$3(B $B$H$r3NG'$7$F$/$@$5$$!#$=$7$F!">o$K(B ``.newsrc'' $B$r>.$5$/J]$D$h$&$K$7$F$/(B @@ -283,47 +267,47 @@ Q1.8: Semi-gnus $B$N5/F0$rAa$/$9$k$K$O(B? @itemize @bullet @item -Q2.1: Semi-gnus $B$N%P!<%8%g%s$r$"$2$?$i(B BBDB $B$,F0$+$J$/$J$C$F$7$^$$$^$7$?!#(B +Q2.1: T-gnus $B$N%P!<%8%g%s$r$"$2$?$i(B BBDB $B$,F0$+$J$/$J$C$F$7$^$$$^$7$?!#(B Semi-gnus 6.8 $B0J9_$N%P!<%8%g%s$G$O!"%*%j%8%J%k$N(B bbdb-gnus.el $B$OF0:n$7$^(B -$B$;$s!#(B $BH$9$k$h$&$K$9$k!#(B $B$b$7!"%*%j%8%J%k$N(B Gnus (September $B0J9_(B) $B$r;H$C$F$$$k$N$G$"$l$P!"$3$NJ}(B $BK!$,NI$$$G$7$g$&!#(B @item -bbdb/gnus-update-record $B$r(B gnus-article-prepare-hook $B$NBe$j$K(B +bbdb/gnus-update-record $B$r(B gnus-article-prepare-hook $B$NBe$j$K(B gnus-article-display-hook $B$KDI2C$9$k!#(B @end enumerate -a $B$NJ}K!!"$*$h$S(B bbdb-user-mail-names $B$KBP1~$7$?(B BBDB 2.00.01 $B$KBP$9$k(B -patch $B!"4pK\E*$J@_DjNc$,!"(B +a $B$NJ}K!!"$*$h$S(B bbdb-user-mail-names $B$KBP1~$7$?(B BBDB 2.00.01 $B$KBP$9$k(B +patch $B!"4pK\E*$J@_DjNc$,!"(B @file{http://www.mdcnet.co.jp/~keiichi/bbdb.shtml} $B$K$"$j$^$9!#(B @item -Q2.2: hook $B$r@_Dj$7$?$i(B Semi-gnus $B$NF0:n$,$*$+$7$/$J$C$?(B +Q2.2: hook $B$r@_Dj$7$?$i(B T-gnus $B$NF0:n$,$*$+$7$/$J$C$?(B -$BDL>o$NJQ?t$G$bF1MM$G$9$,!"(B Semi-gnus $B$G$OB?$/$N(B hook $B$K=i4|CM$,@_Dj$5$l(B -$B$F$$$^$9!#(B +$BDL>o$NJQ?t$G$bF1MM$G$9$,!"(B T-gnus $B$G$OB?$/$N(B hook $B$K=i4|CM$,@_Dj$5$l$F$$(B +$B$^$9!#(B -$B$3$NCM$rJQ99$7$h$&$H$7$F!"JQ?t$,Dj5A$5$l$F$$$k%U%!%$%k$r%m!<%I$9$kA0$K(B -setq / add-hook $BEy$r9T$&$H!"$3$l$i$N=i4|CM$,@_Dj$5$l$:!"(B Semi-gnus $B$,@5(B -$B>o$KF0:n$7$J$/$J$k>l9g$,$"$j$^$9!#(B($BFC$K(B Semi-gnus $B$N%P!<%8%g%s$,JQ$C$?>l(B -$B9g(B) +$B$3$NCM$rJQ99$7$h$&$H$7$F!"JQ?t$,Dj5A$5$l$F$$$k%U%!%$%k$r%m!<%I$9$kA0$K(B +setq / add-hook $BEy$r9T$&$H!"$3$l$i$N=i4|CM$,@_Dj$5$l$:!"(B T-gnus $B$,@5>o$K(B +$BF0:n$7$J$/$J$k>l9g$,$"$j$^$9!#(B($BFC$K(B T-gnus $B$N%P!<%8%g%s$,JQ$C$?>l9g(B) -$B$3$l$rKI$0$?$a$K$b!"(B Semi-gnus $B$K4X$9$k@_Dj$O$G$-$k$@$1(B ~/.gnus.el $BFb$G(B -$B9T$&$h$&$K$7$F$/$@$5$$!#(B +$B$3$l$rKI$0$?$a$K$b!"(B T-gnus $B$K4X$9$k@_Dj$O$G$-$k$@$1(B ~/.gnus.el $BFb$G9T$&(B +$B$h$&$K$7$F$/$@$5$$!#(B @item -Q2.3: $B08@h$K$h$C$F(B Signature $B$rJQ99$9$k$K$O(B? +Q2.3: $B08@h$K$h$C$F(B Signature $B$rJQ99$9$k$K$O(B? -SEMI $B$K$O(B signature.el $B$H$$$&$3$N$?$a$N%D!<%k$,IUB0$7$F$$$^$9!#;HMQJ}K!$O0J2<$N$H$*$j$G$9!#(B +SEMI $B$K$O(B signature.el $B$H$$$&$3$N$?$a$N%D!<%k$,IUB0$7$F$$$^$9!#;HMQJ}K!(B +$B$O0J2<$N$H$*$j$G$9!#(B tm $B$N(B info $B$NFbMF$r(B SEMI $B$K9g$o$;$FJQ99$7$?$b$N$G$9!#(B @@ -344,7 +328,7 @@ SEMI $B$K$O(B *signature* $B$H$$$&(B signature $B$N<+F0@ZBX$((B tool $B$, @defvar mime-setup-use-signature -$B$3$NJQ?t$,(B @code{nil} $B0J30$N;~!"(B@file{signature.el} $B$r;H$$$^$9!#=i4|CM$O(B +$B$3$NJQ?t$,(B @code{nil} $B0J30$N;~!"(B@file{signature.el} $B$r;H$$$^$9!#=i4|CM$O(B @code{t} $B$G$9!#(B @end defvar @@ -391,43 +375,43 @@ gnus-posting-style $B$r;HMQ$9$k;v$b$G$-$^$9!#(B @itemize bullet @item -Q5.1: $B%a%$%j%s%0!&%j%9%H$+$iC&B`$9$k$K$O(B? +Q5.1: $B%a%$%j%s%0!&%j%9%H$+$iC&B`$9$k$K$O(B? @table @var -@item $BF|K\8lMQ(B +@item $BF|K\8lMQ(B @file{semi-gnus-ja-unsubscribe@@meadow.scphys.kyoto-u.ac.jp} $B$K6u$N%a%$(B $B%k$rAw$C$F2<$5$$!#(B(Subject $B$bITMW$G$9!#(B) -@item $B1Q8lMQ(B +@item $B1Q8lMQ(B @file{semi-gnus-en-unsubscribe@@meadow.scphys.kyoto-u.ac.jp} $B$K6u$N%a%$(B $B%k$rAw$C$F2<$5$$!#(B(Subject $B$bITMW$G$9!#(B) @end table @item -Q5.2: $B%a%$%j%s%0!&%j%9%H$K;22C$9$k$K$O(B? +Q5.2: $B%a%$%j%s%0!&%j%9%H$K;22C$9$k$K$O(B? -Semi-gnus $B$G$O!"MxMQMh$NB?$/$N%Q%C%1!<%8$G:NMQ$5$l$F$$(B -$B$k3+H/BN@)$OMh$NB?$/$N%Q%C%1!<%8$G:NMQ$5$l$F$$$k(B +$B3+H/BN@)$O$C$F$/$/$@$5$$!#(B(Subject $B$bITMW$G$9!#(B) +$B$F!"Aw$i$l$F$/$k%a!<%k$N;X<($K=>$C$F$/$/$@$5$$!#(B(Subject $B$bITMW$G$9!#(B) -@item $B1Q8lMQ(B +@item $B1Q8lMQ(B @file{semi-gnus-en-help@@meadow.scphys.kyoto-u.ac.jp} $B$K6u$N%a!<%k$rAw$C(B $B$F!"Aw$i$l$F$/$k%a!<%k$N;X<($K=>$C$F$/$@$5$$!#(B(Subject $B$bITMW$G$9!#(B) @end table @item -Q5.3: Semi-gnus $B$K4X$9$kJ}?K7hDj$O(B? +Q5.3: T-gnus $B$K4X$9$kJ}?K7hDj$O(B? -Semi-gnus $B$N3+H/Ey$K4X$9$kJ}?K$N7hDj$OA4$F(B Semi-gnus-ja/en $B%a!<%j%s%0%j(B -$B%9%HFb$G9T$o$l$^$9!#(B $B3F%a%s%P!<$+$i$NDs0F$O%"%s%1!<%H$N7A$GDs0F$5$l7h5D(B -$B$5$l$^$9$,!"$=$NJ}K!$Oe$G$J$1$l(B diff --git a/texi/gnus-faq.texi b/texi/gnus-faq.texi index abc9054..a729a70 100644 --- a/texi/gnus-faq.texi +++ b/texi/gnus-faq.texi @@ -100,7 +100,7 @@ Per Abrahamsen writes :@* The internal easymenu.el interface changed between 19.28 and 19.29 in order to make it possible to create byte compiled files that can be shared between Gnu Emacs and XEmacs. The change is upward -compatible, but not downward compatible. +compatible, but not downward compatible. This gives the following compatibility table: @example @@ -131,10 +131,10 @@ list is mainly for developers and testers. Gnus has a home World Wide Web page at@* @file{http://www.ifi.uio.no/~larsi/ding.html}. - + Gnus has a write up in the X Windows Applications FAQ at@* @file{http://www.ee.ryerson.ca:8080/~elf/xapps/Q-III.html}. - + The Gnus manual is also available on the World Wide Web. The canonical source is in Norway at@* @file{http://www.ifi.uio.no/~larsi/ding-manual/gnus_toc.html}. @@ -158,7 +158,7 @@ PostScript copies of the Gnus Reference card are available from@* United States. And@* @file{ftp://marvin.fkphy.uni-duesseldorf.de/pub/gnus/} in Germany. - + An online version of the Gnus FAQ is available at@* @file{http://www.miranova.com/~steve/gnus-faq.html}. Off-line formats are also available:@* @@ -221,7 +221,7 @@ a two-step process unlike most other packages, so you should be prepared to move the byte-compiled code somewhere. There are currently two versions of this package available. It can be obtained from@* -@file{ftp://ftp.jaist.ac.jp/pub/GNU/elisp/}. +@file{ftp://ftp.m17n.org/pub/mule/}. Be sure to apply the supplied patch. It works with Gnus through version 5.0.9. In order for all dependencies to work correctly the load sequence is as follows: @@ -277,7 +277,7 @@ Q2.3 How can I keep my nnvirtual:* groups sorted? How can I most efficiently arrange matters so as to keep my nnvirtual:* (etc) groups at the top of my group selection buffer, whilst keeping everything sorted in alphabetical order. - + If you don't subscribe often to new groups then the easiest way is to first sort the groups and then manually kill and yank the virtuals wherever you want them. @@ -557,7 +557,7 @@ like this: (gnus-auto-select-first nil))) @end lisp -and insert +and insert @lisp (setq gnus-auto-select-first t) @end lisp diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index 1115047..cfe873b 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -1,7 +1,7 @@ @c \input texinfo @c -*-texinfo-*- @setfilename gnus-ja -@settitle Semi-gnus 6.10.072 Manual +@settitle T-gnus 6.13 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -50,6 +50,7 @@ \newcommand{\gnussc}[1]{\textsc{#1}} \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}} \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}} +\newcommand{\gnusresult}[1]{\gnustt{=> #1}} \newcommand{\gnusbullet}{{${\bullet}$}} \newcommand{\gnusdollar}{\$} @@ -270,7 +271,7 @@ \thispagestyle{empty} -Copyright \copyright{} 1995,96,97 Free Software Foundation, Inc. +Copyright \copyright{} 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 @@ -305,7 +306,7 @@ This file documents gnus, the GNU Emacs newsreader. $B$3$N%U%!%$%k$O(B GNU Emacs $B$N%K%e!<%9%j!<%@$G$"$k(B gnus $B$K4X$9$k@bL@=q$G$9!#(B -Copyright (C) 1995,96 Free Software Foundation, Inc. +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 @@ -345,14 +346,14 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Semi-gnus 6.10.072 Manual +@title T-gnus 6.13 Manual @author by Lars Magne Ingebrigtsen @author by members of Semi-gnus mailing-list @page @vskip 0pt plus 1filll -Copyright @copyright{} 1995,96,97 Free Software Foundation, Inc. +Copyright @copyright{} 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 @@ -387,19 +388,19 @@ into another language, under the above conditions for modified versions. @ifinfo -Gnus $B$r;H$&$3$H$K$h$C$F(B Emacs $B$G%K%e!<%9(B (news) $B$r!J$=$l$K%a!<%k(B (mail) +Gnus $B$r;H$&$3$H$K$h$C$F(B Emacs $B$G%K%e!<%9(B (news) $B$r!J$=$l$K%a!<%k(B (mail) $B$b!KFI$`$3$H$,$G$-$^$9!#%K%e!<%9$O(B @sc{nntp}$B!"%m!<%+%k%9%W!<%k!"(Bmbox $B%U%!(B $B%$%k$J$I$N$"$i$f$k6K0-$JO$rJT=8$9$k?M$KNO$rM?$($k$h$&$K!"(Bgnus $B$O%K%e!<%9$rFI$`?M$KNO gnus-other-frame} $B$r;H$&$3$H$,$G$-$^$9!#(B $B3+;O;~$K2?$+$,$&$^$/$$$+$J$$$H$-$O(B @file{~/.gnus} $B%U%!%$%k$NCf$GJQ?t$r$$(B -$B$/$D$+$$$8$/$j$^$o$5$J$1$l$P$J$i$J$$$G$7$g$&!#$3$N%U%!%$%k$O(B +$B$/$D$+$$$8$/$j$^$o$5$J$1$l$P$J$i$J$$$G$7$g$&!#$3$N%U%!%$%k$O(B @file{~/.emacs} $B$H;w$F$$$^$9$,!"$3$A$i$O(B gnus $B$,5/F0$9$k$H$-$KFI$_9~$^$l(B $B$^$9!#(B -$B$3$N@bL@=q$G$h$/$o$+$i$J$$MQ8l$,$G$F$-$?$H$-$O!"MQ8l$N9`(B +$B$3$N@bL@=q$G$h$/$o$+$i$J$$MQ8l$,$G$F$-$?$H$-$O!"MQ8l$N9`(B (@pxref{Terminology}) $B$r;2>H$7$F$/$@$5$$!#(B @menu @@ -490,9 +491,9 @@ gnus-other-frame} $B$r;H$&$3$H$,$G$-$^$9!#(B @vindex gnus-select-method @c @head $BJQ?t(B @code{gnus-select-method} $B$O(B gnus $B$,$I$3$G%K%e!<%9$rC5$9$Y$-$+$r<((B -$B$7$^$9!#$3$NJQ?t$O$O$8$a$NMWAG$,(B @dfn{$BJ}K!(B}$B!"(B2 $BHVL\$NMWAG$,(B @dfn{$B>l=j(B} +$B$7$^$9!#$3$NJQ?t$O$O$8$a$NMWAG$,(B @dfn{$BJ}K!(B}$B!"(B2 $BHVL\$NMWAG$,(B @dfn{$B>l=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!$Gl9g$O(B +@code{gnus-nntpserver-file}$B!J@_Dj$5$l$F$$$J$$>l9g$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$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 @vindex gnus-nntp-server @@ -534,11 +535,14 @@ method) $B$K$J$j$^$9!#$3$NJ}K!$GA0$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 +@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$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) @findex gnus-group-browse-foreign-server @kindex B (Group) @@ -550,7 +554,7 @@ Gnus $B$K(B @sc{nntp} $B%5!<%P!<$NL>A0$NF~NO$rBPOCE*$K;XDj$9$k$3$H$b$G$-$^$9! @vindex gnus-secondary-select-methods @c @head -$B30It%0%k!<%W$KBP$9$k>/$70c$C$?$d$jJ}$O!"JQ?t(B +$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 @@ -622,7 +626,7 @@ Gnus $B$O!"?.Mj$G$-$k%W%m%0%i%`$N0l$D$H$7$F!"%5!<%P!<$H@\B3$G$-$J$$$H$-$O(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$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 @@ -638,12 +642,12 @@ Gnus $B$O!"?.Mj$G$-$k%W%m%0%i%`$N0l$D$H$7$F!"%5!<%P!<$H@\B3$G$-$J$$$H$-$O(B $B$H$K$+$/!"(B@kbd{M-x gnus}$B!J$b$7$/$O!"IaCJ$d$C$F$$$kJ}K!!K$G(B gnus $B$rIaDL$K(B $B5/F0$7$^$9!#$=$N8e$N%9%l!<%V(B gnus $B$O$=$l$>$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 +$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%$%k$h$j$bM%@h$5$l$^$9!#(B @@ -699,7 +703,7 @@ Gnus $B$O!"IaDL$O%0%k!<%W$,?7$7$$$+$I$&$+$r!"9XFI$7$F$$$k%0%k!<%W$H:o=|$5(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$9!#(B -$B;d$O:#$"$J$?$,2?$r9M$($F$$$k$+$rEv$F$i$l$^$9!#$I$&$9$l$P%5!<%P!<$,(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 +$B$=$N4X?t$r=q$/$3$H$O$J$$$G$7$g$&!#B>$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 +$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$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 @@ -724,7 +728,7 @@ Gnus $B$O!"IaDL$O%0%k!<%W$,?7$7$$$+$I$&$+$r!"9XFI$7$F$$$k%0%k!<%W$H:o=|$5(B @subsection $B9XFIJ}K!(B @vindex gnus-subscribe-newsgroup-method -$B?7$7$$%0%k!<%W$KAx6x$7$?$H$-$K(B gnus $B$,2?$r$9$k$+$O!"JQ?t(B +$B?7$7$$%0%k!<%W$KAx6x$7$?$H$-$K(B gnus $B$,2?$r$9$k$+$O!"JQ?t(B @code{gnus-subscribe-newsgroup-method} $B$K$h$C$F7hDj$5$l$^$9!#(B $B$3$NJQ?t$O4X?t$r4^$s$G$$$kI,MW$,$"$j$^$9!#$3$N4X?t$O?7$7$$%0%k!<%W$NL>A0(B @@ -751,7 +755,7 @@ 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 +$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 @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 @@ -768,16 +772,32 @@ 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-killed $B$9$Y$F$N?7$7$$%0%k!<%W$r:o=|$7$^$9!#(B +@item gnus-subscribe-topics +@vindex gnus-subscribe-topics +Put the groups into the topic that has a matching @code{subscribe} topic +parameter (@pxref{Topic Parameters}). For instance, a @code{subscribe} +topic parameter that looks like + +@example +"nnslashdot" +@end example + +will mean that all groups that match that regex will be subscribed under +that topic. + +If no topics match the groups, the groups will be subscribed in the +top-level topic. + @end table @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{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 +$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 @@ -807,13 +827,13 @@ options -n !alt.all !rec.all sci.all @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 +$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!"8eJ,$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 @@ -823,7 +843,7 @@ options -n !alt.all !rec.all sci.all $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 +$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 @@ -864,7 +884,7 @@ Gnus$B$O%U%!%$%k(B @file{.newsrc} $B$r$"$k%5!<%P!J}$K@\B3$9$k$3$H$,$G$-$J$$$H$-!"0u$HFI$s(B $B$@HO0O$O$9$Y$F0UL#$,L5$/$J$j$^$9!#$=$N$h$&$J$H$-$O!"%3%^%s%I(B @kbd{M-x 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%?$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 @node Startup Files @@ -893,14 +917,12 @@ gnus-group-clear-data-on-native-groups} $B$r;H$C$F!"4pK\%0%k!<%W$K4X$9$k%G!<(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 $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} $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 - -$B$A$J$_$K!"(Bgnus $B$O2?$bJQ$($F$^$;$s!#(BLars $BF1;V!"K|:P!*(B +$B$^$9!#(B @vindex gnus-save-newsrc-file @@ -920,7 +942,7 @@ gnus-group-clear-data-on-native-groups} $B$r;H$C$F!"4pK\%0%k!<%W$K4X$9$k%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!"(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 +$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 @@ -929,14 +951,14 @@ gnus-group-clear-data-on-native-groups} $B$r;H$C$F!"4pK\%0%k!<%W$K4X$9$k%G!<(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 +$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 @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 @@ -977,7 +999,7 @@ buffer)} $B$K=q$-9~$^$l$^$9!#$3$N%P%C%U%!$O(BEmacs $B$,IaDL$9$k$h$&$K<+F0J]B8 $B5/F0;~$K(B gnus $B$,$3$N%U%!%$%k$NB8:_$rH/8+$9$k$H!"(Bgnus $B$O$=$l$rFI$_9~$`$+(B $B$I$&$+$rMxMQA0$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 @@ -1020,7 +1042,7 @@ 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 @@ -1113,7 +1138,7 @@ Gnus $B$N5/F0$K@.8y$7$?8e$K!"0lHV:G8e$Ke$NJQ?t$,(B @code{nil} $B$G$J$$$H$-$K1iAU$5$l$kC;$$6J$G$9!#=i4|CM$O(B +$B>e$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 @end table @@ -1277,7 +1302,7 @@ gnus $B$,$=$l$rD4$Y$k$3$H$O$"$j$^$;$s!#(BGnus $B$OI,MW$H$9$kA4$F$NpJs$r!"% @vindex gnus-group-uncollapsed-levels $BC;$$!J>JN,$7$?!K%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.emacs.gnus} +$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 @item m @@ -1298,7 +1323,7 @@ gnus $B$,$=$l$rD4$Y$k$3$H$O$"$j$^$;$s!#(BGnus $B$OI,MW$H$9$kA4$F$NpJs$r!"% @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 +$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 @@ -1327,23 +1352,23 @@ Formatting}) $B$r@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s$^$j$?(B @vindex gnus-group-highlight $B%0%k!<%W%P%C%U%!$N%O%$%i%$%H$O(B @code{gnus-group-highlight} $BJQ?t(B -$B$K$h$C$F@)8f$5$l$F$$$^$9!#$3$l$O(B @var{(form . face)} $B$N$h$&$J$b(B -$B$N$rMWAG$K;}$DO"A[%j%9%H$G$9!#(B@var{form} $B$,2?$+(B @code{nil} $B0J30(B +$B$K$h$C$F@)8f$5$l$F$$$^$9!#$3$l$O(B @code{(@var{form} . @var{face})} $B$N$h(B +$B$&$J$b$N$rMWAG$K;}$DO"A[%j%9%H$G$9!#(B@var{form} $B$,2?$+(B @code{nil} $B0J30(B $B$KI>2A$5$l$k$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 @lisp -(face-spec-set 'my-group-face-1 +(face-spec-set 'my-group-face-1 '((t (:foreground "Red" :bold t)))) -(face-spec-set 'my-group-face-2 +(face-spec-set 'my-group-face-2 '((t (:foreground "SeaGreen" :bold t)))) -(face-spec-set 'my-group-face-3 +(face-spec-set 'my-group-face-3 '((t (:foreground "SpringGreen" :bold t)))) -(face-spec-set 'my-group-face-4 +(face-spec-set 'my-group-face-4 '((t (:foreground "SteelBlue" :bold t)))) -(face-spec-set 'my-group-face-5 +(face-spec-set 'my-group-face-5 '((t (:foreground "SkyBlue" :bold t)))) (setq gnus-group-highlight @@ -1380,7 +1405,7 @@ Formatting}) $B$r@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s$^$j$?(B 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$k8=:_$N%H%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 @@ -1391,7 +1416,7 @@ Formatting}) $B$r@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s$^$j$?(B @findex gnus-group-highlight-line @code{gnus-group-update-hook} $B$O%0%k!<%W9T$,JQ99$5$l$?$H$-$K8F$S(B $B=P$5$l$^$9!#$3$l$O(B @code{gnus-visual} $B$,(B @code{nil} $B$N$H$-$O8F$S(B -$B=P$5$l$^$;$s!#$3$N%U%C%/$O=i4|@_Dj$G$O(B +$B=P$5$l$^$;$s!#$3$N%U%C%/$O=i4|@_Dj$G$O(B @code{gnus-group-highlight-line} $B$r8F$S=P$7$^$9!#(B @node Group Maneuvering @@ -1486,7 +1511,7 @@ Formatting}) $B$r@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s$^$j$?(B $B$N%0%k!<%W$NA4$F$N8E$$5-;v$re$"$l$P!"(Bgnus $B$O$=$N%0%k!<%W$KF~$kA0$KMxMQl9g$O!"$=$N4X?t$OI=Bj$N9T$K%]%$(B +$B%s%H$r0\F0$5$;$k$+!"$$$/$D$+$N5-;v$rA*Br$9$k$+$NN>J}$+!"8eo!"(B@code{gnus-activate-level} $B$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<% $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 -@dfn{$B%0%k!<%W%9%3%"(B} (@dfn{group score}) $B$O$=$N$?$a$N$b$N$G$9!#$=$l$>$l(B -$B$N%0%k!<%W$KBP$7$F%9%3%"$r;XDj$9$k$3$H$,$G$-$^$9!#$=$7$F%0%k!<%W%P%C%U%!(B -$B$r$3$N%9%3%"$r4p$K%=!<%H$9$k$3$H$,$G$-$^$9!#$"$k$$$O!"%9%3%"=g$G%=!<%H$7(B -$B$F$=$N8e%l%Y%k$G%=!<%H$9$k$3$H$b$G$-$^$9!#!J%l%Y%k$H%9%3%"$r$R$H$^$H$a$K(B -$B$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 -$B%"$,(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(B -$B%/$H$J$j$^$9!#!J%l%Y%k$NJ}$,=EMWEY$,9b$/!"%9%3%"$NJ}$O=EMWEY$,Dc$/$J$j$^(B -$B$9!#!K!K(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 @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 +$B%]%$%s%H$H%^!<%/$N4V$NA4$F$N%0%k!<%W$K0u$r$D$1$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 +$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 +$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 @end table @@ -1867,7 +1908,7 @@ Gnus $B$ODL>o!"(B@code{gnus-activate-level} $B$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<% @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 +$B5a$a$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 @@ -1927,7 +1968,7 @@ Gnus $B%X%k%W%0%k!<%W$r:n@.$7$^$9(B (@code{gnus-group-make-help-group})$B!#( @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 +$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 @@ -1937,7 +1978,7 @@ Gnus $B%"!<%+%$%V%0%k!<%W$r:n@.$7$^$9(B @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 +$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}. @item G D @@ -1966,7 +2007,7 @@ kiboze $B%0%k!<%W$r:n@.$7$^$9!#%W%m%s%W%H$GL>A0$H!"(Bkiboze $B%0%k!<%W$K!V4^$ @kindex G u (Group) @vindex gnus-useful-groups @findex gnus-group-make-useful-group -@code{gnus-useful-groups} $B$K$"$k%0%k!<%W$N0l$D$r$D$/$j$^$9(B +@code{gnus-useful-groups} $B$K$"$k%0%k!<%W$N0l$D$r$D$/$j$^$9(B (@code{gnus-group-make-useful-group})$B!#(B @item G w @@ -1978,7 +2019,7 @@ kiboze $B%0%k!<%W$r:n@.$7$^$9!#%W%m%s%W%H$GL>A0$H!"(Bkiboze $B%0%k!<%W$K!V4^$ @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$NC5n$9$k$H$-$K(B @code{nnmail-expiry-wait} $B$H(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 +$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 @item score-file @@ -2175,10 +2216,16 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(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 -@item @var{(variable form)} +@c FIXTGNUS Is this true? +@c @item charset +@c Elements that look like @code{(charset . iso-8859-1)} will make +@c @code{iso-8859-1} the default charset; that is, the charset that will be +@c used for all articles that do not specify a charset. + +@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 +$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 @@ -2189,6 +2236,23 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(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 +@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 + +$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 +$B%?$KF~$l$k$3$H$,$G$-$^$9(B: + +@example +(posting-style + (name "Funky Name") + (signature "Funky Signature")) +@end example + @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 @@ -2219,7 +2283,7 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B @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 +$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 @@ -2228,7 +2292,7 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J9gCW$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(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 +$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 @@ -2386,7 +2450,11 @@ kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$B!#@\ @end table -$B@\F,<-$rM?$($?$H$-$O!"$3$l$i$NL?Na$OA4$F5U=g$KJB$YBX$($^$9!#(B +$B0J2<$NA4$F$NL?Na$O%W%m%;%9(B/$B@\F,<-$N=,47$K=>$$$^$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 $B$^$?!"%0%k!<%W$N0lIt$rJB$YBX$($k$3$H$b$G$-$^$9!#(B @@ -2394,43 +2462,37 @@ 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%P%C%U%!Fb$N%W%m%;%9%^!<%/!&%W%l%U%#%C%/%9;XDj$5$l$?%0%k!<%W$r!"%0(B -$B%k!<%WL>$N%"%k%U%!%Y%C%H=g$GJB$YBX$($^$9(B +$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 @item G P u @kindex G P u (Group) @findex gnus-group-sort-selected-groups-by-unread -$B%0%k!<%W%P%C%U%!Fb$N%W%m%;%9%^!<%/!&%W%l%U%#%C%/%9;XDj$5$l$?%0%k!<%W$r!"L$(B -$BFI5-;v$N?t$GJB$YBX$($^$9(B +$B%0%k!<%W$r!"L$FI5-;v$N?t$GJB$YBX$($^$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%P%C%U%!Fb$N%W%m%;%9%^!<%/!&%W%l%U%#%C%/%9;XDj$5$l$?%0%k!<%W$r!"%0(B -$B%k!<%W%l%Y%k$GJB$YBX$($^$9(B +$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 @item G P v @kindex G P v (Group) @findex gnus-group-sort-selected-groups-by-score -$B%0%k!<%W%P%C%U%!Fb$N%W%m%;%9%^!<%/!&%W%l%U%#%C%/%9;XDj$5$l$?%0%k!<%W$r!"%0(B -$B%k!<%W$N%9%3%"$GJB$YBX$($^$9(B +$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}. @item G P r @kindex G P r (Group) @findex gnus-group-sort-selected-groups-by-rank -$B%0%k!<%W%P%C%U%!Fb$N%W%m%;%9%^!<%/!&%W%l%U%#%C%/%9;XDj$5$l$?%0%k!<%W$r!"%0(B -$B%k!<%W$N%i%s%/$GJB$YBX$($^$9(B +$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}. @item G P m @kindex G P m (Group) @findex gnus-group-sort-selected-groups-by-method -$B%0%k!<%W%P%C%U%!Fb$N%W%m%;%9%^!<%/!&%W%l%U%#%C%/%9;XDj$5$l$?%0%k!<%W$r!"%P%C(B -$B%/%(%s%I$NL>A0$G%"%k%U%!%Y%C%H=g$KJB$YBX$($^$9(B +$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 @end table @@ -2451,7 +2513,7 @@ kill $B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B (@code{gnus-group-list-killed})$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 +$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 @@ -2568,7 +2630,7 @@ Gnus $B$r=*N;$7$^$9(B(@code{gnus-group-exit})$B!#(B @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$-$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 @@ -2578,7 +2640,7 @@ gnus $B$r=*N;$9$k$H$-$N:G8e$H$7$F(B @code{gnus-after-exiting-gnus-hook} $B$,8 @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: +Note: @quotation $B%_%9(B Lisa Cannifax $B$O1Q8l$N/G/$,H`=w$N(B @@ -2629,7 +2691,7 @@ Gnus $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$cl9g$O!"(Bgnus $B$O$"$J$?$,l9g$O!"(Bgnus $B$O$"$J$?$,C$7$^$9(B (@code{gnus-topic-unmark-topic})$B!#(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 - @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 +$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 @@ -2796,6 +2846,36 @@ 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 + +@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 + @item C-k @kindex C-k (Topic) @findex gnus-topic-kill-group @@ -2878,7 +2958,7 @@ Gnus $B$,CN$C$F$$$k%H%T%C%/2=$5$l$?%0%k!<%W$rA4$FI=<($7$^$9(B @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 +$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 @end table @@ -2927,7 +3007,7 @@ Gnus $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 +$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 @@ -2939,6 +3019,18 @@ Gnus $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 +In addition, the following parameters are only valid as topic +parameters: + +@table @code +@item subscribe +When subscribing new groups by topic (@pxref{Subscription Methods}), the +@code{subscribe} topic parameter says what groups go in what topic. Its +value should be a regexp to match the groups that should go in that +topic. + +@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%/$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 @@ -2977,7 +3069,7 @@ Gnus $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 +$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$r.$5$$%l%Y%k$N%0%k!<%W$N$_$r%A%'%C%/$7$^$9(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 @@ -3080,7 +3172,7 @@ Gnus @cindex restarting @findex gnus-group-restart Gnus $B$r%j%9%?!<%H$7$^$9(B (@code{gnus-group-restart})$B!#$3$l$O(B -@file{.newsrc} $B%U%!%$%k$r%;!<%V$7!"A4$F$N%5!<%P$N@\B3$rJD$8!"A4$F$N(B gnus +@file{.newsrc} $B%U%!%$%k$r%;!<%V$7!"A4$F$N%5!<%P$N@\B3$rJD$8!"A4$F$N(B gnus $B%i%s%?%$%`JQ?t$r%/%j%"$7$?8e!"(Bgnus $B$r$b$&0lEY:G=i$+$i3+;O$7$^$9!#(B @end table @@ -3112,7 +3204,7 @@ Gnus $B$r%j%9%?!<%H$7$^$9(B (@code{gnus-group-restart})$B!#$3$l$O(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%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 @@ -3250,6 +3342,7 @@ Gnus $B$K!"$"$J$?$,:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k$HJXMx(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 +* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.'' * Canceling and Superseding:: $B!X$"$!!"$"$s$J$U$&$K8@$&$s$8$c$J$+$C$?!#!Y(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 @@ -3262,6 +3355,8 @@ Gnus $B$K!"$"$J$?$,:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k$HJXMx(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$rA0$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 @@ -3300,12 +3396,17 @@ 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 @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 -$B$b$7$3$l$K2fK}$J$i$J$$$N$G$"$l$P!"B>$N4X?t$rBe$o$j$K;H$&$3$H$,$G$-$^$9!#(B +$B$b$7$3$l$K2fK}$J$i$J$$$N$G$"$l$P!"B>$N4X?t$rBe$o$j$K;H$&$3$H$,$G$-$^$9(B: + +@lisp +(setq gnus-extract-address-components + 'mail-extract-address-components) +@end lisp @vindex gnus-summary-same-subject @code{gnus-summary-same-subject} $B$O:#FI$s$G$$$k5-;v$,!"$=$NA0$N5-;v$HF1(B @@ -3318,7 +3419,7 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From @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 +$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 @@ -3330,7 +3431,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 +$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 @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 @@ -3339,6 +3441,9 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From $B40A4$J(B @code{From} $BMs!#(B @item n $BL>A0!J(B@code{From} $BMs$h$j!K!#(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 @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 @@ -3377,7 +3482,7 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From @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%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 @item V @@ -3424,6 +3529,83 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From $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$"$^$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<($9$k$+(B, $B$$$DI=<($9$k$+!#(B + +@enumerate +@item +@vindex gnus-extra-headers +$BDI2C$N%X%C%@!<$N>pJs$O(B @code{gnus-extra-headers} $B$K$h$j@)8f$5$l$^$9!#$3(B +$B$l$O%X%C%@!<$N%7%s%\%k$N%j%9%H$G$9!#Nc$($P(B: + +@lisp +(setq gnus-extra-headers + '(To Newsgroups X-Newsreader)) +@end lisp + +$B$3$l$O!"(Bgnus $B$,$3$l$i$N(B3$B$D$N%X%C%@!<$rl9gLrN)$A$^$9!#$7$+$7!"0J2<$N$b$N$r(B @file{overview.fmt} $B%U%!%$(B +$B%k$N:G8e$KDI2C$9$k$h$&$K(B nntp $B4IM} 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 +$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 @@ -3563,7 +3746,7 @@ Gnus $B$,)$a$^$9!#$3$NJQ?t$,(B @code{t}$B$Gl9g$H$7$F!"$3$NJQ?t$,(B +$B$&$,L5$+$m$&$,!"(Bgnus $B$O$=$l$rA*Br$7$^$9!#FCJL$J>l9g$H$7$F!"$3$NJQ?t$,(B @code{quietly} $B$G$"$k$H!"(Bgnus $B$O3NG'$r$;$:$K!"e$NL?Na$H0c$&$N$O!"(B@kbd{l} +(@code{gnus-summary-pop-article})$B!#$3$NL?Na$,>e$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 @@ -3715,12 +3898,12 @@ Gnus $B$,o$K8F$P$l$^$9!#$=$l$O5-;v$K4{FI$N0u$r(B -$BIU$1$k$?$a$K$"$j$^$9!#=i4|CM$O(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 +$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 @end table @@ -3759,7 +3942,7 @@ Gnus $B$,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 +$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 @@ -3888,7 +4073,7 @@ Gnus $B$,l9g$O!"$=$l$r(B @code{$B%]%9%H%^%9%?!<(B} $B$K$b:FAw$7$?$$$H;W$&$G(B -$B$7$g$&!#(BOrdnung mu,A_(B sein!) +$B$7$g$&!#(BOrdnung muß sein!) $B$3$NL?Na$O%W%m%;%9(B/$B@\F,0z?t$N=,47$K=>$$$^$9(B (@pxref{Process/Prefix})$B!#(B @@ -3957,7 +4142,7 @@ Gnus $B$,pJs$,$"$j$^$9!#(B +@node Summary Message Commands +@subsection Summary Message Commands + +@table @kbd +@item S y +@kindex S y (Summary) +@findex gnus-summary-yank-message +Yank the current article into an already existing Message composition +buffer (@code{gnus-summary-yank-message}). This command prompts for +what message buffer you want to yank into, and understands the +process/prefix convention (@pxref{Process/Prefix}). + +@end table + + @node Canceling and Superseding -@section $B5-;v$rC$9(B +@subsection $B5-;v$rC$9(B @cindex canceling articles @cindex superseding articles @@ -4044,7 +4244,7 @@ Prefixes})$B!#(B $B$h$C$F(B @code{Message-ID} $B%X%C%@!<$r(B @code{Cancel} $B$b$7$/$O(B @code{Supersedes} $B$KJQ99$7$F$/$@$5$$!#(B -$B$A$g$C$H3P$($F$*$$$F$/$@$5$$!'(B`supersede'$B!JBeBX!K$H$$$&8l$NCf$K(B `c' $B$OL5$$(B +$B$A$g$C$H3P$($F$*$$$F$/$@$5$$!'(B'supersede'$B!JBeBX!K$H$$$&8l$NCf$K(B 'c' $B$OL5$$(B $B$H$$$&$3$H$r!#(B @@ -4074,6 +4274,7 @@ Prefixes})$B!#(B @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$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 +$B1J1s$K5-;v$rJ]B8$7$F$*$-$?$$>l9g$O!"$=$N5-;v$r1JB3$K$9$kI,MW$,$"$j$^$9(B (@pxref{Persistent Articles})$B!#(B @item ? @@ -4156,7 +4357,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 @@ -4203,7 +4404,7 @@ Prefixes})$B!#(B $BO@J8$rFI$s$G$$$F!"$=$l$rFI$_=*$o$kA0$KMl9g!"$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 @@ -4268,7 +4469,7 @@ Prefixes})$B!#(B @kindex M t $B!J35N,!K(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} +(@code{gnus-summary-tick-article-forward})$B!#(B @xref{Article Caching}. @item M ? @itemx ? @@ -4276,7 +4477,7 @@ Prefixes})$B!#(B @kindex M ? $B!J35N,!K(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 +(@code{gnus-summary-mark-as-read-forward})$B!#(B@xref{Article Caching}. @item D @kindex D $B!J35N,!K(B @@ -4309,7 +4510,7 @@ Prefixes})$B!#(B @item M C-c @kindex M C-c $B!J35N,!K(B @findex gnus-summary-catchup-all -$B%0%k!<%W$N$9$Y$F$N5-;v$K!=!=2D;k5-;v$dJ]N15-;v$G$5$($b!"4{FI$N0u$rIU$1$^$9(B +$B%0%k!<%W$N$9$Y$F$N5-;v$K!=!=2D;k5-;v$dJ]N15-;v$G$5$($b!"4{FI$N0u$rIU$1$^$9(B (@code{gnus-summary-catchup-all})$B!#(B @item M H @@ -4376,6 +4577,41 @@ Prefixes})$B!#(B $B$=$N5-;v$K0\F0$7$^$9!#=i4|CM(B @code{t} $B$G$9!#(B +@node Generic Marking Commands +@subsection Generic Marking Commands + +$B5-;v$K2D;k0u$rIU$1$kL?Na(B (@kbd{!}) $B$K$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 + +$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$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 +$B$?$a$K$O(B @kbd{M M C-h} $B$rF~NO$7$F$/$@$5$$(B---$B$3$N%^%K%e%"%k$G0lMw$r=P$9$K(B +$B$OB?2a$.$^$9!#(B + +$B$3$l$i$NL?Na$rD>@\;H$&$3$H$O$G$-$^$9$,!"$[$H$s$I$NMxMQl9g$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 @@ -4511,6 +4747,12 @@ Prefixes})$B!#(B $B35N,%P%C%U%!$r2??M$+$NCxe=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 @@ -4800,7 +5047,7 @@ Gnus $B$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 @@ -4810,7 +5057,7 @@ Gnus $B$OZ$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 @@ -4847,8 +5094,8 @@ 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$-$k$@$1>/$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%@!<$Nl9g$G$b!"8E$$%X%C%@!<$N$C$F!"I{%9%l%C(B +$B%I$r=i4|@_Dj$N(B @code{gnus-thread-sort-by-number} $B$GJB$S49$($k$H!"1~Ez$N(B +$BJ}$,$=$l$,1~Ez$7$F$$$k5-;v$h$j@h$K8=$l$k$3$H$,$"$j$^$9!#%0%k!<%W%Q%i%a!<(B +$B%?$dE,@Z$J%U%C%/(B ($BNc$($P(B @code{gnus-summary-generate-hook}) $B$G$3$NJQ?t$r(B +$BBe$o$j$NCM(B ($BNc$($P!"(B@code{gnus-thread-sort-by-date}) $B$K@_Dj$9$k$3$H$G!"(B +$B$=$N$h$&$J>l9g$K!"$h$jO@M}E*$JI{%9%l%C%I$N=gHV$r@8@.$9$k$3$H$,$G$-$^$9!#(B + @end table @@ -4920,7 +5177,7 @@ 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$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 -$B%9%3%"!"I=Bj!"$=$7$F:G8e$KHV9f!"$N=g$KJB$SBX$($?$$$N$G$"$l$P!"o$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 +$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 @@ -5277,10 +5536,10 @@ 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!#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 @@ -5303,7 +5562,7 @@ Gnus $B$O$"$J$?$,FI$`$G$"$m$&5-;v$h$j$b$?$/$5$s$N5-;v$rJ}$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 @@ -5311,9 +5570,9 @@ Gnus $B$O$"$J$?$,FI$`$G$"$m$&5-;v$h$j$b$?$/$5$s$N5-;v$rpJs$r%"%/%F%#%V%U%!%$%k(B +$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%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 @@ -5374,8 +5633,8 @@ gnus $B$,4{$KFI$s$@5-;v$r0l;~J]B8$7$F$*$/$H$3$m$G$9!#$3$l$O$b$A$m$s!"$"$J$?(B $BMQNL$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 @@ -5467,7 +5726,7 @@ 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$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$-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 @@ -5478,7 +5737,7 @@ 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 @vindex gnus-default-article-saver -Gnus $B$,$"$J$?$NK>$`$H$*$j$K$J$k$h$&$K!"JQ?t(B +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#4$D(B $B$N4{@=4X?t$r;H$&;v$,$G$-$^$9$7!"<+J,<+?H$N4X?t$r:n$k;v$b$G$-$^$9!#(B @@ -5490,7 +5749,7 @@ Gnus $B$,$"$J$?$NK>$`$H$*$j$K$J$k$h$&$K!"JQ?t(B @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$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>$r$rl=j$rDs0F$9$k;v$,$G$-$^$9!#Nc$($P!"(Bgnus $B$K4XO"$7$ $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 +$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 @@ -5634,8 +5893,8 @@ gnus $B$K5-;v$rJ]B8$9$k>l=j$rDs0F$9$k;v$,$G$-$^$9!#Nc$($P!"(Bgnus $B$K4XO"$7$ (setq gnus-default-article-saver 'gnus-summary-save-in-file) ; no encoding @end lisp -$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?$J(B -@code{nneething} $B%0%k!<%W$K$h$C$FFI$`;v$,$G$-$^$9!=!=%0%k!<%W%P%C%U%!$G(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?$J(B +@code{nneething} $B%0%k!<%W$K$h$C$FFI$`;v$,$G$-$^$9!=!=%0%k!<%W%P%C%U%!$G(B @kbd{G D} $B$H$7!"0lHV>e$N%G%#%l%/%H%j!<$r0z?t(B (@file{~/News/}) $B$H$7$FEO$7$^(B $B$9!#(B @@ -5658,7 +5917,7 @@ gnus $B$K5-;v$rJ]B8$9$k>l=j$rDs0F$9$k;v$,$G$-$^$9!#Nc$($P!"(Bgnus $B$K4XO"$7$ @cindex series @cindex article series -$B$3$l$i$9$Y$F$N4X?t$O%W%m%;%9(B/$B@\F,0z?t$N=,47(B (@pxref{Process/Prefix}) $B$r!"(B +$B$3$l$i$9$Y$F$N4X?t$O%W%m%;%9(B/$B@\F,0z?t$N=,47(B (@pxref{Process/Prefix}) $B$r!"(B $B!X0l$D$N5-;v!Y$r!X0l$D$N72!Y$H2r /dev/audio\"))) + (list '("\\\\.au$\" "sox %s -t .aiff > /dev/audio"))) @end lisp @item gnus-uu-user-view-rules-end @@ -6003,14 +6262,14 @@ 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 $BI|9f2=$7$?8e$G%U%!%$%k$,2?$i$+$N%"!<%+%$%V$G$"$k>l9g!"(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 +$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$O!"$C$F2?!)(B +* Article Miscellanina:: $BB>$N$$$m$$$m$J$b$N!#(B @end menu @@ -6073,18 +6333,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 -$B$?$$$F$$$NMxMQ/$7$@$1@Q6K@-$,8:>/$7$^$9(B---$B$=$l$O%X%C%@!<$H=p(B -$BL>$@$1$r%O%$%i%$%H$7!"%\%?%s$r2C$($^$9!#(B - @item W H h @kindex W H h $B!J35N,!K(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 $B%i%$%H$OJQ?t(B @code{gnus-header-face-alist} $B$K$7$?$,$C$F$J$5$l!"$=$l$O$=(B -$B$l$>$l$NMWAG$,(B @var{($B@55,I=8=(B $BL>A0(B $BFbMF(B)} $B$H$$$&MM<0$N%j%9%H$G$9!#(B +$B$l$>$l$NMWAG$,(B @code{(@var{$B@55,I=8=(B} @var{$BL>A0(B} @var{$BFbMF(B})} $B$H$$$&MM<0(B +$B$N%j%9%H$G$9!#(B @var{$B@55,I=8=(B}$B$O%X%C%@!<$K9gCW$9$k@55,I=8=!"(B@var{$BL>A0(B}$B$O%X%C%@!<$NL>A0$r(B $B%O%$%i%$%H$9$k$N$K;H$o$l$k%U%'%$%9(B (face) (@pxref{Faces and Fonts})$B!"(B @var{$BFbMF(B}$B$O%X%C%@!<$NCM$r%O%$%i%$%H$9$k%U%'%$%9$G$9!#:G=i$K9gCW$7$?$b$N(B @@ -6169,10 +6425,10 @@ Fonts})$B!#F1$8%a%C%;!<%8$NCf$KJ#?t$N5-;v$+$i$N0zMQ$,$"$k$H!"(Bgnus $B$O$=$l$ @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$N$h$&$J$b$N$r(B -$B;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$h$&$K$G$-(B -$B$^$9!#(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 @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 @@ -6188,6 +6444,12 @@ Fonts})$B!#F1$8%a%C%;!<%8$NCf$KJ#?t$N5-;v$+$i$N0zMQ$,$"$k$H!"(Bgnus $B$O$=$l$ ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold))) @end lisp +@cindex slash +@cindex asterisk +@cindex underline +@cindex / +@cindex * + @vindex gnus-emphasis-underline @vindex gnus-emphasis-bold @vindex gnus-emphasis-italic @@ -6209,6 +6471,13 @@ Fonts})$B!#F1$8%a%C%;!<%8$NCf$KJ#?t$N5-;v$+$i$N0zMQ$,$"$k$H!"(Bgnus $B$O$=$l$ @lisp (copy-face 'red 'gnus-emphasis-italic) @end lisp + +@vindex gnus-group-highlight-words-alist +$BG$0U$N8l$r6/D4I=<($5$;$?$$$H$-$O!"(B +@code{gnus-group-highlight-words-alist} $BJQ?t$r;H$&$3$H$,$G$-$^$9!#$3$l$O(B +@code{gnus-emphasis-alist} $B$HF1$89=J8$r;H$$$^$9!#(B@code{highlight-words} +$B%0%k!<%W%Q%i%a!<%?$r;H$&$3$H$b$G$-$^$9(B + $B5-;v$r<+F0E*$K%U%)%s$HJQ99$5$;$k$?$a$K$O(B @xref{Customizing Articles} $B$r(B $B;2>H$7$F2<$5$$!#(B @@ -6246,12 +6515,44 @@ Headers}. $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$r1#(B +$B$7$^$9!#$3$l$i$O$$$/$D$+$N%j%9%H$N%5!<%P!<$,A4$F$N(B @code{Subject} $B%X%C%@!<(B +$B$N:G=i$K$D$1$kJ8;zNs$G$9(B---$BNc$($P!"(B@samp{[zebra 4711]}$B!#(B + +@table @code + +@item gnus-list-identifiers +@vindex gnus-list-identifiers +$BI=Bj$+$i:o=|$5$l$k$Y$-I8<1$N%j%9%H$K9gCW$9$k@55,I=8=$G$9!#$3$l$O@55,I=8=(B +$B$N%j%9%H$G$"$k$3$H$b$G$-$^$9!#(B + +@end table + @item W W p @kindex W W p $B!J35N,!K(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 $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. + +(setq gnus-treat-strip-pgp t) + +;;; After hiding pgp, verify the message; +;;; only happens if pgp signature is found. + +(add-hook 'gnus-article-hide-pgp-hook + (lambda () + (save-excursion + (set-buffer gnus-original-article-buffer) + (mc-verify)))) +@end lisp @item W W P @kindex W W P $B!J35N,!K(B @@ -6259,6 +6560,22 @@ Signature}. @sc{pem} (privacy enhanced messages$B!J%W%i%$%P%7!<3HD%%a%C%;!<%8!K(B) $BItJ,$r(B $B1#$7$^$9(B (@code{gnus-article-hide-pem})$B!#(B +@item W W B +@kindex W W B ($B35N,(B) +@findex gnus-article-strip-banner +@cindex banner +@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 + @item W W c @kindex W W c $B!J35N,!K(B @findex gnus-article-hide-citation @@ -6298,15 +6615,14 @@ Gnus $B$O$I$3$N0zMQJ8$,1#$5$l$F$$$k$+$r<($9$?$a$K%\%?%s$rIU$12C$(!"J8>O$N(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$,!"(B@code{gnus-article-display-hook} -$B$KF~$l$k;v$N$G$-$kH$7$F$/$@$5$$!#(B @kindex W l $B!J35N,!K(B @findex gnus-summary-stop-page-breaking $B%Z!<%8$N6h@Z$j$r8=:_$N5-;v$+$iH$7$F2<$5$$!#(B @item W r @@ -6383,7 +6699,7 @@ Highlighting} $B$b;2>H$7$F$/$@$5$$!#(B @item W m @kindex W m $B!J35N,!K(B @findex gnus-summary-toggle-mime -$B5-;v$r(B @sc{mime} $B5-;v$H$7$FI=<($9$k$+$I$&$+$r@Z$jBX$($^$9(B +$BI=<($9$kA0$K5-;v$K(B @sc{mime} $B=hM}$rH$7$F$/$@$5$$!#(B @item W d @kindex W d $B!J35N,!K(B @findex gnus-article-treat-dumbquotes -M******** sm*rtq**t*s $B$r=hM}$7$^$9(B -(@code{gnus-article-treat-dumbquotes})$B!#(B +@vindex gnus-article-dumbquotes-map +@cindex Smartquotes +@cindex M******** sm*rtq**t*s +@cindex Latin 1 +@code{gnus-article-dumbquotes-map} $B$K1~$8$F!"(BM******** sm*rtq**t*s $B$r=h(B +$BM}$7$^$9(B $B$3$N4X?t$OJ8;z$,(B sm*rtq**t* $B$+$I$&$+$r?dB,$7$^$9$N$G!"BPOCE*$K(B +$B$N$_;HMQ$5$l$k$Y$-$G$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B @item W w @kindex W w $B!J35N,!K(B @findex gnus-article-fill-cited-article -$B8l$N@^$jJV$7$r$7$^$9(B (@code{gnus-article-fill-cited-articles})$B!#$b$7$3$N(B -$B4X?t$r(B @code{gnus-article-display-hook} $B$NCf$G;H$C$?>l9g!"$=$l$O$+$J$j8e(B -$B$NJ}$G$l$NJ,$N:G=i$N8l$rBgJ8;z$K$7$^$9(B +(@code{gnus-article-capitalize-sentences})$B!#(B + @item W c @kindex W c $B!J35N,!K(B @findex gnus-article-remove-cr -$B%-%c%j%C%8%j%?!<%s(B (CR) ($B$9$J$o$A!"9T$N:G8e$N(B @samp{^M}) $B$r/$7Aa$/$7$^$9!#$b$7:,K\E*(B +$B%k$5$l$F$$$k$HNI$$$G$7$g$&!=!=$=$l$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(B $B%i%`$r;H$C$F(B @code{X-Face} $BMs$rJQ49$7$h$&$H;n$_$^$9!#!K$3$N4X?t$rI=<(%U%C(B $B%/$KF~$l$?$$$N$G$"$l$P!"$*$=$i$/$=$l$":G8e$K$J$k$Y$-$G$7$g$&!#(B @@ -6442,7 +6773,7 @@ X-Face $B5!G=$,$J$$$N$G$"$l$P!"(Bgnus $B$O(B @code{pbmplus} $B$d$=$NCg4V$N3 @kindex W b $B!J35N,!K(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} +@xref{Article Buttons}. @item W B @kindex W B $B!J35N,!K(B @@ -6450,6 +6781,12 @@ X-Face $B5!G=$,$J$$$N$G$"$l$P!"(Bgnus $B$O(B @code{pbmplus} $B$d$=$NCg4V$N3 $B%/%j%C%/$G$-$k%\%?%s$r5-;v$N%X%C%@!<$K2C$($^$9(B (@code{gnus-article-add-buttons-to-head})$B!#(B +@item W W H +@kindex W W H ($B35N,(B) +@findex gnus-article-strip-headers-from-body +$B5-;v$NK\BN$N@hF,$+$i(B @code{X-No-Archive} $B%X%C%@!<$N$h$&$J%X%C%@!<$rC5n$7$^$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 @@ -6554,7 +6897,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 (HEADER REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR) @end lisp -@var{HEADER} $B$O@55,I=8=$G$9!#(B +@var{header} $B$O@55,I=8=$G$9!#(B @item gnus-button-url-regexp @vindex gnus-button-url-regexp @@ -6624,8 +6967,12 @@ 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!#$3$N9T$,O"B3$7$F99?7(B -$B$5$l$k$h$&$K$7$?$$$N$G$"$l$P!"(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 + +$B$3$N9T$,O"B3$7$F99?7$5$l$k$h$&$K$7$?$$$N$G$"$l$P!"(B @lisp (gnus-start-date-timer) @@ -6656,9 +7003,9 @@ Date $B$N2<$KDI2C$9$k$+!"CV$-BX$($k$+$r;XDj$7$^$9!#$3$N9T$,O"B3$7$F99?7(B @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 +$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 +$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 @@ -6678,8 +7025,8 @@ son-of-RFC 1036 $B$G;X<($5$l$F$$$kI8=`$N(B @samp{^-- $} $B$G$9!#$7$+$7!"B?$/$ $B$"$J$?$,42MF$G$"$l$P$"$k$[$I!"4V0c$C$?7k2L$rF@$k;v$K$J$k$G$7$g$&!#(B @vindex gnus-signature-limit -@code{gnus-signature-limit} $B$O$I$l$,=pL>$H$_$J$5$l$k$+$X$N@)8B$rDs6!$7$^(B -$B$9!#(B +@code{gnus-signature-limit} $B$O5-;v$rI=<($9$k$H$-$K$I$l$,=pL>$H$_$J$5$l$k(B +$B$+$X$N@)8B$rDs6!$7$^$9!#(B @enumerate @item @@ -6707,6 +7054,23 @@ son-of-RFC 1036 $B$G;X<($5$l$F$$$kI8=`$N(B @samp{^-- $} $B$G$9!#$7$+$7!"B?$/$ $B$G$9!#(B +@node Article Miscellania +@subsection $B5-;v$$$m$$$m(B + +@table @kbd +@item A t +@kindex A t (Summary) +@findex gnus-article-babel +$B5-;v$r$"$k8@8l$+$iJL$N$b$N$XJQ49$7$^$9!#(B +Translate the article from one language to another +(@code{gnus-article-babel}). + +@end table + + +@c node `MIME Commands' and node `Charsets' is stripped, which is +@c pGnus specific. + @node Article Commands @section $B5-;vL?Na(B @@ -6718,7 +7082,7 @@ son-of-RFC 1036 $B$G;X<($5$l$F$$$kI8=`$N(B @samp{^-- $} $B$G$9!#$7$+$7!"B?$/$ @kindex A P $B!J35N,!K(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 +$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$Ko$KNI$$$G$7$g$&!#$7$+$7!"$=$l$O$I$&$7$F$bI,MW$J$o$1$G$O(B $B$"$j$^$;$s!#(B +It can also be a list of select methods, as well as the special symbol +@code{current}, which means to use the current select method. If it +is a list, Gnus will try all the methods in the list until it finds a +match. + +Here's an example setting that will first try the current method, and +then ask Deja if that fails: + +@lisp +(setq gnus-refer-article-method + '(current + (nnweb "refer" (nnweb-type dejanews)))) +@end lisp + $B$[$H$s$I$N%a!<%k%P%C%/%(%s%I$O(B @code{Message-ID} $B$G$NA0$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 +$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 $BM-8z$J;XDj$O!'(B @@ -7022,10 +7405,9 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= @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 -@var{(($BK\Ev$N3+(B . $BK\Ev$NJD(B) ($B$^$P$i3+(B . $B$^$P$iJD(B) ($B56$N3+(B . $B56$NJD(B))} -$B$H$J$C$F$$$F!"%G%#%U%)%k%H$O(B -@code{((?[ . ?]) (?( . ?)) (?@{ . ?@}) (?< . ?>))} $B$G$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 @item gnus-tree-parent-child-edges @vindex gnus-tree-parent-child-edges @@ -7132,7 +7514,7 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= @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 +$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 @item B m @@ -7180,7 +7562,7 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= @findex gnus-summary-edit-article @kindex C-c C-c $B!J5-;v!K(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 +$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 @@ -7256,6 +7638,10 @@ Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG= $B$JJ}K!$G9T$r%O%$%i%$%H$7$?$j!"%P%C%U%!$N8+$(J}$r=$@5$7$?$j$9$k$N$K;H$C$?(B $B$j$9$k$+$bCN$l$^$;$s!#(B +@vindex gnus-summary-prepared-hooi +@item gnus-summary-prepared-hook +$B35N,%P%C%U%!$,:n@.$5$l$?8e$G0lHV:G8e$K8F$P$l$k%U%C%/$G$9!#(B + @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 @@ -7351,7 +7737,7 @@ Gnus $B$N(B info $B$N@a(B (node) $B$K0\F0$7$^$9(B (@code{gnus-info-find-no @item Y c @kindex Y c $B!J35N,!K(B @findex gnus-summary-insert-cached-articles -$BA4$F$N!J8=:_$N%0%k!<%W$K!K%-%c%C%7%e$5$l$?5-;v(B $B$r35N,%P%C%U%!$KA^F~$7$^$9(B +$BA4$F$N!J8=:_$N%0%k!<%W$K!K%-%c%C%7%e$5$l$?5-;v(B $B$r35N,%P%C%U%!$KA^F~$7$^$9(B (@code{gnus-summary-insert-cached-articles})$B!#(B @end table @@ -7368,7 +7754,7 @@ Gnus $B$N(B info $B$N@a(B (node) $B$K0\F0$7$^$9(B (@code{gnus-info-find-no @kindex A D $B!J35N,!K(B @findex gnus-summary-enter-digest-group $B$b$78=:_$N%0%k!<%W$,B>$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 +$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 @@ -7396,7 +7782,7 @@ Gnus $B$N(B info $B$N@a(B (node) $B$K0\F0$7$^$9(B (@code{gnus-info-find-no @kindex = $B!J35N,!K(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} +(@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 @@ -7405,8 +7791,13 @@ Gnus $B$N(B info $B$N@a(B (node) $B$K0\F0$7$^$9(B (@code{gnus-info-find-no $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 -@end table +@item M-C-g +@kindex M-C-g ($B35N,(B) +@findex gnus-summary-customize-parameters +$B8=:_$N%0%k!<%W$N%0%k!<%W%Q%i%a!<%?(B (@pxref{Group Parameters}) $B$r%+%9%?%^(B +$B%$%:$7$^$9(B (@code{gnus-summary-customize-parameters})$B!#(B +@end table @node Exiting the Summary Buffer @section $B35N,%P%C%U%!$rH4$1$k(B @@ -7427,15 +7818,15 @@ Parameters}) $B$rJT=8$7$^$9(B (@code{gnus-summary-edit-parameters})$B!#(B @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})$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 +$B$J$$$H$-$K%0%k!<%W%b!<%I$KLa$k$H$-$K(B @code{gnus-group-no-more-groups-hook} $B$,$7$^$9(B +$B8=:_$N%0%k!<%W$r=P$F!"$=$l$+$iF~$jD>$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 @@ -7476,20 +7867,20 @@ Parameters}) $B$rJT=8$7$^$9(B (@code{gnus-summary-edit-parameters})$B!#(B @kindex M-g $B!J35N,!K(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 +$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 @item Z N @kindex Z N $B!J35N,!K(B @findex gnus-summary-next-group -$B%0%k!<%W$rH4$1$F!"A0$r(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-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 +$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 @@ -7522,7 +7913,7 @@ Parameters}) $B$rJT=8$7$^$9(B (@code{gnus-summary-edit-parameters})$B!#(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 +$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 @@ -7540,18 +7931,18 @@ Parameters}) $B$rJT=8$7$^$9(B (@code{gnus-summary-edit-parameters})$B!#(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 +$BHr$1$i$l$k$Y$-$G!"2a>jAj8_Ej9F$KBP$7$FITK~$r8@$&$?$a$KL?Na(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 +$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 @@ -7564,7 +7955,7 @@ Gnus $B$O$"$J$?$,FI$s$@A4$F$N5-;v$K(B @code{Xref} $B9T$rEPO?$9$k;v$G!"@5$7$$; @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 +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!"A0$G$9!#%G%#%U%)%k%H$O(B +$B=EJ#M^@)$N%j%9%H$rC_@Q$7$F$*$/%U%!%$%k$NL>A0$G$9!#%G%#%U%)%k%H$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 +$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 @@ -7658,7 +8049,7 @@ Gnus $B$K$$$D$G$b@5$7$$(B @code{Xref} $B$rA0$,F~$k$N$G$O$"$j(B -$B$^$;$s!#Be$o$j$K(B gnus $B$,%A%'%C%/$7$F;k3&$+$i>C$75n$k$?$a$N$5$^$6(B -$B$^$J!V$D$^$i$J$$>r7o!W(B@dfn{boring conditions} $B$N%j%9%H$r;XDj$7$^(B -$B$9!#(B +@code{gnus-article-hide-boring-headers} $B$r(B@code{head} $B$K@_Dj$9$k$3$H$K$h$C(B +$B$F!"$b$C$H$D$^$i$J$$%X%C%@!<$r1#$9$3$H$,$G$-$^$9!#$3$N4X?t$,2?$r$9$k$+$O(B +@code{gnus-boring-article-headers} $BJQ?t$K0MB8$7$^$9!#$3$NJQ?t$O%j%9%H$G(B +$B$9$,!"$3$N%j%9%H$K$OA0$,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 +@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 @table @code @@ -7807,12 +8195,12 @@ Gnus $B$O%X%C%@!<$NJB$YBX$((B(sort)$B$b9T$$$^$9!J$3$l$O%G%#%U%)%k%H$G9T$o$l$^ @findex gnus-article-display-mime-message Gnus $B$O(B @code{gnus-article-display-method-for-mime} $B$K5-;v$r2!$7IU$1$k$3(B $B$H$G(B @sc{mime} $B$r07$$$^$9!#$3$N=i4|CM$O(B -@code{gnus-article-display-mime-message} $B$G$9!#$3$N4X?t$O(B SEMI MIME-View +@code{gnus-article-display-mime-message} $B$G$9!#$3$N4X?t$O(B SEMI MIME-View $B%W%m%0%i%`$r8F$S=P$7$F\$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 +@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 @@ -7837,33 +8225,119 @@ 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$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 +@c Also see @pxref{MIME Commands}. + @node Customizing Articles @section $B5-;v$N%+%9%?%^%$%:(B @cindex article customization -@vindex gnus-article-display-hook -@code{gnus-article-display-hook} $B$O5-;v$,5-;v%P%C%U%!$K=q$-9~$^(B -$B$l$?D>8e$K8F$S=P$5$l$^$9!#$3$l$O5-;v$,I=<($5$l$kA0$N=hM}$rA4$F07(B -$B$&!"$H$$$&$3$H$G$9!#(B +$B5-;v$,$I$N$h$&$KB8:_$7$F$$$k$+$r%+%9%?%^%$%:$9$k$?$a$N$?$/$5$s$N4X?t$G$9!#(B +$B$3$l$i$N4X?t$rBPOCE*$K8F$V$3$H$b$G$-$^$9$7$$!"5-;v$rA*Br$7$?$H$-$K<+F0E*(B +$B$KA*Br$9$k$3$H$b$G$-$^$9!#(B + +$B<+F0E*$K8F$P$l$k$h$&$K$9$k$?$a$K$O!"BP1~$9$k(B ``treatment'' $BJQ?t$r@_Dj$7(B +$B$^$9!#Nc$($P!"%X%C%@!<$r1#$9$?$a$K$O!"(B@code{gnus-treat-hide-headers} $B$r(B +$B@_Dj$7$^$9!#0J2<$O@_Dj$G$-$kJQ?t$N0lMw$G$9$,!"$^$:$3$l$i$NJQ?t$NA0$N%0%k!<%W$GFI$^(B +$B$l$?5-;v$NA4$F$NK\J8$NItJ,$G$3$N07$$$r9T$$$^$9!#(B + +@item +$B:G=i$NMWAG$,J8;zNs$G$J$$%j%9%H$G$9(B: + +$B%j%9%H$O:F5"E*$KI>2A$5$l$^$9!#%j%9%H$N:G=i$NMWAG$O=R8l$G$9!#0J2<$N=R8l$,(B +$BG'<1$5$l$^$9(B: @code{or}, @code{and}, @code{not}, @code{typep}. $B$3$l$,Nc(B +$B$G$9(B: + +@lisp +(or last + (typep "text/x-vcard")) +@end lisp + +@end enumerate + +@c FIXTGNUS Is this true? +$B$3$3$G(B @dfn{$B0lItJ,(B} $B$H$$$&8l$,;H$o$l$F$$$k$3$H$K5$IU$$$?$H;W$$$^$9!#$3$l(B +$B$O%a%C%;!<%8$K$O(B @sc{mime} $B%^%k%A%Q!<%H5-;v$,$"$j!"$$$/$D$+$NItJ,$KJ,3d(B +$B$5$l$F$$$k$+$b$7$l$J$$$H$$$&;ve$G@bL@$5$l$F(B +$B$$$k$h$&$K=R8l$N%j%9%H$G$"$k$H$-$O!"$3$NJQ?t$OL5;k$5$l$^$9!#(B + +$B0J2<$N07$$$N%*%W%7%g%s$,;HMQ2DG=$G$9!#$3$l$r%+%9%?%^%$%:$9$k$?$a$N:G$b4J(B +$BC1$JJ}K!$O(B @code{gnus-article-treat} $B%+%9%?%^%$%:%0%k!<%W$rD4::$9$k$3$H(B +$B$G$9!#4]3g8L$NCf$NCM$ODs0F$5$l$F$$$k0UL#$N$"$kCM$G$9!#B>$N$b$N$b2DG=$G$9(B +$B$,!"$[$H$s$I$N?M$O$*$=$i$/$3$3$K0lMwI=<($5$l$F$$$k$b$N$G==J,$G$7$g$&!#(B + +@table @code +@item gnus-treat-highlight-signature (t, last) +@item gnus-treat-buttonize (t, integer) +@item gnus-treat-buttonize-head (head) +@item gnus-treat-emphasize (t, head, integer) +@item gnus-treat-fill-article (t, integer) +@item gnus-treat-strip-cr (t, integer) +@item gnus-treat-hide-headers (head) +@item gnus-treat-hide-boring-headers (head) +@item gnus-treat-hide-signature (t, last) +@item gnus-treat-hide-citation (t, integer) +@item gnus-treat-strip-pgp (t, last, integer) +@item gnus-treat-strip-pem (t, last, integer) +@item gnus-treat-highlight-headers (head) +@item gnus-treat-highlight-citation (t, integer) +@item gnus-treat-highlight-signature (t, last, integer) +@item gnus-treat-date-ut (head) +@item gnus-treat-date-local (head) +@item gnus-treat-date-lapsed (head) +@item gnus-treat-date-original (head) +@item gnus-treat-strip-headers-in-body (t, integer) +@item gnus-treat-strip-trailing-blank-lines (t, last, integer) +@item gnus-treat-strip-leading-blank-lines (t, integer) +@item gnus-treat-strip-multiple-blank-lines (t, integer) +@item gnus-treat-overstrike (t, integer) +@item gnus-treat-display-xface (head) +@item gnus-treat-display-smileys (t, integer) +@item gnus-treat-display-picons (head) +@item gnus-treat-capitalize-sentences (t, integer) +@item gnus-treat-fill-long-lines (t, integer) +@item gnus-treat-play-sounds +@item gnus-treat-translate +@item gnus-treat-decode-article-as-default-mime-charset +@end table + +@vindex gnus-part-display-hook +$B$b$A$m$s!"(B@code{gnus-part-display-hook} $B$+$i8F$P$l$k<+J,<+?H$N4X?t$r=q$/(B +$B$3$H$b$G$-$^$9!#4X?t$O$=$NItJ,$KHO0O$,69$a$i$l$?>uBV$G8F$P$l!"$[$H$s$I$J(B +$B$s$G$b9%$-$J$3$H$r$G$-$^$9!#%P%C%U%!$KJ]B8$7$F$*$+$J$1$l$P$J$i$J$$>pJs$O(B +$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 -@findex gnus-article-maybe-highlight -@findex gnus-article-maybe-hide-headers -$B=i4|@_Dj$G$O$G$O$3$N%U%C%/$K$O(B @code{gnus-article-maybe-hide-headers}, -@code{gnus-hide-boring-headers}, @code{gnus-article-treat-overstrike}, -@code{gnus-article-maybe-highlight} (XEmacs $B$G$O!"(B -@code{gnus-article-display-x-face} $B$b(B) $B$@$1$,4^$^$l$F$$$^$9$,!"$3$N%U%C(B -$B%/$KF~$l$k$3$H$,$G$-$k4X?t$O2?@i$b!"$$$d2?I4K|$b$"$j$^$9!#3F4X?t$N354Q$O(B -@pxref{Article Highlighting}, @pxref{Article Hiding}, @pxref{Article -Washing}, @pxref{Article Buttons}, @pxref{Article Date} $B$r;2>H$7$F$/$@$5(B -$B$$!#Cm0UE@$H$7$F!"$3$N%U%C%/$G$O4X?t$N=g=x$,1F6A$9$k$3$H$,$"$k$N$G!"$*K>(B -$B$_$N7k2L$rF@$k$K$O$A$g$C$HpJs$O2?$b$"$j$^$;$s!=!=2?$G$bJQ99$9$k$3$H$,$G$-$^$9!#(B -$B$G$9$,!"%X%C%@!<$O>C5n$7$J$$J}$,NI$$$G$9!#$=$NBe$o$j!"%X%C%@!<$r$I$3$+$K$d$C(B -$B$F$7$^$$$?$1$l$P!"$=$l$i$r8+$($J$$$h$&$K$7$F$/$@$5$$!#(B @node Article Keymap @section $B5-;v$N%-!H$7$F$/$@$5(B @item TAB @kindex TAB (Article) @findex gnus-article-next-button -$BH$7$F$/$@$5(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 +@c FIXMETGNUS Default value is nil for T-gnus. +@vindex gnus-article-decode-hook +@item gnus-article-decode-hook +@cindex MIME +@sc{mime} $B5-;v$rI|9f2=$9$k$H$-$K;HMQ$5$l$k%U%C%/$G$9!#(B + @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 @@ -7948,12 +8428,6 @@ Washing}, @pxref{Article Buttons}, @pxref{Article Date} $B$r;2>H$7$F$/$@$5(B $B$l$F$$$^$9!#$D$^$j5-;v%P%C%U%!$NFbMF$rJQ99$9$k$h$&$JL\E*$G;H$&$Y(B $B$-$G$O$J$$$G$7$g$&!#(B -@vindex gnus-article-display-hook -@item gnus-article-display-hook -$B$3$N%U%C%/$O5-;v$rI=<($9$k$H$-$N:G8e$K8F$S=P$5$l$k$h$&$K$J$C$F$$(B -$B$F!"5-;v%P%C%U%!$NFbMF$N=$@5!"%O%$%i%$%H=hM}!"%X%C%@!<$r1#$9!"$J(B -$B$I$H$$$C$?$3$H$r9T$&$?$a$KMQ0U$5$l$F$$$^$9!#(B - @item gnus-article-mode-hook @vindex gnus-article-mode-hook $B5-;v%b!<%I%P%C%U%!$G8F$S=P$5$l$k%U%C%/$G$9!#(B @@ -7973,6 +8447,9 @@ Washing}, @pxref{Article Buttons}, @pxref{Article Date} $B$r;2>H$7$F$/$@$5(B @item w $B5-;v$N!V@vBu>uBV!W(B@dfn{wash status}$B!#$3$l$O5-;v$KBP$7$F9T$o$l$?(B $B$G$"$m$&@vBuA`:n$r<($90lJ8;z$+$i$J$kC;$$J8;zNs$K$J$j$^$9!#(B +@c FIXMETGNUS Does this work? +@item m +$B5-;v$N(B @sc{mime} $BItJ,$N?t$G$9!#(B @end table @vindex gnus-break-pages @@ -8012,7 +8489,7 @@ Washing}, @pxref{Article Buttons}, @pxref{Article Date} $B$r;2>H$7$F$/$@$5(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 +* 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 @@ -8085,7 +8562,7 @@ file) $B$rJ]B8$7$^$9!#$b$7%a!<%k$r4{$KAw$C$?;v$,H/8+$5$l$?$J$i!"MxMQe=q$-$9$k$?$a$K!"L?Na(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 @@ -8109,7 +8586,7 @@ 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 +$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 @@ -8168,7 +8645,7 @@ Gnus $B$O$"$J$?$,Aw$C$?%a!<%k$H%K%e!<%9$rCy$a$F$*$/$?$a$N$$$/$D$+$N0c$C$?J}(B @vindex gnus-message-archive-group @cindex Gcc 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 -$B%W$X8~$+$&(B @code{Gcc} $BMs$rA^F~$7$^$9!#$I$N%0%k!<%W$r;H$&$+$OJQ?t(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 $B$3$NJQ?t$Oe$N$=$N%5!<%P!<$N%0%k!<( '((if (message-news-p) "misc-news" (concat "mail." (format-time-string - "%Y-%m" (current-time)))))) + "%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 +$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 $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 @@ -8265,14 +8742,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!<( $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$=$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 @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!<( $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 +@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$=$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 -$B$^$9!#$b$7$=$l$,4X?t$N%7%s%\%k$G$"$l$P!"$=$N4X?t$,0z?tL5$7$G8F$P$l$^$9!#(B -$B$=$l$,JQ?t$N%7%s%\%k$G$"$l$P!"$=$NJQ?t$,;2>H$5$l$^$9!#$=$l$,%j%9%H$G$"$l(B -$B$P!"$=$N%j%9%H$,(B @code{$BI>2A(B} $B$5$l$^$9!#$I$N>l9g$G$b!"$3$l$,(B @code{nil} -$B$G$J$$CM$r5"$;$P!"MM<0$O(B @code{$B9gCW$7$?(B} $B$H8@$$$^$9!#(B +$B$^$9!#(B +If it is the symbol @code{header}, then Gnus will look for header that +match the next element in the match, and compare that to the last header +in the match. +$B$b$7$=$l$,4X?t$N%7%s%\%k$G$"$l$P!"$=$N4X?t$,0z?tL5$7$G8F$P$l$^$9!#$=$l$,(B +$BJQ?t$N%7%s%\%k$G$"$l$P!"$=$NJQ?t$,;2>H$5$l$^$9!#$=$l$,%j%9%H$G$"$l$P!"$=(B +$B$N%j%9%H$,(B @code{$BI>2A(B} $B$5$l$^$9!#$I$N>l9g$G$b!"$3$l$,(B @code{nil} $B$G$J$$(B +$BCM$r5"$;$P!"MM<0$O(B @code{$B9gCW$7$?(B} $B$H8@$$$^$9!#(B $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 @var{(name value)} $B$NBP$K$h$j@.$jN)$C$F$$$^$9!#B0@-L>$O!"(B -@code{signature}, @code{signature-file}, @code{organization}, +$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 +$B$=$NCM$,5-;v$N%X%C%@!<$KA^F~$5$l$^$9!#$b$7B0@-L>$,(B @code{eval} $B$@$C$?$i(B +$B$=$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 +$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 $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 +$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 @findex message-mail-p @@ -8335,6 +8817,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!<( (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") @@ -8365,7 +8849,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!<( @vindex nndraft-directory $B2<=q$-%0%k!<%W$O(B @samp{nndraft:draftx} $B$H8F$P$l$kFCJL$J%0%k!<%W(B $B$G$9!J$b$7(B $B$"$J$?$,A4$F$rCN$i$J$1$l$P$J$i$J$$$N$G$"$l$P!"$=$l$O(B @code{nndraft} $B%0%k!<(B -$B%W$H$7$Fe$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 +$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 @@ -8458,10 +8942,10 @@ 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 +$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 @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$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$b$A$m$s!"0c$C$?J}K!$OA4$F$=$lFCM-$N$b$N$,$"$j$^$9!#(B @@ -8470,6 +8954,7 @@ Buffer})$B!#(B * 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:: Getting messages from a plethora of Web sources. * Other Sources:: $B%G%#%l%/%H%j!A0$G!"(B2$BHVL\$O(B +$B8+$?$H$*$j!"A*BrJ}K!$N:G=i$NMWAG$O%P%C%/%(%s%I$NL>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 -$B$3$l$i$N(B2$B$D$NMWAG$N8e$K$O!"G$0U$N?t$N(B @var{($BJQ?t(B $BMM<0(B)} $B$NBP$rF~$l$k;v$,(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: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: @@ -8651,7 +9136,7 @@ Buffer})$B!#(B @end lisp $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 +$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$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: @@ -8680,7 +9165,7 @@ 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 +$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 @@ -8729,7 +9214,7 @@ Buffer})$B!#(B $B$-=P$5$l$?(B" $BJQ?t$OJQ99$5$l$^$;$s!#(B $B$3$l$OIaDL$O%G%#%l%/%H%j!<$d%U%!%$%k$NJQ?t$K1F6A$7$^$9!#Nc$($P!"(B -@code{nnml-directory} $B$O%G%#%U%)%k%H$G(B @file{~/Mail} $B$G$9$,!"A4$F$N(B +@code{nnml-directory} $B$O%G%#%U%)%k%H$G(B @file{~/Mail} $B$G$9$,!"A4$F$N(B @code{nnml} $B%G%#%l%/%H%j!e$N(B @code{nnml} $B%5!<%P!<$rDj5A$7$?>l9g!"(B@code{nnml-directory} $B$r@_Dj(B @@ -8833,13 +9318,13 @@ Gnus $B$,$I$l$+$N%5!<%P!<$+$i@\B35qH]$rC5n$7$^(B @subsection @sc{nntp} @cindex nntp -@sc{nntp} $B%5!<%P!<$N30It%0%k!<%W$r9XFI$9$k$N$OHf3SE*4JC1$G$9!#C1$K(B +@sc{nntp} $B%5!<%P!<$N30It%0%k!<%W$r9XFI$9$k$N$OHf3SE*4JC1$G$9!#C1$K(B @code{nntp} $B$rJ}K!$H$7$F;XDj$7!"(B@sc{nntp} $B%5!<%P!<$N%"%I%l%9(B (address) $B$r!"$&!<$s!"%"%I%l%9$H$7$F;XDj$9$k$@$1$G$9!#(B $B$b$7(B @sc{nntp} $B%5!<%P!<$,I8=`$G$J$$%]!<%H(B (port) $B$K0LCV$7$F$$$k$H$-$O!"(B $BA*BrJ}K!$N(B3$BHVL\$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$^$;$s(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$^$;$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 @@ -8871,8 +9356,8 @@ Gnus $B$,$I$l$+$N%5!<%P!<$+$i@\B35qH]$rC5n$7$^(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 +$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$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 -@samp{machine} $B9T$K9gCW$7$J$$A4$F$N%5!<%P!<$KE,MQ$5$l$k(B @samp{default} +@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 @example @@ -8948,7 +9433,7 @@ 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 +$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 @@ -8959,7 +9444,7 @@ 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{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 @@ -8990,10 +9475,10 @@ default force yes @findex nntp-open-rlogin @findex nntp-open-telnet @findex nntp-open-network-stream -@item nntp-open-connetcion-function +@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$l$F$$$^$9(B: +$B$l$F$$$^$9(B: @table @code @item nntp-open-network-stream @@ -9009,7 +9494,7 @@ 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 +$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 @item nntp-open-telnet-envuser @@ -9066,7 +9551,7 @@ 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 +$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!<$ru67$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 @@ -9179,17 +9664,17 @@ W3 $B$NG[I[$+$i(B) $B$,I,MW$K$J$j$^$9(B)$B!#$=$l$+$i%5!<%P!<$rl=j$G$9(B ($B%G%#%U%)%k%H$G(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$G(B @file{/usr/lib/news/} $B$G$9(B)$B!#(B @item nnspool-active-file @@ -9232,12 +9717,14 @@ W3 $B$NG[I[$+$i(B) $B$,I,MW$K$J$j$^$9(B)$B!#$=$l$+$i%5!<%P!<$rh$j49$($k$3$H$r7hCG$7$?$J$i$P!"(B $B$"$J$?$O$$$m$$$m$J%+%k%A%c!<%7%g%C%/$r.?M?t$KMxMQ$5$l$F$$$k%m!<%+%k%K%e!<%9%0%k!<%W$r9VFI$7$F$$(B -$B$^$9!#$=$l$i$O(B NNTP $B$GG[Aw$5$l$k!"%K%e!<%9!"$G$9!#;d$?$A$O<+J,$N;E;v$K(B -$BLrN)$F$k$?$a$K!"$=$l$i$NKDBg$J5-;v$NCGJR$rFI$s$@$jJV;v$r$7$J$1$l$P$J$j(B -$B$^$;$s!#$=$7$F$=$l$i$OJ]B8$5$l$F$$$J$$$+$b$7$l$^$;$s$+$i!"6=L#$N$"$k5-(B -$B;v$r8D?M%a!<%k$HF1$8$h$&$KJ]B8$7$J$1$l$P$J$i$J$$$G$7$g$&!#(B +$B$^$9!#$=$l$i$O(B @sc{nntp} $B$GG[Aw$5$l$k!"%K%e!<%9!"$G$9!#;d$?$A$O<+J,$N;E(B +$B;v$KLrN)$F$k$?$a$K!"$=$l$i$NKDBg$J5-;v$NCGJR$rFI$s$@$jJV;v$r$7$J$1$l$P(B +$B$J$j$^$;$s!#$=$7$F$=$l$i$OJ]B8$5$l$F$$$J$$$+$b$7$l$^$;$s$+$i!"6=L#$N$"(B +$B$k5-;v$r8D?M%a!<%k$HF1$8$h$&$KJ]B8$7$J$1$l$P$J$i$J$$$G$7$g$&!#(B $BG[Aw$N;EAH$_$N0c$$$O$I$&$G$b$h$$$3$H$G!"Bg;v$J$N$O$$$+$K/$/$H$b!";d$,(B gnus $B$KF~$l$?!"(BEmacs $B$N%5%V%j%_%J%kG>L#A9@vBu4X?t$rGd$C(B +$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 @@ -9325,7 +9812,7 @@ 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$"$J$?$O$*$=$i$/%a!<%k$r$$$/$D$+$N%0%k!<%W$KJ,3d$7$?$$$G$7$g$&$1$I(B: @@ -9366,11 +9853,11 @@ Backend} $B$H(B @pxref{Expiring Mail} $B$r!#(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$F!"9gCW$7$?J8>O$+$i$NI{I=8=$rA^F~$9$k$?$a$K;H$o$l$k$h$&$J!"(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: @lisp -("list.\\1" "From:.*\\(.*\\)-list@@majordomo.com") +("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 @@ -9404,11 +9891,11 @@ Backend} $B$H(B @pxref{Expiring Mail} $B$r!#(B @vindex nnmail-crosspost-link-function @cindex crosspost @cindex links -@code{nnmh} $B$H(B @code{nnml} $B$OAj8_Ej9F$5$l$?5-;v$K%O!<%I%j%s%/(B (hardlink) +@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 +$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) @kindex M-x nnmail-split-history @@ -9426,134 +9913,452 @@ Gnus $B$O$"$J$?$K<+J,<+?H$KD7$MJV$C$F$/$k$h$&$J2DG=@-$N$"$kA4$F$N5!2q$rDs(B $B$$$k$H?.$8$F$$$k$+$b$7$l$^$;$s!#(B -@node Mail Backend Variables -@subsection $B%a!<%k%P%C%/%(%s%IJQ?t(B - -$B$3$l$i$NJQ?t$O(B ($B$?$$$F$$$N>l9g(B) $BA4$F$N0c$C$?%a!<%k%P%C%/%(%s%I$K4XO"$7$^(B -$B$9!#(B - -@table @code -@vindex nnmail-read-incoming-hook -@item nnmail-read-incoming-hook -$B%a!<%k%P%C%/%(%s%I$O?7$7$$%a!<%k$rFI$_9~$s$@8e$K$3$N%U%C%/$r8F$S$^$9!#$b(B -$B$7$=$&$7$?$$$H;W$&$J$i!"$3$N%U%C%/$r%a!<%k4F;k%W%m%0%i%`$KCN$i$;$k$?$a$K(B -$B;H$&;v$,$G$-$^$9!#(B +@node Mail Sources +@subsection Mail Sources -@vindex nnmail-spool-file -@item nnmail-spool-file -@cindex POP mail -@cindex MAILHOST -@cindex movemail -@vindex nnmail-pop-password -@vindex nnmail-pop-password-required -$B%P%C%/%(%s%I$O$3$N%U%!%$%k$G?7$7$$%a!<%k$rC5$7$^$9!#$3$NJQ?t$,(B -@code{nil} $B$G$"$k$H!"%a!<%k%P%C%/%(%s%I$O7h$7$F<+J,<+?H$G$O%a!<%k$rA0$,(B -@samp{larsi} $B$G$"$k$J$i$P!"$3$NJQ?t$r(B @samp{po:larsi} $B$K@_Dj$9$k$Y$-$G$9!#(B -$B$b$7$"$J$?$NL>A0$,(B @samp{larsi} $B$G$J$$$J$i$P!"$*$=$i$/$3$l$r>/$7=$@5$7$J(B -$B$1$l$P$J$j$^$;$s$,!"4{$K$"$J$?$O$=$l$r?dB,$7$F$$$k$G$7$g$&!#$3$N8-$/4iN)(B -$B$A$NNI$$0-Kb$5$s!*(B $B$3$NJQ?t$r(B @code{pop} $B$K@_Dj$9$k;v$b$G$-!"$=$N;~$O(B -gnus $B$,<+J,<+?H$G(B POP $B%a!<%kJ8;zNs$rH/8+$7$h$&$H$7$^$9!#$I$N$h$&$J>l9g$G(B -$B$b!"(Bgnus $B$O(B $B4D6-JQ?t(B @code{MAILHOST} $B$G;XDj$5$l$F$$$k(B POP $B%5!<%P!<$K@\?((B -$B$r?^$m$&$H$9$k(B @code{movemail} $B$r8F$S$^$9!#(BPOP $B%5!<%P!<$,%Q%9%o!<%I$rI,(B -$BMW$H$9$k$J$i!"(B@code{nnmail-pop-password-required} $B$r(B @code{t} $B$K@_Dj$7$F(B -$B%Q%9%o!<%IF~NO$rB%?J$5$l$k$+!"(B@code{nnmail-pop-password} $B$r%Q%9%o!<%I$=(B -$B$N$b$N$K@_Dj$9$k;v$,$G$-$^$9!#(B - -@code{nnmail-spool-file} $B$O%a!<%k%\%C%/%9$N%j%9%H$G$"$k;v$b$G$-$^$9!#(B - -$B$"$J$?$N(B Emacs $B$,(B $B%3%s%Q%$%k(B (compilation) $B$NA0$K(B @samp{--with-pop} $B$H6&(B -$B$K4D6-@_Dj(B (configure) $B$5$l$J$1$l$P$J$j$^$;$s!#$3$l$O%G%#%U%)%k%H$G$9$,!"(B -$B$$$/$D$+$N%$%s%9%H!<%k$O$=$N@_Dj$r@Z$C$F$7$^$$$^$9!#(B +$B$$$m$s$J$H$3$m$+$i%a!<%k$re$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@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 +@menu +* 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 +@end menu -@vindex nnmail-use-procmail -@vindex nnmail-procmail-suffix -@item nnmail-use-procmail -$B$b$7(B @code{nil} $B$G$J$1$l$P!"%a!<%k%P%C%/%(%s%I$OF~$C$F$/$k%a!<%k$r(B -@code{nnmail-procmail-directory} $B$GC5$7$^$9!#$=$N%G%#%l%/%H%j!<$G(B -@code{nnmail-procmail-suffix} $B$G=*$o$C$F$$$kL>A0$r;}$DA4$F$N%U%!%$%k$OF~$C(B -$B$FMh$?%a!<%k%\%C%/%9$H$_$J$5$l!"$=$3$G?7$7$$%a!<%k$,C5$5$l$^$9!#(B - -@vindex nnmail-crash-box -@item nnmail-crash-box -$B%a!<%k%P%C%/%(%s%I$,%9%W!<%k%U%!%$%k$rFI$s$@$H$-$K!"%a!<%k$O:G=i$K$3$N%U%!(B -$B%$%k$K0\F0$5$l$^$9!#$3$l$O%G%#%U%)%k%H$G(B @file{~/.gnus-crash-box} $B$G$9!#(B -$B$3$N%U%!%$%k$,4{$KB8:_$9$k>l9g$O!"$=$l$O>o$KB>$N%9%W!<%k%U%!%$%k$h$j@h$K(B -$BFI$_9~$^$l(B ($B$=$7$F$l$N%a%C%;!<%8$,$=$N%X%C%@!<$K4p$E$$$FJ,3d$,$J$5$l$kD>A0$K$=$l$,J](B -$BB8$5$l$F$$$k%P%C%U%!$GC5n$5$l!"%P%C%U%!$G9T$o$l$?JQ99$O$I$N%U%!%$%k$K$b8=$l$^$;(B -$B$s!#(B@code{gnus-article-decode-rfc1522} $B$,$3$N%U%C%/$K2C$($k;v$,E,@Z$J4X(B -$B?t$N0l$D$G$9!#(B +@dfn{$B%a!<%k%=!<%9;X<(;R(B} $B$K(B @code{$B%a!<%k%=!<%9(B} (@pxref{Fetching Mail}) +$B$r@_Dj$9$k$3$H$G!"(Bgnus $B$K%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!#l9g$O!"$=$N4X?t$O(B2$B$D$N%Q%i%a!<%?(B -- -$B%$%s%\%C%/%9$NL>A0$H0\F0$9$k%U%!%$%kL>A0(B $B$H6&$K8F$P$l$^$9!#(B +@table @code +@item file +$BC1FH$N%U%!%$%k$+$i%a!<%k$rC5n$7$^$9!#$3$l$O%G%#%U%)%k%H$G(B @code{t} $B$G$9!#(B +$B%-!<%o!<%I(B: + +@table @code +@item :path +$B%U%!%$%k$N%Q%9$G$9!#=i4|CM$O(B @code{MAIL} $B4D6-JQ?t$NCM$+!"(B +@file{usr-mail/spool/user-name} $B$G$9!#(B +@end table + +$B%U%!%$%k%a!<%k%=!<%9$NNc(B: + +@lisp +(file :path "/usr/spool/mail/user-name") +@end lisp + +$B$b$7$/$O!"=i4|%Q%9$r;H$&$H(B: + +@lisp +(file) +@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 +file names here---it has no way to lock the mail spool while moving the +mail. + +If it's impossible to set up a proper server, you can use ssh instead. -@c This is @code{nil} by -@c default for reasons of security. +@lisp +(setq mail-sources + '((file :prescript "ssh host bin/getmail >%t"))) +@end lisp + +The @samp{getmail} script would look something like the following: + +@example +#!/bin/sh +# getmail - move mail from spool to stdout +# flu@@iki.fi + +MOVEMAIL=/usr/lib/emacs/20.3/i386-redhat-linux/movemail +TMP=~/Mail/tmp +rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP +@end example + +Alter this script to fit find the @samp{movemail} you want to use. -@c Since Red Gnus is an alpha release, it is to be expected to lose mail. -((ding) Gnus 0.10 ($B$b$7$/$O$=$N$h$&$J$b$N(B) $B$+$i$N(B Gnus $B$N%j%j!<%9$O;d$,(B -$B;W$&$K%a!<%k$r<:$C$?;v$O$J$$$N$G$9$,!"$G$b$=$N$3$H$O$3$3$G$O=EMW$G$O$"$j(B -$B$^$;$s!#(B ($BFCJL$J%P!<%8%g%s$N(B Red Gnus $B$r=|$-$^$9!#(B)) Incoming* $B%U%!%$%k(B -$B$r>C5n$7$J$$;v$G!"%a!<%k$r<:$o$J$$;v$r3NC5n$9$k;v$,$G$-$^$9!#(B +@item directory +$B%G%#%l%/%H%j!A0$G$9!#=i4|CM$O(B @code{MAILHOST} $B4D6-JQ?t$+$i$G$9!#=i4|CM$O%m%0%$%sL>$G$9!#(B + +@item :password +POP $B%5!<%P!<$KM?$($k%Q%9%o!<%I$G$9!#;XDj$5$l$J$$>l9g$O!"MxMQA0$G$9!#$3$l$O>o$K$3$NJ8;zNs$K4^$^$l$F$$$J(B +$B$1$l$P$J$j$^$;$s!#(B + +@item s +$B%5!<%P!<$NL>A0$G$9!#(B + +@item P +$B%5!<%P!<$N%]!<%HHV9f$G$9!#(B + +@item u +$B;HMQ$9$kMxMQ$G$9!#(B + +@item p +$B;HMQ$9$k%Q%9%o!<%I$G$9!#(B +@end table + +$B$3$l$i$N;EMM$G;H$o$l$kCM$OBP1~$9$k%-!<%o!<%I$KM?$($?CM$+$iZJ}<0$r;H$&$+$r(B +$B7h$a$k$b$N$N$I$A$i$+$G$9!#=i4|@_Dj$O(B @code{password} $B$G$9!#(B + +@end table + +@code{:pregram} $B$H(B @code{:function} $B%-!<%o!<%I$,;XDj$5$l$F$$$J$$$H!"(B +@code{pop3-movemail} $B$,;HMQ$5$l$^$9!#(B + +$B$3$l$O$$$/$D$+$NNc$G$9!#=i4|MxMQ$G!"=i4|(B POP $B%5!<%P!<$+$i$5$l$?%5!<%P!<$+$i;XL>$5$l$?MxMQ$l$N%U%!%$%k$,@53N$K(B1$B%a!<(B +$B%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$O(B +@samp{~/Maildir/new} $B$G$9!#(B + +Gnus $B$Gl=j$G$9!#=i4|CM$O(B +@file{~/.emacs-mail-crash-box} $B$G$9!#(B + +@item mail-source-delete-incoming +@vindex mail-source-delete-incoming +@code{nil} $B$G$J$1$l$P!"F~$C$FMh$?%U%!%$%k$O!"$=$l$r=hM}$7$?8e$K>C5n$5$l(B +$B$^$9!#(B + +@item mail-source-directory +@vindex mail-source-directory +$B%U%!%$%k$,(B ($B$b$7$"$l$P(B) $BJ]B8$5$l$k%G%#%l%/%H%j!<$G$9!#=i4|CM$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 +@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-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 + +@end table + + +@node Fetching Mail +@subsubsection $B%a!<%k$NJ}$+$i%a!<%k$re$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@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 + +@node Mail Backend Variables +@subsection $B%a!<%k%P%C%/%(%s%IJQ?t(B + +$B$3$l$i$NJQ?t$O(B ($B$?$$$F$$$N>l9g(B) $BA4$F$N0c$C$?%a!<%k%P%C%/%(%s%I$K4XO"$7$^(B +$B$9!#(B + +@table @code +@vindex nnmail-read-incoming-hook +@item nnmail-read-incoming-hook +$B%a!<%k%P%C%/%(%s%I$O?7$7$$%a!<%k$rFI$_9~$s$@8e$K$3$N%U%C%/$r8F$S$^$9!#$b(B +$B$7$=$&$7$?$$$H;W$&$J$i!"$3$N%U%C%/$r%a!<%k4F;k%W%m%0%i%`$KCN$i$;$k$?$a$K(B +$B;H$&;v$,$G$-$^$9!#(B + +@vindex nnmail-split-hook +@item nnmail-split-hook +@findex article-decode-encoded-words +@findex RFC1522 decoding +@findex RFC2047 decoding +$B$=$l$>$l$N%a%C%;!<%8$,$=$N%X%C%@!<$K4p$E$$$FJ,3d$,$J$5$l$kD>A0$K$=$l$,J](B +$BB8$5$l$F$$$k%P%C%U%!$GC5n$5$l!"%P%C%U%!$G9T$o$l$?JQ99$O$I$N%U%!%$%k$K$b8=$l$^$;(B +$B$s!#(B@code{gnus-article-decode-rfc1522} $B$,$3$N%U%C%/$K2C$($k;v$,E,@Z$J4X(B +$B?t$N0l$D$G$9!#(B + +@itemx nnmail-post-get-new-mail-hook +$B$3$l$i$OF~$C$F$/$k%a!<%k$r07$&$H$-$KA0$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!#l9g$ $BL>$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 +$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 @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!#%G%#%U%)%k%H$G(B +$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 @item nnmail-cache-accepted-message-ids @@ -9594,8 +10399,8 @@ gnus $B$,<+J,<+?H$G(B POP $B%a!<%kJ8;zNs$rH/8+$7$h$&$H$7$^$9!#$I$N$h$&$J>l9g$ @lisp ;; $B%a!<%k%G!<%b%s(B (mailer deamon) $B$OIaDL$N%0%k!<%W$K$OAj8_Ej9F$5$l$^$;(B ;; $B$s!#7Y9p$OK\Ev$N%(%i!<$H$O0c$C$?%0%k!<%W$KF~$l$i$l$^$9!#(B -(| ("from" mail (| ("subject" "warn.*" "mail.warning") - "mail.misc")) +(| ("from" mail (| ("subject" "warn.*" "mail.warning") + "mail.misc")) ;; $B%(%i!<$G$J$$%a%C%;!<%8$OA4$F$N4XO"$7$?%0%k!<%W$KAj8_Ej9F$5$l$^$9(B ;; $B$,!"(B(ding) $B%j%9%H$HB>$N(B (ding) $B4XO"$N%a!<%k$N$?$a$N%0%k!<%W$K$O(B ;; $BAj8_Ej9F$7$^$;$s!#(B @@ -9604,10 +10409,10 @@ gnus $B$,<+J,<+?H$G(B POP $B%a!<%kJ8;zNs$rH/8+$7$h$&$H$7$^$9!#$I$N$h$&$J>l9g$ ;; $BB>$N%a!<%j%s%0%j%9%H(B... (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") - ;; $B0J2<$N$I$A$i$N%a!<%j%s%0%j%9%H$bF1$8%5%U%#%C%/%9$J$N$G!"(Bbugs- - ;; $B$@$1$K%]%9%H$5$l$?$b$N$,(B mypkg.list $B$K%/%m%9%]%9%H$5$l$J$$$h(B - ;; $B$&$K$7$F$$$^$9!#$7$+$7K\Ev$K%/%m%9%]%9%H$5$l$?5-;v$r%/%m%9%](B - ;; $B%9%H$9$k$3$H$O5v$7$F$$$^$9!#(B + ;; $B0J2<$N$I$A$i$N%a!<%j%s%0%j%9%H$bF1$8@\F,<-$J$N$G!"(Bbugs- + ;; $B$@$1$KEj9F$5$l$?$b$N$,(B mypkg.list $B$KAj8_Ej9F$5$l$J$$$h(B + ;; $B$&$K$7$F$$$^$9!#$7$+$7K\Ev$KAj8_Ej9F$5$l$?5-;v$rAj8_Ej9F(B + ;; $B$9$k$3$H$O5v$7$F$$$^$9!#(B (any "bugs-mypackage@@somewhere" "mypkg.bugs") (any "mypackage@@somewhere\" - "bugs-mypackage" "mypkg.list") ;; $B?M!9(B... @@ -9626,42 +10431,52 @@ gnus $B$,<+J,<+?H$G(B POP $B%a!<%kJ8;zNs$rH/8+$7$h$&$H$7$^$9!#$I$N$h$&$J>l9g$ $B$9!#IaDL$N@55,I=8=$N9gCW$,$J$5$l$^$9!#Nc$O2<$NJ}$r8+$F2<$5$$!#(B @item -@var{(FIELD VALUE SPLIT)}: $B$b$7J,3d$,%j%9%H$G!":G=i$NMWAG$,J8;zNs$G$"$j!"(B -$B%X%C%@!<(B FIELD ($B@55,I=8=(B) $B$,(B VALUE ($B$3$l$b@55,I=8=(B) $B$r4^$s$G$$$k>l9g!"%a%C(B -$B%;!<%8$r(B SPLIT $B$G;XDj$5$l$?$H$3$m$KC_@Q$7$^$9!#(B +@code{(@var{field} @var{value} @code{[-} @var{restrict} @code{[-} @var{restrict} @code{[@dots{}]}@code{]]} +@var{split})}: $B$b$7J,3d$,%j%9%H$G!":G=i$NMWAG$,J8;zNs$G$"$j!"%X%C%@!<(B +@var{field} ($B@55,I=8=(B) $B$,(B @var{value} ($B$3$l$b@55,I=8=(B) $B$r4^$s$G$$$k>l9g!"(B +$B%a%C%;!<%8$r(B @var{split} $B$G;XDj$5$l$?$H$3$m$KC_@Q$7$^$9!#(B@var{restrict} + ($B$^$?B>$N@55,I=8=(B) $B$,(B @var{field} $B$N8e$G!"9gCW$7$?(B @var{value} $B$N:G8e$N(B +$BA0$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$,K@(B) $B$G$"(B -$B$k$H!"$=$l$>$l$N(B SPLIT $B$r$=$N$&$A$N0l$D$,9gCW$9$k$^$Ge$N%0%k!<%W$KC_@Q$5$l$?$H$-$K(B ``$B9gCW$7$?(B'' $B$H(B -$B$7$^$9!#(B +@code{(| @var{split}@dots{})}: $BJ,3d$,%j%9%H$G!":G=i$NMWAG$,(B @code{|} +($B?bD>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 @item -@var{(& SPLIT...)}: $BJ,3d$,%j%9%H$G!":G=i$NMWAG$,(B @code{t} $B$G$"$k$H!"%j%9(B -$B%H$NA4$F$N(B SPLIT $B$ro$KCm0U$7$F;H$C$F2<$5$$!#(B @item -@var{(: function arg1 arg2 ...)}: $B$b$7J,3d$,%j%9%H$G!":G=i$N4X?t$,(B -@code{:} $B$G$"$k$H!"(B2$BHVL\$NMWAG$,(B @var{args} $B$r0z?t$H$7$F4X?t$H$7$F8F$P$l(B -$B$^$9!#4X?t$O(B SPLIT $B$rJV$9$Y$-$G$9!#(B +@code{(: @var{function} @var{arg1} @var{arg2} @dots{})}: $B$b$7J,3d$,%j%9(B +$B%H$G!":G=i$N4X?t$,(B @code{:} $B$G$"$k$H!"(B2$BHVL\$NMWAG$,(B @var{args} $B$r0z?t$H(B +$B$7$F4X?t$H$7$F8F$P$l$^$9!#4X?t$O(B @var{split} $B$rJV$9$Y$-$G$9!#(B + +@item +@code{(! @var{func} @var{split})}: $BJ,3d$,%j%9%H$G!":G=i$NMWAG$,(B @code{!} +$B$G$"$k$H(B @var{split} $B$,$K9gCW$7$J$1$l$P$J$j$^$;(B -$B$s!#(B@var{VALUE} $B$O4pAC%b!<%I(B (fundamental mode) $B9=J8%F!<%V%k(B (syntax +$B$3$l$i$NJ,3d$G!"(B@var{fileld} $B$O40A4$J%U%#!<%k%IL>$K9gCW$7$J$1$l$P$J$j$^(B +$B$;$s!#(B@var{value} $B$O4pAC%b!<%I(B (fundamental mode) $B9=J8%F!<%V%k(B (syntax table) $B$K=>$C$F40A4$K9gCW$7$J$1$l$P$J$j$^$;$s!#@55,I=8=$G%U%#!<%k%IL>$+(B $B8l$NItJ,$K9gCW$5$;$k$?$a$K(B @code{.*} $B$r;H$&;v$,$G$-$^$9!#8@$$49$($l$P!"(B -$BA4$F$N(B @var{VALUE} $B$O(B @samp{\<} $B$H(B @samp{\>} $B$NBP$G0O$^$l$^$9!#(B +$BA4$F$N(B @var{value} $B$O(B @samp{\<} $B$H(B @samp{\>} $B$NBP$G0O$^$l$^$9!#(B @vindex nnmail-split-abbrev-alist -@var{FIELD} $B$H(B @var{VALUE} $B$O(B lisp $B%7%s%\%k(B (symbol) $B$G$"$k;v$b$G$-!"$=(B +@var{field} $B$H(B @var{value} $B$O(B lisp $B%7%s%\%k(B (symbol) $B$G$"$k;v$b$G$-!"$=(B $B$N>l9g$O$=$l$i$O(B @code{nnmail-split-abbrev-alist} $B$G;XDj$5$l$F$$$k$h$&$K(B $BE83+$5$l$^$9!#$3$l$O%;%k$N(B @code{car} $B$,%-!<$r4^$s$G$$$F!"(B@code{cdr} $B$,(B $B4XO"IU$1$i$l$?CM$r;}$C$F$$$k%3%s%9%;%k(B (cons cell) $B$NO"A[%j%9%H$G$9!#(B @@ -9676,97 +10491,136 @@ table) $B$K=>$C$F40A4$K9gCW$7$J$1$l$P$J$j$^$;$s!#@55,I=8=$G%U%#!<%k%IL>$+(B (any "debian-\\b\\(\\w+\\)@@lists.debian.org" "mail.debian.\\1") @end example +$B$3$NNc$G$O!"(B@samp{debian-foo@@lists.debian.org} $B$KAw$i$l$?%a!<%k$O(B +@samp{mail.debian.foo} $B$H$$$&Iw$K$J$j$^$9!#(B + $B$b$7J8;zNs$,MWAG(B @samp{\&} $B$r4^$s$G$$$k$H!"Be$o$j$KA0$G9gCW$7$?J8;zNs$,(B -$B;H$o$l$^$9!#F1MM$K!"MWAG(B @samp{\\1} $B$+$i(B @samp{\\9} $B$^$G$O%0%k!<%WIU$1(B 1 +$B;H$o$l$^$9!#F1MM$K!"MWAG(B @samp{\\1} $B$+$i(B @samp{\\9} $B$^$G$O%0%k!<%WIU$1(B 1 $B$+$i(B 9 $B$^$G$G9gCW$7$?J8;zJ8$GBeBX$5$l$^$9!#(B -@node Mail and Procmail -@subsection $B%a!<%k$H(B Procmail -@cindex procmail -@cindex slocal -@cindex elm -$BB?$/$N?M$O(B @code{procmail} ($B$b$7$/$OB>$N%a!<%kA*JL%W%m%0%i%`$+30ItG[AwBe(B -$BM}(B---@code{slocal}$B!"(B@code{elm} $B$J$I(B) $B$rF~$C$FMh$?%a!<%k$r%0%k!<%W$KJ,3d(B -$B$9$k$?$a$K;H$$$^$9!#$b$7$=$&$7$F$$$k$N$G$"$l$P!"%a!<%k%P%C%/%(%s%I$,<+J,(B -$B<+?H$G%a!<%k$rJ}$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$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 +$B%W%Q%i%a!<%?$rDI2C$N%"%I%l%9$N%j%9%H$K@_Dj$9$k$@$1$G=*$j$G$9!#@55,I=8=$r(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: +@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 + +@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 + +$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: -$B$b$7J#9g(B @code{procmail}/POP/mailbox $B@_Dj$r;H$C$F$$$k$N$G$"$l$P!"0J2<$N(B -$B$h$&$J;v$r$9$k;v$,$G$-$^$9(B: +@example +nnml:mail.bar: +((to-address . "bar@@femail.com") + (split-regexp . ".*@@femail\\.com")) +nnml:mail.foo: +((to-list . "foo@@nowhere.gov") + (extra-aliases "foo@@localhost" "foo-redist@@home") + (split-exclude "bugs-foo" "rambling-foo") + (admin-address . "foo-request@@nowhere.gov")) +nnml:mail.others: +((split-spec . catch-all)) +@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: -@vindex nnmail-use-procmail @lisp -(setq nnmail-use-procmail t) -(setq nnmail-spool-file - '("/usr/spool/mail/my-name" "po:my-name")) +(| (& (any "\\(bar@@femail\\.com\\|.*@@femail\\.com\\)" "mail.bar") + (any "\\(foo@@nowhere\\.gov\\|foo@@localhost\\|foo-redist@@home\\)" + - "bugs-foo" - "rambling-foo" "mail.foo")) + "mail.others") @end lisp -$B$3$l$O$$$/$D$+$N!"$*$=$i$/!"4|BT$7$J$$I{8z2L$r$b$?$i$9$G$"$m$&(B -@code{nnmail-split-methods} $B$b@_Dj$7$?$$$H$O;W$o$J$$$H$$$&;v$b0UL#$7$^$9!#(B - -$B%a!<%k%P%C%/%(%s%I$,$I$N%0%k!<%W$K1?$V$+$r?R$M$i$l$?$H$-$O!"$=$l$OB>$NJ}(B -$BK!$G1?$V;v$rH/8+$7$?B>$NA4$F$N%0%k!<%W$H6&$K!"$=$NJQ?t$NFbMF$+$iCM$r5"$7(B -$B$^$9!#(B@code{nnmh} $B0J30$N%P%C%/%(%s%I$OA0(B (name) $B$H$7$F(B @samp{foo} $B$r!"J}K!(B (method) $B$H$7$F(B @samp{nnmh} -$B$rEz$($F$/$@$5$$!#(B2$B$D$NB>$N%0%k!<%W!"(B@samp{bar} $B$H(B @samp{mail.baz} $B$N$?(B -$B$a$KF1MM$N;v$r(B2$B2s7+$jJV$7$F$/$@$5$$!#A4$F$N$"$J$?$N%a!<%k%0%k!<%W$r4^$a(B -$B$k$h$&$K$7$F$/$@$5$$!#(B - -$B$3$l$GA4It$G$9!#$b$&!"%a!<%k$rFI$`;v$,$G$-$k$h$&$K@_Dj$5$l$F$$$^$9!#$3$N(B -$BJ}K!$N%"%/%F%#%V%U%!%$%k$O<+F0E*$K:n@.$5$l$^$9!#(B - -@vindex nnmail-procmail-suffix -@vindex nnmail-procmail-directory -$B$b$7(B @code{nnfolder} $B$dB>$N(B2$BDL0J>e$N%a!<%k$r0l$D$N%U%!%$%k$KN/$a$k%P%C%/(B -$B%(%s%I$r;H$C$F$$$k$N$J$i!"(Bgnus $B$,8+$k%U%!%$%k$K(B procmail $B$,%a!<%k$r2C$((B -$B$J$$$h$&$K$7$J$1$l$P$J$j$^$;$s!#Be$o$j$K!"(Bprocmail $B$OA4$F$NF~$C$F$/$k%a!<(B -$B%k$r(B @code{nnmail-procmail-directory} $B$KF~$l$k$Y$-$G$9!#F~$C$FMh$?%a!<%k(B -$B$rF~$l$k%U%!%$%kL>$KE~Ce$9$k$?$a$K!"%0%k!<%WL>$K(B -@code{nnmail-procmail-suffix} $B$rIU2C$7$F$/$@$5$$!#%a!<%k%P%C%/%(%s%I$O$3(B -$B$l$i$N%U%!%$%k$+$i%a!<%k$rFI$_9~$_$^$9!#(B - -@vindex nnmail-reslpit-incoming -Gnus $B$,(B @file{mail.misc.spool} $B$H8F$P$l$F$$$k%U%!%$%k$rFI$_9~$s$@$H$-$O!"(B -$B$3$N%a!<%k$O4|BTDL$j!"(B @code{mail.misc} $B$KF~$l$i$l$^$9!#$7$+$7!"(Bgnus $B$K(B -$BIaDL$NJ}K!$G%a!<%k$rJ,3d$5$;$?$$>l9g!"(B@code{nnmail-resplit-incoming} $B$r(B -@code{t} $B$K@_Dj$9$k;v$,$G$-$^$9!#(B +@findex gnus-group-split-fancy +$BA4$F$N%a!<%k%0%k!<%W$G%0%k!<%WJ,3d$r;HMQ$7$?$/$O$J$$$H$-$O!"(B +@code{nnmail-split-fancy} $BJ,3d$r@\(B @code{nnmh} $B$N%G%#%l%/(B -$B%H%j!<$KF~$l$k$h$&$K$7$F$$$k>l9g(B ($B$3$l$O$9$k$Y$-$G$O$J$$$3$H$G$9$,(B)$B!"(B -gnus $B$,:G8e$N5-;v(B ($B$9$J$o$A!"$b$C$H$bBg$-$$5-;vHV9f$r;}$D5-;v(B) $B$r4|8B@Z(B -$B$l:o=|$9$k$N$rKI$0$?$a$K!"(B@code{nnmail-keep-last-article} $B$r(B @code{nil} -$B$G$J$$CM$K@_Dj$9$k$Y$-$G$9!#(B - -$B$3$l$O@_Dj$NNc$G$9(B: $BF~$C$F$/$k%9%W!<%k$O(B @file{~/incoming/} $B$KCV$+$l$F$$(B -$B$F!"(B@samp{""} $B$r@\Hx8l$H$7$F;}$C$F$$$^$9(B ($B$9$J$o$A!"F~$C$F$/$k%9%W!<%k%U%!(B -$B%$%k$O$=$l$HEy2A$J%0%k!<%W$HF1$8L>A0$K$J$C$F$$$^$9(B)$B!#(B @code{nnfolder} $B%P%C(B -$B%/%(%s%I$O%a!<%k%$%s%?!<%U%'!<%9$H$7$F;H$o$l!"(B@code{nnfolder} $B%G%#%l%/%H(B -$B%j!<$O(B @file{~/fMail/} $B$G$9!#(B +@lisp +(: gnus-mlsplt-fancy GROUPS NO-CROSSPOST CATCH-ALL) +@end lisp + +@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 + +@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 +@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 + +@findex gnus-group-split-update +$B$7$+$7!"%0%k!<%W%Q%i%a!<%?$rJQ99$9$k$H!"(B@code{nnmail-split-fancy} $B$rJN,$7$J$$>l9g$O(B ($B$=$l$O%*%W%7%g%s$G$9(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$K$^$7$/$J$$%a!<%k$r:o=|$5$;$k$?$a$K$O!"5-;v$r(B @dfn{$B4|8B@Z$l>C5n $B$&$J>l9g$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$=$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$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 @@ -9882,7 +10736,7 @@ Gnus $B$KK>$^$7$/$J$$%a!<%k$r:o=|$5$;$k$?$a$K$O!"5-;v$r(B @dfn{$B4|8B@Z$l>C5n $B%U%)%k%H$O(B7$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$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: @@ -9903,11 +10757,11 @@ 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 +$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 -$B4|8B@Z$l4|4V$rA*BrE*$KJQ99$9$k$?$a$K%0%k!<%W%Q%i%a!<%?(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 @vindex nnmail-keep-last-article @@ -9932,6 +10786,10 @@ Gnus $B$O5-;v$,$I$N%0%k!<%W$KB0$7$F$$$k$+$K4p$E$$$F!"$=$l$,$I$N$/$i$$@8B8(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 +@vindex gnus-inhibit-user-auto-expire +@code{gnus-inhibit-user-auto-expire} $B$,(B @code{nil} $B$G$J$1$l$P!"%0%k!<%W(B +$B$,<+F0;~8B>C5n$,;HMQ$5$l$k$h$&$K$J$C$F$$$F$b!"MxMQC5n2DG=$N0u$rIU$1$^$;$s!#(B @node Washing Mail @subsection $B%a!<%k@vBu(B @@ -9959,7 +10817,8 @@ Gnus $B$O5-;v$rI=<($9$k$H$-$K$=$l$r@vBu$9$k$?$a$K2aEY$N4X?t$rDs6!$7$F$$$^(B @item nnmail-prepare-incoming-hook @vindex nnmail-prepare-incoming-hook $B$3$N%U%C%/$O%a!<%k$K2?$+$r$9$kA0$K8F$P$l!"4pK\E*$J!"%a!<%k$rA]$$$F$-$l$$(B -$B$K$9$k=j:n$N$?$a$K$"$j$^$9!#;H$&;v$N$G$-$k4X?t$O(B: +$B$K$9$k=j:n$N$?$a$K$"$j$^$9!#$=$l$OA4$F$N?7$7$$!"F~$C$F$-$?%a!<%k$r4^$s$G(B +$B$$$k%P%C%U%!$G8F$P$l$^$9!#;H$&;v$N$G$-$k4X?t$O(B: @table @code @item nnheader-ms-strip-cr @@ -9995,10 +10854,20 @@ Gnus $B$O5-;v$rI=<($9$k$H$-$K$=$l$r@vBu$9$k$?$a$K2aEY$N4X?t$rDs6!$7$F$$$^(B '("(idm)" "nagnagnag")) @end lisp +$B$3$l$O(B @code{gnus-list-identifiers} $B$GHsGK2uE*$K9T$&$3$H$b$G$-$^$9!#(B +@xref{Article Hiding}$B!#(B + @item nnmail-remove-tabs @findex nnmail-remove-tabs $BA4$F$N(B @samp{TAB} $BJ8;z$r(B @samp{SPACE} $BJ8;z$KJQ49$7$^$9!#(B +@item nnmail-fix-eudora-headers +@findex nnmail-fix-eudra-headers +@cindex Eudora +Eudora $B$O2u$l$?(B @code{References} $B%X%C%@!<$r:n@.$7$^$9$,!"(B +@code{In-Reply-To} $B%X%C%@!<$K$O$A$c$s$H$7$?$b$N$rF~$l$^$9!#$3$N4X?t$O(B +@code{References} $B%X%C%@!<$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$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 @@ -10079,20 +10948,20 @@ Quoted Readable $BId9f2=$rI|9f2=$7$^$9!#(B $B$?$$$H;W$C$F$$$k$H2>Dj$9$k$H$$$&$&$k$5$$JJ$,$"$j$^$9!#$3$l$O$b$C$H$b$G$J(B $B$$;v$G$O$J$$$+$b$7$l$^$;$s$,!"$"$J$?$NK>$`;v$G$O$J$$$+$b$7$l$^$;$s!#(B -$B$b$7(B @code{nnmail-spool-file} $B$r(B @code{nil} $B$K@_Dj$9$k$H!"$I$N%P%C%/%(%s(B -$B%I$bF~$C$F$/$k%a!<%k$rFI$b$&$H;n$_$k;v$O$J$/!"K>$`;v$N(B +$B$`;v$No$KK~B-$7$F$$$F!"8E$$(B +$BNc$($P!"(B@code{nnml} $B$G%a!<%k$rFI$`;v$KHs>o$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- @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 +$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 $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 @@ -10106,12 +10975,17 @@ 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 @end menu @@ -10151,7 +11025,7 @@ 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 +@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 @@ -10192,14 +11066,14 @@ 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}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 +$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 @@ -10252,7 +11126,7 @@ 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 +$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 @end table @@ -10324,15 +11198,415 @@ mbox $B%U%!%$%k$r=E$$B-C5n$5$l$k%a%C%;!<%8$KHO0O$r69$a$i$l$FC5n$9$k$^$($K2?$i$+$N>pJs$r(B +$B(B +$B$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 + +$B$^$:!"MQ8l$H$7$F!"(B@dfn{$B%P%C%/%(%s%I(B} (backend) $B$ODc$`$J$i!"F)2aE*$G$"$j!"$=$l$O2?$+$r@.$7?k$2$k$b$N$G(B +$B$9!#$=$N$3$3$m$O!"%a!<%k$O$I$3$+$i$+Mh$J$1$l$P$J$i$:!"E,@Z$J%P%C%/%(%s%I(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%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 +$B$3$H$G$9!#$=$l$>$l$K$ONI$$E@$H0-$$E@$,$$$/$D$+$"$j$^$9(B: + +@table @code +@item nnmbox + +UNIX $B%7%9%F%`$ONr;KE*$KC10l$N!"Hs>o$K0lHLE*$J!">e2A$G$-$k(B) $BJQ99$r$;$:$KJ#@=$9$k$3$H$G$9!#$=$l$O(B gnus $B$N4D6-$N;H(B +$BMQ2DG=HO0O$K%a!<%k$r0\F0$9$k(B ``$B:G$b6r$+$J(B''$BJ}K!$G$9!#$3$l$ODj$a$i$l$?>l(B +$B=j$K0\F0$9$k$N$rB.$/$7$^$9$,!"(Bgnus $B$,$I$3$K2?$,$"$k$+$rD4$Y$k$H$-$O!"2r(B +$B@O$,CY$/$J$j$^$9!#(B + +@item nnbabyl + +$B$`$+$7$`$+$7!"(BTOPS $B$H8F$P$l$k%*%Z%l!<%F%#%s%0%7%9%F%`$d!";w$?$h$&$J$b$N(B +$B$ruBV%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 +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 + +@item nnml + +@code{nnml} $B$O$[$H$s$I(B @code{nnspool} $B@\B3$N(B Usenet $B%7%9%F%`$rA`:n$7$F$$(B +$B$k$h$&$J46$8$N$9$k%P%C%/%(%s%I$G$9!#(B($Bo$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 +$B$s@jM-$7$^$9!#%7%9%F%`4IM}e$G@83h$7$F$$$k$J$i!"(B@code{nnml} $B$OHs>o$KBg$-$JMxE@$,(B +$B$"$j$^$9!#(B + +$B$^$?!"(BFAT16 $B$N(B Windows $B$N@$3&$K@8$-$F$$$k$J$i!"LdBj$,$"$k$G$7$g$&!#$?$/(B +$B$5$s$N>.$5$J%U%!%$%k$GB?$/$N>l=j$r/$7$+!"A4$/$J$$$+$H$$$&DxEY$G$9(B -- @code{nnmh} $B$O0UL#E*(B +$B$K$O(B ``@code{nnml} $B$K%"%/%F%#%V%U%!%$%k$H(B overview $B$N$J$$$b$N(B'' $B$HEy2A$G(B +$B$9!#$3$l$O5DO@$N$"$k$H$3$m$G$9$,!":G0-$NA*Br$G$9!#$H$$$&$N$O!"8D!9$N%U%!(B +$B%$%k$N:n@.$NCY$5$,!"%0%k!<%W$G2?$,?7$7$$$+$rCN$k$H$-$N2r@O$N$?$a$N;HMQ$N(B +$BCY$5$,7k$SIU$/$+$i$G$9!#(B + +@item nnfolder + +$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$b$7$?$/$5$s$NNL$N%a%C%;!<%8$r } will be quoted with +@code{blockquote} instead, and signatures will have @code{br} added to +the end of each line. Other than that, you can just write @sc{html} +directly into the message buffer. Note that Slashdot filters out some +@sc{html} forms. + +The following variables can be altered to change its behavior: + +@table @code +@item nnslashdot-threaded +Whether @code{nnslashdot} should display threaded groups or not. The +default is @code{t}. To be able to display threads, @code{nnslashdot} +has to retrieve absolutely all comments in a group upon entry. If a +threaded display is not required, @code{nnslashdot} will only retrieve +the comments that are actually wanted by the user. Threading is nicer, +but much, much slower than untreaded. + +@item nnslashdot-login-name +@vindex nnslashdot-login-name +The login name to use when posting. + +@item nnslashdot-password +@vindex nnslashdot-password +The password to use when posting. + +@item nnslashdot-directory +@vindex nnslashdot-directory +Where @code{nnslashdot} will store its files. The default value is +@samp{~/News/slashdot/}. + +@item nnslashdot-active-url +@vindex nnslashdot-active-url +The @sc{url} format string that will be used to fetch the information on +news articles and comments. The default is +@samp{http://slashdot.org/search.pl?section=&min=%d}. + +@item nnslashdot-comments-url +@vindex nnslashdot-comments-url +The @sc{url} format string that will be used to fetch comments. The +default is +@samp{http://slashdot.org/comments.pl?sid=%s&threshold=%d&commentsort=%d&mode=flat&startat=%d}. + +@item nnslashdot-article-url +@vindex nnslashdot-article-url +The @sc{url} format string that will be used to fetch the news article. The +default is +@samp{http://slashdot.org/article.pl?sid=%s&mode=nocomment}. + +@item nnslashdot-threshold +@vindex nnslashdot-threshold +The score threshold. The default is -1. + +@item nnslashdot-group-number +@vindex nnslashdot-group-number +The number of old groups, in addition to the ten latest, to keep +updated. The default is 0. + +@end table + + + +@node Ultimate +@subsection Ultimate +@cindex nnultimate +@cindex Ultimate Bulletin Board + +The Ultimate Bulletin Board (@file{http://www.ultimatebb.com/}) is +probably the most popular Web bulletin board system used. It has a +quite regular and nice interface, and it's possible to get the +information Gnus needs to keep groups updated. + +The easiest way to get started with @code{nnultimate} is to say +something like the following in the group buffer: @kbd{B nnultimate RET +http://www.tcj.com/messboard/ubbcgi/ RET}. (Substitute the @sc{url} +(not including @samp{Ultimate.cgi} or the like at the end) for a forum +you're interested in; there's quite a list of them on the Ultimate web +site.) Then subscribe to the groups you're interested in from the +server buffer, and read them from the group buffer. + +The following @code{nnultimate} variables can be altered: + +@table @code +@item nnultimate-directory +@vindex nnultimate-directory +The directory where @code{nnultimate} stores its files. The default is +@samp{~/News/ultimate/}. +@end table + +@node Web Archive +@subsection Web Archive +@cindex nnwarchive +@cindex Web Archive + +Some mailing lists only have archives on Web servers, such as +(@file{http://www.egroups.com/}). It has a quite regular and nice +interface, and it's possible to get the information Gnus needs to keep +groups updated. + +The easiest way to get started with @code{nnwarchive} is to say +something like the following in the group buffer: @kbd{M-x +gnus-group-make-nnwarchive-group RET an_egroup RET egroups RET +www.egroups.com RET your@@email.address RET}. (Substitute the +@sc{an_egroup} with the mailing list you subscribed, the +@sc{your@@email.address} with your email address.) + +The following @code{nnwarchive} variables can be altered: + +@table @code +@item nnwarchive-directory +@vindex nnwarchive-directory +The directory where @code{nnwarchive} stores its files. The default is +@samp{~/News/warchive/}. + +@item nnwarchive-login +@vindex nnwarchive-login +The account name on the web server. + +@item nnwarchive-passwd +@vindex nnwarchive-passwd +The password for your account on the web server. +@end table @node Other Sources @section $B$=$NB>$N%0%k!<%W8;(B @@ -10346,9 +11620,9 @@ Gnus $B$O$?$@C1$K%K%e!<%9$d%a!<%k$rFI$`0J>e$N$3$H$,$G$-$^$9!#0J2<(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 -* Web Searches:: $BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k!#(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:: Using Gnus as a @sc{imap} client. @end menu @@ -10361,7 +11635,7 @@ Gnus $B$O$?$@C1$K%K%e!<%9$d%a!<%k$rFI$`0J>e$N$3$H$,$G$-$^$9!#0J2<(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$3$3$G(B Emacs $B$NAG@2$i$7$$%Q%C%1!<%8$NCf$G$b:G$bAG@2$i$7$$(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 @@ -10416,7 +11690,7 @@ Gnus $B$O$?$@C1$K%K%e!<%9$d%a!<%k$rFI$`0J>e$N$3$H$,$G$-$^$9!#0J2<(B $B$G$7$g$&!#0J2A0!#(B @@ -10485,16 +11764,12 @@ rnews $B$N%P%C%AE>Aw7A<0!#(B @item forward $BE>Aw$5$l$?5-;v!#(B -@item mime-parts -$B=8G[G[Aw(B (digest) $B$NB>$N(B MIME $BB?ItJ,%a%C%;!<%8(B (multipart message) $B$G$9!#(B +@item nsmail +Netscape mail box$B!#(B @item mime-digest -@cindex digest -@cindex MIME digest -@cindex 1153 digest -@cindex RFC 1153 digest -@cindex RFC 341 digest -MIME (RFC 1341) $B$^$H$aAw$j7A<0!#(B +@item mime-parts +MIME $BB>ItJ,%a%C%;!<%8(B (multipart) $B$G$9!#(B @item standard-digest $BI8=`(B (RFC 1153) $B$^$H$aAw$j7A<0!#(B @@ -10518,7 +11793,7 @@ gnus $B$N%a!<%k%P%C%/%(%s%I$KDI2C$7$?$$$H$$$&$H$-$O!"$*$=$i$/(B @code{nndoc} $B$,=u$1$K$J$j$^$9!#Nc$($P$"$J$?$,%a!<%k$r8E$$(B @file{RMAIL} $B$G;}$C$F$$$F!"$=$l$r$"$J$?$N?7$7$$(B @code{nnml} $B%0%k!<(B $B%W$KJ,G[$7$?$$$H$7$^$9!#$"$J$?$O$=$N%U%!%$%k$r(B @code{nndoc} $B$r;H$C(B -$B$F3+$$$F(B ($B%0%k!<%W%P%C%U%!$G(B @kbd{G f} $BL?Na$r;H$&(B +$B$F3+$$$F(B ($B%0%k!<%W%P%C%U%!$G(B @kbd{G f} $BL?Na$r;H$&(B (@pxref{Foreign Groups}))$B!"%P%C%U%!Fb$NA45-;v$K%W%m%;%9%^!<%/$r(B $BIU$1(B ($BNc$($P(B @kbd{M P b})$B!"$=$7$F(B @code{nnml} $B$r;H$C$F:F%9%W!<%k(B (@kbd{B r}) $B$7$^$9!#A4$F$,$&$^$/9T$1$P!"(B@file{RMAIL} $B%U%!%$%kFb(B @@ -10531,10 +11806,10 @@ gnus $B$N%a!<%k%P%C%/%(%s%I$KDI2C$7$?$$$H$$$&$H$-$O!"$*$=$i$/(B @table @code @item nndoc-article-type @vindex nndoc-article-type -$B$3$l$O(B @code{mbox}$B!"(B @code{babyl}$B!"(B @code{digest}$B!"(B@code{news}$B!"(B +$B$3$l$O(B @code{mbox}$B!"(B @code{babyl}$B!"(B @code{digest}$B!"(B@code{news}$B!"(B @code{rnews}$B!"(B @code{mmdf}$B!"(B @code{forward}$B!"(B @code{rfc934}$B!"(B -@code{rfc822-forward}$B!"(B @code{mime-digest}$B!"(B -@code{standard-digest}$B!"(B@code{slack-digest}$B!"(B +@code{rfc822-forward}$B!"(B @code{mime-digest}$B!"(B +@code{standard-digest}$B!"(B@code{slack-digest}$B!"(B @code{clari-briefs}$B!"(B@code{guess} $B$N$$$:$l$+$G$J$/$F$O$J$j$^$;$s!#(B @item nndoc-post-type @@ -10661,7 +11936,7 @@ gnus $B$N%a!<%k%P%C%/%(%s%I$KDI2C$7$?$$$H$$$&$H$-$O!"$*$=$i$/(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=qA0$G$9!#$3$3$G(B @var{X} $B$O?t;z$G$9!#(B +@file{SoupoutX.tgz} $B$H$$$&L>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 +@file{SoupinX.tgz} $B$H$$$&L>A0$G$9!#$3$3$G(B @var{x} $B$O?t;z$G$9!#(B @end table @@ -10767,7 +12042,7 @@ 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 $B$D$^$j4pK\E*$KFsl=j!#=i4|@_DjCM$O(B @file{~/}$B!#(B @sc{soup} $B$5$;$?$+$C$?$i!"FsHVL\$r;H$C$F$/$@$5$$!#(B -@node Web Searches -@subsection $B%&%'%V8!:w(B -@cindex nnweb -@cindex DejaNews -@cindex Alta Vista -@cindex InReference -@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$*A[%5!<%P!l9g$O!"Hs>o(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 +$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$O%a!<%k$H%K%e!<%9$NN>J}$N%0%k!<%W$r9=@.%0%k!<%W$H$9$k(B @@ -11271,10 +12718,10 @@ 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 @code{nnkiboze-directory} $BFb$K:n@.$5$l$^$9!#$3$N=i4|@_DjCM$O(B @file{~/News/} $B$G$9!#0lJ}$N%U%!%$%k$O$=$N%0%k!<%W$NA45-;v$N(B @sc{nov} $B%X%C%@!<9T$r4^$s$G$$$F!"$b$&0lJ}$O9=@.5-;v$r8+$D$1$k$?(B -$B$a$K$I$N%0%k!<%W$,8!:w$5$l$?$+$N>pJs$r3JG<$9$k!"(B@file{.newsrc} +$B$a$K$I$N%0%k!<%W$,8!:w$5$l$?$+$N>pJs$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 +@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 @@ -11334,10 +12781,11 @@ Gnus $B$r(B ``$B%*%U%i%$%s(B'' $B$N%K%e!<%9%j!<%@!<$H$7$F;H$&$N$O6K$a$F4J( * Agent Categories:: $B2?$r%@%&%s%m!<%I$9$k$+$r(B gnus $B%(!<%8%'%s%H$K65$($kJ}K!!#(B * Agent Commands:: $B3F%P%C%U%!!<$G$N?7$7$$L?Na!#(B * Agent Expiry:: $B8E$$5-;v$r>C$9J}K!!#(B -* Outgoing Messages:: $BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+(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!<%9e$G$9!#(B @@ -11421,10 +12869,10 @@ Gnus $B$r(B @code{gnus-unplugged} $B$G5/F0$7$^$9!#$3$l$O(B gnus $B%(!<%8%' $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$r$NJ,N`$KB0$5$J$$%0%k!<%W$O(B @code{$B=i4|(B} $BJ,N`$KB0$7$^$9!#(BGnus $B$OJ,N`$N:n(B +$B@.$H4IM}$N$?$a$NFH<+$N%P%C%U%!!<$r;}$C$F$$$^$9!#(B @menu * Category Syntax:: $BJ,N`$H$O$I$s$J$b$N$+!#(B @@ -11446,10 +12894,20 @@ Gnus $B$r(B @code{gnus-unplugged} $B$G5/F0$7$^$9!#$3$l$O(B gnus $B%(!<%8%' @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$OA4$/4X78$,L5$$$3$H$KCm0U$7$F$/$@$5$$!#(B) +$BDL>o$N%9%3%"$H$OI,$:$7$b4X78$,L5$$$3$H$KCm0U$7$F$/$@$5$$!#(B) @end enumerate -$B=R8l$OO@M}1i;;;R$,4V$K;6$j$P$a$i$l$?=R8l$NAH$_9g$o$;$+$i$J$j$^$9!#(B +$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 +$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 +@code{gnus-agent-high-score} $B$H(B @code{gnus-agent-low-score} $B$H$N5-;v$N%9(B +$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$*$=$i$/$$$/$D$+$NNc$,$=$N$^$^;H$($^$9!#(B @@ -11477,7 +12935,7 @@ short $B$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 +$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) $B0J2<$N=R8l$O$"$i$+$8$aDj5A$5$l$F$$$^$9$,!"$3$l$i$N$I$l$b$"$J$?$N(B @@ -11516,12 +12974,177 @@ gnus $B%(!<%8%'%s%H$,$=$N5-;v$r(B SPAM $B$@$H8+Pv$7$?$i??!#$3$NH/8+E*(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$5$F!"%@%&%s%m!<%I%9%3%"$NJ8K!$ODL>o$N%9%3%"%U%!%$%k$NJ8K!$HF1$8(B -$B$G$9$,!"Nc30$H$7$F!"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 +$B$H$9$k$3$H$b$G$-$^$9!#$=$N>l9g!"0J2<$N$h$&$J4X?t$r=q$/$G$7$g$&(B: + +@lisp +(defun my-article-old-p () + "Say whether an article is old." + (< (time-to-days (date-to-time (mail-header-date gnus-headers))) + (- (time-to-days (current-time)) gnus-agent-expire-days))) +@end lisp + +$B$=$&$9$k$H!"=R8l$O$3$N$h$&$KDj5A$7$^$9(B: + +@lisp +(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) + +@lisp +(defvar gnus-category-predicate-alist + (append gnus-category-predicate-alist + '((old . my-article-old-p)))) +@end lisp + +$B$=$7$F!"C1$Ke$N$h$&$J$b$N$r;H$&$H$-$O!"@$$NCf$K$O@5$7$/@_Dj$5$l$F$$$J$$%7%9%F%`(B/$B%a(B +$B!<%i!<$,$"$j!"5-;v$NF|IU$O$$$DEj9F$5$l$?$+$r>o$K3Ne$N=R8l$O$=$NJ,N`$KB0$9$k(B*$BA4$F(B*$B$N%0%k!<%W$KE,MQ$5$l$^$9!#$7$+$7!"J,N`Cf(B +$B$N8D!9$N%0%k!<%W$KFCDj$N=R8l$rK>$s$@$j!"BUBF2a$.$F?7$7$$J,N`$r@_Dj$G$-$J(B +$B$$$H$-$O!"%0%k!<%W$N8D!9$N=R8l$r%0%k!<%W%Q%i%a!<%?$Ge$N$b$N$HEy2A$JD9$$J}$NNc$O(B: + +@lisp +(agent-predicate or high (and (not low) (not long))) +@end lisp + +$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$re$G=q$+$l$F$$$k$h$&$K!"%9%3%"IU$1%-!<%o!<%I$N0lItJ,$7$+;H$($J$$$3$H$r=|(B +$B$1$P!"$3$l$OIaDL$N(B gnus $B%9%3%"%U%!%$%k$N9=J8$HF1$8$G$9!#(B + +$BNc(B: + +@itemize @bullet +@item +$BJ,N`;XDj(B + +@lisp +(("from" + ("Lars Ingebrigtsen" 1000000 nil s)) +("lines" + (500 -100 nil <))) +@end lisp + +@item +$B%0%k!<%W%Q%i%a!<%?;XDj(B + +@lisp +(agent-score ("from" + ("Lars Ingebrigtsen" 1000000 nil s)) + ("lines" + (500 -100 nil <))) +@end lisp + +$B$^$?!"$3$3$G0lHV30$N3g8L$,>JN,$5$l$F$$$k$3$H$KCm0U$7$F$/$@$5$$!#(B +@end itemize + +@item +$B%(!<%8%'%s%H%9%3%"%U%!%$%k(B + +$B$3$l$i$N%9%3%"%U%!%$%k$O>e$G=R$Y$i$l$F$$$k;HMQ2DG=$J%9%3%"IU$1%-!<%o!<%I(B +*$B$N$_(B* $B$G$"$kI,MW$,$"$j$^$9!#(B + +$BNc(B: + +@itemize @bullet +@item +$BJ,N`;XDj(B + +@lisp +("~/News/agent.SCORE") +@end lisp + +$B$b$7$/$O!"$?$V$s(B + +@lisp +("~/News/agent.SCORE" "~/News/agent.group.SCORE") +@end lisp + +@item +$B%0%k!<%W%Q%i%a!<%?;XDj(B + +@lisp +(agent-score "~/News/agent.SCORE") +@end lisp + +$B>e$NMM$K!"DI2C$N%9%3%"%U%!%$%k$r;XDj$9$k$3$H$,$G$-$^$9!#$^$?3g8L$K$D$$$F(B +$B8@$o$J$1$l$P$$$1$^$;$s$+(B? +@end itemize + +@item +@code{$BIaDL(B} $B$N%9%3%"%U%!%$%k$N;HMQ(B + +$B0l$D$N%0%k!<%W$G(B2$B$D$N%9%3%"5,B'$r0];}$7$?$/$J$/!"%0%k!<%W$NK>$_$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 + +$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 +$BJ,=89g$KL5$$$b$N$r(B *$BA*JL$7$FH4$-C5n$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 @end table @@ -11738,8 +13369,8 @@ $ emacs -batch -l ~/.gnus.el -f gnus-agent-batch-fetch @vindex gnus-agent-expire-days @findex gnus-agent-expire @kindex M-x gnus-agent-expire -@cindex Agent expire -@cindex Gnus Agent expire +@cindex Agent expiry +@cindex Gnus Agent expiry @cindex expiry @code{nnagent} $B$O4|8B@Z$l>C5n$r07$$$^$;$s!#$=$NBe$o$j$K!"FCJL$J(B @@ -11765,7 +13396,7 @@ 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$^$^$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 +$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 @@ -11805,13 +13436,12 @@ Gnus $B%(!<%8%'%s%H$,%U%!%$%k$r3JG<$9$k>l=j!#=i4|@_DjCM$O(B @lisp ;;; Gnus $B$,$I$N$h$&$K%K%e!<%9$r - Mail $B$N - Spool $B$KN/$C$?(B message $B$NAw?.(B -> - News $B$NAw?.(B -> + Mail $B$N + Spool $B$KN/$C$?(B message $B$NAw?.(B -> + News $B$NAw?.(B -> $BITMW$J5-;v$N(B expire @end lisp @@ -11944,6 +13574,28 @@ Message $B$r2#$N%*%U%i%$%s%K%e!<%9%j!<%@!<$N$h$&$K$OF0:n$7$^$;(B +$B$s!#$3$l$i$OA[A|E*$J?M$+$i$NNI$/$"$kl9g!"(B +$B$b$&0l2s%@%&%s%m!<%I$5$l$k$N$G$9$+(B? + +@strong{$B$O$$!#(B} + +@end table + +$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 @@ -11953,13 +13605,13 @@ Message $B$r2#$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 +$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 -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 +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 $B8=:_$N5-;v$K4p$E$$$F%9%3%"$NEPO?$rA^F~$9$k$$$/$D$+$NL?Na$,35N,%P%C%U%!$K(B @@ -11973,7 +13625,7 @@ 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 @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 +* 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:: $B$H$N9gCW$r$7!"(B +$B$3$NCxe$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 @@ -12235,7 +13888,7 @@ Messsage-ID $B$K%9%3%"$rIU$1$^$9!#(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 +$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 @end table @@ -12246,7 +13899,7 @@ 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 @findex gnus-batch-score @cindex batch scoring @example -& emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score +& emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-batch-score @end example @@ -12273,12 +13926,12 @@ 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 @item gnus-kill-files-directory @vindex gnus-kill-files-directory $BA4$F$N:o=|$H%9%3%"$N%U%!%$%k$O$3$N%G%#%l%/%H%j!<$KC_@Q$5$l!"$=$l$O=i4|@_(B -$BDj$G4D6-JQ?t(B @code{SAVEDIR} $B$K$h$C$F=i4|2=$5$l$^$9!#$3$l$O=i4|@_Dj$G(B +$BDj$G4D6-JQ?t(B @code{SAVEDIR} $B$K$h$C$F=i4|2=$5$l$^$9!#$3$l$O=i4|@_Dj$G(B @file{~/News/} $B$G$9!#(B @item gnus-score-file-suffix @vindex gnus-score-file-suffix -$B%9%3%"%U%!%$%k$K$?$I$jCe$/$?$a$K%0%k!<%WL>$K2C$($k@\Hx8l$G$9(B ($B=i4|CM$G(B +$B%9%3%"%U%!%$%k$K$?$I$jCe$/$?$a$K%0%k!<%WL>$K2C$($k@\Hx8l$G$9(B ($B=i4|CM$G(B @samp{SCORE} $B$G$9!#(B) @item gnus-score-uncacheable-files @@ -12289,15 +13942,19 @@ 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 @@ -12343,7 +14000,7 @@ gnus $B$K%9%3%"$r(B @file{.newsrc.eld} $B%U%!%$%k$KJ]B8$9$k$h$&$K$5$;$^$9!#( 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$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 $B$3$l$O!"A4$F$N%0%k!<%W$KE,MQ$7$?$$%9%3%"EPO?$,$$$/$D$+$"$k>l9g$O!"$=$l$i(B @@ -12356,7 +14013,7 @@ 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 +$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 @@ -12366,7 +14023,7 @@ Gnus $B$O0lHLE*$J%9%3%"%U%!%$%k$rFCDj$N%9%3%"%U%!%$%k8~$1$N$b$N$h$jA0$KE,(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$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 @@ -12434,7 +14091,7 @@ 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 @@ -12451,7 +14108,7 @@ Gnus $B$O0lHLE*$J%9%3%"%U%!%$%k$rFCDj$N%9%3%"%U%!%$%k8~$1$N$b$N$h$jA0$KE,(B $B$^$9(B: @code{Body} $B$O5-;v$NK\BN(B (Body) $B$G9gCW$r2A$,(B @code{nil} $B$G$J$$$H!"??$H$J$j$^$9!#Nc$($P!">e5i9gCW(B +$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 @@ -12517,7 +14174,7 @@ Gnus $B$O0lHLE*$J%9%3%"%U%!%$%k$rFCDj$N%9%3%"%U%!%$%k8~$1$N$b$N$h$jA0$KE,(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 +$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 @@ -12536,8 +14193,8 @@ Date ($BF|IU(B) $B%X%C%@!<$K$O(B3$B$D$N$J$s$H$J$/$P$+$2$F$$$k9gCW$N7?$,$"$j @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} +$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 @@ -12558,11 +14215,11 @@ Date ($BF|IU(B) $B%X%C%@!<$K$O(B3$B$D$N$J$s$H$J$/$P$+$2$F$$$k9gCW$N7?$,$"$j @item Thread $B$3$N9gCW%-!<$O(B @code{Followup} $B9gCW%-!<$HF1$89T$KF0:n$7$^$9!#(B -@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 +@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 +$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 @@ -12604,7 +14261,7 @@ Date ($BF|IU(B) $B%X%C%@!<$K$O(B3$B$D$N$J$s$H$J$/$P$+$2$F$$$k9gCW$N7?$,$"$j @item read-only $BFI$_9~$_@lMQ%9%3%"%U%!%$%k$O99?7$5$l$?$jJ]B8$5$l$?$j$7$^$;$s!#A4BNE*%9%3(B -$B%"%U%!%$%k$O$3$N%"%H%`$r;HMQ$9$k$Y$-$G$9(B (@pxref{Global Score Files})$B!#(B +$B%"%U%!%$%k$O$3$N%"%H%`$r;HMQ$9$k$Y$-$G$9(B (@pxref{Global Score Files})$B!#(B ($BCm0U(B: @dfn{$BA4BNE*(B} $B$O$3$3$G$OK\Ev$K(B @dfn{$BA4BNE*(B} $B$H$$$&0UL#$G$9!#8D?ME*(B $B$JA4$F$N%0%k!<%W$KE,MQ$9$k%9%3%"%U%!%$%k$N;v$G$O$"$j$^$;$s!#(B) @@ -12632,12 +14289,12 @@ Date ($BF|IU(B) $B%X%C%@!<$K$O(B3$B$D$N$J$s$H$J$/$P$+$2$F$$$k9gCW$N7?$,$"$j $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 @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%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 @@ -12649,8 +14306,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 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$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 @@ -12671,7 +14328,7 @@ 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 +$B$"$J$?$,9T$C$?JQ99$rJ]B8$7$F35N,%P%C%U%!$KLa$j$^$9(B (@code{gnus-score-edit-done})$B!#(B @item C-c C-d @@ -12768,7 +14425,7 @@ line)} $B$K@_Dj$7$F$/$@$5$$!#(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{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 @@ -12783,7 +14440,7 @@ line)} $B$K@_Dj$7$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 +$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 @@ -12843,6 +14500,12 @@ line)} $B$K@_Dj$7$F$/$@$5$$!#(B $BC18lE,1~@-%9%3%"IU$1=hM}$K$*$$$F!"5-;v$N%9%3%"$,$3$N?t;z$h$j$b>.(B $B$5$/$J$k$3$H$O$"$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 +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$kMxMQ$K%^%C%A$9$l(B -$B$P!"(B@var{file-name} $B$,%[!<%`%9%3%"%U%!%$%k$H$7$F;HMQ$5$l$^$9!#(B +@code{(@var{regexp} @var{file-name})}$B!#(B@var{regexp} $B$,%0%k!<%WL>$K%^%C%A(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 @@ -12982,7 +14645,7 @@ Gnus $B$O8=:_$N%P%C%U%!!<$+$i(B @code{Message-ID} $B%X%C%@!<$r8+$D$1=P(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$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$"$J$?$N<+J,$N(B @code{Message-ID} $B$r$8$C$/$j$HD/$a$F$_$k$H!"$O$8(B @@ -13034,10 +14697,10 @@ Gnus $B$O8=:_$N%P%C%U%!!<$+$i(B @code{Message-ID} $B%X%C%@!<$r8+$D$1=P(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$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 @@ -13054,7 +14717,7 @@ Gnus $B$O8=:_$N%P%C%U%!!<$+$i(B @code{Message-ID} $B%X%C%@!<$r8+$D$1=P(B @item $BH]DjJ8;z%/%i%9(B $B$b$7(B @code{[^abcd]*} $B$_$?$$$J$b$N$r;XDj$9$k$H!"$?$V$s4|BTDL$j$N(B $B7k2L$OF@$i$l$J$$$G$7$g$&!#$3$l$O2~9TJ8;z$K$b%^%C%A$7$F$7$^$$!"$(!<(B -$B$H!"L$CN$N@$3&$^$GB3$/$+$b$7$l$^$;$s!#Be$o$j$K(B@code{[^abcd\n]*} +$B$H!"L$CN$N@$3&$^$GB3$/$+$b$7$l$^$;$s!#Be$o$j$K(B@code{[^abcd\n]*} $B$r;H$C$F$/$@$5$$!#(B @end table @@ -13082,7 +14745,7 @@ Gnus $B$O8=:_$N%P%C%U%!!<$+$i(B @code{Message-ID} $B%X%C%@!<$r8+$D$1=P(B @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 +$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 @@ -13269,7 +14932,7 @@ GNUS $B>C5n%U%!%$%k$rJT=8$9$k$?$a$NFs$D$N35N,%P%C%U%!4X?t$,$"$j$^(B @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%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!"$N(B @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 +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 @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 @@ -13366,7 +15029,7 @@ GroupLens $B$G!"5-;v$NCM$rEPO?$9$k$?$a$N(B4$B$D$NJ}K!$,$"$j$^$9!#(B @item k @kindex k (GroupLens) @findex grouplens-score-thread -$B$3$N4X?t$OCMIU$1$NF~NO$rB%?J$7!"%9%l%C%I$NA4$F$N5-;v$rCMIU$1$^$9!#$3$l$O(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$O(B rec.humor $B$K$"$k$h$&$J$"$ND9$$4VB3$/%9%l%C%I$KBP$7$FHs>o$KLr$KN)$A$^$9!#(B @end table @@ -13388,7 +15051,7 @@ rec.humor $B$K$"$k$h$&$J$"$ND9$$4VB3$/%9%l%C%I$KBP$7$FHs>o$KLr$KN)$A$^$9!#(B @end table -$B$b$78=:_$N5-;v$K%9%3%"(B4$B$rIU$1!"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$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$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 @@ -13513,12 +15176,12 @@ 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 +$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 @item ! @itemx not -@itemx \254 +@itemx ¬ $B$3$NO@M}:nMQ;R$OC10l$N0z?t$N$_$r$H$j$^$9!#$=$l$O$=$N0z?t$NCM$NO@M}H]Dj$r(B $BJV$7$^$9!#(B @@ -13597,8 +15260,8 @@ Redmondo $B$,>C$($?7$2<$K$D$$$F=q$$$?$H$-$K%U%)%m!<%"%C%W$7$?A4$F$N?M$O%9(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 +$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 $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 @@ -13727,7 +15390,7 @@ 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!"C5n$7$^$9!#A02s$N@_Dj$r(B +$B%/$K@Q$_!"A4$F$N%W%m%;%90u$N5-;v$N%j%9%H$r>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 @vindex gnus-summary-goto-unread @@ -13753,7 +15416,7 @@ Gnus $B$O(B1$BF|$K(B1$B2s%9%3%"$rIeGT$5$;$h$&$H$7$^$9!#Nc$($P!"$b$7(B gnus $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$s$N$b$N$,$"$j$^$9!#9,1?$J;v$K!"$=$l(B @@ -13870,7 +15533,7 @@ Gnus $B$O$"$J$?<+?H$N=qK!;EMM;XDj$r:n$k$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 -$BIaDL$N(B C $B$d(B Emacs Lisp $B$N=qK!;EMM(B (format) $BJ8;zNs$HF1$8$h$&$K!"(B@samp{%} +$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 @@ -13885,7 +15548,7 @@ Gnus $B$O$"$J$?<+?H$N=qK!;EMM;XDj$r:n$k$$$^$9(B: @enumerate @@ -13896,7 +15559,7 @@ 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 +$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$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?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 @@ -13982,19 +15645,28 @@ gnus-compile} $B$rO$OFCJL$J(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 @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 +$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 + $B$3$l$O%0%k!<%W%P%C%U%!$NBeBX(B -$B$N%&%#%s%I%&$r>C$7$F!"(BEmacs $B$N2hLLA4BN$r@jM-$7$^$9!#$3$l$O=i4|@_Dj$G(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$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 + @vindex gnus-buffer-configuration @code{gnus-buffer-configuration} $B$O$=$l$>$l$N(B gnus $B$N%P%C%U%!$,$I$N$/$i(B $B$$$N6u4V$rM?$($i$l$k$Y$-$+$r8=$7$^$9!#$3$l$O$3$NJQ?t$NH4?h$G$9(B: @@ -14045,7 +15720,7 @@ gnus-compile} $B$r$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 +$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 @@ -14102,7 +15777,7 @@ gnus-compile} $B$re0L$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 +$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 @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 +$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 +$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 +$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 @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 +$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@_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 +$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 @@ -14196,17 +15871,10 @@ buffer-name = group | article | summary ... The GNU Emacs Lisp Reference Manual}. XEmacs $B$G$O!"%U%l!<%`%W%m%Q%F%#%j(B $B%9%H$b;H$($^$9(B---$BNc$($P!"(B@code{(height 5 width 15 left -1 top 1)} $B$O$=$N(B $B$h$&$J%Q%i%a!<%?%j%9%H$G$9!#(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$3$l$O(B @code{gnus-buffer-configuration} $B$K;EMM2DG=$J%-!<$N0lMw$G$9(B: - -@code{group}$B!"(B@code{summary}$B!"(B@code{article}$B!"(B@code{server}$B!"(B -@code{browse}$B!"(B@code{message}$B!"(B@code{pick}$B!"(B@code{info}$B!"(B -@code{summary-faq}$B!"(B@code{edit-group}$B!"(B@code{edit-server}$B!"(B -@code{edit-score}$B!"(B@code{post}$B!"(B@code{reply}$B!"(B@code{forward}$B!"(B -@code{reply-yank}$B!"(B@code{mail-bounce}$B!"(B@code{draft}$B!"(B@code{pipe}$B!"(B -@code{bug}$B!"(B@code{compose-bounce}$B!"(B@code{score-trace}$B!#(B - -$B%-!<(B @code{message} $B$O(B @code{gnus-group-mail} $B$H(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: @@ -14219,6 +15887,20 @@ The GNU Emacs Lisp Reference Manual}. XEmacs $B$G$O!"%U%l!<%`%W%m%Q%F%#%j(B (group 1.0))))) @end lisp +$BJ#?t$N%U%l!<%`$X$NNI$/$"$kMWK>$O!"%a!<%k$H%K%e!<%9$N:n@.$K$OJL$N%U%l!<%`(B +$B$r;H$$!"85$N%U%l!<%`$O$=$N$^$^$K;D$9$H$$$&$b$N$G$9!#$3$l$NC#@.$K$O!"0J2<(B +$B$N$h$&$J$b$N$G$G$-$^$9!#(B + +@lisp +(message (frame 1.0 + (if (not (buffer-live-p gnus-summary-buffer)) + (car (cdr (assoc 'group gnus-buffer-configuration))) + (car (cdr (assoc 'summary gnus-buffer-configuration)))) + (vertical ((user-position . t) (top . 1) (left . 1) + (name . "Message")) + (message 1.0 point)))) +@end lisp + @findex gnus-add-configuration $BJQ?t(B @code{gnus-buffer-configuration} $B$O$H$F$bD9$/J#;($J$N$G!"C10l$N@_Dj(B $B$NJQ99$r4JC1$K$9$k$?$a$N4X?t$,$"$j$^$9(B: @code{gnus-add-configuration} $B$G(B @@ -14233,16 +15915,20 @@ 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 +$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 +$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 +$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 + @node Faces and Fonts @section $B%U%'%$%9$H%U%)%s%H(B @@ -14272,7 +15958,7 @@ The GNU Emacs Lisp Reference Manual}. XEmacs $B$G$O!"%U%l!<%`%W%m%Q%F%#%j(B $B$3$l$r2~A1$9$k$?$a$K!"JQ?t$rO.$j$^$o$7$F!"(B($B$J$s$H$J$/(B) $BK~B-$7$?$H46$8$?(B $B8e$G!"(B@kbd{M-x gnus-compile} $B$rpJs$G%b!<%I9T$r99?7$7$^$9!#$3$NJQ?t$,(B @code{nil} +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 @cindex display-time @@ -14370,7 +16056,7 @@ gnus $B$O3:Ev$9$k$G$"$m$&>pJs$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 +@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 $BB>$NA4$F$N%P%C%U%!$N308+$K1F6A$9$kAm9gE*$JJQ?t$O(B: @@ -14378,7 +16064,7 @@ gnus $B$N%P%C%U%!$G;HMQ$5$l$^$9!#(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$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 @@ -14481,7 +16167,7 @@ Face used on buttons. Gnus$B!"$=$l$O(B($B8@$$EA$($K$h$l$P(B)$B$+$D$F=q$+$l$?$$$+$J$k%W%m%0%i%`$h(B $B$j$bBg$-$/!"$"$J$?$,$d$C$FM_$7$$$H;W$&$5$^$6$^$J4qL/$J$3$H$r!"$"(B $B$J$?$N$$$J$$$H$3$m$G9T$C$F$/$l$k$b$N$G$9!#Nc$($P!"$"$J$?$O;~$?$^(B -$B?7Ce%a!<%k$r%A%'%C%/$7$F$b$i$$$?$/$J$k$+$bCN$l$^$;$s!#$"$k$$$O(B +$B?7Ce%a!<%k$r%A%'%C%/$7$F$b$i$$$?$/$J$k$+$bCN$l$^$;$s!#$"$k$$$O(B Emacs $B$r$7$P$i$/J|$C$F$*$$$?$H$-A4$F$N%5!<%P$N@\B3$r@ZCG$7$F$b$i(B $B$$$?$/$J$k$+$b$7$l$^$;$s!#B>$K$b2?$+$=$&$$$C$?$3$H$G$9!#(B @@ -14512,7 +16198,7 @@ Gnus $B$O$5$^$6$^$J@)8f;R(B @dfn{handlers} $B$rDj5A$9$k$3$H$K$h$C$F$=(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 -@var{$B6uE>(B} $B$,?t$G(B @var{$B;~4V(B} $B$b?t$G$"$k>l9g!"$3$N4X?t$O!"(B Emacs +@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 @@ -14528,11 +16214,6 @@ Emacs $B$N6uE>>uBV$,(B @var{$B6uE>(B} $BJ,B3$/EY$K0lEY8F$S=P$5$l$^$9!#(B @code{gnus-demon-timestep} $BIC$N$3$H$G$9!#$3$l$O=i4|@_Dj$G$O(B 60$B$G(B $B$9!#$b$7$3$NJQ?t$rJQ99$9$k$H!"A4$F$N@)8f;R$N7W;~$K1F6A$rM?$($^$9!#(B) -@vindex gnus-use-demon -$B$b$C$H$b!"$3$l$iA4It$r1?E>$9$k$h$&$K@_Dj$9$k$K$O!"(B -@code{gnus-use-demon} $B$r(B @code{t} $B$K@_Dj$7$J$-$c$$$1$J$$$s$@$1$I(B -$B$M!#(B - $B$H$$$&$o$1$G!"@)8f;R$rDI2C$7$?$1$l$P!"(B @file{.gnus} $B%U%!%$%k$K!"(B $B0J2<$N$h$&$J$b$N$r=q$/$3$H$,$G$-$^$9!#(B @@ -14547,10 +16228,10 @@ Emacs $B$N6uE>>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-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-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 @@ -14643,12 +16324,12 @@ Richard E. Depew --- $B%"%a%j%+$NC1FHH?%9%Q%`2H!#$l/$O(B -$B87L)$J!"DxEY$M!#$?$$$F$$$O>/$@$1$I(B)$B!#NI$/;H$o$l$k/$@$1$I(B)$B!#NI$/;H$o$l$kr7o(B ...)} $BMWAG$r;H$&I,MW$,$"$j(B -$B$^$9!#3F>r7o$OJ8;zNs(B ($B;H$$$?$$l9g$O(B @var{$BJ8;zNs(B} $B$O;H(B -$B$$$?$/$J$$r7o(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$$l9g$K$O!"(B @@ -14707,7 +16388,7 @@ Mailcrypt $B4X?t$G$9!#$b$7$3$l$,Hs>o$KCY$/$F!"$"$J$?$,>ZL@7k2L$r5$(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$?$,$?$/$5$s$N@8$-$?%0%k!<%W(B ($B$D$^$j9XFI$"$k$$$OHs9XFI%0%k!<%W(B) $B$r;}$C$F$$$k$N$J$i!"(BEmacs $B%W%m%;%9$OBg$-$/$J$C$F$7$^$&$G$7$g$&!#(B $B$b$7$3$l$,LdBj$G$"$l$P!"Hs9XFI$N%0%k!<%W$rA4It(B ($B$"$k$$$O$=$NB?$/(B $B$r(B) $B>C$75n$C$F$7$^$C$?J}$,NI$$$G$9(B (@pxref{Subscription @@ -14755,7 +16436,7 @@ Gnus $B$O!"MxMQl=j!#$3$l$O=i4|@_Dj$G$O(B @code{picons} $B$G(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 -@vindex gnus-article-display-hook @vindex gnus-picons-display-where @table @code @item gnus-article-display-picons @findex gnus-article-display-picons $BCxA0!#=i4|(B $B@_DjCM$O(B @code{(format "/tmp/picon-xface.%s.xbm" -(user-login-name))}$B!#(B +(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$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$H$7$F;n$7$F$_$k3HD%;R$N=g=x%j%9%H!#=i4|@_DjCM$O(B +picon $B%U%!%$%kL>$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 +@item gnus-picons-setup-hook +@vindex gnus-picons-setup-hook +picon $B$,$b$7I=<($5$l$F$$$l$P!"(Bpicon $B%P%C%U%!$GC$75n$k$+$I$&$+!#(BGnus @@ -15110,7 +16786,7 @@ Gnus $B$r=*N;$9$k$H$-$K(B picon $B%-%c%C%7%e$r>C$75n$k$+$I$&$+!#(BGnus @file{.gnus.el} $B$U$!$$$k$K=q$$$F$/$@$5$$!#(B @lisp -(add-hook 'gnus-article-display-hook 'gnus-smiley-display t) +(setq gnus-treat-display-smiley t) @end lisp $B%9%^%$%j!<$O!"J8;z$N4i%^!<%/(B --- @samp{:-)}$B!"(B@samp{:-=}$B!"(B @@ -15215,7 +16891,7 @@ Gnus $B$r=*N;$9$k$H$-$K(B picon $B%-%c%C%7%e$r>C$75n$k$+$I$&$+!#(BGnus @item gnus-xmas-logo-color-style @vindex gnus-xmas-logo-color-style $B$3$l$OA05-$NO"A[%j%9%H$G?'$r8!:w$9$k$N$K;H$o$l$k%-!<$G$9!#M-8z$J(B -$BCM$K$O(B @code{flame}$B!"(B @code{pine}$B!"(B @code{moss}$B!"(B@code{irish}$B!"(B +$BCM$K$O(B @code{flame}$B!"(B @code{pine}$B!"(B @code{moss}$B!"(B@code{irish}$B!"(B @code{sky}$B!"(B @code{tin}$B!"(B @code{velvet}$B!"(B @code{grape}$B!"(B @code{labia}$B!"(B @code{berry}$B!"(B @code{neutral}$B!"(B@code{september} $B$,$"$j$^$9!#(B @@ -15251,7 +16927,7 @@ Gnus $B$O!"%9%3%"IU$1!"%9%l%C%I$N7A@.!"%9%l%C%IHf3S$J$I$r9T$&$H$-(B $B4pK\E*$K$O!"$3$l$OHf3S$NA0$K9T$+$il9gBEEv$J7k2L$r=P$7$^$9(B --- +$B7k2L$rHf3S$7$^$9!#$3$l$O$[$H$s$I$N>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 @@ -15518,10 +17194,11 @@ but at the common table.@* @menu * History:: $B$I$&$d$C$F(B gnus $B$,:#F|$N$h$&$K$J$C$?$+!#(B +* On Writing Manuals:: Why this is not a beginner's guide. * Terminology:: $B2f!9$OK\Ev$KFq$7$$!"8l$N$h$&$J8l$r;H$&!#(B * Customization:: $B$"$J$?$NMW5a$K1h$C$F(B gnus $B$r;EN)$F$k!#(B * Troubleshooting:: $B>eA0$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 +$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:G=i$N(B ``$BE,@Z$J(B'' Gnus 5 $B$N%j%j!<%9$O(B1995$BG/(B11$B7n$K(B Emacs 19.30 $B$NG[I[$K4^(B -$B$^$l$?$H$-$K$J$5$l$^$7$?(B (132 $B$N(B (ding) Gnus $B$N%j%j!<%9(B $BB-$9$3$H$N(B +$B$^$l$?$H$-$K$J$5$l$^$7$?(B (132 $B$N(B (ding) Gnus $B$N%j%j!<%9(B $BB-$9$3$H$N(B Gnus5.0 $B$N(B15$B%j%j!<%9(B)$B!#(B -1996$BG/(B3$B7n$K(B ``September Gnus'' (99$B%j%j!<%9$N8e$G(B)) +1996$BG/(B3$B7n$K(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/$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 -1997$BG/(B9$B7n(B13$BF|$K!"(BQuassia Gnus $B$,3+;O$5$l!"(B37$B%j%j!<%9B3$-$^$7$?!#$=$l$O(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 $B$b$7@\F,<-$r;}$C$?HG$N(B Gnus -- ``(ding) Gnus'', ``September Gnus'', @@ -15577,6 +17254,7 @@ Gnus5.0 $B$N(B15$B%j%j!<%9(B)$B!#(B * Conformity:: Gnus $B$OA4$F$NI8=`$rK~$?$=$&$H$9$k!#(B * Emacsen:: Gnus $B$O$$$/$D$+$N8=BeE*$J(B Emacs $B4D6-$G$N%3!<%I(B) -$B$r>C5n$9$k$Y$-$G$7$g$&!#(B@sc{gnus} $B$KC5n$9$k$Y$-$G$7$g$&!#(B@sc{gnus} $B$KCHqpJs$G$"(B $B$k$H8+$J$7$F$$$^$9!#(B@code{tin} $B$H(B @code{Netscape} $B$+$iAw$i$l$F$/$kHs>o$K(B $BB?$/$NMM<0$K1h$C$F$$$J$$5-;v$r8+$?8e$G!";d$O$=$l$i$r5-;v$rEj9F$9$k$?$a$K(B @@ -15716,6 +17391,13 @@ Gnus $B$O(B MIME $B$N07$$$r$;$:!"$3$NI8=`$K$J$k$b$N$O(B $B$9$4$/NI$$$H9M$($ $B$,L5$1$l$P;d$O$=$N>pJs$rF@$k;v$O$J$+$C$?$G$7$g$&!#(B @end table +@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 @@ -15744,14 +17426,52 @@ Emacs 19.32 $B$H$=$l0J9_$K4p$E$$$?(B Mule$B!#(B @end itemize -Gnus $B$O$3$l$h$j8E$$$I$s$J(B Emacsen $B$G$b40A4$KF0:n$7$J$$$G$7$g$&!#>/$J$/$H(B -$B$b!"?.Mj$G$-$kF0:n$O$7$J$$$G$7$g$&!#(B +$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$&!#(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 + +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,<-$,l$G=q$/$N$O!"3'$r62$l(B +$B$5$;$k$H$$$&$N$b;v$NB?$/(B $B$N;v$H6&$K(B)$B!#(B @@ -15784,14 +17510,14 @@ Luis Fernandes---$B%G%6%$%s$H%0%i%U%#%C%/!#(B Erik Naggum---$B1g=u!"9M$(!"%5%]!<%H!"%3!<%I$H$=$NB>!#(B @item -Wes Hardaker---@file{gnus-picon.el} $B$H(B @dfn{picon} $B$NItJ,$N%^%K%e%"%k(B +Wes Hardaker---@file{gnus-picon.el} $B$H(B @dfn{picon} $B$NItJ,$N%^%K%e%"%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 +Brad Miller---@file{gnus-gl.el} $B$H(B Grouplens $B$NItJ,$N%^%K%e%"%k(B (@pxref{GroupLens})$B!#(B @item @@ -15834,7 +17560,7 @@ Kevin Davidson---@dfn{ding} $B$NL>A0$r;W$$IU$-$^$7$?!#$G$9$+$i!"H`$r@U$a$F(B $B2<$5$$!#(B @item -Fran,Ag(Bois Pinard---$BB?$/$N!"B?$/$N6=L#?<$/40A4$J%P%0%l%]!<%H$H(B autoconf $B$N(B +François Pinard---$BB?$/$N!"B?$/$N6=L#?<$/40A4$J%P%0%l%]!<%H$H(B autoconf $B$N(B $B%5%]!<%H!#(B @end itemize @@ -15847,7 +17573,7 @@ Borges $B$K$h$C$F9;@5$5$l!"(BJost Krieger $B$K$h$C$F0lItJ,$r9;@5$5$l$^$7$?!# Christopher Davis, Andrew Eskilsson, Kai Grossjohann, -David K,Ae(Bgedal, +David Kågedal, Richard Pieri, Fabrice Popineau, Daniel Quinlan, @@ -15865,14 +17591,14 @@ Peter Arius, Matt Armstrong, Marc Auslander, Miles Bader, -Alexei V. Barantsev, Frank Bennett, +Alexei V. Barantsev, Robert Bihlmeyer, Chris Bone, Mark Borges, Mark Boyns, -Lance A. Brown, Rob Browning, +Lance A. Brown, Kees de Bruin, Martin Buchholz, Joe Buehler, @@ -15933,7 +17659,7 @@ Gunnar Horrigmo, Richard Hoskins, Brad Howes, Miguel de Icaza, -Fran,Ag(Bois Felix Ingrand, +François Felix Ingrand, Tatsuya Ichikawa, @c ? Ishikawa Ichiro, @c Ishikawa Lee Iverson, @@ -16032,8 +17758,8 @@ Kiyokazu Suto, @c Suto Kurt Swanson, Samuel Tardieu, Teddy, -Chuck Thompson, Tozawa Akihiko, @c Tozawa +Chuck Thompson, Philippe Troin, James Troup, Trung Tran-Duc, @@ -16075,7 +17801,7 @@ Lloyd Zusman. * Quassia Gnus:: 2$B$+$1$k(B2$B$O(B4$B!"$b$7$/$O(B Gnus 5.6/5.7$B!#(B @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 +$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$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 @@ -16103,13 +17829,13 @@ 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 +Gnus $B$O(B GroupLens $B$NM=8@$r;H$&;v$,$G$-$k$h$&$K$J$j$^$7$?(B (@pxref{GroupLens})$B!#(B @item @@ -16258,7 +17984,7 @@ 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 +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 @lisp @@ -16286,18 +18012,18 @@ Commands})$B!#(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 +ClariNet $BC;<}=8!"$=$7$FA4$F$N$=$NB>$rM}2r$G$-$k$h$&$K$J$j$^$7$?(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 +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 @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 +$B%0%k!<%W$rB?$/$N4p=`$K=>$C$FJB$SBX$($G$-$k$h$&$K$J$j$^$7$?(B (@pxref{Sorting Groups})$B!#(B @item @@ -16305,7 +18031,7 @@ Gnus $B%-%c%C%7%e$,$:$C$HB.$/$J$j$^$7$?!#(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 +$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 @item @@ -16318,7 +18044,7 @@ Gnus $B%-%c%C%7%e$,$:$C$HB.$/$J$j$^$7$?!#(B $B$F$$$^$9(B (@pxref{Limiting})$B!#(B @item -@kbd{*} $BL?Na$K$h$C$F!"5-;v$r1JB3$K$9$k;v$,$G$-$k$h$&$K$J$j$^$7$?(B +@kbd{*} $BL?Na$K$h$C$F!"5-;v$r1JB3$K$9$k;v$,$G$-$k$h$&$K$J$j$^$7$?(B (@pxref{Persistent Articles})$B!#(B @item @@ -16328,11 +18054,6 @@ Gnus $B%-%c%C%7%e$,$:$C$HB.$/$J$j$^$7$?!#(B $B5-;v$N%X%C%@!<$,%\%?%s$K$9$k;v$,$G$-$k$h$&$K$J$j$^$7$?(B (@pxref{Article Washing})$B!#(B -@lisp -(add-hook 'gnus-article-display-hook - 'gnus-article-add-buttons-to-head) -@end lisp - @item $BA4$F$N%a!<%k%P%C%/%(%s%I$G(B @code{Message-ID} $B$K$h$k5-;v$N@\;HMQ$G$-$k$h$&$K$J$j$^$7$?(B +$BA4$F$N35N,%b!<%IL?Na$,5-;v%P%C%U%!$+$iD>@\;HMQ$G$-$k$h$&$K$J$j$^$7$?(B (@pxref{Article Keymap})$B!#(B @item -$B%U%l!<%`$,(B @code{gnus-buffer-configuration} $B$NItJ,$K$J$k;v$,$G$-$^$9(B +$B%U%l!<%`$,(B @code{gnus-buffer-configuration} $B$NItJ,$K$J$k;v$,$G$-$^$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 +$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 @iftex @iflatex @@ -16405,7 +18126,7 @@ 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 +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 @lisp @@ -16435,11 +18156,6 @@ Gnus $B$OJ]B8$9$k$H$-$KF1$8$/$i$$$NB%?J$r$7$J$/$F$bNI$$$h$&$K$J$j$^$7$?(B @item $BB`6~$J%X%C%@!<$r1#$9;v$,$G$-$^$9(B (@pxref{Article Hiding})$B!#(B -@lisp -(add-hook 'gnus-article-display-hook - 'gnus-article-hide-boring-headers t) -@end lisp - @item $B%9%3%"$N=i4|CM$,%a%K%e!<%P!<$+$i@_Dj$G$-$k$h$&$K$J$j$^$7$?!#(B @@ -16477,7 +18193,7 @@ Article})$B!#(B @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 +Message-ID $B$K4p$E$$$?!"=EJ#5-;v$NM^@)$,$J$5$l$k$h$&$K$J$j$^$7$?(B (@pxref{Duplicate Suppression})$B!#(B @lisp @@ -16485,7 +18201,7 @@ Message-ID $B$K4p$E$$$?!"=EJ#5-;v$NM^@)$,$J$5$l$k$h$&$K$J$j$^$7$?(B @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 +$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 @item @@ -16493,7 +18209,7 @@ Message-ID $B$K4p$E$$$?!"=EJ#5-;v$NM^@)$,$J$5$l$k$h$&$K$J$j$^$7$?(B 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 +$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 @item @@ -16505,7 +18221,7 @@ Signature})$B!#(B @item $B35N,%T%C%/%b!<%I$,$b$C$H(B @code{nn} $B$N$h$&$K$J$j$^$7$?!#9T?t$,I=<($5$l$F!"(B -$BL?Na(B @kbd{.} $B$,5-;v$rl9g$G$b!"Ej9F$G$-$k$h$&$K$J$j$^$7$?(B (@pxref{Mail-To-News -Gateways})$B!#(B +$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 @item -$B%&%'%V8!:w%(%s%8%s(B (@dfn{DejaNews}$B!"(B@dfn{Alta Vista}$B!"(B@dfn{InReference}) +$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 @@ -16572,11 +18288,11 @@ Searches})$B!#(B Sorting})$B!#(B @item -$B%0%k!<%W$N0lItJ,$,FHN)$7$FJB$SBX$($G$-$k$h$&$K$J$j$^$7$?(B +$B%0%k!<%W$N0lItJ,$,FHN)$7$FJB$SBX$($G$-$k$h$&$K$J$j$^$7$?(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 +$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 @iftex @iflatex @@ -16585,11 +18301,11 @@ 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 +$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 @item -$B%a!<%k%a%C%;!<%8$,$I$3$K9T$/$+$NJs9p$r:n@.$9$k;v$,$G$-$k$h$&$K$J$j$^$7$?(B +$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 @item @@ -16599,11 +18315,6 @@ Sorting})$B!#(B @item $B6/D4J8$,E,@Z$K%U%)%s%H$,JQ99$5$l$k$h$&$K$J$j$^$7$?(B: -@lisp -(add-hook 'gnus-article-display-hook - 'gnus-article-emphasize) -@end lisp - @end itemize @@ -16616,7 +18327,7 @@ Gnus 5.6 $B$N?7$7$$5!G=(B: @item Gnus $B$r%*%U%i%$%s%K%e!<%9%j!<%@!<$H$7$F;H$&?75!G=$,2C$($i$l$^$7$?!#2a>j(B -$B$J$[$I$N?7$7$$L?Na$H%b!<%I$,DI2C$5$l$^$7$?!#40A4$JOC$KIU$$$F$O(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 @item @@ -16682,7 +18393,7 @@ 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 +$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 @item @@ -16690,11 +18401,11 @@ 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{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} +@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 @@ -16759,12 +18470,6 @@ M******** sm*rtq**t*s $B$rE,@Z$JJ8>O$KK]0F$9$k?7$7$$L?Na$,$"$j$^$9(B--- @itemize @bullet @item -Native @sc{mime} support is something that should be done. - -@item -Really do unbinhexing. - -@item I would like the zombie-page to contain an URL to the source of the latest version of gnus or some explanation on where to find it. @@ -16874,8 +18579,6 @@ Perhaps. @item warn user about `=' redirection of a group in the active file? @item - really unbinhex binhex files. -@item take over the XEmacs menubar and offer a toggle between the XEmacs bar and the Gnus bar. @item @@ -17332,7 +19035,7 @@ mail-copies-to: never. new group parameter -- `post-to-server' that says to post using the current server. Also a variable to do the same. @item - the slave dribble files should autosave to the slave file names. + the slave dribble files should auto-save to the slave file names. @item a group parameter that says what articles to display on group entry, based on article marks. @@ -17378,8 +19081,8 @@ From: Jason L Tibbitts III @end example @item - tanken var at n,Ae(Br du bruker `gnus-startup-file' som prefix (FOO) til ,Ae(B lete -opp en fil FOO-SERVER, FOO-SERVER.el, FOO-SERVER.eld, kan du la den v,Af(Bre en + tanken var at når du bruker `gnus-startup-file' som prefix (FOO) til å lete +opp en fil FOO-SERVER, FOO-SERVER.el, FOO-SERVER.eld, kan du la den være en liste hvor du bruker hvert element i listen som FOO, istedet. da kunne man hatt forskjellige serveres startup-filer forskjellige steder. @@ -17452,8 +19155,8 @@ there was a sci.somethingelse group or section, then it should prompt for sci? first the sci.something? then sci.somethingelse?... @item -Ja, det burde v,Af(Bre en m,Ae(Bte ,Ae(B si slikt. Kanskje en ny variabel? -`gnus-use-few-score-files'? S,Ae(B kunne score-regler legges til den +Ja, det burde være en måte å si slikt. Kanskje en ny variabel? +`gnus-use-few-score-files'? Så kunne score-regler legges til den "mest" lokale score-fila. F. eks. ville no-gruppene betjenes av "no.all.SCORE", osv. @@ -17783,7 +19486,7 @@ the current process mark set onto the stack. @item gnus-article-hide-pgp -Selv ville jeg nok ha valgt ,Ae(B slette den dersom teksten matcher +Selv ville jeg nok ha valgt å slette den dersom teksten matcher @example "\\(This\s+\\)?[^ ]+ has been automatically signed by" @end example @@ -17806,7 +19509,7 @@ home-brewed stuff for better reliability. add a way to select which NoCeM type to apply -- spam, troll, etc. @item - nndraft-request-group should tally autosave files. + nndraft-request-group should tally auto-save files. @item implement nntp-retry-on-break and nntp-command-timeout. @@ -17880,7 +19583,7 @@ New limit command---limit to articles that have a certain string in the head or body. @item -Allow breaking lengthy NNTP commands. +Allow breaking lengthy @sc{nntp} commands. @item gnus-article-highlight-limit, to disable highlighting in big articles. @@ -17929,7 +19632,7 @@ Implement gnus-batch-brew-soup. @item Group parameters and summary commands for un/subscribing to mailing -lists. +lists. @item Introduce nnmail-home-directory. @@ -17939,6 +19642,84 @@ gnus-fetch-group and friends should exit Gnus when the user exits the group. @item +The jingle is only played on the second invocation of Gnus. + +@item +Bouncing articles should do MIME. + +@item +Crossposted articles should "inherit" the % or @ mark from the other +groups it has been crossposted to, or something. (Agent.) + +@item +If point is on a group that appears multiple times in topics, and +you press `l', point will move to the first instance of the group. + +@item +A spec for the group line format to display the number of +agent-downloaded articles in the group. + +@item +Some nntp servers never respond when posting, so there should be a +timeout for all commands. + +@item +When stading on a topic line and `t'-ing, point goes to the last line. +It should go somewhere else. + +@item +I'm having trouble accessing a newsgroup with a "+" in its name with +Gnus. There is a new newsgroup on msnews.microsoft.com named +"microsoft.public.multimedia.directx.html+time" that I'm trying to +access as +"nntp+msnews.microsoft.com:microsoft.public.multimedia.directx.html+time" +but it gives an error that it cant access the group. + +Is the "+" character illegal in newsgroup names? Is there any way in +Gnus to work around this? (gnus 5.6.45 - XEmacs 20.4) + +@item + +When `#F', do: + +@example +Subject: Answer to your mails 01.01.1999-01.05.1999 + --text follows this line-- +Sorry I killfiled you... + +Under the subject "foo", you wrote on 01.01.1999: +> bar +Under the subject "foo1", you wrote on 01.01.1999: +> bar 1 +@end example + +@item +Allow "orphan" scores in the Agent scoring. + +@item +@example + - Edit article's summary line. + - End edit + - Sort lines in buffer by subject + + --> the old subject line appears in Summary buffer, not the one that was + just changed to. +@end example + + +@item +Remove list identifiers from the subject in the summary when doing `^' +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. + +@item +Be able to forward groups of messages as MIME digests. + +@item Solve the halting problem. @c TODO @@ -17955,7 +19736,7 @@ Solve the halting problem. $B$3$N%^%K%e%"%k$O(B TeXinfo $B%U%!%$%k$+$i:n@.$5$l!"$=$l$+$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} +@code{latex} $B$H(B @code{dvips} @end iflatex $B$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 @@ -18124,7 +19925,7 @@ 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 +$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 @item $B%5!<%P!<(B (server) @@ -18148,7 +19949,7 @@ 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$?$$$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 @@ -18218,7 +20019,7 @@ Gnus $B$,%0%k!<%W$KF~$k$H!"%0%k!<%W$NA4$F$NL$FI5-;v$N%X%C%@!<$r%P%C%/%(%s(B $B$3$l$r(B @code{nil} $B$K$7$F2<$5$$!#$=$&$9$l$P!"(Bgnus $B$K%5!<%P!<$+$i%"%/%F%#(B $B%V%U%!%$%kA4BN$rMW5a$9$k;v$r6X;_$G$-$^$9!#$3$N%U%!%$%k$O$7$P$7$PHs>o$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 +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 +@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 @@ -18252,13 +20053,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$K$"$j$^$9!#$3$NJQ?t$r(B @samp{^NEVVVVER} $B$d(B @samp{From:} $B$d!"2?$G$b9%$-$J(B $B$b$N$K@_Dj$7$F2<$5$$!#(B -@item gnus-article-display-hook $B$3$N%U%C%/$KA4$F$N;HMQ2DG=$J1#F?L?Na$r@_Dj$7$^$9(B: @lisp -(setq gnus-article-display-hook - '(gnus-article-hide-headers - gnus-article-hide-signature - gnus-article-hide-citation)) +(setq gnus-treat-hide-headers 'head + gnus-treat-hide-signature t + gnus-treat-hide-citation t) @end lisp @item gnus-use-full-window @@ -18290,10 +20089,15 @@ 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$=$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 +@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 + @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 +$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 @end table @@ -18306,16 +20110,13 @@ 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 +$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 +$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-;v$K4X$9$k/$7B.$/$9$k$?$a$K!"(B@code{gnus-article-display-hook} -$B$r(B @code{nil} $B$K@_Dj$7$F2<$5$$!#(B - @page @node Troubleshooting @@ -18333,13 +20134,13 @@ 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} +$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 @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}) +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 @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) +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 @code{max-lisp-eval-depth} $B$r(B 500 $B$+$=$l$/$i$$$NCM$K@_Dj$7$F2<$5$$!#(B @@ -18366,7 +20167,7 @@ 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} +$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 @@ -18398,8 +20199,8 @@ Gnus $B$OB?$/$NB?$/$N:F5"9=B$$GF0:n$7!"2?$i$+$N6KC<$J(B ($B$=$7$FHs>o$K$^$l$J @page -@node A Programmers Guide to Gnus -@section Gnus $B$N%W%m%0%i%^!<%:%,%$%I(B +@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 @@ -18537,7 +20338,7 @@ Gnus $B=*N;;~$K>C5n$9$k%P%C%U%!$N0lMw$K8=:_$N%P%C%U%!$rDI2C$7$^$9!#(B @lisp (gnus-check-backend-function "request-scan" "nnml:misc") -=> t +@result{} t @end lisp @item gnus-read-method @@ -18552,10 +20353,10 @@ Gnus $B=*N;;~$K>C5n$9$k%P%C%U%!$N0lMw$K8=:_$N%P%C%U%!$rDI2C$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(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 +$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 @@ -18636,7 +20437,7 @@ functions} $B$G$9!#(B @var{fetch-old} $B$,(B @code{nil} $B0J30$G$"$l$P!"$"$k0UL#$G$N!VM>J,$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) +$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 @@ -18673,7 +20474,7 @@ valid-message = "221 " " Article retrieved." eol header = eol @end example -$B$b$7JV5QCM$,(B @code{nov} $B$G$"$l$P!"%G!<%?%P%C%U%!!<$K$O(B +$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$3$l$O4pK\E*$K$OJ#?t$NMs$r%?%V$G6h@Z$C$?$b$N$G$9!#(B @@ -18755,7 +20556,7 @@ field = $B%0%k!<%WL>$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$Nl9g$K$O!"5-;v$NpJs(B (@pxref{Group Info}) $B$,JQ992U=j$H$7$F%P%C%/%((B $B$3$N4X?t$+$iJV$5$l$k7k2L$N%G!<%?$O$"$j$^$;$s!#(B +@item (nnchoke-request-set-mark GROUP ACTION &optional SERVER) + +$B5-;v$N0u$r@_Dj(B/$B>C5n(B/$BDI2C$7$^$9!#IaDL$O(B gnus $B$O5-;v$N0u(B ($B4{FI!"2D;k!";~8B(B +$B>C5n$J$I(B) $B$rFbIt$G07$$!"(B@code{~/.newsrc.eld} $B$KJ]B8$7$^$9!#$7$+$7!"%P%C(B +$B%/%(%s%I$K$O(B (@sc{imap} $B$N$h$&$K(B) $B5-;v$NA4$F$N>pJs$r%5!<%P!<$K<}$a$k$N(B +$B$G!"(Bgnus $B$O0u$N>pJs$r%5!<%P!<$KEAC#$7$J$1$l$P$J$i$J$$$b$N$,$"$j$^$9!#(B + +ACTION $B$O$3$N$h$&$JMM<0$N0u@_Dj$NMW5a$N%j%9%H$G$9(B: + +@example +(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 + +$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 + +$BF0:n%j%9%H$NNc$G$9(B: + +@example +(((5 12 30) 'del '(tick)) + ((10 . 90) 'add '(read expire)) + ((92 94) 'del '(read))) +@end example + +$B4X?t$O0u$r@_Dj$G$-$J$+$C$?5-;v$NHO0O$rJV$9$Y$-$G$9(B ($B8=:_$OA4$/;H$o$l$F$$(B +$B$^$;$s(B)$B!#(B + +$B$3$N4X?t$+$i$O7k2L$N%G!<%?$O$"$j$^$;$s!#(B @item (nnchoke-request-update-mark GROUP ARTICLE MARK) $B$b$7MxMQ$N%4%_$r(B $BJV$7$F$O$$$1$^$;$s!#(B @@ -19067,7 +20907,7 @@ description-buffer = *description-line @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 -$B?7$7$$%P%C%/%(%s%I$r=q$/$H$-$KB>$N%P%C%/%(%s%I$+$i4X?t$r(B ``$B7Q>5(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) @@ -19398,7 +21238,7 @@ space = *[ " " / / ] $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 +@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$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 @@ -19418,13 +21258,13 @@ gnus $B$OFbIt$G$O(B ``$B%X%C%@!<(B'' $B$H8F$VMM<0$r;H$C$F$*$j!";d$O$3$3$G$= $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$G$9!#$3(B -$B$l$i$N6u$->l=j$K?($C$F@_Dj$9$k%^%/%m$,$"$j$^$9(B---$B$=$l$i$OA4$F!"$=$l$>$l(B -@code{mail-header-} $B$H(B @code{mail-header-set-} $B$$$&M=A[$5$l$kL>A0$r;}$C(B -$B$F$$$^$9!#(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 -$B>l=j(B @code{xref} $B$OK\Ev$O(B @code{misc} $B$N>l=j$G$9!#$$$m$s$JDI2C$N>pJs$O$=(B -$B$3$KF~$l$i$l$^$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 @@ -19433,9 +21273,9 @@ gnus $B$OFbIt$G$O(B ``$B%X%C%@!<(B'' $B$H8F$VMM<0$r;H$C$F$*$j!";d$O$3$3$G$= @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 +$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) $B$3$l$N2r7h:v$OpJs$r(B @dfn{group info} $B%j%9%H$KJ]B8$7$^$9!# $B%0%k!<%W$G!"(B2$B$D$a$O$b$C$HJ#;($J$b$N$G$9(B: @example -("no.group" 5 (1 . 54324)) +("no.group" 5 ((1 . 54324))) ("nnml:my.mail" 3 ((1 . 5) 9 (20 . 55)) ((tick (15 . 19)) (replied 3 6 (19 . 3))) @@ -19554,7 +21394,7 @@ method = "(" *elisp-forms ")" parameters = "(" *elisp-forms ")" @end example -$B} $B$,(B +$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 @@ -19651,7 +21491,7 @@ 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 +$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 @item A @@ -19679,13 +21519,13 @@ XEmacs $B$O%P%$%H%3%s%Q%$%k$r$7$F$$$k4V$K%.%,%P%$%H$/$i$$$N7Y9p$r=P$9$H8@(B $B$&;v$G$9!#;d$O:3:Y$J<:GT$r8+$D$1=P$9$3$H$r=u$1$k$?$a$K%P%$%H%3%s%Q%$%k$N(B $B7Y9p$r;H$C$F$$$^$9$N$G!"$=$l$OHs>o$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;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 +$B$J$C$F$$$^$9!#$7$+$7!"(BXEmacs $B$G4X?t(B (alias) $B$H$J$C$F$$$^$9(B: @lisp @@ -19703,11 +21543,11 @@ 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 +$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$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$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 @@ -19748,7 +21588,7 @@ 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 +$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 @@ -19777,7 +21617,7 @@ description = $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 +$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 @@ -19802,9 +21642,9 @@ A: $BCo$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 +$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 $B/$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 +$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$b$7JQ?t(B@code{gnus-florgbnize} $B$r;M(B (4) $B$K@_Dj$7$?$$$N$G$"$l$P!"0J2<$N$b(B @@ -19860,7 +21700,7 @@ 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 ``$B2A(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 @@ -19875,12 +21715,12 @@ 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$J$5$$(B'' $B$H8@$C$?$J$i!"$=$l$O(B: @lisp -(setq gnus-read-active-file 'some) +(setq gnus-read-active-file 'some) @end lisp $B$H8@$&;v$G$9!#(B -$B0lJ}!"%^%K%e%"%k$,(B ``@code{gnus-nntp-server} $B$r(B @samp{nntp.ifi.uio.no} +$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: @lisp diff --git a/texi/gnus.texi b/texi/gnus.texi index aaa1ad6..13a5dc6 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -1,7 +1,7 @@ -@c \input texinfo @c -*-texinfo-*- +\input texinfo @c -*-texinfo-*- -*- coding: iso-latin-1 -*- @setfilename gnus -@settitle Semi-gnus 6.10.072 Manual +@settitle T-gnus 6.13 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -319,7 +319,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Semi-gnus 6.10.072 Manual +@title T-gnus 6.13 Manual @author by Lars Magne Ingebrigtsen @page @@ -355,14 +355,14 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local spool or your mbox file. All at the same time, if you want to push your luck. -Semi-gnus provides MIME features based on SEMI API. So Semi-gnus -supports your right to read strange messages including big images or -other various kinds of formats. Semi-gnus also supports +T-gnus provides MIME features based on SEMI API. So T-gnus supports +your right to read strange messages including big images or other +various kinds of formats. T-gnus also supports internationalization/localization and multiscript features based on MULE -API. So Semi-gnus does not discriminate various language communities. +API. So T-gnus does not discriminate various language communities. Oh, if you are a Klingon, please wait Unicode Next Generation. -This manual corresponds to Semi-gnus 6.10.072. +This manual corresponds to T-gnus 6.13. @end ifinfo @@ -729,6 +729,22 @@ to will be subscribed hierarchically. @vindex gnus-subscribe-killed Kill all new groups. +@item gnus-subscribe-topics +@vindex gnus-subscribe-topics +Put the groups into the topic that has a matching @code{subscribe} topic +parameter (@pxref{Topic Parameters}). For instance, a @code{subscribe} +topic parameter that looks like + +@example +"nnslashdot" +@end example + +will mean that all groups that match that regex will be subscribed under +that topic. + +If no topics match the groups, the groups will be subscribed in the +top-level topic. + @end table @vindex gnus-subscribe-hierarchical-interactive @@ -1002,7 +1018,7 @@ is certainly faster than @code{t} over slow lines. Some news servers (Leafnode and old versions of INN, for instance) do not support the @code{LIST ACTIVE group}. For these servers, @code{nil} -is probably the most effficient value for this variable. +is probably the most efficient value for this variable. If this variable is @code{nil}, gnus will ask for group info in total lock-step, which isn't very fast. If it is @code{some} and you use an @@ -1012,7 +1028,7 @@ performance, but if the server does not support the aforementioned @code{LIST ACTIVE group} command, this isn't very nice to the server. If you think that starting up Gnus takes too long, try all the three -different values for this variable and see what works best for you. +different values for this variable and see what works best for you. In any case, if you use @code{some} or @code{nil}, you should definitely kill all groups that you aren't interested in to speed things up. @@ -1243,7 +1259,7 @@ Indentation based on the level of the topic (@pxref{Group Topics}). Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels} variable says how many levels to leave at the end of the group name. The default is 1---this will mean that group names like -@samp{gnu.emacs.gnus} will be shortened to @samp{g.emacs.gnus}. +@samp{gnu.emacs.gnus} will be shortened to @samp{g.e.gnus}. @item m @vindex gnus-new-mail-mark @@ -1296,7 +1312,7 @@ The native select method. @vindex gnus-group-highlight Highlighting in the group buffer is controlled by the @code{gnus-group-highlight} variable. This is an alist with elements -that look like @var{(form . face)}. If @var{form} evaluates to +that look like @code{(@var{form} . @var{face})}. If @var{form} evaluates to something non-@code{nil}, the @var{face} will be used on the line. Here's an example value for this variable that might look nice if the @@ -1454,7 +1470,7 @@ this command, gnus will offer to fetch all the old articles in this group from the server. If you give a numerical prefix @var{N}, @var{N} 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 @var{abs(N)} oldest articles. +negative, Gnus fetches the @code{abs(@var{N})} oldest articles. @item RET @kindex RET (Group) @@ -2171,7 +2187,7 @@ Elements that look like @code{(charset . iso-8859-1)} will make @code{iso-8859-1} the default charset; that is, the charset that will be used for all articles that do not specify a charset. -@item @var{(variable form)} +@item (@var{variable} @var{form}) You can use the group parameters to set variables local to the group you are entering. If you want to turn threading off in @samp{news.answers}, you could put @code{(gnus-show-threads nil)} in the group parameters of @@ -2403,7 +2419,7 @@ Sort the group buffer alphabetically by backend name @end table -All the commands below obeys the process/prefix convention +All the commands below obey the process/prefix convention (@pxref{Process/Prefix}). When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these @@ -2731,7 +2747,7 @@ convention (@pxref{Process/Prefix}). @item T j @kindex T j (Topic) @findex gnus-topic-jump-to-topic -Go to a topic (@code{gnus-topic-jump-to-topic}). +Go to a topic (@code{gnus-topic-jump-to-topic}). @item T c @kindex T c (Topic) @@ -2959,6 +2975,18 @@ All groups in a topic will inherit group parameters from the parent (and ancestor) topic parameters. All valid group parameters are valid topic parameters (@pxref{Group Parameters}). +In addition, the following parameters are only valid as topic +parameters: + +@table @code +@item subscribe +When subscribing new groups by topic (@pxref{Subscription Methods}), the +@code{subscribe} topic parameter says what groups go in what topic. Its +value should be a regexp to match the groups that should go in that +topic. + +@end table + Group parameters (of course) override topic parameters, and topic parameters in sub-topics override topic parameters in super-topics. You know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a @@ -3264,7 +3292,6 @@ You can have as many summary buffers open as you wish. * Choosing Articles:: Reading articles. * Paging the Article:: Scrolling the current article. * Reply Followup and Post:: Posting articles. -* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.'' * Marking Articles:: Marking articles as read, expirable, etc. * Limiting:: You can limit the summary buffer. * Threading:: How threads are made. @@ -3353,7 +3380,7 @@ The following format specification characters are understood: @item N Article number. @item S -Subject string. +Subject string. List identifiers stripped, @code{gnus-list-identifies}. @xref{Article Hiding}. @item s Subject if the article is the root of the thread or the previous article had a different subject, @code{gnus-summary-same-subject} otherwise. @@ -3610,15 +3637,16 @@ highlight the current article in the summary buffer. @item gnus-summary-highlight @vindex gnus-summary-highlight Summary lines are highlighted according to this variable, which is a -list where the elements are of the format @var{(FORM . FACE)}. If you -would, for instance, like ticked articles to be italic and high-scored -articles to be bold, you could set this variable to something like +list where the elements are of the format @code{(@var{form} +. @var{face})}. If you would, for instance, like ticked articles to be +italic and high-scored articles to be bold, you could set this variable +to something like @lisp (((eq mark gnus-ticked-mark) . italic) ((> score default) . bold)) @end lisp -As you may have guessed, if @var{FORM} returns a non-@code{nil} value, -@var{FACE} will be applied to the line. +As you may have guessed, if @var{form} returns a non-@code{nil} value, +@var{face} will be applied to the line. @end table @@ -3931,8 +3959,10 @@ Select the article buffer (@code{gnus-summary-select-article-buffer}). @section Reply, Followup and Post @menu -* Summary Mail Commands:: Sending mail. -* Summary Post Commands:: Sending news. +* 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.'' @end menu @@ -4134,8 +4164,23 @@ Uuencode a file, split it into parts, and post it as a series Also @pxref{(message)Header Commands} for more information. +@node Summary Message Commands +@subsection Summary Message Commands + +@table @kbd +@item S y +@kindex S y (Summary) +@findex gnus-summary-yank-message +Yank the current article into an already existing Message composition +buffer (@code{gnus-summary-yank-message}). This command prompts for +what message buffer you want to yank into, and understands the +process/prefix convention (@pxref{Process/Prefix}). + +@end table + + @node Canceling and Superseding -@section Canceling Articles +@subsection Canceling Articles @cindex canceling articles @cindex superseding articles @@ -4299,7 +4344,7 @@ Canceled article (@code{gnus-canceled-mark}) @item F @vindex gnus-souped-mark -@sc{SOUP}ed article (@code{gnus-souped-mark}). @xref{SOUP}. +@sc{soup}ed article (@code{gnus-souped-mark}). @xref{SOUP}. @item Q @vindex gnus-sparse-mark @@ -4541,7 +4586,7 @@ The default is @code{t}. Some people would like the command that ticks an article (@kbd{!}) go to the next article. Others would like it to go to the next unread article. Yet others would like it to stay on the current article. And -even though I haven't heard of anybody wanting it to go the the +even though I haven't heard of anybody wanting it to go to the previous (unread) article, I'm sure there are people that want that as well. @@ -4556,7 +4601,7 @@ to list in this manual. While you can use these commands directly, most users would prefer altering the summary mode keymap. For instance, if you would like the -@kbd{!} command to go the the next article instead of the next unread +@kbd{!} command to go to the next article instead of the next unread article, you could say something like: @lisp @@ -5135,6 +5180,18 @@ in a new thread. This is a number that says how much each sub-thread should be indented. The default is 4. +@item gnus-sort-gathered-threads-function +@vindex gnus-sort-gathered-threads-function +Sometimes, particularly with mailing lists, the order in which mails +arrive locally is not necessarily the same as the order in which they +arrived on the mailing list. Consequently, when sorting sub-threads +using the default @code{gnus-thread-sort-by-number}, responses can end +up appearing before the article to which they are responding to. Setting +this variable to an alternate value +(e.g. @code{gnus-thread-sort-by-date}), in a group's parameters or in an +appropriate hook (e.g. @code{gnus-summary-generate-hook}) can produce a +more logical sub-thread ordering in such instances. + @end table @@ -6345,8 +6402,9 @@ text, the signature, and adds buttons to the body and the head. @vindex gnus-header-face-alist Highlight the headers (@code{gnus-article-highlight-headers}). The highlighting will be done according to the @code{gnus-header-face-alist} -variable, which is a list where each element has the form @var{(regexp -name content)}. @var{regexp} is a regular expression for matching the +variable, which is a list where each element has the form +@code{(@var{regexp} @var{name} @var{content})}. +@var{regexp} is a regular expression for matching the header, @var{name} is the face used for highlighting the header name (@pxref{Faces and Fonts}) and @var{content} is the face for highlighting the header value. The first match made will be used. Note that @@ -6434,8 +6492,8 @@ default. @findex gnus-article-emphasize @kindex W e (Summary) People commonly add emphasis to words in news articles by writing things -like @samp{_this_} or @samp{*this*}. Gnus can make this look nicer by -running the article through the @kbd{W e} +like @samp{_this_} or @samp{*this*} or @samp{/this/}. Gnus can make +this look nicer by running the article through the @kbd{W e} (@code{gnus-article-emphasize}) command. @vindex gnus-emphasis-alist @@ -6454,6 +6512,12 @@ highlighting. ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold))) @end lisp +@cindex slash +@cindex asterisk +@cindex underline +@cindex / +@cindex * + @vindex gnus-emphasis-underline @vindex gnus-emphasis-bold @vindex gnus-emphasis-italic @@ -6521,6 +6585,23 @@ Hide headers that aren't particularly interesting Hide signature (@code{gnus-article-hide-signature}). @xref{Article Signature}. +@item W W l +@kindex W W l (Summary) +@findex gnus-article-hide-list-identifiers +@vindex gnus-list-identifiers +Hide list identifiers specified in @code{gnus-list-identifiers}. Theese +are strings some list servers add to the beginning of all @code{Subject} +headers---for example, @samp{[zebra 4711]}. + +@table @code + +@item gnus-list-identifiers +@vindex gnus-list-identifiers +A regular expression that matches list identifiers to be removed from +subject. This can also be a list of regular expressions. + +@end table + @item W W p @kindex W W p (Summary) @findex gnus-article-hide-pgp @@ -6553,6 +6634,10 @@ Hide @sc{pem} (privacy enhanced messages) cruft @item W W B @kindex W W B (Summary) @findex gnus-article-strip-banner +@cindex banner +@cindex OneList +@cindex stripping advertisments +@cindex advertisments Strip the banner specified by the @code{banner} group parameter (@code{gnus-article-strip-banner}). This is mainly used to hide those annoying banners and/or signatures that some mailing lists and moderated @@ -6716,14 +6801,14 @@ Do word wrap (@code{gnus-article-fill-cited-article}). You can give the command a numerical prefix to specify the width to use when filling. -@item W q -@kindex W q (Summary) -@findex gnus-article-fill-long-lines +@item W Q +@kindex W Q (Summary) +@findex gnus-article-fill-long-lines Fill long lines (@code{gnus-article-fill-long-lines}). @item W C @kindex W C (Summary) -@findex gnus-article-capitalize-sentencse +@findex gnus-article-capitalize-sentences Capitalize the first word in each sentence (@code{gnus-article-capitalize-sentences}). @@ -6895,7 +6980,7 @@ used to say what headers to apply the buttonize coding to: (HEADER REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR) @end lisp -@var{HEADER} is a regular expression. +@var{header} is a regular expression. @item gnus-button-url-regexp @vindex gnus-button-url-regexp @@ -7067,7 +7152,7 @@ signature after all. @kindex A t (Summary) @findex gnus-article-babel Translate the article from one language to another -(@code{gnus-article-babel}). +(@code{gnus-article-babel}). @end table @@ -7076,7 +7161,51 @@ Translate the article from one language to another @section @sc{mime} Commands @cindex MIME decoding +The following commands all understand the numerical prefix. For +instance, @kbd{3 b} means ``view the third @sc{mime} part''. + +@table @kbd +@item b +@itemx K b +@kindex b (Summary) +@kindex K b (Summary) +View the @sc{mime} part. + +@item K o +@kindex K o (Summary) +Save the @sc{mime} part. + +@item K c +@kindex K c (Summary) +Copy the @sc{mime} part. + +@item K e +@kindex K e (Summary) +View the @sc{mime} part externally. + +@item K i +@kindex K i (Summary) +View the @sc{mime} part internally. + +@item K | +@kindex K | (Summary) +Pipe the @sc{mime} part to an external command. +@end table + +The rest of these @sc{mime} commands do not use the numerical prefix in +the same manner: + @table @kbd +@item K b +@kindex K b (Summary) +Make all the @sc{mime} parts have buttons in from of them. + +@item K m +@kindex K m (Summary) +Some multipart messages are transmitted with missing or faulty headers. +This command will attempt to ``repair'' these messages so that they can +be viewed in a more pleasant manner. + @item X m @kindex X m (Summary) @findex gnus-summary-save-parts @@ -7336,6 +7465,20 @@ would, perhaps, be best if the @sc{nntp} server you consult is the one updating the spool you are reading from, but that's not really necessary. +It can also be a list of select methods, as well as the special symbol +@code{current}, which means to use the current select method. If it +is a list, Gnus will try all the methods in the list until it finds a +match. + +Here's an example setting that will first try the current method, and +then ask Deja if that fails: + +@lisp +(setq gnus-refer-article-method + '(current + (nnweb "refer" (nnweb-type dejanews)))) +@end lisp + Most of the mail backends support fetching by @code{Message-ID}, but do not do a particularly excellent job at it. That is, @code{nnmbox} and @code{nnbabyl} are able to locate articles from any groups, while @@ -7523,8 +7666,8 @@ Variables related to the display are: @item gnus-tree-brackets @vindex gnus-tree-brackets This is used for differentiating between ``real'' articles and -``sparse'' articles. The format is @var{((real-open . real-close) -(sparse-open . sparse-close) (dummy-open . dummy-close))}, and the +``sparse'' articles. The format is @code{((@var{real-open} . @var{real-close}) +(@var{sparse-open} . @var{sparse-close}) (@var{dummy-open} . @var{dummy-close}))}, and the default is @code{((?[ . ?]) (?( . ?)) (?@{ . ?@}) (?< . ?>))}. @item gnus-tree-parent-child-edges @@ -8378,6 +8521,9 @@ To have them called automatically, you should set the corresponding @code{gnus-treat-hide-headers}. Below is a list of variables that can be set, but first we discuss the values these variables can have. +Note: Some values, while valid, make little sense. Check the list below +for sensible values. + @enumerate @item @code{nil}: Don't do this treatment. @@ -8433,37 +8579,39 @@ controlling variable is a predicate list, as described above. The following treatment options are available. The easiest way to customize this is to examine the @code{gnus-article-treat} customization -group. +group. Values in brackets are suggested sensible values. Others are possible +but those listed are probably sufficient for most people. @table @code -@item gnus-treat-buttonize -@item gnus-treat-buttonize-head -@item gnus-treat-emphasize -@item gnus-treat-fill-article -@item gnus-treat-strip-cr -@item gnus-treat-hide-headers -@item gnus-treat-hide-boring-headers -@item gnus-treat-hide-signature -@item gnus-treat-hide-citation -@item gnus-treat-strip-pgp -@item gnus-treat-strip-pem -@item gnus-treat-highlight-headers -@item gnus-treat-highlight-citation -@item gnus-treat-highlight-signature -@item gnus-treat-date-ut -@item gnus-treat-date-local -@item gnus-treat-date-lapsed -@item gnus-treat-date-original -@item gnus-treat-strip-headers-in-body -@item gnus-treat-strip-trailing-blank-lines -@item gnus-treat-strip-leading-blank-lines -@item gnus-treat-strip-multiple-blank-lines -@item gnus-treat-overstrike -@item gnus-treat-display-xface -@item gnus-treat-display-smileys -@item gnus-treat-display-picons -@item gnus-treat-capitalize-sentences -@item gnus-treat-fill-long-lines +@item gnus-treat-highlight-signature (t, last) +@item gnus-treat-buttonize (t, integer) +@item gnus-treat-buttonize-head (head) +@item gnus-treat-emphasize (t, head, integer) +@item gnus-treat-fill-article (t, integer) +@item gnus-treat-strip-cr (t, integer) +@item gnus-treat-hide-headers (head) +@item gnus-treat-hide-boring-headers (head) +@item gnus-treat-hide-signature (t, last) +@item gnus-treat-hide-citation (t, integer) +@item gnus-treat-strip-pgp (t, last, integer) +@item gnus-treat-strip-pem (t, last, integer) +@item gnus-treat-highlight-headers (head) +@item gnus-treat-highlight-citation (t, integer) +@item gnus-treat-highlight-signature (t, last, integer) +@item gnus-treat-date-ut (head) +@item gnus-treat-date-local (head) +@item gnus-treat-date-lapsed (head) +@item gnus-treat-date-original (head) +@item gnus-treat-strip-headers-in-body (t, integer) +@item gnus-treat-strip-trailing-blank-lines (t, last, integer) +@item gnus-treat-strip-leading-blank-lines (t, integer) +@item gnus-treat-strip-multiple-blank-lines (t, integer) +@item gnus-treat-overstrike (t, integer) +@item gnus-treat-display-xface (head) +@item gnus-treat-display-smileys (t, integer) +@item gnus-treat-display-picons (head) +@item gnus-treat-capitalize-sentences (t, integer) +@item gnus-treat-fill-long-lines (t, integer) @item gnus-treat-play-sounds @item gnus-treat-translate @item gnus-treat-decode-article-as-default-mime-charset @@ -8474,8 +8622,7 @@ You can, of course, write your own functions to be called from @code{gnus-part-display-hook}. The functions are called narrowed to the part, and you can do anything you like, pretty much. There is no information that you have to keep in the buffer---you can change -everything. However, you shouldn't delete any headers. Instead make -them invisible if you want to make them go away. +everything. @node Article Keymap @@ -8843,8 +8990,7 @@ messages in one file per month: (setq gnus-message-archive-group '((if (message-news-p) "misc-news" - (concat "mail." (format-time-string - "%Y-%m" (current-time)))))) + (concat "mail." (format-time-string "%Y-%m"))))) @end lisp (XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to @@ -8924,19 +9070,22 @@ signature and the @samp{What me?} @code{Organization} header. The first element in each style is called the @code{match}. If it's a string, then Gnus will try to regexp match it against the group name. -If it's a function symbol, that function will be called with no -arguments. If it's a variable symbol, then the variable will be +If it is the symbol @code{header}, then Gnus will look for header that +match the next element in the match, and compare that to the last header +in the match. If it's a function symbol, that function will be called +with no arguments. If it's a variable symbol, then the variable will be referenced. If it's a list, then that list will be @code{eval}ed. In any case, if this returns a non-@code{nil} value, then the style is said to @dfn{match}. Each style may contain a arbitrary amount of @dfn{attributes}. Each -attribute consists of a @var{(name value)} pair. The attribute name -can be one of @code{signature}, @code{signature-file}, +attribute consists of a @code{(@var{name} . @var{value})} pair. The +attribute name can be one of @code{signature}, @code{signature-file}, @code{organization}, @code{address}, @code{name} or @code{body}. The attribute name can also be a string. In that case, this will be used as a header name, and the value will be inserted in the headers of the -article. +article. If the attribute name is @code{eval}, the form is evaluated, +and the result is thrown away. The attribute value can be a string (used verbatim), a function with zero arguments (the return value will be used), a variable (its value @@ -8967,6 +9116,8 @@ So here's a new example: (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") @@ -9104,6 +9255,7 @@ The different methods all have their peculiarities, of course. * The Server Buffer:: Making and editing virtual servers. * Getting News:: Reading USENET news with Gnus. * Getting Mail:: Reading your personal mail with Gnus. +* Browsing the Web:: Getting messages from a plethora of Web sources. * Other Sources:: Reading directories, files, SOUP packets. * Combined Groups:: Combining groups into one group. * Gnus Unplugged:: Reading news and mail offline. @@ -9273,7 +9425,7 @@ backend, and the second is the @dfn{address}, or @dfn{name}, if you will. After these two elements, there may be an arbitrary number of -@var{(variable form)} pairs. +@code{(@var{variable} @var{form})} pairs. To go back to the first example---imagine that you want to read from port 15 on that machine. This is what the select method should @@ -9905,12 +10057,13 @@ 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. * Mail Backend Variables:: Variables for customizing mail handling. * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. +* Group Mail Splitting:: Use group customize to drive mail splitting. * Incorporating Old Mail:: What about the old mail you have? * Expiring Mail:: Getting rid of unwanted mail. * Washing Mail:: Removing gruft from the mail you get. @@ -9923,11 +10076,11 @@ course. @node Mail in a Newsreader @subsection Mail in a Newsreader -If you are used to traditional mail readers, but have decided to switch +If you are used to traditional mail readers, but have decided to switch to reading mail with Gnus, you may find yourself experiencing something of a culture shock. -Gnus does not behave like traditional mail readers. If you want to make +Gnus does not behave like traditional mail readers. If you want to make it behave that way, you can, but it's an uphill battle. Gnus, by default, handles all its groups using the same approach. This @@ -9941,7 +10094,7 @@ Does this mean that all the messages that have been marked as read are deleted? How awful! But, no, it means that old messages are @dfn{expired} according to some -scheme or other. For news messages, the expire process is controlled by +scheme or other. For news messages, the expire process is controlled by the news administrator; for mail, the expire process is controlled by you. The expire process for mail is covered in depth in @pxref{Expiring Mail}. @@ -9957,7 +10110,7 @@ need to save them because if we should need to read one again, they are archived somewhere else. Some people have local news groups which have only a handful of readers. -These are transported via NNTP, and are therefore news. But we may need +These are transported via @sc{nntp}, and are therefore news. But we may need to read and answer a large fraction of the messages very carefully in order to do our work. And there may not be an archive, so we may need to save the interesting messages the same way we would personal mail. @@ -10168,6 +10321,33 @@ Or using the default path: (file) @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 +file names here---it has no way to lock the mail spool while moving the +mail. + +If it's impossible to set up a proper server, you can use ssh instead. + +@lisp +(setq mail-sources + '((file :prescript "ssh host bin/getmail >%t"))) +@end lisp + +The @samp{getmail} script would look something like the following: + +@example +#!/bin/sh +# getmail - move mail from spool to stdout +# flu@@iki.fi + +MOVEMAIL=/usr/lib/emacs/20.3/i386-redhat-linux/movemail +TMP=~/Mail/tmp +rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP +@end example + +Alter this script to fit find the @samp{movemail} you want to use. + + @item directory Get mail from several files in a directory. This is typically used when you have procmail split the incoming mail into several files. @@ -10321,6 +10501,103 @@ An example maildir mail source: (maildir :path "/home/user-name/Maildir/cur") @end lisp +@item imap +Get mail from a @sc{imap} server. If you don't want to use @sc{imap} as intended, +as a network mail reading protocol (ie with nnimap), for some reason or +other, Gnus let you treat it similar to a POP server and fetches +articles from a given @sc{imap} mailbox. + +Keywords: + +@table @code +@item :server +The name of the @sc{imap} server. The default is taken from the +@code{MAILHOST} environment variable. + +@item :port +The port number of the @sc{imap} server. The default is @samp{143}, or +@samp{993} for SSL connections. + +@item :user +The user name to give to the @sc{imap} server. The default is the login +name. + +@item :password +The password to give to the @sc{imap} server. If not specified, the user is +prompted. + +@item :stream +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 +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 +@samp{login}. + +@item :mailbox +The name of the mailbox to get mail from. The default is @samp{INBOX} +which normally is the mailbox which receive incoming mail. + +@item :predicate +The predicate used to find articles to fetch. The default, +@samp{UNSEEN UNDELETED}, is probably the best choice for most people, +but if you sometimes peek in your mailbox with a @sc{imap} client and mark +some articles as read (or; SEEN) you might want to set this to +@samp{nil}. Then all articles in the mailbox is fetched, no matter +what. For a complete list of predicates, see RFC2060 §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 +would simply mark them as read. Theese are the two most likely choices, +but more flags are defined in RFC2060 §2.3.2. + +@item :dontexpunge +If non-nil, don't remove all articles marked as deleted in the mailbox +after finishing the fetch. + +@end table + +An example @sc{imap} mail source: + +@lisp +(imap :server "mail.mycorp.com" :stream kerberos4) +@end lisp + +@item webmail +Get mail from a webmail server, such as www.hotmail.com, +mail.yahoo.com, and www.netaddress.com. + +NOTE: Webmail largely depends on w3 (url) package, whose version of "WWW +4.0pre.46 1999/10/01" or previous ones may not work. + +WARNING: Mails may lost. NO WARRANTY. + +Keywords: + +@table @code +@item :subtype +The type of the webmail server. The default is @code{hotmail}. The +alternatives are @code{yahoo}, @code{netaddress}. + +@item :user +The user name to give to the webmail server. The default is the login +name. + +@item :password +The password to give to the webmail server. If not specified, the user is +prompted. + +@end table + +An example webmail source: + +@lisp +(webmail :subtype 'yahoo :user "user-name" :password "secret") +@end lisp @end table @@ -10494,7 +10771,7 @@ Let's look at an example value of this variable first: (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") ;; Both lists below have the same suffix, so prevent - ;; cross-posting to mkpkg.list of messages posted only to + ;; cross-posting to mkpkg.list of messages posted only to ;; the bugs- list, but allow cross-posting when the ;; message was really cross-posted. (any "bugs-mypackage@@somewhere" "mypkg.bugs") @@ -10517,51 +10794,54 @@ name. Normal regexp match expansion will be done. See below for examples. @item -@var{(FIELD VALUE [- RESTRICT [- RESTRICT [...]]] SPLIT)}: If the split -is a list, the first element of which is a string, then store the -message as specified by SPLIT, if header FIELD (a regexp) contains VALUE -(also a regexp). If RESTRICT (yet another regexp) matches some string -after FIELD and before the end of the matched VALUE, the SPLIT is -ignored. If none of the RESTRICT clauses match, SPLIT is processed. +@code{(@var{field} @var{value} @code{[-} @var{restrict} @code{[-} @var{restrict} @code{[@dots{}]}@code{]]} +@var{split})}: If the split is a list, the first element of which is a +string, then store the message as specified by @var{split}, if header +@var{field} (a regexp) contains @var{value} (also a regexp). If +@var{restrict} (yet another regexp) matches some string after +@var{field} and before the end of the matched @var{value}, the +@var{split} is ignored. If none of the @var{restrict} clauses match, +@var{split} is processed. @item -@var{(| SPLIT...)}: If the split is a list, and the first element is -@code{|} (vertical bar), then process each SPLIT until one of them -matches. A SPLIT is said to match if it will cause the mail message to -be stored in one or more groups. +@code{(| @var{split}@dots{})}: If the split is a list, and the first +element is @code{|} (vertical bar), then process each @var{split} until +one of them matches. A @var{split} is said to match if it will cause +the mail message to be stored in one or more groups. @item -@var{(& SPLIT...)}: If the split is a list, and the first element is -@code{&}, then process all SPLITs in the list. +@code{(& @var{split}@dots{})}: If the split is a list, and the first +element is @code{&}, then process all @var{split}s in the list. @item @code{junk}: If the split is the symbol @code{junk}, then don't save this message. Use with extreme caution. @item -@var{(: function arg1 arg2 ...)}: If the split is 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 SPLIT. +@code{(: @var{function} @var{arg1} @var{arg2} @dots{})}: If the split is +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}. @item -@var{(! FUNC SPLIT)}: If the split is a list, and the first element -is @code{!}, then SPLIT will be processed, and FUNC will be called as a -function with the result of SPLIT as argument. FUNC should return a split. +@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 +called as a function with the result of SPLIT as argument. FUNC should +return a split. @item @code{nil}: If the split is @code{nil}, it is ignored. @end enumerate -In these splits, @var{FIELD} must match a complete field name. -@var{VALUE} must match a complete word according to the fundamental mode +In these splits, @var{field} must match a complete field name. +@var{value} must match a complete word according to the fundamental mode syntax table. You can use @code{.*} in the regexps to match partial -field names or words. In other words, all @var{VALUE}'s are wrapped in +field names or words. In other words, all @var{value}'s are wrapped in @samp{\<} and @samp{\>} pairs. @vindex nnmail-split-abbrev-alist -@var{FIELD} and @var{VALUE} can also be lisp symbols, in that case they +@var{field} and @var{value} can also be lisp symbols, in that case they are expanded as specified by the variable @code{nnmail-split-abbrev-alist}. This is an alist of cons cells, where the @code{car} of a cell contains the key, and the @code{cdr} contains the associated @@ -10588,6 +10868,131 @@ up to @samp{\\9} will be substituted with the text matched by the groupings 1 through 9. +@node Group Mail Splitting +@subsection Group Mail Splitting +@cindex mail splitting +@cindex group mail splitting + +@findex gnus-group-split +If you subscribe to dozens of mailing lists but you don't want to +maintain mail splitting rules manually, group mail splitting is for you. +You just have to set @var{to-list} and/or @var{to-address} in group +parameters or group customization and set @code{nnmail-split-methods} to +@code{gnus-group-split}. This splitting function will scan all groups +for those parameters and split mail accordingly, i.e., messages posted +from or to the addresses specified in the parameters @var{to-list} or +@var{to-address} of a mail group will be stored in that group. + +Sometimes, mailing lists have multiple addresses, and you may want mail +splitting to recognize them all: just set the @var{extra-aliases} group +parameter to the list of additional addresses and it's done. If you'd +rather use a regular expression, set @var{split-regexp}. + +All these parameters in a group will be used to create an +@code{nnmail-split-fancy} split, in which the @var{field} is @samp{any}, +the @var{value} is a single regular expression that matches +@var{to-list}, @var{to-address}, all of @var{extra-aliases} and all +matches of @var{split-regexp}, and the @var{split} is the name of the +group. @var{restrict}s are also supported: just set the +@var{split-exclude} parameter to a list of regular expressions. + +If you can't get the right split to be generated using all these +parameters, or you just need something fancier, you can set the +parameter @var{split-spec} to an @code{nnmail-split-fancy} split. In +this case, all other aforementioned parameters will be ignored by +@code{gnus-group-split}. In particular, @var{split-spec} may be set to +@code{nil}, in which case the group will be ignored by +@code{gnus-group-split}. + +@vindex gnus-group-split-default-catch-all-group +@code{gnus-group-split} will do cross-posting on all groups that match, +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. + +It's time for an example. Assume the following group parameters have +been defined: + +@example +nnml:mail.bar: +((to-address . "bar@@femail.com") + (split-regexp . ".*@@femail\\.com")) +nnml:mail.foo: +((to-list . "foo@@nowhere.gov") + (extra-aliases "foo@@localhost" "foo-redist@@home") + (split-exclude "bugs-foo" "rambling-foo") + (admin-address . "foo-request@@nowhere.gov")) +nnml:mail.others: +((split-spec . catch-all)) +@end example + +Setting @code{nnmail-split-methods} to @code{gnus-group-split} will +behave as if @code{nnmail-split-fancy} had been selected and variable +@code{nnmail-split-fancy} had been set as follows: + +@lisp +(| (& (any "\\(bar@@femail\\.com\\|.*@@femail\\.com\\)" "mail.bar") + (any "\\(foo@@nowhere\\.gov\\|foo@@localhost\\|foo-redist@@home\\)" + - "bugs-foo" - "rambling-foo" "mail.foo")) + "mail.others") +@end lisp + +@findex gnus-group-split-fancy +If you'd rather not use group splitting for all your mail groups, you +may use it for only some of them, by using @code{nnmail-split-fancy} +splits like this: + +@lisp +(: gnus-mlsplt-fancy GROUPS NO-CROSSPOST CATCH-ALL) +@end lisp + +@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 +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. + +@findex gnus-group-split-setup +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 +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 +@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 +you. For example, add to your @file{.gnus}: + +@lisp +(gnus-group-split-setup AUTO-UPDATE CATCH-ALL) +@end lisp + +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), +@code{gnus-group-split-default-catch-all-group} will be set to its +value. + +@vindex gnus-group-split-updated-hook +Because you may want to change @code{nnmail-split-fancy} after it is set +by @code{gnus-group-split-update}, this function will run +@code{gnus-group-split-updated-hook} just before finishing. + @node Incorporating Old Mail @subsection Incorporating Old Mail @@ -10833,6 +11238,9 @@ For instance, if you want to remove the @samp{(idm)} and the '("(idm)" "nagnagnag")) @end lisp +This can also be done non-destructively with +@code{gnus-list-identifiers}, @xref{Article Hiding}. + @item nnmail-remove-tabs @findex nnmail-remove-tabs Translate all @samp{TAB} characters into @samp{SPACE} characters. @@ -11204,9 +11612,9 @@ and so selection of a suitable backend is required in order to get that mail within spitting distance of Gnus. The same concept exists for Usenet itself: Though access to articles is -typically done by NNTP these days, once upon a midnight dreary, everyone +typically done by @sc{nntp} these days, once upon a midnight dreary, everyone in the world got at Usenet by running a reader on the machine where the -articles lay (the machine which today we call an NNTP server), and +articles lay (the machine which today we call an @sc{nntp} server), and access was by the reader stepping into the articles' directory spool area directly. One can still select between either the @code{nntp} or @code{nnspool} backends, to select between these methods, if one happens @@ -11297,14 +11705,14 @@ slowness of access parsing when learning what's new in one's groups. @item nnfolder -Basically the effetc of @code{nnfolder} is @code{nnmbox} (the first +Basically the effect of @code{nnfolder} is @code{nnmbox} (the first method described above) on a per-group basis. That is, @code{nnmbox} itself puts *all* one's mail in one file; @code{nnfolder} provides a little bit of optimization to this so that each of one's mail groups has a Unix mail box file. It's faster than @code{nnmbox} because each group can be parsed separately, and still provides the simple Unix mail box -format requiring minimal effort in moving the mail around. In addition, -it maintains an ``active'' file making it much faster for Gnus to figure +format requiring minimal effort in moving the mail around. In addition, +it maintains an ``active'' file making it much faster for Gnus to figure out how many messages there are in each separate group. If you have groups that are expected to have a massive amount of @@ -11315,6 +11723,289 @@ friendly mail backend all over. @end table +@node Browsing the Web +@section Browsing the Web +@cindex web +@cindex browsing the web +@cindex www +@cindex http + +Web-based discussion forums are getting more and more popular. On many +subjects, the web-based forums have become the most important forums, +eclipsing the importance of mailing lists and news groups. The reason +is easy to understand---they are friendly to new users; you just point +and click, and there's the discussion. With mailing lists, you have to +go through a cumbersome subscription procedure, and most people don't +even know what a news group is. + +The problem with this scenario is that web browsers are not very good at +being newsreaders. They do not keep track of what articles you've read; +they do not allow you to score on subjects you're interested in; they do +not allow off-line browsing; they require you to click around and drive +you mad in the end. + +So---if web browsers suck at reading discussion forums, why not use Gnus +to do it instead? + +Gnus has been getting a bit of a collection of backends for providing +interfaces to these sources. + +@menu +* Web Searches:: Creating groups from articles that match a string. +* Slashdot:: Reading the Slashdot comments. +* Ultimate:: The Ultimate Bulletin Board systems. +* Web Archive:: Reading mailing list archived on web. +@end menu + +The main caveat with all these web sources is that they probably won't +work for a very long time. Gleaning information from the @sc{html} data +is guesswork at best, and when the layout is altered, the Gnus backend +will fail. If you have reasonably new versions of these backends, +though, you should be ok. + +One thing all these Web methods have in common is that the Web sources +are often down, unavailable or just plain too slow to be fun. In those +cases, it makes a lot of sense to let the Gnus Agent (@pxref{Gnus +Unplugged}) handle downloading articles, and then you can read them at +leisure from your local disk. No more World Wide Wait for you. + + +@node Web Searches +@subsection Web Searches +@cindex nnweb +@cindex DejaNews +@cindex Alta Vista +@cindex InReference +@cindex Usenet searches +@cindex searching the Usenet + +It's, like, too neat to search the Usenet for articles that match a +string, but it, like, totally @emph{sucks}, like, totally, to use one of +those, like, Web browsers, and you, like, have to, rilly, like, look at +the commercials, so, like, with Gnus you can do @emph{rad}, rilly, +searches without having to use a browser. + +The @code{nnweb} backend allows an easy interface to the mighty search +engine. You create an @code{nnweb} group, enter a search pattern, and +then enter the group and read the articles like you would any normal +group. The @kbd{G w} command in the group buffer (@pxref{Foreign +Groups}) will do this in an easy-to-use fashion. + +@code{nnweb} groups don't really lend themselves to being solid +groups---they have a very fleeting idea of article numbers. In fact, +each time you enter an @code{nnweb} group (not even changing the search +pattern), you are likely to get the articles ordered in a different +manner. Not even using duplicate suppression (@pxref{Duplicate +Suppression}) will help, since @code{nnweb} doesn't even know the +@code{Message-ID} of the articles before reading them using some search +engines (DejaNews, for instance). The only possible way to keep track +of which articles you've read is by scoring on the @code{Date} +header---mark all articles posted before the last date you read the +group as read. + +If the search engine changes its output substantially, @code{nnweb} +won't be able to parse it and will fail. One could hardly fault the Web +providers if they were to do this---their @emph{raison d'être} is to +make money off of advertisements, not to provide services to the +community. Since @code{nnweb} washes the ads off all the articles, one +might think that the providers might be somewhat miffed. We'll see. + +You must have the @code{url} and @code{w3} package installed to be able +to use @code{nnweb}. + +Virtual server variables: + +@table @code +@item nnweb-type +@vindex nnweb-type +What search engine type is being used. The currently supported types +are @code{dejanews}, @code{dejanewsold}, @code{altavista} and +@code{reference}. + +@item nnweb-search +@vindex nnweb-search +The search string to feed to the search engine. + +@item nnweb-max-hits +@vindex nnweb-max-hits +Advisory maximum number of hits per search to display. The default is +100. + +@item nnweb-type-definition +@vindex nnweb-type-definition +Type-to-definition alist. This alist says what @code{nnweb} should do +with the various search engine types. The following elements must be +present: + +@table @code +@item article +Function to decode the article and provide something that Gnus +understands. + +@item map +Function to create an article number to message header and URL alist. + +@item search +Function to send the search string to the search engine. + +@item address +The address the aforementioned function should send the search string +to. + +@item id +Format string URL to fetch an article by @code{Message-ID}. +@end table + +@end table + + +@node Slashdot +@subsection Slashdot +@cindex Slashdot +@cindex nnslashdot + +Slashdot (@file{http://slashdot.org/}) is a popular news site, with +lively discussion following the news articles. @code{nnslashdot} will +let you read this forum in a convenient manner. + +The easiest way to read this source is to put something like the +following in your @file{.gnus.el} file: + +@lisp +(setq gnus-secondary-select-methods + '((nnslashdot ""))) +@end lisp + +This will make Gnus query the @code{nnslashdot} backend for new comments +and groups. The @kbd{F} command will subscribe each new news article as +a new Gnus group, and you can read the comments by entering these +groups. (Note that the default subscription method is to subscribe new +groups as zombies. Other methods are available (@pxref{Subscription +Methods}). + +When following up to @code{nnslashdot} comments (or posting new +comments), some light @sc{html}izations will be performed. In +particular, text quoted with @samp{> } will be quoted with +@code{blockquote} instead, and signatures will have @code{br} added to +the end of each line. Other than that, you can just write @sc{html} +directly into the message buffer. Note that Slashdot filters out some +@sc{html} forms. + +The following variables can be altered to change its behavior: + +@table @code +@item nnslashdot-threaded +Whether @code{nnslashdot} should display threaded groups or not. The +default is @code{t}. To be able to display threads, @code{nnslashdot} +has to retrieve absolutely all comments in a group upon entry. If a +threaded display is not required, @code{nnslashdot} will only retrieve +the comments that are actually wanted by the user. Threading is nicer, +but much, much slower than untreaded. + +@item nnslashdot-login-name +@vindex nnslashdot-login-name +The login name to use when posting. + +@item nnslashdot-password +@vindex nnslashdot-password +The password to use when posting. + +@item nnslashdot-directory +@vindex nnslashdot-directory +Where @code{nnslashdot} will store its files. The default value is +@samp{~/News/slashdot/}. + +@item nnslashdot-active-url +@vindex nnslashdot-active-url +The @sc{url} format string that will be used to fetch the information on +news articles and comments. The default is +@samp{http://slashdot.org/search.pl?section=&min=%d}. + +@item nnslashdot-comments-url +@vindex nnslashdot-comments-url +The @sc{url} format string that will be used to fetch comments. The +default is +@samp{http://slashdot.org/comments.pl?sid=%s&threshold=%d&commentsort=%d&mode=flat&startat=%d}. + +@item nnslashdot-article-url +@vindex nnslashdot-article-url +The @sc{url} format string that will be used to fetch the news article. The +default is +@samp{http://slashdot.org/article.pl?sid=%s&mode=nocomment}. + +@item nnslashdot-threshold +@vindex nnslashdot-threshold +The score threshold. The default is -1. + +@item nnslashdot-group-number +@vindex nnslashdot-group-number +The number of old groups, in addition to the ten latest, to keep +updated. The default is 0. + +@end table + + + +@node Ultimate +@subsection Ultimate +@cindex nnultimate +@cindex Ultimate Bulletin Board + +The Ultimate Bulletin Board (@file{http://www.ultimatebb.com/}) is +probably the most popular Web bulletin board system used. It has a +quite regular and nice interface, and it's possible to get the +information Gnus needs to keep groups updated. + +The easiest way to get started with @code{nnultimate} is to say +something like the following in the group buffer: @kbd{B nnultimate RET +http://www.tcj.com/messboard/ubbcgi/ RET}. (Substitute the @sc{url} +(not including @samp{Ultimate.cgi} or the like at the end) for a forum +you're interested in; there's quite a list of them on the Ultimate web +site.) Then subscribe to the groups you're interested in from the +server buffer, and read them from the group buffer. + +The following @code{nnultimate} variables can be altered: + +@table @code +@item nnultimate-directory +@vindex nnultimate-directory +The directory where @code{nnultimate} stores its files. The default is +@samp{~/News/ultimate/}. +@end table + +@node Web Archive +@subsection Web Archive +@cindex nnwarchive +@cindex Web Archive + +Some mailing lists only have archives on Web servers, such as +(@file{http://www.egroups.com/}). It has a quite regular and nice +interface, and it's possible to get the information Gnus needs to keep +groups updated. + +The easiest way to get started with @code{nnwarchive} is to say +something like the following in the group buffer: @kbd{M-x +gnus-group-make-nnwarchive-group RET an_egroup RET egroups RET +www.egroups.com RET your@@email.address RET}. (Substitute the +@sc{an_egroup} with the mailing list you subscribed, the +@sc{your@@email.address} with your email address.) + +The following @code{nnwarchive} variables can be altered: + +@table @code +@item nnwarchive-directory +@vindex nnwarchive-directory +The directory where @code{nnwarchive} stores its files. The default is +@samp{~/News/warchive/}. + +@item nnwarchive-login +@vindex nnwarchive-login +The account name on the web server. + +@item nnwarchive-passwd +@vindex nnwarchive-passwd +The password for your account on the web server. +@end table @node Other Sources @section Other Sources @@ -11327,9 +12018,9 @@ newsgroups. * Directory Groups:: You can read a directory as if it was a newsgroup. * Anything Groups:: Dired? Who needs dired? * Document Groups:: Single files can be the basis of a group. -* SOUP:: Reading @sc{SOUP} packets ``offline''. -* Web Searches:: Creating groups from articles that match a string. +* SOUP:: Reading @sc{soup} packets ``offline''. * Mail-To-News Gateways:: Posting articles via mail-to-news gateways. +* IMAP:: Using Gnus as a @sc{imap} client. @end menu @@ -11652,7 +12343,7 @@ Of course, us Unix Weenie types of human beans use things like transport things like Ghod intended. And then we just use normal newsreaders. -However, it can sometimes be convenient to do something a that's a bit +However, it can sometimes be convenient to do something that's a bit easier on the brain if you have a very slow modem, and you're not really that interested in doing things properly. @@ -11680,12 +12371,12 @@ of packets: @item message packets These are packets made at the server, and typically contain lots of messages for you to read. These are called @file{SoupoutX.tgz} by -default, where @var{X} is a number. +default, where @var{x} is a number. @item response packets These are packets made at the home machine, and typically contains replies that you've written. These are called @file{SoupinX.tgz} by -default, where @var{X} is a number. +default, where @var{x} is a number. @end table @@ -11921,96 +12612,6 @@ system you just use the first line. If you only want mail to be @sc{soup}ed you use the second. -@node Web Searches -@subsection Web Searches -@cindex nnweb -@cindex DejaNews -@cindex Alta Vista -@cindex InReference -@cindex Usenet searches -@cindex searching the Usenet - -It's, like, too neat to search the Usenet for articles that match a -string, but it, like, totally @emph{sucks}, like, totally, to use one of -those, like, Web browsers, and you, like, have to, rilly, like, look at -the commercials, so, like, with Gnus you can do @emph{rad}, rilly, -searches without having to use a browser. - -The @code{nnweb} backend allows an easy interface to the mighty search -engine. You create an @code{nnweb} group, enter a search pattern, and -then enter the group and read the articles like you would any normal -group. The @kbd{G w} command in the group buffer (@pxref{Foreign -Groups}) will do this in an easy-to-use fashion. - -@code{nnweb} groups don't really lend themselves to being solid -groups---they have a very fleeting idea of article numbers. In fact, -each time you enter an @code{nnweb} group (not even changing the search -pattern), you are likely to get the articles ordered in a different -manner. Not even using duplicate suppression (@pxref{Duplicate -Suppression}) will help, since @code{nnweb} doesn't even know the -@code{Message-ID} of the articles before reading them using some search -engines (DejaNews, for instance). The only possible way to keep track -of which articles you've read is by scoring on the @code{Date} -header---mark all articles posted before the last date you read the -group as read. - -If the search engine changes its output substantially, @code{nnweb} -won't be able to parse it and will fail. One could hardly fault the Web -providers if they were to do this---their @emph{raison d'être} is to -make money off of advertisements, not to provide services to the -community. Since @code{nnweb} washes the ads off all the articles, one -might think that the providers might be somewhat miffed. We'll see. - -You must have the @code{url} and @code{w3} package installed to be able -to use @code{nnweb}. - -Virtual server variables: - -@table @code -@item nnweb-type -@vindex nnweb-type -What search engine type is being used. The currently supported types -are @code{dejanews}, @code{dejanewsold}, @code{altavista} and -@code{reference}. - -@item nnweb-search -@vindex nnweb-search -The search string to feed to the search engine. - -@item nnweb-max-hits -@vindex nnweb-max-hits -Advisory maximum number of hits per search to display. The default is -100. - -@item nnweb-type-definition -@vindex nnweb-type-definition -Type-to-definition alist. This alist says what @code{nnweb} should do -with the various search engine types. The following elements must be -present: - -@table @code -@item article -Function to decode the article and provide something that Gnus -understands. - -@item map -Function to create an article number to message header and URL alist. - -@item search -Function to send the search string to the search engine. - -@item address -The address the aforementioned function should send the search string -to. - -@item id -Format string URL to fetch an article by @code{Message-ID}. -@end table - -@end table - - - @node Mail-To-News Gateways @subsection Mail-To-News Gateways @cindex mail-to-news gateways @@ -12089,6 +12690,267 @@ So, to use this, simply say something like: @end lisp + +@node IMAP +@subsection @sc{imap} +@cindex nnimap +@cindex @sc{imap} + +@sc{imap} is a network protocol for reading mail (or news, or ...), 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. + +The following variables can be used to create a virtual @code{nnimap} +server: + +@table @code + +@item nnimap-address +@vindex nnimap-address + +The address of the remote @sc{imap} server. Defaults to the virtual server +name if not specified. + +@item nnimap-server-port +@vindex nnimap-server-port +Port on server to contact. Defaults to port 143, or 993 for SSL. + +@item nnimap-list-pattern +@vindex nnimap-list-pattern +String or list of strings of mailboxes to limit available groups +to. This is used when the server has very many mailboxes and you're only +interested in a few -- some servers export your home directory via @sc{imap}, +you'll probably want to limit the mailboxes to those in @file{~/Mail/*} +then. + +The string can also be a cons of REFERENCE and the string as above, what +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: + +@lisp +("INBOX" "Mail/*" "alt.sex.*" ("~friend/Mail/" . "list/*")) +@end lisp + +@item nnimap-stream +@vindex nnimap-stream +The type of stream used to connect to your server. By default, nnimap +will use the most secure stream your server is capable of. + +@itemize @bullet +@item +@dfn{kerberos4:} Uses the `imtest' program. +@item +@dfn{ssl:} Uses OpenSSL or SSLeay. +@item +@dfn{network:} Plain, TCP/IP network connection. +@end itemize + +@item nnimap-authenticator +@vindex nnimap-authenticator + +The authenticator used to connect to the server. By default, nnimap will +use the most secure authenticator your server is capable of. + +@itemize @bullet +@item +@dfn{kerberos4:} Kerberos authentication. +@item +@dfn{cram-md5:} Encrypted username/password via CRAM-MD5. +@item +@dfn{login:} Plain-text username/password via LOGIN. +@item +@dfn{anonymous:} Login as `anonymous', supplying your emailadress as password. +@end itemize + +@item nnimap-expunge-on-close +@cindex Expunging +@vindex nnimap-expunge-on-close +Unlike Parmenides the @sc{imap} designers has decided that things that +doesn't exist actually does exist. More specifically, @sc{imap} has this +concept of marking articles @code{Deleted} which doesn't actually delete +them, and this (marking them @code{Deleted}, that is) is what nnimap +does when you delete a article in Gnus (with @kbd{G DEL} or similair). + +Since the articles aren't really removed when we mark them with the +@code{Deleted} flag we'll need a way to actually delete them. Feel like +running in circles yet? + +Traditionally, nnimap has removed all articles marked as @code{Deleted} +when closing a mailbox but this is now configurable by this server +variable. + +The possible options are: + +@table @code + +@item always +The default behaviour, delete all articles marked as "Deleted" when +closing a mailbox. +@item never +Never actually delete articles. Currently there is no way of showing the +articles marked for deletion in nnimap, but other @sc{imap} clients may allow +you to do this. If you ever want to run the EXPUNGE command manually, +@xref{Expunging mailboxes}. +@item ask +When closing mailboxes, nnimap will ask if you wish to expunge deleted +articles or not. +@end table + +@end table + +@menu +* Splitting in IMAP:: Splitting mail with nnimap. +* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox. +* Expunging mailboxes:: Equivalent of a "compress mailbox" button. +@end menu + + + +@node Splitting in IMAP +@subsubsection Splitting in @sc{imap} +@cindex splitting imap mail + +Splitting is something Gnus users has loved and used for years, and now +the rest of the world is catching up. Yeah, dream on, not many @sc{imap} +server has server side splitting and those that have splitting seem to +use some non-standard protocol. This means that @sc{imap} support for Gnus +has to do it's own splitting. + +And it does. + +There are three variables of interest: + +@table @code + +@item nnimap-split-crosspost +@cindex splitting, crosspost +@cindex crosspost +@vindex nnimap-split-crosspost + +If non-nil, do crossposting if several split methods match the mail. If +nil, the first match in @code{nnimap-split-rule} found will be used. + +Nnmail equivalent: @code{nnmail-crosspost}. + +@item nnimap-split-inbox +@cindex splitting, inbox +@cindex inbox +@vindex nnimap-split-inbox + +A string or a list of strings that gives the name(s) of @sc{imap} mailboxes +to split from. Defaults to nil, which means that splitting is disabled! + +@lisp +(setq nnimap-split-inbox '("INBOX" ("~/friend/Mail" . "lists/*") "lists.imap")) +@end lisp + +No nnmail equivalent. + +@item nnimap-split-rule +@cindex Splitting, rules +@vindex nnimap-split-rule + +New mail found in @code{nnimap-split-inbox} will be split according to +this variable. + +This variable contains a list of lists, where the first element in the +sublist gives the name of the @sc{imap} mailbox to move articles matching the +regexp in the second element in the sublist. Got that? 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" ""))) +@end lisp + +This will put all articles from the nnimap mailing list into mailbox +INBOX.nnimap, all articles containing MAKE MONEY in the Subject: line +into INBOX.spam and everything else in INBOX.private. + +The first string may contain `\\1' forms, like the ones used by +replace-match to insert sub-expressions from the matched text. For +instance: + +@lisp +("INBOX.lists.\\1" "^Sender: owner-\\([a-z-]+\\)@@") +@end lisp + +The second element can also be a function. In that case, it will be +called with the first element of the rule as the argument, in a buffer +containing the headers of the article. It should return a non-nil value +if it thinks that the mail belongs in that group. + +Nnmail users might recollect that the last regexp had to be empty to +match all articles (like in the example above). This is not required in +nnimap. Articles not matching any of the regexps will not be moved out +of your inbox. (This might might affect performance if you keep lots of +unread articles in your inbox, since the splitting code would go over +them every time you fetch new mail.) + +These rules are processed from the beginning of the alist toward the +end. The first rule to make a match will "win", unless you have +crossposting enabled. In that case, all matching rules will "win". + +The splitting code tries to create mailboxes if it need too. + +Nnmail equivalent: @code{nnmail-split-methods}. + +@end table + +@node Editing IMAP ACLs +@subsubsection Editing @sc{imap} ACLs +@cindex editing imap acls +@cindex Access Control Lists +@cindex Editing @sc{imap} ACLs +@kindex G l +@findex gnus-group-nnimap-edit-acl + +ACL stands for Access Control List. ACLs are used in @sc{imap} for limiting +(or enabling) other users access to your mail boxes. Not all @sc{imap} +servers support this, this function will give an error if it doesn't. + +To edit a ACL for a mailbox, type @kbd{G l} +(@code{gnus-group-edit-nnimap-acl}) and you'll be presented with a ACL +editing window with detailed instructions. + +Some possible uses: + +@itemize @bullet +@item +Giving "anyone" the "lrs" rights (lookup, read, keep seen/unseen flags) +on your mailing list mailboxes enables other users on the same server to +follow the list without subscribing to it. +@item +At least with the Cyrus server, you are required to give the user +"anyone" posting ("p") capabilities to have "plussing" work (that is, +mail sent to user+mailbox@@domain ending up in the @sc{imap} mailbox +INBOX.mailbox). +@end itemize + +@node Expunging mailboxes +@subsubsection Expunging mailboxes +@cindex expunging + +@cindex Expunge +@cindex Manual expunging +@kindex G x +@findex gnus-group-nnimap-expunge + +If you're using the @code{never} setting of @code{nnimap-expunge-close}, +you may want the option of expunging all deleted articles in a mailbox +manually. This is exactly what @kbd{G x} does. + +Currently there is no way of showing deleted articles, you can just +delete them. + + + @node Combined Groups @section Combined Groups @@ -12804,7 +13666,7 @@ Fetch all eligible articles in all groups @kindex J S (Agent Group) @findex gnus-group-send-drafts Send all sendable messages in the draft group -(@code{gnus-agent-fetch-session}). @xref{Drafts}. +(@code{gnus-group-send-drafts}). @xref{Drafts}. @item J a @kindex J a (Agent Group) @@ -12943,7 +13805,7 @@ setup, you may be able to use something like the following as your @file{.gnus.el} file to get started. @lisp -;;; Define how Gnus is to fetch news. We do this over NNTP +;;; Define how Gnus is to fetch news. We do this over @sc{nntp} ;;; from your ISP's server. (setq gnus-select-method '(nntp "news.your-isp.com")) @@ -13362,7 +14224,7 @@ Suffix to add to the group name to arrive at the score file name @vindex gnus-score-uncacheable-files @cindex score cache All score files are normally cached to avoid excessive re-loading of -score files. However, if this might make you Emacs grow big and +score files. However, if this might make your Emacs grow big and bloated, so this regexp can be used to weed out score files unlikely to be needed again. It would be a bad idea to deny caching of @file{all.SCORE}, while it might be a good idea to not cache @file{comp.infosystems.www.authoring.misc.ADAPT}. In fact, this @@ -13650,13 +14512,14 @@ files.) @item Thread This match key works along the same lines as the @code{Followup} match -key. If you say that you want to score on a (sub-)thread started by an article with a @code{Message-ID} @var{X}, then you add a -@samp{thread} match. This will add a new @samp{thread} match for each -article that has @var{X} in its @code{References} header. (These new -@samp{thread} matches will use the @code{Message-ID}s of these matching -articles.) This will ensure that you can raise/lower the score of an -entire thread, even though some articles in the thread may not have -complete @code{References} headers. Note that using this may lead to +key. If you say that you want to score on a (sub-)thread started by an +article with a @code{Message-ID} @var{x}, then you add a @samp{thread} +match. This will add a new @samp{thread} match for each article that +has @var{x} in its @code{References} header. (These new @samp{thread} +matches will use the @code{Message-ID}s of these matching articles.) +This will ensure that you can raise/lower the score of an entire thread, +even though some articles in the thread may not have complete +@code{References} headers. Note that using this may lead to undeterministic scores of the articles in the thread. (Using this match key will lead to creation of @file{ADAPT} files.) @end table @@ -13985,8 +14848,8 @@ A list. The elements in this list can be: @enumerate @item -@var{(regexp file-name)}. If the @var{regexp} matches the group name, -the @var{file-name} will will be used as the home score file. +@code{(@var{regexp} @var{file-name})}. If the @var{regexp} matches the +group name, the @var{file-name} will will be used as the home score file. @item A function. If the function returns non-nil, the result will be used as @@ -15777,10 +16640,10 @@ messages from the people you like. Each NoCeM message has a @dfn{type} header that gives the message a (more or less, usually less) rigorous definition. Common types are @samp{spam}, @samp{spew}, @samp{mmf}, @samp{binary}, and @samp{troll}. To specify this, you have to use -@var{(issuer conditions ...)} elements in the list. Each condition is -either a string (which is a regexp that matches types you want to use) -or a list on the form @code{(not STRING)}, where @var{string} is a -regexp that matches types you don't want to use. +@code{(@var{issuer} @var{conditions} @dots{})} elements in the list. +Each condition is either a string (which is a regexp that matches types +you want to use) or a list on the form @code{(not @var{string})}, where +@var{string} is a regexp that matches types you don't want to use. For instance, if you want all NoCeM messages from Chris Lewis except his @samp{troll} messages, you'd say: @@ -16588,6 +17451,7 @@ but at the common table.@* @menu * History:: How Gnus got where it is today. +* On Writing Manuals:: Why this is not a beginner's guide. * Terminology:: We use really difficult, like, words here. * Customization:: Tailoring Gnus to your needs. * Troubleshooting:: What you might try if things do not work. @@ -16891,6 +17755,12 @@ wrong show. Masanobu @sc{Umeda}---the writer of the original @sc{gnus}. @item +Shenghuo Zhu---uudecode.el, mm-uu.el, rfc1843.el, webmail.el, +nnwarchive and many, many other things connected with @sc{mime} and +other types of en/decoding, as well as general bug fixing, new +functionality and stuff. + +@item Per Abrahamsen---custom, scoring, highlighting and @sc{soup} code (as well as numerous other things). @@ -16901,10 +17771,6 @@ Luis Fernandes---design and graphics. Erik Naggum---help, ideas, support, code and stuff. @item -Shenghuo Zhu---uudecode.el, mm-uu.el, rfc1843.el and many other things -connected with @sc{mime} and other types of en/decoding. - -@item Wes Hardaker---@file{gnus-picon.el} and the manual section on @dfn{picons} (@pxref{Picons}). @@ -17667,7 +18533,7 @@ Process mark sets can be pushed and popped (@pxref{Setting Process Marks}). @item -A new mail-to-news backend makes it possible to post even when the NNTP +A new mail-to-news backend makes it possible to post even when the @sc{nntp} server doesn't allow posting (@pxref{Mail-To-News Gateways}). @item @@ -18972,7 +19838,7 @@ New limit command---limit to articles that have a certain string in the head or body. @item -Allow breaking lengthy NNTP commands. +Allow breaking lengthy @sc{nntp} commands. @item gnus-article-highlight-limit, to disable highlighting in big articles. @@ -19044,18 +19910,10 @@ Crossposted articles should "inherit" the % or @ mark from the other groups it has been crossposted to, or something. (Agent.) @item -`S D r' should allow expansion of aliases. - -@item If point is on a group that appears multiple times in topics, and you press `l', point will move to the first instance of the group. @item -Fetch by Message-ID from dejanews. - - - -@item A spec for the group line format to display the number of agent-downloaded articles in the group. @@ -19098,7 +19956,7 @@ Allow "orphan" scores in the Agent scoring. @item @example - - Edit article's summary line. + - Edit article's summary line. - End edit - Sort lines in buffer by subject @@ -19106,6 +19964,19 @@ 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. + +@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. + +@item +Be able to forward groups of messages as MIME digests. + @item Solve the halting problem. @@ -19176,6 +20047,26 @@ of the mysteries of this world, I guess.) @end iftex +@node On Writing Manuals +@section On Writing Manuals + +I guess most manuals are written after-the-fact; documenting a program +that's already there. This is not how this manual is written. When +implementing something, I write the manual entry for that something +straight away. I then see that it's difficult to explain the +functionality, so I write how it's supposed to be, and then I change the +implementation. Writing the documentation and writing the code goes +hand in hand. + +This, of course, means that this manual has no, or little, flow. It +documents absolutely everything in Gnus, but often not where you're +looking for it. It is a reference manual, and not a guide to how to get +started with Gnus. + +That would be a totally different book, that should be written using the +reference manual as source material. It would look quite differently. + + @page @node Terminology @section Terminology @@ -19518,9 +20409,10 @@ Gnus will work. @item Try doing an @kbd{M-x gnus-version}. If you get something that looks -like @samp{Gnus v5.46; nntp 4.0} 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.13.* (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. @item Read the help group (@kbd{G h} in the group buffer) for a FAQ and a @@ -19934,7 +20826,7 @@ on successful article retrieval. Get data on @var{group}. This function also has the side effect of making @var{group} the current group. -If @var{FAST}, don't bother to return useful data, just make @var{group} +If @var{fast}, don't bother to return useful data, just make @var{group} the current group. Here's an example of some result data and a definition of the same: @@ -20059,7 +20951,7 @@ There should be no result data from this function. Set/remove/add marks on articles. Normally Gnus handles the article marks (such as read, ticked, expired etc) internally, and store them in -@code{~/.newsrc.eld}. Some backends (such as IMAP) however carry all +@code{~/.newsrc.eld}. Some backends (such as @sc{imap}) however carry all information about the articles on the server, so Gnus need to propagate the mark information to the server. diff --git a/texi/message-ja.texi b/texi/message-ja.texi index 230380a..4657d7c 100644 --- a/texi/message-ja.texi +++ b/texi/message-ja.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message-ja -@settitle Message 6.10.072 Manual +@settitle T-gnus 6.13 Message Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -20,7 +20,7 @@ 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 Free Software Foundation, Inc. +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 @@ -60,14 +60,14 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Message 6.10.072 Manual +@title T-gnus 6.13 Message Manual @author by Lars Magne Ingebrigtsen @translated by members of Semi-gnus mailing-list @page @vskip 0pt plus 1filll -Copyright @copyright{} 1996 Free Software Foundation, Inc. +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 @@ -112,8 +112,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%;!< * Key Index:: $B%a%C%;!<%8%b!<%I%-!<$N0lMw!#(B @end menu -$B$3$N%^%K%e%"%k$O(B Message 6.10.072 $B$KBP1~$7$^$9!#(BMessage $B$O$3$N%^%K%e%"%k$H(B -$BF1$8HGHV9f$N(B Gnus $B$NG[I[$H6&$KG[I[$5$l$^$9!#(B +$B$3$N%^%K%e%"%k$O(B T-gnus 6.13 Message $B$KBP1~$7$^$9!#(BMessage $B$O$3$N%^%K%e(B +$B%"%k$HF1$8HGHV9f$N(B Gnus $B$NG[I[$H6&$KG[I[$5$l$^$9!#(B @node Interface @@ -215,7 +215,7 @@ Message $B$OJVEz$,2?=h$K9T$/$+$r7hDj$9$k$?$a$KIaDL$NJ}K!$r;H$$$^$9$,!"(B $B$K;H$o$l$^$9(B (@pxref{Reply})$B!#(B -@findex rmail-dont-reply-to-names +@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%X%C%@!<$+$iAw$5$l$k%a%C%;!<%8$NA0$KA^F~$5$l$k6h@Z$j$G$9!#=i4|CM$O(B @* -@samp{------- Start of forwarded message -------\n} $B$G$9!#(B - -@vindex message-forward-end-separator -@item message-forward-end-separator -$BE>Aw$5$l$k%a%C%;!<%8$N8e$KA^F~$5$l$k6h@Z$j$G$9!#=i4|CM$O(B @* -@samp{------- End of forwarded message -------\n} $B$G$9!#(B - -@item message-signature-before-forwarded-message -@vindex message-signature-before-forwarded-message -$B$b$7$3$NJQ?t$,(B @code{t} $B$G$"$k$H!"$=$l$,=i4|CM$G$9$,!"$"$J$?$N8D?ME*$J=p(B -$BL>$,E>Aw$5$l$k%a%C%;!<%8$NA0$KA^F~$5$l$^$9!#$b$7$=$&$G$J$1$l$P!"E>Aw$5$l(B -$B$k%a%C%;!<%8$O?7$7$$%a!<%k$N:G=i$KA^F~$5$l$^$9!#(B - -@item message-included-forward-headers -@vindex message-included-forward-headers -$B$3$l$O@55,I=8=$G!"$=$l$OE>Aw$5$l$k%a%C%;!<%8$K4^$^$l$k%X%C%@!<9T$K9gCW$9(B -$B$k$b$N$G$9!#(B +@item message-ignored-forward-headers +@vindex message-ignored-forward-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 @@ -329,6 +313,7 @@ Message $B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"(B * Header Commands:: $B%X%C%@!<$K0\F0$9$k$?$a$NL?Na!#(B * Movement:: $B%a%C%;!<%8%P%C%U%!$rF0$-2s$k!#(B * Insertion:: $B%a%C%;!<%8%P%C%U%!$KJ*;v$rA^F~$9$k!#(B +@c * MIME:: @sc{mime} considerations. * Various Commands:: $B$$$m$$$m$J;v!#(B * Sending:: $B$r;H$&$+!#(B @@ -435,6 +420,12 @@ Message $B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"(B $BE=$jIU$1$^$9!#IaDL$O(B @code{gnus-article-copy} $B$O$"$J$?$,JVEz$7$h$&$H$7$F(B $B$$$k%a%C%;!<%8$G$9(B (@code{messsage-yank-original})$B!#(B +@item C-c C-Y +@kindex C-c C-Y +@findex message-yank-buffer +Prompt for a buffer name and yank the contents of that buffer into the +message buffer (@code{message-yank-buffer}). + @item C-c C-q @kindex C-c C-q @findex message-fill-yanked-message @@ -450,6 +441,11 @@ u} (@code{undo}) $B$,;HMQ2DG=$G!"Bg>fIW$G$"$k$H8@$&;v$r3P$($F$*$$$F2<$5$$!#(B @findex message-insert-signature $B%P%C%U%!$N:G8e$K=pL>$rA^F~$7$^$9(B (@code{message-insert-signature})$B!#(B +@item C-c M-h +@kindex C-c M-h +@findex message-insert-headers +$B%a%C%;!<%8$N%X%C%@!<$rA^F~$7$^$9(B (@code{message-insert-headers})$B!#(B + @end table @table @code @@ -476,8 +472,7 @@ Hallvard B Furuseth writes: $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$7(B -$B$=$l$,(B @code{nil} $B$G$"$l$P!"%a%C%;!<%8$N;z2<$2$@$1$r$7$^$9!#(B +@code{message-yank-prefix} $B$rIU$1$i$l$^$9!#=i4|CM$O(B @samp{> } $B$G$9!#(B @item message-indentation-spaces @vindex message-indentation-spaces @@ -527,6 +522,27 @@ RFC1036bis $B$O!"=pL>$O$=$NA0$K(B @samp{-- } $B$N(B3$BJ8;z$@$1$N9T$,$"$k$Y$ $BF~$l$k;v$O!"3'$K$"$J$?$,GO!"(B $B%7%9%F%`L>$K4p$E$$$?B>$KL5$$(B ID $B$,:n@.$5$l$^$9!#(BMessage $B$O(B -@code{mail-host-address} $B$,Dj5A$5$l$F$$$l$P!"$=$l$r(B fully qualified -domain name (FQDN) ($B40A4$K>r7o$rK~$?$7$?%I%a%$%sL>(B) $B$H$7$F;H$$$^$9!#$b$7(B -$B$=$&$G$J$1$l$P!"$=$l$O(B @code{system-name} $B$r;H$$!"$=$l$O$$$/$D$+$N%^%7%s(B --- $B$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 @item X-Newsreader @cindex X-Nesreader @@ -935,6 +950,8 @@ domain name (FQDN) ($B40A4$K>r7o$rK~$?$7$?%I%a%$%sL>(B) $B$H$7$F;H$$$^$9!#$b$ $B2ql9g$O%X%C%@!<$r2C$($^$;$s!#(B diff --git a/texi/message.texi b/texi/message.texi index 6f6abd4..7543a26 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Message 6.10.072 Manual +@settitle T-gnus 6.13 Message Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Message 6.10.072 Manual +@title T-gnus 6.13 Message Manual @author by Lars Magne Ingebrigtsen @page @@ -83,7 +83,7 @@ Message mode buffers. * Key Index:: List of Message mode keys. @end menu -This manual corresponds to Message 6.10.072. Message is +This manual corresponds to T-gnus 6.13 Message. Message is distributed with the Gnus distribution bearing the same version number as this manual. @@ -188,8 +188,8 @@ but you can change the behavior to suit your needs by fiddling with the @code{message-wide-reply-to-function}. It is used in the same way as @code{message-reply-to-function} (@pxref{Reply}). -@findex rmail-dont-reply-to-names -Addresses that match the @code{rmail-dont-reply-to-names} regular +@findex message-dont-reply-to-names +Addresses that match the @code{message-dont-reply-to-names} regular expression will be removed from the @code{Cc} header. @@ -246,26 +246,9 @@ the message in the current buffer. If given a prefix, forward using news. @table @code -@item message-forward-start-separator -@vindex message-forward-start-separator -Delimiter inserted before forwarded messages. The default is@* -@samp{------- Start of forwarded message -------\n}. - -@vindex message-forward-end-separator -@item message-forward-end-separator -@vindex message-forward-end-separator -Delimiter inserted after forwarded messages. The default is@* -@samp{------- End of forwarded message -------\n}. - -@item message-signature-before-forwarded-message -@vindex message-signature-before-forwarded-message -If this variable is @code{t}, which it is by default, your personal -signature will be inserted before the forwarded message. If not, the -forwarded message will be inserted first in the new mail. - -@item message-included-forward-headers -@vindex message-included-forward-headers -Regexp matching header lines to be included in forwarded messages. +@item message-ignored-forward-headers +@vindex message-ignored-forward-headers +All headers that match this regexp will be deleted when forwarding a message. @item message-make-forward-subject-function @vindex message-make-forward-subject-function @@ -439,6 +422,12 @@ 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 (@code{message-yank-original}). +@item C-c C-Y +@kindex C-c C-Y +@findex message-yank-buffer +Prompt for a buffer name and yank the contents of that buffer into the +message buffer (@code{message-yank-buffer}). + @item C-c C-q @kindex C-c C-q @findex message-fill-yanked-message @@ -874,11 +863,10 @@ This optional header will be computed by Message. @findex system-name @cindex Sun This required header will be generated by Message. A unique ID will be -created based on the date, time, user name and system name. Message will -use @code{mail-host-address} as the fully qualified domain name (FQDN) -of the machine if that variable is defined. If not, it will use -@code{system-name}, which doesn't report a FQDN on some machines -- -notably Suns. +created based on the date, time, user name and system name. Message +will use @code{system-name} to determine the name of the system. If +this isn't a fully qualified domain name (FQDN), Message will use +@code{mail-host-address} as the FQDN of the machine. @item X-Newsreader @cindex X-Newsreader