Sync up with Pteroductyl Gnus v0.63
authorichikawa <ichikawa>
Fri, 4 Dec 1998 04:46:43 +0000 (04:46 +0000)
committerichikawa <ichikawa>
Fri, 4 Dec 1998 04:46:43 +0000 (04:46 +0000)
13 files changed:
ChangeLog
README.ichikawa
lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-picon.el
lisp/gnus.el
lisp/message.el
lisp/mm-decode.el
lisp/mml.el
texi/gnus-ja.texi
texi/gnus.texi
texi/message-ja.texi
texi/message.texi

index c9fdc34..fd851c2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-1998-12-04  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/nndraft.el (nndraft-request-article): Don't bind
-       `nnmail-file-coding-system'.
-
-1998-12-03  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.046.
-
-       * Sync up with Pterodactyl Gnus 0.61.
-
-1998-12-02  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.044.
-
-       * Sync up with Pterodactyl Gnus 0.58.
-
-1998-12-01  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.043.
-
-       * Sync up with Pterodactyl Gnus 0.57.
-
-1998-11-30  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.041.
-
-       * Sync up with Pterodactyl Gnus 0.55.
-
-1998-11-26  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.040.
-
-       * Sync up with Pterodactyl Gnus 0.54.
-
-1998-11-24  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <kei-suzu@mail.wbs.ne.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/message.el (message-mimic-kill-buffer): Rewrite.
-
-1998-11-18  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.036.
-
-       * Sync up with Pterodactyl Gnus 0.50.
-
-1998-11-18  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/message.el (message-mimic-kill-buffer): New function.
-       (message-mode-map): Use it for `C-x k'.
-
-1998-11-18  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>
-
-       * lisp/message.el (message-dont-send): Use `message-delete-frame'.
-
-1998-11-18  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.035.
-
-       * Sync up with Pterodactyl Gnus 0.49.
-
-1998-11-17  Tsukamoto Tetsuo  <czkmt@remus.dti.ne.jp>
-
-       * lisp/message.el (message-dont-send): Use `message-save-drafts'
-       instead of `save-buffer'.
-
-1998-11-17  Hiroaki Matsui  <matu@uxd.fc.nec.co.jp>
-
-       * lisp/message.el (message-clone-locals): Add
-       "user-mail-address" and "user-full-name" to matching pattern.
-
-1998-11-14  Kenji Itoh  <keit@tpj.co.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * make.bat: Replace line endings from `LF' to `CRLF'.
-
-1998-11-16  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.033.
-
-       * Sync up with Pterodactyl Gnus 0.48.
-
-1998-11-16  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.032.
-
-       * Sync up with Pterodactyl Gnus 0.47.
-
-1998-11-15  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.031.
-
-       * Sync up with Pterodactyl Gnus 0.46.
-
-1998-11-14  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.030.
-
-       * Sync up with Pterodactyl Gnus 0.44.
-
-1998-11-13  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus-offline.el: bug fix.
-
-       * lisp/gnus-ofsetup.el: Bug fix.
-
-1998-11-12  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * texi/Makefile.in (.texi:): Don't escape double quote.
-       (texi2latex.elc:): Ditto.
-
-1998-11-12  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * texi/gnus-ja.texi: Add infos about `pop3-fma' and `gnus-offline'.
-
-1998-11-12  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus-offline.el: bug fix.
-
-       * lisp/gnus-ofsetup.el: Bug fix.
-
-1998-11-11  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/message.el (message-send-mail): Protect against errors.
-       (message-send-news): Ditto.
-
-1998-11-11  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>
-
-       * 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  <kei-suzu@mail.wbs.ne.jp>
-
-       * 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  <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * README.semi.ja, README.branch.ja: New file.
-
-1998-11-10  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus-offline.el: bug fix.
-
-       * lisp/gnus-ofsetup.el: Bug fix.
-
-1998-11-09  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/pop3-fma.el: Set the value of `nnmail-read-passwd' as a
-       symbol `pop3-fma-read-passwd'.
-
-1998-11-09  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.029.
-
-       * Sync up with Pterodactyl Gnus 0.42.
-
-1998-11-09  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.028.
-
-       * Sync up with Pterodactyl Gnus 0.41.
-
-1998-11-06  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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  <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * lisp/message.el: (message-do-fcc): Don't run message-header-hook
-       and message-before-do-fcc-hook.
-
-1998-11-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/message.el (message-make-in-reply-to): Quote date.
-
-1998-11-02  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <kei-suzu@mail.wbs.ne.jp>
-
-       * lisp/gnus-bbdb.el (gnus-bbdb/update-record): Check existance of
-       `To' field before decoding.
-
-1998-10-30  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * README-gnus-bbdb.en: New file, translated by courtesy of
-       Hiroshi Kawaguchi <taicho@shiba.sony.co.jp>.
-
-1998-10-30  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el: Add autoload setting for `gnus-offline' and
-       `pop3-fma'.
-
-1998-10-30  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/pop3-fma.el: Determin base64 encode/decode function by FLIM.
-
-1998-10-26  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/pop3-fma.el: Require `mel-b-el' if `mel-b' does not exist.
-
-1998-10-26  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.027.
-
-       * Sync up with Pterodactyl Gnus 0.40.
-
-1998-10-23  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Use
-       `mime-fetch-field' for getting Subject and From field.
-
-1998-10-20  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * lisp/nnheader.el (nnheader-insert-nov): Use `mime-fetch-field'
-       for Subject and From field.
-
-1998-10-20  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/nnheader.el (nnheader-parse-nov): Use
-       `make-full-mail-header'.
-
-1998-10-20  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * lisp/nnheader.el (nnheader-parse-head): Use
-       `make-full-mail-header'.
-
-1998-10-20  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * lisp/nnheader.el (make-full-mail-header-from-decoded-header):
-       New function.
-
-1998-10-05  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * lisp/gnus-sum.el (gnus-update-summary-mark-positions): Use
-       `make-full-mail-header'.
-
-1997-11-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       (gnus-parse-headers-hook): Use
-       `(gnus-set-summary-default-charset)' in default.
-
-\f
-1998-10-21  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/gnus-xmas.el (gnus-tilde-pad-form): Guard for non string
-       symbol.
-
-1998-10-21  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * TODO.ja: Update.
-
-1998-10-15  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/uudecode.el: New file.
-
-1998-10-11  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/gnus-msg.el (gnus-message-make-user-agent): Fix typo in doc
-       string.
-
-1998-10-07  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * lisp/nnagent.el (nnagent-open-server): Small bug fix.
-
-1998-10-07  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>
-
-       * TODO.ja: New file.
-
-1998-10-06  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <kei-suzu@mail.wbs.ne.jp>
-
-       * 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   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/gnus-draft.el: Remove some useless comments.
-
-       * lisp/gnus-draft.el (gnus-draft-send-draft): Abolished.
-
-1998-10-05  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/message.el (message-mode-map): Use `define-key' instead of
-       `substitute-key-definition' for `message-kill-buffer'.
-
-1998-10-03  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/message.el: Fix my stupid changes.
-
-1998-09-30  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.022.
-
-       * Sync up with Pterodactyl Gnus 0.32.
-
-1998-09-24  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.021.
-
-       * Sync up with Pterodactyl Gnus 0.31.
-
-1998-09-23  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus-agent.el (gnus-agent-expire): Bug fix when variable
-       expired is nil.
-
-1998-09-18  Tsukamoto Tetsuo  <czkmt@remus.dti.ne.jp>
-
-       * lisp/gnus-draft.el: (gnus-draft-edit-message): Fix typo.
-
-1998-09-17  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <czkmt@remus.dti.ne.jp>
-
-       * lisp/gnus-draft.el (gnus-draft-send-draft): Expire queued message
-       after news posting.
-
-1998-09-17  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus-draft.el (gnus-draft-send-draft): Error if no
-       recipients.
-
-1998-09-17  Tsukamoto Tetsuo  <czkmt@remus.dti.ne.jp>
-
-       * lisp/gnus-draft.el (gnus-draft-decoding-function): Uncommented.
-
-1998-09-17  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.018.
-
-       * Sync up with Pterodactyl Gnus 0.26.
-
-1998-09-11  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.016.
-
-       * Sync up with Pterodactyl Gnus 0.24.
-
-1998-09-09  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.015.
-
-       * Sync up with Pterodactyl Gnus 0.23.
-
-1998-09-09  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.014.
-
-       * Sync up with Pterodactyl Gnus 0.22.
-
-1998-09-08  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.013.
-
-       * Sync up with Pterodactyl Gnus 0.19.
-
-1998-09-08  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.012.
-
-       * Sync up with Pterodactyl Gnus 0.18.
-
-1998-09-07  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.011.
-
-       * Sync up with Pterodactyl Gnus 0.17.
-
-1998-09-06  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.10.010.
-
-       * Sync up with Pterodactyl Gnus 0.16.
-
-1998-09-04  Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/pop3-fma.el (pop3-fma-movemail): Add error handle.
-       (pop3-fma-get-movemail-type): Fix typo.
-
-1998-09-04  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.9.09.
-
-       * Sync up with Pterodactyl Gnus 0.14.
-
-1998-09-03  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.9.07.
-
-       * Sync up with Pterodactyl Gnus 0.13.
-
-1998-08-31  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Try
-       "qualified" newsgroup name first.
-
-1998-08-28  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
-
-       * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Match
-       "real" newsgroup name; strip "backend+server" prefix.
-
-1998-08-28  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.16.
-
-       * Sync up with Gnus 5.6.41.
-
-1998-08-26  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.15.
-
-       * Sync up with Gnus 5.6.39.
-
-1998-08-20  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Update.
-
-1998-08-14  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.11.
-
-       * Sync up with Gnus 5.6.34.
-
-1998-08-12  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.10.
-
-       * Sync up with Gnus 5.6.33.
-
-1998-08-11  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.9.
-
-       * Sync up with Gnus 5.6.31.
-
-1998-08-10  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.8.
-
-       * Sync up with Gnus 5.6.30.
-
-1998-08-10  Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.7.
-
-1998-08-06  Katsumi Yamaoka <yamaoka@jpl.org>
-
-       * lisp/smtp.el: Do not insert empty line at the end of message.
-
-1998-08-06  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.6.
-
-       * Sync up with Gnus 5.6.29.
-
-1998-08-05  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <kei-suzu@mail.wbs.ne.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.5.
-
-       * Sync up with Gnus 5.6.28.
-
-1998-07-27  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.4.
-
-       * Sync up with Gnus 5.6.27.
-
-1998-07-27  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/message-ja.texi: Japanese translation of "message.texi".
-
-1998-07-26  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.3.
-
-       * Sync up with Gnus 5.6.26.
-
-1998-07-23  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
-
-       * 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   <ksk@ntts.com>
-
-       * texi/gnus-ja.texi: Add "Appendices".
-
-1998-07-21  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "Appendices".
-
-1998-07-16  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.8.1.
-
-       * Sync up with Gnus 5.6.24.
-
-1998-07-10  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>
-
-       * 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  <kei-suzu@mail.wbs.ne.jp>
-
-       * lisp/gnus-cite.el (gnus-cite-add-face): Fix problem when multi
-       bytes charactors are used in cite prefix.
-
-1998-07-07  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "The End".
-
-1998-07-06  Keisuke Mori   <ksk@ntts.com>
-
-       * texi/gnus-ja.texi: Add "Various".
-
-1998-07-06  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "Various".
-       * texi/gnus-ja.texi: Sync up with Gnus 5.6.22
-
-1998-07-02  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * lisp/message.el (message-header-format-alist): Repair to use
-       `message-fill-references' for References.
-
-1998-07-01  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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   <ksk@ntts.com>
-
-       * texi/gnus-ja.texi: Add "Scroing".
-
-1998-06-30  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "Scoring".
-
-1998-06-30  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.7.6.
-
-1998-06-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * lisp/gnus-art.el (gnus-mime-preview-quitting-method): Renamed
-       from `mime-preview-quitting-method-for-gnus'.
-
-1998-06-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * texi/gnus.texi, texi/message.texi, texi/ChangeLog: Sync up with
-       Gnus 5.6.13.
-
-1998-06-14  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * Sync up with Gnus 5.6.13.
-
-1998-06-24  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * texi/gnus-ja.texi, texi/gnus.texi (Using MIME): Modify
-       description about new display mechanism.
-
-1998-06-19  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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   <ksk@ntts.com>
-
-       * texi/gnus-ja.texi: Add "Select Methods".
-
-1998-06-18  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "Select Methods".
-
-1998-06-17  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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 <okabe@kuis.kyoto-u.ac.jp>
-
-1998-06-13  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/pop3-fma.el: New function pop3-fma-cypher-string
-       New variable pop3-fma-cypher-key
-
-1998-06-12  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * lisp/gnus.el (gnus-extract-address-components): Add
-       `std11-extract-address-components' as a choice.
-
-1998-06-06  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "Composing Messages".
-
-1998-06-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.3.3.
-
-       * Sync up with Gnus 5.6.11.
-
-1998-06-03  Keisuke Mori   <ksk@ntts.com>
-
-       * texi/gnus-ja.texi: Add "The Article Buffer".
-
-1998-06-03  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "The Summary Buffer".
-
-1998-06-02  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.3.2.
-
-       * Sync up with Gnus 5.6.10.
-
-1998-05-30  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
-
-       * README.semi: Add description of `shuhei-k' branch.
-
-1998-05-17  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.3.1.
-
-1998-05-17  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "The Active File".
-
-1998-05-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * lisp/lpath.el: Must add "flim" instead of "mel" to load-path.
-
-1998-05-03  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.2.3.
-
-       * Sync up with Gnus 5.6.6.
-
-1998-04-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * lisp/nnheader.el: Sync up with Gnus 5.6.5.
-
-1998-04-26  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * README.semi (How to get? (via CVS)): Modify descriptions about
-       TAG.
-
-1998-04-23  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.2.1.
-
-1998-04-23  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * texi/gnus-ja.texi: Fix typos.
-
-       * texi/gnus.texi: Modify for Semi-gnus.
-
-1998-04-23  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "Auto Save".
-
-1998-04-22  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "Startup Files".
-
-1998-04-21  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "Changing Servers".
-
-1998-04-20  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * texi/gnus-ja.texi: Modify styles.
-
-       * texi/gnus.texi: Modify for Semi-gnus (sync up with
-       gnus-ja.texi).
-
-1998-04-20  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: Add "New Groups".
-
-1998-04-20  Yoshiki Hayashi   <penny@tb3.so-net.ne.jp>
-
-       * texi/gnus-ja.texi: Modify styles.
-
-1998-04-18  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * texi/gnus-ja.texi: Check and modify for Semi-gnus.
-
-1998-04-18  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * texi/gnus-ja.texi: New file.
-
-1998-04-19  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.1.3.
-
-1998-04-19  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * lisp/gnus-art.el (gnus-following-method): New function; set up
-       for 'mime-view-following-method-alist.
-
-1998-04-18  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * texi/gnus.texi: Add and modify description for Semi-gnus.
-
-1998-04-16  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * texi/gnus.texi: "Gnus 5.6.4" -> "Semi-gnus 6.1.2".
-       (Top): "Gnus" -> "gnus".
-       (Starting Up): "Gnus" -> "gnus".
-
-1998-04-10  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
-
-       * lisp/ChangeLog, lisp/gnus-agent.el: Sync up with Gnus 5.6.4.
-
-1998-04-08  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * README.semi: Change descriptions of sending bug report.
-
-1998-03-20  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * lisp/gnus-art.el: Add setting for
-       `mime-raw-buffer-coding-system-alist'.
-
-1998-03-13  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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 <shuhei-k@jaist.ac.jp>
-
-       * 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  <t-ichi@po.shiojiri.ne.jp>
-
-       * lisp/gnus-ems.el: Change variable name
-       gnus-bdf-image-file to gnus-mule-bitmap-image-file.
-
-1998-02-28  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <t-ichi@niagara.shiojiri.ne.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * lisp/gnus.el, lisp/message.el: Sync up with qgnus-0.32.
-
-1998-02-23  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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 <christophe.broult@info.unicaen.fr>
-
-       * README.semi (How to get?): The command `update' must come before
-       `-r semi-gnus'. (cf. [tm-en:1559])
-
-1998-02-17  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to 6.0.5.
-
-1998-02-17  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * lisp/gnus-art.el (gnus-article-decode-rfc1522): Decode header by
-       localized code.
-
-1998-02-16  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * lisp/lpath.el: Require path-util; add load-path of APEL, MEL and
-       SEMI.
-
-1998-01-12  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * lisp/gnus.el (gnus-version-number): Update to version 6.0.3.
-
-1998-01-11  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * 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  <shuhei-k@jaist.ac.jp>
-
-       * 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  <morioka@jaist.ac.jp>
-
-       * README.semi: New file.
-
-       * lisp/gnus.el (gnus-version): Rename to "Semi-gnus".
-
-1997-11-28  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * lisp/gnus-draft.el (gnus-draft-decoding-function): New variable.
-       (gnus-draft-setup): Use `gnus-draft-decoding-function'.
-
-1997-11-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * 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'.
+1998-12-04  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.048.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.63.\r
+\r
+1998-12-04  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.047.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.62.\r
+\r
+       * README.ichikawa: Add description of required APEL/FLIM/SEMI.\r
+\r
+1998-12-03  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/nndraft.el (nndraft-request-article): Don't bind\r
+       `nnmail-file-coding-system'.\r
+\r
+1998-12-03  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.046.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.61.\r
+\r
+1998-12-02  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/smtp.el: Abolished - Use smtp.el in FLIM.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.045.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.59.\r
+\r
+1998-12-01  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.044.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.58.\r
+\r
+1998-12-01  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.043.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.57.\r
+\r
+1998-11-30  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/base64.el (base64-decode-region): Use `defun-maybe'.\r
+       (base64-encode-region): Ditto.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.042.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.56.\r
+\r
+1998-11-29  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-offline.el: Fix typo of DOC string.\r
+\r
+       * lisp/score-mode.el: Change default value\r
+       score-mode-coding-system 'binary to 'ctext.\r
+\r
+1998-11-28  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.041.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.55.\r
+\r
+1998-11-26  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-msg.el (gnus-summary-supersede-article): Bind\r
+       `gnus-message-setup-hook' to minimum setting.\r
+\r
+       * lisp/message.el (message-supersede-setup-for-mime-edit): New\r
+       function.\r
+       (message-supersede-setup-function): New user option. Use\r
+       `message-supersede-setup-for-mime-edit' in default.\r
+       (message-supersede): Call `message-supersede-setup-function' if it\r
+       is non-nil.\r
+       (message-supersede-setup-hook): New user option.\r
+\r
+       * lisp/message.el (message-bounce-setup-for-mime-edit): Don't\r
+       delete header separator. It is up to MIME-Edit to do so.\r
+\r
+1998-11-24  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.040.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.54.\r
+\r
+1998-11-24  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-offline.el (gnus-offline-version-number): Update to\r
+       2.00.\r
+\r
+       * lisp/pop3-fma.el (pop3-fma-save-password-information): New\r
+       variable. Do not save password information when\r
+       `pop3-fma-save-password-information' set to nil (in default).\r
+       (pop3-fma-encode-string): abolished - because of difference of\r
+       FLIM API.\r
+       (pop3-fma-decode-string): Ditto.\r
+\r
+1998-11-21  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.039.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.53.\r
+\r
+       * lisp/pop3-fma.el (pop3-fma-init-message-hook): Change\r
+       message-send-hook to mime-edit-translate-hook - enbug.\r
+\r
+1998-11-20  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-offline.el: Update to beta5.\r
+\r
+       * lisp/gnus-ofsetup.el: Update to beta5.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.038.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.52.\r
+\r
+1998-11-19  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/message.el (message-get-reply-buffer): Abolished.\r
+       (message-get-original-reply-buffer): Abolished.\r
+       (message-get-parameter): New inline function.\r
+       (message-get-parameter-with-eval): New macro.\r
+       (message-fetch-reply-field): Do not use `message-get-reply-buffer'.\r
+       (message-yank-original): Ditto.\r
+       (message-setup): Use `message-get-parameter'.\r
+       (message-mime-insert-article): Use\r
+       `message-get-parameter-with-eval' instead of\r
+       `message-get-original-reply-buffer'.\r
+\r
+       * lisp/gnus-msg.el (gnus-inews-add-send-actions): Do not add\r
+       `set-window-configuration' to action when\r
+       `message-use-multi-frames' is non-`nil'.\r
+\r
+1998-11-19  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.037.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.51.\r
+\r
+       * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Force set\r
+       `use-miee' to t if `news-method' is equal to "nnspool".\r
+       (gnus-setup-for-offline): Put a question for "Agent directory"\r
+       only if `gnus-offline-news-fetch-method' is equal to `nnagent'.\r
+       (Top-Level): Defvar `use-miee' for avoiding byte-compile warning.\r
+\r
+1998-11-18  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-sum.el (gnus-summary-save-article-rmail): Use\r
+       `gnus-summary-save-in-rmail' instead of\r
+       `rmail-output-to-rmail-file'.\r
+\r
+1998-11-18  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-mimic-kill-buffer): Rewrite.\r
+\r
+1998-11-18  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.036.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.50.\r
+\r
+1998-11-18  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-mimic-kill-buffer): New function.\r
+       (message-mode-map): Use it for `C-x k'.\r
+\r
+1998-11-18  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/message.el (message-dont-send): Use `message-delete-frame'.\r
+\r
+1998-11-18  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.035.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.49.\r
+\r
+1998-11-17  Tsukamoto Tetsuo  <czkmt@remus.dti.ne.jp>\r
+\r
+       * lisp/message.el (message-dont-send): Use `message-save-drafts'\r
+       instead of `save-buffer'.\r
+\r
+1998-11-17  Hiroaki Matsui  <matu@uxd.fc.nec.co.jp>\r
+\r
+       * lisp/message.el (message-clone-locals): Add\r
+       "user-mail-address" and "user-full-name" to matching pattern.\r
+\r
+1998-11-14  Kenji Itoh  <keit@tpj.co.jp>\r
+\r
+       * lisp/nnmail.el (nnmail-read-passwd): Use `read-passwd' if it\r
+       exists as a function.\r
+\r
+       * lisp/pop3.el (pop3-read-passwd): Ditto.\r
+\r
+1998-11-16  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.034.\r
+       (gnus-version): Modify for SEMI 1.11, FLIM 1.12.\r
+\r
+1998-11-16  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * make.bat: Replace line endings from `LF' to `CRLF'.\r
+\r
+1998-11-16  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.033.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.48.\r
+\r
+1998-11-16  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * texi/emacs-mime.texi: Fix iso-8859-1 chars.\r
+\r
+       * lisp/message.el (message-send-news): Call\r
+       `message-maybe-split-and-send-news' with an arg `method'.\r
+       (message-maybe-split-and-send-news): Accept an arg `method'.\r
+\r
+       * lisp/rfc1843.el: Defvar `gnus-decode-encoded-word-function'.\r
+\r
+       * lisp/mm-uu.el: Require `gnus-mailcap'.\r
+       * lisp/mm-decode.el: Require `gnus-mailcap' instead of `mailcap'.\r
+       * lisp/mm-encode.el: Ditto.\r
+       * lisp/gnus-mailcap.el: Provide `gnus-mailcap' instead of `mailcap'.\r
+\r
+1998-11-16  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.032.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.47.\r
+\r
+1998-11-15  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.031.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.46.\r
+\r
+1998-11-14  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.030.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.44.\r
+\r
+1998-11-13  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-art.el (gnus-article-header-presentation-method): Use\r
+       `mime-insert-header' instead of `mime-insert-decoded-header'.\r
+\r
+       * lisp/nnheader.el (nnheader-decode-subject): Change the 2nd arg of\r
+       `mime-find-field-decoder' to 'nov'.\r
+       (nnheader-decode-from): Ditto.\r
+\r
+       * lisp/message.el (message-maybe-split-and-send-mail): Discard\r
+       a return from `message-send-mail-function'.\r
+\r
+1998-11-12  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-offline.el: bug fix.\r
+\r
+       * lisp/gnus-ofsetup.el: Bug fix.\r
+\r
+1998-11-12  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * texi/Makefile.in (.texi:): Don't escape double quote.\r
+       (texi2latex.elc:): Ditto.\r
+\r
+1998-11-12  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * texi/gnus-ja.texi: Add infos about `pop3-fma' and `gnus-offline'.\r
+\r
+1998-11-12  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-maybe-split-and-send-mail): Use\r
+       `defsubst' instead of `defun'.\r
+       (message-maybe-split-and-send-news): Ditto.\r
+\r
+1998-11-12  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-msg.el (gnus-summary-resend-bounced-mail): Bind\r
+       `gnus-message-setup-hook' to minimum setting.\r
+\r
+       * lisp/message.el (message-bounce-setup-for-mime-edit): New\r
+       function.\r
+       (message-bounce-setup-function): New user option. Use\r
+       `message-bounce-setup-for-mime-edit' in default.\r
+       (message-bounce): Call `message-bounce-setup-function' if it is\r
+       non-nil.\r
+       (message-bounce-setup-hook): New user option.\r
+       (message-send-mail): Delete useless things.\r
+\r
+1998-11-12  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-maybe-split-and-send-mail): New function.\r
+       (message-send-mail): Use it.\r
+       (message-maybe-split-and-send-news): New function.\r
+       (message-send-news): Use it.\r
+\r
+1998-11-11  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-offline.el: bug fix.\r
+\r
+       * lisp/gnus-ofsetup.el: Bug fix.\r
+\r
+1998-11-11  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-send-mail): Protect against errors.\r
+       (message-send-news): Ditto.\r
+\r
+1998-11-11  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/message.el (message-do-fcc): Sync up with Semi-gnus 6.8.\r
+       (message-8bit-encoding-list): New variable.\r
+       (message-check-encoding): Use `message-8bit-encoding-list'. Change\r
+       search pattern.\r
+\r
+1998-11-11  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/gnus-bbdb.el (gnus-bbdb/extract-address-components): Normalize\r
+       return value.\r
+       (gnus-bbdb/update-record): Change condition for checking own message.\r
+\r
+1998-11-11  Yoshiki Hayashi  <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * README.semi.ja, README.branch.ja: New file.\r
+\r
+1998-11-10  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-offline.el: bug fix.\r
+\r
+       * lisp/gnus-ofsetup.el: Bug fix.\r
+\r
+1998-11-09  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-offline.el: v2.00b1 Separate setting part and\r
+       functional part - setting part move to gnus-ofsetup.el (New file).\r
+\r
+       * lisp/gnus-ofsetup.el: New file - setting function for\r
+       gnus-offline.\r
+\r
+1998-11-09  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/nnheader.el (nnheader-decode-subject): Call\r
+       `mime-find-field-decoder' with `summary' as the 2nd arg.\r
+       (nnheader-decode-from): Ditto.\r
+\r
+1998-11-09  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/pop3-fma.el: Set the value of `nnmail-read-passwd' as a\r
+       symbol `pop3-fma-read-passwd'.\r
+\r
+1998-11-09  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.029.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.42.\r
+\r
+1998-11-09  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.028.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.41.\r
+\r
+1998-11-06  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-art.el (gnus-article-make-full-mail-header): New\r
+       function.\r
+       (gnus-article-mime-edit-article-setup): Use it.\r
+       (gnus-article-mime-edit-exit): Use it.\r
+\r
+       (gnus-article-mime-edit-article-setup): Set `gnus-show-mime' to t.\r
+\r
+       * lisp/gnus-bbdb.el: Modify header description.\r
+\r
+1998-11-05  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-art.el (gnus-article-edit-done): Remove\r
+       `gnus-article-mime-edit-article-unwind' from\r
+       `gnus-article-mode-hook' before run `gnus-article-edit-exit'.\r
+       (gnus-article-mime-edit-article-setup): Revised.\r
+       (gnus-article-mime-edit-article-unwind): New function.\r
+       (gnus-article-mime-edit-exit): New function.\r
+\r
+       (gnus-insert-mime-button): Fix typo.\r
+\r
+1998-11-04  Yoshiki Hayashi  <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * lisp/message.el: (message-do-fcc): Don't run message-header-hook\r
+       and message-before-do-fcc-hook.\r
+\r
+1998-11-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/mmgnus.el (entity-buffer): Must move to (point-min) before\r
+       search boundary between header and body (to fix problem with\r
+       Emacs).\r
+\r
+1998-11-03  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/nnmh.el (nnmh-retrieve-headers): Don't use\r
+       `nnheader-fold-continuation-lines'.\r
+\r
+       * lisp/gnus-sum.el (gnus-get-newsgroup-headers): Don't expect\r
+       unfolded (to fix problem when using gnus-cache).\r
+\r
+1998-11-04  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-make-in-reply-to): Quote date.\r
+\r
+1998-11-02  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/gnus-bbdb.el (gnus-bbdb/canonicalize-full-name-methods):\r
+       New variable. (Merged from `mime-bbdb.el' in SEMI.)\r
+       (gnus-bbdb/extract-address-components): New function. (Merged from\r
+       `mime-bbdb.el' in SEMI.)\r
+       (gnus-bbdb/canonicalize-spaces): Ditto.\r
+       (gnus-bbdb/canonicalize-dots): Ditto.\r
+       (gnus-bbdb/update-record): Use\r
+       `gnus-bbdb/extract-address-components'.\r
+       (gnus-bbdb/lines-and-from): Ditto.\r
+       (gnus-bbdb/summary-get-author): Ditto.\r
+       (gnus-bbdb/summary-author-in-bbdb): Ditto.\r
+       (gnus-bbeb/decode-field-body-function): New variable.\r
+       (gnus-bbdb/decode-field-body): New macro.\r
+       (gnus-bbdb/update-record): Use `gnus-bbdb/decode-field-body'.\r
+       (gnus-bbdb/extract-field-value): Ditto.\r
+       (gnus-bbdb/decode-field-body-function): Fix typo.\r
+       (gnus-bbdb/decode-field-body): Ditto.\r
+       (gnus-bbdb/update-record): Use `save-excursion' and change timing\r
+       of `save-restriction'.\r
+\r
+1998-10-31  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-decoding-function): Use\r
+       `mime-edit-decode-message-in-buffer' instead of\r
+       `mime-edit-decode-buffer'.\r
+\r
+1998-10-31  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/nnheader.el (nnheader-decode-field-body): New inline\r
+       function.\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-decoding-function): Use\r
+       `mime-edit-decode-buffer' and `mime-decode-header-in-buffer'.\r
+\r
+       * lisp/gnus-bbdb.el (gnus-bbdb/update-record): Use\r
+       `nnheader-decode-field-body' instead of `mime-decode-field-body'.\r
+       (gnus-bbdb/extract-field-value): Ditto.\r
+\r
+1998-10-30  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/gnus-bbdb.el (gnus-bbdb/update-record): Check existance of\r
+       `To' field before decoding.\r
+\r
+1998-10-30  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * README-gnus-bbdb.en: New file, translated by courtesy of\r
+       Hiroshi Kawaguchi <taicho@shiba.sony.co.jp>.\r
+\r
+1998-10-30  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/dgnushack.el (dgnushack-compile): Add `gnus-bbdb.el'.\r
+\r
+       * lisp/gnus-bbdb.el: New file. By courtesy of Keiichi Suzuki.\r
+       * README-gnus-bbdb.ja: Ditto (A part of Nana-TIPS.ja).\r
+\r
+1998-10-30  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el: Add autoload setting for `gnus-offline' and\r
+       `pop3-fma'.\r
+\r
+1998-10-30  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-art.el (article-decode-encoded-words): Use\r
+       `mime-decode-header-in-buffer' instead of `eword-decode-header'.\r
+       (gnus-article-display-message-with-encoded-word): Likewise.\r
+\r
+       * lisp/gnus-art.el (gnus-article-mime-edit-article-setup): Fix\r
+       typo.\r
+\r
+1998-10-29  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-decoding-function): Use\r
+       `mime-edit-decode-buffer' simply as initial value.\r
+\r
+       * lisp/message.el (message-make-forward-subject): Use\r
+       `nnheader-decode-subject' instead of\r
+       `eword-decode-unstructured-field-body'.\r
+\r
+       * lisp/nnheader.el (nnheader-decode-subject): New alias.\r
+       (nnheader-decode-from): New alias.\r
+       (make-full-mail-header): Use `nnheader-decode-subject' and\r
+       `nnheader-decode-from' instead of\r
+       `eword-decode-and-unfold-unstructured-field' and\r
+       `eword-decode-and-unfold-structured-field'.\r
+\r
+1998-10-29  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-art.el (gnus-article-mime-edit-article-setup): Force\r
+       `font-lock' to turn on at the beginning. Turn off `font-lock'\r
+       after editing article.\r
+\r
+1998-10-29  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-sum.el (gnus-summary-edit-article-done): Abolish\r
+       `gnus-article-decoded-p'.\r
+\r
+       * lisp/nnheader.el: Delete useless comments.\r
+\r
+       * lisp/gnus-art.el (gnus-article-edit-article): Call\r
+       `gnus-article-edit-article-setup-function' if it is non nil.\r
+       (gnus-article-mime-edit-article-setup): New function.\r
+       (gnus-article-mime-edit-article-setup-hook): New hook.\r
+       (gnus-article-edit-article-setup-function): New user option. Use\r
+       `gnus-article-mime-edit-article-setup' in default.\r
+\r
+1998-10-28  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/pop3-fma.el: Determin base64 encode/decode function by FLIM.\r
+\r
+1998-10-26  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/pop3-fma.el: Require `mel-b-el' if `mel-b' does not exist.\r
+\r
+1998-10-26  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/pop3-fma.el: Require `mel-b-ccl' or `mel-b-el' if `mel-b'\r
+       does not exist.\r
+\r
+       * lisp/nnheader.el (nnheader-file-coding-system): Restore the\r
+       previous default value.\r
+\r
+1998-10-26  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.027.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.40.\r
+\r
+1998-10-23  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.026.\r
+       (gnus-version): Modify supported version for FLIM and SEMI.\r
+\r
+1998-10-22  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Use\r
+       `mime-fetch-field' for getting Subject and From field.\r
+\r
+1998-10-20  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/nnheader.el (nnheader-insert-nov): Use `mime-fetch-field'\r
+       for Subject and From field.\r
+\r
+1998-10-20  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/nnheader.el (nnheader-parse-nov): Use\r
+       `make-full-mail-header'.\r
+\r
+1998-10-20  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/nnheader.el (nnheader-parse-head): Use\r
+       `make-full-mail-header'.\r
+\r
+1998-10-20  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/nnheader.el (make-full-mail-header): Sync up with\r
+       "chao-6_9" branch.\r
+       (mail-header-set-xref): Use `mime-entity-set-xref-internal'.\r
+       (mail-header-xref): Use `mime-entity-xref-internal'\r
+       (mail-header-set-lines): mime-entity-set-lines-internal'.\r
+       (mail-header-lines): Use `mime-entity-lines-internal'\r
+       (mail-header-set-chars): Use `mime-entity-set-chars-internal'.\r
+       (mail-header-chars): Use `mime-entity-chars-internal'.\r
+       (mail-header-set-references): Use\r
+       `mime-entity-set-references-internal'.\r
+       (mail-header-references): Use `mime-entity-references-internal'.\r
+       (mail-header-set-message-id): Use\r
+       `mime-entity-set-message-id-internal'.\r
+       (mail-header-message-id): Use `mime-entity-message-id-internal'.\r
+       (mail-header-set-date): Use `mime-entity-set-date-internal'.\r
+       (mail-header-date): Use `mime-entity-date-internal'.\r
+       (mail-header-set-from): Use\r
+       `mime-entity-set-decoded-from-internal'.\r
+       (mail-header-from): Use `mime-entity-decoded-from-internal'.\r
+       (mail-header-set-subject): Use\r
+       `mime-entity-set-decoded-subject-internal'.\r
+       (mail-header-subject): Use `mime-entity-decoded-subject-internal'.\r
+       All changes are imported from "chao-6_9" branch.\r
+\r
+       * lisp/message.el (message-reply): Use\r
+       `make-full-mail-header-from-decoded-header`.\r
+       (message-followup): Ditto.\r
+       (message-get-reply-buffer-function): Abolished.\r
+       (message-fill-address): Don't fold if the current column number is\r
+       less than 79.\r
+\r
+       * lisp/gnus-sum.el (gnus-summary-insert-line): Use\r
+       `gnus-put-text-property-excluding-characters-with-faces' instead\r
+       of `gnus-put-text-property'.\r
+       (gnus-summary-mode-map): Abolish key definition\r
+       "b" for `gnus-article-view-part'.\r
+       (gnus-encoded-word-method-alist): Abolished.\r
+       (gnus-multi-decode-encoded-word-string) Abolished.\r
+\r
+       * lisp/gnus-int.el (gnus-request-replace-article): Don't encode\r
+       message body.\r
+\r
+       * lisp/gnus-i18n.el (gnus-get-summary-default-charset): Abolished.\r
+       (gnus-set-summary-default-charset): Sync up with "chao-6_9" branch.\r
+\r
+       * lisp/gnus-art.el (gnus-article-display-method-for-encoded-word):\r
+       Abolished.\r
+       (gnus-article-display-message-with-encoded-word): Abolished.\r
+\r
+1998-10-14  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-sum.el (gnus-summary-line-format-alist): Use\r
+       `mime-read-field', `std11-address-string' and\r
+       `std11-full-name-string' instead of\r
+       `gnus-extract-address-components'.\r
+       (gnus-article-sort-by-author): Likewise.\r
+\r
+1998-10-12  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/nnheader.el (make-full-mail-header-from-decoded-header):\r
+       New function.\r
+\r
+1998-10-05  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el (gnus-article-display-mime-message): Set up\r
+       buffer local variable `default-mime-charset' of\r
+       `gnus-original-article-buffer' and `gnus-article-buffer'.\r
+\r
+1998-09-30  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/nnheader.el: Use `mime-entity' as gnus-header structure.\r
+       (mail-header-number): Use `mime-entity-location-internal'.\r
+       (mail-header-set-number): Use `mime-entity-set-location-internal'.\r
+       - Change other `mail-header-*' and `mail-header-set-*' to alias of\r
+       reference and set functions for mime-entity-internal.\r
+\r
+       * lisp/mmgnus.el: New module.\r
+\r
+       * lisp/gnus-sum.el: Abolish variable\r
+       `gnus-structured-field-decoder' and\r
+       `gnus-unstructured-field-decoder'.\r
+       (gnus-nov-parse-line): Don't decode from and subject.\r
+       (gnus-get-newsgroup-headers): Likewise.\r
+\r
+       * lisp/gnus-score.el (gnus-header-index): Modify to use\r
+       mime-entity structure as gnus-header structure.\r
+\r
+       * lisp/gnus-art.el (gnus-article-prepare-display): Use content of\r
+       `gnus-current-headers' as mime-message-structure.\r
+\r
+1998-09-29  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-sum.el (gnus-update-summary-mark-positions): Use\r
+       `make-full-mail-header'.\r
+\r
+1997-11-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       (gnus-parse-headers-hook): Use\r
+       `(gnus-set-summary-default-charset)' in default.\r
+\r
+\f\r
+1998-10-21  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-xmas.el (gnus-tilde-pad-form): Guard for non string\r
+       symbol.\r
+\r
+1998-10-21  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.025.\r
+       (gnus-version): Fix supported version for FLIM and SEMI.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.36.\r
+\r
+1998-10-20  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.024.\r
+       Fix supported version for FLIM and SEMI.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.35.\r
+\r
+1998-10-17  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-offline.el (gnus-offline-setup-needed-hooks): Change\r
+       message-send-hook to mime-edit-translate-hook.\r
+\r
+       * lisp/pop3-fma.el (pop3-fma-init-message-hook): Change\r
+       message-send-hook to mime-edit-translate-hook.\r
+\r
+       * lisp/message.el (message-save-drafts): New function to save\r
+       drafts in network code.\r
+\r
+1998-10-16  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-msg.el (gnus-message-setup-hook): Replace the default\r
+       value to `gnus-maybe-setup-default-charset'.\r
+       (gnus-maybe-setup-default-charset): New function. It is called\r
+       `message-maybe-setup-default-charset' at one time.\r
+\r
+       * lisp/message.el (message-maybe-setup-default-charset): Abolished.\r
+\r
+1998-10-16  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * TODO.ja: Update.\r
+\r
+1998-10-15  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/gnus-spec.el (gnus-update-format-specifications): Force\r
+       update `gnus-format-specs' when `gnus-version' is differ from\r
+       saved version.\r
+\r
+1998-10-14  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/pop3-fma.el (pop3-fma-read-char-exclusive): New macro. Use\r
+       `next-command-event' instead of `read-char-exclusive' under XEmacs.\r
+       (pop3-fma-read-noecho): Use it.\r
+\r
+1998-10-13  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/nnheaderxm.el (nnheader-xmas-Y-or-n-p): New function.\r
+       It will be used for the substitute of `nnheader-Y-or-n-p' under\r
+       XEmacs.\r
+\r
+       * lisp/nnheader.el (nnheader-Y-or-n-p): Rewrite for Emacs 19 or\r
+       later except for XEmacs.\r
+\r
+1998-10-12  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/uudecode.el: New file.\r
+\r
+1998-10-11  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.023.\r
+       Add version information for SEMI-1.9/FLIM-1.10.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.34.\r
+\r
+1998-10-10  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-msg.el (gnus-message-make-user-agent): Fix typo in doc\r
+       string.\r
+\r
+1998-10-07  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * lisp/nnagent.el (nnagent-open-server): Small bug fix.\r
+\r
+1998-10-07  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * TODO.ja: New file.\r
+\r
+1998-10-06  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-mime-insert-article): Don't refer to\r
+       `mark' position.\r
+\r
+       * lisp/message.el (message-mime-insert-article): If the optional\r
+       arg FULL-HEADERS is non-nil, include full headers when inserting.\r
+\r
+1998-10-06  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/message.el (message-parameter-alist): New variable.\r
+       (message-startup-parameter-alist):  New variable.\r
+       (message-fetch-reply-field): Get reply buffer with\r
+       `message-get-reply-buffer()'.\r
+       (message-yank-original): Ditto.\r
+       (message-eval-parameter): New function.\r
+       (message-get-reply-buffer): Ditto.\r
+       (message-get-original-reply-buffer): Ditto.\r
+       (message-mode): New buffer local variable\r
+       `message-parameter-alist'.\r
+       (message-setup): Set up `message-reply-buffer' from\r
+       `message-parameter-alist'.\r
+       (message-mime-insert-article): Get `Original message buffer' with\r
+       `message-get-original-reply-buffer' instead of\r
+       `gnus-original-article-buffer'.\r
+       Remove bogus header fields for forwarding message.\r
+\r
+       * lisp/gnus-msg.el (gnus-setup-message): Setup\r
+       `message-startup-parameter-alist'.\r
+\r
+1998-10-05  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-info-filename): New variable.\r
+       (gnus-info-find-node): Use `gnus-info-filename' and\r
+       `current-language-environment'.\r
+\r
+1998-10-05  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-send-mail): Remove misplaced\r
+       `interactive'.\r
+\r
+       * lisp/message.el (message-yank-original): Get back to the previous\r
+       state.\r
+       (message-fetch-reply-field): Ditto.\r
+       (message-setup): Ditto.\r
+       * lisp/gnus-msg.el (gnus-setup-message): Ditto.\r
+\r
+1998-10-05  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-draft.el: Remove some useless comments.\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-send-draft): Abolished.\r
+\r
+1998-10-05  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-yank-original):  Use the value of\r
+       `message-reply-buffer' as a function if it is a function.\r
+       (message-fetch-reply-field): Ditto.\r
+\r
+       * lisp/message.el (message-setup): Set the value of\r
+       `message-reply-buffer' if the variable\r
+       `gnus-message-get-reply-buffer' exists.\r
+\r
+       * lisp/gnus-msg.el (gnus-setup-message): Bind\r
+       `gnus-message-get-reply-buffer' as the function\r
+       `gnus-copy-article-buffer'.\r
+\r
+1998-10-03  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-send): Call\r
+       `message-send-news-function' or `message-send-mail-function'\r
+       instead of `message-send-and-exit'.\r
+\r
+1998-10-03  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-mode-map): Use `define-key' instead of\r
+       `substitute-key-definition' for `message-kill-buffer'.\r
+\r
+1998-10-03  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-make-user-agent): Replace with the\r
+       new code again. It is based on MORIOKA-san's code.\r
+\r
+1998-10-03  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-make-user-agent): Replace with the\r
+       new code.\r
+\r
+       * lisp/gnus-msg.el (gnus-message-make-user-agent): New function.\r
+\r
+       * lisp/gnus-msg.el (gnus-extended-version): Needn't be interactive.\r
+\r
+       * lisp/gnus-msg.el (gnus-inviolable-extended-version): Abolished.\r
+\r
+1998-10-03  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-kill-buffer): Change the prompt string.\r
+\r
+       * lisp/message.el (message-mode-map): Substitute key definition\r
+       from `kill-buffer' to `message-kill-buffer'.\r
+\r
+1998-10-03  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-msg.el (gnus-message-setup-hook): Set the default value\r
+       to `message-maybe-setup-default-charset'.\r
+\r
+       * lisp/message.el (message-setup-hook): Move\r
+       'message-maybe-setup-default-charset' to `gnus-message-setup-hook'.\r
+\r
+1998-10-02  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-kill-buffer): Refer to\r
+       `message-kill-buffer-query-function'.\r
+\r
+       * lisp/message.el (message-kill-buffer-query-function): New user\r
+       option.\r
+\r
+       * lisp/nnheader.el (nnheader-Y-or-n-p): New function.\r
+\r
+1998-10-01  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/pop3-fma.el (pop3-fma-movemail): Bug fix.\r
+       Delete variable pop3-fma-movemail options.\r
+       Add new variabel pop3-fma-commandline-arguments.\r
+\r
+1998-10-01  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el: Fix my stupid changes.\r
+\r
+1998-09-30  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-make-user-agent): Add the value of\r
+       `system-configuration' to Emacs and XEmacs as a comment.\r
+\r
+       * lisp/message.el (message-make-user-agent): Fold up the return\r
+       value if the optional arg MAX-COLUMN is specified.\r
+\r
+1998-09-29  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-make-user-agent): Make a user-agent\r
+       string without MUA info, if the value of `message-user-agent' is\r
+       nil nor `gnus-inviolable-extended-version' is not exists.\r
+\r
+1998-09-28  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/nnmh.el (nnmh-request-accept-article): Insert `Message-ID'\r
+       only if `group' name is neither "queue" nor "draft".\r
+       Fix typo (at 23:25).\r
+\r
+       * lisp/message.el (message-send-mail): Add different Message-ID in\r
+       each message/partial\r
+\r
+1998-09-26  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * texi/gnus-ja.texi: Sync up with Semi-gnus 6.8.19.\r
+\r
+       * lisp/gnus.el: Add autoload setting for\r
+       `gnus-quote-arg-for-sh-or-csh'.\r
+\r
+1998-09-26  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-sum.el (gnus-summary-insert-pseudos): Use\r
+       `gnus-quote-arg-for-sh-or-csh' instead of `mm-quote-arg'.\r
+\r
+       * lisp/nndoc.el (nndoc-possibly-change-buffer): Don't eval\r
+       `mm-enable-multibyte'.\r
+       * lisp/nnmbox.el (nnmbox-possibly-change-newsgroup): Ditto.\r
+\r
+1998-09-25  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.022.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.32.\r
+\r
+1998-09-24  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.021.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.31.\r
+\r
+1998-09-23  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-make-user-agent): Add extended version\r
+       number to Emacs/{VERSION} (e.g. "Emacs/20.3.90").\r
+\r
+1998-09-22  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-agent.el (gnus-agent-expire): Bug fix when variable\r
+       expired is nil.\r
+\r
+1998-09-18  Tsukamoto Tetsuo  <czkmt@remus.dti.ne.jp>\r
+\r
+       * lisp/gnus-draft.el: (gnus-draft-edit-message): Fix typo.\r
+\r
+1998-09-17  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-make-user-agent): Use\r
+       `gnus-inviolable-extended-version' if `message-user-agent' is nil.\r
+\r
+       * lisp/message.el (message-make-user-agent): In message-mode, make\r
+       the most of the `User-Agent' field value if already exists.\r
+\r
+       * lisp/gnus-msg.el (gnus-inviolable-extended-version): New constant.\r
+\r
+       * lisp/gnus-msg.el (gnus-extended-version): Remove trailing white\r
+       space.\r
+\r
+1998-09-17  Tsukamoto Tetsuo  <czkmt@remus.dti.ne.jp>\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-send-draft): Expire queued message\r
+       after news posting.\r
+\r
+1998-09-17  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-send-draft): Error if no\r
+       recipients.\r
+\r
+1998-09-17  Tsukamoto Tetsuo  <czkmt@remus.dti.ne.jp>\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-decoding-function): Uncommented.\r
+\r
+1998-09-17  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-edit-message): Use\r
+       `gnus-draft-setup-for-editing' instead of `gnus-draft-setup'.\r
+       (gnus-draft-send): Use `gnus-draft-setup-for-sending' instead of\r
+       `gnus-draft-setup'.\r
+       (gnus-draft-setup-for-editing): New function (renamed from\r
+       `gnus-draft-setup').\r
+       (gnus-draft-setup-for-sending): New function.\r
+       (gnus-draft-send-draft-buffer): New variable.\r
+\r
+1998-09-16  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * texi/gnus-ja.texi: Sync up with Semi-gnus 6.8.18.\r
+\r
+       * Makefile.in: Add entry `info-ja'.\r
+       * texi/Makefile.in: Add entry `ja'.\r
+\r
+1998-09-16  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.020.\r
+\r
+       * lisp/ietf-drums.el: New file.\r
+       * lisp/date.el: Abolished.\r
+       * lisp/mm.el: Abolished.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.31.\r
+\r
+1998-09-14  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-encode-message-body): Copied from\r
+       Pterodactyl Gnus 0.30. It is useless for Semi-gnus but usefull for\r
+       reducing differences while at work for synchronizing up. It will\r
+       be removed when the Gnus becomes stable.\r
+       * lisp/gnus-art.el (gnus-mime-display-alternative)\r
+       (gnus-display-mime) (gnus-widget-press-button)\r
+       (gnus-insert-mime-button) (gnus-mime-copy-part)\r
+       (gnus-mime-view-part) (gnus-mime-pipe-part) (gnus-mime-save-part)\r
+       (gnus-mime-button-map) (gnus-mime-button-line-format-alist)\r
+       (gnus-mime-button-line-format)\r
+       (article-mime-decode-quoted-printable-buffer)\r
+       (article-de-quoted-unreadable) (article-decode-charset)\r
+       (article-decode-mime-words) (gnus-decode-header-function)\r
+       (gnus-display-mime-function): Ditto.\r
+\r
+1998-09-14  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-art.el (article-decode-encoded-words): Renamed from\r
+       `gnus-article-decode-rfc1522'.\r
+\r
+       * lisp/mail-parse.el: New file.\r
+       * lisp/mm-view.el: New file.\r
+       * lisp/rfc2231.el: New file.\r
+       * texi/emacs-mime.texi: New file.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.019.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.30.\r
+\r
+1998-09-11  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.018.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.26.\r
+\r
+1998-09-11  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.017.\r
+\r
+       * lisp/gnus-art.el (gnus-show-mime) (gnus-summary-toggle-mime):\r
+       Revived.\r
+\r
+       * lisp/gnus-mailcap.el: New file. Renamed from `mailcap.el'.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.25.\r
+\r
+1998-09-11  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-art.el (article-make-date-line): Add TZ value to\r
+       `local' and `ut' date.\r
+\r
+       * lisp/gnus-art.el (article-make-date-line): Fix `ut' date.\r
+\r
+       * lisp/parse-time.el (parse-time-string): The last element of the\r
+       return list should be TZ.\r
+\r
+       * lisp/message.el (message-send): Eval 'message-fix-before-sending'\r
+       after encoding.\r
+\r
+1998-09-10  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-spec.el (gnus-tilde-pad-form): Use old macro form.\r
+\r
+       * lisp/gnus-art.el (article-decode-mime-words): Abolished.\r
+\r
+1998-09-10  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.016.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.24.\r
+\r
+1998-09-09  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.015.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.23.\r
+\r
+1998-09-09  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.014.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.22.\r
+\r
+1998-09-08  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.013.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.19.\r
+\r
+1998-09-08  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-send-draft) (gnus-draft-send): New\r
+       implementations for testing.\r
+\r
+       * lisp/gnus-agent.el (gnus-agent-expire) (gnus-agent-fetch-headers)\r
+       (gnus-agent-flush-cache) (gnus-agent-save-history)\r
+       (gnus-agent-save-groups): Bind `coding-system-for-write' by\r
+       `gnus-agent-file-coding-system' while writing a file.\r
+\r
+       * lisp/gnus-agent.el (gnus-agent-file-coding-system): Renamed from\r
+       `gnus-agent-article-file-coding-system'.\r
+\r
+1998-09-08  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.012.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.18.\r
+\r
+1998-09-07  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-setup): Do not use message mode.\r
+       (gnus-draft-send): Ditto.\r
+       gnus-draft-send-draft-buffer: New variable.\r
+\r
+       * lisp/gnus-msg.el (gnus-extended-version): Display original Gnus\r
+       version.\r
+\r
+       * lisp/gnus-agent.el : Use pGnus 0.17 gnus-agent.el\r
+\r
+1998-09-07  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-continuum-version): Use `char-int' instead of\r
+       `mm-char-int'.\r
+       * lisp/messagexmas.el (message-xmas-make-caesar-translation-table):\r
+       Ditto.\r
+\r
+       * lisp/gnus-art.el (gnus-article-setup-buffer): Don't use\r
+       `mm-enable-multibyte'.\r
+\r
+1998-09-07  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.011.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.17.\r
+\r
+1998-09-06  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.10.010.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.16.\r
+\r
+1998-09-04  Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/pop3-fma.el (pop3-fma-movemail): Add error handle.\r
+       (pop3-fma-get-movemail-type): Fix typo.\r
+\r
+1998-09-04  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.9.09.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.14.\r
+\r
+1998-09-03  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/nndoc.el (nndoc-transform-mime-parts): Insert\r
+       "MIME-Version:" instead of "Mime-Version:".\r
+\r
+       * lisp/message.el (message-encode-message-body): Abolished.\r
+\r
+       * lisp/message.el: Don't require `rfc2047'.\r
+\r
+       * lisp/gnus.el: Delete autoload settings for `qp' and `rfc2047'.\r
+\r
+       * lisp/gnus.el (semi-gnus-developers): New constant.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.9.08.\r
+\r
+       * lisp/gnus-xmas.el (gnus-tilde-pad-form): Move to\r
+       `gnus-xmas-redefine' from `gnus-xmas-define'.\r
+\r
+       * lisp/gnus-sum.el (gnus-set-mode-line): Use `gnus-truncate-string'\r
+       instead of `truncate-string'.\r
+\r
+       * lisp/gnus-sum.el: Don't define menu for "MIME".\r
+\r
+       * lisp/gnus-sum.el: Delete key definitions for\r
+       `gnus-article-decode-mime-words' and `gnus-article-decode-charset'.\r
+\r
+       * lisp/gnus-spec.el (gnus-tilde-pad-form): New function for the\r
+       benefit of avoiding byte-compile warning.\r
+\r
+       * lisp/gnus-soup.el (gnus-soup-send-packet): Set\r
+       `message-user-agent' instead of `message-newsreader'.\r
+\r
+       * lisp/message.el (message-set-work-buffer) (message-mode):  Don't\r
+       use `mm-enable-multibyte'.\r
+       * lisp/gnus-util.el (gnus-set-work-buffer): Ditto.\r
+       * lisp/gnus-sum.el (gnus-summary-mode): Ditto.\r
+       * lisp/gnus-msg.el (gnus-copy-article-buffer): Ditto.\r
+       * lisp/gnus-art.el (gnus-article-mode): Ditto.\r
+\r
+       * lisp/gnus-art.el (gnus-article-decode-mime-words)\r
+       (gnus-article-decode-charset) (gnus-decode-rfc1522)\r
+       (article-decode-rfc1522) (article-de-quoted-unreadable)\r
+       (article-mime-decode-quoted-printable-buffer): Abolished.\r
+\r
+       * lisp/message.el: Don't require `mm-bodies'.\r
+       * lisp/gnus-art.el: Ditto.\r
+\r
+       * lisp/gnus-agent.el (gnus-category-line-format-alist): Change\r
+       variable name `name' and `groups' to `gnus-tmp-name' and\r
+       `gnus-tmp-groups'.\r
+       (gnus-category-insert-line): Ditto.\r
+\r
+       * lisp/gnus-agent.el (gnus-agent-fetch-articles): Delete useless\r
+       binding variables.\r
+\r
+1998-09-01  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.9.07.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.13.\r
+\r
+1998-08-31  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.9.04.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.10.\r
+\r
+       * lisp/gnus-agent.el : back to version Gnus 5.6.32.\r
+\r
+1998-08-31  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/rfc1522.el: Abolished.\r
+\r
+       * lisp/message.el: (message-send-mail) (message-send-news): Don't\r
+       use `mm-encode-message-header'.\r
+\r
+       * lisp/gnus.el: Delete autoload settings for\r
+       `hexl-hex-string-to-integer', `mm-decode-words-region',\r
+       `mm-decode-words-string', `gnus-hack-decode-rfc1522',\r
+       `gnus-article-de-quoted-unreadable', `gnus-decode-rfc1522' and\r
+       `article-decode-rfc1522'.\r
+\r
+       * lisp/gnus-sum.el: Delete key definitions for\r
+       `gnus-article-decode-mime-words', `gnus-article-decode-mime-words'\r
+       and `gnus-article-de-quoted-unreadable'.\r
+\r
+       * lisp/gnus-art.el (gnus-article-decode-mime-words)\r
+       (gnus-decode-rfc1522) (article-de-quoted-unreadable)\r
+       (article-mime-decode-quoted-printable-buffer): Abolished.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.9.03.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.9.\r
+\r
+1998-08-31  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-agent.el: Do not use nnheader-temp-write.\r
+\r
+       * lisp/gnus-ems.el: Do not use nnheader-temp-write.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.9.02.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.8.\r
+\r
+1998-08-30  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * New branch ... pgnus-ichikawa\r
+\r
+       * lisp/gnus.el (gnus-original-version-number)\r
+       (gnus-original-product-name) : New variable.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.9.01.\r
+       Third version number 0x means Original gnus's status in beta version.\r
+\r
+       * Sync up with Pterodactyl Gnus 0.6.\r
+\r
+1998-08-30  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-agent.el (gnus-agent-fetch-headers): Bug Fix.\r
+       When add a new newsgroup , gnus-agent cannot fetch articles.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.17.\r
+\r
+       * Sync up with Gnus 5.6.42.\r
+\r
+1998-08-28  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Try\r
+       "qualified" newsgroup name first.\r
+\r
+1998-08-28  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Match\r
+       "real" newsgroup name; strip "backend+server" prefix.\r
+\r
+1998-08-28  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/message.el (message-make-user-agent): New function.\r
+       (message-generate-headers): Use it.\r
+       These changes are copied from Shoe-gnus.\r
+\r
+1998-08-28  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/message.el (message-make-in-reply-to):\r
+       Use `std11-extract-address-components'.\r
+       (message-use-mail-reply-to): Doc fix.\r
+\r
+1998-08-27  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.16.\r
+\r
+       * Sync up with Gnus 5.6.41.\r
+\r
+1998-08-26  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-spec.el (gnus-parse-simple-format): Use\r
+       `gnus-tilde-pad-form' instead of the padding faculty of `format'\r
+       under XEmacs-mule.\r
+\r
+       * lisp/gnus-xmas.el\r
+       (gnus-xmas-redefine): Redifine `gnus-truncate-string',\r
+       `gnus-tilde-max-form' and `gnus-tilde-cut-form' for XEmacs-mule.\r
+       (gnus-xmas-define): New function 'gnus-tilde-pad-form' for\r
+       XEmacs-mule.\r
+\r
+1998-08-26  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el (gnus-article-narrow-to-signature):\r
+       Removed TM stuff.\r
+       (gnus-article-display-mime-message):\r
+       Set `mime-button-mother-dispatcher' in correct buffer.\r
+       (gnus-url-mailto): Use `gnus-setup-message'.\r
+       (gnus-button-mailto): Ditto.\r
+       (gnus-button-reply): Ditto.\r
+\r
+       * lisp/gnus-ems.el (gnus-mule-max-width-function): Removed.\r
+       (gnus-truncate-string): Use `truncate-string-to-width' if available.\r
+       (gnus-tilde-max-form): New implementation.\r
+       (gnus-tilde-cut-form): Ditto.\r
+\r
+       * lisp/gnus-msg.el (gnus-summary-mail-digest): New function.\r
+       (gnus-summary-post-digest): New function.\r
+\r
+       * lisp/gnus-sum.el (gnus-summary-make-menu-bar): Use\r
+       `gnus-summary-mail-digest' and `gnus-summary-post-digest' instead\r
+       of `gnus-uu-digest-mail-forward' and `gnus-uu-digest-post-forward'.\r
+\r
+       * lisp/gnus-util.el (gnus-truncate-string): Ignore more than two\r
+       arguments.\r
+\r
+       * lisp/message.el (message-forward-end-separator): Use\r
+       `text/plain' tag.\r
+\r
+1998-08-25  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Write\r
+       file in raw-text coding system.\r
+       (gnus-cache-save-buffers): Ditto.\r
+       * lisp/gnus-cache.el (gnus-cache-write-file-coding-system): New variable.\r
+       * lisp/gnus-util.el (gnus-write-buffer): Undo change.\r
+\r
+       * lisp/gnus-util.el (gnus-write-file-coding-system): Delete variable.\r
+\r
+1998-08-25  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus-msg.el (gnus-bug-message): About Semi-gnus.\r
+       (gnus-extended-version): Return gnus version only.\r
+       (gnus-bug): Add Semi-gnus developers to recipients.\r
+\r
+       * lisp/message.el (message-make-user-agent): New function.\r
+       (message-generate-headers): Use it.\r
+\r
+1998-08-24  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-offline.el (gnus-offline-setup): Bug fix and version\r
+       changed to 1.53.\r
+\r
+       * lisp/gnus-util.el (gnus-write-buffer): Write file in raw-text coding\r
+       system.\r
+\r
+       * lisp/gnus-util.el (gnus-write-file-coding-system): New variable.\r
+\r
+1998-08-23  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/message.el: Suppress some byte-compile warnings.\r
+       (message-make-forward-subject): Failed to sync.\r
+       (message-setup): Ditto.\r
+       (message-clone-locals): Modify regexp.\r
+\r
+       * lisp/message.el (message-fill-references): Reverted.\r
+\r
+1998-08-23  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus-agent.el (gnus-agent-braid-nov): Use\r
+       `nnheader-insert-file-contents'.\r
+\r
+       * lisp/gnus-i18n.el (gnus-set-summary-default-charset): Sync up\r
+       with "akr" branch.\r
+\r
+1998-08-23  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.15.\r
+\r
+       * Sync up with Gnus 5.6.39.\r
+\r
+1998-08-20  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.14.\r
+\r
+       * Sync up with Gnus 5.6.38.\r
+\r
+       * lisp/gnus-offline.el (gnus-offline-enable-fetch-mail): Enable to get\r
+       APOP server.\r
+\r
+       * lisp/pop3-fma.el (pop3-fma-movemail): Enable to get from APOP server.\r
+       (pop3-fma-set-pop3-password) Enable to get from APOP server.\r
+\r
+1998-08-16  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.13.\r
+\r
+       * Sync up with Gnus 5.6.37.\r
+\r
+       * lisp/gnus-offline.el (gnus-offline-setup) : To create spol directory\r
+       if not exists.\r
+       Change default value of gnus-offline-drafts-queue-type 'miee to 'agent\r
+\r
+1998-08-16  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.12.\r
+\r
+       * Sync up with Gnus 5.6.36.\r
+\r
+       * lisp/gnus-offline.el : New file.\r
+       Merge gnus-offline to ichikawa branch.\r
+\r
+1998-08-15  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Update.\r
+\r
+1998-08-14  Katsumi Yamaoka   <yamaoka@jpl.org>\r
+\r
+       * lisp/gnus-start.el (gnus-save-newsrc-file): Bind\r
+       `coding-system-for-write' by `gnus-startup-file-coding-system'\r
+       while saving the quick newsrc file.\r
+\r
+       * lisp/gnus-start.el (gnus-startup-file-coding-system): Change\r
+       default value to `ctext'.\r
+\r
+1998-08-13  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.11.\r
+\r
+       * Sync up with Gnus 5.6.34.\r
+\r
+1998-08-12  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.10.\r
+\r
+       * Sync up with Gnus 5.6.33.\r
+\r
+1998-08-11  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/message.el (message-frames): New custom group.\r
+       (message-original-frame): New variable.\r
+       (message-use-multi-frames): New variable.\r
+       (message-delete-frame-on-exit): New variable.\r
+       (message-send-and-exit): Delete frame which made for editing\r
+       message.\r
+       (message-kill-buffer): Ditto.\r
+       (message-delete-frame): New function.\r
+       (message-pop-to-buffer): Make new frame when edit message.\r
+\r
+1998-08-11  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.9.\r
+\r
+       * Sync up with Gnus 5.6.31.\r
+\r
+1998-08-10  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.8.\r
+\r
+       * Sync up with Gnus 5.6.30.\r
+\r
+1998-08-10  Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.7.\r
+\r
+1998-08-06  Katsumi Yamaoka <yamaoka@jpl.org>\r
+\r
+       * lisp/smtp.el: Do not insert empty line at the end of message.\r
+\r
+1998-08-06  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.6.\r
+\r
+       * Sync up with Gnus 5.6.29.\r
+\r
+1998-08-05  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-start.el (gnus-read-init-file): Fix indent.\r
+       * lisp/gnus-ems.el (gnus-tilde-max-form): Redefine instead of\r
+       (gnus-summary-line-format-spec) to display Japanese character\r
+       correctly in Gnus summaly.\r
+\r
+1998-08-05  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/gnus-start.el (gnus-read-init-file): Don't restrict\r
+       `coding-system-for-read' by `binary' when loading `.gnus'.\r
+\r
+1998-08-04  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.5.\r
+\r
+       * Sync up with Gnus 5.6.28.\r
+\r
+1998-07-27  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.4.\r
+\r
+       * Sync up with Gnus 5.6.27.\r
+\r
+1998-07-27  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/message-ja.texi: Japanese translation of "message.texi".\r
+\r
+1998-07-26  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.3.\r
+\r
+       * Sync up with Gnus 5.6.26.\r
+\r
+1998-07-23  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.2.\r
+       (gnus-version): Change to "Semi-gnus". Change comment format.\r
+\r
+1998-07-21  Keisuke Mori   <ksk@ntts.com>\r
+\r
+       * texi/gnus-ja.texi: Add "Appendices".\r
+\r
+1998-07-21  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "Appendices".\r
+\r
+1998-07-16  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.1.\r
+\r
+       * Sync up with Gnus 5.6.24.\r
+\r
+1998-07-10  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/gnus-ems.el (gnus-mule-cite-add-face): Fix problem when multi\r
+       bytes charactors are used in cite prefix. (for Emacs 20.1 and 20.2)\r
+       (gnus-ems-redefine): for Emacs 20.1 and 20.2\r
+\r
+       * lisp/gnus-cite.el (gnus-cite-add-face): Abolish my last bogus change.\r
+\r
+1998-07-09  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>\r
+\r
+       * lisp/gnus-cite.el (gnus-cite-add-face): Fix problem when multi\r
+       bytes charactors are used in cite prefix.\r
+\r
+1998-07-07  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "The End".\r
+\r
+1998-07-06  Keisuke Mori   <ksk@ntts.com>\r
+\r
+       * texi/gnus-ja.texi: Add "Various".\r
+\r
+1998-07-06  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "Various".\r
+       * texi/gnus-ja.texi: Sync up with Gnus 5.6.22\r
+\r
+1998-07-02  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/message.el (message-header-format-alist): Repair to use\r
+       `message-fill-references' for References.\r
+\r
+1998-07-01  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el (gnus-article-header-presentation-method):\r
+       Delete nil optional arguments.\r
+       - Delete setting for `mime-raw-representation-type-alist'.\r
+\r
+1998-07-01  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.0.\r
+       (gnus-version): Modify for FLIM 1.8.\r
+\r
+       * lisp/gnus-art.el (gnus-article-header-presentation-method):\r
+       Modify for FLIM 1.8.\r
+\r
+1998-06-30  Keisuke Mori   <ksk@ntts.com>\r
+\r
+       * texi/gnus-ja.texi: Add "Scroing".\r
+\r
+1998-06-30  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "Scoring".\r
+\r
+1998-06-30  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * Sync up with Gnus 5.6.22\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.7.8.\r
+       * lisp/pop3-fma.el : Enable to get localhost mail spool.\r
+\r
+1998-06-29  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.7.7.\r
+\r
+       * lisp/gnus-art.el (gnus-article-prepare): Set up\r
+       `gnus-article-current-summary' of gnus-article-buffer.\r
+       (gnus-request-article-this-buffer): Don't set up\r
+       `gnus-article-current-summary'.\r
+\r
+1998-06-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.7.6.\r
+\r
+1998-06-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el (gnus-mime-preview-quitting-method): Renamed\r
+       from `mime-preview-quitting-method-for-gnus'.\r
+\r
+1998-06-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-sum.el (gnus-summary-preview-mime-message): New\r
+       implementation.\r
+\r
+       * lisp/gnus-art.el (mime-preview-quitting-method-for-gnus): Use\r
+       `gnus-article-show-summary' is `gnus-show-mime' is not nil.\r
+\r
+1998-06-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * texi/ChangeLog, texi/gnus.texi, texi/message.texi,\r
+       lisp/ChangeLog, lisp/gnus.el, lisp/nngateway.el, lisp/nnfolder.el,\r
+       lisp/message.el, lisp/gnus-sum.el, lisp/gnus-soup.el: Sync up with\r
+       Gnus 5.6.20.\r
+\r
+1998-06-26  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * README, texi/ChangeLog, texi/gnus.texi, texi/message.texi,\r
+       lisp/ChangeLog, lisp/nnweb.el, lisp/nnmail.el, lisp/nndoc.el,\r
+       lisp/message.el, lisp/lpath.el, lisp/gnus.el, lisp/gnus-util.el,\r
+       lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-score.el,\r
+       lisp/gnus-group.el, lisp/gnus-ems.el, lisp/gnus-demon.el,\r
+       lisp/gnus-art.el: Sync up with Gnus 5.6.16.\r
+\r
+1998-06-26  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.7.3.\r
+\r
+       * lisp/gnus-sum.el (gnus-summary-move-article): Use\r
+       `gnus-request-article-this-buffer'.\r
+       (gnus-request-partial-message): Likewise.\r
+\r
+       * lisp/gnus-art.el (gnus-article-prepare): Use\r
+       `gnus-request-article-this-buffer'.\r
+       (gnus-request-article-this-buffer): Renamed from\r
+       `gnus-request-original-article'; abolish conventional\r
+       implementation.\r
+       - Abolish unused setting for `mime-view-show-summary-method'.\r
+\r
+1998-06-26  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * readme, texi/ChangeLog, texi/gnus.texi, texi/message.texi,\r
+       lisp/ChangeLog, lisp/gnus.el, lisp/nnmail.el, lisp/nnheader.el,\r
+       lisp/nngateway.el, lisp/nnfolder.el, lisp/nnagent.el,\r
+       lisp/message.el, lisp/gnus-sum.el, lisp/gnus-score.el,\r
+       lisp/gnus-salt.el, lisp/gnus-msg.el, lisp/gnus-cus.el,\r
+       lisp/gnus-cache.el, lisp/gnus-art.el: Sync up with Gnus 5.6.15.\r
+\r
+1998-06-24  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * texi/gnus.texi, texi/message.texi, texi/ChangeLog: Sync up with\r
+       Gnus 5.6.13.\r
+\r
+1998-06-14  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * Sync up with Gnus 5.6.13.\r
+\r
+1998-06-24  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el (gnus-article-display-mime-message): Don't\r
+       `save-excursion'.\r
+       (gnus-article-prepare): Use `mime-fetch-field' instead of\r
+       `mime-entity-fetch-field'.\r
+\r
+1998-06-19  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el (gnus-article-display-mime-message): Use\r
+       `mime-display-message' instead of `mime-view-buffer'.\r
+       (gnus-article-display-traditional-message): Set\r
+       `gnus-article-buffer'.\r
+       (gnus-article-display-message-with-encoded-word): Modify for\r
+       `gnus-article-display-traditional-message'.\r
+       (gnus-article-prepare): Use `mime-parse-buffer' and\r
+       `mime-entity-fetch-field'; don't set gnus-article-buffer.\r
+\r
+1998-06-19  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-sum.el (gnus-summary-move-article): Use\r
+       `gnus-request-original-article' instead of\r
+       `gnus-request-article-this-buffer'.\r
+\r
+1998-06-19  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * texi/gnus-ja.texi, texi/gnus.texi (Using MIME): Modify\r
+       description about new display mechanism.\r
+\r
+1998-06-19  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.6.0.\r
+       (gnus-version): Modify for this branch.\r
+\r
+       * lisp/gnus-art.el (gnus-article-display-method-for-mime): New\r
+       variable; abolish `gnus-show-mime-method'.\r
+       (gnus-article-display-method-for-encoded-word): New variable;\r
+       abolish `gnus-decode-encoded-word-method'.\r
+       (gnus-article-display-method-for-traditional): New variable.\r
+       (gnus-article-display-mime-message): New function; abolish\r
+       `gnus-article-preview-mime-message'.\r
+       (gnus-article-display-traditional-message): New function.\r
+       (gnus-article-display-message-with-encoded-word): New function;\r
+       abolish `gnus-article-decode-encoded-word'.\r
+       (gnus-article-prepare): Change display mechanism; use\r
+       `gnus-request-original-article' instead of\r
+       `gnus-request-article-this-buffer'.\r
+       (gnus-request-original-article): New function.\r
+\r
+1998-06-22  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.6.0.\r
+       (gnus-version): Modify for SEMI 1.8.\r
+\r
+       * lisp/gnus-sum.el: Modify for interface change in SEMI 1.8 about\r
+       automatic message/partial combining.\r
+\r
+1998-06-19  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.5.0.\r
+       (gnus-version): Modify for SEMI 1.7.\r
+\r
+       * lisp/gnus-sum.el: Rename\r
+       `mime-method-to-combine-message/partial-pieces' to\r
+       `mime-combine-message/partial-pieces-automatically'.\r
+\r
+       * lisp/gnus-art.el (gnus-article-preview-mime-message): Use\r
+       `mime-view-buffer'.\r
+       (gnus-article-decode-encoded-word): Fix DOC-string.\r
+       (gnus-article-header-presentation-method): New function; abolish\r
+       `gnus-content-header-filter'.\r
+       Modify for SEMI 1.7.\r
+\r
+1998-06-18  Keisuke Mori   <ksk@ntts.com>\r
+\r
+       * texi/gnus-ja.texi: Add "Select Methods".\r
+\r
+1998-06-18  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "Select Methods".\r
+\r
+1998-06-17  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/pop3-fma.el: Small bug fix.\r
+\r
+       * lisp/pop3-fma.el: Delete variable pop3-fma-cypher-key\r
+       Use base64-encode-string , base64-decode-string instead.\r
+       Both change by Yasuo OKABE <okabe@kuis.kyoto-u.ac.jp>\r
+\r
+1998-06-13  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/pop3-fma.el: New function pop3-fma-cypher-string\r
+       New variable pop3-fma-cypher-key\r
+\r
+1998-06-12  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/message.el (message-required-news-headers): `X-Newsreader'\r
+       was replaced by `User-Agent'.\r
+       (message-required-mail-headers): `X-Mailer' was replaced by\r
+       `User-Agent'.\r
+       (message-header-format-alist): `X-Mailer' and `X-Newsreader' were\r
+       replaced by `User-Agent'.\r
+       (message-generate-headers): Ditto.\r
+\r
+       (message-user-agent): New variable.\r
+       (message-newsreader): Replaced by `message-user-agent'.\r
+       (message-mailer): Ditto.\r
+       (message-mode): `message-mailer' and `message-newsreader' were\r
+       replaced by `message-user-agent'.\r
+\r
+       * lisp/gnus-msg.el (gnus-inews-add-send-actions): `message-mailer'\r
+       and `message-newsreader' were replaced by `message-user-agent'.\r
+       (gnus-extended-version): Generate "PRODUCT/VERSION" style strings.\r
+\r
+       * lisp/gnus-soup.el (gnus-soup-send-packet): `message-mailer' and\r
+       `message-newsreader' were replaced by `message-user-agent'.\r
+\r
+1998-06-07  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el: Delete setting for\r
+       `article-de-quoted-unreadable' and\r
+       `article-mime-decode-quoted-printable' because they have been\r
+       already abolished.\r
+\r
+1998-06-07  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Sync up with latest gnus.texi.\r
+\r
+       * texi/gnus.texi: Modify for Semi-gnus 6.4.0.\r
+\r
+1998-06-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-extract-address-components): Add\r
+       `std11-extract-address-components' as a choice.\r
+\r
+1998-06-06  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "Composing Messages".\r
+\r
+1998-06-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-ems.el (gnus-ems-redefine): Must require 'path-util\r
+       before call `module-installed-p'.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.4.0.\r
+       (gnus-version): Modify for SEMI 1.5.\r
+\r
+       * lisp/gnus-art.el: Modify for SEMI 1.5 API.\r
+\r
+1998-06-04  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/pop3-fma.el: New file. To handle multiple POP account.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.3.4.\r
+       And fix typo 5.6.10 -> 5.6.11.\r
+\r
+1998-06-03  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.3.3.\r
+\r
+       * Sync up with Gnus 5.6.11.\r
+\r
+1998-06-03  Keisuke Mori   <ksk@ntts.com>\r
+\r
+       * texi/gnus-ja.texi: Add "The Article Buffer".\r
+\r
+1998-06-03  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "The Summary Buffer".\r
+\r
+1998-06-02  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.3.2.\r
+\r
+       * Sync up with Gnus 5.6.10.\r
+\r
+1998-05-30  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * README.semi: Add description of `shuhei-k' branch.\r
+\r
+1998-05-17  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.3.1.\r
+\r
+1998-05-17  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-util.el (gnus-output-to-rmail): Guard as binary.\r
+\r
+       * lisp/gnus-util.el (gnus-output-to-mail): Guard as binary.\r
+\r
+1998-04-24  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "The Active File".\r
+\r
+1998-05-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.3.0.\r
+       (gnus-version): Modify for SEMI 1.4.\r
+\r
+       * lisp/gnus-sum.el: Use 'mime-add-condition to set up\r
+       acting-condition.\r
+\r
+1998-05-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/lpath.el: Must add "flim" instead of "mel" to load-path.\r
+\r
+1998-05-03  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.2.5.\r
+\r
+       * texi/gnus.texi, lisp/ChangeLog: Sync up with Gnus v5.6.9.\r
+\r
+       * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el,\r
+       lisp/gnus-msg.el, lisp/gnus-draft.el, lisp/gnus-agent.el: Sync up\r
+       with Gnus v5.6.9.\r
+\r
+1998-04-30  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.2.4.\r
+\r
+       * texi/gnus.texi, lisp/ChangeLog: Sync up with Gnus 5.6.7.\r
+\r
+       * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el,\r
+       lisp/gnus-msg.el, lisp/gnus-cache.el, lisp/gnus-art.el: Sync up\r
+       with Gnus 5.6.7.\r
+\r
+1998-04-28  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.2.3.\r
+\r
+       * Sync up with Gnus 5.6.6.\r
+\r
+1998-04-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/nnheader.el: Sync up with Gnus 5.6.5.\r
+\r
+1998-04-26  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.2.2.\r
+\r
+       * Sync up with Gnus 5.6.5.\r
+\r
+       * texi/custom.texi, texi/widget.texi: Removed from Semi-gnus.\r
+\r
+1998-04-25  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * README.semi (How to get? (via CVS)): Modify descriptions about\r
+       TAG.\r
+\r
+1998-04-23  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.2.1.\r
+\r
+1998-04-23  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/message.el (message-make-forward-subject): Use\r
+       `eword-decode-unstructured-field-body' for subject.\r
+\r
+       * lisp/gnus-msg.el (gnus-summary-mail-forward): Make local\r
+       variable `default-mime-charset' of `gnus-original-article-buffer'\r
+       and set up by `default-mime-charset' of `gnus-summary-buffer'.\r
+\r
+1998-04-23  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Fix typos.\r
+\r
+       * texi/gnus.texi: Modify for Semi-gnus.\r
+\r
+1998-04-23  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "Auto Save".\r
+\r
+1998-04-22  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "Startup Files".\r
+\r
+1998-04-21  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.2.0.\r
+       (gnus-version): Modify for SEMI 1.3.\r
+\r
+       * lisp/gnus-sum.el: Use 'ctree-set-calist-strictly instead of\r
+       'set-atype to set up for 'mime-acting-condition.\r
+\r
+1998-04-21  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "Changing Servers".\r
+\r
+1998-04-20  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Modify styles.\r
+\r
+       * texi/gnus.texi: Modify for Semi-gnus (sync up with\r
+       gnus-ja.texi).\r
+\r
+1998-04-20  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Add "New Groups".\r
+\r
+1998-04-20  Yoshiki Hayashi   <penny@tb3.so-net.ne.jp>\r
+\r
+       * texi/gnus-ja.texi: Modify styles.\r
+\r
+1998-04-18  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: Check and modify for Semi-gnus.\r
+\r
+1998-04-18  Yoshiki Hayashi   <g740685@komaba.ecc.u-tokyo.ac.jp>\r
+\r
+       * texi/gnus-ja.texi: New file.\r
+\r
+1998-04-19  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.1.3.\r
+\r
+1998-04-19  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el (gnus-following-method): New function; set up\r
+       for 'mime-view-following-method-alist.\r
+\r
+1998-04-18  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * texi/gnus.texi: Add and modify description for Semi-gnus.\r
+\r
+1998-04-16  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * texi/gnus.texi: "Gnus 5.6.4" -> "Semi-gnus 6.1.2".\r
+       (Top): "Gnus" -> "gnus".\r
+       (Starting Up): "Gnus" -> "gnus".\r
+\r
+1998-04-10  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/ChangeLog, lisp/gnus-agent.el: Sync up with Gnus 5.6.4.\r
+\r
+1998-04-08  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.1.2.\r
+       (gnus-version): Include corresponding SEMI version.\r
+\r
+       * lisp/gnus.el, lisp/nnkiboze.el, lisp/message.el,\r
+       lisp/gnus-sum.el, lisp/gnus-agent.el: Sync up with Gnus 5.6.4.\r
+\r
+1998-03-27  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * README.semi: Change descriptions of sending bug report.\r
+\r
+1998-03-20  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.1.1.\r
+       (gnus-version): Include corresponding SEMI version.\r
+\r
+       * Sync up with Gnus 5.6.3.\r
+\r
+1998-03-15  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus-agent.el (gnus-agent-crosspost): Use\r
+       `nnheader-insert-file-contents'.\r
+       (gnus-agent-braid-nov): Ditto.\r
+       (gnus-agent-expire): Ditto.\r
+\r
+       * lisp/gnus-cache.el (gnus-cache-request-article): Ditto.\r
+       (gnus-cache-retrieve-headers): Ditto.\r
+       (gnus-cache-change-buffer): Ditto.\r
+       (gnus-cache-braid-nov): Ditto.\r
+\r
+       * lisp/gnus-sum.el (gnus-summary-import-article): Ditto.\r
+\r
+       * lisp/nnkiboze.el (nnkiboze-retrieve-headers): Ditto.\r
+\r
+       * lisp/message.el (message-generate-headers): Fix regexp.\r
+       (cf. [semi-gnus-ja:107])\r
+\r
+1998-03-14  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el: Add setting for\r
+       `mime-raw-buffer-coding-system-alist'.\r
+\r
+1998-03-13  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el: Rename `mime-view-quitting-method-for-gnus' ->\r
+       `mime-preview-quitting-method-for-gnus'.\r
+\r
+       * lisp/gnus-art.el: Rename `mime-view-quitting-method-alist' ->\r
+       `mime-preview-quitting-method-alist'.\r
+\r
+       * lisp/gnus-art.el: Rename `mime-view-kill-buffer' ->\r
+       `mime-preview-kill-buffer'.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.0.10.\r
+\r
+       * lisp/gnus-sum.el: Add code to check latest SEMI.\r
+       (mime-acting-condition): Separate type and subtype; rename\r
+       `mime-combine-message/partials-automatically' ->\r
+       `mime-method-to-combine-message/partial-pieces'.\r
+\r
+1998-03-08  Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.0.9.\r
+\r
+       * README.semi (How to get?): Add description of daily snapshot.\r
+       (How to join development): Change mailing list command address.\r
+\r
+       * Sync up with Gnus 5.6.2.\r
+\r
+1998-03-01  Tatsuya Ichikawa  <t-ichi@po.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus-ems.el: Change variable name\r
+       gnus-bdf-image-file to gnus-mule-bitmap-image-file.\r
+\r
+1998-02-28  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.0.8.\r
+\r
+       * lisp/gnus.el: Sync up with qgnus-0.34.\r
+\r
+1998-02-28  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/message.el: Sync up with qgnus-0.33.\r
+\r
+       * lisp/gnus-ems.el (gnus-bdf-image-file): New variable; moved from\r
+       gnus.el.\r
+       (gnus-mule-group-startup-message): New function; moved and renamed\r
+       from `gnus-group-startup-message' of gnus.el.\r
+\r
+       * lisp/gnus.el, lisp/gnus-sum.el, lisp/gnus-art.el,\r
+       lisp/gnus-agent.el: Sync up with qgnus-0.33.\r
+\r
+1998-02-28  Tatsuya Ichikawa  <t-ichi@niagara.shiojiri.ne.jp>\r
+\r
+       * lisp/gnus.el (gnus-bdf-image-file): New variable.\r
+       (gnus-mule-group-startup-message): Display bitmap image using\r
+       bitmap.el running with Emacs 20.\r
+\r
+       * lisp/gnus-agent.el (gnus-agent-fetch-headers): Fix problem when\r
+       Xref field is not exist.\r
+\r
+1998-02-26  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * README.semi (How to join development): Modify for Semi-gnus\r
+       mailing list.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.0.7.\r
+\r
+       * lisp/gnus.el (gnus-article-display-hook): Delete\r
+       `gnus-article-de-quoted-unreadable' from options.\r
+\r
+       * lisp/gnus-sum.el (gnus-article-make-menu-bar): Delete key for\r
+       `gnus-article-de-quoted-unreadable'.\r
+       (gnus-summary-make-menu-bar): Delete menu for\r
+       `gnus-article-de-quoted-unreadable'.\r
+\r
+       * lisp/gnus-art.el (gnus-article-make-menu-bar): Delete menu for\r
+       `gnus-article-de-quoted-unreadable'.\r
+\r
+1998-02-24  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el, lisp/message.el: Sync up with qgnus-0.32.\r
+\r
+1998-02-23  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.0.6.\r
+\r
+       * lisp/message.el (message-fill-references): Abolish unused local\r
+       variables.\r
+\r
+       * lisp/pop3.el, lisp/message.el, lisp/gnus.el, lisp/gnus-sum.el,\r
+       lisp/gnus-art.el: Sync up with qgnus-0.31.\r
+\r
+       * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el,\r
+       lisp/gnus-art.el: Sync up with qgnus-0.30.\r
+\r
+1998-02-20  Christophe Broult <christophe.broult@info.unicaen.fr>\r
+\r
+       * README.semi (How to get?): The command `update' must come before\r
+       `-r semi-gnus'. (cf. [tm-en:1559])\r
+\r
+1998-02-17  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el: Sync up with qgnus-0.29.\r
+\r
+       * lisp/gnus.el, lisp/message.el: Sync up with qgnus-0.28.\r
+\r
+       * lisp/message.el: Abolish variable\r
+       `message-references-generator'.  Abolish function\r
+       `message-generate-filled-references',\r
+       `message-generate-folded-references' and\r
+       `message-generate-unfolded-references'.\r
+       (message-reply): Don't use `message-references-generator'.\r
+       (message-followup): Don't use `message-references-generator'.\r
+\r
+       (message-fill-references): New function.\r
+       (message-header-format-alist): Use `message-fill-references' for\r
+       References.\r
+\r
+1998-02-17  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.0.5.\r
+\r
+1998-02-17  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-sum.el: Check SEMI-0.118.2 (Otomaru) or later.\r
+       (gnus-structured-field-decoder): Use\r
+       `eword-decode-and-unfold-structured-field'.\r
+\r
+       * lisp/gnus-art.el (gnus-article-decode-rfc1522): Use charset\r
+       conversion option of `eword-decode-header'.\r
+       (gnus-article-decode-encoded-word): Use charset conversion option\r
+       of `eword-decode-header'; use `gnus-run-hooks'.\r
+       (gnus-content-header-filter): Use charset conversion option of\r
+       `eword-decode-header'.\r
+\r
+       * README.semi (How to get?): Should specify "-r semi-gnus".\r
+\r
+1998-02-16  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el (gnus-article-decode-rfc1522): Decode header by\r
+       localized code.\r
+\r
+1998-02-16  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-msg.el: Delete commented-out function\r
+       `gnus-inews-insert-mime-headers'.\r
+\r
+       * lisp/gnus.el, lisp/message.el, lisp/gnus-sum.el,\r
+       lisp/gnus-art.el: Sync up with qgnus-0.27.\r
+\r
+1998-02-16  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/nnheader.el: Use original.\r
+\r
+       * lisp/gnus.el, lisp/pop3.el, lisp/message.el, lisp/gnus-sum.el,\r
+       lisp/gnus-msg.el, lisp/gnus-draft.el, lisp/gnus-art.el: Sync up\r
+       with qgnus-0.26.\r
+\r
+1998-02-15  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/nnmail.el, lisp/nnmh.el: Use original.\r
+\r
+       * lisp/gnus.el, lisp/gnus-draft.el, lisp/gnus-sum.el,\r
+       lisp/message.el, lisp/gnus-art.el: Sync up with qgnus-0.25.\r
+\r
+1998-02-11  Shuhei Kobayashi  <shuhei-k@jaist.ac.jp>\r
+\r
+       * texi/message.texi, texi/gnus.texi, texi/ChangeLog,\r
+       lisp/message.el, lisp/gnus.el, lisp/gnus-uu.el,\r
+       lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-start.el,\r
+       lisp/gnus-score.el, lisp/gnus-group.el, lisp/gnus-art.el,\r
+       lisp/gnus-agent.el, lisp/ChangeLog: Importing qgnus-0.24\r
+\r
+1998-02-10  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-art.el (gnus-article-prepare): Don't bind coding\r
+       systems.\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to 6.0.4.\r
+       (gnus-version): Sync with qgnus-0.23.\r
+\r
+       * lisp/pop3.el, lisp/nnmh.el, lisp/nnheader.el, lisp/message.el,\r
+       lisp/gnus-sum.el, lisp/gnus-msg.el, lisp/gnus-draft.el,\r
+       lisp/gnus-art.el: Merge qgnus-0.23.\r
+\r
+1998-02-09  Shuhei Kobayashi  <shuhei-k@jaist.ac.jp>\r
+\r
+       * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/nntp.el,\r
+       lisp/nnheader.el, lisp/message.el, lisp/gnus.el,\r
+       lisp/gnus-xmas.el, lisp/gnus-sum.el, lisp/gnus-start.el,\r
+       lisp/gnus-msg.el, lisp/gnus-group.el, lisp/gnus-draft.el,\r
+       lisp/gnus-art.el, lisp/gnus-agent.el, lisp/ChangeLog: Importing\r
+       qgnus-0.23\r
+\r
+1998-02-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/message.el (message-references-generator): New variable.\r
+       (message-generate-filled-references): New function.\r
+       (message-generate-folded-references): New function.\r
+       (message-generate-unfolded-references): New function.\r
+       (message-reply): Refer `message-references-generator'.\r
+       (message-followup): Refer `message-references-generator'.\r
+\r
+1998-01-17  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/message.el (message-send-mail-with-sendmail): Guard\r
+       `coding-system-for-write' by binary.\r
+       (message-send-mail-with-qmail): Likewise.\r
+\r
+1998-01-16  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/lpath.el: Require path-util; add load-path of APEL, MEL and\r
+       SEMI.\r
+\r
+1998-01-12  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/message.el: Require smtp.el when compile.\r
+\r
+       * lisp/message.el (message-send-mail-with-smtp): Use\r
+       `(current-buffer)' instead of `tembuf'; rename\r
+       `smtp-recipient-address-list' -> `recipient-address-list'.\r
+\r
+1998-01-12  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/smtp.el (smtp-deduce-address-list): Don't use\r
+       `smtp-recipient-address-list' as global variable.\r
+\r
+       * lisp/message.el (message-send-mail-with-smtp): Don't use\r
+       `smtp-recipient-address-list' as global variable.\r
+\r
+       * lisp/smtpmail.el (smtpmail-recipient-address-list): New\r
+       variable; renamed from `smtp-recipient-address-list'.\r
+       (smtpmail-send-it): Remove `(not (null ...))'.\r
+       (smtpmail-send-queued-mail): Likewise.\r
+\r
+1998-01-12  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/message.el (message-send-mail-with-smtp): Don't generate\r
+       temporary buffer for message; don't generate and kill\r
+       `smtp-address-buffer' for `smtp-deduce-address-list'.\r
+\r
+       * lisp/smtpmail.el (smtpmail-send-it): Don't generate and kill\r
+       `smtp-address-buffer' for `smtp-deduce-address-list'.\r
+\r
+       * lisp/smtp.el (smtp-deduce-address-list): Bind and generate\r
+       `smtp-address-buffer' in itself.\r
+\r
+1998-01-12  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to version 6.0.3.\r
+\r
+1998-01-11  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/smtp.el: New file.\r
+\r
+       * lisp/smtpmail.el: Split basic features into smtp.el.\r
+\r
+       * lisp/message.el (message-send-mail-function): Add\r
+       `message-send-mail-with-smtp' as an item.\r
+       (message-send-mail-with-smtp): New function.\r
+\r
+       * ChangeLog: New file.\r
+\r
+1998-01-08  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/smtpmail.el (smtpmail-via-smtp): Bind\r
+       `coding-system-for-read' by `smtpmail-coding-system' to avoid\r
+       dead-locking in Emacs 20.\r
+\r
+       * lisp/gnus.el: gnus.el (gnus-version-number): Update to version\r
+       6.0.2.\r
+\r
+1998-01-07  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/nnmail.el, lisp/message.el: Sync with Quassia Gnus v0.22.\r
+\r
+       * lisp/gnus.el: Delete autoload setting for `metamail-buffer'.\r
+\r
+       * lisp/gnus.el, lisp/gnus-sum.el: Sync with Quassia Gnus v0.22.\r
+\r
+       * lisp/gnus-msg.el: Abolish function\r
+       `gnus-inews-insert-mime-headers'.\r
+\r
+       * lisp/gnus-msg.el, lisp/gnus-draft.el, lisp/gnus-art.el: Sync\r
+       with Quassia Gnus v0.22.\r
+\r
+       * lisp/smtpmail.el (smtpmail-coding-system): New variable; abolish\r
+       `smtpmail-code-conv-from'.\r
+       (smtpmail-via-smtp): Guard `coding-system-for-write' by\r
+       `smtpmail-coding-system'.\r
+\r
+       * lisp/smtpmail.el: Imported from Emacs 20.2.\r
+\r
+       * lisp/pop3.el (pop3-movemail-file-coding-system): Change default\r
+       value to `binary'.\r
+       (pop3-open-server): Guard `coding-system-for-read' by `binary'.\r
+\r
+1998-01-06  Shuhei Kobayashi  <shuhei-k@jaist.ac.jp>\r
+\r
+       * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/nnoo.el,\r
+       lisp/nnml.el, lisp/message.el, lisp/gnus.el, lisp/gnus-sum.el,\r
+       lisp/gnus-start.el, lisp/gnus-ems.el, lisp/gnus-draft.el,\r
+       lisp/gnus-agent.el, lisp/ChangeLog: Importing qgnus-0.22\r
+\r
+       * texi/message.texi, texi/gnus.texi, lisp/gnus.el, lisp/ChangeLog:\r
+       Importing qgnus-0.21\r
+\r
+       * texi/message.texi, texi/gnus.texi, texi/ChangeLog,\r
+       lisp/nnvirtual.el, lisp/nnsoup.el, lisp/nnoo.el, lisp/nnmh.el,\r
+       lisp/nnmail.el, lisp/nndraft.el, lisp/gnus.el, lisp/gnus-xmas.el,\r
+       lisp/gnus-sum.el, lisp/gnus-start.el, lisp/gnus-score.el,\r
+       lisp/gnus-msg.el, lisp/gnus-group.el, lisp/gnus-draft.el,\r
+       lisp/gnus-art.el, lisp/ChangeLog: Importing qgnus-0.20\r
+\r
+       * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/pop3.el,\r
+       lisp/nntp.el, lisp/nnml.el, lisp/nnmail.el, lisp/nndoc.el,\r
+       lisp/message.el, lisp/gnus.el, lisp/gnus-uu.el,\r
+       lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-start.el,\r
+       lisp/gnus-score.el, lisp/gnus-group.el, lisp/gnus-cache.el,\r
+       lisp/gnus-agent.el, lisp/ChangeLog: Importing qgnus-0.19\r
+\r
+1997-12-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus.el (gnus-version-number): Update to version 6.0.1.\r
+\r
+       * lisp/message.el (message-resend): Enclose `message-setup' with\r
+       `(let (message-setup-hook) ...)' to avoid to `turn-on-mime-edit';\r
+       must setup `message-encoding-buffer' and `message-edit-buffer' for\r
+       `message-send-mail'.\r
+\r
+1997-12-08  Shuhei Kobayashi  <shuhei-k@jaist.ac.jp>\r
+\r
+       * lisp/pop3.el, lisp/message.el, lisp/gnus.el, lisp/gnus-sum.el,\r
+       lisp/gnus-art.el, lisp/ChangeLog: Synch'ed up to qgnus-0.18.\r
+\r
+       * texi/message.texi, texi/gnus.texi, texi/ChangeLog,\r
+       lisp/smiley.el, lisp/pop3.el, lisp/nnweb.el, lisp/nntp.el,\r
+       lisp/nnml.el, lisp/nnmail.el, lisp/nnheader.el, lisp/nndraft.el,\r
+       lisp/message.el, lisp/lpath.el, lisp/gnus.el, lisp/gnus-util.el,\r
+       lisp/gnus-sum.el, lisp/gnus-start.el, lisp/gnus-picon.el,\r
+       lisp/gnus-nocem.el, lisp/gnus-mh.el, lisp/gnus-group.el,\r
+       lisp/gnus-ems.el, lisp/gnus-cite.el, lisp/gnus-art.el,\r
+       lisp/gnus-agent.el, lisp/dgnushack.el, lisp/ChangeLog: Importing\r
+       qgnus-0.18\r
+\r
+1997-11-29  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * README.semi: New file.\r
+\r
+       * lisp/gnus.el (gnus-version): Rename to "Semi-gnus".\r
+\r
+1997-11-28  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/gnus-draft.el (gnus-draft-decoding-function): New variable.\r
+       (gnus-draft-setup): Use `gnus-draft-decoding-function'.\r
+\r
+1997-11-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>\r
+\r
+       * lisp/nnmail.el, lisp/nnheader.el, lisp/message.el, lisp/gnus.el,\r
+       lisp/gnus-sum.el, lisp/gnus-msg.el, lisp/gnus-art.el: sync with\r
+       qgnus-0.17.\r
+\r
+       * texi/message.texi, texi/gnus.texi, lisp/smiley.el, lisp/nnoo.el,\r
+       lisp/nnml.el, lisp/nnmail.el, lisp/nnheader.el,\r
+       lisp/messagexmas.el, lisp/message.el, lisp/gnus.el,\r
+       lisp/gnus-xmas.el, lisp/gnus-util.el, lisp/gnus-sum.el,\r
+       lisp/gnus-start.el, lisp/gnus-spec.el, lisp/gnus-score.el,\r
+       lisp/gnus-picon.el, lisp/gnus-move.el, lisp/gnus-msg.el,\r
+       lisp/gnus-kill.el, lisp/gnus-group.el, lisp/gnus-draft.el,\r
+       lisp/gnus-demon.el, lisp/gnus-cite.el, lisp/gnus-art.el,\r
+       lisp/ChangeLog: Quassia Gnus v0.17.\r
+\r
+       * lisp/gnus-i18n.el: New file.\r
+\r
+       * lisp/nnmail.el (nnmail-file-coding-system): Use `raw-text' in\r
+       default.\r
+\r
+       * lisp/nnheader.el (nnheader-file-coding-system): Use `raw-text'\r
+       in default.\r
+\r
+       * lisp/message.el (message-encode-function): New variable.\r
+       (message-forward-start-separator): Modify for mime-edit.\r
+       (message-forward-end-separator): Modify for mime-edit.\r
+       (message-setup-hook): Use `(message-maybe-setup-default-charset\r
+       turn-on-mime-edit)' in default.\r
+       (message-header-hook): Use `(eword-encode-header)' in default.\r
+\r
+       (message-send): Use local variable `message-encoding-buffer',\r
+       `message-edit-buffer' and `message-mime-mode' as public variables;\r
+       use `message-encode-function'.\r
+       (message-send-mail): Use `message-encoding-buffer' to get contents\r
+       of body; abolish `message-encode-mail-hook'; use\r
+       `mime-edit-maybe-split-and-send'; use `message-edit-buffer' to\r
+       refer original editing buffer.\r
+       (message-send-news): Use `message-encoding-buffer' to get contents\r
+       of body; abolish `message-encode-news-hook'; use\r
+       `mime-edit-maybe-split-and-send'; use `message-edit-buffer' to\r
+       refer original editing buffer.\r
+       (message-check-news-syntax): Call `message-check-news-body-syntax'\r
+       in `mime-edit-buffer'.\r
+       (message-do-fcc): Use `message-encoding-buffer' to get contents;\r
+       run `message-header-hook'.\r
+       (message-cancel-news): Use `std11-extract-address-components'\r
+       instead of `mail-extract-address-components'; bind\r
+       `message-encoding-buffer' and `message-edit-buffer'.\r
+\r
+       (message-maybe-setup-default-charset): New function.\r
+       (message-maybe-encode): New function.\r
+       (message-mime-insert-article): New function.\r
+       Add setting for mime-view.\r
+\r
+       * lisp/gnus.el (gnus-version-number): for version number for Open\r
+       gnus.\r
+       (gnus-version): Modify for Open gnus.\r
+\r
+       * lisp/gnus-sum.el: Autoload gnus-i18n.\r
+\r
+       (gnus-show-mime): `t' in default.\r
+       (gnus-structured-field-decoder): Use\r
+       `eword-decode-structured-field-body' in default.\r
+       (gnus-unstructured-field-decoder): Use\r
+       `eword-decode-unstructured-field-body' in default.\r
+\r
+       (gnus-parse-headers-hook): Use\r
+       `(gnus-set-summary-default-charset)' in default.\r
+\r
+       (gnus-summary-mode-map): Add binding for\r
+       `gnus-summary-scroll-down' and\r
+       `gnus-summary-preview-mime-message'.\r
+\r
+       (gnus-summary-preview-mime-message): New function.\r
+       (gnus-mime-partial-preview-function): New function.\r
+       Add setting for mime-view.\r
+\r
+       * lisp/gnus-msg.el (gnus-summary-cancel-article): Display\r
+       `gnus-article-buffer' instead ofb `gnus-original-article-buffer'.\r
+       (gnus-extended-version): Don't return version of emacsen.\r
+       (gnus-inews-do-gcc): Refer `message-encoding-buffer'.\r
+\r
+       * lisp/gnus-art.el (gnus-show-mime-method): Use\r
+       `gnus-article-preview-mime-message' instead of `metamail-buffer'\r
+       in default.\r
+       (gnus-decode-encoded-word-method): Use\r
+       `gnus-article-decode-encoded-word' instead of\r
+       `gnus-article-de-quoted-unreadable' in default.\r
+\r
+       Abolish `gnus-hack-decode-rfc1522', `gnus-decode-rfc1522',\r
+       `article-decode-rfc1522', `article-de-quoted-unreadable',\r
+       `article-mime-decode-quoted-printable-buffer' and\r
+       `article-mime-decode-quoted-printable'.\r
+       (gnus-article-decode-rfc1522): New implementation (use\r
+       `eword-decode-header').\r
+\r
+       (gnus-article-preview-mime-message): New function.\r
+       (gnus-article-decode-encoded-word): New function.\r
+       (gnus-content-header-filter): New function.\r
+       (mime-view-quitting-method-for-gnus): New function.\r
+       Add setting for mime-view.\r
+\r
+       * lisp/message.el: Abolish `message-max-size' because it is not\r
+       used.\r
+\r
+       * lisp/message.el: sync with qgnus-0.16.\r
+\r
+       * texi/Makefile, texi/message.texi, texi/gnus.texi, lisp/nnweb.el,\r
+       lisp/nnmh.el, lisp/nnheader.el, lisp/nnfolder.el, lisp/message.el,\r
+       lisp/gnus.el, lisp/gnus-xmas.el, lisp/gnus-uu.el,\r
+       lisp/gnus-sum.el, lisp/gnus-srvr.el, lisp/gnus-picon.el,\r
+       lisp/gnus-group.el, lisp/gnus-cite.el, lisp/gnus-art.el: Quassia\r
+       Gnus v0.16.\r
+\r
+       * lisp/nnmh.el (nnmh-request-list-1): fix maybe.\r
+\r
+       * lisp/message.el (message-do-fcc): Guard\r
+       `coding-system-for-write' by `raw-text'; run\r
+       `message-before-do-fcc-hook'.\r
+\r
+       * lisp/gnus-msg.el (gnus-inews-do-gcc): Guard\r
+       `coding-system-for-write' by `raw-text'; run\r
+       `gnus-before-do-gcc-hook'.\r
+\r
+       * texi/message.texi, texi/gnus.texi, texi/ChangeLog, lisp/nntp.el,\r
+       lisp/nnoo.el, lisp/nnml.el, lisp/nndraft.el, lisp/nnbabyl.el,\r
+       lisp/message.el, lisp/gnus.el, lisp/gnus-xmas.el, lisp/gnus-uu.el,\r
+       lisp/gnus-util.el, lisp/gnus-sum.el, lisp/gnus-start.el,\r
+       lisp/gnus-spec.el, lisp/gnus-soup.el, lisp/gnus-score.el,\r
+       lisp/gnus-msg.el, lisp/gnus-gl.el, lisp/gnus-ems.el,\r
+       lisp/gnus-draft.el, lisp/gnus-cache.el, lisp/gnus-audio.el,\r
+       lisp/gnus-art.el, lisp/gnus-agent.el, lisp/ChangeLog: Quassia Gnus\r
+       v0.15.\r
+\r
+       * lisp/message.el, lisp/ChangeLog: sync with qgnus-0.14.\r
+\r
+       * texi/Makefile, texi/gnus.texi: Quassia Gnus v0.14.\r
+\r
+       * texi/dir: New file.\r
+\r
+       * texi/dir, lisp/pop3.el, lisp/nntp.el, lisp/nnml.el,\r
+       lisp/nnmail.el, lisp/nnfolder.el, lisp/message.el, lisp/lpath.el,\r
+       lisp/gnus.el, lisp/gnus-win.el, lisp/gnus-util.el,\r
+       lisp/gnus-topic.el, lisp/gnus-sum.el, lisp/gnus-start.el,\r
+       lisp/gnus-score.el, lisp/gnus-msg.el, lisp/gnus-mh.el,\r
+       lisp/gnus-cus.el, lisp/gnus-art.el, lisp/gnus-agent.el,\r
+       lisp/ChangeLog: Quassia Gnus v0.14.\r
+\r
+       * lisp/message.el, lisp/ChangeLog: sync with qgnus-0.13.\r
+\r
+       * texi/gnus.texi, texi/ChangeLog, lisp/pop3.el, lisp/nnweb.el,\r
+       lisp/nnmail.el: Quassia Gnus v0.13.\r
+\r
+       * lisp/nnlistserv.el: New file.\r
+\r
+       * lisp/nnlistserv.el, lisp/message.el, lisp/md5.el, lisp/lpath.el,\r
+       lisp/gnus.el, lisp/gnus-topic.el, lisp/gnus-sum.el,\r
+       lisp/gnus-score.el, lisp/gnus-picon.el, lisp/gnus-msg.el,\r
+       lisp/gnus-group.el, lisp/gnus-art.el, lisp/gnus-agent.el,\r
+       lisp/dgnushack.el, lisp/ChangeLog, GNUS-NEWS: Quassia Gnus v0.13.\r
+\r
+       * lisp/message.el: sync with qgnus-0.12.\r
+\r
+       * texi/message.texi, texi/gnus.texi, texi/gnus-faq.texi,\r
+       texi/ChangeLog, lisp/nntp.el, lisp/nnmh.el, lisp/nnmail.el,\r
+       lisp/nndraft.el, lisp/messcompat.el, lisp/message.el,\r
+       lisp/gnus.el, lisp/gnus-xmas.el, lisp/gnus-uu.el,\r
+       lisp/gnus-sum.el, lisp/gnus-score.el, lisp/gnus-salt.el,\r
+       lisp/gnus-msg.el, lisp/gnus-int.el, lisp/gnus-group.el,\r
+       lisp/gnus-demon.el, lisp/gnus-cache.el, lisp/gnus-art.el,\r
+       lisp/gnus-agent.el, lisp/ChangeLog, GNUS-NEWS: Quassia Gnus v0.12.\r
+\r
+       * lisp/message.el (message-send-news-function): Use\r
+       `message-send-news-with-gnus' in default.\r
+       (message-send-via-news): Use `message-send-news' instead of\r
+       `message-send-news-function'.\r
+       (message-send-mail): Don't avoid text properties; run\r
+       `message-encode-mail-hook'.\r
+       (message-send-news): Don't avoid text properties; run\r
+       `message-encode-news-hook'; use `message-send-news-function'.\r
+       (message-send-news-with-gnus): New function.\r
+       (message-cancel-news): Use `message-send-news' instead of\r
+       `message-send-news-function'.\r
index a9f3f9f..ace1fac 100644 (file)
@@ -1,35 +1,35 @@
-========================================================================
-Codename:      T-gnus
-Branch Tag:    ichikawa
-Branch Owner:  Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
-Branch Goal:   Implement latest features of gnus and offline features
-                Use Gnus in Offline status and Multiple POP3 servers.
-Branch Policy: (not defined yet)
-========================================================================
-NEWS:
-
-* New codename: "T-gnus"
-
-  In order to distinguish "ichikawa" branch from 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
-  and the MainTrunk.
-
-  Enable to get Multiple Pop server in POP and APOP using pop3-fma.el
-  (pop3 For Multi Account).
-
-  And added many other features by "ELIPS"
-
-* TODO
-
-  See TODO.ja
-
-* T-gnus 6.8.17 is the last version based on Gnus v5.6.
-  After this , T-gnus 6.10 - this is based on Pterodactyl Gnus.
-
-  The latest T-gnus is T-gnus 6.10.047 (Based on pgnus-0.62).
-  It requires SEMI/WEMI-1.12 , FLIM-1.11 , APEL-9.6(or later).
+========================================================================\r
+Codename:      T-gnus\r
+Branch Tag:    ichikawa\r
+Branch Owner:  Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>\r
+Branch Goal:   Implement latest features of gnus and offline features\r
+                Use Gnus in Offline status and Multiple POP3 servers.\r
+Branch Policy: (not defined yet)\r
+========================================================================\r
+NEWS:\r
+\r
+* New codename: "T-gnus"\r
+\r
+  In order to distinguish "ichikawa" branch from other branches, codename\r
+  was changed to "T-gnus" , gnu with T-Shirt.\r
+\r
+* New Features\r
+\r
+  Use T-gnus in offline(Unplugged) status using gnus-offline.\r
+  T-gnus have also features that have "shuhei-k" branch, "chao-6_9" branch\r
+  , "keiichi" branch and the MainTrunk.\r
+\r
+  Enable to get Multiple Pop server in POP and APOP using pop3-fma.el\r
+  (pop3 For Multi Account).\r
+\r
+  And added many other features by "ELIPS"\r
+\r
+* TODO\r
+\r
+  See TODO.ja\r
+\r
+* T-gnus 6.8.17 is the last version based on Gnus v5.6.\r
+  After this , T-gnus 6.10 - this is based on Pterodactyl Gnus.\r
+\r
+  The latest T-gnus is T-gnus 6.10.048 (Based on pgnus-0.63).\r
+  It requires SEMI/WEMI-1.12 , FLIM-1.11 , APEL-9.6(or later).\r
index 1b57a46..51f3b4e 100644 (file)
-Thu Dec  3 12:53:58 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.62 is released.
-
-1998-12-03 13:38:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-mime-view-all-parts): Work with multiparts. 
-
-1998-12-03  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * mm-view.el (mm-inline-text): Use `point-min-marker' and
-       `point-max-marker'.
-
-1998-12-03 13:22:57  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mailcap.el (mailcap-mime-extensions): Use image/xpm for xpms.
-
-       * gnus-art.el (gnus-mime-display-single): Check for attachment
-       before other tests.
-
-1998-12-03  Didier Verna  <verna@inf.enst.fr>
-
-       * gnus-msg.el (gnus-configure-posting-styles): find a
-       posting-style entry in the group parameters, if any, and honor it
-       at the end.
-
-1998-12-03 13:03:37  Felix Lee  <flee@teleport.com>
-
-       * nntp.el (nntp-after-change-function): Fix. 
-
-1998-12-03 12:44:30  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * mml.el (mml-generate-mime-1): Insert literally.
-
-1998-12-03 00:23:17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mml.el (mml-insert-mime-headers): Removed debug.
-
-1998-12-02 22:22:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-summary-show-article): Destroy parts when
-       prefixed. 
-
-       * mm-encode.el (mm-content-transfer-encoding-defaults): Default
-       application/emacs-lisp to 8bit.
-
-Wed Dec  2 20:24:27 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.61 is released.
-
-1998-12-02 21:12:56  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mml.el (mml-parse-1): Skipped parts.
-       (mml-insert-mime-headers): Nil is a list.
-       (mml-generate-mime-1): Don't insert literally.
-       (mml-read-tag): Drop text props.
-       (mml-read-part): Ditto.
-       (mml-parse-singlepart-with-multiple-charsets): Ditto.
-
-Wed Dec  2 20:07:16 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.60 is released.
-
-1998-12-02 20:11:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mml.el (mml-parse-1): Don't throw contents away.
-
-1998-12-02  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * mml.el (mml-compute-boundary-1): Regexp-quote the boundary.
-
-1998-12-02 18:42:24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mml.el (mml-parse-singlepart-with-multiple-charsets): New
-       function.
-       (mml-parse-1): Use it.
-
-Tue Dec  1 23:04:25 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-art.el (gnus-decode-with-mail-decode-encoded-word-region):
-       Use gnus-newsgroup-default-charset.
-       (article-decode-encoded-words): Remove charset codes.
-       * gnus-sum.el (gnus-newsgroup-default-charset): Use
-       gnus-default-charset.
-
-1998-12-02 03:14:20  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-send-mail): Don't encode here.
-       (message-send-news): Nor here.
-       (message-send): ... but here instead.
-
-       * gnus-picon.el (gnus-picons-display-article-move-p): Changed
-       default to nil.
-       (gnus-article-display-picons): Replace From line.
-       (gnus-group-display-picons): Replace Newsgroups line.
-       (gnus-picons-display-glyph): Set baseline.
-       (gnus-group-display-picons): Piconize the entire Newsgroups line. 
-       (gnus-picons-xbm-face): Revert to old, standard colors.
-
-       * message.el (message-fetch-field): Remove text props.
-
-       * gnus-art.el (gnus-article-normalized-header-length): New
-       variable. 
-       (article-normalize-headers): New command and keystroke.
-
-       * gnus-picon.el (gnus-picons-xbm-face): Changed colors.
-
-Wed Dec  2 01:43:48 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.59 is released.
-
-1998-12-02 01:38:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mml.el (mml-insert-mime-headers): Beep at multiple charsets.
-
-       * gnus-art.el (gnus-mime-copy-part): Set buffer-file-name.
-
-1998-11-30  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * mml.el (mml-generate-mime-1): Handle unquoting end-tags.
-
-1998-12-02 00:15:30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-all-images-fit): New variable.
-       (mm-image-fit-p): Use it.
-
-       * gnus-art.el (gnus-mime-display-single): Use it.
-       (gnus-mime-internalize-part): New command and keystroke.
-
-       * mm-decode.el (mm-user-automatic-external-display): New
-       variable. 
-       (mm-automatic-external-display-p): New function.
-
-       * gnus-picon.el (gnus-picons-xbm-face): Default to sensible
-       colors. 
-
-1998-12-01 23:52:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-summary-repair-multipart): Reselect article. 
-
-       * gnus-art.el (gnus-with-article): Work in the original article
-       buffer. 
-       (gnus-with-article): Work in read-only groups.
-
-Tue Dec  1 00:15:36 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-bodies.el (mm-decode-string): Return original string if not
-       decode.
-
-Mon Nov 30 23:38:02 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-uu.el (mm-uu-dissect): Use mm-make-handle.
-
-1998-12-01 01:53:49  Fran\e$BmP\e(Bis Pinard  <pinard@iro.umontreal.ca>
-
-       * nndoc.el (nndoc-mime-parts-type-p): Do related.
-
-Tue Dec  1 00:46:20 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.58 is released.
-
-1998-11-30  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * mm-decode.el (mm-get-image): Return a glyph, not an image
-       specifier.
-
-1998-11-29  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * rfc2047.el (rfc2047-decode): Bind mm-default-charset.
-
-1998-12-01 01:23:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mail-parse.el (rfc2045): Required.
-
-1998-12-01 00:59:53  William M. Perry  <wmperry@aventail.com>
-
-       * mm-view.el (mm-inline-text): Remove props.
-
-1998-12-01 00:18:47  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-view.el (mm-setup-w3): Protect url-misc.
-
-       * message.el (message-ignored-resent-headers): Remove
-       Gnus-Warning. 
-
-       * mml.el (mml-insert-mime-headers): Use encoding.
-       (mml-parameter-string): Ditto.
-
-       * rfc2045.el: New file.
-       (rfc2045-encode-string): New function.
-
-1998-11-30 23:11:22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mail-parse.el (mail-header-encode-parameter): New function.
-
-       * rfc2231.el (rfc2231-encode-string): New function.
-
-Mon Nov 30 13:52:50 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-bodies.el (mm-decode-string): New function.
-       * mm-view.el (mm-inline-text): Use mm-decode-string.
-
-Mon Nov 30 21:57:00 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.57 is released.
-
-1998-11-23  Felix Lee  <flee@cygnus.com>
-
-       * nntp.el (nntp-async-needs-kluge): new setting.
-       (nntp-async-timer): new var.
-       (nntp-async-process-list): new var.
-       (nntp-async-kluge): new function.
-       (nntp-async-timer-handler): new function.
-       (nntp-async-wait): new function.
-       (nntp-async-stop): new function.
-       (nntp-after-change-function): renamed, and split apart.
-       (nntp-async-trigger): new function.
-       (nntp-do-callback): new function.
-       (nntp-accept-process-output): add optional timeout arg.
-
-       * gnus-async.el (gnus-async-request-fetched-article): fixed.
-       (gnus-async-wait-for-article): new function.
-       (gnus-async-with-semaphore): s/asynch/async/.
-
-1998-11-30 16:54:56  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-with-article): Don't encode.
-       (gnus-insert-mime-button): Fall back on filename from C-D.
-       (gnus-mime-display-single): Have dots right on text/plain
-       attachments. 
-
-       * mm-decode.el (mm-dissect-buffer): Respect Content-Disposition in 
-       broken parts.
-
-       * gnus-art.el (gnus-with-article): Flush cache and backlog.
-
-       * mm-bodies.el (mm-decode-content-transfer-encoding): Also do
-       binhex. 
-
-       * gnus-sum.el (gnus-summary-reparent-thread): Use new macro.
-       (gnus-summary-repair-multipart): New command and keystroke.
-
-       * gnus-art.el (gnus-with-article-buffer): New macro.
-
-Sun Nov 29 23:51:57 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-art.el (gnus-mime-inline-part): Do not get part when
-       undisplay the part.
-
-1998-11-30 03:38:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-util.el (gnus-make-sort-function-1): Allow lambdas.
-
-       * mml.el (mml-read-part): Partition right.
-
-       * mm-decode.el (mm-handle-set-cache): New macro.
-       (mm-handle-cache): Ditto.
-       (mm-make-handle): Ditto.
-       (mm-dissect-singlepart): Use it.
-       (mm-get-image): Use the cache.
-
-1998-11-29 23:44:44  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-mime-display-mixed): Rewrite.
-       (gnus-mime-display-single): Don't insert lines between parts. 
-
-Sun Nov 29 04:55:40 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * nnmail.el (nnmail-file-coding-system-1): New variable.
-       * nnfolder.el (nnfolder-file-coding-system): Ditto.
-       (nnfolder-read-folder): Use nnfolder-file-coding-system.
-       * nnml.el (nnml-file-coding-system): New variable.
-       (nnml-request-article): Use nnml-file-coding-system.
-
-Sun Nov 29 15:12:52 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.56 is released.
-
-1998-11-29 00:52:53  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-mime-display-part): New function.
-       (gnus-mime-display-mixed): Use it.
-
-       * mm-view.el (mm-setup-w3): Don't register.
-
-       * message.el (message-cite-original): Cite parts.
-
-1998-11-28 23:51:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mml.el (mml-parameter-string): New function.
-       (mml-insert-mime-headers): Separated into new function.
-
-1998-11-28  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * mml.el (mml-make-boundary): Use `make-string'.
-
-1998-11-27  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * binhex.el (binhex-insert-char): Ditto.
-
-       * base64.el (base64-insert-char): Ditto.
-
-       * uudecode.el (uudecode-insert-char): Code correctly.
-
-1998-11-28 01:08:19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mml.el (mml-generate-mime): Don't generate multiparts for
-       empties.
-
-       * gnus-art.el (gnus-display-mime): Save excursion.
-
-       * message.el (message-remove-first-header): New function.
-       (message-encode-message-body): Use it.
-
-Fri Nov 27 12:26:10 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.55 is released.
-
-1998-11-27 12:38:52  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-view.el (mm-setup-w3): New function.
-
-       * mm-decode.el (mm-content-id-get-contents): New function.
-       (mm-content-id-get-type): Ditto.
-       (mm-content-id-get-encoding): Ditto.
-       (mm-get-handle-by-content-id): Removed.
-
-1998-11-25  Colin Rafferty  <colin@xemacs.org>
-
-       * message.el (message-generate-new-buffers): Fix tag.
-
-1998-11-25 10:43:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-buffer-name): Check for unique first.
-
-       * gnus-art.el (gnus-unbuttonized-mime-type-p): use
-       gnus-inhibit-mime-unbuttonizing. 
-
-       * gnus-sum.el (t): Bind M-t.
-       (gnus-inhibit-unbuttonizing): New variable.
-       (gnus-summary-toggle-display-buttonized): New command.
-
-       * gnus-art.el (gnus-display-mime): Select article window.
-       (article-strip-trailing-space): New command and keystroke.
-
-       * nneething.el (nneething-include-files): New variable.
-       (nneething-create-mapping): Use it.
-
-       * nntp.el (nntp-possibly-change-group): Use nntp-send-command. 
-
-       * nnvirtual.el (nnvirtual-request-update-mark): Only yodate
-       ayto-expirable marks.
-
-1998-11-24 21:00:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-mime-view-all-parts): Set buffer.
-
-       * gnus-sum.el (gnus-summary-display-buttonized): Don't pass on
-       ARG. 
-
-       * gnus-art.el (gnus-article-mode-line-format): Doc fix.
-
-Tue Nov 24 14:57:41 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-util.el (mm-binary-coding-system): New variable.
-       (mm-with-unibyte-buffer): Use mm-binary-coding-system.
-       * mm-decode.el (mm-display-external): Ditto.
-
-Tue Nov 24 10:43:06 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.54 is released.
-
-1998-11-24 11:21:32  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-       * gnus-sum.el (gnus-newsgroup-default-charset-alist): Note fj. 
-
-1998-11-24 11:14:54  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-save-part): Unquote.
-
-1998-11-24 11:14:39  Matt Armstrong  <matta@geoworks.com>
-
-       * mm-decode.el (mm-save-part): Bind coding system for write. 
-
-1998-11-24 10:42:30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-mode-line-format): New default.
-       (gnus-article-mime-part-status): New function.
-
-       * message.el (message-send-news): Check the body syntax before
-       encoding. 
-
-       * gnus-art.el (gnus-unbuttonized-mime-type): New function.
-       (gnus-mime-display-single): Use it.
-       (gnus-mime-display-alternative): Ditto.
-
-       * mm-decode.el: Check for whether we are running under a term.
-
-1998-11-22 08:12:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-preferred-alternative): Default to first
-       alternative. 
-       (mm-preferred-alternative): No, we dont.
-
-Tue Nov 24 03:01:48 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-decode.el (mm-display-external): Use binary instead of
-       no-conversion.
-       * gnus-agent.el (gnus-agent-file-coding-system): Ditto.
-       * nnheader.el (nnheader-file-coding-system): Ditto.
-       * mm-util.el (mm-with-unibyte-buffer): Use binary instead of nil.
-
-Mon Nov 23 01:51:57 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-sum.el (gnus-newsgroup-setup-default-charset): Use group
-       name without method.
-
-Mon Nov 23 01:26:40 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-sum.el (gnus-newsgroup-default-charset): Rename 
-       coding-system -> default-charset. 
-       (gnus-newsgroup-default-charset-alist): Ditto.
-       (gnus-summary-local-variables): Ditto.
-       (gnus-set-global-variables): Ditto.
-       (gnus-get-newsgroup-headers): Ditto.
-       (gnus-summary-from-or-to-or-newsgroups): Ditto.
-       (gnus-get-newsgroup-headers-xover): Ditto.
-       (gnus-newsgroup-setup-default-charset): Ditto.
-       (article-decode-mime-words): Ditto.
-       (article-decode-charset): Ditto.
-       (article-decode-encoded-words): Ditto.
-       (article-de-quoted-unreadable): Ditto.
-       (gnus-mime-view-all-parts): Ditto.
-       (gnus-mime-externalize-part): Ditto.
-       (gnus-mm-display-part): Ditto.
-       (gnus-mime-display-single): Ditto.
-       (gnus-mime-display-alternative): Ditto.
-       * lpath.el : Ditto.
-
-Mon Nov 23 00:54:33 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * rfc2047.el (rfc2047-decode-region): Do not decode nil charset.
-       * gnus-art.el (article-decode-charset): Overlay
-       rfc2047-default-charset.
-       * message.el (message-draft-coding-system): New variable.
-       (message-set-auto-save-file-name): Use message-draft-coding-system. 
-       * nndraft.el (nndraft-request-article): Ditto.
-       * gnus-start.el (gnus-start-draft-setup): Set charset nil.
-       * gnus-agent.el (gnus-agent-queue-setup): Ditto.
-
-Sun Nov 22 04:42:22 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-uu.el (mm-uu-test): New function.
-       (mm-uu-dissect): Inherit charset and cte from head.
-       * gnus-art.el (article-decode-charset): Use mm-uu-test.
-
-Sat Nov 21 09:57:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.53 is released.
-
-1998-11-21 05:54:19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-get-image): New function.
-       (mm-image-fit-p): New function.
-
-       * gnus-xmas.el (gnus-xmas-annotation-in-region-p): Ditto.
-
-       * gnus-util.el (gnus-annotation-in-region-p): New definition.
-
-       * gnus-art.el (gnus-article-insert-newline): New function.
-       (article-goto-body): New function.
-
-1998-11-20 10:34:04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-mime-display-single): Insert blank line before 
-       buttons.
-
-       * gnus-sum.el (gnus-summary-display-buttonized): New command and
-       keystroke. 
-
-       * gnus-art.el (gnus-mime-display-single): Don't insert a blank
-       line between parts.
-
-       * message.el (message-remove-header): Go to end if wanted.
-
-1998-11-20  Karl Kleinpaste  <karl@justresearch.com>
-
-       * gnus-art.el (gnus-mime-display-alternative): Avoid window
-       movement with save-window-excursion.
-
-Fri Nov 20 03:50:30 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-art.el (gnus-mime-inline-part): Use argument as charset.
-
-Fri Nov 20 03:37:53 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-bodies.el (mm-decode-body): Remove buffer-file-coding-system. 
-
-Fri Nov 20 01:20:38 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Use 
-       gnus-newsgroup-coding-system.
-       (gnus-get-newsgroup-headers): Ditto.
-       (gnus-get-newsgroup-headers-xover): Ditto.
-       (gnus-set-global-variables): Ditto.
-       * gnus-art.el (article-decode-mime-words): Ditto.
-       (article-decode-charset): Ditto.
-       (article-decode-encoded-words): Ditto.
-       (article-de-quoted-unreadable): Ditto.
-       (gnus-mime-view-all-parts): Ditto.
-       (gnus-mime-externalize-part): Ditto.
-       (gnus-mm-display-part): Ditto.
-       (gnus-mime-display-alternative): Ditto.
-       (gnus-mime-display-single): Ditto.
-       * mm-view.el (mm-inline-text): Use default coding system. 
-
-Fri Nov 20 00:54:37 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-sum.el (gnus-newsgroup-coding-system-alist): New variable.
-       (gnus-newsgroup-iso-8859-1-forced-regexp): New variable.
-       (gnus-newsgroup-coding-system): New local variable.
-       (gnus-newsgroup-iso-8859-1-forced): New local variable.
-       (gnus-summary-local-variables): Add two new local variables.
-       (gnus-newsgroup-setup-coding-system): New function.
-       (gnus-select-newsgroup): Setup coding system.
-       * lpath.el: Add two new variables.
-       * mm-util.el (mm-charset-iso-8859-1-forced): New variable.
-       (mm-charset-to-coding-system): Use mm-charset-iso-8859-1-forced.
-       * gnus-cus.el (gnus-group-parameters): Customizable
-       iso-8859-1-forced.
-       
-Fri Nov 20 05:30:26 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.52 is released.
-
-1998-11-20 04:32:23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * rfc2047.el (rfc2047-encode-message-header): Encode the default
-       encoding. 
-
-       * gnus-art.el (gnus-mime-display-single): Insert buttons for
-       undisplayed text types.
-
-       * mm-decode.el (mm-automatic-display-p): Only prefer inlinable
-       types. 
-
-1998-11-19  Felix Lee  <flee@cygnus.com>
-
-       * nntp.el (nntp-after-change-function-callback): recover from C-g.
-
-1998-11-19  Felix Lee  <flee@cygnus.com>
-
-       * gnus-async.el (gnus-asynch-obarray): rename to
-       gnus-async-hashtb, and don't buffer-local it.
-
-       (gnus-async-article-callback): new function.
-       (gnus-make-async-article-function): use it.
-
-       (gnus-async-current-prefetch-group): new var.
-       (gnus-async-current-prefetch-article): new var.
-       (gnus-async-request-fetched-article): are we fetching it already?
-
-       (gnus-async-delete-prefected-entry): s/prefected/prefetched/
-
-1998-11-20 02:49:21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-summary-show-article): Require.
-
-       * message.el: Provide before hooks.
-       (message-send-news): Do MIME before headers.
-
-       * gnus-art.el (gnus-article-check-buffer): New function.
-       (gnus-article-read-summary-keys): Use it.
-
-       * mm-decode.el (mm-user-automatic-display): Display all inline
-       images. 
-
-       * gnus-art.el (gnus-mime-display-single): Don't buttonize so
-       much. 
-       (gnus-unbuttonized-mime-types): New variable.
-
-1998-11-19 06:29:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-inhibit-user-auto-expire): Changed to t. 
-
-       * mm-decode.el (mm-quote-arg): Quote semicolons.
-
-       * gnus-art.el (gnus-mime-display-single): Don't display
-       attachments.
-       (gnus-mime-externalize-part): New command and keystroke.
-
-       * mm-decode.el (mm-dissect-buffer): Pass on the description info. 
-       (mm-alternative-precedence): Changed order.
-
-1998-11-07 17:41:47  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus.el (gnus-method-simplify): New function.
-       (gnus-native-method-p): New function.
-       (gnus-secondary-method-p): Use gnus-method-equal.
-
-       * gnus-start.el (gnus-group-change-level): Shorten select method.
-
-Thu Nov 19 04:48:42 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.51 is released.
-
-1998-11-19 04:02:34  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.el: Applied patches from 5.6.45.
-
-       * gnus-score.el (gnus-score-find-trace): Print complete file
-       paths. 
-       (gnus-score-find-trace): Truncate lines.
-
-       * gnus.el (gnus-message-archive-group): Allow function.
-
-       * message.el (message-encode-message-body): Remove Mime-Version
-       before inserting.
-
-       * gnus-cus.el (gnus-group-customize): Optional topic.
-
-       * gnus-sum.el (gnus-summary-customize-parameters): New command and 
-       keystroke.
-
-Wed Nov 18 13:46:08 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * message.el (message-encode-message-body): Rewrite.
-
-1998-11-18 07:37:47  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mml.el (mml-base-boundary): New variable.
-       (mml-make-boundary): New function.
-
-       * gnus-cache.el (gnus-cache-coding-system): New variable.
-       (gnus-cache-request-article): Use it.
-
-       * message.el (message-insert-mime-part): Delete duplicates.
-
-Wed Nov 18 11:52:19 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-art.el (gnus-mime-display-alternative): Set end of
-       multipart and display even when nothing is preferred.
-
-Wed Nov 18 05:06:44 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.50 is released.
-
-1998-11-18 04:42:01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-inline-media-tests): Check that device-type is
-       fbound. 
-
-       * gnus-sum.el (gnus-summary-sort): Didn't do reverse.
-
-1998-11-07 23:39:48  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus.el (gnus-similar-server-opened): Compare backend.
-
-1998-11-08 03:37:42  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-topic.el (gnus-topic-expire-articles): New function.
-       (gnus-topic-mode-map): Bind it.
-
-       * gnus.texi (Topic Commands): New expiry command. Reordered.
-
-1998-11-10  Miles Bader  <miles@ccs.mt.nec.co.jp>
-
-       * gnus-sum.el
-       (gnus-auto-expirable-marks): New variable.
-       (gnus-inhibit-user-auto-expire): New variable.
-       (gnus-summary-mark-article-as-read, gnus-summary-mark-article):
-       When looking to see if we should expire instead, check
-       gnus-auto-expirable-marks instead of using a hard-wired list.
-       (gnus-summary-mark-as-read-forward,
-       gnus-summary-mark-as-read-backward):
-       Pass gnus-inhibit-user-auto-expire for the no-expire argument to
-       gnus-summary-mark-forward, instead of `t'.
-
-1998-11-18 03:30:26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mml.el (mml-compute-boundary): New function.
-       (mml-compute-boundary-1): New function.
-       (mml-generate-mime-1): Use it.
-
-1998-11-18  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * mml.el (mml-generate-mime-1): Always precede closing boundary
-       with newline.
-
-1998-11-18 02:36:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mml.el (mml-generate-mime-1): Do right boundaries when several
-       multiparts. 
-
-       * mm-decode.el (mm-user-automatic-display): Default to inline
-       jpeg. 
-
-       * mml.el (mml-generate-mime-1): Encode non-text parts.
-
-Wed Nov 18 02:22:23 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.49 is released.
-
-1998-11-18 00:37:43  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-view.el (mm-inline-text): Require w3-vars.
-
-       * gnus-setup.el (gnus-use-tm): Removed.
-
-       * gnus-art.el (gnus-article-goto-part): Don't beep.
-       (gnus-article-view-part): Check return value.
-       (gnus-mime-display-alternative): Don't display when there is
-       nothing to display.
-
-       * mml.el (mml-generate-mime-1): Don't use a unibyte buffer.
-       (mml-generate-mime-1): Use unibyte for binaries.
-
-       * gnus-art.el (gnus-display-mime): Call
-       gnus-article-mime-part-function. 
-       (gnus-mime-part-function): New function.
-       (gnus-article-mime-part-function): New function.
-
-       * mml.el (mml-generate-mime-1): Don't insert so many newlines. 
-
-1998-11-16 06:44:19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mml.el (mml-generate-mime-1): Do it in unibyte buffers.
-
-       * message.el (message-font-lock-keywords): Highlight MML. 
-       (message-mml-face): New font.
-
-Mon Nov 16 23:34:12 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-art.el (gnus-display-mime): Clean up even when no handles.
-       (gnus-mm-display-part): Do not select-window if the article window
-       is not found.
-
-Mon Nov 16 02:26:40 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-sum.el (gnus-summary-move-article): Use no-encode for B m.
-
-Mon Nov 16 02:00:05 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.48 is released.
-
-1998-11-15 23:18:56  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-bodies.el (mm-encode-body): Disbabled for nonmule.
-
-       * mm-util.el (mm-find-charset-region): Bogus change for non-Mule.
-
-       * message.el (message-cite-original-without-signature): Ditto. 
-       (message-cite-original): Quote parts.
-
-Sun Nov 15 22:01:55 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.47 is released.
-
-1998-11-15 20:11:33  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-encode-message-body): Insert MIME warning. 
-
-       * mml.el (mml-read-tag): Look for #tag.
-
-       * mm-util.el (mm-find-charset-region): Check whether
-       enable-multibyte-characters is bound. 
-
-Sun Nov 15 02:01:31 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.46 is released.
-
-1998-11-15 01:54:40  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-encode-message-body): Insert headers at the
-       right spot.
-
-Sun Nov 15 01:13:41 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.45 is released.
-
-1998-11-15 00:28:49  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nndraft.el (nndraft-save-mime-part): Removed.
-       (nndraft-get-mime-part): Ditto.
-
-       * message.el (message-format-mime-old): Removed.
-       (message-encode-message-body): Removed.
-       (message-encode-message-body): Renamed.
-
-1998-11-14 18:27:19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-get-newsgroup-headers): Translate \r's.
-
-       * message.el (message-format-mime): Check message-mime-part.
-
-       * mm-encode.el (mm-mime-file-types): Removed.
-       (mm-default-file-encoding): New definition.
-
-Sat Nov 14 01:29:39 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-view.el (mm-inline-image): Use mm-insert-inline.
-       * gnus-art.el (gnus-mm-display-part): Go to correct position.
-
-Sat Nov 14 05:47:57 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.44 is released.
-
-1998-11-14 03:59:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-format-mime): New function.
-
-       * nndraft.el (nndraft-save-mime-part): New function.
-       (nndraft-get-mime-part): New function.
-
-       * mm-encode.el (mm-default-file-encoding): New function.
-       (mm-content-transfer-encoding): New function.
-       (mm-encode-buffer): New function.
-
-       * message.el: New command.
-       (message-mime-part): New variable.
-       (message-insert-mime-part): New command.
-
-       * mm-encode.el (mm-encode-content-transfer-encoding): New
-       function. 
-
-       * mm-util.el (mm-content-transfer-encoding-defaults): New
-       variable. 
-       (mm-mime-file-types): Taken from TM.
-
-Sat Nov 14 01:51:06 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.43 is released.
-
-1998-11-07  Karl Kleinpaste  <karl@jprc.com>
-
-       * gnus-cus.el (gnus-score-customize): Add "Extra" element.
-       * gnus-score.el (gnus-score-default-header): Ditto.
-       (gnus-header-index): Ditto.
-       (gnus-summary-increase-score): Ditto, & process "extra" requests.
-       (gnus-summary-header): Handle extra headers.
-       (gnus-summary-score-entry): Ditto, & provide new score element.
-       (gnus-summary-score-effect): Ditto.
-       (gnus-score-string): Avoid "extra" string sort, & modify match in
-       "extra" case.
-       * gnus-sum.el (gnus-make-score-map): Add "extra" element.
-
-1998-11-13 20:30:40  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-resend): Bind message-required-mail-headers
-       to nil. 
-
-       * mm-view.el (mm-inline-text): Bind w3-strict-width. 
-
-       * nngateway.el (require): Require cl.
-
-       * gnus-art.el (gnus-button-alist): Exclude more chars from news:
-       things. 
-
-Wed Nov 11 02:15:06 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-agent.el (gnus-agent-fetch-headers): Create directory even
-       when no articles.
-
-1998-11-13 19:25:10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-ignored-resent-headers): Remove X-Gnus.
-
-1998-11-10  Colin Rafferty  <colin@xemacs.org>
-
-       * gnus-sum.el (gnus-ignored-from-addresses): Only quote
-       user-mail-address if non-nil.
-
-1998-11-13 18:50:18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-util.el (gnus-make-sort-function): Do `reverse'.
-       (gnus-make-sort-function-1): Ditto.
-
-       * gnus-art.el (gnus-mm-display-part): Switch to mm in right
-       window. 
-
-1998-11-12 22:31:58  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-util.el (mm-with-unibyte-buffer): Ditto.
-
-       * binhex.el (binhex-decode-region): Quote.
-
-1998-11-10 05:32:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (article-decode-charset): Don't downcase charset.
-
-       * gnus-sum.el (gnus-get-newsgroup-headers-xover): Translate CR's.
-
-Sun Nov  8 23:17:24 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.42 is released.
-
-Sun Nov  8 02:36:33 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-art.el (gnus-display-mime): Add id for alternative part.
-
-1998-11-08 02:24:47  Simon Josefsson  <jas@pdc.kth.se>
-
-       * nntp.el (nntp-send-mode-reader): Revert.
-
-Sun Nov  8 00:45:13 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-agent.el (gnus-agent-fetch-articles): Use with-temp-buffer.
-
-Sat Nov  7 23:07:24 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * message.el (message-make-date): Fix for negative time zones.
-
-Sun Nov  8 01:00:16 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.41 is released.
-
-1998-11-08 00:52:38  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * mm-decode.el (mm-dissect-multipart): Quote regexp.
-
-1998-10-29  Sudish Joseph  <sj@eng.mindspring.net>
-
-       * gnus.el (gnus-short-group-name): When shortening foreign select
-       methods, do not scan for plusses beyond the first colon.
-
-1998-11-07  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-agent.el (gnus-agent-save-group-info): Cater for group info 
-       lines where `group' is the last thing on the line.
-
-1998-11-08 00:35:09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-view-part): Do alternative.
-       (gnus-mime-display-alternative): Insert marker.
-
-1998-11-07 14:33:46  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-dissect-multipart): Quote regexp.
-
-       * nnmail.el (nnmail-expired-article-p): Protect against bogus
-       dates. 
-
-       * gnus-cus.el (gnus-topic): Required.
-
-       * nnheader.el (nnheader-parse-nov): Parse extra.
-       (nnheader-nov-parse-extra): New macro.
-
-1998-10-31 12:33:22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-view-part): Internal move.
-
-1998-10-28  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * gnus-cus-new.el (gnus-custom-topic): New free variable.
-       (gnus-group-customize): Support editing topic parameters.
-
-1998-10-29 12:09:20  Karl Kleinpaste  <karl@jprc.com>
-
-       * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Add
-       indicators. 
-
-1998-10-29 11:31:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-mm-display-part): Return.
-       (gnus-article-view-part): Only go if external.
-       (gnus-article-dumbquotes-map): Do 205.
-
-       * mm-decode.el (mm-display-part): Return what was done.
-
-       * message.el (message-buffer-naming-style): New variable.
-       (message-generate-new-buffers): Extended.
-       (message-buffer-naming-style): Removed.
-       (message-buffer-name): Use it.
-       (message-do-send-housekeeping): Rename new styling.
-
-       * gnus-sum.el (gnus-summary-recenter): Allow
-       gnus-auto-center-summary to be a number.
-
-Wed Nov  4 02:24:39 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * pop3.el (pop3-open-server): Use "binary" instead of
-       "no-conversion".
-
-Sun Nov  1 01:26:42 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-srvr.el (gnus-browse-foreign-server): Set
-       gnus-browse-current-method to the result of gnus-server-to-method.
-
-Thu Oct 29 01:47:44 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-util.el (gnus-pull): Another optional argument.
-       * nnweb.el (nnweb-request-delete-group): Delete from
-       nnweb-group-alist and update active file.
-
-Thu Oct 29 01:05:08 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-group.el (gnus-group-make-group): Accept group of new
-       method.
-
-Wed Oct 28 02:19:16 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-agent.el (gnus-agent-fetch-group-1): Update dribble.
-
-Tue Oct 27 11:59:31 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-view.el (mm-inline-text): Postion of html portion.
-       
-1998-10-29 10:26:54  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nntp.el (nntp-list-active-group): Waited for short strings.
-       (nntp-send-mode-reader): Ditto.
-       (nntp-open-connection): Ditto.
-
-       * gnus-int.el (gnus-request-group-articles): New function.
-
-       * nntp.el (nntp-request-listgroup): New function.
-       (nntp-request-group-articles): Renamed.
-
-1998-10-27 10:37:52  Karl Kleinpaste  <karl@jprc.com>
-
-       * nnheader.el (nnheader-parse-nov): Supply extra.
-
-1998-10-26 23:03:48  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-button-push): Don't go to
-       gnus-article-buffer. 
-
-       * mm-view.el (mm-inline-image): Add a newline.
-
-       * gnus-start.el (gnus-check-first-time-used): Check more.
-
-1998-10-26 23:03:29  Francois Felix Ingrand  <felix@laas.fr>
-
-       * gnus-start.el (gnus-check-first-time-used): Check current.
-
-1998-10-26 22:07:52  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-util.el (mm-find-charset-region): New function.
-
-       * ietf-drums.el (ietf-drums-narrow-to-header): Work when no header.
-
-       * gnus-art.el (gnus-mime-button-menu): Fix.
-
-1998-10-26 22:07:43  Michael Welsh Duggan  <md5i@cs.cmu.edu>
-
-       * gnus-art.el (gnus-mime-button-menu): New definition.
-
-1998-10-26 01:46:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (article-decode-charset): Downcase charset.
-       (article-decode-charset): Pass on type.
-       (article-decode-charset): Check nil charsets.
-       (article-remove-cr): Translate CR to LF.
-       (gnus-ignored-mime-types): Default to nil.
-
-       * nnheader.el (nnheader-insert-nov): Work when not Xref.
-
-       * gnus-sum.el (gnus-ignored-from-addresses): Default to
-       user-mail-address. 
-       (gnus-nov-parse-extra): Didn't return right thing.
-
-1998-10-25 23:25:27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-xmas.el: Use compiled-function-p.
-
-Mon Oct 26 14:37:19 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-decode.el (mm-copy-Yo-buffer): Make it works when no header.
-
-Sun Oct 25 23:11:44 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.40 is released.
-
-1998-10-25 21:41:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-summary-mark-forward): Show thread.
-
-       * gnus-start.el (gnus-check-first-time-used): Ignore dribble. 
-
-       * gnus-agent.el (gnus-agent-fetch-group-1): Bind name.
-
-       * nnml.el (nnml-possibly-create-directory): Check before making.
-
-1998-10-25 19:43:08  Kai Grossjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
-
-       * nnheader.el (nnheader-insert-nov): Don't infloop.
-
-1998-10-25 19:26:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-set-mode-line): Check that the spec has been
-       set up. 
-
-1998-10-25 19:22:03  Joerg Lenneis  <lenneis@statrix2.wu-wien.ac.at>
-
-       * nneething.el (nneething-file-name): New definition.
-
-1998-10-25 17:56:23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-treatment-function-alist): Fix.
-       (gnus-summary-save-in-rmail): Use gnus-output-to-rmail. 
-
-       * nndoc.el (nndoc-dissect-mime-parts-sub): Recognize first part. 
-
-Sun Oct 25 06:23:13 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.39 is released.
-
-1998-10-25 00:34:39  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-ignored-mime-types): New variable.
-       (gnus-mime-display-single): Use it.
-       (gnus-treatment-function-alist): New variable.
-
-       * gnus.el (gnus-mime): New group.
-
-       * gnus-art.el (gnus-mime-display-alternative): Don't destroy
-       things for other parts.
-       (gnus-mime-display-alternative): Place point.
-
-       * gnus.el: autoload gnus-uu-post-news.
-
-       * mailcap.el (mailcap-mailcap-entry-passes-test): Also check
-       needsterm/DISPLAY. 
-
-       * mm-decode.el (mm-display-part): Default to inline text/.*
-       parts. 
-
-       * mm-bodies.el (mm-decode-content-transfer-encoding): Default to
-       8bit. 
-
-       * gnus-art.el (gnus-mime-copy-part): Use normal-mode.
-       (gnus-mime-display-single): Inline all text parts.
-       (gnus-article-narrow-to-signature): Removed mime:: stubs.
-
-1998-10-24 21:38:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nnml.el (nnml-possibly-create-directory): Rewrite.
-       (nnml-request-create-group): Change to right server.
-
-       * gnus-xmas.el (gnus-xmas-define): Use byte-code-function-p. 
-
-       * gnus-sum.el (gnus-set-mode-line): Use truncate-string-to-width. 
-
-       * gnus.el: rmail-output-to-rmail-file autoload.
-
-       * gnus-util.el (gnus-output-to-rmail): Didn't work if not in
-       Gnus. 
-
-       * nnheader.el (nnheader-parse-head): Checked wrong variable.
-
-       * gnus-sum.el (gnus-summary-update-mark): Ignore nil'd marks.
-
-Tue Oct 20 23:37:43 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-art.el (gnus-mime-display-mixed): Multipart in
-       mixed part.
-
-Tue Oct 20 23:36:43 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-sum.el (gnus-summary-exit): Use mm-destroy-parts.
-       
-       * gnus-sum.el (gnus-summary-exit-no-update): Ditto.
-
-Tue Oct 20 16:22:51 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-uu.el (mm-uu-dissect): Create pseudo multipart head.
-
-1998-10-24 20:51:53  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-valid-move-group-p): Make sure group has a
-       value. 
-
-       * gnus-art.el (gnus-article-hidden-text-p): Return nil when not
-       hidden. 
-
-       * gnus-spec.el (gnus-update-format-specifications): Use the
-       article mode line spec.
-
-       * gnus-art.el (gnus-insert-mime-button): Put right type.
-       (gnus-insert-prev-page-button): Ditto.
-       (gnus-insert-next-page-button): Dutti.
-
-       * pop3.el: New version installed.
-
-Sat Oct 24 16:48:51 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-uu.el (mm-uu-dissect): Delete the begining spurious newline
-       and display last part.
-
-Sat Oct 24 20:31:55 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.38 is released.
-
-1998-10-24 07:54:58  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (article-mime-decode-quoted-printable-buffer):
-       Removed. 
-       (article-de-quoted-unreadable): Narrow to default.
-
-       * qp.el (quoted-printable-encode-region): Encode before QP-ing.
-
-       * gnus-art.el (article-decode-charset): Decode even when broken
-       MIME. 
-
-       * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Return
-       name. 
-
-       * gnus-msg.el (gnus-copy-article-buffer): Delete headers.
-
-       * gnus-cache.el (gnus-cache-possibly-enter-article): Use
-       nnheader. 
-
-       * nnmail.el (nnmail-extra-headers): New variable.
-
-       * nnheader.el (nnheader-insert-nov): Insert extra.
-
-       * gnus.el (gnus-summary-line-format): Doc fix.
-
-       * gnus-sum.el (gnus-get-newsgroup-headers): Parse extra.
-       (gnus-nov-parse-line): Ditto.
-       (gnus-nov-parse-extra): New macro.
-       (gnus-header): New function.
-       (gnus-update-summary-mark-positions): Change.
-       (gnus-ignored-from-addresses): New variable.
-       (gnus-summary-insert-from-or-to): New function.
-
-       * gnus.el (gnus-extra-headers): New variable.
-
-       * nnheader.el (make-mail-header): Expand.
-       (mail-header-extra): New macro.
-       (mail-header-set-extra): Ditto.
-       (make-full-mail-header): Expand.
-
-Sat Oct 24 07:41:42 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.37 is released.
-
-1998-10-24 07:29:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-bodies.el (mm-decode-body): Check for multibyticity.
-
-       * mm-util.el (mm-enable-multibyte): Don't always switch multibyte
-       on. 
-
-1998-10-22  Didier Verna  <verna@inf.enst.fr>
-
-       * gnus-spec.el (gnus-balloon-face-function): new function
-       (gnus-parse-format): understand the %< %> specifiers
-       (gnus-parse-complex-format): ditto.
-
-1998-10-24 06:31:33  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.el: Changed following-char to char-after throughout.
-
-1998-10-22 04:05:55  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-display-external): Protect more and message. 
-
-Wed Oct 21 03:26:30 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-xmas.el (gnus-xmas-article-push-button): Go to the
-       position.
-
-Tue Oct 20 23:37:43 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-art.el (gnus-mime-display-mixed): Multipart in
-       mixed part.
-
-Tue Oct 20 23:36:43 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-sum.el (gnus-summary-exit): Use mm-destroy-parts.
-       
-       * gnus-sum.el (gnus-summary-exit-no-update): Ditto.
-
-Tue Oct 20 16:22:51 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-uu.el (mm-uu-dissect): Create pseudo multipart head.
-
-1998-10-21  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * mailcap.el (mailcap-save-binary-file): Use unwind-protect.
-
-       * mm-decode.el (mm-display-external): Set undisplayer to mm
-       buffer, not the current buffer; use unwind-protect.
-
-1998-10-21 00:07:59  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-summary-exit): Destroy parts.
-       (gnus-summary-exit-no-update): Ditto.
-
-1998-10-20 22:02:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-inline-media-tests): Look for w3.
-
-       * mailcap.el (mailcap-mime-data): Inline html.
-
-Tue Oct 20 20:25:03 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.36 is released.
-
-1998-10-20 18:13:08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (article-translate-strings): 
-       (gnus-article-dumbquotes-map): Don't dot.
-
-       * pop3.el (pop3-open-server): Set point right.
-
-       * mm-decode.el (mm-dissect-multipart): Dissect hierarchically. 
-       (mm-dissect-buffer): Ditto.
-       (mm-destroy-part): Ignore non-handles.
-       (mm-remove-part): Ditto.
-       (mm-destroy-parts): New function.
-       (mm-remove-parts): Ditto.
-
-       * gnus-art.el (gnus-mm-display-part): Don't move point.
-
-Tue Oct 20 02:16:36 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-uu.el : New file.
-       
-       * gnus-art.el (gnus-display-mime): Dissect uu stuffs.
-       
-       * mm-bodies.el (mm-decode-content-transfer-encoding): Encoding as
-       a function.
-
-1998-10-20 00:35:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-display-external): Check before selecting.
-
-Sat Sep 26 02:03:00 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-sum.el (gnus-multi-decode-encoded-word-string): Rewrite. 
-       
-       * gnus-sum.el (gnus-decode-encoded-word-methods): New variable.
-       
-       * gnus-sum.el (gnus-decode-encoded-word-methods-cache): New
-       variable.
-       
-       * gnus-sum.el (gnus-encoded-word-method-alist): Deleted.
-       
-       * gnus-art.el (gnus-decode-header-methods): New variable.
-
-       * gnus-art.el (gnus-decode-header-methods-cache): New variable.
-
-       * gnus-art.el (gnus-multi-decode-header): New function.
-       
-Tue Oct 20 00:24:16 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.35 is released.
-
-1998-10-20 00:00:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * uudecode.el (uudecode-decode-region-external): Insert
-       literally. 
-
-       * gnus-xmas.el (gnus-xmas-mime-button-menu): Moved here.
-
-       * mm-bodies.el (mm-decode-body): Optional encoding.
-
-1998-10-19 23:57:57  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-ems.el (gnus-mouse-3): New variable.
-
-       * binhex.el (binhex-decode-region-external): Don't use -internally.
-
-1998-10-16 14:54:02  Simon Josefsson  <jas@pdc.kth.se>
-
-       * mailcap.el (mailcap-parse-mailcaps): Only open regular
-       files.
-
-1998-09-26 22:28:01  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-group.el (gnus-add-marked-articles): Request backend update
-       of flags.
-
-1998-09-26 19:39:31  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-sum.el (gnus-update-read-articles): 
-       (gnus-update-marks): Request backend update of mark.
-
-1998-09-26 19:33:58  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus.texi (Optional Backend Functions): New item,
-       nnchoke-request-set-mark.
-
-1998-09-26 16:27:27  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-range.el (gnus-remove-from-range): Don't add stuff in
-          list to range.
-
-1998-10-19 23:45:13  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-sum.el (gnus-summary-exit-no-update): Don't expire.
-
-1998-10-14  SL Baur  <steve@altair.xemacs.org>
-
-       * gnus-sum.el: Move gnus-save-hidden-threads above where it is
-       first used.
-
-1998-10-10  SL Baur  <steve@altair.xemacs.org>
-
-       * mm-view.el: Require mm-decode for macros.
-
-       * mm-decode.el (mm-handle-type): Move macro declarations above the
-       place where they are used.
-
-Sun Oct 18 13:59:07 1998  Kurt Swanson  <ksw@dna.lth.se>
-
-        * gnus-msg.el (gnus-summary-mail-forward): Erase old forward
-        buffer.
-
-1998-10-19 23:38:11  Katsumi Yamaoka  <yamaoka@ga.sony.co.jp>
-
-       * nnagent.el (nnagent-open-server): Error message.
-
-1998-10-19 23:35:08  Joerg Lenneis  <lenneis@statrix2.wu-wien.ac.at>
-
-       * nnheader.el (nnheader-article-p): Recognize lower-case headers. 
-
-1998-10-19  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * score-mode.el (gnus-score-mode-map): Ditto.
-
-       * message.el (message-mode-map): Ditto.
-
-       * gnus-uu.el (gnus-uu-post-news): Ditto.
-
-       * gnus-kill.el (gnus-kill-file-mode-map): Ditto.
-
-       * gnus-eform.el (gnus-edit-form-mode-map): Ditto.
-
-       * gnus-art.el (gnus-article-edit-mode-map): Use
-       `set-keymap-parent' rather than `copy-keymap'.
-
-1998-10-18  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * gnus-art.el (gnus-mime-button-commands): New variable.
-       (gnus-mime-button-map): Initialize it from
-       `gnus-mime-button-commands'.
-       (gnus-mime-button-menu): New function.
-       (gnus-insert-mime-button): Use `gnus-mime-button-map'.
-
-1998-10-11  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * message.el (message-insert-to): Make `nobody' and `poster'
-       synonymous to `never' and `always' in Mail-Copies-To.
-       (message-reply): Ditto.
-       (message-followup): Ditto.
-
-1998-10-19 23:17:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mailcap.el (mailcap-mime-data): Save sound.
-
-1998-09-24  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * message.el (message-ignored-supersedes-headers): Include
-       `NNTP-Posting-Date'.
-
-1998-10-19 01:25:27  Jonas Steverud  <d4jonas@dtek.chalmers.se>
-
-       * gnus-art.el (gnus-article-dumbquotes-table): New variable.
-
-1998-10-19 00:50:22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-bodies.el (mm-decode-content-transfer-encoding): Use
-       uudecode. 
-
-1998-10-18 18:20:34  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-display-external): Don't switch on save.
-
-1998-10-18 18:14:06  Andy Piper  <andyp@parallax.co.uk>
-
-       * nnmail.el (nnmail-movemail-args): New variable.
-
-1998-10-18 00:17:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (article-translate-strings): 
-
-1998-10-17 22:51:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-view-part): Use it.
-       (gnus-mm-display-part): New function.
-       (article-de-quoted-unreadable): Yse mm-default-coding-system.
-
-       * mm-decode.el (mm-handle-displayed-p): New function.
-
-       * gnus-art.el (gnus-mime-copy-part): Create better names.
-       (gnus-mime-button-line-format): Include dots spec.
-
-1998-10-15  Matt Pharr  <mmp@graphics.stanford.edu>
-
-      * gnus-msg.el (gnus-summary-mail-forward): Erase contents of old
-      forward buffer first.
-
-1998-10-17 21:16:46  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-util.el (gnus-set-window-start): New function.
-
-       * message.el (message-send): Don't check changed.
-
-1998-10-12 15:26:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-setup-buffer): Set params.
-
-       * mm-decode.el (mm-user-display-methods): Inline
-       "message/delivery-status". 
-
-1998-10-11 07:06:38  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-auto-save-directory): Rename.
-       (message-mode): Dof fix.
-
-       * gnus-art.el (gnus-summary-save-in-pipe): Default to "cat".
-       (gnus-summary-save-in-pipe): No, check gnus-last-shell-command. 
-
-       * nndoc.el (nndoc-mime-parts-type-p): Be a bit more forgiving.
-
-       * message.el (message-make-date): Avoid locale.
-
-       * gnus-art.el (gnus-article-edit-done): Allow update before doing
-       cache. 
-
-       * mm-decode.el (mm-display-inline): Goto point-min.
-
-       * gnus-art.el (gnus-article-prepare-display): Not read-only.
-
-       * mm-decode.el (mm-display-external): Reverse before sorting.
-
-       * gnus-draft.el (gnus-draft-send): Allow mail.
-
-1998-10-10 -SL Baur  <steve@altair.xemacs.org>
-
-       * message.el (message-check): Move message-check macro above where 
-       it is first used.
-
-       * gnus-art.el (article-hide-pgp): Hide the PGP 5/GNUPG Hash: line.
-
-1998-10-11 06:45:37  Lloyd Zusman  <ljz@asfast.com>
-
-       * gnus-sum.el (gnus-summary-make-menu-bar): Fix.
-
-Sun Oct 11 02:28:40 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.34 is released.
-
-1998-10-11 02:15:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-inline-media-tests): delivery-status.
-
-       * mm-view.el (mm-inline-text): Provide default.
-
-1998-10-11 01:01:37  Lloyd Zusman  <ljz@asfast.com>
-
-       * mailcap.el (mailcap-possible-viewers): Fix nils.
-
-1998-10-11 00:03:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-edit-exit): Don't do updates.
-       (article-update-date-lapsed): Record the buffer.
-       (article-update-date-lapsed): Do all windows that display article
-       buffers. 
-
-       * nnml.el (nnml-generate-nov-databases-1): Ditto.
-
-       * gnus-score.el (gnus-score-score-files-1): Ignore dotted files. 
-
-       * gnus-art.el (gnus-insert-mime-button): Mark buttons as
-       annoations. 
-
-       * gnus-msg.el (gnus-summary-mail-forward): Decode properly.
-
-1998-10-10 22:07:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-agent.el (gnus-category-add): Change default category to
-       'false. 
-
-       * nnvirtual.el (nnvirtual-update-read-and-marked): Don't nix out
-       scores. 
-
-       * gnus-draft.el (gnus-draft-send): Check server more.
-
-       * gnus-art.el (gnus-article-view-part): New command and keystroke.
-       (gnus-article-goto-part): New function.
-
-       * mm-view.el (mm-inline-text): Insert richtext properly.
-
-       * gnus-art.el (gnus-insert-mime-button): Store handle in alist. 
-
-1998-10-03 15:04:27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * parse-time.el (parse-time-rules): Accept dates far into the past
-       and the future, and parse single-digit numbers as years.
-
-1998-10-02 04:46:46  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-display-external): Chop off directories.
-
-1998-10-01 07:33:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * uudecode.el (uu-decode-region-external): Use
-       insert-file-contents-literally. 
-
-       * gnus-cache.el (gnus-cache-generate-active): Translate _ to :.
-
-1998-10-01 07:02:11  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * uudecode.el: New file.
-
-       * mm-bodies.el (mm-decode-content-transfer-encoding): Do
-       x-uuencode. 
-
-1998-10-01 05:19:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-mime-display-alternative): Set faces.
-
-       * message.el (message-fetch-field): Unfold properly.
-
-       * mm-bodies.el (mm-decode-content-transfer-encoding): Replace CRLF
-       in text/plain.
-
-1998-09-30 05:47:49  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-summary-first-unread-subject): New command.
-       (gnus-auto-select-first): Removed.
-       (gnus-auto-select-first): Extended.
-       (gnus-summary-read-group-1): Use new value.
-
-1998-09-29 13:21:06  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-fix-before-sending): Space.
-
-       * nnmail.el (nnmail-find-file): Don't erase.
-
-Wed Sep 30 23:49:03 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-agent.el (gnus-agent-fetch-headers): Do not decode headers.
-
-Wed Sep 30 23:46:29 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-soup.el (gnus-soup-add-article): Do not decode headers.
-
-Wed Sep 30 23:44:08 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-soup.el (gnus-soup-pack-packet): Pack only if necesary.
-
-Sat Sep 26 03:04:18 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * mm-util.el (mm-with-unibyte-buffer): Make it work in XEmacs
-       20.4.
-
-1998-09-29 11:35:09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-mime-view-all-parts): New command and
-       keystroke. 
-
-       * mm-decode.el (mm-display-external): Translate slashes.
-
-       * nnmail.el (nnmail-find-file): Restrict auto-mode-alist.
-
-       * nndraft.el (nndraft-retrieve-headers): Don't copy so much. 
-
-       * mm-decode.el (mm-quote-arg): Quote spaces.
-       (mm-display-external): Quote args.
-
-1998-09-24 22:27:55  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-inlinable-part-p): New function.
-
-1998-09-25 22:28:01  Simon Josefsson  <jas@pdc.kth.se>
-
-       * mm-util.el (mm-disable-multibyte): New function.
-
-Thu Sep 24 20:28:31 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.33 is released.
-
-1998-09-24 18:47:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-insert-mime-button): Get buffer size.
-
-       * mm-decode.el (mm-display-external): Don't switch for externals. 
-       (mm-dissect-multipart): Don't include end-sep.
-
-       * mm-util.el (mm-get-coding-system-list): New function.
-       (mm-coding-system-list): New variable.
-
-Thu Sep 24 02:08:10 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>
-
-       * gnus-cus.el (gnus-group-parameters): Add charset as a parameter
-
-Thu Sep 24 02:05:48 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>
-
-       * gnus-cus.el (gnus-group-customize): Use variable as cons not as
-       group
-
-Thu Sep 24 01:41:03 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>
-
-       * base64.el (base64-run-command-on-region): External base64
-       decoder do not use coding system
-
-Thu Sep 24 01:39:44 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>
-
-       * mm-decode.el (mm-interactively-view-part): Typo.
-
-Thu Sep 24 01:37:30 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>
-
-       * mm-decode.el (mm-dissect-multipart): Display last part when the
-       article has no close-delimiter
-
-Thu Sep 24 01:28:54 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>
-
-       * mm-decode.el (mm-dissect-buffer): Display parts which have no
-       content-type.
-
-Thu Sep 24 01:23:57 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>
-
-       * gnus-art.el (gnus-display-mime): Typo.
-
-Thu Sep 24 02:29:57 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.32 is released.
-
-1998-09-24 00:27:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-kill.el (gnus-batch-score): Protect against errors.
-
-       * gnus-art.el: Protect against broken headers.
-
-       * mm-decode.el (mm-display-external): Respect needsterm.
-       (mm-display-external): Create buffer for external commands. 
-
-1998-09-23 22:04:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mailcap.el (mailcap-mime-info): Return the proper viewer.
-
-       * mm-decode.el (mm-display-external): Use file name.
-
-1998-09-22  Markus Rost  <markus.rost@mathematik.uni-regensburg.de>
-
-       * gnus-util.el (gnus-output-to-rmail):  adjust to
-          `rmail-output-to-rmail-file'
-
-1998-09-23 20:07:00  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-util.el (gnus-output-to-rmail): Reinstated function.
-
-       * gnus-sum.el (gnus-select-newsgroup): Set global variables before
-       headers. 
-
-       * gnus-art.el (article-decode-charset): Fold case.
-
-1998-09-17 15:49:10  Simon Josefsson  <jas@pdc.kth.se>
-
-        * mailcap.el (mailcap-save-binary-file): Goto point-min.
-
-1998-09-23 19:48:52  Aaron M. Ucko  <amu@mit.edu>
-
-       * nnmail.el (nnmail-check-duplication): Enter into duplicate list
-       after being stored.
-
-Tue Sep 15 16:15:16 1998  Kurt Swanson  <ksw@dna.lth.se>
-
-       * gnus-salt.el (gnus-pick-setup-message): Return from whence ye
-       come.
-
-1998-09-23 19:42:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-xmas.el (wid-edit): Required.
-
-       * gnus-ems.el (gnus-widget-button-keymap): New variable.
-
-Sun Sep 20 00:27:55 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>
-
-       * gnus-art.el (gnus-mime-inline-part): remove part if necessary
-
-1998-09-23 19:30:52  Matt Armstrong  <matta@geoworks.com>
-
-       * gnus-art.el (article-decode-charset): Narrow to the correct
-       region. 
-
-       * mm-bodies.el: Fix autoload.
-
-1998-09-22 18:35:12  Lee Willis  <lee@gbdirect.co.uk>
-
-       * gnus-art.el (gnus-mime-button-line-format): Doc fix.
-
-1998-09-22 14:53:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * rfc2047.el (rfc2047-decode): Use rfc2047-default-charset. 
-
-1998-09-19 13:58:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-insert-mime-button): Specify keymap.
-       (gnus-article-add-button): Ditto.
-
-       * gnus-sum.el (gnus-summary-insert-pseudos): Use mm.
-
-       * gnus-art.el (gnus-article-prepare-display): Make article mode. 
-       (gnus-article-prepare-display): Bind url-standalone-mode.
-
-       * mm-decode.el (mm-remove-part): Also delete directory.
-       (mm-display-external): Create a private sub-dir.
-
-       * mailcap.el (mailcap-binary-suffixes): New variable.
-       (mailcap-command-p): Use it.
-
-1998-09-16 10:38:21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nnmbox.el (nnmbox-request-group): Change server.
-       (nnmbox-possibly-change-newsgroup): Enable multibyte.
-
-       * message.el (message-encode-message-body): Don't stomp MIME
-       headers. 
-
-       * gnus-sum.el (gnus-summary-edit-article-done): Don't encode
-       unless useful.
-       (gnus-summary-exit): Check for a live article buffer.
-       (gnus-summary-exit-no-update): Ditto.
-
-       * gnus-int.el (gnus-request-replace-article): Accept no-encode
-       param.
-
-       * gnus-sum.el (gnus-article-decoded-p): New variable.
-
-       * mm-decode.el (mm-display-external): Use no-conv.
-
-       * rfc2047.el (rfc2047-q-encode-region): Bound properly. 
-       (rfc2047-charset-encoding-alist): Use B encoding for koi8-r.
-
-       * gnus-art.el (gnus-article-mode-map): Bind button2 to
-       mouse-click. 
-
-1998-09-15 14:38:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-agent.el (gnus-agent-expire): Protect against nil infos.
-
-Mon Sep 14 18:55:38 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.31 is released.
-
-1998-09-14 15:12:59  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-summary-exit): Destroy MIME.
-
-       * mm-decode.el (mm-display-part): Accept no-default.
-
-       * gnus-art.el (gnus-insert-mime-button): buffer-size doesn't take
-       a parameter.
-
-       * gnus-sum.el (gnus-summary-insert-line): Don't exclude faces.
-       (gnus-summary-prepare-threads): Ditto.
-
-       * gnus.el (gnus-article-mode-map): Make sparse keymap.
-
-       * gnus-art.el (gnus-mime-button-line-format-alist): Allow a %d spec.
-       (gnus-mime-button-line-format): Doc fix.
-       (gnus-insert-mime-button): Use it.
-       (gnus-article-add-button): Use widget-convert-button.
-
-       * gnus.el ((featurep 'gnus-xmas)): Defalias gnus-decode-rfc1522 to
-       ignore.
-
-       * mm-decode.el (mm-alternative-precedence): Ditto.
-
-1998-09-14 15:12:49  Conrad Sauerwald  <conrad@stack.nl>
-
-       * mm-decode.el (mm-user-automatic-display): Use enriched.
-
-1998-09-14 15:09:12  Paul Fisher  <rao@gnu.org>
-
-       * mm-decode.el (mm-dissect-multipart): Have the part start on the
-       right place.
-
-1998-09-14 14:33:34  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-msg.el (gnus-inews-add-send-actions): Mark silently.
-
-       * gnus-art.el (article-update-date-lapsed): Only update header if
-       buffer is dispalyed in frame.
-       (gnus-article-prepare-display): New function.
-       (gnus-article-prepare): Use it.
-
-1998-09-14 08:16:43  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-mime-inline-part): New command and keystroke.
-
-       * mm-view.el (mm-insert-inline): New function.
-
-       * mm-decode.el (mm-pipe-part): Bugged.
-
-       * gnus-agent.el (gnus-agent-send-mail): Don't encode.
-
-       * mm-bodies.el (mm-encode-body): Move over the body.
-
-       * nnmbox.el (nnmbox-read-mbox): Enable multibyte.
-
-       * rfc2047.el (rfc2047-q-encode-region): Would bug out.
-
-1998-09-13  Fran\e$BmP\e(Bis Pinard  <pinard@iro.umontreal.ca>
-
-       * nndoc.el: Make nndoc-dissection-alist simpler for MIME, adjust all
-          related functions.  Handle message/rfc822 parts.  Display subject on
-          multipart summary lines.  Display name on sub-parts when available.
-
-1998-09-14 07:36:38  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * mailcap.el (mailcap-command-p): New version.
-
-1998-09-13  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-agent.el (gnus-agent-expire): Stop expiry barfing on killed
-       groups.
-
-1998-09-13 18:34:06  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-make-date): Remove weekday name.
-
-       * mm-decode.el (mm-dissect-buffer): Protect against broken
-       headers.
-
-       * mailcap.el (mailcap-command-in-path-p): New function.
-       (mailcap-command-p): Renamed.
-
-1998-09-13 17:58:47  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * rfc2047.el (eval): Autoload.
-
-1998-09-13 12:22:40  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-decode-encoded-word-functions): New variable.
-       (gnus-multi-decode-encoded-word-string): New function.
-       (gnus-encoded-word-method-alist): New variable.
-       (gnus-decode-encoded-word-functions): Removed.
-
-1998-09-13  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-int.el (gnus-request-replace-article): Replace
-       message-narrow-to-headers with message-narrow-to-head
-
-1998-09-13 12:05:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * drums.el (drums-quote-string): Reversed match.
-
-       * message.el (message-make-date): Use weekday name.
-
-Sun Sep 11 10:27:15 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.30 is released.
-
-1998-09-13 08:00:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (article-decode-encoded-words): Use it.
-       (gnus-decode-header-function): New variable.
-
-       * gnus-sum.el (gnus-nov-parse-line): Use it.
-       (gnus-decode-encoded-word-function): New variable.
-
-       * gnus-msg.el (gnus-copy-article-buffer): Decode the right
-       buffer.
-
-       * gnus-art.el (gnus-insert-mime-button): Use widget.
-       (gnus-widget-press-button): New function.
-       (gnus-article-prev-button): Removed.
-       (gnus-article-next-button): Ditto.
-       (gnus-article-add-button): Ditto.
-
-       * gnus.el (gnus-article-mode-map): Inherit from widget.
-       (gnus-article-mode-map): No, don't.
-
-       * mm-decode.el (mm-dissect-buffer): Store Content-ID things.
-       (mm-content-id-alist): New variable.
-       (mm-get-content-id): New function.
-
-       * gnus-art.el (gnus-request-article-this-buffer): Only decode
-       articles if we are fetching to the article buffer.
-
-1998-09-13 07:58:59  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-sum.el (gnus-summary-move-article): Don't decode accepting
-       articles.
-
-1998-09-13 07:23:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-util.el (mm-mime-charset): Try to use safe-charsets.
-       (mm-default-mime-charset): New variable.
-
-       * rfc2047.el (rfc2047-dissect-region): Dissect using tspecials.
-
-       * drums.el (drums-quote-string): Reversed test.
-
-1998-09-12 14:29:21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-util.el (mm-insert-rfc822-headers): Possibly not quote
-       string.
-
-       * drums.el (drums-quote-string): New function.
-
-       * rfc2047.el (rfc2047-encode-message-header): Goto point-min.
-       (rfc2047-b-encode-region): Chop lines.
-       (rfc2047-q-encode-region): Ditto.
-
-Sat Sep 12 13:27:15 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.29 is released.
-
-1998-09-12 12:46:30  Istvan Marko  <imarko@pacificnet.net>
-
-       * mm-decode.el (mm-save-part): Message right.
-
-1998-09-12 11:30:01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * drums.el (drums-parse-address): Returned a list instead of a
-       string.
-       (drums-remove-whitespace): Skip comments.
-       (drums-parse-addresses): Didn't work.
-
-Sat Sep 12 09:17:30 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.28 is released.
-
-1998-09-12 04:57:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-mime-button-map): Use the article keymap as a
-       starting point.
-       (article-decode-encoded-words): Rename.
-
-       * message.el (message-narrow-to-headers-or-head): New function.
-
-       * gnus-int.el (gnus-request-accept-article): Narrow to the right
-       region.
-
-       * message.el (message-send-news): Encode body after checking
-       syntax.
-
-       * gnus-art.el (gnus-mime-button-line-format): Allow descriptions.
-
-       * mm-decode.el (mm-save-part): Use Content-Disposition filename.
-
-       * gnus-art.el (gnus-display-mime): Respect disposition.
-
-       * mm-decode.el (mm-preferred-alternative): Respect disposition.
-
-       * gnus-art.el (article-strip-multiple-blank-lines): Don't delete
-       text with annotations.
-
-       * message.el (message-make-date): Fix sign for negative time
-       zones.
-
-       * mm-view.el (mm-inline-image): Insert a space at the end of the
-       image.
-
-       * mail-parse.el: New file.
-
-       * rfc2231.el: New file.
-
-       * drums.el (drums-content-type-get): Removed.
-       (drums-parse-content-type): Ditto.
-
-       * mailcap.el (mailcap-mime-data): Use symbols instead of strings.
-
-Fri Sep 11 18:23:34 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.27 is released.
-
-1998-09-11 12:42:07  Lars Magne Ingebrigtsen- <larsi@gnus.org>
-
-       * mm-decode.el (mm-alternative-precedence): New variable.
-       (mm-preferred-alternative): New function.
-
-       * gnus-art.el (gnus-mime-copy-part): New command.
-
-       * mm-decode.el (mm-get-part): New function.
-
-       * mm-view.el: New file.
-
-       * mm-decode.el (mm-dissect-buffer): Downcase cte.
-       (mm-display-part): Default to mailcap-save-binary-file.
-
-Fri Sep 11 12:32:50 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.26 is released.
-
-1998-09-11 08:25:33  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el (mm-interactively-view-part): New function.
-
-       * gnus-art.el (gnus-mime-view-part): New command.
-
-       * mm-decode.el (mm-last-shell-command): New variable.
-
-       * mailcap.el (mailcap-mime-info): Allow returning all matches.
-
-       * mm-decode.el (mm-save-part): New function.
-
-       * gnus-art.el (article-decode-charset): Protect against buggy
-       content-types.
-       (gnus-mime-pipe-part): New command.
-       (gnus-mime-save-part): New command.
-       (gnus-mime-button-map): New keymap.
-       (gnus-mime-button-line-format): New variable.
-       (gnus-insert-mime-button): New function.
-       (gnus-display-mime): Use it.
-
-       * gnus-util.el (gnus-dd-mmm): Removed length spec.
-
-       * mm-decode.el (mm-inline-text): Decode charsets.
-
-       * gnus-art.el (gnus-article-save): Comment fix.
-
-       * gnus-int.el (gnus-start-news-server): When in batch, don't
-       prompt.
-
-       * gnus-cache.el (gnus-cache-possibly-enter-article): Don't
-       decode.
-
-       * mm-decode.el (mm-inline-media-tests): Add audio.
-       (mm-inline-audio): New function.
-
-1998-09-11 08:19:22  Katsumi Yamaoka  <yamaoka@ga.sony.co.jp>
-
-       * gnus-art.el (article-make-date-line): Didn't work.
-
-       * parse-time.el (parse-time-string): One too many nils.
-
-Fri Sep 11 08:09:40 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.25 is released.
-
-1998-09-11 07:38:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (article-remove-trailing-blank-lines): Don't remove
-       annotations.
-
-       * gnus.el ((featurep 'gnus-xmas)): New
-       'gnus-annotation-in-region-p alias.
-
-1998-09-10 06:20:52  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-util.el (mm-with-unibyte-buffer): New function.
-
-       * gnus-uu.el (gnus-quote-arg-for-sh-or-csh): Renamed.
-
-       * mm-decode.el (mm-inline-media-tests): New variable.
-
-       * gnus-sum.el (gnus-summary-exit): Destroy handles.
-
-       * gnus-art.el (gnus-article-mime-handles): New variable.
-
-       * drums.el (drums-narrow-to-header): New function.
-
-       * gnus-art.el (article-decode-charset): Use it.
-
-       * drums.el (drums-content-type-get): New function.
-
-       * mm-util.el (mm-content-type-charset): Removed.
-
-       * drums.el (drums-syntax-table): @ is word.
-       (drums-parse-content-type): New function.
-
-       * parse-time.el (parse-time-rules): Parse "Wed, 29 Apr 98 0:26:01
-       EDT" times.
-
-       * gnus-util.el (gnus-date-get-time): Use safe date.
-
-       * gnus-sum.el (gnus-show-mime): Removed.
-       (gnus-summary-toggle-mime): Removed.
-
-       * gnus-art.el (gnus-strict-mime): Removed.
-       (gnus-article-prepare): Don't do MIME.
-       (gnus-decode-encoded-word-method): Removed.
-       (gnus-show-mime-method): Removed.
-
-Thu Sep 10 04:03:29 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.24 is released.
-
-1998-09-10 01:58:24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-summary-show-article): Don't decode chars if
-       PREFIX.
-
-       * parse-time.el (parse-time-rules): Accept times that look like
-       "h:mm".
-
-       * message.el (message-make-date): Use zone properly.
-
-       * gnus.el: Autoload gnus-batch.
-
-       * gnus-art.el (article-de-quoted-unreadable): Do not do
-       gnus-article-decode-rfc1522.
-
-       * gnus-msg.el (gnus-inews-do-gcc): Use it.
-
-       * gnus-int.el (gnus-request-accept-article): Accept a no-encode
-       param.
-
-       * message.el (message-encode-message-body): Check for us-ascii.
-
-       * gnus-msg.el (gnus-extended-version): Move Gnus version comments
-       to the left.
-
-1998-09-09 13:18:13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (article-decode-charset): Rename.
-
-Wed Sep  9 12:25:48 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.23 is released.
-
-1998-09-09 12:14:47  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-util.el (gnus-parent-id): Ditto.
-       (gnus-put-text-property-excluding-newlines): Ditto.
-
-       * gnus-sum.el (gnus-dependencies-add-header): Make into subst.
-
-1998-09-08  Karl Kleinpaste  <karl@jprc.com>
-
-       * message.el (message-generate-headers): Generate User-Agent
-       instead of X-Mailer & X-Newsreader.
-
-       * gnus-msg.el (gnus-extended-version): Reformat for USEFOR
-       User-Agent header format.
-
-Tue Sep  8 22:38:27 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.22 is released.
-
-1998-09-08 22:36:54  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-util.el (mm-multibyte-p): Typo.
-
-Tue Sep  8 22:25:53 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.21 is released.
-
-1998-09-08  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * gnus-art.el (article-treat-dumbquotes): Handle \224 correctly.
-
-1998-09-08 22:18:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-util.el (mm-multibyte-p): New function.
-
-Tue Sep  8 21:43:03 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.20 is released.
-
-1998-09-08 11:40:45  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * rfc2047.el (rfc2047-decode-region): Only decode when in
-       multibyte.
-
-       * nnheader.el (nnheader-pathname-coding-system): Changed to binary.
-
-       * gnus-int.el (gnus-request-replace-article): Encode.
-       (gnus-request-accept-article): Encode.
-
-       * gnus-art.el (gnus-request-article-this-buffer): Decode charsets
-       here.
-
-       * gnus.el (gnus-article-display-hook): Take the charset functions
-       out.
-
-       * time-date.el (safe-date-to-time): New function.
-
-       * gnus-util.el (gnus-dd-mmm): Protect against bogus dates.
-
-Tue Sep  8 07:09:28 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.19 is released.
-
-1998-09-08 04:51:39  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * base64.el (base64-encode-region): Accept no-line-break.
-
-       * mm-util.el (mm-mime-charset): New function.
-
-       * gnus-draft.el (gnus-draft-edit-message): Delete article.
-
-Tue Sep  8 04:29:23 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.18 is released.
-
-1998-09-08 02:21:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-send-and-exit): Return t on success.
-       (message-make-date): Make a proper time zone.
-
-       * gnus-draft.el (gnus-draft-send): Only remove article if the
-       sending is successful.
-
-       * drums.el (drums-get-comment): Return the last comment.
-       (drums-parse-address): Parse old-style From headers.
-
-1998-09-07  SL Baur  <steve@altair.xemacs.org>
-
-       * gnus-sum.el (gnus-data-compute-positions): Move below
-       `gnus-save-hidden-threads' so the former is correctly detected as
-       a macro.
-
-1998-09-06  Dave Love  <fx@gnu.org>
-
-       * gnus/nnweb.el (require): Wrap requirement of w3 and url in
-       ignore-errors too, eval'd when compile.  Require w3 stuff at load
-       time for nicer failure if it's not available.
-
-1998-09-08 00:38:39  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * time-date.el (time-to-seconds): Renamed.
-
-       * parse-time.el (parse-time-string): Downcase before handling.
-       (parse-time-rules): Times without seconds have 0 seconds.
-
-       * rfc2047.el (rfc2047-encode-region): New version.
-       (rfc2047-dissect-region): New function.
-
-1998-09-07 01:08:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-make-date): Use symbolic zone.
-
-1998-09-06 23:23:06  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * time-date.el (parse-time): Always use parse-time.
-
-       * parse-time.el (parse-time-syntax): Use vectors.
-
-Sun Sep  6 21:19:26 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.17 is released.
-
-1998-09-06 05:45:17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * time-date.el: Renamed from "date".
-
-       * gnus.el: Removed all timezone dependencies.
-
-       * score-mode.el: Removed.
-       (gnus-score-edit-insert-date): Use date.
-
-       * date.el (float-to-time): New function.
-
-       * nnspool.el (nnspool-seconds-since-epoch): Removed.
-
-       * date.el (time-to-float): New function.
-
-       * message.el (message-make-date): Use format-time-string.
-       (message-make-expires): Use make-date.
-
-       * gnus-xmas.el (gnus-xmas-seconds-since-epoch): Removed.
-
-       * gnus-util.el (gnus-dd-mmm): Use date.
-       (gnus-sortable-date): Ditto.
-
-       * message.el (message-make-date): Take an optional time.
-
-       * gnus: Applied patches from 5.6.43.
-
-       * date.el (if): Use parse-time.
-
-       * gnus-score.el (gnus-summary-score-entry): Make into a command
-       again.
-
-       * gnus-group.el (gnus-group-get-new-news-this-group): Only call if
-       gnus-agent.
-
-       * gnus.el (gnus-agent-meta-information-header): Moved here.
-
-1998-09-05  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-agent.el (gnus-agent-scoreable-headers): New variable.
-       (gnus-agent-fetch-group-1): Score article headers using normal
-       group score files if the download score rule of a category/group
-       is `file'.
-       (gnus-agent-fetch-group-1): Don't parse the entire .overview when
-       deciding what articles to download.
-       (gnus-agent-fetch-group-1): Don't push headers through scoring and
-       predicate processing if predicate is `true' or `false'.
-
-1998-09-06 01:56:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-score.el (gnus-score-load-score-alist): Bind coding system.
-
-       * gnus-art.el (gnus-article-setup-buffer): Enable multibyte.
-
-       * score-mode.el (score-mode-coding-system): New variable.
-       (gnus-score-edit-exit): Use it.
-
-1998-09-04  Jason R Mastaler  <jason@4b.org>
-
-       * drums.el: Corrected typo.
-
-1998-09-05 23:24:43  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * mm-bodies.el (mm-body-encoding): Faster version.
-
-1998-09-05 22:23:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-decode-charset): Only decode text
-       things.
-
-       * message.el (message-output): Use rmail.
-
-       * rfc2047.el (rfc2047-encoded-word-regexp): Allow spaces in the
-       word part.
-
-       * mm-util.el (mm-charset-to-coding-system): Use
-       rfc2047-default-charset.
-       (mm-known-charsets): New variable.
-
-       * message.el (message-caesar-region): Bugged out.
-
-1998-09-06  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-agent.el (gnus-agent-fetch-group-1): Allow lists when
-       specifying `agent-predicate' in a group's parameters.
-
-Sat Sep  5 21:55:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.16 is released.
-
-1998-09-05 17:30:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nnmail.el (nnmail-expired-article-p): Use predicate.
-
-       * date.el (time-less-p): Renamed.
-
-       * gnus-art.el (gnus-article-decode-charset): Really fetch headers
-       from the headers.
-
-       * rfc2047.el (rfc2047-decode-region): Use the mm decoding
-       functions.
-
-       * gnus-group.el (gnus-group-sort-selected-flat): Didn't work at
-       all.
-       (gnus-group-sort-selected-groups-by-alphabet): Changed interface
-       to all functions.
-
-Sat Sep  5 01:45:52 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.15 is released.
-
-1998-09-05 00:21:22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * date.el: New file.
-
-       * gnus-util.el (gnus-encode-date): Removed.
-       (gnus-time-less): Ditto.
-
-       * nnmail.el (nnmail-date-to-time): Removed.
-       (nnmail-time-less): Ditto.
-       (nnmail-days-to-time): Ditto.
-       (nnmail-time-since): Ditto.
-
-       * drums.el: New file.
-
-1998-09-04 00:25:52  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-encode-message-body): Encode headers with
-       body encoding.
-
-       * rfc2047.el (rfc2047-default-charset): Renamed.
-       (rfc2047-encodable-p): Use it.
-
-       * base64.el (mm-util): Required.
-
-1998-09-03 16:28:30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-msg.el (gnus-post-method): Peel off real info from opened
-       servers.
-
-       * gnus-util.el (gnus-output-to-rmail): Removed.
-
-       * gnus-art.el (gnus-summary-save-in-rmail): Use
-       gnus-output-to-rmailrmail-output-to-rmail-file.
-
-       * rfc2047.el (rfc2047-decode-region): Fold case.
-       (rfc2047-decode): Use decode-string.
-
-       * mm-util.el: Provide mm-char-int.
-
-Thu Sep  3 15:23:22 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.14 is released.
-
-1998-09-03 15:08:30  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-bodies.el (mm-body-encoding): Go through the buffer to make
-       sure we have 7bit.
-
-1998-09-02 14:38:18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-msg.el (gnus-post-method): Use opened servers, and remove
-       ducplicates.
-       (gnus-inews-insert-mime-headers): Removed.
-
-       * message.el (message-caesar-region): Protect against MULE chars.
-
-1998-09-02 00:36:23  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * mm-util.el (if): fset the right function.
-
-1998-09-02 00:31:53  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-decode-charset): Use real
-       read-coding-system.
-
-1998-09-01 17:58:40  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-bodies.el (mm-decode-body): Protect against malformed
-       base64.
-       (mm-decode-body): Check that buffer-file-coding-system is
-       non-nil.
-
-Tue Sep  1 10:29:33 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.13 is released.
-
-1998-09-01 09:14:33  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-util.el (gnus-strip-whitespace): Already defined.
-       Removed.
-
-       * gnus-art.el (gnus-article-decode-charset): Strip whitespace.
-
-       * gnus-util.el (gnus-strip-whitespace): New function.
-
-       * mm-util.el (mm-content-type-charset): Downcase.
-
-1998-08-31 23:04:29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-decode-charset): Accept a prefix.
-       (gnus-article-decode-charset): Don't fetch all headers.
-
-       * mm-util.el (mm-read-coding-system): New function.
-
-       * mm-bodies.el (mm-decode-body): Check the right charset.
-
-       * gnus-sum.el (gnus-summary-mode-line-format): Ditto.
-
-       * gnus-art.el (gnus-article-mode-line-format): Use short group
-       format.
-
-Mon Aug 31 23:03:13 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.12 is released.
-
-1998-08-31 22:39:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-bodies.el (mm-decode-body): Don't do charset unless MULE.
-
-       * gnus-art.el (gnus-article-decode-charset): Supply cte.
-       (gnus-article-decode-charset): Always run.
-
-       * mm-bodies.el (mm-decode-body): Decode cte.
-
-Mon Aug 31 22:14:50 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.11 is released.
-
-1998-08-31 14:27:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-encode-message-body): Ditto.
-
-       * gnus-art.el (gnus-article-decode-mime-words): New command and
-       keystroke.
-       (gnus-article-decode-charset): Ditto.
-       (gnus-article-decode-charset): Only work under MULE.
-
-       * mm-util.el (mm-content-type-charset): New function.
-
-       * nnmail.el (nnmail-delete-incoming): Changed to nil.
-
-       * message.el (message-send-mail): Insert MIME headers.
-       (message-check-news-body-syntax): Don't warn for escape sequences.
-       (message-check-news-body-syntax): Insert MIME headers.
-
-       * mm-bodies.el (mm-body-encoding): New function.
-
-       * message.el (message-encode-message-body): New function.
-
-       * mm-bodies.el: New file.
-
-       * mm-util.el (mm-narrow-to-head): New function.
-
-       * rfc2047.el (rfc2047-encode): Use it.
-
-       * mm-util.el: Provide mm-encode-coding-region.
-
-       * gnus-sum.el (gnus-summary-mode): Enable multibyte.
-
-       * gnus-util.el (gnus-set-work-buffer): Enable multibyte.
-
-       * mm-util.el (mm-enable-multibyte): New function.
-
-       * message.el (message-set-work-buffer): Set multibyte.
-
-       * gnus.el (gnus-continuum-version): Be valid forever and ever.
-
-       * gnus-util.el (gnus-point-at-eol): Removed.
-       (gnus-point-at-bol): Ditto.
-
-       * base64.el (base64-decode-region): Commented out messaging.
-
-1998-08-31  Didier Verna  <verna@inf.enst.fr>
-
-       * gnus-msg.el (gnus-group-mail): make it behave like
-       gnus-group-post-news with regards to the prefix (this enables the
-       use of posting styles).
-
-1998-08-31 12:53:32  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.el (gnus-article-display-hook): Added
-       gnus-article-decode-rfc1522 to hook.
-
-Mon Aug 31 12:43:46 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.10 is released.
-
-1998-08-31 11:45:13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nnfolder.el (nnfolder-delete-mail): Narrow to mail and allow
-       hook to be run.
-
-1998-08-30 17:59:07  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * rfc2047.el (rfc2047-encodable-p): Use find-charset-region.
-
-       * mm-util.el (mm-charsets-in-region): Removed.
-
-       * rfc2047.el: Renamed file.
-
-       * gnus-msg.el (gnus-copy-article-buffer): Multibyte.
-
-       * message.el (message-mode): Set multibyte.
-
-       * mm-util.el (mm-charsets-in-region): Copied here.
-
-       * gnus-util.el: Removed gnus-truncate-string.
-
-       * gnus-art.el (gnus-article-decode-mime-words): Use 1522.
-
-       * rfc1522.el (rfc1522-unencoded-charsets): New variable.
-       (rfc1522-encodable-p): New function.
-       (rfc1522-encode-message-header): Use it.
-
-Sun Aug 30 17:46:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.9 is released.
-
-1998-08-30 16:13:08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-util.el: Shadow encode-coding-string.
-
-       * base64.el (base64-encode-region): Don't add newline.
-
-       * rfc1522.el (rfc1522-narrow-to-field): Copied here.
-
-       * mm-util.el: New file.
-
-       * mm-decode.el: Somewhat depleted.
-       * mm-encode.el: Ditto.
-
-       * rfc1522.el: New file.
-
-       * mm-util.el (mm-replace-chars-in-string): Copied here.
-
-       * mm-encode.el (mm-q-encode-region): New function.
-
-       * qp.el (quoted-printable-encode-region): Take an optional CLASS
-       param.
-
-       * mm-encode.el (mm-encode-word-region): Downcase.
-
-Sun Aug 30 15:28:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.8 is released.
-
-1998-08-30 12:23:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-send-mail): Encode headers.
-
-       * qp.el (quoted-printable-encode-region): Encode 8-bit words.
-       (quoted-printable-encode-region): Upcase.
-
-       * message.el (message-default-charset): New variable.
-
-       * qp.el (quoted-printable-encode-region): Optional param FOLD.
-
-       * message.el (message-narrow-to-field): Changed name.
-
-       * mm-encode.el: New file.
-
-       * message.el (message-narrow-to-header): New function.
-
-       * gnus-art.el (gnus-article-decode-mime-words): Place point in the
-       right buffer.
-
-Sun Aug 30 12:15:54 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.7 is released.
-
-1998-08-30 01:26:12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.el: Remove autoload for
-       gnus-article-mime-decode-quoted-printable.
-
-       * mm-decode.el (mm-charset-to-coding-system): Allow iso-8859-1 to
-       be decoded in non-MULE Emacsen.
-
-       * gnus-xmas.el (gnus-xmas-logo-color-alist): More brown.
-
-1998-08-29  SL Baur  <steve@altair.xemacs.org>
-
-       * gnus-xmas.el (gnus-xmas-logo-color-alist): Try shades of brown.
-
-1998-08-30 01:04:57  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * mm-decode.el: Check for coding-system-list.
-
-Sun Aug 30 00:59:15 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.6 is released.
-
-1998-08-30 00:36:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nnheader.el (fboundp): Protect code-coding-string.
-
-       * gnus-art.el (gnus-article-mode): Check that set-buffer-multibyte
-       is available.
-
-Sat Aug 29 23:24:31 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Pterodactyl Gnus v0.5 is released.
-
-1998-08-29 22:38:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-mode): Make article buffer multibyte.
-       (gnus-hack-decode-rfc1522): Removed.
-
-       * mm-decode.el (mm-charset-coding-system-alist): Check better.
-
-Sat Aug 29 22:20:39 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v0.4 is released.
-
-1998-08-29 20:53:29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-decode-mime-words): New command and
-       keystroke.
-
-       * qp.el (quoted-printable-decode-region): Don't use hexl.
-
-       * gnus-xmas.el (gnus-xmas-logo-color-style): Changed to dino.
-
-       * gnus-sum.el (gnus-parse-headers-hook): Default to nil.
-       (gnus-structured-field-decoder): Removed.
-       (gnus-unstructured-field-decoder): Ditto.
-
-       * mm-decode.el: New file.
-
-       * qp.el: New file.
-
-       * gnus-art.el (article-mime-decode-quoted-printable): Removed.
-
-       * gnus-ems.el (fboundp): Removed gnus-split-string.
-
-       * gnus.el (gnus-splash-face): Doc fix.
-
-       * gnus-ems.el (fboundp): Don't bind mail-file-babyl-p.
-
-       * gnus-art.el (article-mime-decode-quoted-printable): Don't use
-       hexl.
-
-       * nnheader.el (nnheader-temp-write): Removed.
-
-Sat Aug 29 20:34:17 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v0.3 is released.
-
-Sat Aug 29 19:32:06 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v0.2 is released.
+Fri Dec  4 04:09:15 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.63 is released.\r\r
+\r\r
+1998-12-04 04:59:20  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-base-boundary): Shorten.\r\r
+\r\r
+       * message.el (message-insert-mime-part): Use default.\r\r
+\r\r
+       * gnus-art.el (gnus-insert-mime-button): Bind gnus-tmp-type-long.\r\r
+\r\r
+1998-12-03  Per Abrahamsen  <abraham@dina.kvl.dk>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-alternative): Use (*) for radio\r\r
+       buttons, not [*].\r\r
+\r\r
+1998-12-04  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * gnus-art.el (gnus-insert-mime-button): Do proper help-echo.\r\r
+\r\r
+1998-12-04 04:48:37  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * gnus-art.el (gnus-insert-mime-button): Fix.\r\r
+\r\r
+1998-12-03  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * message.el (message-insert-mime-part): Nicify prompts.\r\r
+       (message-insert-mime-part): Really delete duplicates.\r\r
+       (message-insert-mime-part): Check against common errors.\r\r
+       (message-insert-mime-part): Fix docstring.\r\r
+\r\r
+1998-12-04 04:41:58  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-internalize-part): Bugged out.\r\r
+\r\r
+1998-12-03  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-button-line-format): Nicify.\r\r
+       (gnus-insert-mime-button): Modify accordingly.\r\r
+\r\r
+1998-12-04 01:50:53  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-display-mime): Set window point.\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Only decode when not\r\r
+       saving. \r\r
+       (mm-alternative-precedence): Prefer multiparts.\r\r
+       (mm-inline-media-tests): Inline multiparts.\r\r
+\r\r
+       * gnus-picon.el (gnus-picons-next-job-internal): Do bar if asked.\r\r
+       Ignore errors when requiring url.\r\r
+\r\r
+       * mml.el (mml-quote-region): New command.\r\r
+\r\r
+       * message.el (message-cite-original): Use it.\r\r
+       (message-cite-original-without-signature): Ditto.\r\r
+\r\r
+Thu Dec  3 12:53:58 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.62 is released.\r\r
+\r\r
+1998-12-03 13:38:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-view-all-parts): Work with multiparts. \r\r
+\r\r
+1998-12-03  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * mm-view.el (mm-inline-text): Use `point-min-marker' and\r\r
+       `point-max-marker'.\r\r
+\r\r
+1998-12-03 13:22:57  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mailcap.el (mailcap-mime-extensions): Use image/xpm for xpms.\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-single): Check for attachment\r\r
+       before other tests.\r\r
+\r\r
+1998-12-03  Didier Verna  <verna@inf.enst.fr>\r\r
+\r\r
+       * gnus-msg.el (gnus-configure-posting-styles): find a\r\r
+       posting-style entry in the group parameters, if any, and honor it\r\r
+       at the end.\r\r
+\r\r
+1998-12-03 13:03:37  Felix Lee  <flee@teleport.com>\r\r
+\r\r
+       * nntp.el (nntp-after-change-function): Fix. \r\r
+\r\r
+1998-12-03 12:44:30  Mike McEwan  <mike@lotusland.demon.co.uk>\r\r
+\r\r
+       * mml.el (mml-generate-mime-1): Insert literally.\r\r
+\r\r
+1998-12-03 00:23:17  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-insert-mime-headers): Removed debug.\r\r
+\r\r
+1998-12-02 22:22:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-show-article): Destroy parts when\r\r
+       prefixed. \r\r
+\r\r
+       * mm-encode.el (mm-content-transfer-encoding-defaults): Default\r\r
+       application/emacs-lisp to 8bit.\r\r
+\r\r
+1998-12-03  Dale Hagglund  <rdh@best.com>\r\r
+\r\r
+       * mm-decode.el (mm-quote-arg): Add quoting of '()', '<>', and '|'.\r\r
+\r\r
+Wed Dec  2 20:24:27 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.61 is released.\r\r
+\r\r
+1998-12-02 21:12:56  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-parse-1): Skipped parts.\r\r
+       (mml-insert-mime-headers): Nil is a list.\r\r
+       (mml-generate-mime-1): Don't insert literally.\r\r
+       (mml-read-tag): Drop text props.\r\r
+       (mml-read-part): Ditto.\r\r
+       (mml-parse-singlepart-with-multiple-charsets): Ditto.\r\r
+\r\r
+Wed Dec  2 20:07:16 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.60 is released.\r\r
+\r\r
+1998-12-02 20:11:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-parse-1): Don't throw contents away.\r\r
+\r\r
+1998-12-02  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * mml.el (mml-compute-boundary-1): Regexp-quote the boundary.\r\r
+\r\r
+1998-12-02 18:42:24  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-parse-singlepart-with-multiple-charsets): New\r\r
+       function.\r\r
+       (mml-parse-1): Use it.\r\r
+\r\r
+Tue Dec  1 23:04:25 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-art.el (gnus-decode-with-mail-decode-encoded-word-region):\r\r
+       Use gnus-newsgroup-default-charset.\r\r
+       (article-decode-encoded-words): Remove charset codes.\r\r
+       * gnus-sum.el (gnus-newsgroup-default-charset): Use\r\r
+       gnus-default-charset.\r\r
+\r\r
+1998-12-02 03:14:20  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-send-mail): Don't encode here.\r\r
+       (message-send-news): Nor here.\r\r
+       (message-send): ... but here instead.\r\r
+\r\r
+       * gnus-picon.el (gnus-picons-display-article-move-p): Changed\r\r
+       default to nil.\r\r
+       (gnus-article-display-picons): Replace From line.\r\r
+       (gnus-group-display-picons): Replace Newsgroups line.\r\r
+       (gnus-picons-display-glyph): Set baseline.\r\r
+       (gnus-group-display-picons): Piconize the entire Newsgroups line. \r\r
+       (gnus-picons-xbm-face): Revert to old, standard colors.\r\r
+\r\r
+       * message.el (message-fetch-field): Remove text props.\r\r
+\r\r
+       * gnus-art.el (gnus-article-normalized-header-length): New\r\r
+       variable. \r\r
+       (article-normalize-headers): New command and keystroke.\r\r
+\r\r
+       * gnus-picon.el (gnus-picons-xbm-face): Changed colors.\r\r
+\r\r
+Wed Dec  2 01:43:48 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.59 is released.\r\r
+\r\r
+1998-12-02 01:38:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-insert-mime-headers): Beep at multiple charsets.\r\r
+\r\r
+       * gnus-art.el (gnus-mime-copy-part): Set buffer-file-name.\r\r
+\r\r
+1998-11-30  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * mml.el (mml-generate-mime-1): Handle unquoting end-tags.\r\r
+\r\r
+1998-12-02 00:15:30  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-all-images-fit): New variable.\r\r
+       (mm-image-fit-p): Use it.\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-single): Use it.\r\r
+       (gnus-mime-internalize-part): New command and keystroke.\r\r
+\r\r
+       * mm-decode.el (mm-user-automatic-external-display): New\r\r
+       variable. \r\r
+       (mm-automatic-external-display-p): New function.\r\r
+\r\r
+       * gnus-picon.el (gnus-picons-xbm-face): Default to sensible\r\r
+       colors. \r\r
+\r\r
+1998-12-01 23:52:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-repair-multipart): Reselect article. \r\r
+\r\r
+       * gnus-art.el (gnus-with-article): Work in the original article\r\r
+       buffer. \r\r
+       (gnus-with-article): Work in read-only groups.\r\r
+\r\r
+Tue Dec  1 00:15:36 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-bodies.el (mm-decode-string): Return original string if not\r\r
+       decode.\r\r
+\r\r
+Mon Nov 30 23:38:02 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-uu.el (mm-uu-dissect): Use mm-make-handle.\r\r
+\r\r
+1998-12-01 01:53:49  Fran\e$BmP\e(Bis Pinard  <pinard@iro.umontreal.ca>\r\r
+\r\r
+       * nndoc.el (nndoc-mime-parts-type-p): Do related.\r\r
+\r\r
+Tue Dec  1 00:46:20 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.58 is released.\r\r
+\r\r
+1998-11-30  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * mm-decode.el (mm-get-image): Return a glyph, not an image\r\r
+       specifier.\r\r
+\r\r
+1998-11-29  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * rfc2047.el (rfc2047-decode): Bind mm-default-charset.\r\r
+\r\r
+1998-12-01 01:23:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mail-parse.el (rfc2045): Required.\r\r
+\r\r
+1998-12-01 00:59:53  William M. Perry  <wmperry@aventail.com>\r\r
+\r\r
+       * mm-view.el (mm-inline-text): Remove props.\r\r
+\r\r
+1998-12-01 00:18:47  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-view.el (mm-setup-w3): Protect url-misc.\r\r
+\r\r
+       * message.el (message-ignored-resent-headers): Remove\r\r
+       Gnus-Warning. \r\r
+\r\r
+       * mml.el (mml-insert-mime-headers): Use encoding.\r\r
+       (mml-parameter-string): Ditto.\r\r
+\r\r
+       * rfc2045.el: New file.\r\r
+       (rfc2045-encode-string): New function.\r\r
+\r\r
+1998-11-30 23:11:22  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mail-parse.el (mail-header-encode-parameter): New function.\r\r
+\r\r
+       * rfc2231.el (rfc2231-encode-string): New function.\r\r
+\r\r
+Mon Nov 30 13:52:50 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-bodies.el (mm-decode-string): New function.\r\r
+       * mm-view.el (mm-inline-text): Use mm-decode-string.\r\r
+\r\r
+Mon Nov 30 21:57:00 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.57 is released.\r\r
+\r\r
+1998-11-23  Felix Lee  <flee@cygnus.com>\r\r
+\r\r
+       * nntp.el (nntp-async-needs-kluge): new setting.\r\r
+       (nntp-async-timer): new var.\r\r
+       (nntp-async-process-list): new var.\r\r
+       (nntp-async-kluge): new function.\r\r
+       (nntp-async-timer-handler): new function.\r\r
+       (nntp-async-wait): new function.\r\r
+       (nntp-async-stop): new function.\r\r
+       (nntp-after-change-function): renamed, and split apart.\r\r
+       (nntp-async-trigger): new function.\r\r
+       (nntp-do-callback): new function.\r\r
+       (nntp-accept-process-output): add optional timeout arg.\r\r
+\r\r
+       * gnus-async.el (gnus-async-request-fetched-article): fixed.\r\r
+       (gnus-async-wait-for-article): new function.\r\r
+       (gnus-async-with-semaphore): s/asynch/async/.\r\r
+\r\r
+1998-11-30 16:54:56  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-with-article): Don't encode.\r\r
+       (gnus-insert-mime-button): Fall back on filename from C-D.\r\r
+       (gnus-mime-display-single): Have dots right on text/plain\r\r
+       attachments. \r\r
+\r\r
+       * mm-decode.el (mm-dissect-buffer): Respect Content-Disposition in \r\r
+       broken parts.\r\r
+\r\r
+       * gnus-art.el (gnus-with-article): Flush cache and backlog.\r\r
+\r\r
+       * mm-bodies.el (mm-decode-content-transfer-encoding): Also do\r\r
+       binhex. \r\r
+\r\r
+       * gnus-sum.el (gnus-summary-reparent-thread): Use new macro.\r\r
+       (gnus-summary-repair-multipart): New command and keystroke.\r\r
+\r\r
+       * gnus-art.el (gnus-with-article-buffer): New macro.\r\r
+\r\r
+Sun Nov 29 23:51:57 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-inline-part): Do not get part when\r\r
+       undisplay the part.\r\r
+\r\r
+1998-11-30 03:38:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-util.el (gnus-make-sort-function-1): Allow lambdas.\r\r
+\r\r
+       * mml.el (mml-read-part): Partition right.\r\r
+\r\r
+       * mm-decode.el (mm-handle-set-cache): New macro.\r\r
+       (mm-handle-cache): Ditto.\r\r
+       (mm-make-handle): Ditto.\r\r
+       (mm-dissect-singlepart): Use it.\r\r
+       (mm-get-image): Use the cache.\r\r
+\r\r
+1998-11-29 23:44:44  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-mixed): Rewrite.\r\r
+       (gnus-mime-display-single): Don't insert lines between parts. \r\r
+\r\r
+Sun Nov 29 04:55:40 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * nnmail.el (nnmail-file-coding-system-1): New variable.\r\r
+       * nnfolder.el (nnfolder-file-coding-system): Ditto.\r\r
+       (nnfolder-read-folder): Use nnfolder-file-coding-system.\r\r
+       * nnml.el (nnml-file-coding-system): New variable.\r\r
+       (nnml-request-article): Use nnml-file-coding-system.\r\r
+\r\r
+Sun Nov 29 15:12:52 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.56 is released.\r\r
+\r\r
+1998-11-29 00:52:53  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-part): New function.\r\r
+       (gnus-mime-display-mixed): Use it.\r\r
+\r\r
+       * mm-view.el (mm-setup-w3): Don't register.\r\r
+\r\r
+       * message.el (message-cite-original): Cite parts.\r\r
+\r\r
+1998-11-28 23:51:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-parameter-string): New function.\r\r
+       (mml-insert-mime-headers): Separated into new function.\r\r
+\r\r
+1998-11-28  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * mml.el (mml-make-boundary): Use `make-string'.\r\r
+\r\r
+1998-11-27  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * binhex.el (binhex-insert-char): Ditto.\r\r
+\r\r
+       * base64.el (base64-insert-char): Ditto.\r\r
+\r\r
+       * uudecode.el (uudecode-insert-char): Code correctly.\r\r
+\r\r
+1998-11-28 01:08:19  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-generate-mime): Don't generate multiparts for\r\r
+       empties.\r\r
+\r\r
+       * gnus-art.el (gnus-display-mime): Save excursion.\r\r
+\r\r
+       * message.el (message-remove-first-header): New function.\r\r
+       (message-encode-message-body): Use it.\r\r
+\r\r
+Fri Nov 27 12:26:10 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.55 is released.\r\r
+\r\r
+1998-11-27 12:38:52  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-view.el (mm-setup-w3): New function.\r\r
+\r\r
+       * mm-decode.el (mm-content-id-get-contents): New function.\r\r
+       (mm-content-id-get-type): Ditto.\r\r
+       (mm-content-id-get-encoding): Ditto.\r\r
+       (mm-get-handle-by-content-id): Removed.\r\r
+\r\r
+1998-11-25  Colin Rafferty  <colin@xemacs.org>\r\r
+\r\r
+       * message.el (message-generate-new-buffers): Fix tag.\r\r
+\r\r
+1998-11-25 10:43:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-buffer-name): Check for unique first.\r\r
+\r\r
+       * gnus-art.el (gnus-unbuttonized-mime-type-p): use\r\r
+       gnus-inhibit-mime-unbuttonizing. \r\r
+\r\r
+       * gnus-sum.el (t): Bind M-t.\r\r
+       (gnus-inhibit-unbuttonizing): New variable.\r\r
+       (gnus-summary-toggle-display-buttonized): New command.\r\r
+\r\r
+       * gnus-art.el (gnus-display-mime): Select article window.\r\r
+       (article-strip-trailing-space): New command and keystroke.\r\r
+\r\r
+       * nneething.el (nneething-include-files): New variable.\r\r
+       (nneething-create-mapping): Use it.\r\r
+\r\r
+       * nntp.el (nntp-possibly-change-group): Use nntp-send-command. \r\r
+\r\r
+       * nnvirtual.el (nnvirtual-request-update-mark): Only yodate\r\r
+       ayto-expirable marks.\r\r
+\r\r
+1998-11-24 21:00:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-view-all-parts): Set buffer.\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-display-buttonized): Don't pass on\r\r
+       ARG. \r\r
+\r\r
+       * gnus-art.el (gnus-article-mode-line-format): Doc fix.\r\r
+\r\r
+Tue Nov 24 14:57:41 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-util.el (mm-binary-coding-system): New variable.\r\r
+       (mm-with-unibyte-buffer): Use mm-binary-coding-system.\r\r
+       * mm-decode.el (mm-display-external): Ditto.\r\r
+\r\r
+Tue Nov 24 10:43:06 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.54 is released.\r\r
+\r\r
+1998-11-24 11:21:32  Katsumi Yamaoka  <yamaoka@jpl.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-newsgroup-default-charset-alist): Note fj. \r\r
+\r\r
+1998-11-24 11:14:54  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-save-part): Unquote.\r\r
+\r\r
+1998-11-24 11:14:39  Matt Armstrong  <matta@geoworks.com>\r\r
+\r\r
+       * mm-decode.el (mm-save-part): Bind coding system for write. \r\r
+\r\r
+1998-11-24 10:42:30  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-article-mode-line-format): New default.\r\r
+       (gnus-article-mime-part-status): New function.\r\r
+\r\r
+       * message.el (message-send-news): Check the body syntax before\r\r
+       encoding. \r\r
+\r\r
+       * gnus-art.el (gnus-unbuttonized-mime-type): New function.\r\r
+       (gnus-mime-display-single): Use it.\r\r
+       (gnus-mime-display-alternative): Ditto.\r\r
+\r\r
+       * mm-decode.el: Check for whether we are running under a term.\r\r
+\r\r
+1998-11-22 08:12:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-preferred-alternative): Default to first\r\r
+       alternative. \r\r
+       (mm-preferred-alternative): No, we dont.\r\r
+\r\r
+Tue Nov 24 03:01:48 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Use binary instead of\r\r
+       no-conversion.\r\r
+       * gnus-agent.el (gnus-agent-file-coding-system): Ditto.\r\r
+       * nnheader.el (nnheader-file-coding-system): Ditto.\r\r
+       * mm-util.el (mm-with-unibyte-buffer): Use binary instead of nil.\r\r
+\r\r
+Mon Nov 23 01:51:57 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-sum.el (gnus-newsgroup-setup-default-charset): Use group\r\r
+       name without method.\r\r
+\r\r
+Mon Nov 23 01:26:40 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-sum.el (gnus-newsgroup-default-charset): Rename \r\r
+       coding-system -> default-charset. \r\r
+       (gnus-newsgroup-default-charset-alist): Ditto.\r\r
+       (gnus-summary-local-variables): Ditto.\r\r
+       (gnus-set-global-variables): Ditto.\r\r
+       (gnus-get-newsgroup-headers): Ditto.\r\r
+       (gnus-summary-from-or-to-or-newsgroups): Ditto.\r\r
+       (gnus-get-newsgroup-headers-xover): Ditto.\r\r
+       (gnus-newsgroup-setup-default-charset): Ditto.\r\r
+       (article-decode-mime-words): Ditto.\r\r
+       (article-decode-charset): Ditto.\r\r
+       (article-decode-encoded-words): Ditto.\r\r
+       (article-de-quoted-unreadable): Ditto.\r\r
+       (gnus-mime-view-all-parts): Ditto.\r\r
+       (gnus-mime-externalize-part): Ditto.\r\r
+       (gnus-mm-display-part): Ditto.\r\r
+       (gnus-mime-display-single): Ditto.\r\r
+       (gnus-mime-display-alternative): Ditto.\r\r
+       * lpath.el : Ditto.\r\r
+\r\r
+Mon Nov 23 00:54:33 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * rfc2047.el (rfc2047-decode-region): Do not decode nil charset.\r\r
+       * gnus-art.el (article-decode-charset): Overlay\r\r
+       rfc2047-default-charset.\r\r
+       * message.el (message-draft-coding-system): New variable.\r\r
+       (message-set-auto-save-file-name): Use message-draft-coding-system. \r\r
+       * nndraft.el (nndraft-request-article): Ditto.\r\r
+       * gnus-start.el (gnus-start-draft-setup): Set charset nil.\r\r
+       * gnus-agent.el (gnus-agent-queue-setup): Ditto.\r\r
+\r\r
+Sun Nov 22 04:42:22 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-uu.el (mm-uu-test): New function.\r\r
+       (mm-uu-dissect): Inherit charset and cte from head.\r\r
+       * gnus-art.el (article-decode-charset): Use mm-uu-test.\r\r
+\r\r
+Sat Nov 21 09:57:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.53 is released.\r\r
+\r\r
+1998-11-21 05:54:19  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-get-image): New function.\r\r
+       (mm-image-fit-p): New function.\r\r
+\r\r
+       * gnus-xmas.el (gnus-xmas-annotation-in-region-p): Ditto.\r\r
+\r\r
+       * gnus-util.el (gnus-annotation-in-region-p): New definition.\r\r
+\r\r
+       * gnus-art.el (gnus-article-insert-newline): New function.\r\r
+       (article-goto-body): New function.\r\r
+\r\r
+1998-11-20 10:34:04  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-single): Insert blank line before \r\r
+       buttons.\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-display-buttonized): New command and\r\r
+       keystroke. \r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-single): Don't insert a blank\r\r
+       line between parts.\r\r
+\r\r
+       * message.el (message-remove-header): Go to end if wanted.\r\r
+\r\r
+1998-11-20  Karl Kleinpaste  <karl@justresearch.com>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-alternative): Avoid window\r\r
+       movement with save-window-excursion.\r\r
+\r\r
+Fri Nov 20 03:50:30 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-inline-part): Use argument as charset.\r\r
+\r\r
+Fri Nov 20 03:37:53 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-bodies.el (mm-decode-body): Remove buffer-file-coding-system. \r\r
+\r\r
+Fri Nov 20 01:20:38 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Use \r\r
+       gnus-newsgroup-coding-system.\r\r
+       (gnus-get-newsgroup-headers): Ditto.\r\r
+       (gnus-get-newsgroup-headers-xover): Ditto.\r\r
+       (gnus-set-global-variables): Ditto.\r\r
+       * gnus-art.el (article-decode-mime-words): Ditto.\r\r
+       (article-decode-charset): Ditto.\r\r
+       (article-decode-encoded-words): Ditto.\r\r
+       (article-de-quoted-unreadable): Ditto.\r\r
+       (gnus-mime-view-all-parts): Ditto.\r\r
+       (gnus-mime-externalize-part): Ditto.\r\r
+       (gnus-mm-display-part): Ditto.\r\r
+       (gnus-mime-display-alternative): Ditto.\r\r
+       (gnus-mime-display-single): Ditto.\r\r
+       * mm-view.el (mm-inline-text): Use default coding system. \r\r
+\r\r
+Fri Nov 20 00:54:37 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-sum.el (gnus-newsgroup-coding-system-alist): New variable.\r\r
+       (gnus-newsgroup-iso-8859-1-forced-regexp): New variable.\r\r
+       (gnus-newsgroup-coding-system): New local variable.\r\r
+       (gnus-newsgroup-iso-8859-1-forced): New local variable.\r\r
+       (gnus-summary-local-variables): Add two new local variables.\r\r
+       (gnus-newsgroup-setup-coding-system): New function.\r\r
+       (gnus-select-newsgroup): Setup coding system.\r\r
+       * lpath.el: Add two new variables.\r\r
+       * mm-util.el (mm-charset-iso-8859-1-forced): New variable.\r\r
+       (mm-charset-to-coding-system): Use mm-charset-iso-8859-1-forced.\r\r
+       * gnus-cus.el (gnus-group-parameters): Customizable\r\r
+       iso-8859-1-forced.\r\r
+       \r\r
+Fri Nov 20 05:30:26 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.52 is released.\r\r
+\r\r
+1998-11-20 04:32:23  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * rfc2047.el (rfc2047-encode-message-header): Encode the default\r\r
+       encoding. \r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-single): Insert buttons for\r\r
+       undisplayed text types.\r\r
+\r\r
+       * mm-decode.el (mm-automatic-display-p): Only prefer inlinable\r\r
+       types. \r\r
+\r\r
+1998-11-19  Felix Lee  <flee@cygnus.com>\r\r
+\r\r
+       * nntp.el (nntp-after-change-function-callback): recover from C-g.\r\r
+\r\r
+1998-11-19  Felix Lee  <flee@cygnus.com>\r\r
+\r\r
+       * gnus-async.el (gnus-asynch-obarray): rename to\r\r
+       gnus-async-hashtb, and don't buffer-local it.\r\r
+\r\r
+       (gnus-async-article-callback): new function.\r\r
+       (gnus-make-async-article-function): use it.\r\r
+\r\r
+       (gnus-async-current-prefetch-group): new var.\r\r
+       (gnus-async-current-prefetch-article): new var.\r\r
+       (gnus-async-request-fetched-article): are we fetching it already?\r\r
+\r\r
+       (gnus-async-delete-prefected-entry): s/prefected/prefetched/\r\r
+\r\r
+1998-11-20 02:49:21  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-show-article): Require.\r\r
+\r\r
+       * message.el: Provide before hooks.\r\r
+       (message-send-news): Do MIME before headers.\r\r
+\r\r
+       * gnus-art.el (gnus-article-check-buffer): New function.\r\r
+       (gnus-article-read-summary-keys): Use it.\r\r
+\r\r
+       * mm-decode.el (mm-user-automatic-display): Display all inline\r\r
+       images. \r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-single): Don't buttonize so\r\r
+       much. \r\r
+       (gnus-unbuttonized-mime-types): New variable.\r\r
+\r\r
+1998-11-19 06:29:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-inhibit-user-auto-expire): Changed to t. \r\r
+\r\r
+       * mm-decode.el (mm-quote-arg): Quote semicolons.\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-single): Don't display\r\r
+       attachments.\r\r
+       (gnus-mime-externalize-part): New command and keystroke.\r\r
+\r\r
+       * mm-decode.el (mm-dissect-buffer): Pass on the description info. \r\r
+       (mm-alternative-precedence): Changed order.\r\r
+\r\r
+1998-11-07 17:41:47  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+       * gnus.el (gnus-method-simplify): New function.\r\r
+       (gnus-native-method-p): New function.\r\r
+       (gnus-secondary-method-p): Use gnus-method-equal.\r\r
+\r\r
+       * gnus-start.el (gnus-group-change-level): Shorten select method.\r\r
+\r\r
+Thu Nov 19 04:48:42 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.51 is released.\r\r
+\r\r
+1998-11-19 04:02:34  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus.el: Applied patches from 5.6.45.\r\r
+\r\r
+       * gnus-score.el (gnus-score-find-trace): Print complete file\r\r
+       paths. \r\r
+       (gnus-score-find-trace): Truncate lines.\r\r
+\r\r
+       * gnus.el (gnus-message-archive-group): Allow function.\r\r
+\r\r
+       * message.el (message-encode-message-body): Remove Mime-Version\r\r
+       before inserting.\r\r
+\r\r
+       * gnus-cus.el (gnus-group-customize): Optional topic.\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-customize-parameters): New command and \r\r
+       keystroke.\r\r
+\r\r
+Wed Nov 18 13:46:08 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * message.el (message-encode-message-body): Rewrite.\r\r
+\r\r
+1998-11-18 07:37:47  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-base-boundary): New variable.\r\r
+       (mml-make-boundary): New function.\r\r
+\r\r
+       * gnus-cache.el (gnus-cache-coding-system): New variable.\r\r
+       (gnus-cache-request-article): Use it.\r\r
+\r\r
+       * message.el (message-insert-mime-part): Delete duplicates.\r\r
+\r\r
+Wed Nov 18 11:52:19 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-alternative): Set end of\r\r
+       multipart and display even when nothing is preferred.\r\r
+\r\r
+Wed Nov 18 05:06:44 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.50 is released.\r\r
+\r\r
+1998-11-18 04:42:01  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-inline-media-tests): Check that device-type is\r\r
+       fbound. \r\r
+\r\r
+       * gnus-sum.el (gnus-summary-sort): Didn't do reverse.\r\r
+\r\r
+1998-11-07 23:39:48  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+       * gnus.el (gnus-similar-server-opened): Compare backend.\r\r
+\r\r
+1998-11-08 03:37:42  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+       * gnus-topic.el (gnus-topic-expire-articles): New function.\r\r
+       (gnus-topic-mode-map): Bind it.\r\r
+\r\r
+       * gnus.texi (Topic Commands): New expiry command. Reordered.\r\r
+\r\r
+1998-11-10  Miles Bader  <miles@ccs.mt.nec.co.jp>\r\r
+\r\r
+       * gnus-sum.el\r\r
+       (gnus-auto-expirable-marks): New variable.\r\r
+       (gnus-inhibit-user-auto-expire): New variable.\r\r
+       (gnus-summary-mark-article-as-read, gnus-summary-mark-article):\r\r
+       When looking to see if we should expire instead, check\r\r
+       gnus-auto-expirable-marks instead of using a hard-wired list.\r\r
+       (gnus-summary-mark-as-read-forward,\r\r
+       gnus-summary-mark-as-read-backward):\r\r
+       Pass gnus-inhibit-user-auto-expire for the no-expire argument to\r\r
+       gnus-summary-mark-forward, instead of `t'.\r\r
+\r\r
+1998-11-18 03:30:26  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-compute-boundary): New function.\r\r
+       (mml-compute-boundary-1): New function.\r\r
+       (mml-generate-mime-1): Use it.\r\r
+\r\r
+1998-11-18  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * mml.el (mml-generate-mime-1): Always precede closing boundary\r\r
+       with newline.\r\r
+\r\r
+1998-11-18 02:36:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-generate-mime-1): Do right boundaries when several\r\r
+       multiparts. \r\r
+\r\r
+       * mm-decode.el (mm-user-automatic-display): Default to inline\r\r
+       jpeg. \r\r
+\r\r
+       * mml.el (mml-generate-mime-1): Encode non-text parts.\r\r
+\r\r
+Wed Nov 18 02:22:23 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.49 is released.\r\r
+\r\r
+1998-11-18 00:37:43  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-view.el (mm-inline-text): Require w3-vars.\r\r
+\r\r
+       * gnus-setup.el (gnus-use-tm): Removed.\r\r
+\r\r
+       * gnus-art.el (gnus-article-goto-part): Don't beep.\r\r
+       (gnus-article-view-part): Check return value.\r\r
+       (gnus-mime-display-alternative): Don't display when there is\r\r
+       nothing to display.\r\r
+\r\r
+       * mml.el (mml-generate-mime-1): Don't use a unibyte buffer.\r\r
+       (mml-generate-mime-1): Use unibyte for binaries.\r\r
+\r\r
+       * gnus-art.el (gnus-display-mime): Call\r\r
+       gnus-article-mime-part-function. \r\r
+       (gnus-mime-part-function): New function.\r\r
+       (gnus-article-mime-part-function): New function.\r\r
+\r\r
+       * mml.el (mml-generate-mime-1): Don't insert so many newlines. \r\r
+\r\r
+1998-11-16 06:44:19  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mml.el (mml-generate-mime-1): Do it in unibyte buffers.\r\r
+\r\r
+       * message.el (message-font-lock-keywords): Highlight MML. \r\r
+       (message-mml-face): New font.\r\r
+\r\r
+Mon Nov 16 23:34:12 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-art.el (gnus-display-mime): Clean up even when no handles.\r\r
+       (gnus-mm-display-part): Do not select-window if the article window\r\r
+       is not found.\r\r
+\r\r
+Mon Nov 16 02:26:40 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-move-article): Use no-encode for B m.\r\r
+\r\r
+Mon Nov 16 02:00:05 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.48 is released.\r\r
+\r\r
+1998-11-15 23:18:56  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-bodies.el (mm-encode-body): Disbabled for nonmule.\r\r
+\r\r
+       * mm-util.el (mm-find-charset-region): Bogus change for non-Mule.\r\r
+\r\r
+       * message.el (message-cite-original-without-signature): Ditto. \r\r
+       (message-cite-original): Quote parts.\r\r
+\r\r
+Sun Nov 15 22:01:55 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.47 is released.\r\r
+\r\r
+1998-11-15 20:11:33  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-encode-message-body): Insert MIME warning. \r\r
+\r\r
+       * mml.el (mml-read-tag): Look for #tag.\r\r
+\r\r
+       * mm-util.el (mm-find-charset-region): Check whether\r\r
+       enable-multibyte-characters is bound. \r\r
+\r\r
+Sun Nov 15 02:01:31 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.46 is released.\r\r
+\r\r
+1998-11-15 01:54:40  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-encode-message-body): Insert headers at the\r\r
+       right spot.\r\r
+\r\r
+Sun Nov 15 01:13:41 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.45 is released.\r\r
+\r\r
+1998-11-15 00:28:49  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * nndraft.el (nndraft-save-mime-part): Removed.\r\r
+       (nndraft-get-mime-part): Ditto.\r\r
+\r\r
+       * message.el (message-format-mime-old): Removed.\r\r
+       (message-encode-message-body): Removed.\r\r
+       (message-encode-message-body): Renamed.\r\r
+\r\r
+1998-11-14 18:27:19  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-get-newsgroup-headers): Translate \r's.\r\r
+\r\r
+       * message.el (message-format-mime): Check message-mime-part.\r\r
+\r\r
+       * mm-encode.el (mm-mime-file-types): Removed.\r\r
+       (mm-default-file-encoding): New definition.\r\r
+\r\r
+Sat Nov 14 01:29:39 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-view.el (mm-inline-image): Use mm-insert-inline.\r\r
+       * gnus-art.el (gnus-mm-display-part): Go to correct position.\r\r
+\r\r
+Sat Nov 14 05:47:57 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.44 is released.\r\r
+\r\r
+1998-11-14 03:59:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-format-mime): New function.\r\r
+\r\r
+       * nndraft.el (nndraft-save-mime-part): New function.\r\r
+       (nndraft-get-mime-part): New function.\r\r
+\r\r
+       * mm-encode.el (mm-default-file-encoding): New function.\r\r
+       (mm-content-transfer-encoding): New function.\r\r
+       (mm-encode-buffer): New function.\r\r
+\r\r
+       * message.el: New command.\r\r
+       (message-mime-part): New variable.\r\r
+       (message-insert-mime-part): New command.\r\r
+\r\r
+       * mm-encode.el (mm-encode-content-transfer-encoding): New\r\r
+       function. \r\r
+\r\r
+       * mm-util.el (mm-content-transfer-encoding-defaults): New\r\r
+       variable. \r\r
+       (mm-mime-file-types): Taken from TM.\r\r
+\r\r
+Sat Nov 14 01:51:06 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.43 is released.\r\r
+\r\r
+1998-11-07  Karl Kleinpaste  <karl@jprc.com>\r\r
+\r\r
+       * gnus-cus.el (gnus-score-customize): Add "Extra" element.\r\r
+       * gnus-score.el (gnus-score-default-header): Ditto.\r\r
+       (gnus-header-index): Ditto.\r\r
+       (gnus-summary-increase-score): Ditto, & process "extra" requests.\r\r
+       (gnus-summary-header): Handle extra headers.\r\r
+       (gnus-summary-score-entry): Ditto, & provide new score element.\r\r
+       (gnus-summary-score-effect): Ditto.\r\r
+       (gnus-score-string): Avoid "extra" string sort, & modify match in\r\r
+       "extra" case.\r\r
+       * gnus-sum.el (gnus-make-score-map): Add "extra" element.\r\r
+\r\r
+1998-11-13 20:30:40  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-resend): Bind message-required-mail-headers\r\r
+       to nil. \r\r
+\r\r
+       * mm-view.el (mm-inline-text): Bind w3-strict-width. \r\r
+\r\r
+       * nngateway.el (require): Require cl.\r\r
+\r\r
+       * gnus-art.el (gnus-button-alist): Exclude more chars from news:\r\r
+       things. \r\r
+\r\r
+Wed Nov 11 02:15:06 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-agent.el (gnus-agent-fetch-headers): Create directory even\r\r
+       when no articles.\r\r
+\r\r
+1998-11-13 19:25:10  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-ignored-resent-headers): Remove X-Gnus.\r\r
+\r\r
+1998-11-10  Colin Rafferty  <colin@xemacs.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-ignored-from-addresses): Only quote\r\r
+       user-mail-address if non-nil.\r\r
+\r\r
+1998-11-13 18:50:18  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-util.el (gnus-make-sort-function): Do `reverse'.\r\r
+       (gnus-make-sort-function-1): Ditto.\r\r
+\r\r
+       * gnus-art.el (gnus-mm-display-part): Switch to mm in right\r\r
+       window. \r\r
+\r\r
+1998-11-12 22:31:58  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-util.el (mm-with-unibyte-buffer): Ditto.\r\r
+\r\r
+       * binhex.el (binhex-decode-region): Quote.\r\r
+\r\r
+1998-11-10 05:32:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (article-decode-charset): Don't downcase charset.\r\r
+\r\r
+       * gnus-sum.el (gnus-get-newsgroup-headers-xover): Translate CR's.\r\r
+\r\r
+Sun Nov  8 23:17:24 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.42 is released.\r\r
+\r\r
+Sun Nov  8 02:36:33 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-art.el (gnus-display-mime): Add id for alternative part.\r\r
+\r\r
+1998-11-08 02:24:47  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+       * nntp.el (nntp-send-mode-reader): Revert.\r\r
+\r\r
+Sun Nov  8 00:45:13 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-agent.el (gnus-agent-fetch-articles): Use with-temp-buffer.\r\r
+\r\r
+Sat Nov  7 23:07:24 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * message.el (message-make-date): Fix for negative time zones.\r\r
+\r\r
+Sun Nov  8 01:00:16 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.41 is released.\r\r
+\r\r
+1998-11-08 00:52:38  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * mm-decode.el (mm-dissect-multipart): Quote regexp.\r\r
+\r\r
+1998-10-29  Sudish Joseph  <sj@eng.mindspring.net>\r\r
+\r\r
+       * gnus.el (gnus-short-group-name): When shortening foreign select\r\r
+       methods, do not scan for plusses beyond the first colon.\r\r
+\r\r
+1998-11-07  Mike McEwan  <mike@lotusland.demon.co.uk>\r\r
+\r\r
+       * gnus-agent.el (gnus-agent-save-group-info): Cater for group info \r\r
+       lines where `group' is the last thing on the line.\r\r
+\r\r
+1998-11-08 00:35:09  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-article-view-part): Do alternative.\r\r
+       (gnus-mime-display-alternative): Insert marker.\r\r
+\r\r
+1998-11-07 14:33:46  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-dissect-multipart): Quote regexp.\r\r
+\r\r
+       * nnmail.el (nnmail-expired-article-p): Protect against bogus\r\r
+       dates. \r\r
+\r\r
+       * gnus-cus.el (gnus-topic): Required.\r\r
+\r\r
+       * nnheader.el (nnheader-parse-nov): Parse extra.\r\r
+       (nnheader-nov-parse-extra): New macro.\r\r
+\r\r
+1998-10-31 12:33:22  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-article-view-part): Internal move.\r\r
+\r\r
+1998-10-28  Per Abrahamsen  <abraham@dina.kvl.dk>\r\r
+\r\r
+       * gnus-cus-new.el (gnus-custom-topic): New free variable.\r\r
+       (gnus-group-customize): Support editing topic parameters.\r\r
+\r\r
+1998-10-29 12:09:20  Karl Kleinpaste  <karl@jprc.com>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Add\r\r
+       indicators. \r\r
+\r\r
+1998-10-29 11:31:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-mm-display-part): Return.\r\r
+       (gnus-article-view-part): Only go if external.\r\r
+       (gnus-article-dumbquotes-map): Do 205.\r\r
+\r\r
+       * mm-decode.el (mm-display-part): Return what was done.\r\r
+\r\r
+       * message.el (message-buffer-naming-style): New variable.\r\r
+       (message-generate-new-buffers): Extended.\r\r
+       (message-buffer-naming-style): Removed.\r\r
+       (message-buffer-name): Use it.\r\r
+       (message-do-send-housekeeping): Rename new styling.\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-recenter): Allow\r\r
+       gnus-auto-center-summary to be a number.\r\r
+\r\r
+Wed Nov  4 02:24:39 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * pop3.el (pop3-open-server): Use "binary" instead of\r\r
+       "no-conversion".\r\r
+\r\r
+Sun Nov  1 01:26:42 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-srvr.el (gnus-browse-foreign-server): Set\r\r
+       gnus-browse-current-method to the result of gnus-server-to-method.\r\r
+\r\r
+Thu Oct 29 01:47:44 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-util.el (gnus-pull): Another optional argument.\r\r
+       * nnweb.el (nnweb-request-delete-group): Delete from\r\r
+       nnweb-group-alist and update active file.\r\r
+\r\r
+Thu Oct 29 01:05:08 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-group.el (gnus-group-make-group): Accept group of new\r\r
+       method.\r\r
+\r\r
+Wed Oct 28 02:19:16 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-agent.el (gnus-agent-fetch-group-1): Update dribble.\r\r
+\r\r
+Tue Oct 27 11:59:31 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-view.el (mm-inline-text): Postion of html portion.\r\r
+       \r\r
+1998-10-29 10:26:54  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * nntp.el (nntp-list-active-group): Waited for short strings.\r\r
+       (nntp-send-mode-reader): Ditto.\r\r
+       (nntp-open-connection): Ditto.\r\r
+\r\r
+       * gnus-int.el (gnus-request-group-articles): New function.\r\r
+\r\r
+       * nntp.el (nntp-request-listgroup): New function.\r\r
+       (nntp-request-group-articles): Renamed.\r\r
+\r\r
+1998-10-27 10:37:52  Karl Kleinpaste  <karl@jprc.com>\r\r
+\r\r
+       * nnheader.el (nnheader-parse-nov): Supply extra.\r\r
+\r\r
+1998-10-26 23:03:48  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-button-push): Don't go to\r\r
+       gnus-article-buffer. \r\r
+\r\r
+       * mm-view.el (mm-inline-image): Add a newline.\r\r
+\r\r
+       * gnus-start.el (gnus-check-first-time-used): Check more.\r\r
+\r\r
+1998-10-26 23:03:29  Francois Felix Ingrand  <felix@laas.fr>\r\r
+\r\r
+       * gnus-start.el (gnus-check-first-time-used): Check current.\r\r
+\r\r
+1998-10-26 22:07:52  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-util.el (mm-find-charset-region): New function.\r\r
+\r\r
+       * ietf-drums.el (ietf-drums-narrow-to-header): Work when no header.\r\r
+\r\r
+       * gnus-art.el (gnus-mime-button-menu): Fix.\r\r
+\r\r
+1998-10-26 22:07:43  Michael Welsh Duggan  <md5i@cs.cmu.edu>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-button-menu): New definition.\r\r
+\r\r
+1998-10-26 01:46:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (article-decode-charset): Downcase charset.\r\r
+       (article-decode-charset): Pass on type.\r\r
+       (article-decode-charset): Check nil charsets.\r\r
+       (article-remove-cr): Translate CR to LF.\r\r
+       (gnus-ignored-mime-types): Default to nil.\r\r
+\r\r
+       * nnheader.el (nnheader-insert-nov): Work when not Xref.\r\r
+\r\r
+       * gnus-sum.el (gnus-ignored-from-addresses): Default to\r\r
+       user-mail-address. \r\r
+       (gnus-nov-parse-extra): Didn't return right thing.\r\r
+\r\r
+1998-10-25 23:25:27  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-xmas.el: Use compiled-function-p.\r\r
+\r\r
+Mon Oct 26 14:37:19 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-decode.el (mm-copy-Yo-buffer): Make it works when no header.\r\r
+\r\r
+Sun Oct 25 23:11:44 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.40 is released.\r\r
+\r\r
+1998-10-25 21:41:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-mark-forward): Show thread.\r\r
+\r\r
+       * gnus-start.el (gnus-check-first-time-used): Ignore dribble. \r\r
+\r\r
+       * gnus-agent.el (gnus-agent-fetch-group-1): Bind name.\r\r
+\r\r
+       * nnml.el (nnml-possibly-create-directory): Check before making.\r\r
+\r\r
+1998-10-25 19:43:08  Kai Grossjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>\r\r
+\r\r
+       * nnheader.el (nnheader-insert-nov): Don't infloop.\r\r
+\r\r
+1998-10-25 19:26:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-set-mode-line): Check that the spec has been\r\r
+       set up. \r\r
+\r\r
+1998-10-25 19:22:03  Joerg Lenneis  <lenneis@statrix2.wu-wien.ac.at>\r\r
+\r\r
+       * nneething.el (nneething-file-name): New definition.\r\r
+\r\r
+1998-10-25 17:56:23  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-treatment-function-alist): Fix.\r\r
+       (gnus-summary-save-in-rmail): Use gnus-output-to-rmail. \r\r
+\r\r
+       * nndoc.el (nndoc-dissect-mime-parts-sub): Recognize first part. \r\r
+\r\r
+Sun Oct 25 06:23:13 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.39 is released.\r\r
+\r\r
+1998-10-25 00:34:39  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-ignored-mime-types): New variable.\r\r
+       (gnus-mime-display-single): Use it.\r\r
+       (gnus-treatment-function-alist): New variable.\r\r
+\r\r
+       * gnus.el (gnus-mime): New group.\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-alternative): Don't destroy\r\r
+       things for other parts.\r\r
+       (gnus-mime-display-alternative): Place point.\r\r
+\r\r
+       * gnus.el: autoload gnus-uu-post-news.\r\r
+\r\r
+       * mailcap.el (mailcap-mailcap-entry-passes-test): Also check\r\r
+       needsterm/DISPLAY. \r\r
+\r\r
+       * mm-decode.el (mm-display-part): Default to inline text/.*\r\r
+       parts. \r\r
+\r\r
+       * mm-bodies.el (mm-decode-content-transfer-encoding): Default to\r\r
+       8bit. \r\r
+\r\r
+       * gnus-art.el (gnus-mime-copy-part): Use normal-mode.\r\r
+       (gnus-mime-display-single): Inline all text parts.\r\r
+       (gnus-article-narrow-to-signature): Removed mime:: stubs.\r\r
+\r\r
+1998-10-24 21:38:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * nnml.el (nnml-possibly-create-directory): Rewrite.\r\r
+       (nnml-request-create-group): Change to right server.\r\r
+\r\r
+       * gnus-xmas.el (gnus-xmas-define): Use byte-code-function-p. \r\r
+\r\r
+       * gnus-sum.el (gnus-set-mode-line): Use truncate-string-to-width. \r\r
+\r\r
+       * gnus.el: rmail-output-to-rmail-file autoload.\r\r
+\r\r
+       * gnus-util.el (gnus-output-to-rmail): Didn't work if not in\r\r
+       Gnus. \r\r
+\r\r
+       * nnheader.el (nnheader-parse-head): Checked wrong variable.\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-update-mark): Ignore nil'd marks.\r\r
+\r\r
+Tue Oct 20 23:37:43 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-mixed): Multipart in\r\r
+       mixed part.\r\r
+\r\r
+Tue Oct 20 23:36:43 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-exit): Use mm-destroy-parts.\r\r
+       \r\r
+       * gnus-sum.el (gnus-summary-exit-no-update): Ditto.\r\r
+\r\r
+Tue Oct 20 16:22:51 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-uu.el (mm-uu-dissect): Create pseudo multipart head.\r\r
+\r\r
+1998-10-24 20:51:53  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-valid-move-group-p): Make sure group has a\r\r
+       value. \r\r
+\r\r
+       * gnus-art.el (gnus-article-hidden-text-p): Return nil when not\r\r
+       hidden. \r\r
+\r\r
+       * gnus-spec.el (gnus-update-format-specifications): Use the\r\r
+       article mode line spec.\r\r
+\r\r
+       * gnus-art.el (gnus-insert-mime-button): Put right type.\r\r
+       (gnus-insert-prev-page-button): Ditto.\r\r
+       (gnus-insert-next-page-button): Dutti.\r\r
+\r\r
+       * pop3.el: New version installed.\r\r
+\r\r
+Sat Oct 24 16:48:51 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-uu.el (mm-uu-dissect): Delete the begining spurious newline\r\r
+       and display last part.\r\r
+\r\r
+Sat Oct 24 20:31:55 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.38 is released.\r\r
+\r\r
+1998-10-24 07:54:58  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (article-mime-decode-quoted-printable-buffer):\r\r
+       Removed. \r\r
+       (article-de-quoted-unreadable): Narrow to default.\r\r
+\r\r
+       * qp.el (quoted-printable-encode-region): Encode before QP-ing.\r\r
+\r\r
+       * gnus-art.el (article-decode-charset): Decode even when broken\r\r
+       MIME. \r\r
+\r\r
+       * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Return\r\r
+       name. \r\r
+\r\r
+       * gnus-msg.el (gnus-copy-article-buffer): Delete headers.\r\r
+\r\r
+       * gnus-cache.el (gnus-cache-possibly-enter-article): Use\r\r
+       nnheader. \r\r
+\r\r
+       * nnmail.el (nnmail-extra-headers): New variable.\r\r
+\r\r
+       * nnheader.el (nnheader-insert-nov): Insert extra.\r\r
+\r\r
+       * gnus.el (gnus-summary-line-format): Doc fix.\r\r
+\r\r
+       * gnus-sum.el (gnus-get-newsgroup-headers): Parse extra.\r\r
+       (gnus-nov-parse-line): Ditto.\r\r
+       (gnus-nov-parse-extra): New macro.\r\r
+       (gnus-header): New function.\r\r
+       (gnus-update-summary-mark-positions): Change.\r\r
+       (gnus-ignored-from-addresses): New variable.\r\r
+       (gnus-summary-insert-from-or-to): New function.\r\r
+\r\r
+       * gnus.el (gnus-extra-headers): New variable.\r\r
+\r\r
+       * nnheader.el (make-mail-header): Expand.\r\r
+       (mail-header-extra): New macro.\r\r
+       (mail-header-set-extra): Ditto.\r\r
+       (make-full-mail-header): Expand.\r\r
+\r\r
+Sat Oct 24 07:41:42 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.37 is released.\r\r
+\r\r
+1998-10-24 07:29:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-bodies.el (mm-decode-body): Check for multibyticity.\r\r
+\r\r
+       * mm-util.el (mm-enable-multibyte): Don't always switch multibyte\r\r
+       on. \r\r
+\r\r
+1998-10-22  Didier Verna  <verna@inf.enst.fr>\r\r
+\r\r
+       * gnus-spec.el (gnus-balloon-face-function): new function\r\r
+       (gnus-parse-format): understand the %< %> specifiers\r\r
+       (gnus-parse-complex-format): ditto.\r\r
+\r\r
+1998-10-24 06:31:33  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus.el: Changed following-char to char-after throughout.\r\r
+\r\r
+1998-10-22 04:05:55  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Protect more and message. \r\r
+\r\r
+Wed Oct 21 03:26:30 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-xmas.el (gnus-xmas-article-push-button): Go to the\r\r
+       position.\r\r
+\r\r
+Tue Oct 20 23:37:43 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-mixed): Multipart in\r\r
+       mixed part.\r\r
+\r\r
+Tue Oct 20 23:36:43 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-exit): Use mm-destroy-parts.\r\r
+       \r\r
+       * gnus-sum.el (gnus-summary-exit-no-update): Ditto.\r\r
+\r\r
+Tue Oct 20 16:22:51 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-uu.el (mm-uu-dissect): Create pseudo multipart head.\r\r
+\r\r
+1998-10-21  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * mailcap.el (mailcap-save-binary-file): Use unwind-protect.\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Set undisplayer to mm\r\r
+       buffer, not the current buffer; use unwind-protect.\r\r
+\r\r
+1998-10-21 00:07:59  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-exit): Destroy parts.\r\r
+       (gnus-summary-exit-no-update): Ditto.\r\r
+\r\r
+1998-10-20 22:02:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-inline-media-tests): Look for w3.\r\r
+\r\r
+       * mailcap.el (mailcap-mime-data): Inline html.\r\r
+\r\r
+Tue Oct 20 20:25:03 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.36 is released.\r\r
+\r\r
+1998-10-20 18:13:08  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (article-translate-strings): \r\r
+       (gnus-article-dumbquotes-map): Don't dot.\r\r
+\r\r
+       * pop3.el (pop3-open-server): Set point right.\r\r
+\r\r
+       * mm-decode.el (mm-dissect-multipart): Dissect hierarchically. \r\r
+       (mm-dissect-buffer): Ditto.\r\r
+       (mm-destroy-part): Ignore non-handles.\r\r
+       (mm-remove-part): Ditto.\r\r
+       (mm-destroy-parts): New function.\r\r
+       (mm-remove-parts): Ditto.\r\r
+\r\r
+       * gnus-art.el (gnus-mm-display-part): Don't move point.\r\r
+\r\r
+Tue Oct 20 02:16:36 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-uu.el : New file.\r\r
+       \r\r
+       * gnus-art.el (gnus-display-mime): Dissect uu stuffs.\r\r
+       \r\r
+       * mm-bodies.el (mm-decode-content-transfer-encoding): Encoding as\r\r
+       a function.\r\r
+\r\r
+1998-10-20 00:35:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Check before selecting.\r\r
+\r\r
+Sat Sep 26 02:03:00 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-sum.el (gnus-multi-decode-encoded-word-string): Rewrite. \r\r
+       \r\r
+       * gnus-sum.el (gnus-decode-encoded-word-methods): New variable.\r\r
+       \r\r
+       * gnus-sum.el (gnus-decode-encoded-word-methods-cache): New\r\r
+       variable.\r\r
+       \r\r
+       * gnus-sum.el (gnus-encoded-word-method-alist): Deleted.\r\r
+       \r\r
+       * gnus-art.el (gnus-decode-header-methods): New variable.\r\r
+\r\r
+       * gnus-art.el (gnus-decode-header-methods-cache): New variable.\r\r
+\r\r
+       * gnus-art.el (gnus-multi-decode-header): New function.\r\r
+       \r\r
+Tue Oct 20 00:24:16 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.35 is released.\r\r
+\r\r
+1998-10-20 00:00:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * uudecode.el (uudecode-decode-region-external): Insert\r\r
+       literally. \r\r
+\r\r
+       * gnus-xmas.el (gnus-xmas-mime-button-menu): Moved here.\r\r
+\r\r
+       * mm-bodies.el (mm-decode-body): Optional encoding.\r\r
+\r\r
+1998-10-19 23:57:57  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-ems.el (gnus-mouse-3): New variable.\r\r
+\r\r
+       * binhex.el (binhex-decode-region-external): Don't use -internally.\r\r
+\r\r
+1998-10-16 14:54:02  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+       * mailcap.el (mailcap-parse-mailcaps): Only open regular\r\r
+       files.\r\r
+\r\r
+1998-09-26 22:28:01  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+       * gnus-group.el (gnus-add-marked-articles): Request backend update\r\r
+       of flags.\r\r
+\r\r
+1998-09-26 19:39:31  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+       * gnus-sum.el (gnus-update-read-articles): \r\r
+       (gnus-update-marks): Request backend update of mark.\r\r
+\r\r
+1998-09-26 19:33:58  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+       * gnus.texi (Optional Backend Functions): New item,\r\r
+       nnchoke-request-set-mark.\r\r
+\r\r
+1998-09-26 16:27:27  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+       * gnus-range.el (gnus-remove-from-range): Don't add stuff in\r\r
+          list to range.\r\r
+\r\r
+1998-10-19 23:45:13  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-exit-no-update): Don't expire.\r\r
+\r\r
+1998-10-14  SL Baur  <steve@altair.xemacs.org>\r\r
+\r\r
+       * gnus-sum.el: Move gnus-save-hidden-threads above where it is\r\r
+       first used.\r\r
+\r\r
+1998-10-10  SL Baur  <steve@altair.xemacs.org>\r\r
+\r\r
+       * mm-view.el: Require mm-decode for macros.\r\r
+\r\r
+       * mm-decode.el (mm-handle-type): Move macro declarations above the\r\r
+       place where they are used.\r\r
+\r\r
+Sun Oct 18 13:59:07 1998  Kurt Swanson  <ksw@dna.lth.se>\r\r
+\r\r
+        * gnus-msg.el (gnus-summary-mail-forward): Erase old forward\r\r
+        buffer.\r\r
+\r\r
+1998-10-19 23:38:11  Katsumi Yamaoka  <yamaoka@ga.sony.co.jp>\r\r
+\r\r
+       * nnagent.el (nnagent-open-server): Error message.\r\r
+\r\r
+1998-10-19 23:35:08  Joerg Lenneis  <lenneis@statrix2.wu-wien.ac.at>\r\r
+\r\r
+       * nnheader.el (nnheader-article-p): Recognize lower-case headers. \r\r
+\r\r
+1998-10-19  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * score-mode.el (gnus-score-mode-map): Ditto.\r\r
+\r\r
+       * message.el (message-mode-map): Ditto.\r\r
+\r\r
+       * gnus-uu.el (gnus-uu-post-news): Ditto.\r\r
+\r\r
+       * gnus-kill.el (gnus-kill-file-mode-map): Ditto.\r\r
+\r\r
+       * gnus-eform.el (gnus-edit-form-mode-map): Ditto.\r\r
+\r\r
+       * gnus-art.el (gnus-article-edit-mode-map): Use\r\r
+       `set-keymap-parent' rather than `copy-keymap'.\r\r
+\r\r
+1998-10-18  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-button-commands): New variable.\r\r
+       (gnus-mime-button-map): Initialize it from\r\r
+       `gnus-mime-button-commands'.\r\r
+       (gnus-mime-button-menu): New function.\r\r
+       (gnus-insert-mime-button): Use `gnus-mime-button-map'.\r\r
+\r\r
+1998-10-11  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * message.el (message-insert-to): Make `nobody' and `poster'\r\r
+       synonymous to `never' and `always' in Mail-Copies-To.\r\r
+       (message-reply): Ditto.\r\r
+       (message-followup): Ditto.\r\r
+\r\r
+1998-10-19 23:17:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mailcap.el (mailcap-mime-data): Save sound.\r\r
+\r\r
+1998-09-24  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * message.el (message-ignored-supersedes-headers): Include\r\r
+       `NNTP-Posting-Date'.\r\r
+\r\r
+1998-10-19 01:25:27  Jonas Steverud  <d4jonas@dtek.chalmers.se>\r\r
+\r\r
+       * gnus-art.el (gnus-article-dumbquotes-table): New variable.\r\r
+\r\r
+1998-10-19 00:50:22  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-bodies.el (mm-decode-content-transfer-encoding): Use\r\r
+       uudecode. \r\r
+\r\r
+1998-10-18 18:20:34  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Don't switch on save.\r\r
+\r\r
+1998-10-18 18:14:06  Andy Piper  <andyp@parallax.co.uk>\r\r
+\r\r
+       * nnmail.el (nnmail-movemail-args): New variable.\r\r
+\r\r
+1998-10-18 00:17:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (article-translate-strings): \r\r
+\r\r
+1998-10-17 22:51:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-article-view-part): Use it.\r\r
+       (gnus-mm-display-part): New function.\r\r
+       (article-de-quoted-unreadable): Yse mm-default-coding-system.\r\r
+\r\r
+       * mm-decode.el (mm-handle-displayed-p): New function.\r\r
+\r\r
+       * gnus-art.el (gnus-mime-copy-part): Create better names.\r\r
+       (gnus-mime-button-line-format): Include dots spec.\r\r
+\r\r
+1998-10-15  Matt Pharr  <mmp@graphics.stanford.edu>\r\r
+\r\r
+      * gnus-msg.el (gnus-summary-mail-forward): Erase contents of old\r\r
+      forward buffer first.\r\r
+\r\r
+1998-10-17 21:16:46  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-util.el (gnus-set-window-start): New function.\r\r
+\r\r
+       * message.el (message-send): Don't check changed.\r\r
+\r\r
+1998-10-12 15:26:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-article-setup-buffer): Set params.\r\r
+\r\r
+       * mm-decode.el (mm-user-display-methods): Inline\r\r
+       "message/delivery-status". \r\r
+\r\r
+1998-10-11 07:06:38  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-auto-save-directory): Rename.\r\r
+       (message-mode): Dof fix.\r\r
+\r\r
+       * gnus-art.el (gnus-summary-save-in-pipe): Default to "cat".\r\r
+       (gnus-summary-save-in-pipe): No, check gnus-last-shell-command. \r\r
+\r\r
+       * nndoc.el (nndoc-mime-parts-type-p): Be a bit more forgiving.\r\r
+\r\r
+       * message.el (message-make-date): Avoid locale.\r\r
+\r\r
+       * gnus-art.el (gnus-article-edit-done): Allow update before doing\r\r
+       cache. \r\r
+\r\r
+       * mm-decode.el (mm-display-inline): Goto point-min.\r\r
+\r\r
+       * gnus-art.el (gnus-article-prepare-display): Not read-only.\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Reverse before sorting.\r\r
+\r\r
+       * gnus-draft.el (gnus-draft-send): Allow mail.\r\r
+\r\r
+1998-10-10 -SL Baur  <steve@altair.xemacs.org>\r\r
+\r\r
+       * message.el (message-check): Move message-check macro above where \r\r
+       it is first used.\r\r
+\r\r
+       * gnus-art.el (article-hide-pgp): Hide the PGP 5/GNUPG Hash: line.\r\r
+\r\r
+1998-10-11 06:45:37  Lloyd Zusman  <ljz@asfast.com>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-make-menu-bar): Fix.\r\r
+\r\r
+Sun Oct 11 02:28:40 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.34 is released.\r\r
+\r\r
+1998-10-11 02:15:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-inline-media-tests): delivery-status.\r\r
+\r\r
+       * mm-view.el (mm-inline-text): Provide default.\r\r
+\r\r
+1998-10-11 01:01:37  Lloyd Zusman  <ljz@asfast.com>\r\r
+\r\r
+       * mailcap.el (mailcap-possible-viewers): Fix nils.\r\r
+\r\r
+1998-10-11 00:03:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-article-edit-exit): Don't do updates.\r\r
+       (article-update-date-lapsed): Record the buffer.\r\r
+       (article-update-date-lapsed): Do all windows that display article\r\r
+       buffers. \r\r
+\r\r
+       * nnml.el (nnml-generate-nov-databases-1): Ditto.\r\r
+\r\r
+       * gnus-score.el (gnus-score-score-files-1): Ignore dotted files. \r\r
+\r\r
+       * gnus-art.el (gnus-insert-mime-button): Mark buttons as\r\r
+       annoations. \r\r
+\r\r
+       * gnus-msg.el (gnus-summary-mail-forward): Decode properly.\r\r
+\r\r
+1998-10-10 22:07:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-agent.el (gnus-category-add): Change default category to\r\r
+       'false. \r\r
+\r\r
+       * nnvirtual.el (nnvirtual-update-read-and-marked): Don't nix out\r\r
+       scores. \r\r
+\r\r
+       * gnus-draft.el (gnus-draft-send): Check server more.\r\r
+\r\r
+       * gnus-art.el (gnus-article-view-part): New command and keystroke.\r\r
+       (gnus-article-goto-part): New function.\r\r
+\r\r
+       * mm-view.el (mm-inline-text): Insert richtext properly.\r\r
+\r\r
+       * gnus-art.el (gnus-insert-mime-button): Store handle in alist. \r\r
+\r\r
+1998-10-03 15:04:27  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * parse-time.el (parse-time-rules): Accept dates far into the past\r\r
+       and the future, and parse single-digit numbers as years.\r\r
+\r\r
+1998-10-02 04:46:46  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Chop off directories.\r\r
+\r\r
+1998-10-01 07:33:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * uudecode.el (uu-decode-region-external): Use\r\r
+       insert-file-contents-literally. \r\r
+\r\r
+       * gnus-cache.el (gnus-cache-generate-active): Translate _ to :.\r\r
+\r\r
+1998-10-01 07:02:11  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * uudecode.el: New file.\r\r
+\r\r
+       * mm-bodies.el (mm-decode-content-transfer-encoding): Do\r\r
+       x-uuencode. \r\r
+\r\r
+1998-10-01 05:19:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-display-alternative): Set faces.\r\r
+\r\r
+       * message.el (message-fetch-field): Unfold properly.\r\r
+\r\r
+       * mm-bodies.el (mm-decode-content-transfer-encoding): Replace CRLF\r\r
+       in text/plain.\r\r
+\r\r
+1998-09-30 05:47:49  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-first-unread-subject): New command.\r\r
+       (gnus-auto-select-first): Removed.\r\r
+       (gnus-auto-select-first): Extended.\r\r
+       (gnus-summary-read-group-1): Use new value.\r\r
+\r\r
+1998-09-29 13:21:06  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-fix-before-sending): Space.\r\r
+\r\r
+       * nnmail.el (nnmail-find-file): Don't erase.\r\r
+\r\r
+Wed Sep 30 23:49:03 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-agent.el (gnus-agent-fetch-headers): Do not decode headers.\r\r
+\r\r
+Wed Sep 30 23:46:29 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-soup.el (gnus-soup-add-article): Do not decode headers.\r\r
+\r\r
+Wed Sep 30 23:44:08 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-soup.el (gnus-soup-pack-packet): Pack only if necesary.\r\r
+\r\r
+Sat Sep 26 03:04:18 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-util.el (mm-with-unibyte-buffer): Make it work in XEmacs\r\r
+       20.4.\r\r
+\r\r
+1998-09-29 11:35:09  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-view-all-parts): New command and\r\r
+       keystroke. \r\r
+\r\r
+       * mm-decode.el (mm-display-external): Translate slashes.\r\r
+\r\r
+       * nnmail.el (nnmail-find-file): Restrict auto-mode-alist.\r\r
+\r\r
+       * nndraft.el (nndraft-retrieve-headers): Don't copy so much. \r\r
+\r\r
+       * mm-decode.el (mm-quote-arg): Quote spaces.\r\r
+       (mm-display-external): Quote args.\r\r
+\r\r
+1998-09-24 22:27:55  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-inlinable-part-p): New function.\r\r
+\r\r
+1998-09-25 22:28:01  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+       * mm-util.el (mm-disable-multibyte): New function.\r\r
+\r\r
+Thu Sep 24 20:28:31 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.33 is released.\r\r
+\r\r
+1998-09-24 18:47:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-insert-mime-button): Get buffer size.\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Don't switch for externals. \r\r
+       (mm-dissect-multipart): Don't include end-sep.\r\r
+\r\r
+       * mm-util.el (mm-get-coding-system-list): New function.\r\r
+       (mm-coding-system-list): New variable.\r\r
+\r\r
+Thu Sep 24 02:08:10 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-cus.el (gnus-group-parameters): Add charset as a parameter\r\r
+\r\r
+Thu Sep 24 02:05:48 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-cus.el (gnus-group-customize): Use variable as cons not as\r\r
+       group\r\r
+\r\r
+Thu Sep 24 01:41:03 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * base64.el (base64-run-command-on-region): External base64\r\r
+       decoder do not use coding system\r\r
+\r\r
+Thu Sep 24 01:39:44 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-decode.el (mm-interactively-view-part): Typo.\r\r
+\r\r
+Thu Sep 24 01:37:30 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-decode.el (mm-dissect-multipart): Display last part when the\r\r
+       article has no close-delimiter\r\r
+\r\r
+Thu Sep 24 01:28:54 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * mm-decode.el (mm-dissect-buffer): Display parts which have no\r\r
+       content-type.\r\r
+\r\r
+Thu Sep 24 01:23:57 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-art.el (gnus-display-mime): Typo.\r\r
+\r\r
+Thu Sep 24 02:29:57 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.32 is released.\r\r
+\r\r
+1998-09-24 00:27:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-kill.el (gnus-batch-score): Protect against errors.\r\r
+\r\r
+       * gnus-art.el: Protect against broken headers.\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Respect needsterm.\r\r
+       (mm-display-external): Create buffer for external commands. \r\r
+\r\r
+1998-09-23 22:04:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mailcap.el (mailcap-mime-info): Return the proper viewer.\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Use file name.\r\r
+\r\r
+1998-09-22  Markus Rost  <markus.rost@mathematik.uni-regensburg.de>\r\r
+\r\r
+       * gnus-util.el (gnus-output-to-rmail):  adjust to\r\r
+          `rmail-output-to-rmail-file'\r\r
+\r\r
+1998-09-23 20:07:00  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-util.el (gnus-output-to-rmail): Reinstated function.\r\r
+\r\r
+       * gnus-sum.el (gnus-select-newsgroup): Set global variables before\r\r
+       headers. \r\r
+\r\r
+       * gnus-art.el (article-decode-charset): Fold case.\r\r
+\r\r
+1998-09-17 15:49:10  Simon Josefsson  <jas@pdc.kth.se>\r\r
+\r\r
+        * mailcap.el (mailcap-save-binary-file): Goto point-min.\r\r
+\r\r
+1998-09-23 19:48:52  Aaron M. Ucko  <amu@mit.edu>\r\r
+\r\r
+       * nnmail.el (nnmail-check-duplication): Enter into duplicate list\r\r
+       after being stored.\r\r
+\r\r
+Tue Sep 15 16:15:16 1998  Kurt Swanson  <ksw@dna.lth.se>\r\r
+\r\r
+       * gnus-salt.el (gnus-pick-setup-message): Return from whence ye\r\r
+       come.\r\r
+\r\r
+1998-09-23 19:42:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-xmas.el (wid-edit): Required.\r\r
+\r\r
+       * gnus-ems.el (gnus-widget-button-keymap): New variable.\r\r
+\r\r
+Sun Sep 20 00:27:55 1998  ZHU Shenghuo  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-inline-part): remove part if necessary\r\r
+\r\r
+1998-09-23 19:30:52  Matt Armstrong  <matta@geoworks.com>\r\r
+\r\r
+       * gnus-art.el (article-decode-charset): Narrow to the correct\r\r
+       region. \r\r
+\r\r
+       * mm-bodies.el: Fix autoload.\r\r
+\r\r
+1998-09-22 18:35:12  Lee Willis  <lee@gbdirect.co.uk>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-button-line-format): Doc fix.\r\r
+\r\r
+1998-09-22 14:53:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * rfc2047.el (rfc2047-decode): Use rfc2047-default-charset. \r\r
+\r\r
+1998-09-19 13:58:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-insert-mime-button): Specify keymap.\r\r
+       (gnus-article-add-button): Ditto.\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-insert-pseudos): Use mm.\r\r
+\r\r
+       * gnus-art.el (gnus-article-prepare-display): Make article mode. \r\r
+       (gnus-article-prepare-display): Bind url-standalone-mode.\r\r
+\r\r
+       * mm-decode.el (mm-remove-part): Also delete directory.\r\r
+       (mm-display-external): Create a private sub-dir.\r\r
+\r\r
+       * mailcap.el (mailcap-binary-suffixes): New variable.\r\r
+       (mailcap-command-p): Use it.\r\r
+\r\r
+1998-09-16 10:38:21  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * nnmbox.el (nnmbox-request-group): Change server.\r\r
+       (nnmbox-possibly-change-newsgroup): Enable multibyte.\r\r
+\r\r
+       * message.el (message-encode-message-body): Don't stomp MIME\r\r
+       headers. \r\r
+\r\r
+       * gnus-sum.el (gnus-summary-edit-article-done): Don't encode\r\r
+       unless useful.\r\r
+       (gnus-summary-exit): Check for a live article buffer.\r\r
+       (gnus-summary-exit-no-update): Ditto.\r\r
+\r\r
+       * gnus-int.el (gnus-request-replace-article): Accept no-encode\r\r
+       param.\r\r
+\r\r
+       * gnus-sum.el (gnus-article-decoded-p): New variable.\r\r
+\r\r
+       * mm-decode.el (mm-display-external): Use no-conv.\r\r
+\r\r
+       * rfc2047.el (rfc2047-q-encode-region): Bound properly. \r\r
+       (rfc2047-charset-encoding-alist): Use B encoding for koi8-r.\r\r
+\r\r
+       * gnus-art.el (gnus-article-mode-map): Bind button2 to\r\r
+       mouse-click. \r\r
+\r\r
+1998-09-15 14:38:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-agent.el (gnus-agent-expire): Protect against nil infos.\r\r
+\r\r
+Mon Sep 14 18:55:38 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.31 is released.\r\r
+\r\r
+1998-09-14 15:12:59  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-exit): Destroy MIME.\r\r
+\r\r
+       * mm-decode.el (mm-display-part): Accept no-default.\r\r
+\r\r
+       * gnus-art.el (gnus-insert-mime-button): buffer-size doesn't take\r\r
+       a parameter.\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-insert-line): Don't exclude faces.\r\r
+       (gnus-summary-prepare-threads): Ditto.\r\r
+\r\r
+       * gnus.el (gnus-article-mode-map): Make sparse keymap.\r\r
+\r\r
+       * gnus-art.el (gnus-mime-button-line-format-alist): Allow a %d spec.\r\r
+       (gnus-mime-button-line-format): Doc fix.\r\r
+       (gnus-insert-mime-button): Use it.\r\r
+       (gnus-article-add-button): Use widget-convert-button.\r\r
+\r\r
+       * gnus.el ((featurep 'gnus-xmas)): Defalias gnus-decode-rfc1522 to\r\r
+       ignore.\r\r
+\r\r
+       * mm-decode.el (mm-alternative-precedence): Ditto.\r\r
+\r\r
+1998-09-14 15:12:49  Conrad Sauerwald  <conrad@stack.nl>\r\r
+\r\r
+       * mm-decode.el (mm-user-automatic-display): Use enriched.\r\r
+\r\r
+1998-09-14 15:09:12  Paul Fisher  <rao@gnu.org>\r\r
+\r\r
+       * mm-decode.el (mm-dissect-multipart): Have the part start on the\r\r
+       right place.\r\r
+\r\r
+1998-09-14 14:33:34  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-msg.el (gnus-inews-add-send-actions): Mark silently.\r\r
+\r\r
+       * gnus-art.el (article-update-date-lapsed): Only update header if\r\r
+       buffer is dispalyed in frame.\r\r
+       (gnus-article-prepare-display): New function.\r\r
+       (gnus-article-prepare): Use it.\r\r
+\r\r
+1998-09-14 08:16:43  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-inline-part): New command and keystroke.\r\r
+\r\r
+       * mm-view.el (mm-insert-inline): New function.\r\r
+\r\r
+       * mm-decode.el (mm-pipe-part): Bugged.\r\r
+\r\r
+       * gnus-agent.el (gnus-agent-send-mail): Don't encode.\r\r
+\r\r
+       * mm-bodies.el (mm-encode-body): Move over the body.\r\r
+\r\r
+       * nnmbox.el (nnmbox-read-mbox): Enable multibyte.\r\r
+\r\r
+       * rfc2047.el (rfc2047-q-encode-region): Would bug out.\r\r
+\r\r
+1998-09-13  Fran\e$BmP\e(Bis Pinard  <pinard@iro.umontreal.ca>\r\r
+\r\r
+       * nndoc.el: Make nndoc-dissection-alist simpler for MIME, adjust all\r\r
+          related functions.  Handle message/rfc822 parts.  Display subject on\r\r
+          multipart summary lines.  Display name on sub-parts when available.\r\r
+\r\r
+1998-09-14 07:36:38  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>\r\r
+\r\r
+       * mailcap.el (mailcap-command-p): New version.\r\r
+\r\r
+1998-09-13  Mike McEwan  <mike@lotusland.demon.co.uk>\r\r
+\r\r
+       * gnus-agent.el (gnus-agent-expire): Stop expiry barfing on killed\r\r
+       groups.\r\r
+\r\r
+1998-09-13 18:34:06  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-make-date): Remove weekday name.\r\r
+\r\r
+       * mm-decode.el (mm-dissect-buffer): Protect against broken\r\r
+       headers.\r\r
+\r\r
+       * mailcap.el (mailcap-command-in-path-p): New function.\r\r
+       (mailcap-command-p): Renamed.\r\r
+\r\r
+1998-09-13 17:58:47  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>\r\r
+\r\r
+       * rfc2047.el (eval): Autoload.\r\r
+\r\r
+1998-09-13 12:22:40  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-decode-encoded-word-functions): New variable.\r\r
+       (gnus-multi-decode-encoded-word-string): New function.\r\r
+       (gnus-encoded-word-method-alist): New variable.\r\r
+       (gnus-decode-encoded-word-functions): Removed.\r\r
+\r\r
+1998-09-13  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-int.el (gnus-request-replace-article): Replace\r\r
+       message-narrow-to-headers with message-narrow-to-head\r\r
+\r\r
+1998-09-13 12:05:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * drums.el (drums-quote-string): Reversed match.\r\r
+\r\r
+       * message.el (message-make-date): Use weekday name.\r\r
+\r\r
+Sun Sep 11 10:27:15 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.30 is released.\r\r
+\r\r
+1998-09-13 08:00:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (article-decode-encoded-words): Use it.\r\r
+       (gnus-decode-header-function): New variable.\r\r
+\r\r
+       * gnus-sum.el (gnus-nov-parse-line): Use it.\r\r
+       (gnus-decode-encoded-word-function): New variable.\r\r
+\r\r
+       * gnus-msg.el (gnus-copy-article-buffer): Decode the right\r\r
+       buffer.\r\r
+\r\r
+       * gnus-art.el (gnus-insert-mime-button): Use widget.\r\r
+       (gnus-widget-press-button): New function.\r\r
+       (gnus-article-prev-button): Removed.\r\r
+       (gnus-article-next-button): Ditto.\r\r
+       (gnus-article-add-button): Ditto.\r\r
+\r\r
+       * gnus.el (gnus-article-mode-map): Inherit from widget.\r\r
+       (gnus-article-mode-map): No, don't.\r\r
+\r\r
+       * mm-decode.el (mm-dissect-buffer): Store Content-ID things.\r\r
+       (mm-content-id-alist): New variable.\r\r
+       (mm-get-content-id): New function.\r\r
+\r\r
+       * gnus-art.el (gnus-request-article-this-buffer): Only decode\r\r
+       articles if we are fetching to the article buffer.\r\r
+\r\r
+1998-09-13 07:58:59  Shenghuo ZHU  <zsh@cs.rochester.edu>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-move-article): Don't decode accepting\r\r
+       articles.\r\r
+\r\r
+1998-09-13 07:23:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-util.el (mm-mime-charset): Try to use safe-charsets.\r\r
+       (mm-default-mime-charset): New variable.\r\r
+\r\r
+       * rfc2047.el (rfc2047-dissect-region): Dissect using tspecials.\r\r
+\r\r
+       * drums.el (drums-quote-string): Reversed test.\r\r
+\r\r
+1998-09-12 14:29:21  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-util.el (mm-insert-rfc822-headers): Possibly not quote\r\r
+       string.\r\r
+\r\r
+       * drums.el (drums-quote-string): New function.\r\r
+\r\r
+       * rfc2047.el (rfc2047-encode-message-header): Goto point-min.\r\r
+       (rfc2047-b-encode-region): Chop lines.\r\r
+       (rfc2047-q-encode-region): Ditto.\r\r
+\r\r
+Sat Sep 12 13:27:15 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.29 is released.\r\r
+\r\r
+1998-09-12 12:46:30  Istvan Marko  <imarko@pacificnet.net>\r\r
+\r\r
+       * mm-decode.el (mm-save-part): Message right.\r\r
+\r\r
+1998-09-12 11:30:01  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * drums.el (drums-parse-address): Returned a list instead of a\r\r
+       string.\r\r
+       (drums-remove-whitespace): Skip comments.\r\r
+       (drums-parse-addresses): Didn't work.\r\r
+\r\r
+Sat Sep 12 09:17:30 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.28 is released.\r\r
+\r\r
+1998-09-12 04:57:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-mime-button-map): Use the article keymap as a\r\r
+       starting point.\r\r
+       (article-decode-encoded-words): Rename.\r\r
+\r\r
+       * message.el (message-narrow-to-headers-or-head): New function.\r\r
+\r\r
+       * gnus-int.el (gnus-request-accept-article): Narrow to the right\r\r
+       region.\r\r
+\r\r
+       * message.el (message-send-news): Encode body after checking\r\r
+       syntax.\r\r
+\r\r
+       * gnus-art.el (gnus-mime-button-line-format): Allow descriptions.\r\r
+\r\r
+       * mm-decode.el (mm-save-part): Use Content-Disposition filename.\r\r
+\r\r
+       * gnus-art.el (gnus-display-mime): Respect disposition.\r\r
+\r\r
+       * mm-decode.el (mm-preferred-alternative): Respect disposition.\r\r
+\r\r
+       * gnus-art.el (article-strip-multiple-blank-lines): Don't delete\r\r
+       text with annotations.\r\r
+\r\r
+       * message.el (message-make-date): Fix sign for negative time\r\r
+       zones.\r\r
+\r\r
+       * mm-view.el (mm-inline-image): Insert a space at the end of the\r\r
+       image.\r\r
+\r\r
+       * mail-parse.el: New file.\r\r
+\r\r
+       * rfc2231.el: New file.\r\r
+\r\r
+       * drums.el (drums-content-type-get): Removed.\r\r
+       (drums-parse-content-type): Ditto.\r\r
+\r\r
+       * mailcap.el (mailcap-mime-data): Use symbols instead of strings.\r\r
+\r\r
+Fri Sep 11 18:23:34 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.27 is released.\r\r
+\r\r
+1998-09-11 12:42:07  Lars Magne Ingebrigtsen- <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-alternative-precedence): New variable.\r\r
+       (mm-preferred-alternative): New function.\r\r
+\r\r
+       * gnus-art.el (gnus-mime-copy-part): New command.\r\r
+\r\r
+       * mm-decode.el (mm-get-part): New function.\r\r
+\r\r
+       * mm-view.el: New file.\r\r
+\r\r
+       * mm-decode.el (mm-dissect-buffer): Downcase cte.\r\r
+       (mm-display-part): Default to mailcap-save-binary-file.\r\r
+\r\r
+Fri Sep 11 12:32:50 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.26 is released.\r\r
+\r\r
+1998-09-11 08:25:33  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el (mm-interactively-view-part): New function.\r\r
+\r\r
+       * gnus-art.el (gnus-mime-view-part): New command.\r\r
+\r\r
+       * mm-decode.el (mm-last-shell-command): New variable.\r\r
+\r\r
+       * mailcap.el (mailcap-mime-info): Allow returning all matches.\r\r
+\r\r
+       * mm-decode.el (mm-save-part): New function.\r\r
+\r\r
+       * gnus-art.el (article-decode-charset): Protect against buggy\r\r
+       content-types.\r\r
+       (gnus-mime-pipe-part): New command.\r\r
+       (gnus-mime-save-part): New command.\r\r
+       (gnus-mime-button-map): New keymap.\r\r
+       (gnus-mime-button-line-format): New variable.\r\r
+       (gnus-insert-mime-button): New function.\r\r
+       (gnus-display-mime): Use it.\r\r
+\r\r
+       * gnus-util.el (gnus-dd-mmm): Removed length spec.\r\r
+\r\r
+       * mm-decode.el (mm-inline-text): Decode charsets.\r\r
+\r\r
+       * gnus-art.el (gnus-article-save): Comment fix.\r\r
+\r\r
+       * gnus-int.el (gnus-start-news-server): When in batch, don't\r\r
+       prompt.\r\r
+\r\r
+       * gnus-cache.el (gnus-cache-possibly-enter-article): Don't\r\r
+       decode.\r\r
+\r\r
+       * mm-decode.el (mm-inline-media-tests): Add audio.\r\r
+       (mm-inline-audio): New function.\r\r
+\r\r
+1998-09-11 08:19:22  Katsumi Yamaoka  <yamaoka@ga.sony.co.jp>\r\r
+\r\r
+       * gnus-art.el (article-make-date-line): Didn't work.\r\r
+\r\r
+       * parse-time.el (parse-time-string): One too many nils.\r\r
+\r\r
+Fri Sep 11 08:09:40 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.25 is released.\r\r
+\r\r
+1998-09-11 07:38:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (article-remove-trailing-blank-lines): Don't remove\r\r
+       annotations.\r\r
+\r\r
+       * gnus.el ((featurep 'gnus-xmas)): New\r\r
+       'gnus-annotation-in-region-p alias.\r\r
+\r\r
+1998-09-10 06:20:52  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-util.el (mm-with-unibyte-buffer): New function.\r\r
+\r\r
+       * gnus-uu.el (gnus-quote-arg-for-sh-or-csh): Renamed.\r\r
+\r\r
+       * mm-decode.el (mm-inline-media-tests): New variable.\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-exit): Destroy handles.\r\r
+\r\r
+       * gnus-art.el (gnus-article-mime-handles): New variable.\r\r
+\r\r
+       * drums.el (drums-narrow-to-header): New function.\r\r
+\r\r
+       * gnus-art.el (article-decode-charset): Use it.\r\r
+\r\r
+       * drums.el (drums-content-type-get): New function.\r\r
+\r\r
+       * mm-util.el (mm-content-type-charset): Removed.\r\r
+\r\r
+       * drums.el (drums-syntax-table): @ is word.\r\r
+       (drums-parse-content-type): New function.\r\r
+\r\r
+       * parse-time.el (parse-time-rules): Parse "Wed, 29 Apr 98 0:26:01\r\r
+       EDT" times.\r\r
+\r\r
+       * gnus-util.el (gnus-date-get-time): Use safe date.\r\r
+\r\r
+       * gnus-sum.el (gnus-show-mime): Removed.\r\r
+       (gnus-summary-toggle-mime): Removed.\r\r
+\r\r
+       * gnus-art.el (gnus-strict-mime): Removed.\r\r
+       (gnus-article-prepare): Don't do MIME.\r\r
+       (gnus-decode-encoded-word-method): Removed.\r\r
+       (gnus-show-mime-method): Removed.\r\r
+\r\r
+Thu Sep 10 04:03:29 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.24 is released.\r\r
+\r\r
+1998-09-10 01:58:24  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-show-article): Don't decode chars if\r\r
+       PREFIX.\r\r
+\r\r
+       * parse-time.el (parse-time-rules): Accept times that look like\r\r
+       "h:mm".\r\r
+\r\r
+       * message.el (message-make-date): Use zone properly.\r\r
+\r\r
+       * gnus.el: Autoload gnus-batch.\r\r
+\r\r
+       * gnus-art.el (article-de-quoted-unreadable): Do not do\r\r
+       gnus-article-decode-rfc1522.\r\r
+\r\r
+       * gnus-msg.el (gnus-inews-do-gcc): Use it.\r\r
+\r\r
+       * gnus-int.el (gnus-request-accept-article): Accept a no-encode\r\r
+       param.\r\r
+\r\r
+       * message.el (message-encode-message-body): Check for us-ascii.\r\r
+\r\r
+       * gnus-msg.el (gnus-extended-version): Move Gnus version comments\r\r
+       to the left.\r\r
+\r\r
+1998-09-09 13:18:13  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (article-decode-charset): Rename.\r\r
+\r\r
+Wed Sep  9 12:25:48 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.23 is released.\r\r
+\r\r
+1998-09-09 12:14:47  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-util.el (gnus-parent-id): Ditto.\r\r
+       (gnus-put-text-property-excluding-newlines): Ditto.\r\r
+\r\r
+       * gnus-sum.el (gnus-dependencies-add-header): Make into subst.\r\r
+\r\r
+1998-09-08  Karl Kleinpaste  <karl@jprc.com>\r\r
+\r\r
+       * message.el (message-generate-headers): Generate User-Agent\r\r
+       instead of X-Mailer & X-Newsreader.\r\r
+\r\r
+       * gnus-msg.el (gnus-extended-version): Reformat for USEFOR\r\r
+       User-Agent header format.\r\r
+\r\r
+Tue Sep  8 22:38:27 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.22 is released.\r\r
+\r\r
+1998-09-08 22:36:54  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-util.el (mm-multibyte-p): Typo.\r\r
+\r\r
+Tue Sep  8 22:25:53 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.21 is released.\r\r
+\r\r
+1998-09-08  Hrvoje Niksic  <hniksic@srce.hr>\r\r
+\r\r
+       * gnus-art.el (article-treat-dumbquotes): Handle \224 correctly.\r\r
+\r\r
+1998-09-08 22:18:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-util.el (mm-multibyte-p): New function.\r\r
+\r\r
+Tue Sep  8 21:43:03 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.20 is released.\r\r
+\r\r
+1998-09-08 11:40:45  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * rfc2047.el (rfc2047-decode-region): Only decode when in\r\r
+       multibyte.\r\r
+\r\r
+       * nnheader.el (nnheader-pathname-coding-system): Changed to binary.\r\r
+\r\r
+       * gnus-int.el (gnus-request-replace-article): Encode.\r\r
+       (gnus-request-accept-article): Encode.\r\r
+\r\r
+       * gnus-art.el (gnus-request-article-this-buffer): Decode charsets\r\r
+       here.\r\r
+\r\r
+       * gnus.el (gnus-article-display-hook): Take the charset functions\r\r
+       out.\r\r
+\r\r
+       * time-date.el (safe-date-to-time): New function.\r\r
+\r\r
+       * gnus-util.el (gnus-dd-mmm): Protect against bogus dates.\r\r
+\r\r
+Tue Sep  8 07:09:28 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.19 is released.\r\r
+\r\r
+1998-09-08 04:51:39  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * base64.el (base64-encode-region): Accept no-line-break.\r\r
+\r\r
+       * mm-util.el (mm-mime-charset): New function.\r\r
+\r\r
+       * gnus-draft.el (gnus-draft-edit-message): Delete article.\r\r
+\r\r
+Tue Sep  8 04:29:23 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.18 is released.\r\r
+\r\r
+1998-09-08 02:21:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-send-and-exit): Return t on success.\r\r
+       (message-make-date): Make a proper time zone.\r\r
+\r\r
+       * gnus-draft.el (gnus-draft-send): Only remove article if the\r\r
+       sending is successful.\r\r
+\r\r
+       * drums.el (drums-get-comment): Return the last comment.\r\r
+       (drums-parse-address): Parse old-style From headers.\r\r
+\r\r
+1998-09-07  SL Baur  <steve@altair.xemacs.org>\r\r
+\r\r
+       * gnus-sum.el (gnus-data-compute-positions): Move below\r\r
+       `gnus-save-hidden-threads' so the former is correctly detected as\r\r
+       a macro.\r\r
+\r\r
+1998-09-06  Dave Love  <fx@gnu.org>\r\r
+\r\r
+       * gnus/nnweb.el (require): Wrap requirement of w3 and url in\r\r
+       ignore-errors too, eval'd when compile.  Require w3 stuff at load\r\r
+       time for nicer failure if it's not available.\r\r
+\r\r
+1998-09-08 00:38:39  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * time-date.el (time-to-seconds): Renamed.\r\r
+\r\r
+       * parse-time.el (parse-time-string): Downcase before handling.\r\r
+       (parse-time-rules): Times without seconds have 0 seconds.\r\r
+\r\r
+       * rfc2047.el (rfc2047-encode-region): New version.\r\r
+       (rfc2047-dissect-region): New function.\r\r
+\r\r
+1998-09-07 01:08:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-make-date): Use symbolic zone.\r\r
+\r\r
+1998-09-06 23:23:06  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * time-date.el (parse-time): Always use parse-time.\r\r
+\r\r
+       * parse-time.el (parse-time-syntax): Use vectors.\r\r
+\r\r
+Sun Sep  6 21:19:26 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.17 is released.\r\r
+\r\r
+1998-09-06 05:45:17  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * time-date.el: Renamed from "date".\r\r
+\r\r
+       * gnus.el: Removed all timezone dependencies.\r\r
+\r\r
+       * score-mode.el: Removed.\r\r
+       (gnus-score-edit-insert-date): Use date.\r\r
+\r\r
+       * date.el (float-to-time): New function.\r\r
+\r\r
+       * nnspool.el (nnspool-seconds-since-epoch): Removed.\r\r
+\r\r
+       * date.el (time-to-float): New function.\r\r
+\r\r
+       * message.el (message-make-date): Use format-time-string.\r\r
+       (message-make-expires): Use make-date.\r\r
+\r\r
+       * gnus-xmas.el (gnus-xmas-seconds-since-epoch): Removed.\r\r
+\r\r
+       * gnus-util.el (gnus-dd-mmm): Use date.\r\r
+       (gnus-sortable-date): Ditto.\r\r
+\r\r
+       * message.el (message-make-date): Take an optional time.\r\r
+\r\r
+       * gnus: Applied patches from 5.6.43.\r\r
+\r\r
+       * date.el (if): Use parse-time.\r\r
+\r\r
+       * gnus-score.el (gnus-summary-score-entry): Make into a command\r\r
+       again.\r\r
+\r\r
+       * gnus-group.el (gnus-group-get-new-news-this-group): Only call if\r\r
+       gnus-agent.\r\r
+\r\r
+       * gnus.el (gnus-agent-meta-information-header): Moved here.\r\r
+\r\r
+1998-09-05  Mike McEwan  <mike@lotusland.demon.co.uk>\r\r
+\r\r
+       * gnus-agent.el (gnus-agent-scoreable-headers): New variable.\r\r
+       (gnus-agent-fetch-group-1): Score article headers using normal\r\r
+       group score files if the download score rule of a category/group\r\r
+       is `file'.\r\r
+       (gnus-agent-fetch-group-1): Don't parse the entire .overview when\r\r
+       deciding what articles to download.\r\r
+       (gnus-agent-fetch-group-1): Don't push headers through scoring and\r\r
+       predicate processing if predicate is `true' or `false'.\r\r
+\r\r
+1998-09-06 01:56:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-score.el (gnus-score-load-score-alist): Bind coding system.\r\r
+\r\r
+       * gnus-art.el (gnus-article-setup-buffer): Enable multibyte.\r\r
+\r\r
+       * score-mode.el (score-mode-coding-system): New variable.\r\r
+       (gnus-score-edit-exit): Use it.\r\r
+\r\r
+1998-09-04  Jason R Mastaler  <jason@4b.org>\r\r
+\r\r
+       * drums.el: Corrected typo.\r\r
+\r\r
+1998-09-05 23:24:43  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>\r\r
+\r\r
+       * mm-bodies.el (mm-body-encoding): Faster version.\r\r
+\r\r
+1998-09-05 22:23:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-article-decode-charset): Only decode text\r\r
+       things.\r\r
+\r\r
+       * message.el (message-output): Use rmail.\r\r
+\r\r
+       * rfc2047.el (rfc2047-encoded-word-regexp): Allow spaces in the\r\r
+       word part.\r\r
+\r\r
+       * mm-util.el (mm-charset-to-coding-system): Use\r\r
+       rfc2047-default-charset.\r\r
+       (mm-known-charsets): New variable.\r\r
+\r\r
+       * message.el (message-caesar-region): Bugged out.\r\r
+\r\r
+1998-09-06  Mike McEwan  <mike@lotusland.demon.co.uk>\r\r
+\r\r
+       * gnus-agent.el (gnus-agent-fetch-group-1): Allow lists when\r\r
+       specifying `agent-predicate' in a group's parameters.\r\r
+\r\r
+Sat Sep  5 21:55:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.16 is released.\r\r
+\r\r
+1998-09-05 17:30:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * nnmail.el (nnmail-expired-article-p): Use predicate.\r\r
+\r\r
+       * date.el (time-less-p): Renamed.\r\r
+\r\r
+       * gnus-art.el (gnus-article-decode-charset): Really fetch headers\r\r
+       from the headers.\r\r
+\r\r
+       * rfc2047.el (rfc2047-decode-region): Use the mm decoding\r\r
+       functions.\r\r
+\r\r
+       * gnus-group.el (gnus-group-sort-selected-flat): Didn't work at\r\r
+       all.\r\r
+       (gnus-group-sort-selected-groups-by-alphabet): Changed interface\r\r
+       to all functions.\r\r
+\r\r
+Sat Sep  5 01:45:52 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.15 is released.\r\r
+\r\r
+1998-09-05 00:21:22  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * date.el: New file.\r\r
+\r\r
+       * gnus-util.el (gnus-encode-date): Removed.\r\r
+       (gnus-time-less): Ditto.\r\r
+\r\r
+       * nnmail.el (nnmail-date-to-time): Removed.\r\r
+       (nnmail-time-less): Ditto.\r\r
+       (nnmail-days-to-time): Ditto.\r\r
+       (nnmail-time-since): Ditto.\r\r
+\r\r
+       * drums.el: New file.\r\r
+\r\r
+1998-09-04 00:25:52  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-encode-message-body): Encode headers with\r\r
+       body encoding.\r\r
+\r\r
+       * rfc2047.el (rfc2047-default-charset): Renamed.\r\r
+       (rfc2047-encodable-p): Use it.\r\r
+\r\r
+       * base64.el (mm-util): Required.\r\r
+\r\r
+1998-09-03 16:28:30  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-msg.el (gnus-post-method): Peel off real info from opened\r\r
+       servers.\r\r
+\r\r
+       * gnus-util.el (gnus-output-to-rmail): Removed.\r\r
+\r\r
+       * gnus-art.el (gnus-summary-save-in-rmail): Use\r\r
+       gnus-output-to-rmailrmail-output-to-rmail-file.\r\r
+\r\r
+       * rfc2047.el (rfc2047-decode-region): Fold case.\r\r
+       (rfc2047-decode): Use decode-string.\r\r
+\r\r
+       * mm-util.el: Provide mm-char-int.\r\r
+\r\r
+Thu Sep  3 15:23:22 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.14 is released.\r\r
+\r\r
+1998-09-03 15:08:30  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-bodies.el (mm-body-encoding): Go through the buffer to make\r\r
+       sure we have 7bit.\r\r
+\r\r
+1998-09-02 14:38:18  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-msg.el (gnus-post-method): Use opened servers, and remove\r\r
+       ducplicates.\r\r
+       (gnus-inews-insert-mime-headers): Removed.\r\r
+\r\r
+       * message.el (message-caesar-region): Protect against MULE chars.\r\r
+\r\r
+1998-09-02 00:36:23  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>\r\r
+\r\r
+       * mm-util.el (if): fset the right function.\r\r
+\r\r
+1998-09-02 00:31:53  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-article-decode-charset): Use real\r\r
+       read-coding-system.\r\r
+\r\r
+1998-09-01 17:58:40  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-bodies.el (mm-decode-body): Protect against malformed\r\r
+       base64.\r\r
+       (mm-decode-body): Check that buffer-file-coding-system is\r\r
+       non-nil.\r\r
+\r\r
+Tue Sep  1 10:29:33 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.13 is released.\r\r
+\r\r
+1998-09-01 09:14:33  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-util.el (gnus-strip-whitespace): Already defined.\r\r
+       Removed.\r\r
+\r\r
+       * gnus-art.el (gnus-article-decode-charset): Strip whitespace.\r\r
+\r\r
+       * gnus-util.el (gnus-strip-whitespace): New function.\r\r
+\r\r
+       * mm-util.el (mm-content-type-charset): Downcase.\r\r
+\r\r
+1998-08-31 23:04:29  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-article-decode-charset): Accept a prefix.\r\r
+       (gnus-article-decode-charset): Don't fetch all headers.\r\r
+\r\r
+       * mm-util.el (mm-read-coding-system): New function.\r\r
+\r\r
+       * mm-bodies.el (mm-decode-body): Check the right charset.\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-mode-line-format): Ditto.\r\r
+\r\r
+       * gnus-art.el (gnus-article-mode-line-format): Use short group\r\r
+       format.\r\r
+\r\r
+Mon Aug 31 23:03:13 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.12 is released.\r\r
+\r\r
+1998-08-31 22:39:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-bodies.el (mm-decode-body): Don't do charset unless MULE.\r\r
+\r\r
+       * gnus-art.el (gnus-article-decode-charset): Supply cte.\r\r
+       (gnus-article-decode-charset): Always run.\r\r
+\r\r
+       * mm-bodies.el (mm-decode-body): Decode cte.\r\r
+\r\r
+Mon Aug 31 22:14:50 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.11 is released.\r\r
+\r\r
+1998-08-31 14:27:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-encode-message-body): Ditto.\r\r
+\r\r
+       * gnus-art.el (gnus-article-decode-mime-words): New command and\r\r
+       keystroke.\r\r
+       (gnus-article-decode-charset): Ditto.\r\r
+       (gnus-article-decode-charset): Only work under MULE.\r\r
+\r\r
+       * mm-util.el (mm-content-type-charset): New function.\r\r
+\r\r
+       * nnmail.el (nnmail-delete-incoming): Changed to nil.\r\r
+\r\r
+       * message.el (message-send-mail): Insert MIME headers.\r\r
+       (message-check-news-body-syntax): Don't warn for escape sequences.\r\r
+       (message-check-news-body-syntax): Insert MIME headers.\r\r
+\r\r
+       * mm-bodies.el (mm-body-encoding): New function.\r\r
+\r\r
+       * message.el (message-encode-message-body): New function.\r\r
+\r\r
+       * mm-bodies.el: New file.\r\r
+\r\r
+       * mm-util.el (mm-narrow-to-head): New function.\r\r
+\r\r
+       * rfc2047.el (rfc2047-encode): Use it.\r\r
+\r\r
+       * mm-util.el: Provide mm-encode-coding-region.\r\r
+\r\r
+       * gnus-sum.el (gnus-summary-mode): Enable multibyte.\r\r
+\r\r
+       * gnus-util.el (gnus-set-work-buffer): Enable multibyte.\r\r
+\r\r
+       * mm-util.el (mm-enable-multibyte): New function.\r\r
+\r\r
+       * message.el (message-set-work-buffer): Set multibyte.\r\r
+\r\r
+       * gnus.el (gnus-continuum-version): Be valid forever and ever.\r\r
+\r\r
+       * gnus-util.el (gnus-point-at-eol): Removed.\r\r
+       (gnus-point-at-bol): Ditto.\r\r
+\r\r
+       * base64.el (base64-decode-region): Commented out messaging.\r\r
+\r\r
+1998-08-31  Didier Verna  <verna@inf.enst.fr>\r\r
+\r\r
+       * gnus-msg.el (gnus-group-mail): make it behave like\r\r
+       gnus-group-post-news with regards to the prefix (this enables the\r\r
+       use of posting styles).\r\r
+\r\r
+1998-08-31 12:53:32  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus.el (gnus-article-display-hook): Added\r\r
+       gnus-article-decode-rfc1522 to hook.\r\r
+\r\r
+Mon Aug 31 12:43:46 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.10 is released.\r\r
+\r\r
+1998-08-31 11:45:13  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * nnfolder.el (nnfolder-delete-mail): Narrow to mail and allow\r\r
+       hook to be run.\r\r
+\r\r
+1998-08-30 17:59:07  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * rfc2047.el (rfc2047-encodable-p): Use find-charset-region.\r\r
+\r\r
+       * mm-util.el (mm-charsets-in-region): Removed.\r\r
+\r\r
+       * rfc2047.el: Renamed file.\r\r
+\r\r
+       * gnus-msg.el (gnus-copy-article-buffer): Multibyte.\r\r
+\r\r
+       * message.el (message-mode): Set multibyte.\r\r
+\r\r
+       * mm-util.el (mm-charsets-in-region): Copied here.\r\r
+\r\r
+       * gnus-util.el: Removed gnus-truncate-string.\r\r
+\r\r
+       * gnus-art.el (gnus-article-decode-mime-words): Use 1522.\r\r
+\r\r
+       * rfc1522.el (rfc1522-unencoded-charsets): New variable.\r\r
+       (rfc1522-encodable-p): New function.\r\r
+       (rfc1522-encode-message-header): Use it.\r\r
+\r\r
+Sun Aug 30 17:46:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.9 is released.\r\r
+\r\r
+1998-08-30 16:13:08  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-util.el: Shadow encode-coding-string.\r\r
+\r\r
+       * base64.el (base64-encode-region): Don't add newline.\r\r
+\r\r
+       * rfc1522.el (rfc1522-narrow-to-field): Copied here.\r\r
+\r\r
+       * mm-util.el: New file.\r\r
+\r\r
+       * mm-decode.el: Somewhat depleted.\r\r
+       * mm-encode.el: Ditto.\r\r
+\r\r
+       * rfc1522.el: New file.\r\r
+\r\r
+       * mm-util.el (mm-replace-chars-in-string): Copied here.\r\r
+\r\r
+       * mm-encode.el (mm-q-encode-region): New function.\r\r
+\r\r
+       * qp.el (quoted-printable-encode-region): Take an optional CLASS\r\r
+       param.\r\r
+\r\r
+       * mm-encode.el (mm-encode-word-region): Downcase.\r\r
+\r\r
+Sun Aug 30 15:28:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.8 is released.\r\r
+\r\r
+1998-08-30 12:23:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * message.el (message-send-mail): Encode headers.\r\r
+\r\r
+       * qp.el (quoted-printable-encode-region): Encode 8-bit words.\r\r
+       (quoted-printable-encode-region): Upcase.\r\r
+\r\r
+       * message.el (message-default-charset): New variable.\r\r
+\r\r
+       * qp.el (quoted-printable-encode-region): Optional param FOLD.\r\r
+\r\r
+       * message.el (message-narrow-to-field): Changed name.\r\r
+\r\r
+       * mm-encode.el: New file.\r\r
+\r\r
+       * message.el (message-narrow-to-header): New function.\r\r
+\r\r
+       * gnus-art.el (gnus-article-decode-mime-words): Place point in the\r\r
+       right buffer.\r\r
+\r\r
+Sun Aug 30 12:15:54 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.7 is released.\r\r
+\r\r
+1998-08-30 01:26:12  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus.el: Remove autoload for\r\r
+       gnus-article-mime-decode-quoted-printable.\r\r
+\r\r
+       * mm-decode.el (mm-charset-to-coding-system): Allow iso-8859-1 to\r\r
+       be decoded in non-MULE Emacsen.\r\r
+\r\r
+       * gnus-xmas.el (gnus-xmas-logo-color-alist): More brown.\r\r
+\r\r
+1998-08-29  SL Baur  <steve@altair.xemacs.org>\r\r
+\r\r
+       * gnus-xmas.el (gnus-xmas-logo-color-alist): Try shades of brown.\r\r
+\r\r
+1998-08-30 01:04:57  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * mm-decode.el: Check for coding-system-list.\r\r
+\r\r
+Sun Aug 30 00:59:15 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.6 is released.\r\r
+\r\r
+1998-08-30 00:36:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * nnheader.el (fboundp): Protect code-coding-string.\r\r
+\r\r
+       * gnus-art.el (gnus-article-mode): Check that set-buffer-multibyte\r\r
+       is available.\r\r
+\r\r
+Sat Aug 29 23:24:31 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Pterodactyl Gnus v0.5 is released.\r\r
+\r\r
+1998-08-29 22:38:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-article-mode): Make article buffer multibyte.\r\r
+       (gnus-hack-decode-rfc1522): Removed.\r\r
+\r\r
+       * mm-decode.el (mm-charset-coding-system-alist): Check better.\r\r
+\r\r
+Sat Aug 29 22:20:39 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Gnus v0.4 is released.\r\r
+\r\r
+1998-08-29 20:53:29  Lars Magne Ingebrigtsen  <larsi@gnus.org>\r\r
+\r\r
+       * gnus-art.el (gnus-article-decode-mime-words): New command and\r\r
+       keystroke.\r\r
+\r\r
+       * qp.el (quoted-printable-decode-region): Don't use hexl.\r\r
+\r\r
+       * gnus-xmas.el (gnus-xmas-logo-color-style): Changed to dino.\r\r
+\r\r
+       * gnus-sum.el (gnus-parse-headers-hook): Default to nil.\r\r
+       (gnus-structured-field-decoder): Removed.\r\r
+       (gnus-unstructured-field-decoder): Ditto.\r\r
+\r\r
+       * mm-decode.el: New file.\r\r
+\r\r
+       * qp.el: New file.\r\r
+\r\r
+       * gnus-art.el (article-mime-decode-quoted-printable): Removed.\r\r
+\r\r
+       * gnus-ems.el (fboundp): Removed gnus-split-string.\r\r
+\r\r
+       * gnus.el (gnus-splash-face): Doc fix.\r\r
+\r\r
+       * gnus-ems.el (fboundp): Don't bind mail-file-babyl-p.\r\r
+\r\r
+       * gnus-art.el (article-mime-decode-quoted-printable): Don't use\r\r
+       hexl.\r\r
+\r\r
+       * nnheader.el (nnheader-temp-write): Removed.\r\r
+\r\r
+Sat Aug 29 20:34:17 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Gnus v0.3 is released.\r\r
+\r\r
+Sat Aug 29 19:32:06 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>\r\r
+\r\r
+       * gnus.el: Gnus v0.2 is released.\r\r
index fc3848e..03058e0 100644 (file)
-;;; gnus-art.el --- article mode commands for Semi-gnus
-;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
-
-;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
-;;     MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;;     Katsumi Yamaoka <yamaoka@jpl.org>
-;; Keywords: mail, news, MIME
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;;; Code:
-
-(eval-when-compile (require 'cl))
-
-(require 'custom)
-(require 'gnus)
-(require 'gnus-sum)
-(require 'gnus-spec)
-(require 'gnus-int)
-(require 'browse-url)
-(require 'alist)
-(require 'mime-view)
-
-;; Avoid byte-compile warnings.
-(eval-when-compile
-  (defvar gnus-article-decoded-p)
-  (defvar gnus-article-mime-handles)
-  (require 'mm-bodies)
-  (require 'mail-parse)
-  (require 'mm-decode)
-  (require 'mm-view)
-  (require 'wid-edit)
-  (require 'mm-uu)
-  )
-
-(defgroup gnus-article nil
-  "Article display."
-  :link '(custom-manual "(gnus)The Article Buffer")
-  :group 'gnus)
-
-(defgroup gnus-article-hiding nil
-  "Hiding article parts."
-  :link '(custom-manual "(gnus)Article Hiding")
-  :group 'gnus-article)
-
-(defgroup gnus-article-highlight nil
-  "Article highlighting."
-  :link '(custom-manual "(gnus)Article Highlighting")
-  :group 'gnus-article
-  :group 'gnus-visual)
-
-(defgroup gnus-article-signature nil
-  "Article signatures."
-  :link '(custom-manual "(gnus)Article Signature")
-  :group 'gnus-article)
-
-(defgroup gnus-article-headers nil
-  "Article headers."
-  :link '(custom-manual "(gnus)Hiding Headers")
-  :group 'gnus-article)
-
-(defgroup gnus-article-washing nil
-  "Special commands on articles."
-  :link '(custom-manual "(gnus)Article Washing")
-  :group 'gnus-article)
-
-(defgroup gnus-article-emphasis nil
-  "Fontisizing articles."
-  :link '(custom-manual "(gnus)Article Fontisizing")
-  :group 'gnus-article)
-
-(defgroup gnus-article-saving nil
-  "Saving articles."
-  :link '(custom-manual "(gnus)Saving Articles")
-  :group 'gnus-article)
-
-(defgroup gnus-article-mime nil
-  "Worshiping the MIME wonder."
-  :link '(custom-manual "(gnus)Using MIME")
-  :group 'gnus-article)
-
-(defgroup gnus-article-buttons nil
-  "Pushable buttons in the article buffer."
-  :link '(custom-manual "(gnus)Article Buttons")
-  :group 'gnus-article)
-
-(defgroup gnus-article-various nil
-  "Other article options."
-  :link '(custom-manual "(gnus)Misc Article")
-  :group 'gnus-article)
-
-(defcustom gnus-ignored-headers
-  '("^Path:" "^Expires:" "^Date-Received:" "^References:" "^Xref:" "^Lines:"
-    "^Relay-Version:" "^Message-ID:" "^Approved:" "^Sender:" "^Received:"
-    "^X-UIDL:" "^MIME-Version:" "^Return-Path:" "^In-Reply-To:"
-    "^Content-Type:" "^Content-Transfer-Encoding:" "^X-WebTV-Signature:"
-    "^X-MimeOLE:" "^X-MSMail-Priority:" "^X-Priority:" "^X-Loop:"
-    "^X-Authentication-Warning:" "^X-MIME-Autoconverted:" "^X-Face:"
-    "^X-Attribution:" "^X-Originating-IP:" "^Delivered-To:"
-    "^NNTP-[-A-Za-z]+:" "^Distribution:" "^X-no-archive:" "^X-Trace:"
-    "^X-Complaints-To:" "^X-NNTP-Posting-Host:" "^X-Orig.*:"
-    "^Abuse-Reports-To:" "^Cache-Post-Path:" "^X-Article-Creation-Date:"
-    "^X-Poster:" "^X-Mail2News-Path:" "^X-Server-Date:" "^X-Cache:"
-    "^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:"
-    "^X-Gnus-Article-Number:" "^X-Majordomo:" "^X-Url:" "^X-Sender:"
-    "^X-Mailing-List:" "^MBOX-Line" "^Priority:" "^X-Pgp" "^X400-[-A-Za-z]+:"
-    "^Status:")
-  "*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."
-  :type '(choice :custom-show nil
-                regexp
-                (repeat regexp))
-  :group 'gnus-article-hiding)
-
-(defcustom gnus-visible-headers
-  "From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^\\(Mail-\\)?Followup-To:\\|^\\(Mail-\\)?Reply-To:\\|^Mail-Copies-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^Posted-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-From:\\|X-Sent:"
-  "*All headers that do not match this regexp will be hidden.
-This variable can also be a list of regexp of headers to remain visible.
-If this variable is non-nil, `gnus-ignored-headers' will be ignored."
-  :type '(repeat :value-to-internal (lambda (widget value)
-                                     (custom-split-regexp-maybe value))
-                :match (lambda (widget value)
-                         (or (stringp value)
-                             (widget-editable-list-match widget value)))
-                regexp)
-  :group 'gnus-article-hiding)
-
-(defcustom gnus-sorted-header-list
-  '("^From:" "^Subject:" "^Summary:" "^Keywords:" "^Newsgroups:"
-    "^Followup-To:" "^To:" "^Cc:" "^Date:" "^Organization:")
-  "*This variable is a list of regular expressions.
-If it is non-nil, headers that match the regular expressions will
-be placed first in the article buffer in the sequence specified by
-this list."
-  :type '(repeat regexp)
-  :group 'gnus-article-hiding)
-
-(defcustom gnus-boring-article-headers '(empty followup-to reply-to)
-  "Headers that are only to be displayed if they have interesting data.
-Possible values in this list are `empty', `newsgroups', `followup-to',
-`reply-to', `date', `long-to', and `many-to'."
-  :type '(set (const :tag "Headers with no content." empty)
-             (const :tag "Newsgroups with only one group." newsgroups)
-             (const :tag "Followup-to identical to newsgroups." followup-to)
-             (const :tag "Reply-to identical to from." reply-to)
-             (const :tag "Date less than four days old." date)
-             (const :tag "Very long To header." long-to)
-             (const :tag "Multiple To headers." many-to))
-  :group 'gnus-article-hiding)
-
-(defcustom gnus-signature-separator '("^-- $" "^-- *$")
-  "Regexp matching signature separator.
-This can also be a list of regexps.  In that case, it will be checked
-from head to tail looking for a separator.  Searches will be done from
-the end of the buffer."
-  :type '(repeat string)
-  :group 'gnus-article-signature)
-
-(defcustom gnus-signature-limit nil
-   "Provide a limit to what is considered a signature.
-If it is a number, no signature may not be longer (in characters) than
-that number.  If it is a floating point number, no signature may be
-longer (in lines) than that number.  If it is a function, the function
-will be called without any parameters, and if it returns nil, there is
-no signature in the buffer.  If it is a string, it will be used as a
-regexp.  If it matches, the text in question is not a signature."
-  :type '(choice (integer :value 200)
-                (number :value 4.0)
-                (function :value fun)
-                (regexp :value ".*"))
-  :group 'gnus-article-signature)
-
-(defcustom gnus-hidden-properties '(invisible t intangible t)
-  "Property list to use for hiding text."
-  :type 'sexp
-  :group 'gnus-article-hiding)
-
-(defcustom gnus-article-x-face-command
-  "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | xv -quit -"
-  "*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."
-  :type 'string                                ;Leave function case to Lisp.
-  :group 'gnus-article-washing)
-
-(defcustom gnus-article-x-face-too-ugly nil
-  "Regexp matching posters whose face shouldn't be shown automatically."
-  :type '(choice regexp (const nil))
-  :group 'gnus-article-washing)
-
-(defcustom gnus-emphasis-alist
-  (let ((format
-        "\\(\\s-\\|^\\|[-\"]\\|\\s(\\|\\s)\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\\(\\s-\\|[-?!.,;:\"]\\|\\s(\\|\\s)\\)")
-       (types
-        '(("_" "_" underline)
-          ("/" "/" italic)
-          ("\\*" "\\*" bold)
-          ("_/" "/_" underline-italic)
-          ("_\\*" "\\*_" underline-bold)
-          ("\\*/" "/\\*" bold-italic)
-          ("_\\*/" "/\\*_" underline-bold-italic))))
-    `(("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_[^_]\\)+\\)_\\)\\(\\s-\\|[?!.,;]\\)"
-       2 3 gnus-emphasis-underline)
-      ,@(mapcar
-        (lambda (spec)
-          (list
-           (format format (car spec) (cadr spec))
-           2 3 (intern (format "gnus-emphasis-%s" (nth 2 spec)))))
-        types)))
-  "*Alist that says how to fontify certain phrases.
-Each item looks like this:
-
-  (\"_\\\\(\\\\w+\\\\)_\" 0 1 'underline)
-
-The first element is a regular expression to be matched.  The second
-is a number that says what regular expression grouping used to find
-the entire emphasized word.  The third is a number that says what
-regexp grouping should be displayed and highlighted.  The fourth
-is the face used for highlighting."
-  :type '(repeat (list :value ("" 0 0 default)
-                      regexp
-                      (integer :tag "Match group")
-                      (integer :tag "Emphasize group")
-                      face))
-  :group 'gnus-article-emphasis)
-
-(defface gnus-emphasis-bold '((t (:bold t)))
-  "Face used for displaying strong emphasized text (*word*)."
-  :group 'gnus-article-emphasis)
-
-(defface gnus-emphasis-italic '((t (:italic t)))
-  "Face used for displaying italic emphasized text (/word/)."
-  :group 'gnus-article-emphasis)
-
-(defface gnus-emphasis-underline '((t (:underline t)))
-  "Face used for displaying underlined emphasized text (_word_)."
-  :group 'gnus-article-emphasis)
-
-(defface gnus-emphasis-underline-bold '((t (:bold t :underline t)))
-  "Face used for displaying underlined bold emphasized text (_*word*_)."
-  :group 'gnus-article-emphasis)
-
-(defface gnus-emphasis-underline-italic '((t (:italic t :underline t)))
-  "Face used for displaying underlined italic emphasized text (_*word*_)."
-  :group 'gnus-article-emphasis)
-
-(defface gnus-emphasis-bold-italic '((t (:bold t :italic t)))
-  "Face used for displaying bold italic emphasized text (/*word*/)."
-  :group 'gnus-article-emphasis)
-
-(defface gnus-emphasis-underline-bold-italic
-  '((t (:bold t :italic t :underline t)))
-  "Face used for displaying underlined bold italic emphasized text.
-Esample: (_/*word*/_)."
-  :group 'gnus-article-emphasis)
-
-(defcustom gnus-article-time-format "%a, %b %d %Y %T %Z"
-  "Format for display of Date headers in article bodies.
-See `format-time-string' for the possible values.
-
-The variable can also be function, which should return a complete Date
-header.  The function is called with one argument, the time, which can
-be fed to `format-time-string'."
-  :type '(choice string symbol)
-  :link '(custom-manual "(gnus)Article Date")
-  :group 'gnus-article-washing)
-
-(eval-and-compile
-  (autoload 'mail-extract-address-components "mail-extr"))
-
-(defcustom gnus-save-all-headers t
-  "*If non-nil, don't remove any headers before saving."
-  :group 'gnus-article-saving
-  :type 'boolean)
-
-(defcustom gnus-prompt-before-saving 'always
-  "*This variable says how much prompting is to be done when saving articles.
-If it is nil, no prompting will be done, and the articles will be
-saved to the default files.  If this variable is `always', each and
-every article that is saved will be preceded by a prompt, even when
-saving large batches of articles.  If this variable is neither nil not
-`always', there the user will be prompted once for a file name for
-each invocation of the saving commands."
-  :group 'gnus-article-saving
-  :type '(choice (item always)
-                (item :tag "never" nil)
-                (sexp :tag "once" :format "%t\n" :value t)))
-
-(defcustom gnus-saved-headers gnus-visible-headers
-  "Headers to keep if `gnus-save-all-headers' is nil.
-If `gnus-save-all-headers' is non-nil, this variable will be ignored.
-If that variable is nil, however, all headers that match this regexp
-will be kept while the rest will be deleted before saving."
-  :group 'gnus-article-saving
-  :type 'regexp)
-
-(defcustom gnus-default-article-saver 'gnus-summary-save-in-rmail
-  "A function to save articles in your favourite format.
-The function must be interactively callable (in other words, it must
-be an Emacs command).
-
-Gnus provides the following functions:
-
-* gnus-summary-save-in-rmail (Rmail format)
-* gnus-summary-save-in-mail (Unix mail format)
-* gnus-summary-save-in-folder (MH folder)
-* gnus-summary-save-in-file (article format)
-* gnus-summary-save-in-vm (use VM's folder format)
-* gnus-summary-write-to-file (article format -- overwrite)."
-  :group 'gnus-article-saving
-  :type '(radio (function-item gnus-summary-save-in-rmail)
-               (function-item gnus-summary-save-in-mail)
-               (function-item gnus-summary-save-in-folder)
-               (function-item gnus-summary-save-in-file)
-               (function-item gnus-summary-save-in-vm)
-               (function-item gnus-summary-write-to-file)))
-
-(defcustom gnus-rmail-save-name 'gnus-plain-save-name
-  "A function generating a file name to save articles in Rmail format.
-The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE."
-  :group 'gnus-article-saving
-  :type 'function)
-
-(defcustom gnus-mail-save-name 'gnus-plain-save-name
-  "A function generating a file name to save articles in Unix mail format.
-The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE."
-  :group 'gnus-article-saving
-  :type 'function)
-
-(defcustom gnus-folder-save-name 'gnus-folder-save-name
-  "A function generating a file name to save articles in MH folder.
-The function is called with NEWSGROUP, HEADERS, and optional LAST-FOLDER."
-  :group 'gnus-article-saving
-  :type 'function)
-
-(defcustom gnus-file-save-name 'gnus-numeric-save-name
-  "A function generating a file name to save articles in article format.
-The function is called with NEWSGROUP, HEADERS, and optional
-LAST-FILE."
-  :group 'gnus-article-saving
-  :type 'function)
-
-(defcustom gnus-split-methods
-  '((gnus-article-archive-name)
-    (gnus-article-nndoc-name))
-  "*Variable used to suggest where articles are to be saved.
-For instance, if you would like to save articles related to Gnus in
-the file \"gnus-stuff\", and articles related to VM in \"vm-stuff\",
-you could set this variable to something like:
-
- '((\"^Subject:.*gnus\\|^Newsgroups:.*gnus\" \"gnus-stuff\")
-   (\"^Subject:.*vm\\|^Xref:.*vm\" \"vm-stuff\"))
-
-This variable is an alist where the where the key is the match and the
-value is a list of possible files to save in if the match is non-nil.
-
-If the match is a string, it is used as a regexp match on the
-article.  If the match is a symbol, that symbol will be funcalled
-from the buffer of the article to be saved with the newsgroup as the
-parameter.  If it is a list, it will be evaled in the same buffer.
-
-If this form or function returns a string, this string will be used as
-a possible file name; and if it returns a non-nil list, that list will
-be used as possible file names."
-  :group 'gnus-article-saving
-  :type '(repeat (choice (list :value (fun) function)
-                        (cons :value ("" "") regexp (repeat string))
-                        (sexp :value nil))))
-
-(defcustom gnus-article-display-method-for-mime
-  'gnus-article-display-mime-message
-  "Function to display a MIME message.
-The function is called from the article buffer."
-  :group 'gnus-article-mime
-  :type 'function)
-
-(defcustom gnus-article-display-method-for-traditional
-  'gnus-article-display-traditional-message
-  "*Function to display a traditional message.
-The function is called from the article buffer."
-  :group 'gnus-article-mime
-  :type 'function)
-
-(defcustom gnus-page-delimiter "^\^L"
-  "*Regexp describing what to use as article page delimiters.
-The default value is \"^\^L\", which is a form linefeed at the
-beginning of a line."
-  :type 'regexp
-  :group 'gnus-article-various)
-
-(defcustom gnus-article-mode-line-format "Gnus: %g %S%m"
-  "*The format specification for the article mode line.
-See `gnus-summary-mode-line-format' for a closer description.
-
-The following additional specs are available:
-
-%w  The article washing status.
-%m  The number of MIME parts in the article."
-  :type 'string
-  :group 'gnus-article-various)
-
-(defcustom gnus-article-mode-hook nil
-  "*A hook for Gnus article mode."
-  :type 'hook
-  :group 'gnus-article-various)
-
-(defcustom gnus-article-menu-hook nil
-  "*Hook run after the creation of the article mode menu."
-  :type 'hook
-  :group 'gnus-article-various)
-
-(defcustom gnus-article-prepare-hook nil
-  "*A hook called after an article has been prepared in the article buffer.
-If you want to run a special decoding program like nkf, use this hook."
-  :type 'hook
-  :group 'gnus-article-various)
-
-(defcustom gnus-article-hide-pgp-hook nil
-  "*A hook called after successfully hiding a PGP signature."
-  :type 'hook
-  :group 'gnus-article-various)
-
-(defcustom gnus-article-button-face 'bold
-  "Face used for highlighting buttons in the article buffer.
-
-An article button is a piece of text that you can activate by pressing
-`RET' or `mouse-2' above it."
-  :type 'face
-  :group 'gnus-article-buttons)
-
-(defcustom gnus-article-mouse-face 'highlight
-  "Face used for mouse highlighting in the article buffer.
-
-Article buttons will be displayed in this face when the cursor is
-above them."
-  :type 'face
-  :group 'gnus-article-buttons)
-
-(defcustom gnus-signature-face 'gnus-signature-face
-  "Face used for highlighting a signature in the article buffer.
-Obsolete; use the face `gnus-signature-face' for customizations instead."
-  :type 'face
-  :group 'gnus-article-highlight
-  :group 'gnus-article-signature)
-
-(defface gnus-signature-face
-  '((((type x))
-     (:italic t)))
-  "Face used for highlighting a signature in the article buffer."
-  :group 'gnus-article-highlight
-  :group 'gnus-article-signature)
-
-(defface gnus-header-from-face
-  '((((class color)
-      (background dark))
-     (:foreground "spring green"))
-    (((class color)
-      (background light))
-     (:foreground "red3"))
-    (t
-     (:italic t)))
-  "Face used for displaying from headers."
-  :group 'gnus-article-headers
-  :group 'gnus-article-highlight)
-
-(defface gnus-header-subject-face
-  '((((class color)
-      (background dark))
-     (:foreground "SeaGreen3"))
-    (((class color)
-      (background light))
-     (:foreground "red4"))
-    (t
-     (:bold t :italic t)))
-  "Face used for displaying subject headers."
-  :group 'gnus-article-headers
-  :group 'gnus-article-highlight)
-
-(defface gnus-header-newsgroups-face
-  '((((class color)
-      (background dark))
-     (:foreground "yellow" :italic t))
-    (((class color)
-      (background light))
-     (:foreground "MidnightBlue" :italic t))
-    (t
-     (:italic t)))
-  "Face used for displaying newsgroups headers."
-  :group 'gnus-article-headers
-  :group 'gnus-article-highlight)
-
-(defface gnus-header-name-face
-  '((((class color)
-      (background dark))
-     (:foreground "SeaGreen"))
-    (((class color)
-      (background light))
-     (:foreground "maroon"))
-    (t
-     (:bold t)))
-  "Face used for displaying header names."
-  :group 'gnus-article-headers
-  :group 'gnus-article-highlight)
-
-(defface gnus-header-content-face
-  '((((class color)
-      (background dark))
-     (:foreground "forest green" :italic t))
-    (((class color)
-      (background light))
-     (:foreground "indianred4" :italic t))
-    (t
-     (:italic t)))  "Face used for displaying header content."
-  :group 'gnus-article-headers
-  :group 'gnus-article-highlight)
-
-(defcustom gnus-header-face-alist
-  '(("From" nil gnus-header-from-face)
-    ("Subject" nil gnus-header-subject-face)
-    ("Newsgroups:.*," nil gnus-header-newsgroups-face)
-    ("" gnus-header-name-face gnus-header-content-face))
-  "*Controls highlighting of article header.
-
-An alist of the form (HEADER NAME CONTENT).
-
-HEADER is a regular expression which should match the name of an
-header header and NAME and CONTENT are either face names or nil.
-
-The name of each header field will be displayed using the face
-specified by the first element in the list where HEADER match the
-header name and NAME is non-nil.  Similarly, the content will be
-displayed by the first non-nil matching CONTENT face."
-  :group 'gnus-article-headers
-  :group 'gnus-article-highlight
-  :type '(repeat (list (regexp :tag "Header")
-                      (choice :tag "Name"
-                              (item :tag "skip" nil)
-                              (face :value default))
-                      (choice :tag "Content"
-                              (item :tag "skip" nil)
-                              (face :value default)))))
-
-(defcustom gnus-article-decode-hook nil
-  "*Hook run to decode charsets in articles."
-  :group 'gnus-article-headers
-  :type 'hook)
-
-(defcustom gnus-display-mime-function 'gnus-display-mime
-  "Function to display MIME articles."
-  :group 'gnus-article-mime
-  :type 'function)
-
-(defvar gnus-decode-header-function 'mail-decode-encoded-word-region
-  "Function used to decode headers.")
-
-(defvar gnus-article-dumbquotes-map
-  '(("\202" ",")
-    ("\203" "f")
-    ("\204" ",,")
-    ("\205" "...")
-    ("\213" "<")
-    ("\214" "OE")
-    ("\205" "...")
-    ("\221" "`")
-    ("\222" "'")
-    ("\223" "``")
-    ("\224" "''")
-    ("\225" "*")
-    ("\226" "-")
-    ("\227" "-")
-    ("\231" "(TM)")
-    ("\233" ">")
-    ("\234" "oe")
-    ("\264" "'"))
-  "Table for MS-to-Latin1 translation.")
-
-(defcustom gnus-ignored-mime-types nil
-  "List of MIME types that should be ignored by Gnus."
-  :group 'gnus-article-mime
-  :type '(repeat regexp))
-
-(defcustom gnus-unbuttonized-mime-types '(".*/.*")
-  "List of MIME types that should not be given buttons when rendered."
-  :group 'gnus-article-mime
-  :type '(repeat regexp))
-
-(defcustom gnus-treat-body-highlight-signature t
-  "Highlight the signature."
-  :group 'gnus-article
-  :type '(choice (const :tag "Off" nil)
-                (const :tag "On" t)
-                (const :tag "Last" last)
-                (integer :tag "Less")
-                (sexp :tag "Predicate")))
-
-(defcustom gnus-article-mime-part-function nil
-  "Function called with a MIME handle as the argument."
-  :group 'gnus-article-mime
-  :type 'function)
-
-;;; Internal variables
-
-(defvar gnus-article-mime-handle-alist-1 nil)
-(defvar gnus-treatment-function-alist
-  '((gnus-treat-body-highlight-signature gnus-article-highlight-signature nil)
-    ))
-
-(defvar gnus-article-mime-handle-alist nil)
-(defvar article-lapsed-timer nil)
-(defvar gnus-article-current-summary nil)
-
-(defvar gnus-article-mode-syntax-table
-  (let ((table (copy-syntax-table text-mode-syntax-table)))
-    (modify-syntax-entry ?- "w" table)
-    (modify-syntax-entry ?> ")" table)
-    (modify-syntax-entry ?< "(" table)
-    table)
-  "Syntax table used in article mode buffers.
-Initialized from `text-mode-syntax-table.")
-
-(defvar gnus-save-article-buffer nil)
-
-(defvar gnus-article-mode-line-format-alist
-  (nconc '((?w (gnus-article-wash-status) ?s)
-          (?m (gnus-article-mime-part-status) ?s))
-        gnus-summary-mode-line-format-alist))
-
-(defvar gnus-number-of-articles-to-be-saved nil)
-
-(defvar gnus-inhibit-hiding nil)
-
-(defsubst gnus-article-hide-text (b e props)
-  "Set text PROPS on the B to E region, extending `intangible' 1 past B."
-  (add-text-properties b e props)
-  (when (memq 'intangible props)
-    (put-text-property
-     (max (1- b) (point-min))
-     b 'intangible (cddr (memq 'intangible props)))))
-
-(defmacro gnus-with-article (article &rest forms)
-  "Select ARTICLE and perform FORMS in the original article buffer.
-Then replace the article with the result."
-  `(progn
-     ;; We don't want the article to be marked as read.
-     (let (gnus-mark-article-hook)
-       (gnus-summary-select-article t t nil ,article))
-     (set-buffer gnus-original-article-buffer)
-     ,@forms
-     (if (not (gnus-check-backend-function
-              'request-replace-article (car gnus-article-current)))
-        (gnus-message 5 "Read-only group; not replacing")
-       (unless (gnus-request-replace-article
-               ,article (car gnus-article-current)
-               (current-buffer) t)
-        (error "Couldn't replace article")))
-     ;; The cache and backlog have to be flushed somewhat.
-     (when gnus-keep-backlog
-       (gnus-backlog-remove-article
-       (car gnus-article-current) (cdr gnus-article-current)))
-     (when gnus-use-cache
-       (gnus-cache-update-article
-       (car gnus-article-current) (cdr gnus-article-current)))))
-
-(put 'gnus-with-article 'lisp-indent-function 1)
-(put 'gnus-with-article 'edebug-form-spec '(form body))
-
-(defsubst gnus-article-unhide-text (b e)
-  "Remove hidden text properties from region between B and E."
-  (remove-text-properties b e gnus-hidden-properties)
-  (when (memq 'intangible gnus-hidden-properties)
-    (put-text-property (max (1- b) (point-min))
-                      b 'intangible nil)))
-
-(defun gnus-article-hide-text-type (b e type)
-  "Hide text of TYPE between B and E."
-  (gnus-article-hide-text
-   b e (cons 'article-type (cons type gnus-hidden-properties))))
-
-(defun gnus-article-unhide-text-type (b e type)
-  "Unhide text of TYPE between B and E."
-  (remove-text-properties
-   b e (cons 'article-type (cons type gnus-hidden-properties)))
-  (when (memq 'intangible gnus-hidden-properties)
-    (put-text-property (max (1- b) (point-min))
-                      b 'intangible nil)))
-
-(defun gnus-article-hide-text-of-type (type)
-  "Hide text of TYPE in the current buffer."
-  (save-excursion
-    (let ((b (point-min))
-         (e (point-max)))
-      (while (setq b (text-property-any b e 'article-type type))
-       (add-text-properties b (incf b) gnus-hidden-properties)))))
-
-(defun gnus-article-delete-text-of-type (type)
-  "Delete text of TYPE in the current buffer."
-  (save-excursion
-    (let ((b (point-min)))
-      (while (setq b (text-property-any b (point-max) 'article-type type))
-       (delete-region
-        b (or (text-property-not-all b (point-max) 'article-type type)
-              (point-max)))))))
-
-(defun gnus-article-delete-invisible-text ()
-  "Delete all invisible text in the current buffer."
-  (save-excursion
-    (let ((b (point-min)))
-      (while (setq b (text-property-any b (point-max) 'invisible t))
-       (delete-region
-        b (or (text-property-not-all b (point-max) 'invisible t)
-              (point-max)))))))
-
-(defun gnus-article-text-type-exists-p (type)
-  "Say whether any text of type TYPE exists in the buffer."
-  (text-property-any (point-min) (point-max) 'article-type type))
-
-(defsubst gnus-article-header-rank ()
-  "Give the rank of the string HEADER as given by `gnus-sorted-header-list'."
-  (let ((list gnus-sorted-header-list)
-       (i 0))
-    (while list
-      (when (looking-at (car list))
-       (setq list nil))
-      (setq list (cdr list))
-      (incf i))
-    i))
-
-(defun article-hide-headers (&optional arg delete)
-  "Toggle whether to hide unwanted headers and possibly sort them as well.
-If given a negative prefix, always show; if given a positive prefix,
-always hide."
-  (interactive (gnus-article-hidden-arg))
-  (current-buffer)
-  (if (gnus-article-check-hidden-text 'headers arg)
-      ;; Show boring headers as well.
-      (gnus-article-show-hidden-text 'boring-headers)
-    ;; This function might be inhibited.
-    (unless gnus-inhibit-hiding
-      (save-excursion
-       (save-restriction
-         (let ((buffer-read-only nil)
-               (case-fold-search t)
-               (props (nconc (list 'article-type 'headers)
-                             gnus-hidden-properties))
-               (max (1+ (length gnus-sorted-header-list)))
-               (ignored (when (not gnus-visible-headers)
-                          (cond ((stringp gnus-ignored-headers)
-                                 gnus-ignored-headers)
-                                ((listp gnus-ignored-headers)
-                                 (mapconcat 'identity gnus-ignored-headers
-                                            "\\|")))))
-               (visible
-                (cond ((stringp gnus-visible-headers)
-                       gnus-visible-headers)
-                      ((and gnus-visible-headers
-                            (listp gnus-visible-headers))
-                       (mapconcat 'identity gnus-visible-headers "\\|"))))
-               (inhibit-point-motion-hooks t)
-               beg)
-           ;; First we narrow to just the headers.
-           (widen)
-           (goto-char (point-min))
-           ;; Hide any "From " lines at the beginning of (mail) articles.
-           (while (looking-at "From ")
-             (forward-line 1))
-           (unless (bobp)
-             (if delete
-                 (delete-region (point-min) (point))
-               (gnus-article-hide-text (point-min) (point) props)))
-           ;; Then treat the rest of the header lines.
-           (narrow-to-region
-            (point)
-            (if (search-forward "\n\n" nil t) ; if there's a body
-                (progn (forward-line -1) (point))
-              (point-max)))
-           ;; Then we use the two regular expressions
-           ;; `gnus-ignored-headers' and `gnus-visible-headers' to
-           ;; select which header lines is to remain visible in the
-           ;; article buffer.
-           (goto-char (point-min))
-           (while (re-search-forward "^[^ \t]*:" nil t)
-             (beginning-of-line)
-             ;; Mark the rank of the header.
-             (put-text-property
-              (point) (1+ (point)) 'message-rank
-              (if (or (and visible (looking-at visible))
-                      (and ignored
-                           (not (looking-at ignored))))
-                  (gnus-article-header-rank)
-                (+ 2 max)))
-             (forward-line 1))
-           (message-sort-headers-1)
-           (when (setq beg (text-property-any
-                            (point-min) (point-max) 'message-rank (+ 2 max)))
-             ;; We make the unwanted headers invisible.
-             (if delete
-                 (delete-region beg (point-max))
-               ;; Suggested by Sudish Joseph <joseph@cis.ohio-state.edu>.
-               (gnus-article-hide-text-type beg (point-max) 'headers))
-             ;; Work around XEmacs lossage.
-             (put-text-property (point-min) beg 'invisible nil))))))))
-
-(defun article-hide-boring-headers (&optional arg)
-  "Toggle hiding of headers that aren't very interesting.
-If given a negative prefix, always show; if given a positive prefix,
-always hide."
-  (interactive (gnus-article-hidden-arg))
-  (when (and (not (gnus-article-check-hidden-text 'boring-headers arg))
-            (not gnus-show-all-headers))
-    (save-excursion
-      (save-restriction
-       (let ((buffer-read-only nil)
-             (list gnus-boring-article-headers)
-             (inhibit-point-motion-hooks t)
-             elem)
-         (nnheader-narrow-to-headers)
-         (while list
-           (setq elem (pop list))
-           (goto-char (point-min))
-           (cond
-            ;; Hide empty headers.
-            ((eq elem 'empty)
-             (while (re-search-forward "^[^:]+:[ \t]*\n[^ \t]" nil t)
-               (forward-line -1)
-               (gnus-article-hide-text-type
-                (progn (beginning-of-line) (point))
-                (progn
-                  (end-of-line)
-                  (if (re-search-forward "^[^ \t]" nil t)
-                      (match-beginning 0)
-                    (point-max)))
-                'boring-headers)))
-            ;; Hide boring Newsgroups header.
-            ((eq elem 'newsgroups)
-             (when (equal (gnus-fetch-field "newsgroups")
-                          (gnus-group-real-name
-                           (if (boundp 'gnus-newsgroup-name)
-                               gnus-newsgroup-name
-                             "")))
-               (gnus-article-hide-header "newsgroups")))
-            ((eq elem 'followup-to)
-             (when (equal (message-fetch-field "followup-to")
-                          (message-fetch-field "newsgroups"))
-               (gnus-article-hide-header "followup-to")))
-            ((eq elem 'reply-to)
-             (let ((from (message-fetch-field "from"))
-                   (reply-to (message-fetch-field "reply-to")))
-               (when (and
-                      from reply-to
-                      (ignore-errors
-                        (equal
-                         (nth 1 (funcall gnus-extract-address-components from))
-                         (nth 1 (funcall gnus-extract-address-components reply-to)))))
-                 (gnus-article-hide-header "reply-to"))))
-            ((eq elem 'date)
-             (let ((date (message-fetch-field "date")))
-               (when (and date
-                          (< (days-between (current-time-string) date)
-                             4))
-                 (gnus-article-hide-header "date"))))
-            ((eq elem 'long-to)
-             (let ((to (message-fetch-field "to")))
-               (when (> (length to) 1024)
-                 (gnus-article-hide-header "to"))))
-            ((eq elem 'many-to)
-             (let ((to-count 0))
-               (goto-char (point-min))
-               (while (re-search-forward "^to:" nil t)
-                 (setq to-count (1+ to-count)))
-               (when (> to-count 1)
-                 (while (> to-count 0)
-                   (goto-char (point-min))
-                   (save-restriction
-                     (re-search-forward "^to:" nil nil to-count)
-                     (forward-line -1)
-                     (narrow-to-region (point) (point-max))
-                     (gnus-article-hide-header "to"))
-                   (setq to-count (1- to-count)))))))))))))
-
-(defun gnus-article-hide-header (header)
-  (save-excursion
-    (goto-char (point-min))
-    (when (re-search-forward (concat "^" header ":") nil t)
-      (gnus-article-hide-text-type
-       (progn (beginning-of-line) (point))
-       (progn
-        (end-of-line)
-        (if (re-search-forward "^[^ \t]" nil t)
-            (match-beginning 0)
-          (point-max)))
-       'boring-headers))))
-
-(defvar gnus-article-normalized-header-length 40
-  "Length of normalized headers.")
-
-(defun article-normalize-headers ()
-  "Make all header lines 40 characters long."
-  (interactive)
-  (let ((buffer-read-only nil)
-       column)
-    (save-excursion
-      (save-restriction
-       (message-narrow-to-head)
-       (while (not (eobp))
-         (cond
-          ((< (setq column (- (gnus-point-at-eol) (point)))
-              gnus-article-normalized-header-length)
-           (end-of-line)
-           (insert (make-string
-                    (- gnus-article-normalized-header-length column)
-                    ? )))
-          ((> column gnus-article-normalized-header-length)
-           (gnus-put-text-property
-            (progn
-              (forward-char gnus-article-normalized-header-length)
-              (point))
-            (gnus-point-at-eol)
-            'invisible t))
-          (t
-           ;; Do nothing.
-           ))
-         (forward-line 1))))))
-
-(defun article-treat-dumbquotes ()
-  "Translate M******** sm*rtq**t*s into proper text."
-  (interactive)
-  (article-translate-strings gnus-article-dumbquotes-map))
-
-(defun article-translate-characters (from to)
-  "Translate all characters in the body of the article according to FROM and TO.
-FROM is a string of characters to translate from; to is a string of
-characters to translate to."
-  (save-excursion
-    (when (article-goto-body)
-      (let ((buffer-read-only nil)
-           (x (make-string 225 ?x))
-           (i -1))
-       (while (< (incf i) (length x))
-         (aset x i i))
-       (setq i 0)
-       (while (< i (length from))
-         (aset x (aref from i) (aref to i))
-         (incf i))
-       (translate-region (point) (point-max) x)))))
-
-(defun article-translate-strings (map)
-  "Translate all string in the body of the article according to MAP.
-MAP is an alist where the elements are on the form (\"from\" \"to\")."
-  (save-excursion
-    (when (article-goto-body)
-      (let ((buffer-read-only nil)
-           elem)
-       (while (setq elem (pop map))
-         (save-excursion
-           (while (search-forward (car elem) nil t)
-             (replace-match (cadr elem)))))))))
-
-(defun article-treat-overstrike ()
-  "Translate overstrikes into bold text."
-  (interactive)
-  (save-excursion
-    (when (article-goto-body)
-      (let ((buffer-read-only nil))
-       (while (search-forward "\b" nil t)
-         (let ((next (char-after))
-               (previous (char-after (- (point) 2))))
-           ;; 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))
-            ((eq next ?_)
-             (gnus-article-hide-text-type
-              (1- (point)) (1+ (point)) 'overstrike)
-             (put-text-property
-              (- (point) 2) (1- (point)) 'face 'underline))
-            ((eq previous ?_)
-             (gnus-article-hide-text-type (- (point) 2) (point) 'overstrike)
-             (put-text-property
-              (point) (1+ (point)) 'face 'underline)))))))))
-
-(defun article-fill ()
-  "Format too long lines."
-  (interactive)
-  (save-excursion
-    (let ((buffer-read-only nil))
-      (widen)
-      (article-goto-body)
-      (end-of-line 1)
-      (let ((paragraph-start "^[>|#:<;* ]*[ \t]*$")
-           (adaptive-fill-regexp "[ \t]*\\([|#:<;>*]+ *\\)?")
-           (adaptive-fill-mode t))
-       (while (not (eobp))
-         (and (>= (current-column) (min fill-column (window-width)))
-              (/= (preceding-char) ?:)
-              (fill-paragraph nil))
-         (end-of-line 2))))))
-
-(defun article-remove-cr ()
-  "Translate CRLF pairs into LF, and then CR into LF.."
-  (interactive)
-  (save-excursion
-    (let ((buffer-read-only nil))
-      (goto-char (point-min))
-      (while (search-forward "\r$" nil t)
-       (replace-match "" t t))
-      (goto-char (point-min))
-      (while (search-forward "\r" nil t)
-       (replace-match "\n" t t)))))
-
-(defun article-remove-trailing-blank-lines ()
-  "Remove all trailing blank lines from the article."
-  (interactive)
-  (save-excursion
-    (let ((buffer-read-only nil))
-      (goto-char (point-max))
-      (delete-region
-       (point)
-       (progn
-        (while (and (not (bobp))
-                    (looking-at "^[ \t]*$")
-                    (not (gnus-annotation-in-region-p
-                          (point) (gnus-point-at-eol))))
-          (forward-line -1))
-        (forward-line 1)
-        (point))))))
-
-(defun article-display-x-face (&optional force)
-  "Look for an X-Face header and display it if present."
-  (interactive (list 'force))
-  (save-excursion
-    ;; Delete the old process, if any.
-    (when (process-status "article-x-face")
-      (delete-process "article-x-face"))
-    (let ((inhibit-point-motion-hooks t)
-         (case-fold-search t)
-         from last)
-      (save-restriction
-       (nnheader-narrow-to-headers)
-       (setq from (message-fetch-field "from"))
-       (goto-char (point-min))
-       (while (and gnus-article-x-face-command
-                   (not last)
-                   (or force
-                       ;; Check whether this face is censored.
-                       (not gnus-article-x-face-too-ugly)
-                       (and gnus-article-x-face-too-ugly from
-                            (not (string-match gnus-article-x-face-too-ugly
-                                               from))))
-                   ;; Has to be present.
-                   (re-search-forward "^X-Face: " nil t))
-         ;; This used to try to do multiple faces (`while' instead of
-         ;; `when' above), but (a) sending multiple EOFs to xv doesn't
-         ;; work (b) it can crash some versions of Emacs (c) are
-         ;; multiple faces really something to encourage?
-         (when (stringp gnus-article-x-face-command)
-           (setq last t))
-         ;; We now have the area of the buffer where the X-Face is stored.
-         (save-excursion
-           (let ((beg (point))
-                 (end (1- (re-search-forward "^\\($\\|[^ \t]\\)" nil t))))
-             ;; We display the face.
-             (if (symbolp gnus-article-x-face-command)
-                 ;; The command is a lisp function, so we call it.
-                 (if (gnus-functionp gnus-article-x-face-command)
-                     (funcall gnus-article-x-face-command beg end)
-                   (error "%s is not a function" gnus-article-x-face-command))
-               ;; The command is a string, so we interpret the command
-               ;; as a, well, command, and fork it off.
-               (let ((process-connection-type nil))
-                 (process-kill-without-query
-                  (start-process
-                   "article-x-face" nil shell-file-name shell-command-switch
-                   gnus-article-x-face-command))
-                 (process-send-region "article-x-face" beg end)
-                 (process-send-eof "article-x-face"))))))))))
-
-(defun article-decode-mime-words ()
-  "Decode all MIME-encoded words in the article."
-  (interactive)
-  (save-excursion
-    (set-buffer gnus-article-buffer)
-    (let ((inhibit-point-motion-hooks t)
-         buffer-read-only
-         (rfc2047-default-charset gnus-newsgroup-default-charset)
-         (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
-      (mail-decode-encoded-word-region (point-min) (point-max)))))
-
-(defun article-decode-charset (&optional prompt)
-  "Decode charset-encoded text in the article.
-If PROMPT (the prefix), prompt for a coding system to use."
-  (interactive "P")
-  (save-excursion
-    (save-restriction
-      (message-narrow-to-head)
-      (let* ((inhibit-point-motion-hooks t)
-            (case-fold-search t)
-            (ct (message-fetch-field "Content-Type" t))
-            (cte (message-fetch-field "Content-Transfer-Encoding" t))
-            (ctl (and ct (condition-case ()
-                             (mail-header-parse-content-type ct)
-                           (error nil))))
-            (charset (cond
-                      (prompt
-                       (mm-read-coding-system "Charset to decode: "))
-                      (ctl
-                       (mail-content-type-get ctl 'charset))))
-            (rfc2047-default-charset gnus-newsgroup-default-charset)
-            (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced)
-            buffer-read-only)
-       (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)))
-         (mm-decode-body
-          charset (and cte (intern (downcase
-                                    (gnus-strip-whitespace cte))))
-          (car ctl)))))))
-
-(defun article-decode-encoded-words ()
-  "Remove encoded-word encoding from headers."
-  (let (buffer-read-only)
-    (let ((charset (save-excursion
-                    (set-buffer gnus-summary-buffer)
-                    default-mime-charset)))
-      (mime-decode-header-in-buffer charset)
-      )))
-
-(defun article-de-quoted-unreadable (&optional force)
-  "Translate a quoted-printable-encoded article.
-If FORCE, decode the article whether it is marked as quoted-printable
-or not."
-  (interactive (list 'force))
-  (save-excursion
-    (let ((buffer-read-only nil)
-         (type (gnus-fetch-field "content-transfer-encoding"))
-         (charset
-          (or gnus-newsgroup-default-charset mm-default-coding-system))
-         (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
-      (when (or force
-               (and type (string-match "quoted-printable" (downcase type))))
-       (article-goto-body)
-       (save-restriction
-         (narrow-to-region (point) (point-max))
-         (quoted-printable-decode-region (point-min) (point-max))
-         (when charset
-           (mm-decode-body charset)))))))
-
-(defun article-hide-pgp (&optional arg)
-  "Toggle hiding of any PGP headers and signatures 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 'pgp arg)
-    (save-excursion
-      (let ((inhibit-point-motion-hooks t)
-           buffer-read-only beg end)
-       (widen)
-       (goto-char (point-min))
-       ;; Hide the "header".
-       (when (search-forward "\n-----BEGIN PGP SIGNED MESSAGE-----\n" nil t)
-         (delete-region (1+ (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))))
-         (setq beg (point))
-         ;; Hide the actual signature.
-         (and (search-forward "\n-----BEGIN PGP SIGNATURE-----\n" nil t)
-              (setq end (1+ (match-beginning 0)))
-              (delete-region
-               end
-               (if (search-forward "\n-----END PGP SIGNATURE-----\n" nil t)
-                   (match-end 0)
-                 ;; Perhaps we shouldn't hide to the end of the buffer
-                 ;; if there is no end to the signature?
-                 (point-max))))
-         ;; Hide "- " PGP quotation markers.
-         (when (and beg end)
-           (narrow-to-region beg end)
-           (goto-char (point-min))
-           (while (re-search-forward "^- " nil t)
-             (delete-region
-              (match-beginning 0) (match-end 0)))
-           (widen))
-         (gnus-run-hooks 'gnus-article-hide-pgp-hook))))))
-
-(defun article-hide-pem (&optional arg)
-  "Toggle hiding of any PEM headers and signatures 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 'pem arg)
-    (save-excursion
-      (let (buffer-read-only end)
-       (widen)
-       (goto-char (point-min))
-       ;; hide the horrendously ugly "header".
-       (and (search-forward "\n-----BEGIN PRIVACY-ENHANCED MESSAGE-----\n"
-                            nil
-                            t)
-            (setq end (1+ (match-beginning 0)))
-            (gnus-article-hide-text-type
-             end
-             (if (search-forward "\n\n" nil t)
-                 (match-end 0)
-               (point-max))
-             'pem))
-       ;; hide the trailer as well
-       (and (search-forward "\n-----END PRIVACY-ENHANCED MESSAGE-----\n"
-                            nil
-                            t)
-            (gnus-article-hide-text-type
-             (match-beginning 0) (match-end 0) 'pem))))))
-
-(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)))))))
-
-(defun article-strip-leading-blank-lines ()
-  "Remove all blank lines from the beginning of the article."
-  (interactive)
-  (save-excursion
-    (let ((inhibit-point-motion-hooks t)
-         buffer-read-only)
-      (when (article-goto-body)
-       (while (and (not (eobp))
-                   (looking-at "[ \t]*$"))
-         (gnus-delete-line))))))
-
-(defun article-goto-body ()
-  "Place point at the start of the body."  
-  (goto-char (point-min))
-  (if (search-forward "\n\n" nil t)
-      t
-    (goto-char (point-max))
-    nil))
-
-(defun article-strip-multiple-blank-lines ()
-  "Replace consecutive blank lines with one empty line."
-  (interactive)
-  (save-excursion
-    (let ((inhibit-point-motion-hooks t)
-         buffer-read-only)
-      ;; First make all blank lines empty.
-      (article-goto-body)
-      (while (re-search-forward "^[ \t]+$" nil t)
-       (unless (gnus-annotation-in-region-p
-                (match-beginning 0) (match-end 0))
-         (replace-match "" nil t)))
-      ;; Then replace multiple empty lines with a single empty line.
-      (article-goto-body)
-      (while (re-search-forward "\n\n\n+" nil t)
-       (unless (gnus-annotation-in-region-p
-                (match-beginning 0) (match-end 0))
-         (replace-match "\n\n" t t))))))
-
-(defun article-strip-leading-space ()
-  "Remove all white space from the beginning of the lines in the article."
-  (interactive)
-  (save-excursion
-    (let ((inhibit-point-motion-hooks t)
-         buffer-read-only)
-      (article-goto-body)
-      (while (re-search-forward "^[ \t]+" nil t)
-       (replace-match "" t t)))))
-
-(defun article-strip-trailing-space ()
-  "Remove all white space from the end of the lines in the article."
-  (interactive)
-  (save-excursion
-    (let ((inhibit-point-motion-hooks t)
-         buffer-read-only)
-      (article-goto-body)
-      (while (re-search-forward "[ \t]+$" nil t)
-       (replace-match "" t t)))))
-
-(defun article-strip-blank-lines ()
-  "Strip leading, trailing and multiple blank lines."
-  (interactive)
-  (article-strip-leading-blank-lines)
-  (article-remove-trailing-blank-lines)
-  (article-strip-multiple-blank-lines))
-
-(defun article-strip-all-blank-lines ()
-  "Strip all blank lines."
-  (interactive)
-  (save-excursion
-    (let ((inhibit-point-motion-hooks t)
-         buffer-read-only)
-      (article-goto-body)
-      (while (re-search-forward "^[ \t]*\n" nil t)
-       (replace-match "" t t)))))
-
-(defun gnus-article-narrow-to-signature ()
-  "Narrow to the signature; return t if a signature is found, else nil."
-  (widen)
-  (let ((inhibit-point-motion-hooks t))
-    (when (gnus-article-search-signature)
-      (forward-line 1)
-      ;; Check whether we have some limits to what we consider
-      ;; to be a signature.
-      (let ((limits (if (listp gnus-signature-limit) gnus-signature-limit
-                     (list gnus-signature-limit)))
-           limit limited)
-       (while (setq limit (pop limits))
-         (if (or (and (integerp limit)
-                      (< (- (point-max) (point)) limit))
-                 (and (floatp limit)
-                      (< (count-lines (point) (point-max)) limit))
-                 (and (gnus-functionp limit)
-                      (funcall limit))
-                 (and (stringp limit)
-                      (not (re-search-forward limit nil t))))
-             ()                        ; This limit did not succeed.
-           (setq limited t
-                 limits nil)))
-       (unless limited
-         (narrow-to-region (point) (point-max))
-         t)))))
-
-(defun gnus-article-search-signature ()
-  "Search the current buffer for the signature separator.
-Put point at the beginning of the signature separator."
-  (let ((cur (point)))
-    (goto-char (point-max))
-    (if (if (stringp gnus-signature-separator)
-           (re-search-backward gnus-signature-separator nil t)
-         (let ((seps gnus-signature-separator))
-           (while (and seps
-                       (not (re-search-backward (car seps) nil t)))
-             (pop seps))
-           seps))
-       t
-      (goto-char cur)
-      nil)))
-
-(eval-and-compile
-  (autoload 'w3-display "w3-parse")
-  (autoload 'w3-do-setup "w3" "" t)
-  (autoload 'w3-region "w3-display" "" t))
-
-(defun gnus-article-treat-html ()
-  "Render HTML."
-  (interactive)
-  (let ((cbuf (current-buffer)))
-    (set-buffer gnus-article-buffer)
-    (let (buf buffer-read-only b e)
-      (w3-do-setup)
-      (goto-char (point-min))
-      (narrow-to-region
-       (if (search-forward "\n\n" nil t)
-          (setq b (point))
-        (point-max))
-       (setq e (point-max)))
-      (with-temp-buffer
-       (insert-buffer-substring gnus-article-buffer b e)
-       (require 'url)
-       (save-window-excursion
-         (w3-region (point-min) (point-max))
-         (setq buf (buffer-substring-no-properties (point-min) (point-max)))))
-      (when buf
-       (delete-region (point-min) (point-max))
-       (insert buf))
-      (widen)
-      (goto-char (point-min))
-      (set-window-start (get-buffer-window (current-buffer)) (point-min))
-      (set-buffer cbuf))))
-
-(defun gnus-article-hidden-arg ()
-  "Return the current prefix arg as a number, or 0 if no prefix."
-  (list (if current-prefix-arg
-           (prefix-numeric-value current-prefix-arg)
-         0)))
-
-(defun gnus-article-check-hidden-text (type arg)
-  "Return nil if hiding is necessary.
-Arg can be nil or a number.  Nil and positive means hide, negative
-means show, 0 means toggle."
-  (save-excursion
-    (save-restriction
-      (widen)
-      (let ((hide (gnus-article-hidden-text-p type)))
-       (cond
-        ((or (null arg)
-             (> arg 0))
-         nil)
-        ((< arg 0)
-         (gnus-article-show-hidden-text type))
-        (t
-         (if (eq hide 'hidden)
-             (gnus-article-show-hidden-text type)
-           nil)))))))
-
-(defun gnus-article-hidden-text-p (type)
-  "Say whether the current buffer contains hidden text of type TYPE."
-  (let ((pos (text-property-any (point-min) (point-max) 'article-type type)))
-    (while (and pos
-               (not (get-text-property pos 'invisible)))
-      (setq pos
-           (text-property-any (1+ pos) (point-max) 'article-type type)))
-    (if pos
-       'hidden
-      nil)))
-
-(defun gnus-article-show-hidden-text (type &optional hide)
-  "Show all hidden text of type TYPE.
-If HIDE, hide the text instead."
-  (save-excursion
-    (let ((buffer-read-only nil)
-         (inhibit-point-motion-hooks t)
-         (end (point-min))
-         beg)
-      (while (setq beg (text-property-any end (point-max) 'article-type type))
-       (goto-char beg)
-       (setq end (or
-                  (text-property-not-all beg (point-max) 'article-type type)
-                  (point-max)))
-       (if hide
-           (gnus-article-hide-text beg end gnus-hidden-properties)
-         (gnus-article-unhide-text beg end))
-       (goto-char end))
-      t)))
-
-(defconst article-time-units
-  `((year . ,(* 365.25 24 60 60))
-    (week . ,(* 7 24 60 60))
-    (day . ,(* 24 60 60))
-    (hour . ,(* 60 60))
-    (minute . 60)
-    (second . 1))
-  "Mapping from time units to seconds.")
-
-(defun article-date-ut (&optional type highlight header)
-  "Convert DATE date to universal time in the current article.
-If TYPE is `local', convert to local time; if it is `lapsed', output
-how much time has lapsed since DATE."
-  (interactive (list 'ut t))
-  (let* ((header (or header
-                    (mail-header-date gnus-current-headers)
-                    (message-fetch-field "date")
-                    ""))
-        (date (if (vectorp header) (mail-header-date header)
-                header))
-        (date-regexp "^Date:[ \t]\\|^X-Sent:[ \t]")
-        (inhibit-point-motion-hooks t)
-        bface eface newline)
-    (when (and date (not (string= date "")))
-      (save-excursion
-       (save-restriction
-         (nnheader-narrow-to-headers)
-         (let ((buffer-read-only nil))
-           ;; Delete any old Date headers.
-           (if (re-search-forward date-regexp nil t)
-               (progn
-                 (setq bface (get-text-property (gnus-point-at-bol) 'face)
-                       eface (get-text-property (1- (gnus-point-at-eol))
-                                                'face))
-                 (delete-region (progn (beginning-of-line) (point))
-                                (progn (end-of-line) (point)))
-                 (beginning-of-line))
-             (goto-char (point-max))
-             (setq newline t))
-           (insert (article-make-date-line date type))
-           ;; Do highlighting.
-           (beginning-of-line)
-           (when (looking-at "\\([^:]+\\): *\\(.*\\)$")
-             (put-text-property (match-beginning 1) (1+ (match-end 1))
-                                'face bface)
-             (put-text-property (match-beginning 2) (match-end 2)
-                                'face eface))
-           (when newline
-             (end-of-line)
-             (insert "\n"))))))))
-
-(defun article-make-date-line (date type)
-  "Return a DATE line of TYPE."
-  (let ((time (condition-case ()
-                 (date-to-time date)
-               (error '(0 0)))))
-    (cond
-     ;; Convert to the local timezone.  We have to slap a
-     ;; `condition-case' round the calls to the timezone
-     ;; functions since they aren't particularly resistant to
-     ;; buggy dates.
-     ((eq type 'local)
-      (let ((tz (car (current-time-zone))))
-       (format "Date: %s %s%04d" (current-time-string time)
-               (if (> tz 0) "+" "-") (abs (/ tz 36)))))
-     ;; Convert to Universal Time.
-     ((eq type 'ut)
-      (concat "Date: "
-             (current-time-string
-              (let* ((e (parse-time-string date))
-                    (tm (apply 'encode-time e))
-                    (ms (car tm))
-                    (ls (- (cadr tm) (car (current-time-zone)))))
-                (cond ((< ls 0) (list (1- ms) (+ ls 65536)))
-                      ((> ls 65535) (list (1+ ms) (- ls 65536)))
-                      (t (list ms ls)))))
-             " UT"))
-     ;; Get the original date from the article.
-     ((eq type 'original)
-      (concat "Date: " (if (string-match "\n+$" date)
-                          (substring date 0 (match-beginning 0))
-                        date)))
-     ;; Let the user define the format.
-     ((eq type 'user)
-      (if (gnus-functionp gnus-article-time-format)
-         (funcall gnus-article-time-format time)
-       (concat
-        "Date: "
-        (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)))
-     ;; Do an X-Sent lapsed format.
-     ((eq type 'lapsed)
-      ;; If the date is seriously mangled, the timezone functions are
-      ;; liable to bug out, so we ignore all errors.
-      (let* ((now (current-time))
-            (real-time (subtract-time now time))
-            (real-sec (and real-time
-                           (+ (* (float (car real-time)) 65536)
-                              (cadr real-time))))
-            (sec (and real-time (abs real-sec)))
-            num prev)
-       (cond
-        ((null real-time)
-         "X-Sent: Unknown")
-        ((zerop sec)
-         "X-Sent: Now")
-        (t
-         (concat
-          "X-Sent: "
-          ;; This is a bit convoluted, but basically we go
-          ;; through the time units for years, weeks, etc,
-          ;; and divide things to see whether that results
-          ;; in positive answers.
-          (mapconcat
-           (lambda (unit)
-             (if (zerop (setq num (ffloor (/ sec (cdr unit)))))
-                 ;; The (remaining) seconds are too few to
-                 ;; be divided into this time unit.
-                 ""
-               ;; It's big enough, so we output it.
-               (setq sec (- sec (* num (cdr unit))))
-               (prog1
-                   (concat (if prev ", " "") (int-to-string
-                                              (floor num))
-                           " " (symbol-name (car unit))
-                           (if (> num 1) "s" ""))
-                 (setq prev t))))
-           article-time-units "")
-          ;; If dates are odd, then it might appear like the
-          ;; article was sent in the future.
-          (if (> real-sec 0)
-              " ago"
-            " in the future"))))))
-     (t
-      (error "Unknown conversion type: %s" type)))))
-
-(defun article-date-local (&optional highlight)
-  "Convert the current article date to the local timezone."
-  (interactive (list t))
-  (article-date-ut 'local highlight))
-
-(defun article-date-original (&optional highlight)
-  "Convert the current article date to what it was originally.
-This is only useful if you have used some other date conversion
-function and want to see what the date was before converting."
-  (interactive (list t))
-  (article-date-ut 'original highlight))
-
-(defun article-date-lapsed (&optional highlight)
-  "Convert the current article date to time lapsed since it was sent."
-  (interactive (list t))
-  (article-date-ut 'lapsed highlight))
-
-(defun article-update-date-lapsed ()
-  "Function to be run from a timer to update the lapsed time line."
-  (let (deactivate-mark)
-    (save-excursion
-      (ignore-errors
-       (walk-windows
-        (lambda (w)
-          (set-buffer (window-buffer w))
-          (when (eq major-mode 'gnus-article-mode)
-            (goto-char (point-min))
-            (when (re-search-forward "^X-Sent:" nil t)
-              (article-date-lapsed t)))))))))
-
-(defun gnus-start-date-timer (&optional n)
-  "Start a timer to update the X-Sent header in the article buffers.
-The numerical prefix says how frequently (in seconds) the function
-is to run."
-  (interactive "p")
-  (unless n
-    (setq n 1))
-  (gnus-stop-date-timer)
-  (setq article-lapsed-timer
-       (nnheader-run-at-time 1 n 'article-update-date-lapsed)))
-
-(defun gnus-stop-date-timer ()
-  "Stop the X-Sent timer."
-  (interactive)
-  (when article-lapsed-timer
-    (nnheader-cancel-timer article-lapsed-timer)
-    (setq article-lapsed-timer nil)))
-
-(defun article-date-user (&optional highlight)
-  "Convert the current article date to the user-defined format.
-This format is defined by the `gnus-article-time-format' variable."
-  (interactive (list t))
-  (article-date-ut 'user highlight))
-
-(defun article-date-iso8601 (&optional highlight)
-  "Convert the current article date to ISO8601."
-  (interactive (list t))
-  (article-date-ut 'iso8601 highlight))
-
-(defun article-show-all ()
-  "Show all hidden text in the article buffer."
-  (interactive)
-  (save-excursion
-    (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 gnus-emphasis-alist)
-           (buffer-read-only nil)
-           (props (append '(article-type emphasis)
-                          gnus-hidden-properties))
-           regexp elem beg invisible visible face)
-       (article-goto-body)
-       (setq beg (point))
-       (while (setq elem (pop alist))
-         (goto-char beg)
-         (setq regexp (car elem)
-               invisible (nth 1 elem)
-               visible (nth 2 elem)
-               face (nth 3 elem))
-         (while (re-search-forward regexp nil t)
-           (when (and (match-beginning visible) (match-beginning invisible))
-             (gnus-article-hide-text
-              (match-beginning invisible) (match-end invisible) props)
-             (gnus-article-unhide-text-type
-              (match-beginning visible) (match-end visible) 'emphasis)
-             (gnus-put-text-property-excluding-newlines
-              (match-beginning visible) (match-end visible) 'face face)
-             (goto-char (match-end invisible)))))))))
-
-(defvar gnus-summary-article-menu)
-(defvar gnus-summary-post-menu)
-
-;;; Saving functions.
-
-(defun gnus-article-save (save-buffer file &optional num)
-  "Save the currently selected article."
-  (unless gnus-save-all-headers
-    ;; Remove headers according to `gnus-saved-headers'.
-    (let ((gnus-visible-headers
-          (or gnus-saved-headers gnus-visible-headers))
-         (gnus-article-buffer save-buffer))
-      (save-excursion
-       (set-buffer save-buffer)
-       (article-hide-headers 1 t))))
-  (save-window-excursion
-    (if (not gnus-default-article-saver)
-       (error "No default saver is defined")
-      ;; !!! Magic!  The saving functions all save
-      ;; `gnus-save-article-buffer' (or so they think), but we
-      ;; bind that variable to our save-buffer.
-      (set-buffer gnus-article-buffer)
-      (let* ((gnus-save-article-buffer save-buffer)
-            (filename
-             (cond
-              ((not gnus-prompt-before-saving) 'default)
-              ((eq gnus-prompt-before-saving 'always) nil)
-              (t file)))
-            (gnus-number-of-articles-to-be-saved
-             (when (eq gnus-prompt-before-saving t)
-               num)))                  ; Magic
-       (set-buffer gnus-article-current-summary)
-       (funcall gnus-default-article-saver filename)))))
-
-(defun gnus-read-save-file-name (prompt &optional filename
-                                       function group headers variable)
-  (let ((default-name
-         (funcall function group headers (symbol-value variable)))
-       result)
-    (setq
-     result
-     (cond
-      ((eq filename 'default)
-       default-name)
-      ((eq filename t)
-       default-name)
-      (filename filename)
-      (t
-       (let* ((split-name (gnus-get-split-value gnus-split-methods))
-             (prompt
-              (format prompt
-                      (if (and gnus-number-of-articles-to-be-saved
-                               (> gnus-number-of-articles-to-be-saved 1))
-                          (format "these %d articles"
-                                  gnus-number-of-articles-to-be-saved)
-                        "this article")))
-             (file
-              ;; Let the split methods have their say.
-              (cond
-               ;; No split name was found.
-               ((null split-name)
-                (read-file-name
-                 (concat prompt " (default "
-                         (file-name-nondirectory default-name) ") ")
-                 (file-name-directory default-name)
-                 default-name))
-               ;; A single group name is returned.
-               ((stringp split-name)
-                (setq default-name
-                      (funcall function split-name headers
-                               (symbol-value variable)))
-                (read-file-name
-                 (concat prompt " (default "
-                         (file-name-nondirectory default-name) ") ")
-                 (file-name-directory default-name)
-                 default-name))
-               ;; A single split name was found
-               ((= 1 (length split-name))
-                (let* ((name (expand-file-name
-                              (car split-name) gnus-article-save-directory))
-                       (dir (cond ((file-directory-p name)
-                                   (file-name-as-directory name))
-                                  ((file-exists-p name) name)
-                                  (t gnus-article-save-directory))))
-                  (read-file-name
-                   (concat prompt " (default " name ") ")
-                   dir name)))
-               ;; A list of splits was found.
-               (t
-                (setq split-name (nreverse split-name))
-                (let (result)
-                  (let ((file-name-history
-                         (nconc split-name file-name-history)))
-                    (setq result
-                          (expand-file-name
-                           (read-file-name
-                            (concat prompt " (`M-p' for defaults) ")
-                            gnus-article-save-directory
-                            (car split-name))
-                           gnus-article-save-directory)))
-                  (car (push result file-name-history)))))))
-        ;; Create the directory.
-        (gnus-make-directory (file-name-directory file))
-        ;; If we have read a directory, we append the default file name.
-        (when (file-directory-p file)
-          (setq file (concat (file-name-as-directory file)
-                             (file-name-nondirectory default-name))))
-        ;; Possibly translate some characters.
-        (nnheader-translate-file-chars file)))))
-    (gnus-make-directory (file-name-directory result))
-    (set variable result)))
-
-(defun gnus-article-archive-name (group)
-  "Return the first instance of an \"Archive-name\" in the current buffer."
-  (let ((case-fold-search t))
-    (when (re-search-forward "archive-name: *\\([^ \n\t]+\\)[ \t]*$" nil t)
-      (nnheader-concat gnus-article-save-directory
-                      (match-string 1)))))
-
-(defun gnus-article-nndoc-name (group)
-  "If GROUP is an nndoc group, return the name of the parent group."
-  (when (eq (car (gnus-find-method-for-group group)) 'nndoc)
-    (gnus-group-get-parameter group 'save-article-group)))
-
-(defun gnus-summary-save-in-rmail (&optional filename)
-  "Append this article to Rmail file.
-Optional argument FILENAME specifies file name.
-Directory to save to is default to `gnus-article-save-directory'."
-  (setq filename (gnus-read-save-file-name
-                 "Save %s in rmail file:" filename
-                 gnus-rmail-save-name gnus-newsgroup-name
-                 gnus-current-headers 'gnus-newsgroup-last-rmail))
-  (gnus-eval-in-buffer-window gnus-save-article-buffer
-    (save-excursion
-      (save-restriction
-       (widen)
-       (gnus-output-to-rmail filename))))
-  filename)
-
-(defun gnus-summary-save-in-mail (&optional filename)
-  "Append this article to Unix mail file.
-Optional argument FILENAME specifies file name.
-Directory to save to is default to `gnus-article-save-directory'."
-  (setq filename (gnus-read-save-file-name
-                 "Save %s in Unix mail file:" filename
-                 gnus-mail-save-name gnus-newsgroup-name
-                 gnus-current-headers 'gnus-newsgroup-last-mail))
-  (gnus-eval-in-buffer-window gnus-save-article-buffer
-    (save-excursion
-      (save-restriction
-       (widen)
-       (if (and (file-readable-p filename)
-                (mail-file-babyl-p filename))
-           (rmail-output-to-rmail-file filename t)
-         (gnus-output-to-mail filename)))))
-  filename)
-
-(defun gnus-summary-save-in-file (&optional filename overwrite)
-  "Append this article to file.
-Optional argument FILENAME specifies file name.
-Directory to save to is default to `gnus-article-save-directory'."
-  (setq filename (gnus-read-save-file-name
-                 "Save %s in file:" filename
-                 gnus-file-save-name gnus-newsgroup-name
-                 gnus-current-headers 'gnus-newsgroup-last-file))
-  (gnus-eval-in-buffer-window gnus-save-article-buffer
-    (save-excursion
-      (save-restriction
-       (widen)
-       (when (and overwrite
-                  (file-exists-p filename))
-         (delete-file filename))
-       (gnus-output-to-file filename))))
-  filename)
-
-(defun gnus-summary-write-to-file (&optional filename)
-  "Write this article to a file.
-Optional argument FILENAME specifies file name.
-The directory to save in defaults to `gnus-article-save-directory'."
-  (gnus-summary-save-in-file nil t))
-
-(defun gnus-summary-save-body-in-file (&optional filename)
-  "Append this article body to a file.
-Optional argument FILENAME specifies file name.
-The directory to save in defaults to `gnus-article-save-directory'."
-  (setq filename (gnus-read-save-file-name
-                 "Save %s body in file:" filename
-                 gnus-file-save-name gnus-newsgroup-name
-                 gnus-current-headers 'gnus-newsgroup-last-file))
-  (gnus-eval-in-buffer-window gnus-save-article-buffer
-    (save-excursion
-      (save-restriction
-       (widen)
-       (when (article-goto-body)
-         (narrow-to-region (point) (point-max)))
-       (gnus-output-to-file filename))))
-  filename)
-
-(defun gnus-summary-save-in-pipe (&optional command)
-  "Pipe this article to subprocess."
-  (setq command
-       (cond ((and (eq command 'default)
-                   gnus-last-shell-command)
-              gnus-last-shell-command)
-             (command command)
-             (t (read-string
-                 (format
-                  "Shell command on %s: "
-                  (if (and gnus-number-of-articles-to-be-saved
-                           (> gnus-number-of-articles-to-be-saved 1))
-                      (format "these %d articles"
-                              gnus-number-of-articles-to-be-saved)
-                    "this article"))
-                 gnus-last-shell-command))))
-  (when (string-equal command "")
-    (setq command gnus-last-shell-command))
-  (gnus-eval-in-buffer-window gnus-article-buffer
-    (save-restriction
-      (widen)
-      (shell-command-on-region (point-min) (point-max) command nil)))
-  (setq gnus-last-shell-command command))
-
-;;; Article file names when saving.
-
-(defun gnus-capitalize-newsgroup (newsgroup)
-  "Capitalize NEWSGROUP name."
-  (when (not (zerop (length newsgroup)))
-    (concat (char-to-string (upcase (aref newsgroup 0)))
-           (substring newsgroup 1))))
-
-(defun gnus-Numeric-save-name (newsgroup headers &optional last-file)
-  "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
-If variable `gnus-use-long-file-name' is non-nil, it is ~/News/News.group/num.
-Otherwise, it is like ~/News/news/group/num."
-  (let ((default
-         (expand-file-name
-          (concat (if (gnus-use-long-file-name 'not-save)
-                      (gnus-capitalize-newsgroup newsgroup)
-                    (gnus-newsgroup-directory-form newsgroup))
-                  "/" (int-to-string (mail-header-number headers)))
-          gnus-article-save-directory)))
-    (if (and last-file
-            (string-equal (file-name-directory default)
-                          (file-name-directory last-file))
-            (string-match "^[0-9]+$" (file-name-nondirectory last-file)))
-       default
-      (or last-file default))))
-
-(defun gnus-numeric-save-name (newsgroup headers &optional last-file)
-  "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
-If variable `gnus-use-long-file-name' is non-nil, it is
-~/News/news.group/num. Otherwise, it is like ~/News/news/group/num."
-  (let ((default
-         (expand-file-name
-          (concat (if (gnus-use-long-file-name 'not-save)
-                      newsgroup
-                    (gnus-newsgroup-directory-form newsgroup))
-                  "/" (int-to-string (mail-header-number headers)))
-          gnus-article-save-directory)))
-    (if (and last-file
-            (string-equal (file-name-directory default)
-                          (file-name-directory last-file))
-            (string-match "^[0-9]+$" (file-name-nondirectory last-file)))
-       default
-      (or last-file default))))
-
-(defun gnus-Plain-save-name (newsgroup headers &optional last-file)
-  "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
-If variable `gnus-use-long-file-name' is non-nil, it is
-~/News/News.group.  Otherwise, it is like ~/News/news/group/news."
-  (or last-file
-      (expand-file-name
-       (if (gnus-use-long-file-name 'not-save)
-          (gnus-capitalize-newsgroup newsgroup)
-        (concat (gnus-newsgroup-directory-form newsgroup) "/news"))
-       gnus-article-save-directory)))
-
-(defun gnus-plain-save-name (newsgroup headers &optional last-file)
-  "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
-If variable `gnus-use-long-file-name' is non-nil, it is
-~/News/news.group.  Otherwise, it is like ~/News/news/group/news."
-  (or last-file
-      (expand-file-name
-       (if (gnus-use-long-file-name 'not-save)
-          newsgroup
-        (concat (gnus-newsgroup-directory-form newsgroup) "/news"))
-       gnus-article-save-directory)))
-
-(eval-and-compile
-  (mapcar
-   (lambda (func)
-     (let (afunc gfunc)
-       (if (consp func)
-          (setq afunc (car func)
-                gfunc (cdr func))
-        (setq afunc func
-              gfunc (intern (format "gnus-%s" func))))
-       (fset gfunc
-            (if (not (fboundp afunc))
-                nil
-              `(lambda (&optional interactive &rest args)
-                 ,(documentation afunc t)
-                 (interactive (list t))
-                 (save-excursion
-                   (set-buffer gnus-article-buffer)
-                   (if interactive
-                       (call-interactively ',afunc)
-                     (apply ',afunc args))))))))
-   '(article-hide-headers
-     article-hide-boring-headers
-     article-treat-overstrike
-     (article-fill . gnus-article-word-wrap)
-     article-remove-cr
-     article-display-x-face
-     article-de-quoted-unreadable
-     article-mime-decode-quoted-printable
-     article-hide-pgp
-     article-hide-pem
-     article-hide-signature
-     article-remove-trailing-blank-lines
-     article-strip-leading-blank-lines
-     article-strip-multiple-blank-lines
-     article-strip-leading-space
-     article-strip-trailing-space
-     article-strip-blank-lines
-     article-strip-all-blank-lines
-     article-date-local
-     article-date-iso8601
-     article-date-original
-     article-date-ut
-     article-decode-mime-words
-     article-decode-charset
-     article-decode-encoded-words
-     article-date-user
-     article-date-lapsed
-     article-emphasize
-     article-treat-dumbquotes
-     article-normalize-headers
-     (article-show-all . gnus-article-show-all-headers))))
-\f
-;;;
-;;; Gnus article mode
-;;;
-
-(put 'gnus-article-mode 'mode-class 'special)
-
-(gnus-define-keys gnus-article-mode-map
-  " " gnus-article-goto-next-page
-  "\177" gnus-article-goto-prev-page
-  [delete] gnus-article-goto-prev-page
-  "\C-c^" gnus-article-refer-article
-  "h" gnus-article-show-summary
-  "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
-  "<" beginning-of-buffer
-  ">" end-of-buffer
-  "\C-c\C-i" gnus-info-find-node
-  "\C-c\C-b" gnus-bug
-
-  "\C-d" gnus-article-read-summary-keys
-  "\M-*" gnus-article-read-summary-keys
-  "\M-#" gnus-article-read-summary-keys
-  "\M-^" gnus-article-read-summary-keys
-  "\M-g" gnus-article-read-summary-keys)
-
-(substitute-key-definition
- 'undefined 'gnus-article-read-summary-keys gnus-article-mode-map)
-
-(defun gnus-article-make-menu-bar ()
-  (gnus-turn-off-edit-menu 'article)
-  (unless (boundp 'gnus-article-article-menu)
-    (easy-menu-define
-     gnus-article-article-menu gnus-article-mode-map ""
-     '("Article"
-       ["Scroll forwards" gnus-article-goto-next-page t]
-       ["Scroll backwards" gnus-article-goto-prev-page t]
-       ["Show summary" gnus-article-show-summary t]
-       ["Fetch Message-ID at point" gnus-article-refer-article t]
-       ["Mail to address at point" gnus-article-mail t]
-       ["Send a bug report" gnus-bug t]))
-
-    (easy-menu-define
-     gnus-article-treatment-menu gnus-article-mode-map ""
-     '("Treatment"
-       ["Hide headers" gnus-article-hide-headers t]
-       ["Hide signature" gnus-article-hide-signature t]
-       ["Hide citation" gnus-article-hide-citation t]
-       ["Treat overstrike" gnus-article-treat-overstrike t]
-       ["Remove carriage return" gnus-article-remove-cr t]))
-
-    ;; Note "Commands" menu is defined in gnus-sum.el for consistency
-
-    (when (boundp 'gnus-summary-post-menu)
-      (define-key gnus-article-mode-map [menu-bar post]
-       (cons "Post" gnus-summary-post-menu)))
-
-    (gnus-run-hooks 'gnus-article-menu-hook)))
-
-(defun gnus-article-mode ()
-  "Major mode for displaying an article.
-
-All normal editing commands are switched off.
-
-The following commands are available in addition to all summary mode
-commands:
-\\<gnus-article-mode-map>
-\\[gnus-article-next-page]\t Scroll the article one page forwards
-\\[gnus-article-prev-page]\t Scroll the article one page backwards
-\\[gnus-article-refer-article]\t Go to the article referred to by an article id near point
-\\[gnus-article-show-summary]\t Display the summary buffer
-\\[gnus-article-mail]\t Send a reply to the address near point
-\\[gnus-article-describe-briefly]\t Describe the current mode briefly
-\\[gnus-info-find-node]\t Go to the Gnus info node"
-  (interactive)
-  (when (gnus-visual-p 'article-menu 'menu)
-    (gnus-article-make-menu-bar))
-  (gnus-simplify-mode-line)
-  (setq mode-name "Article")
-  (setq major-mode 'gnus-article-mode)
-  (make-local-variable 'minor-mode-alist)
-  (unless (assq 'gnus-show-mime minor-mode-alist)
-    (push (list 'gnus-show-mime " MIME") minor-mode-alist))
-  (use-local-map gnus-article-mode-map)
-  (gnus-update-format-specifications nil 'article-mode)
-  (set (make-local-variable 'page-delimiter) gnus-page-delimiter)
-  (make-local-variable 'gnus-page-broken)
-  (make-local-variable 'gnus-button-marker-list)
-  (make-local-variable 'gnus-article-current-summary)
-  (make-local-variable 'gnus-article-mime-handles)
-  (make-local-variable 'gnus-article-decoded-p)
-  (make-local-variable 'gnus-article-mime-handle-alist)
-  (gnus-set-default-directory)
-  (buffer-disable-undo)
-  (setq buffer-read-only t)
-  (set-syntax-table gnus-article-mode-syntax-table)
-  (gnus-run-hooks 'gnus-article-mode-hook))
-
-(defun gnus-article-setup-buffer ()
-  "Initialize the article buffer."
-  (let* ((name (if gnus-single-article-buffer "*Article*"
-                (concat "*Article " gnus-newsgroup-name "*")))
-        (original
-         (progn (string-match "\\*Article" name)
-                (concat " *Original Article"
-                        (substring name (match-end 0))))))
-    (setq gnus-article-buffer name)
-    (setq gnus-original-article-buffer original)
-    (setq gnus-article-mime-handle-alist nil)
-    ;; This might be a variable local to the summary buffer.
-    (unless gnus-single-article-buffer
-      (save-excursion
-       (set-buffer gnus-summary-buffer)
-       (setq gnus-article-buffer name)
-       (setq gnus-original-article-buffer original)
-       (gnus-set-global-variables)))
-    ;; Init original article buffer.
-    (save-excursion
-      (set-buffer (gnus-get-buffer-create gnus-original-article-buffer))
-      (setq major-mode 'gnus-original-article-mode)
-      (make-local-variable 'gnus-original-article))
-    (if (get-buffer name)
-       (save-excursion
-         (set-buffer name)
-         (buffer-disable-undo)
-         (setq buffer-read-only t)
-         (unless (eq major-mode 'gnus-article-mode)
-           (gnus-article-mode))
-         (current-buffer))
-      (save-excursion
-       (set-buffer (gnus-get-buffer-create name))
-       (gnus-article-mode)
-       (make-local-variable 'gnus-summary-buffer)
-       (gnus-summary-set-local-parameters gnus-newsgroup-name)
-       (current-buffer)))))
-
-;; Set article window start at LINE, where LINE is the number of lines
-;; from the head of the article.
-(defun gnus-article-set-window-start (&optional line)
-  (set-window-start
-   (get-buffer-window gnus-article-buffer t)
-   (save-excursion
-     (set-buffer gnus-article-buffer)
-     (goto-char (point-min))
-     (if (not line)
-        (point-min)
-       (gnus-message 6 "Moved to bookmark")
-       (search-forward "\n\n" nil t)
-       (forward-line line)
-       (point)))))
-
-;;; @@ article filters
-;;;
-
-(defun gnus-article-display-mime-message ()
-  "Article display method for MIME message."
-  ;; called from `gnus-original-article-buffer'.
-  (let ((charset (with-current-buffer gnus-summary-buffer
-                  default-mime-charset)))
-    (make-local-variable 'default-mime-charset)
-    (setq default-mime-charset charset)
-    (mime-display-message mime-message-structure
-                         gnus-article-buffer nil gnus-article-mode-map)
-    (make-local-variable 'default-mime-charset)
-    (setq default-mime-charset charset)
-    )
-  ;; `mime-display-message' changes current buffer to `gnus-article-buffer'.
-  (make-local-variable 'mime-button-mother-dispatcher)
-  (setq mime-button-mother-dispatcher
-       (function gnus-article-push-button))
-  (run-hooks 'gnus-mime-article-prepare-hook))
-
-(defun gnus-article-display-traditional-message ()
-  "Article display method for traditional message."
-  (set-buffer gnus-article-buffer)
-  (let (buffer-read-only)
-    (erase-buffer)
-    (insert-buffer-substring gnus-original-article-buffer)))
-
-(defun gnus-article-make-full-mail-header (&optional number charset)
-  "Create a new mail header structure in a raw article buffer."
-  (unless (and number charset)
-    (save-current-buffer
-      (set-buffer gnus-summary-buffer)
-      (unless number
-       (setq number (or (cdr gnus-article-current) 0)))
-      (unless charset
-       (setq charset (or default-mime-charset 'x-ctext)))))
-  (goto-char (point-min))
-  (let ((header-end (if (search-forward "\n\n" nil t)
-                       (1- (point))
-                     (goto-char (point-max))))
-       (chars (- (point-max) (point)))
-       (lines (count-lines (point) (point-max)))
-       (default-mime-charset charset)
-       xref)
-    (narrow-to-region (point-min) header-end)
-    (setq xref (std11-fetch-field "xref"))
-    (prog1
-       (make-full-mail-header
-        number
-        (std11-fetch-field "subject")
-        (std11-fetch-field "from")
-        (std11-fetch-field "date")
-        (std11-fetch-field "message-id")
-        (std11-fetch-field "references")
-        chars
-        lines
-        (when xref (concat "Xref: " xref)))
-      (widen))))
-
-(defun gnus-article-prepare (article &optional all-headers header)
-  "Prepare ARTICLE in article mode buffer.
-ARTICLE should either be an article number or a Message-ID.
-If ARTICLE is an id, HEADER should be the article headers.
-If ALL-HEADERS is non-nil, no headers are hidden."
-  (save-excursion
-    ;; Make sure we start in a summary buffer.
-    (unless (eq major-mode 'gnus-summary-mode)
-      (set-buffer gnus-summary-buffer))
-    (setq gnus-summary-buffer (current-buffer))
-    (let* ((gnus-article (if header (mail-header-number header) article))
-          (summary-buffer (current-buffer))
-          (gnus-tmp-internal-hook gnus-article-internal-prepare-hook)
-          (group gnus-newsgroup-name)
-          result)
-      (save-excursion
-       (gnus-article-setup-buffer)
-       (set-buffer gnus-original-article-buffer)
-       ;; Deactivate active regions.
-       (when (and (boundp 'transient-mark-mode)
-                  transient-mark-mode)
-         (setq mark-active nil))
-       (if (not (setq result (let ((buffer-read-only nil))
-                               (gnus-request-article-this-buffer
-                                article group))))
-           ;; There is no such article.
-           (save-excursion
-             (when (and (numberp article)
-                        (not (memq article gnus-newsgroup-sparse)))
-               (setq gnus-article-current
-                     (cons gnus-newsgroup-name article))
-               (set-buffer gnus-summary-buffer)
-               (setq gnus-current-article article)
-               (if (eq (gnus-article-mark article) gnus-undownloaded-mark)
-                   (progn
-                     (gnus-summary-set-agent-mark article)
-                     (message "Message marked for downloading"))
-                 (gnus-summary-mark-article article gnus-canceled-mark)
-                 (unless (memq article gnus-newsgroup-sparse)
-                   (gnus-error 1
-                    "No such article (may have expired or been canceled)")))))
-         (if (or (eq result 'pseudo)
-                 (eq result 'nneething))
-             (progn
-               (save-excursion
-                 (set-buffer summary-buffer)
-                 (push article gnus-newsgroup-history)
-                 (setq gnus-last-article gnus-current-article
-                       gnus-current-article 0
-                       gnus-current-headers nil
-                       gnus-article-current nil)
-                 (if (eq result 'nneething)
-                     (gnus-configure-windows 'summary)
-                   (gnus-configure-windows 'article))
-                 (gnus-set-global-variables))
-               (let ((gnus-article-mime-handle-alist-1
-                      gnus-article-mime-handle-alist))
-                 (gnus-set-mode-line 'article)))
-           ;; The result from the `request' was an actual article -
-           ;; or at least some text that is now displayed in the
-           ;; article buffer.
-           (when (and (numberp article)
-                      (not (eq article gnus-current-article)))
-             ;; Seems like a new article has been selected.
-             ;; `gnus-current-article' must be an article number.
-             (save-excursion
-               (set-buffer summary-buffer)
-               (push article gnus-newsgroup-history)
-               (setq gnus-last-article gnus-current-article
-                     gnus-current-article article
-                     gnus-current-headers
-                     (gnus-summary-article-header gnus-current-article)
-                     gnus-article-current
-                     (cons gnus-newsgroup-name gnus-current-article))
-               (unless (vectorp gnus-current-headers)
-                 (setq gnus-current-headers nil))
-               (gnus-summary-goto-subject gnus-current-article)
-               (when (gnus-summary-show-thread)
-                 ;; If the summary buffer really was folded, the
-                 ;; previous goto may not actually have gone to
-                 ;; the right article, but the thread root instead.
-                 ;; So we go again.
-                 (gnus-summary-goto-subject gnus-current-article))
-               (gnus-run-hooks 'gnus-mark-article-hook)
-               (gnus-set-mode-line 'summary)
-               (when (gnus-visual-p 'article-highlight 'highlight)
-                 (gnus-run-hooks 'gnus-visual-mark-article-hook))
-               ;; Set the global newsgroup variables here.
-               ;; Suggested by Jim Sisolak
-               ;; <sisolak@trans4.neep.wisc.edu>.
-               (gnus-set-global-variables)
-               (setq gnus-have-all-headers
-                     (or all-headers gnus-show-all-headers))))
-           (when (or (numberp article)
-                     (stringp article))
-             (gnus-article-prepare-display)
-             ;; Do page break.
-             (goto-char (point-min))
-             (setq gnus-page-broken
-                   (when gnus-break-pages
-                     (gnus-narrow-to-page)
-                     t)))
-           (let ((gnus-article-mime-handle-alist-1
-                  gnus-article-mime-handle-alist))
-             (gnus-set-mode-line 'article))
-           (gnus-configure-windows 'article)
-           (article-goto-body)
-           (set-window-point (get-buffer-window (current-buffer)) (point))
-           t))))))
-
-(defun gnus-article-prepare-display ()
-  "Make the current buffer look like a nice article."
-  (let ((method
-        (if gnus-show-mime
-            (progn
-              (setq mime-message-structure gnus-current-headers)
-              gnus-article-display-method-for-mime)
-          gnus-article-display-method-for-traditional)))
-    (gnus-run-hooks 'gnus-tmp-internal-hook)
-    (gnus-run-hooks 'gnus-article-prepare-hook)
-    ;; Display message.
-    (funcall method)
-    ;; Associate this article with the current summary buffer.
-    (setq gnus-article-current-summary (current-buffer))
-    ;; Perform the article display hooks.
-    (gnus-run-hooks 'gnus-article-display-hook)))
-
-;;;
-;;; Gnus MIME viewing functions
-;;;
-
-(defvar gnus-mime-button-line-format "%{%([%p. %t%d%n]%)%}%e\n"
-  "The following specs can be used:
-%t  The MIME type
-%n  The `name' parameter
-%d  The description, if any
-%l  The length of the encoded part
-%p  The part identifier
-%e  Dots if the part isn't displayed")
-
-(defvar gnus-mime-button-line-format-alist
-  '((?t gnus-tmp-type ?s)
-    (?n gnus-tmp-name ?s)
-    (?d gnus-tmp-description ?s)
-    (?p gnus-tmp-id ?s)
-    (?l gnus-tmp-length ?d)
-    (?e gnus-tmp-dots ?s)))
-
-(defvar gnus-mime-button-commands
-  '((gnus-article-press-button "\r"    "Toggle Display")
-    (gnus-mime-view-part       "v"     "View Interactively...")
-    (gnus-mime-save-part       "o"     "Save...")
-    (gnus-mime-copy-part       "c"     "View As Text, In Other Buffer")
-    (gnus-mime-inline-part     "i"     "View As Text, In This Buffer")
-    (gnus-mime-internalize-part        "E"     "View Internally")
-    (gnus-mime-externalize-part        "e"     "View Externally")
-    (gnus-mime-pipe-part       "|"     "Pipe To Command...")))
-
-(defun gnus-article-mime-part-status ()
-  (if gnus-article-mime-handle-alist-1
-      (format " (%d parts)" (length gnus-article-mime-handle-alist-1))
-    ""))
-
-(defvar gnus-mime-button-map nil)
-(unless gnus-mime-button-map
-  (setq gnus-mime-button-map (make-sparse-keymap))
-  (set-keymap-parent gnus-mime-button-map gnus-article-mode-map)
-  (define-key gnus-mime-button-map gnus-mouse-2 'gnus-article-push-button)
-  (define-key gnus-mime-button-map gnus-mouse-3 'gnus-mime-button-menu)
-  (mapcar (lambda (c)
-           (define-key gnus-mime-button-map (cadr c) (car c)))
-         gnus-mime-button-commands))
-
-(defun gnus-mime-button-menu (event)
-  "Construct a context-sensitive menu of MIME commands."
-  (interactive "e")
-  (gnus-article-check-buffer)
-  (let ((response (x-popup-menu 
-                  t `("MIME Part" 
-                      ("" ,@(mapcar (lambda (c)
-                                      (cons (caddr c) (car c)))
-                                    gnus-mime-button-commands)))))
-        (pos (event-start event)))
-    (when response
-      (set-buffer (window-buffer (posn-window pos)))
-      (goto-char (posn-point pos))
-      (funcall response))))
-
-(defun gnus-mime-view-all-parts (&optional handles)
-  "View all the MIME parts."
-  (interactive)
-  (save-current-buffer
-    (set-buffer gnus-article-buffer)
-    (let ((handles (or handles gnus-article-mime-handles))
-         (rfc2047-default-charset gnus-newsgroup-default-charset)
-         (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
-      (if (stringp (car handles))
-         (gnus-mime-view-all-parts (cdr handles))
-       (mapcar 'mm-display-part handles)))))
-
-(defun gnus-mime-save-part ()
-  "Save the MIME part under point."
-  (interactive)
-  (gnus-article-check-buffer)
-  (let ((data (get-text-property (point) 'gnus-data)))
-    (mm-save-part data)))
-
-(defun gnus-mime-pipe-part ()
-  "Pipe the MIME part under point to a process."
-  (interactive)
-  (gnus-article-check-buffer)
-  (let ((data (get-text-property (point) 'gnus-data)))
-    (mm-pipe-part data)))
-
-(defun gnus-mime-view-part ()
-  "Interactively choose a view method for the MIME part under point."
-  (interactive)
-  (gnus-article-check-buffer)
-  (let ((data (get-text-property (point) 'gnus-data))
-       (url-standalone-mode (not gnus-plugged)))
-    (mm-interactively-view-part data)))
-
-(defun gnus-mime-copy-part (&optional handle)
-  "Put the the MIME part under point into a new buffer."
-  (interactive)
-  (gnus-article-check-buffer)
-  (let* ((handle (or handle (get-text-property (point) 'gnus-data)))
-        (contents (mm-get-part handle))|
-        (base (file-name-nondirectory
-               (or
-                (mail-content-type-get (mm-handle-type handle) 'name)
-                (mail-content-type-get (mm-handle-type handle)
-                                       'filename)
-                "*decoded*")))
-        (buffer (generate-new-buffer base)))
-    (switch-to-buffer buffer)
-    (insert contents)
-    ;; We do it this way to make `normal-mode' set the appropriate mode.
-    (unwind-protect
-       (progn
-         (setq buffer-file-name (expand-file-name base))
-         (normal-mode))
-      (setq buffer-file-name nil))
-    (goto-char (point-min))))
-
-(defun gnus-mime-inline-part (&optional charset)
-  "Insert the MIME part under point into the current buffer."
-  (interactive "P") ; For compatibility reasons we are not using "z".
-  (gnus-article-check-buffer)
-  (let* ((data (get-text-property (point) 'gnus-data))
-        contents
-        (url-standalone-mode (not gnus-plugged))
-        (b (point))
-        buffer-read-only)
-    (if (mm-handle-undisplayer data)
-       (mm-remove-part data)
-      (setq contents (mm-get-part data))
-      (forward-line 2)
-      (when charset 
-       (unless (symbolp charset)
-         (setq charset (mm-read-coding-system "Charset: ")))
-       (setq contents (mm-decode-coding-string contents charset)))
-      (mm-insert-inline data contents)
-      (goto-char b))))
-
-(defun gnus-mime-externalize-part (&optional handle)
-  "View the MIME part under point with an external viewer."
-  (interactive)
-  (gnus-article-check-buffer)
-  (let* ((handle (or handle (get-text-property (point) 'gnus-data)))
-        (url-standalone-mode (not gnus-plugged))
-        (mm-user-display-methods nil)
-        (mm-all-images-fit t)
-        (rfc2047-default-charset gnus-newsgroup-default-charset)
-        (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
-    (if (mm-handle-undisplayer handle)
-       (mm-remove-part handle)
-      (mm-display-part handle))))
-
-(defun gnus-mime-internalize-part (&optional handle)
-  "View the MIME part under point with an internal viewer."
-  (interactive)
-  (gnus-article-check-buffer)
-  (let* ((handle (or handle (get-text-property (point) 'gnus-data)))
-        (url-standalone-mode (not gnus-plugged))
-        (mm-user-display-methods '(".*"))
-        (rfc2047-default-charset gnus-newsgroup-default-charset)
-        (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
-    (if (mm-handle-undisplayer handle)
-       (mm-remove-part handle)
-      (mm-display-part handle))))
-
-(defun gnus-article-part-wrapper (n function)
-  (save-current-buffer
-    (set-buffer gnus-article-buffer)
-    (when (> n (length gnus-article-mime-handle-alist))
-      (error "No such part"))
-    (let ((handle (cdr (assq n gnus-article-mime-handle-alist))))
-      (funcall function handle))))
-
-(defun gnus-article-pipe-part (n)
-  "Pipe MIME part N, which is the numerical prefix."
-  (interactive "p")
-  (gnus-article-part-wrapper n 'mm-pipe-part))
-  
-(defun gnus-article-save-part (n)
-  "Save MIME part N, which is the numerical prefix."
-  (interactive "p")
-  (gnus-article-part-wrapper n 'mm-save-part))
-  
-(defun gnus-article-interactively-view-part (n)
-  "Pipe MIME part N, which is the numerical prefix."
-  (interactive "p")
-  (gnus-article-part-wrapper n 'mm-interactively-view-part))
-  
-(defun gnus-article-copy-part (n)
-  "Pipe MIME part N, which is the numerical prefix."
-  (interactive "p")
-  (gnus-article-part-wrapper n 'gnus-mime-copy-part))
-
-(defun gnus-article-externalize-part (n)
-  "Pipe MIME part N, which is the numerical prefix."
-  (interactive "p")
-  (gnus-article-part-wrapper n 'gnus-mime-externalize-part))
-  
-(defun gnus-article-view-part (n)
-  "View MIME part N, which is the numerical prefix."
-  (interactive "p")
-  (save-current-buffer
-    (set-buffer gnus-article-buffer)
-    (when (> n (length gnus-article-mime-handle-alist))
-      (error "No such part"))
-    (let ((handle (cdr (assq n gnus-article-mime-handle-alist))))
-      (when (gnus-article-goto-part n)
-       (if (equal (car handle) "multipart/alternative")
-           (gnus-article-press-button)
-         (when (eq (gnus-mm-display-part handle) 'internal)
-           (gnus-set-window-start)))))))
-
-(defun gnus-mm-display-part (handle)
-  "Display HANDLE and fix MIME button."
-  (let ((id (get-text-property (point) 'gnus-part))
-       (point (point))
-       buffer-read-only)
-    (delete-region (gnus-point-at-bol) (progn (forward-line 1) (point)))
-    (gnus-insert-mime-button
-     handle id (list (not (mm-handle-displayed-p handle))))
-    (prog1
-       (let ((window (selected-window))
-             (rfc2047-default-charset gnus-newsgroup-default-charset)
-             (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
-         (save-excursion
-           (unwind-protect
-               (let ((win (get-buffer-window (current-buffer) t)))
-                 (if win
-                     (select-window win))
-                 (goto-char point)
-                 (forward-line)
-                 (mm-display-part handle))
-             (select-window window))))
-      (goto-char point))))
-
-(defun gnus-article-goto-part (n)
-  "Go to MIME part N."
-  (let ((point (text-property-any (point-min) (point-max) 'gnus-part n)))
-    (when point
-      (goto-char point))))
-
-(defun gnus-insert-mime-button (handle gnus-tmp-id &optional displayed)
-  (let ((gnus-tmp-name (mail-content-type-get (mm-handle-type handle) 'name))
-       (filename (mail-content-type-get (mm-handle-disposition handle)
-                                        'filename))
-       (gnus-tmp-type (car (mm-handle-type handle)))
-       (gnus-tmp-description (mm-handle-description handle))
-       (gnus-tmp-dots
-        (if (if displayed (car displayed)
-              (mm-handle-displayed-p handle))
-            "" "..."))
-       (gnus-tmp-length (save-excursion
-                          (set-buffer (mm-handle-buffer handle))
-                          (buffer-size)))
-       b e)
-    (setq gnus-tmp-name (or gnus-tmp-name filename))
-    (setq gnus-tmp-name
-         (if gnus-tmp-name
-             (concat " (" gnus-tmp-name ")")
-           ""))
-    (setq gnus-tmp-description
-         (if gnus-tmp-description
-             (concat " (" gnus-tmp-description ")")
-           ""))
-    (unless (bolp)
-      (insert "\n"))
-    (setq b (point))
-    (gnus-eval-format
-     gnus-mime-button-line-format gnus-mime-button-line-format-alist
-     `(local-map ,gnus-mime-button-map
-                keymap ,gnus-mime-button-map
-                gnus-callback gnus-mm-display-part
-                gnus-part ,gnus-tmp-id
-                article-type annotation
-                gnus-data ,handle))
-    (setq e (point))
-    (widget-convert-button 'link b e :action 'gnus-widget-press-button
-                          :button-keymap gnus-mime-button-map)))
-
-(defun gnus-widget-press-button (elems el)
-  (goto-char (widget-get elems :from))
-  (let ((url-standalone-mode (not gnus-plugged)))
-    (gnus-article-press-button)))
-
-(defun gnus-display-mime (&optional ihandles)
-  "Insert MIME buttons in the buffer."
-  (save-excursion
-    (save-selected-window
-      (let ((window (get-buffer-window gnus-article-buffer)))
-       (when window
-         (select-window window)))
-      (let* ((handles (or ihandles (mm-dissect-buffer) (mm-uu-dissect)))
-            handle name type b e display)
-       (unless ihandles
-         ;; Top-level call; we clean up.
-         (mm-destroy-parts gnus-article-mime-handles)
-         (setq gnus-article-mime-handles handles
-               gnus-article-mime-handle-alist nil)
-         ;; We allow users to glean info from the handles.
-         (when gnus-article-mime-part-function
-           (gnus-mime-part-function handles)))
-       (when (and handles
-                  (or (not (stringp (car handles)))
-                      (cdr handles)))
-         (unless ihandles
-           ;; Clean up for mime parts.
-           (article-goto-body)
-           (delete-region (point) (point-max)))
-         (gnus-mime-display-part handles))))))
-
-(defun gnus-mime-display-part (handle)
-  (cond
-   ;; Single part.
-   ((not (stringp (car handle)))
-    (gnus-mime-display-single handle))
-   ;; multipart/alternative
-   ((equal (car handle) "multipart/alternative")
-    (let ((id (1+ (length gnus-article-mime-handle-alist))))
-      (push (cons id handle) gnus-article-mime-handle-alist)
-      (gnus-mime-display-alternative (cdr handle) nil nil id)))
-   ;; multipart/related
-   ((equal (car handle) "multipart/related")
-    ;;;!!!We should find the start part, but we just default
-    ;;;!!!to the first part.
-    (gnus-mime-display-part (cadr handle)))
-   ;; Other multiparts are handled like multipart/mixed.
-   (t
-    (gnus-mime-display-mixed (cdr handle)))))
-
-(defun gnus-mime-part-function (handles)
-  (if (stringp (car handles))
-      (mapcar 'gnus-mime-part-function (cdr handles))
-    (funcall gnus-article-mime-part-function handles)))
-
-(defun gnus-mime-display-mixed (handles)
-  (mapcar 'gnus-mime-display-part handles))
-
-(defun gnus-mime-display-single (handle)
-  (let ((type (car (mm-handle-type handle)))
-       (ignored gnus-ignored-mime-types)
-       (not-attachment t)
-       (move nil)
-       display text)
-    (catch 'ignored
-      (progn
-       (while ignored
-         (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-automatic-display-p type)
-                (or (mm-inlinable-part-p type)
-                    (mm-automatic-external-display-p type)))
-           (setq display t)
-         (when (equal (car (split-string type "/"))
-                      "text")
-           (setq text t)))
-       (let ((id (1+ (length gnus-article-mime-handle-alist))))
-         (push (cons id handle) gnus-article-mime-handle-alist)
-         (when (or (not display)
-                   (not (gnus-unbuttonized-mime-type-p type)))
-           (gnus-article-insert-newline)
-           (gnus-insert-mime-button
-            handle id (list (or display
-                                (and not-attachment text))))
-           (gnus-article-insert-newline)
-           (gnus-article-insert-newline)
-           (setq move t)))
-       (cond
-        (display
-         (when move
-           (forward-line -2))
-         (let ((rfc2047-default-charset gnus-newsgroup-default-charset)
-               (mm-charset-iso-8859-1-forced 
-                gnus-newsgroup-iso-8859-1-forced))
-           (mm-display-part handle t))
-         (goto-char (point-max)))
-        ((and text not-attachment)
-         (when move
-           (forward-line -2))
-         (gnus-article-insert-newline)
-         (mm-insert-inline handle (mm-get-part handle))
-         (goto-char (point-max))))))))
-
-(defun gnus-unbuttonized-mime-type-p (type)
-  "Say whether TYPE is to be unbuttonized."
-  (unless gnus-inhibit-mime-unbuttonizing
-    (catch 'found
-      (let ((types gnus-unbuttonized-mime-types))
-       (while types
-         (when (string-match (pop types) type)
-           (throw 'found t)))))))
-
-(defun gnus-article-insert-newline ()
-  "Insert a newline, but mark it as undeletable."
-  (gnus-put-text-property
-   (point) (progn (insert "\n") (point)) 'gnus-undeletable t))
-
-(defun gnus-mime-display-alternative (handles &optional preferred ibegend id)
-  (let* ((preferred (or preferred (mm-preferred-alternative handles)))
-        (ihandles handles)
-        (point (point))
-        handle buffer-read-only from props begend not-pref)
-    (save-window-excursion
-      (save-restriction
-       (when ibegend
-         (narrow-to-region (car ibegend)
-                           (or (cdr ibegend)
-                               (progn
-                                 (goto-char (car ibegend))
-                                 (forward-line 2)
-                                 (point))))
-         (delete-region (point-min) (point-max))
-         (mm-remove-parts handles))
-       (setq begend (list (point-marker)))
-       ;; Do the toggle.
-       (unless (setq not-pref (cadr (member preferred ihandles)))
-         (setq not-pref (car ihandles)))
-       (when (or ibegend
-                 (not (gnus-unbuttonized-mime-type-p
-                       "multipart/alternative")))
-         (gnus-add-text-properties
-          (setq from (point))
-          (progn
-            (insert (format "%d.  " id))
-            (point))
-          `(gnus-callback
-            (lambda (handles)
-              (unless ,(not ibegend)
-                (setq gnus-article-mime-handle-alist
-                      ',gnus-article-mime-handle-alist))
-              (gnus-mime-display-alternative
-               ',ihandles ',not-pref ',begend ,id))
-            local-map ,gnus-mime-button-map
-            ,gnus-mouse-face-prop ,gnus-article-mouse-face
-            face ,gnus-article-button-face
-            keymap ,gnus-mime-button-map
-            gnus-part ,id
-            gnus-data ,handle))
-         (widget-convert-button 'link from (point)
-                                :action 'gnus-widget-press-button
-                                :button-keymap gnus-widget-button-keymap)
-         ;; Do the handles
-         (while (setq handle (pop handles))
-           (gnus-add-text-properties
-            (setq from (point))
-            (progn
-              (insert (format "[%c] %-18s"
-                              (if (equal handle preferred) ?* ? )
-                              (if (stringp (car handle))
-                                  (car handle)
-                                (car (mm-handle-type handle)))))
-              (point))
-            `(gnus-callback
-              (lambda (handles)
-                (unless ,(not ibegend)
-                  (setq gnus-article-mime-handle-alist
-                        ',gnus-article-mime-handle-alist))
-                (gnus-mime-display-alternative
-                 ',ihandles ',handle ',begend ,id))
-              local-map ,gnus-mime-button-map
-              ,gnus-mouse-face-prop ,gnus-article-mouse-face
-              face ,gnus-article-button-face
-              keymap ,gnus-mime-button-map
-              gnus-part ,id
-              gnus-data ,handle))
-           (widget-convert-button 'link from (point)
-                                  :action 'gnus-widget-press-button
-                                  :button-keymap gnus-widget-button-keymap)
-           (insert "  "))
-         (insert "\n\n"))
-       (when preferred
-         (if (stringp (car preferred))
-             (gnus-display-mime preferred)
-           (let ((rfc2047-default-charset gnus-newsgroup-default-charset)
-                 (mm-charset-iso-8859-1-forced 
-                  gnus-newsgroup-iso-8859-1-forced))
-             (mm-display-part preferred)))
-         (goto-char (point-max))
-         (setcdr begend (point-marker)))))
-    (when ibegend
-      (goto-char point))))
-
-(defun gnus-article-wash-status ()
-  "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))
-      (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 emphasis ?e ? )))))
-
-(fset 'gnus-article-hide-headers-if-wanted 'gnus-article-maybe-hide-headers)
-
-(defun gnus-article-maybe-hide-headers ()
-  "Hide unwanted headers if `gnus-have-all-headers' is nil.
-Provided for backwards compatibility."
-  (or (save-excursion (set-buffer gnus-summary-buffer) gnus-have-all-headers)
-      gnus-inhibit-hiding
-      (gnus-article-hide-headers)))
-
-;;; Article savers.
-
-(defun gnus-output-to-file (file-name)
-  "Append the current article to a file named FILE-NAME."
-  (let ((artbuf (current-buffer)))
-    (with-temp-buffer
-      (insert-buffer-substring artbuf)
-      ;; Append newline at end of the buffer as separator, and then
-      ;; save it to file.
-      (goto-char (point-max))
-      (insert "\n")
-      (append-to-file (point-min) (point-max) file-name)
-      t)))
-
-(defun gnus-narrow-to-page (&optional arg)
-  "Narrow the article buffer to a page.
-If given a numerical ARG, move forward ARG pages."
-  (interactive "P")
-  (setq arg (if arg (prefix-numeric-value arg) 0))
-  (save-excursion
-    (set-buffer gnus-article-buffer)
-    (goto-char (point-min))
-    (widen)
-    ;; Remove any old next/prev buttons.
-    (when (gnus-visual-p 'page-marker)
-      (let ((buffer-read-only nil))
-       (gnus-remove-text-with-property 'gnus-prev)
-       (gnus-remove-text-with-property 'gnus-next)))
-    (when
-       (cond ((< arg 0)
-              (re-search-backward page-delimiter nil 'move (1+ (abs arg))))
-             ((> arg 0)
-              (re-search-forward page-delimiter nil 'move arg)))
-      (goto-char (match-end 0)))
-    (narrow-to-region
-     (point)
-     (if (re-search-forward page-delimiter nil 'move)
-        (match-beginning 0)
-       (point)))
-    (when (and (gnus-visual-p 'page-marker)
-              (not (= (point-min) 1)))
-      (save-excursion
-       (goto-char (point-min))
-       (gnus-insert-prev-page-button)))
-    (when (and (gnus-visual-p 'page-marker)
-              (< (+ (point-max) 2) (buffer-size)))
-      (save-excursion
-       (goto-char (point-max))
-       (gnus-insert-next-page-button)))))
-
-;; Article mode commands
-
-(defun gnus-article-goto-next-page ()
-  "Show the next page of the article."
-  (interactive)
-  (when (gnus-article-next-page)
-    (goto-char (point-min))
-    (gnus-article-read-summary-keys nil (gnus-character-to-event ?n))))
-
-(defun gnus-article-goto-prev-page ()
-  "Show the next page of the article."
-  (interactive)
-  (if (bobp) (gnus-article-read-summary-keys nil (gnus-character-to-event ?p))
-    (gnus-article-prev-page nil)))
-
-(defun gnus-article-next-page (&optional lines)
-  "Show the next page of the current article.
-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))
-
-(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)))))
-
-(defun gnus-article-refer-article ()
-  "Read article specified by message-id around point."
-  (interactive)
-  (let ((point (point)))
-    (search-forward ">" nil t)         ;Move point to end of "<....>".
-    (if (re-search-backward "\\(<[^<> \t\n]+>\\)" nil t)
-       (let ((message-id (match-string 1)))
-         (goto-char point)
-         (set-buffer gnus-summary-buffer)
-         (gnus-summary-refer-article message-id))
-      (goto-char (point))
-      (error "No references around point"))))
-
-(defun gnus-article-show-summary ()
-  "Reconfigure windows to show summary buffer."
-  (interactive)
-  (if (not (gnus-buffer-live-p gnus-summary-buffer))
-      (error "There is no summary buffer for this article buffer")
-    (gnus-article-set-globals)
-    (gnus-configure-windows 'article)
-    (gnus-summary-goto-subject gnus-current-article)
-    (gnus-summary-position-point)))
-
-(defun gnus-article-describe-briefly ()
-  "Describe article mode commands briefly."
-  (interactive)
-  (gnus-message 6
-               (substitute-command-keys "\\<gnus-article-mode-map>\\[gnus-article-goto-next-page]:Next page     \\[gnus-article-goto-prev-page]:Prev page  \\[gnus-article-show-summary]:Show summary  \\[gnus-info-find-node]:Run Info  \\[gnus-article-describe-briefly]:This help")))
-
-(defun gnus-article-summary-command ()
-  "Execute the last keystroke in the summary buffer."
-  (interactive)
-  (let ((obuf (current-buffer))
-       (owin (current-window-configuration))
-       func)
-    (switch-to-buffer gnus-article-current-summary 'norecord)
-    (setq func (lookup-key (current-local-map) (this-command-keys)))
-    (call-interactively func)
-    (set-buffer obuf)
-    (set-window-configuration owin)
-    (set-window-point (get-buffer-window (current-buffer)) (point))))
-
-(defun gnus-article-summary-command-nosave ()
-  "Execute the last keystroke in the summary buffer."
-  (interactive)
-  (let (func)
-    (pop-to-buffer gnus-article-current-summary 'norecord)
-    (setq func (lookup-key (current-local-map) (this-command-keys)))
-    (call-interactively func)))
-
-(defun gnus-article-check-buffer ()
-  "Beep if not in an article buffer."
-  (unless (equal major-mode 'gnus-article-mode)
-    (error "Command invoked outside of a Gnus article buffer")))
-
-(defun gnus-article-read-summary-keys (&optional arg key not-restore-window)
-  "Read a summary buffer key sequence and execute it from the article buffer."
-  (interactive "P")
-  (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"
-           "=" "^" "\M-^" "|"))
-        (nosave-but-article
-         '("A\r"))
-        (nosave-in-article
-         '("\C-d"))
-        (up-to-top
-         '("n" "Gn" "p" "Gp"))
-        keys new-sum-point)
-    (save-excursion
-      (set-buffer gnus-article-current-summary)
-      (let (gnus-pick-mode)
-        (push (or key last-command-event) unread-command-events)
-        (setq keys (read-key-sequence nil))))
-    (message "")
-
-    (if (or (member keys nosaves)
-            (member keys nosave-but-article)
-            (member keys nosave-in-article))
-        (let (func)
-          (save-window-excursion
-            (pop-to-buffer gnus-article-current-summary 'norecord)
-            ;; We disable the pick minor mode commands.
-            (let (gnus-pick-mode)
-              (setq func (lookup-key (current-local-map) keys))))
-          (if (not func)
-              (ding)
-            (unless (member keys nosave-in-article)
-              (set-buffer gnus-article-current-summary))
-            (call-interactively func)
-            (setq new-sum-point (point)))
-          (when (member keys nosave-but-article)
-            (pop-to-buffer gnus-article-buffer 'norecord)))
-      ;; These commands should restore window configuration.
-      (let ((obuf (current-buffer))
-            (owin (current-window-configuration))
-            (opoint (point))
-            (summary gnus-article-current-summary)
-            func in-buffer selected)
-        (if not-restore-window
-            (pop-to-buffer summary 'norecord)
-          (switch-to-buffer summary 'norecord))
-        (setq in-buffer (current-buffer))
-        ;; We disable the pick minor mode commands.
-        (if (setq func (let (gnus-pick-mode)
-                         (lookup-key (current-local-map) keys)))
-            (progn
-              (call-interactively func)
-              (setq new-sum-point (point)))
-          (ding))
-        (when (eq in-buffer (current-buffer))
-          (setq selected (gnus-summary-select-article))
-          (set-buffer obuf)
-          (unless not-restore-window
-            (set-window-configuration owin))
-          (unless (or (not (eq selected 'old)) (member keys up-to-top))
-            (set-window-point (get-buffer-window (current-buffer))
-                              opoint))
-          (let ((win (get-buffer-window gnus-article-current-summary)))
-            (when win
-              (set-window-point win new-sum-point))))))))
-
-(defun gnus-article-hide (&optional arg force)
-  "Hide all the gruft in the current article.
-This means that PGP stuff, signatures, cited text and (some)
-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-pgp arg)
-  (gnus-article-hide-citation-maybe arg force)
-  (gnus-article-hide-signature arg))
-
-(defun gnus-article-maybe-highlight ()
-  "Do some article highlighting if article highlighting is requested."
-  (when (gnus-visual-p 'article-highlight 'highlight)
-    (gnus-article-highlight-some)))
-
-(defun gnus-check-group-server ()
-  ;; Make sure the connection to the server is alive.
-  (unless (gnus-server-opened
-          (gnus-find-method-for-group gnus-newsgroup-name))
-    (gnus-check-server (gnus-find-method-for-group gnus-newsgroup-name))
-    (gnus-request-group gnus-newsgroup-name t)))
-
-(defun gnus-request-article-this-buffer (article group)
-  "Get an article and insert it into this buffer."
-  (let (do-update-line sparse-header)
-    (prog1
-       (save-excursion
-         (erase-buffer)
-         (gnus-kill-all-overlays)
-         (setq group (or group gnus-newsgroup-name))
-
-         ;; Using `gnus-request-article' directly will insert the article into
-         ;; `nntp-server-buffer' - so we'll save some time by not having to
-         ;; copy it from the server buffer into the article buffer.
-
-         ;; We only request an article by message-id when we do not have the
-         ;; headers for it, so we'll have to get those.
-         (when (stringp article)
-           (let ((gnus-override-method gnus-refer-article-method))
-             (gnus-read-header article)))
-
-         ;; If the article number is negative, that means that this article
-         ;; doesn't belong in this newsgroup (possibly), so we find its
-         ;; message-id and request it by id instead of number.
-         (when (and (numberp article)
-                    gnus-summary-buffer
-                    (get-buffer gnus-summary-buffer)
-                    (gnus-buffer-exists-p gnus-summary-buffer))
-           (save-excursion
-             (set-buffer gnus-summary-buffer)
-             (let ((header (gnus-summary-article-header article)))
-               (when (< article 0)
-                 (cond
-                  ((memq article gnus-newsgroup-sparse)
-                   ;; This is a sparse gap article.
-                   (setq do-update-line article)
-                   (setq article (mail-header-id header))
-                   (let ((gnus-override-method gnus-refer-article-method))
-                     (setq sparse-header (gnus-read-header article)))
-                   (setq gnus-newsgroup-sparse
-                         (delq article gnus-newsgroup-sparse)))
-                  ((vectorp header)
-                   ;; It's a real article.
-                   (setq article (mail-header-id header)))
-                  (t
-                   ;; It is an extracted pseudo-article.
-                   (setq article 'pseudo)
-                   (gnus-request-pseudo-article header))))
-
-               (let ((method (gnus-find-method-for-group
-                              gnus-newsgroup-name)))
-                 (when (and (eq (car method) 'nneething)
-                            (vectorp header))
-                   (let ((dir (concat
-                               (file-name-as-directory
-                                (or (cadr (assq 'nneething-address method))
-                                    (nth 1 method)))
-                               (mail-header-subject header))))
-                     (when (file-directory-p dir)
-                       (setq article 'nneething)
-                       (gnus-group-enter-directory dir))))))))
-
-         (cond
-          ;; Refuse to select canceled articles.
-          ((and (numberp article)
-                gnus-summary-buffer
-                (get-buffer gnus-summary-buffer)
-                (gnus-buffer-exists-p gnus-summary-buffer)
-                (eq (cdr (save-excursion
-                           (set-buffer gnus-summary-buffer)
-                           (assq article gnus-newsgroup-reads)))
-                    gnus-canceled-mark))
-           nil)
-          ;; Check the backlog.
-          ((and gnus-keep-backlog
-                (gnus-backlog-request-article group article (current-buffer)))
-           'article)
-          ;; Check asynchronous pre-fetch.
-          ((gnus-async-request-fetched-article group article (current-buffer))
-           (gnus-async-prefetch-next group article gnus-summary-buffer)
-           (when (and (numberp article) gnus-keep-backlog)
-             (gnus-backlog-enter-article group article (current-buffer)))
-           'article)
-          ;; Check the cache.
-          ((and gnus-use-cache
-                (numberp article)
-                (gnus-cache-request-article article group))
-           'article)
-          ;; Get the article and put into the article buffer.
-          ((or (stringp article) (numberp article))
-           (let ((gnus-override-method
-                  (and (stringp article) gnus-refer-article-method))
-                 (buffer-read-only nil))
-             (erase-buffer)
-             (gnus-kill-all-overlays)
-             (gnus-check-group-server)
-             (when (gnus-request-article article group (current-buffer))
-               (when (numberp article)
-                 (gnus-async-prefetch-next group article gnus-summary-buffer)
-                 (when gnus-keep-backlog
-                   (gnus-backlog-enter-article
-                    group article (current-buffer))))
-               'article)))
-          ;; It was a pseudo.
-          (t article)))
-
-      ;; Associate this article with the current summary buffer.
-      (setq gnus-article-current-summary gnus-summary-buffer)
-
-      ;; Take the article from the original article buffer
-      ;; and place it in the buffer it's supposed to be in.
-      (when (and (get-buffer gnus-article-buffer)
-                (equal (buffer-name (current-buffer))
-                       (buffer-name (get-buffer gnus-article-buffer))))
-       (save-excursion
-         (if (get-buffer gnus-original-article-buffer)
-             (set-buffer gnus-original-article-buffer)
-           (set-buffer (gnus-get-buffer-create gnus-original-article-buffer))
-           (buffer-disable-undo)
-           (setq major-mode 'gnus-original-article-mode)
-           (setq buffer-read-only t))
-         (let (buffer-read-only)
-           (erase-buffer)
-           (insert-buffer-substring gnus-article-buffer))
-         (setq gnus-original-article (cons group article)))
-
-       ;; Decode charsets.
-       (run-hooks 'gnus-article-decode-hook)
-       ;; Mark article as decoded or not.
-       (setq gnus-article-decoded-p gnus-article-decode-hook))
-
-      ;; Update sparse articles.
-      (when (and do-update-line
-                (or (numberp article)
-                    (stringp article)))
-       (let ((buf (current-buffer)))
-         (set-buffer gnus-summary-buffer)
-         (gnus-summary-update-article do-update-line sparse-header)
-         (gnus-summary-goto-subject do-update-line nil t)
-         (set-window-point (get-buffer-window (current-buffer) t)
-                           (point))
-         (set-buffer buf))))))
-
-;;;
-;;; Article editing
-;;;
-
-(defcustom gnus-article-edit-mode-hook nil
-  "Hook run in article edit mode buffers."
-  :group 'gnus-article-various
-  :type 'hook)
-
-(defcustom gnus-article-edit-article-setup-function
-  'gnus-article-mime-edit-article-setup
-  "Function called to setup an editing article buffer."
-  :group 'gnus-article-various
-  :type 'function)
-
-(defvar gnus-article-edit-done-function nil)
-
-(defvar gnus-article-edit-mode-map nil)
-
-;; Should we be using derived.el for this?
-(unless gnus-article-edit-mode-map
-  (setq gnus-article-edit-mode-map (make-sparse-keymap))
-  (set-keymap-parent gnus-article-edit-mode-map text-mode-map)
-
-  (gnus-define-keys gnus-article-edit-mode-map
-    "\C-c\C-c" gnus-article-edit-done
-    "\C-c\C-k" gnus-article-edit-exit)
-
-  (gnus-define-keys (gnus-article-edit-wash-map
-                    "\C-c\C-w" gnus-article-edit-mode-map)
-    "f" gnus-article-edit-full-stops))
-
-(defun gnus-article-edit-mode ()
-  "Major mode for editing articles.
-This is an extended text-mode.
-
-\\{gnus-article-edit-mode-map}"
-  (interactive)
-  (setq major-mode 'gnus-article-edit-mode)
-  (setq mode-name "Article Edit")
-  (use-local-map gnus-article-edit-mode-map)
-  (make-local-variable 'gnus-article-edit-done-function)
-  (make-local-variable 'gnus-prev-winconf)
-  (setq buffer-read-only nil)
-  (buffer-enable-undo)
-  (widen)
-  (gnus-run-hooks 'text-mode-hook 'gnus-article-edit-mode-hook))
-
-(defun gnus-article-edit (&optional force)
-  "Edit the current article.
-This will have permanent effect only in mail groups.
-If FORCE is non-nil, allow editing of articles even in read-only
-groups."
-  (interactive "P")
-  (when (and (not force)
-            (gnus-group-read-only-p))
-    (error "The current newsgroup does not support article editing"))
-  (gnus-article-date-original)
-  (gnus-article-edit-article
-   `(lambda (no-highlight)
-      (gnus-summary-edit-article-done
-       ,(or (mail-header-references gnus-current-headers) "")
-       ,(gnus-group-read-only-p) ,gnus-summary-buffer no-highlight))))
-
-(defun gnus-article-edit-article (exit-func)
-  "Start editing the contents of the current article buffer."
-  (let ((winconf (current-window-configuration)))
-    (set-buffer gnus-article-buffer)
-    (gnus-article-edit-mode)
-    (gnus-article-delete-text-of-type 'annotation)
-    (gnus-set-text-properties (point-min) (point-max) nil)
-    (gnus-configure-windows 'edit-article)
-    (setq gnus-article-edit-done-function exit-func)
-    (setq gnus-prev-winconf winconf)
-    (when gnus-article-edit-article-setup-function
-      (funcall gnus-article-edit-article-setup-function))
-    (gnus-message 6 "C-c C-c to end edits")))
-
-(defun gnus-article-edit-done (&optional arg)
-  "Update the article edits and exit."
-  (interactive "P")
-  (save-excursion
-    (save-restriction
-      (widen)
-      (when (article-goto-body)
-       (let ((lines (count-lines (point) (point-max)))
-             (length (- (point-max) (point)))
-             (case-fold-search t)
-             (body (copy-marker (point))))
-         (goto-char (point-min))
-         (when (re-search-forward "^content-length:[ \t]\\([0-9]+\\)" body t)
-           (delete-region (match-beginning 1) (match-end 1))
-           (insert (number-to-string length)))
-         (goto-char (point-min))
-         (when (re-search-forward
-                "^x-content-length:[ \t]\\([0-9]+\\)" body t)
-           (delete-region (match-beginning 1) (match-end 1))
-           (insert (number-to-string length)))
-         (goto-char (point-min))
-         (when (re-search-forward "^lines:[ \t]\\([0-9]+\\)" body t)
-           (delete-region (match-beginning 1) (match-end 1))
-           (insert (number-to-string lines)))))))
-  (let ((func gnus-article-edit-done-function)
-       (buf (current-buffer))
-       (start (window-start)))
-    (remove-hook 'gnus-article-mode-hook
-                'gnus-article-mime-edit-article-unwind)
-    (gnus-article-edit-exit)
-    (save-excursion
-      (set-buffer buf)
-      (let ((buffer-read-only nil))
-       (funcall func arg))
-      ;; The cache and backlog have to be flushed somewhat.
-      (when gnus-keep-backlog
-       (gnus-backlog-remove-article
-        (car gnus-article-current) (cdr gnus-article-current)))
-      ;; Flush original article as well.
-      (save-excursion
-       (when (get-buffer gnus-original-article-buffer)
-         (set-buffer gnus-original-article-buffer)
-         (setq gnus-original-article nil)))
-      (when gnus-use-cache
-       (gnus-cache-update-article
-        (car gnus-article-current) (cdr gnus-article-current))))
-    (set-buffer buf)
-    (set-window-start (get-buffer-window buf) start)
-    (set-window-point (get-buffer-window buf) (point))))
-
-(defun gnus-article-edit-exit ()
-  "Exit the article editing without updating."
-  (interactive)
-  ;; We remove all text props from the article buffer.
-  (let ((buf (format "%s" (buffer-string)))
-       (curbuf (current-buffer))
-       (p (point))
-       (window-start (window-start)))
-    (erase-buffer)
-    (insert buf)
-    (let ((winconf gnus-prev-winconf))
-      (gnus-article-mode)
-      (set-window-configuration winconf)
-      ;; Tippy-toe some to make sure that point remains where it was.
-      (save-current-buffer
-       (set-buffer curbuf)
-       (set-window-start (get-buffer-window (current-buffer)) window-start)
-       (goto-char p)))))
-
-(defun gnus-article-edit-full-stops ()
-  "Interactively repair spacing at end of sentences."
-  (interactive)
-  (save-excursion
-    (goto-char (point-min))
-    (search-forward-regexp "^$" nil t)
-    (let ((case-fold-search nil))
-      (query-replace-regexp "\\([.!?][])}]* \\)\\([[({A-Z]\\)" "\\1 \\2"))))
-
-;;;
-;;; Article editing with MIME-Edit
-;;;
-
-(defcustom gnus-article-mime-edit-article-setup-hook nil
-  "Hook run after setting up a MIME editing article buffer."
-  :group 'gnus-article-various
-  :type 'hook)
-
-(defun gnus-article-mime-edit-article-unwind ()
-  "Unwind `gnus-article-buffer' if article editing was given up."
-  (remove-hook 'gnus-article-mode-hook 'gnus-article-mime-edit-article-unwind)
-  (when mime-edit-mode-flag
-    (mime-edit-exit 'nomime 'no-error)
-    (message ""))
-  (when (featurep 'font-lock)
-    (setq font-lock-defaults nil)
-    (font-lock-mode 0)))
-
-(defun gnus-article-mime-edit-article-setup ()
-  "Convert current buffer to MIME-Edit buffer and turn on MIME-Edit mode
-after replacing with the original article."
-  (setq gnus-show-mime t)
-  (setq gnus-article-edit-done-function
-       `(lambda (&rest args)
-          (when mime-edit-mode-flag
-            (mime-edit-exit)
-            (message ""))
-          (goto-char (point-min))
-          (let (case-fold-search)
-            (when (re-search-forward
-                   (format "^%s$" (regexp-quote mail-header-separator))
-                   nil t)
-              (replace-match "")))
-          (when (featurep 'font-lock)
-            (setq font-lock-defaults nil)
-            (font-lock-mode 0))
-          (apply ,gnus-article-edit-done-function args)
-          (set-buffer gnus-original-article-buffer)
-          (erase-buffer)
-          (insert-buffer gnus-article-buffer)
-          (setq gnus-current-headers (gnus-article-make-full-mail-header))
-          (gnus-article-prepare-display)))
-  (substitute-key-definition
-   'gnus-article-edit-exit 'gnus-article-mime-edit-exit
-   gnus-article-edit-mode-map)
-  (erase-buffer)
-  (insert-buffer gnus-original-article-buffer)
-  (mime-edit-again)
-  (when (featurep 'font-lock)
-    (set (make-local-variable 'font-lock-defaults)
-        '(message-font-lock-keywords t))
-    (font-lock-set-defaults)
-    (turn-on-font-lock))
-  (add-hook 'gnus-article-mode-hook 'gnus-article-mime-edit-article-unwind)
-  (gnus-run-hooks 'gnus-article-mime-edit-article-setup-hook))
-
-(defun gnus-article-mime-edit-exit ()
-  "Exit the article MIME editing without updating."
-  (interactive)
-  (let ((winconf gnus-prev-winconf)
-       buf)
-    (when mime-edit-mode-flag
-      (mime-edit-exit)
-      (message ""))
-    (goto-char (point-min))
-    (let (case-fold-search)
-      (when (re-search-forward
-            (format "^%s$" (regexp-quote mail-header-separator)) nil t)
-       (replace-match "")))
-    (when (featurep 'font-lock)
-      (setq font-lock-defaults nil)
-      (font-lock-mode 0))
-    ;; We remove all text props from the article buffer.
-    (setq buf (format "%s" (buffer-string)))
-    (set-buffer (get-buffer-create gnus-original-article-buffer))
-    (erase-buffer)
-    (insert buf)
-    (setq gnus-current-headers (gnus-article-make-full-mail-header))
-    (gnus-article-prepare-display)
-    (set-window-configuration winconf)))
-
-;;;
-;;; Article highlights
-;;;
-
-;; Written by Per Abrahamsen <abraham@iesd.auc.dk>.
-
-;;; Internal Variables:
-
-(defcustom gnus-button-url-regexp "\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?\\([-a-zA-Z0-9_=!?#$@~`%&*+|\\/:;.,]\\|\\w\\)+\\([-a-zA-Z0-9_=#$@~`%&*+|\\/]\\|\\w\\)"
-  "Regular expression that matches URLs."
-  :group 'gnus-article-buttons
-  :type 'regexp)
-
-(defcustom gnus-button-alist
-  `(("<\\(url:[>\n\t ]*?\\)?news:[>\n\t ]*\\([^>\n\t ]*@[^>\n\t ]*\\)>"
-     0 t gnus-button-message-id 2)
-    ("\\bnews:\\([^>\n\t ]*@[^>)!;:,\n\t ]*\\)" 0 t gnus-button-message-id 1)
-    ("\\(\\b<\\(url:[>\n\t ]*\\)?news:[>\n\t ]*\\(//\\)?\\([^>\n\t ]*\\)>\\)"
-     1 t
-     gnus-button-fetch-group 4)
-    ("\\bnews:\\(//\\)?\\([^'\">\n\t ]+\\)" 0 t gnus-button-fetch-group 2)
-    ("\\bin\\( +article\\| +message\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2
-     t gnus-button-message-id 3)
-    ("\\(<URL: *\\)mailto: *\\([^> \n\t]+\\)>" 0 t gnus-url-mailto 2)
-    ("mailto:\\([-a-zA-Z.@_+0-9%]+\\)" 0 t gnus-url-mailto 1)
-    ("\\bmailto:\\([^ \n\t]+\\)" 0 t gnus-url-mailto 1)
-    ;; This is how URLs _should_ be embedded in text...
-    ("<URL: *\\([^>]*\\)>" 0 t gnus-button-embedded-url 1)
-    ;; Raw URLs.
-    (,gnus-button-url-regexp 0 t gnus-button-url 0))
-  "*Alist of regexps matching buttons in article bodies.
-
-Each entry has the form (REGEXP BUTTON FORM CALLBACK PAR...), where
-REGEXP: is the string matching text around the button,
-BUTTON: is the number of the regexp grouping actually matching the button,
-FORM: is a lisp expression which must eval to true for the button to
-be added,
-CALLBACK: is the function to call when the user push this button, and each
-PAR: is a number of a regexp grouping whose text will be passed to CALLBACK.
-
-CALLBACK can also be a variable, in that case the value of that
-variable it the real callback function."
-  :group 'gnus-article-buttons
-  :type '(repeat (list regexp
-                      (integer :tag "Button")
-                      (sexp :tag "Form")
-                      (function :tag "Callback")
-                      (repeat :tag "Par"
-                              :inline t
-                              (integer :tag "Regexp group")))))
-
-(defcustom gnus-header-button-alist
-  `(("^\\(References\\|Message-I[Dd]\\):" "<[^>]+>"
-     0 t gnus-button-message-id 0)
-    ("^\\(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)
-    ("^[^:]+:" "\\(<\\(url: \\)?news:\\([^>\n ]*\\)>\\)" 1 t
-     gnus-button-message-id 3))
-  "*Alist of headers and regexps to match buttons in article heads.
-
-This alist is very similar to `gnus-button-alist', except that each
-alist has an additional HEADER element first in each entry:
-
-\(HEADER REGEXP BUTTON FORM CALLBACK PAR)
-
-HEADER is a regexp to match a header.  For a fuller explanation, see
-`gnus-button-alist'."
-  :group 'gnus-article-buttons
-  :group 'gnus-article-headers
-  :type '(repeat (list (regexp :tag "Header")
-                      regexp
-                      (integer :tag "Button")
-                      (sexp :tag "Form")
-                      (function :tag "Callback")
-                      (repeat :tag "Par"
-                              :inline t
-                              (integer :tag "Regexp group")))))
-
-(defvar gnus-button-regexp nil)
-(defvar gnus-button-marker-list nil)
-;; Regexp matching any of the regexps from `gnus-button-alist'.
-
-(defvar gnus-button-last nil)
-;; The value of `gnus-button-alist' when `gnus-button-regexp' was build.
-
-;;; Commands:
-
-(defun gnus-article-push-button (event)
-  "Check text under the mouse pointer for a callback function.
-If the text under the mouse pointer has a `gnus-callback' property,
-call it with the value of the `gnus-data' text property."
-  (interactive "e")
-  (set-buffer (window-buffer (posn-window (event-start event))))
-  (let* ((pos (posn-point (event-start event)))
-         (data (get-text-property pos 'gnus-data))
-        (fun (get-text-property pos 'gnus-callback)))
-    (goto-char pos)
-    (when fun
-      (funcall fun data))))
-
-(defun gnus-article-press-button ()
-  "Check text at point for a callback function.
-If the text at point has a `gnus-callback' property,
-call it with the value of the `gnus-data' text property."
-  (interactive)
-  (let* ((data (get-text-property (point) 'gnus-data))
-        (fun (get-text-property (point) 'gnus-callback)))
-    (when fun
-      (funcall fun data))))
-
-(defun gnus-article-prev-button (n)
-  "Move point to N buttons backward.
-If N is negative, move forward instead."
-  (interactive "p")
-  (gnus-article-next-button (- n)))
-
-(defun gnus-article-next-button (n)
-  "Move point to N buttons forward.
-If N is negative, move backward instead."
-  (interactive "p")
-  (let ((function (if (< n 0) 'previous-single-property-change
-                   'next-single-property-change))
-       (inhibit-point-motion-hooks t)
-       (backward (< n 0))
-       (limit (if (< n 0) (point-min) (point-max))))
-    (setq n (abs n))
-    (while (and (not (= limit (point)))
-               (> n 0))
-      ;; Skip past the current button.
-      (when (get-text-property (point) 'gnus-callback)
-       (goto-char (funcall function (point) 'gnus-callback nil limit)))
-      ;; Go to the next (or previous) button.
-      (gnus-goto-char (funcall function (point) 'gnus-callback nil limit))
-      ;; Put point at the start of the button.
-      (when (and backward (not (get-text-property (point) 'gnus-callback)))
-       (goto-char (funcall function (point) 'gnus-callback nil limit)))
-      ;; Skip past intangible buttons.
-      (when (get-text-property (point) 'intangible)
-       (incf n))
-      (decf n))
-    (unless (zerop n)
-      (gnus-message 5 "No more buttons"))
-    n))
-
-(defun gnus-article-highlight (&optional force)
-  "Highlight current article.
-This function calls `gnus-article-highlight-headers',
-`gnus-article-highlight-citation',
-`gnus-article-highlight-signature', and `gnus-article-add-buttons' to
-do the highlighting.  See the documentation for those functions."
-  (interactive (list 'force))
-  (gnus-article-highlight-headers)
-  (gnus-article-highlight-citation force)
-  (gnus-article-highlight-signature)
-  (gnus-article-add-buttons force)
-  (gnus-article-add-buttons-to-head))
-
-(defun gnus-article-highlight-some (&optional force)
-  "Highlight current article.
-This function calls `gnus-article-highlight-headers',
-`gnus-article-highlight-signature', and `gnus-article-add-buttons' to
-do the highlighting.  See the documentation for those functions."
-  (interactive (list 'force))
-  (gnus-article-highlight-headers)
-  (gnus-article-highlight-signature)
-  (gnus-article-add-buttons))
-
-(defun gnus-article-highlight-headers ()
-  "Highlight article headers as specified by `gnus-header-face-alist'."
-  (interactive)
-  (save-excursion
-    (set-buffer gnus-article-buffer)
-    (save-restriction
-      (let ((alist gnus-header-face-alist)
-           (buffer-read-only nil)
-           (case-fold-search t)
-           (inhibit-point-motion-hooks t)
-           entry regexp header-face field-face from hpoints fpoints)
-       (message-narrow-to-head)
-       (while (setq entry (pop alist))
-         (goto-char (point-min))
-         (setq regexp (concat "^\\("
-                              (if (string-equal "" (nth 0 entry))
-                                  "[^\t ]"
-                                (nth 0 entry))
-                              "\\)")
-               header-face (nth 1 entry)
-               field-face (nth 2 entry))
-         (while (and (re-search-forward regexp nil t)
-                     (not (eobp)))
-           (beginning-of-line)
-           (setq from (point))
-           (unless (search-forward ":" nil t)
-             (forward-char 1))
-           (when (and header-face
-                      (not (memq (point) hpoints)))
-             (push (point) hpoints)
-             (gnus-put-text-property from (point) 'face header-face))
-           (when (and field-face
-                      (not (memq (setq from (point)) fpoints)))
-             (push from fpoints)
-             (if (re-search-forward "^[^ \t]" nil t)
-                 (forward-char -2)
-               (goto-char (point-max)))
-             (gnus-put-text-property from (point) 'face field-face))))))))
-
-(defun gnus-article-highlight-signature ()
-  "Highlight the signature in an article.
-It does this by highlighting everything after
-`gnus-signature-separator' using `gnus-signature-face'."
-  (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)))))))
-
-(defun gnus-button-in-region-p (b e prop)
-  "Say whether PROP exists in the region."
-  (text-property-not-all b e prop nil))
-
-(defun gnus-article-add-buttons (&optional force)
-  "Find external references in the article and make buttons of them.
-\"External references\" are things like Message-IDs and URLs, as
-specified by `gnus-button-alist'."
-  (interactive (list 'force))
-  (save-excursion
-    (set-buffer gnus-article-buffer)
-    (let ((buffer-read-only nil)
-         (inhibit-point-motion-hooks t)
-         (case-fold-search t)
-         (alist gnus-button-alist)
-         beg entry regexp)
-      ;; Remove all old markers.
-      (let (marker entry)
-       (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)))
-      ;; We skip the headers.
-      (article-goto-body)
-      (setq beg (point))
-      (while (setq entry (pop alist))
-       (setq regexp (car entry))
-       (goto-char beg)
-       (while (re-search-forward regexp nil t)
-         (let* ((start (and entry (match-beginning (nth 1 entry))))
-                (end (and entry (match-end (nth 1 entry))))
-                (from (match-beginning 0)))
-           (when (and (or (eq t (nth 2 entry))
-                          (eval (nth 2 entry)))
-                      (not (gnus-button-in-region-p
-                            start end 'gnus-callback)))
-             ;; That optional form returned non-nil, so we add the
-             ;; button.
-             (gnus-article-add-button
-              start end 'gnus-button-push
-              (car (push (set-marker (make-marker) from)
-                         gnus-button-marker-list))))))))))
-
-;; Add buttons to the head of an article.
-(defun gnus-article-add-buttons-to-head ()
-  "Add buttons to the head of the article."
-  (interactive)
-  (save-excursion
-    (set-buffer gnus-article-buffer)
-    (let ((buffer-read-only nil)
-         (inhibit-point-motion-hooks t)
-         (case-fold-search t)
-         (alist gnus-header-button-alist)
-         entry beg end)
-      (nnheader-narrow-to-headers)
-      (while alist
-       ;; Each alist entry.
-       (setq entry (car alist)
-             alist (cdr alist))
-       (goto-char (point-min))
-       (while (re-search-forward (car entry) nil t)
-         ;; Each header matching the entry.
-         (setq beg (match-beginning 0))
-         (setq end (or (and (re-search-forward "^[^ \t]" nil t)
-                            (match-beginning 0))
-                       (point-max)))
-         (goto-char beg)
-         (while (re-search-forward (nth 1 entry) end t)
-           ;; Each match within a header.
-           (let* ((entry (cdr entry))
-                  (start (match-beginning (nth 1 entry)))
-                  (end (match-end (nth 1 entry)))
-                  (form (nth 2 entry)))
-             (goto-char (match-end 0))
-             (when (eval form)
-               (gnus-article-add-button
-                start end (nth 3 entry)
-                (buffer-substring (match-beginning (nth 4 entry))
-                                  (match-end (nth 4 entry)))))))
-         (goto-char end))))
-    (widen)))
-
-;;; External functions:
-
-(defun gnus-article-add-button (from to fun &optional data)
-  "Create a button between FROM and TO with callback FUN and data DATA."
-  (when gnus-article-button-face
-    (gnus-overlay-put (gnus-make-overlay from to)
-                     'face gnus-article-button-face))
-  (gnus-add-text-properties
-   from to
-   (nconc (and gnus-article-mouse-face
-              (list gnus-mouse-face-prop gnus-article-mouse-face))
-         (list 'gnus-callback fun)
-         (and data (list 'gnus-data data)))))
-
-;;; Internal functions:
-
-(defun gnus-article-set-globals ()
-  (save-excursion
-    (set-buffer gnus-summary-buffer)
-    (gnus-set-global-variables)))
-
-(defun gnus-signature-toggle (end)
-  (save-excursion
-    (set-buffer gnus-article-buffer)
-    (let ((buffer-read-only nil)
-         (inhibit-point-motion-hooks t))
-      (if (get-text-property end 'invisible)
-         (gnus-article-unhide-text end (point-max))
-       (gnus-article-hide-text end (point-max) gnus-hidden-properties)))))
-
-(defun gnus-button-entry ()
-  ;; Return the first entry in `gnus-button-alist' matching this place.
-  (let ((alist gnus-button-alist)
-       (entry nil))
-    (while alist
-      (setq entry (pop alist))
-      (if (looking-at (car entry))
-         (setq alist nil)
-       (setq entry nil)))
-    entry))
-
-(defun gnus-button-push (marker)
-  ;; Push button starting at MARKER.
-  (save-excursion
-    (goto-char marker)
-    (let* ((entry (gnus-button-entry))
-          (inhibit-point-motion-hooks t)
-          (fun (nth 3 entry))
-          (args (mapcar (lambda (group)
-                          (let ((string (match-string group)))
-                            (gnus-set-text-properties
-                             0 (length string) nil string)
-                            string))
-                        (nthcdr 4 entry))))
-      (cond
-       ((fboundp fun)
-       (apply fun args))
-       ((and (boundp fun)
-            (fboundp (symbol-value fun)))
-       (apply (symbol-value fun) args))
-       (t
-       (gnus-message 1 "You must define `%S' to use this button"
-                     (cons fun args)))))))
-
-(defun gnus-button-message-id (message-id)
-  "Fetch MESSAGE-ID."
-  (save-excursion
-    (set-buffer gnus-summary-buffer)
-    (gnus-summary-refer-article message-id)))
-
-(defun gnus-button-fetch-group (address)
-  "Fetch GROUP specified by ADDRESS."
-  (if (not (string-match "[:/]" address))
-      ;; This is just a simple group url.
-      (gnus-group-read-ephemeral-group address gnus-select-method)
-    (if (not (string-match "^\\([^:/]+\\)\\(:\\([^/]+\\)/\\)?\\(.*\\)$"
-                          address))
-       (error "Can't parse %s" address)
-      (gnus-group-read-ephemeral-group
-       (match-string 4 address)
-       `(nntp ,(match-string 1 address)
-             (nntp-address ,(match-string 1 address))
-             (nntp-port-number ,(if (match-end 3)
-                                    (match-string 3 address)
-                                  "nntp")))))))
-
-(defun gnus-url-parse-query-string (query &optional downcase)
-  (let (retval pairs cur key val)
-    (setq pairs (split-string query "&"))
-    (while pairs
-      (setq cur (car pairs)
-            pairs (cdr pairs))
-      (if (not (string-match "=" cur))
-          nil                           ; Grace
-        (setq key (gnus-url-unhex-string (substring cur 0 (match-beginning 0)))
-              val (gnus-url-unhex-string (substring cur (match-end 0) nil)))
-        (if downcase
-            (setq key (downcase key)))
-        (setq cur (assoc key retval))
-        (if cur
-            (setcdr cur (cons val (cdr cur)))
-          (setq retval (cons (list key val) retval)))))
-    retval))
-
-(defun gnus-url-unhex (x)
-  (if (> x ?9)
-      (if (>= x ?a)
-          (+ 10 (- x ?a))
-        (+ 10 (- x ?A)))
-    (- x ?0)))
-
-(defun gnus-url-unhex-string (str &optional allow-newlines)
-  "Remove %XXX embedded spaces, etc in a url.
-If optional second argument ALLOW-NEWLINES is non-nil, then allow the
-decoding of carriage returns and line feeds in the string, which is normally
-forbidden in URL encoding."
-  (setq str (or str ""))
-  (let ((tmp "")
-        (case-fold-search t))
-    (while (string-match "%[0-9a-f][0-9a-f]" str)
-      (let* ((start (match-beginning 0))
-             (ch1 (gnus-url-unhex (elt str (+ start 1))))
-             (code (+ (* 16 ch1)
-                      (gnus-url-unhex (elt str (+ start 2))))))
-        (setq tmp (concat
-                   tmp (substring str 0 start)
-                   (cond
-                    (allow-newlines
-                     (char-to-string code))
-                    ((or (= code ?\n) (= code ?\r))
-                     " ")
-                    (t (char-to-string code))))
-              str (substring str (match-end 0)))))
-    (setq tmp (concat tmp str))
-    tmp))
-
-(defun gnus-url-mailto (url)
-  ;; Send mail to someone
-  (when (string-match "mailto:/*\\(.*\\)" url)
-    (setq url (substring url (match-beginning 1) nil)))
-  (let (to args subject func)
-    (if (string-match (regexp-quote "?") url)
-        (setq to (gnus-url-unhex-string (substring url 0 (match-beginning 0)))
-              args (gnus-url-parse-query-string
-                    (substring url (match-end 0) nil) t))
-      (setq to (gnus-url-unhex-string url)))
-    (setq args (cons (list "to" to) args)
-          subject (cdr-safe (assoc "subject" args)))
-    (gnus-setup-message 'reply
-      (message-mail)
-      (while args
-       (setq func (intern-soft (concat "message-goto-" (downcase (caar args)))))
-       (if (fboundp func)
-           (funcall func)
-         (message-position-on-field (caar args)))
-       (insert (mapconcat 'identity (cdar args) ", "))
-       (setq args (cdr args)))
-      (if subject
-         (message-goto-body)
-       (message-goto-subject)))))
-
-(defun gnus-button-mailto (address)
-  ;; Mail to ADDRESS.
-  (set-buffer (gnus-copy-article-buffer))
-  (gnus-setup-message 'reply
-    (message-reply address)))
-
-(defun gnus-button-reply (address)
-  ;; Reply to ADDRESS.
-  (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.
-  (if (listp browse-url-browser-function)
-      (browse-url (gnus-strip-whitespace address))
-    (funcall browse-url-browser-function (gnus-strip-whitespace address))))
-
-;;; Next/prev buttons in the article buffer.
-
-(defvar gnus-next-page-line-format "%{%(Next page...%)%}\n")
-(defvar gnus-prev-page-line-format "%{%(Previous page...%)%}\n")
-
-(defvar gnus-prev-page-map nil)
-(unless gnus-prev-page-map
-  (setq gnus-prev-page-map (make-sparse-keymap))
-  (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))))
-
-(defvar gnus-next-page-map nil)
-(unless gnus-next-page-map
-  (setq gnus-next-page-map (make-keymap))
-  (suppress-keymap gnus-prev-page-map)
-  (define-key gnus-next-page-map gnus-mouse-2 'gnus-button-next-page)
-  (define-key gnus-next-page-map "\r" 'gnus-button-next-page))
-
-(defun gnus-button-next-page ()
-  "Go to the next page."
-  (interactive)
-  (let ((win (selected-window)))
-    (select-window (get-buffer-window gnus-article-buffer t))
-    (gnus-article-next-page)
-    (select-window win)))
-
-(defun gnus-button-prev-page ()
-  "Go to the prev page."
-  (interactive)
-  (let ((win (selected-window)))
-    (select-window (get-buffer-window gnus-article-buffer t))
-    (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))))
-
-(defun gnus-article-button-next-page (arg)
-  "Go to the next page."
-  (interactive "P")
-  (let ((win (selected-window)))
-    (select-window (get-buffer-window gnus-article-buffer t))
-    (gnus-article-next-page)
-    (select-window win)))
-
-(defun gnus-article-button-prev-page (arg)
-  "Go to the prev page."
-  (interactive "P")
-  (let ((win (selected-window)))
-    (select-window (get-buffer-window gnus-article-buffer t))
-    (gnus-article-prev-page)
-    (select-window win)))
-
-(defvar gnus-decode-header-methods
-  '(gnus-decode-with-mail-decode-encoded-word-region)
-  "List of methods used to decode headers.
-
-This variable is a list of FUNCTION or (REGEXP . FUNCTION). If item is
-FUNCTION, FUNCTION will be apply to all newsgroups. If item is a
-(REGEXP . FUNCTION), FUNCTION will be only apply to thes newsgroups
-whose names match REGEXP.
-
-For example:
-((\"chinese\" . gnus-decode-encoded-word-region-by-guess)
- mail-decode-encoded-word-region
- (\"chinese\" . rfc1843-decode-region))
-")
-
-(defvar gnus-decode-header-methods-cache nil)
-
-(defun gnus-decode-with-mail-decode-encoded-word-region (start end)
-  (let ((rfc2047-default-charset gnus-newsgroup-default-charset)
-       (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
-    (mail-decode-encoded-word-region start end)))
-
-(defun gnus-multi-decode-header (start end)
-  "Apply the functions from `gnus-encoded-word-methods' that match."
-  (unless (and gnus-decode-header-methods-cache
-              (eq gnus-newsgroup-name
-                  (car gnus-decode-header-methods-cache)))
-    (setq gnus-decode-header-methods-cache (list gnus-newsgroup-name))
-    (mapc '(lambda (x)
-            (if (symbolp x)
-                (nconc gnus-decode-header-methods-cache (list x))
-              (if (and gnus-newsgroup-name
-                       (string-match (car x) gnus-newsgroup-name))
-                  (nconc gnus-decode-header-methods-cache
-                         (list (cdr x))))))
-         gnus-decode-header-methods))
-  (let ((xlist gnus-decode-header-methods-cache))
-    (pop xlist)
-    (save-restriction
-      (narrow-to-region start end)
-      (while xlist
-       (funcall (pop xlist) (point-min) (point-max))))))
-
-
-;;; @ for mime-view
-;;;
-
-(defun gnus-article-header-presentation-method (entity situation)
-  (mime-insert-header entity)
-  )
-
-(set-alist 'mime-header-presentation-method-alist
-          'gnus-original-article-mode
-          #'gnus-article-header-presentation-method)
-
-(defun gnus-mime-preview-quitting-method ()
-  (if gnus-show-mime
-      (gnus-article-show-summary)
-    (mime-preview-kill-buffer)
-    (delete-other-windows)
-    (gnus-article-show-summary)
-    (gnus-summary-select-article nil t)
-    ))
-
-(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)
-
-
-;;; @ end
-;;;
-
-(gnus-ems-redefine)
-
-(provide 'gnus-art)
-
-(run-hooks 'gnus-art-load-hook)
-
-;;; gnus-art.el ends here
+;;; gnus-art.el --- article mode commands for Semi-gnus\r\r
+;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.\r\r
+\r\r
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>\r\r
+;;     MORIOKA Tomohiko <morioka@jaist.ac.jp>\r\r
+;;     Katsumi Yamaoka <yamaoka@jpl.org>\r\r
+;; Keywords: mail, news, MIME\r\r
+\r\r
+;; This file is part of GNU Emacs.\r\r
+\r\r
+;; GNU Emacs is free software; you can redistribute it and/or modify\r\r
+;; it under the terms of the GNU General Public License as published by\r\r
+;; the Free Software Foundation; either version 2, or (at your option)\r\r
+;; any later version.\r\r
+\r\r
+;; GNU Emacs is distributed in the hope that it will be useful,\r\r
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of\r\r
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the\r\r
+;; GNU General Public License for more details.\r\r
+\r\r
+;; You should have received a copy of the GNU General Public License\r\r
+;; along with GNU Emacs; see the file COPYING.  If not, write to the\r\r
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,\r\r
+;; Boston, MA 02111-1307, USA.\r\r
+\r\r
+;;; Commentary:\r\r
+\r\r
+;;; Code:\r\r
+\r\r
+(eval-when-compile (require 'cl))\r\r
+\r\r
+(require 'custom)\r\r
+(require 'gnus)\r\r
+(require 'gnus-sum)\r\r
+(require 'gnus-spec)\r\r
+(require 'gnus-int)\r\r
+(require 'browse-url)\r\r
+(require 'alist)\r\r
+(require 'mime-view)\r\r
+\r\r
+;; Avoid byte-compile warnings.\r\r
+(eval-when-compile\r\r
+  (defvar gnus-article-decoded-p)\r\r
+  (defvar gnus-article-mime-handles)\r\r
+  (require 'mm-bodies)\r\r
+  (require 'mail-parse)\r\r
+  (require 'mm-decode)\r\r
+  (require 'mm-view)\r\r
+  (require 'wid-edit)\r\r
+  (require 'mm-uu)\r\r
+  )\r\r
+\r\r
+(defgroup gnus-article nil\r\r
+  "Article display."\r\r
+  :link '(custom-manual "(gnus)The Article Buffer")\r\r
+  :group 'gnus)\r\r
+\r\r
+(defgroup gnus-article-hiding nil\r\r
+  "Hiding article parts."\r\r
+  :link '(custom-manual "(gnus)Article Hiding")\r\r
+  :group 'gnus-article)\r\r
+\r\r
+(defgroup gnus-article-highlight nil\r\r
+  "Article highlighting."\r\r
+  :link '(custom-manual "(gnus)Article Highlighting")\r\r
+  :group 'gnus-article\r\r
+  :group 'gnus-visual)\r\r
+\r\r
+(defgroup gnus-article-signature nil\r\r
+  "Article signatures."\r\r
+  :link '(custom-manual "(gnus)Article Signature")\r\r
+  :group 'gnus-article)\r\r
+\r\r
+(defgroup gnus-article-headers nil\r\r
+  "Article headers."\r\r
+  :link '(custom-manual "(gnus)Hiding Headers")\r\r
+  :group 'gnus-article)\r\r
+\r\r
+(defgroup gnus-article-washing nil\r\r
+  "Special commands on articles."\r\r
+  :link '(custom-manual "(gnus)Article Washing")\r\r
+  :group 'gnus-article)\r\r
+\r\r
+(defgroup gnus-article-emphasis nil\r\r
+  "Fontisizing articles."\r\r
+  :link '(custom-manual "(gnus)Article Fontisizing")\r\r
+  :group 'gnus-article)\r\r
+\r\r
+(defgroup gnus-article-saving nil\r\r
+  "Saving articles."\r\r
+  :link '(custom-manual "(gnus)Saving Articles")\r\r
+  :group 'gnus-article)\r\r
+\r\r
+(defgroup gnus-article-mime nil\r\r
+  "Worshiping the MIME wonder."\r\r
+  :link '(custom-manual "(gnus)Using MIME")\r\r
+  :group 'gnus-article)\r\r
+\r\r
+(defgroup gnus-article-buttons nil\r\r
+  "Pushable buttons in the article buffer."\r\r
+  :link '(custom-manual "(gnus)Article Buttons")\r\r
+  :group 'gnus-article)\r\r
+\r\r
+(defgroup gnus-article-various nil\r\r
+  "Other article options."\r\r
+  :link '(custom-manual "(gnus)Misc Article")\r\r
+  :group 'gnus-article)\r\r
+\r\r
+(defcustom gnus-ignored-headers\r\r
+  '("^Path:" "^Expires:" "^Date-Received:" "^References:" "^Xref:" "^Lines:"\r\r
+    "^Relay-Version:" "^Message-ID:" "^Approved:" "^Sender:" "^Received:"\r\r
+    "^X-UIDL:" "^MIME-Version:" "^Return-Path:" "^In-Reply-To:"\r\r
+    "^Content-Type:" "^Content-Transfer-Encoding:" "^X-WebTV-Signature:"\r\r
+    "^X-MimeOLE:" "^X-MSMail-Priority:" "^X-Priority:" "^X-Loop:"\r\r
+    "^X-Authentication-Warning:" "^X-MIME-Autoconverted:" "^X-Face:"\r\r
+    "^X-Attribution:" "^X-Originating-IP:" "^Delivered-To:"\r\r
+    "^NNTP-[-A-Za-z]+:" "^Distribution:" "^X-no-archive:" "^X-Trace:"\r\r
+    "^X-Complaints-To:" "^X-NNTP-Posting-Host:" "^X-Orig.*:"\r\r
+    "^Abuse-Reports-To:" "^Cache-Post-Path:" "^X-Article-Creation-Date:"\r\r
+    "^X-Poster:" "^X-Mail2News-Path:" "^X-Server-Date:" "^X-Cache:"\r\r
+    "^Originator:" "^X-Problems-To:" "^X-Auth-User:" "^X-Post-Time:"\r\r
+    "^X-Admin:" "^X-UID:" "^Resent-[-A-Za-z]+:" "^X-Mailing-List:"\r\r
+    "^Precedence:" "^Original-[-A-Za-z]+:" "^X-filename:" "^X-Orcpt:"\r\r
+    "^Old-Received:" "^X-Pgp-Fingerprint:" "^X-Pgp-Key-Id:"\r\r
+    "^X-Pgp-Public-Key-Url:" "^X-Auth:" "^X-From-Line:"\r\r
+    "^X-Gnus-Article-Number:" "^X-Majordomo:" "^X-Url:" "^X-Sender:"\r\r
+    "^X-Mailing-List:" "^MBOX-Line" "^Priority:" "^X-Pgp" "^X400-[-A-Za-z]+:"\r\r
+    "^Status:")\r\r
+  "*All headers that start with this regexp will be hidden.\r\r
+This variable can also be a list of regexps of headers to be ignored.\r\r
+If `gnus-visible-headers' is non-nil, this variable will be ignored."\r\r
+  :type '(choice :custom-show nil\r\r
+                regexp\r\r
+                (repeat regexp))\r\r
+  :group 'gnus-article-hiding)\r\r
+\r\r
+(defcustom gnus-visible-headers\r\r
+  "From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^\\(Mail-\\)?Followup-To:\\|^\\(Mail-\\)?Reply-To:\\|^Mail-Copies-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^Posted-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-From:\\|X-Sent:"\r\r
+  "*All headers that do not match this regexp will be hidden.\r\r
+This variable can also be a list of regexp of headers to remain visible.\r\r
+If this variable is non-nil, `gnus-ignored-headers' will be ignored."\r\r
+  :type '(repeat :value-to-internal (lambda (widget value)\r\r
+                                     (custom-split-regexp-maybe value))\r\r
+                :match (lambda (widget value)\r\r
+                         (or (stringp value)\r\r
+                             (widget-editable-list-match widget value)))\r\r
+                regexp)\r\r
+  :group 'gnus-article-hiding)\r\r
+\r\r
+(defcustom gnus-sorted-header-list\r\r
+  '("^From:" "^Subject:" "^Summary:" "^Keywords:" "^Newsgroups:"\r\r
+    "^Followup-To:" "^To:" "^Cc:" "^Date:" "^Organization:")\r\r
+  "*This variable is a list of regular expressions.\r\r
+If it is non-nil, headers that match the regular expressions will\r\r
+be placed first in the article buffer in the sequence specified by\r\r
+this list."\r\r
+  :type '(repeat regexp)\r\r
+  :group 'gnus-article-hiding)\r\r
+\r\r
+(defcustom gnus-boring-article-headers '(empty followup-to reply-to)\r\r
+  "Headers that are only to be displayed if they have interesting data.\r\r
+Possible values in this list are `empty', `newsgroups', `followup-to',\r\r
+`reply-to', `date', `long-to', and `many-to'."\r\r
+  :type '(set (const :tag "Headers with no content." empty)\r\r
+             (const :tag "Newsgroups with only one group." newsgroups)\r\r
+             (const :tag "Followup-to identical to newsgroups." followup-to)\r\r
+             (const :tag "Reply-to identical to from." reply-to)\r\r
+             (const :tag "Date less than four days old." date)\r\r
+             (const :tag "Very long To header." long-to)\r\r
+             (const :tag "Multiple To headers." many-to))\r\r
+  :group 'gnus-article-hiding)\r\r
+\r\r
+(defcustom gnus-signature-separator '("^-- $" "^-- *$")\r\r
+  "Regexp matching signature separator.\r\r
+This can also be a list of regexps.  In that case, it will be checked\r\r
+from head to tail looking for a separator.  Searches will be done from\r\r
+the end of the buffer."\r\r
+  :type '(repeat string)\r\r
+  :group 'gnus-article-signature)\r\r
+\r\r
+(defcustom gnus-signature-limit nil\r\r
+   "Provide a limit to what is considered a signature.\r\r
+If it is a number, no signature may not be longer (in characters) than\r\r
+that number.  If it is a floating point number, no signature may be\r\r
+longer (in lines) than that number.  If it is a function, the function\r\r
+will be called without any parameters, and if it returns nil, there is\r\r
+no signature in the buffer.  If it is a string, it will be used as a\r\r
+regexp.  If it matches, the text in question is not a signature."\r\r
+  :type '(choice (integer :value 200)\r\r
+                (number :value 4.0)\r\r
+                (function :value fun)\r\r
+                (regexp :value ".*"))\r\r
+  :group 'gnus-article-signature)\r\r
+\r\r
+(defcustom gnus-hidden-properties '(invisible t intangible t)\r\r
+  "Property list to use for hiding text."\r\r
+  :type 'sexp\r\r
+  :group 'gnus-article-hiding)\r\r
+\r\r
+(defcustom gnus-article-x-face-command\r\r
+  "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | xv -quit -"\r\r
+  "*String or function to be executed to display an X-Face header.\r\r
+If it is a string, the command will be executed in a sub-shell\r\r
+asynchronously.         The compressed face will be piped to this command."\r\r
+  :type 'string                                ;Leave function case to Lisp.\r\r
+  :group 'gnus-article-washing)\r\r
+\r\r
+(defcustom gnus-article-x-face-too-ugly nil\r\r
+  "Regexp matching posters whose face shouldn't be shown automatically."\r\r
+  :type '(choice regexp (const nil))\r\r
+  :group 'gnus-article-washing)\r\r
+\r\r
+(defcustom gnus-emphasis-alist\r\r
+  (let ((format\r\r
+        "\\(\\s-\\|^\\|[-\"]\\|\\s(\\|\\s)\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\\(\\s-\\|[-?!.,;:\"]\\|\\s(\\|\\s)\\)")\r\r
+       (types\r\r
+        '(("_" "_" underline)\r\r
+          ("/" "/" italic)\r\r
+          ("\\*" "\\*" bold)\r\r
+          ("_/" "/_" underline-italic)\r\r
+          ("_\\*" "\\*_" underline-bold)\r\r
+          ("\\*/" "/\\*" bold-italic)\r\r
+          ("_\\*/" "/\\*_" underline-bold-italic))))\r\r
+    `(("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_[^_]\\)+\\)_\\)\\(\\s-\\|[?!.,;]\\)"\r\r
+       2 3 gnus-emphasis-underline)\r\r
+      ,@(mapcar\r\r
+        (lambda (spec)\r\r
+          (list\r\r
+           (format format (car spec) (cadr spec))\r\r
+           2 3 (intern (format "gnus-emphasis-%s" (nth 2 spec)))))\r\r
+        types)))\r\r
+  "*Alist that says how to fontify certain phrases.\r\r
+Each item looks like this:\r\r
+\r\r
+  (\"_\\\\(\\\\w+\\\\)_\" 0 1 'underline)\r\r
+\r\r
+The first element is a regular expression to be matched.  The second\r\r
+is a number that says what regular expression grouping used to find\r\r
+the entire emphasized word.  The third is a number that says what\r\r
+regexp grouping should be displayed and highlighted.  The fourth\r\r
+is the face used for highlighting."\r\r
+  :type '(repeat (list :value ("" 0 0 default)\r\r
+                      regexp\r\r
+                      (integer :tag "Match group")\r\r
+                      (integer :tag "Emphasize group")\r\r
+                      face))\r\r
+  :group 'gnus-article-emphasis)\r\r
+\r\r
+(defface gnus-emphasis-bold '((t (:bold t)))\r\r
+  "Face used for displaying strong emphasized text (*word*)."\r\r
+  :group 'gnus-article-emphasis)\r\r
+\r\r
+(defface gnus-emphasis-italic '((t (:italic t)))\r\r
+  "Face used for displaying italic emphasized text (/word/)."\r\r
+  :group 'gnus-article-emphasis)\r\r
+\r\r
+(defface gnus-emphasis-underline '((t (:underline t)))\r\r
+  "Face used for displaying underlined emphasized text (_word_)."\r\r
+  :group 'gnus-article-emphasis)\r\r
+\r\r
+(defface gnus-emphasis-underline-bold '((t (:bold t :underline t)))\r\r
+  "Face used for displaying underlined bold emphasized text (_*word*_)."\r\r
+  :group 'gnus-article-emphasis)\r\r
+\r\r
+(defface gnus-emphasis-underline-italic '((t (:italic t :underline t)))\r\r
+  "Face used for displaying underlined italic emphasized text (_*word*_)."\r\r
+  :group 'gnus-article-emphasis)\r\r
+\r\r
+(defface gnus-emphasis-bold-italic '((t (:bold t :italic t)))\r\r
+  "Face used for displaying bold italic emphasized text (/*word*/)."\r\r
+  :group 'gnus-article-emphasis)\r\r
+\r\r
+(defface gnus-emphasis-underline-bold-italic\r\r
+  '((t (:bold t :italic t :underline t)))\r\r
+  "Face used for displaying underlined bold italic emphasized text.\r\r
+Esample: (_/*word*/_)."\r\r
+  :group 'gnus-article-emphasis)\r\r
+\r\r
+(defcustom gnus-article-time-format "%a, %b %d %Y %T %Z"\r\r
+  "Format for display of Date headers in article bodies.\r\r
+See `format-time-string' for the possible values.\r\r
+\r\r
+The variable can also be function, which should return a complete Date\r\r
+header.  The function is called with one argument, the time, which can\r\r
+be fed to `format-time-string'."\r\r
+  :type '(choice string symbol)\r\r
+  :link '(custom-manual "(gnus)Article Date")\r\r
+  :group 'gnus-article-washing)\r\r
+\r\r
+(eval-and-compile\r\r
+  (autoload 'mail-extract-address-components "mail-extr"))\r\r
+\r\r
+(defcustom gnus-save-all-headers t\r\r
+  "*If non-nil, don't remove any headers before saving."\r\r
+  :group 'gnus-article-saving\r\r
+  :type 'boolean)\r\r
+\r\r
+(defcustom gnus-prompt-before-saving 'always\r\r
+  "*This variable says how much prompting is to be done when saving articles.\r\r
+If it is nil, no prompting will be done, and the articles will be\r\r
+saved to the default files.  If this variable is `always', each and\r\r
+every article that is saved will be preceded by a prompt, even when\r\r
+saving large batches of articles.  If this variable is neither nil not\r\r
+`always', there the user will be prompted once for a file name for\r\r
+each invocation of the saving commands."\r\r
+  :group 'gnus-article-saving\r\r
+  :type '(choice (item always)\r\r
+                (item :tag "never" nil)\r\r
+                (sexp :tag "once" :format "%t\n" :value t)))\r\r
+\r\r
+(defcustom gnus-saved-headers gnus-visible-headers\r\r
+  "Headers to keep if `gnus-save-all-headers' is nil.\r\r
+If `gnus-save-all-headers' is non-nil, this variable will be ignored.\r\r
+If that variable is nil, however, all headers that match this regexp\r\r
+will be kept while the rest will be deleted before saving."\r\r
+  :group 'gnus-article-saving\r\r
+  :type 'regexp)\r\r
+\r\r
+(defcustom gnus-default-article-saver 'gnus-summary-save-in-rmail\r\r
+  "A function to save articles in your favourite format.\r\r
+The function must be interactively callable (in other words, it must\r\r
+be an Emacs command).\r\r
+\r\r
+Gnus provides the following functions:\r\r
+\r\r
+* gnus-summary-save-in-rmail (Rmail format)\r\r
+* gnus-summary-save-in-mail (Unix mail format)\r\r
+* gnus-summary-save-in-folder (MH folder)\r\r
+* gnus-summary-save-in-file (article format)\r\r
+* gnus-summary-save-in-vm (use VM's folder format)\r\r
+* gnus-summary-write-to-file (article format -- overwrite)."\r\r
+  :group 'gnus-article-saving\r\r
+  :type '(radio (function-item gnus-summary-save-in-rmail)\r\r
+               (function-item gnus-summary-save-in-mail)\r\r
+               (function-item gnus-summary-save-in-folder)\r\r
+               (function-item gnus-summary-save-in-file)\r\r
+               (function-item gnus-summary-save-in-vm)\r\r
+               (function-item gnus-summary-write-to-file)))\r\r
+\r\r
+(defcustom gnus-rmail-save-name 'gnus-plain-save-name\r\r
+  "A function generating a file name to save articles in Rmail format.\r\r
+The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE."\r\r
+  :group 'gnus-article-saving\r\r
+  :type 'function)\r\r
+\r\r
+(defcustom gnus-mail-save-name 'gnus-plain-save-name\r\r
+  "A function generating a file name to save articles in Unix mail format.\r\r
+The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE."\r\r
+  :group 'gnus-article-saving\r\r
+  :type 'function)\r\r
+\r\r
+(defcustom gnus-folder-save-name 'gnus-folder-save-name\r\r
+  "A function generating a file name to save articles in MH folder.\r\r
+The function is called with NEWSGROUP, HEADERS, and optional LAST-FOLDER."\r\r
+  :group 'gnus-article-saving\r\r
+  :type 'function)\r\r
+\r\r
+(defcustom gnus-file-save-name 'gnus-numeric-save-name\r\r
+  "A function generating a file name to save articles in article format.\r\r
+The function is called with NEWSGROUP, HEADERS, and optional\r\r
+LAST-FILE."\r\r
+  :group 'gnus-article-saving\r\r
+  :type 'function)\r\r
+\r\r
+(defcustom gnus-split-methods\r\r
+  '((gnus-article-archive-name)\r\r
+    (gnus-article-nndoc-name))\r\r
+  "*Variable used to suggest where articles are to be saved.\r\r
+For instance, if you would like to save articles related to Gnus in\r\r
+the file \"gnus-stuff\", and articles related to VM in \"vm-stuff\",\r\r
+you could set this variable to something like:\r\r
+\r\r
+ '((\"^Subject:.*gnus\\|^Newsgroups:.*gnus\" \"gnus-stuff\")\r\r
+   (\"^Subject:.*vm\\|^Xref:.*vm\" \"vm-stuff\"))\r\r
+\r\r
+This variable is an alist where the where the key is the match and the\r\r
+value is a list of possible files to save in if the match is non-nil.\r\r
+\r\r
+If the match is a string, it is used as a regexp match on the\r\r
+article.  If the match is a symbol, that symbol will be funcalled\r\r
+from the buffer of the article to be saved with the newsgroup as the\r\r
+parameter.  If it is a list, it will be evaled in the same buffer.\r\r
+\r\r
+If this form or function returns a string, this string will be used as\r\r
+a possible file name; and if it returns a non-nil list, that list will\r\r
+be used as possible file names."\r\r
+  :group 'gnus-article-saving\r\r
+  :type '(repeat (choice (list :value (fun) function)\r\r
+                        (cons :value ("" "") regexp (repeat string))\r\r
+                        (sexp :value nil))))\r\r
+\r\r
+(defcustom gnus-article-display-method-for-mime\r\r
+  'gnus-article-display-mime-message\r\r
+  "Function to display a MIME message.\r\r
+The function is called from the article buffer."\r\r
+  :group 'gnus-article-mime\r\r
+  :type 'function)\r\r
+\r\r
+(defcustom gnus-article-display-method-for-traditional\r\r
+  'gnus-article-display-traditional-message\r\r
+  "*Function to display a traditional message.\r\r
+The function is called from the article buffer."\r\r
+  :group 'gnus-article-mime\r\r
+  :type 'function)\r\r
+\r\r
+(defcustom gnus-page-delimiter "^\^L"\r\r
+  "*Regexp describing what to use as article page delimiters.\r\r
+The default value is \"^\^L\", which is a form linefeed at the\r\r
+beginning of a line."\r\r
+  :type 'regexp\r\r
+  :group 'gnus-article-various)\r\r
+\r\r
+(defcustom gnus-article-mode-line-format "Gnus: %g %S%m"\r\r
+  "*The format specification for the article mode line.\r\r
+See `gnus-summary-mode-line-format' for a closer description.\r\r
+\r\r
+The following additional specs are available:\r\r
+\r\r
+%w  The article washing status.\r\r
+%m  The number of MIME parts in the article."\r\r
+  :type 'string\r\r
+  :group 'gnus-article-various)\r\r
+\r\r
+(defcustom gnus-article-mode-hook nil\r\r
+  "*A hook for Gnus article mode."\r\r
+  :type 'hook\r\r
+  :group 'gnus-article-various)\r\r
+\r\r
+(defcustom gnus-article-menu-hook nil\r\r
+  "*Hook run after the creation of the article mode menu."\r\r
+  :type 'hook\r\r
+  :group 'gnus-article-various)\r\r
+\r\r
+(defcustom gnus-article-prepare-hook nil\r\r
+  "*A hook called after an article has been prepared in the article buffer.\r\r
+If you want to run a special decoding program like nkf, use this hook."\r\r
+  :type 'hook\r\r
+  :group 'gnus-article-various)\r\r
+\r\r
+(defcustom gnus-article-hide-pgp-hook nil\r\r
+  "*A hook called after successfully hiding a PGP signature."\r\r
+  :type 'hook\r\r
+  :group 'gnus-article-various)\r\r
+\r\r
+(defcustom gnus-article-button-face 'bold\r\r
+  "Face used for highlighting buttons in the article buffer.\r\r
+\r\r
+An article button is a piece of text that you can activate by pressing\r\r
+`RET' or `mouse-2' above it."\r\r
+  :type 'face\r\r
+  :group 'gnus-article-buttons)\r\r
+\r\r
+(defcustom gnus-article-mouse-face 'highlight\r\r
+  "Face used for mouse highlighting in the article buffer.\r\r
+\r\r
+Article buttons will be displayed in this face when the cursor is\r\r
+above them."\r\r
+  :type 'face\r\r
+  :group 'gnus-article-buttons)\r\r
+\r\r
+(defcustom gnus-signature-face 'gnus-signature-face\r\r
+  "Face used for highlighting a signature in the article buffer.\r\r
+Obsolete; use the face `gnus-signature-face' for customizations instead."\r\r
+  :type 'face\r\r
+  :group 'gnus-article-highlight\r\r
+  :group 'gnus-article-signature)\r\r
+\r\r
+(defface gnus-signature-face\r\r
+  '((((type x))\r\r
+     (:italic t)))\r\r
+  "Face used for highlighting a signature in the article buffer."\r\r
+  :group 'gnus-article-highlight\r\r
+  :group 'gnus-article-signature)\r\r
+\r\r
+(defface gnus-header-from-face\r\r
+  '((((class color)\r\r
+      (background dark))\r\r
+     (:foreground "spring green"))\r\r
+    (((class color)\r\r
+      (background light))\r\r
+     (:foreground "red3"))\r\r
+    (t\r\r
+     (:italic t)))\r\r
+  "Face used for displaying from headers."\r\r
+  :group 'gnus-article-headers\r\r
+  :group 'gnus-article-highlight)\r\r
+\r\r
+(defface gnus-header-subject-face\r\r
+  '((((class color)\r\r
+      (background dark))\r\r
+     (:foreground "SeaGreen3"))\r\r
+    (((class color)\r\r
+      (background light))\r\r
+     (:foreground "red4"))\r\r
+    (t\r\r
+     (:bold t :italic t)))\r\r
+  "Face used for displaying subject headers."\r\r
+  :group 'gnus-article-headers\r\r
+  :group 'gnus-article-highlight)\r\r
+\r\r
+(defface gnus-header-newsgroups-face\r\r
+  '((((class color)\r\r
+      (background dark))\r\r
+     (:foreground "yellow" :italic t))\r\r
+    (((class color)\r\r
+      (background light))\r\r
+     (:foreground "MidnightBlue" :italic t))\r\r
+    (t\r\r
+     (:italic t)))\r\r
+  "Face used for displaying newsgroups headers."\r\r
+  :group 'gnus-article-headers\r\r
+  :group 'gnus-article-highlight)\r\r
+\r\r
+(defface gnus-header-name-face\r\r
+  '((((class color)\r\r
+      (background dark))\r\r
+     (:foreground "SeaGreen"))\r\r
+    (((class color)\r\r
+      (background light))\r\r
+     (:foreground "maroon"))\r\r
+    (t\r\r
+     (:bold t)))\r\r
+  "Face used for displaying header names."\r\r
+  :group 'gnus-article-headers\r\r
+  :group 'gnus-article-highlight)\r\r
+\r\r
+(defface gnus-header-content-face\r\r
+  '((((class color)\r\r
+      (background dark))\r\r
+     (:foreground "forest green" :italic t))\r\r
+    (((class color)\r\r
+      (background light))\r\r
+     (:foreground "indianred4" :italic t))\r\r
+    (t\r\r
+     (:italic t)))  "Face used for displaying header content."\r\r
+  :group 'gnus-article-headers\r\r
+  :group 'gnus-article-highlight)\r\r
+\r\r
+(defcustom gnus-header-face-alist\r\r
+  '(("From" nil gnus-header-from-face)\r\r
+    ("Subject" nil gnus-header-subject-face)\r\r
+    ("Newsgroups:.*," nil gnus-header-newsgroups-face)\r\r
+    ("" gnus-header-name-face gnus-header-content-face))\r\r
+  "*Controls highlighting of article header.\r\r
+\r\r
+An alist of the form (HEADER NAME CONTENT).\r\r
+\r\r
+HEADER is a regular expression which should match the name of an\r\r
+header header and NAME and CONTENT are either face names or nil.\r\r
+\r\r
+The name of each header field will be displayed using the face\r\r
+specified by the first element in the list where HEADER match the\r\r
+header name and NAME is non-nil.  Similarly, the content will be\r\r
+displayed by the first non-nil matching CONTENT face."\r\r
+  :group 'gnus-article-headers\r\r
+  :group 'gnus-article-highlight\r\r
+  :type '(repeat (list (regexp :tag "Header")\r\r
+                      (choice :tag "Name"\r\r
+                              (item :tag "skip" nil)\r\r
+                              (face :value default))\r\r
+                      (choice :tag "Content"\r\r
+                              (item :tag "skip" nil)\r\r
+                              (face :value default)))))\r\r
+\r\r
+(defcustom gnus-article-decode-hook nil\r\r
+  "*Hook run to decode charsets in articles."\r\r
+  :group 'gnus-article-headers\r\r
+  :type 'hook)\r\r
+\r\r
+(defcustom gnus-display-mime-function 'gnus-display-mime\r\r
+  "Function to display MIME articles."\r\r
+  :group 'gnus-article-mime\r\r
+  :type 'function)\r\r
+\r\r
+(defvar gnus-decode-header-function 'mail-decode-encoded-word-region\r\r
+  "Function used to decode headers.")\r\r
+\r\r
+(defvar gnus-article-dumbquotes-map\r\r
+  '(("\202" ",")\r\r
+    ("\203" "f")\r\r
+    ("\204" ",,")\r\r
+    ("\205" "...")\r\r
+    ("\213" "<")\r\r
+    ("\214" "OE")\r\r
+    ("\205" "...")\r\r
+    ("\221" "`")\r\r
+    ("\222" "'")\r\r
+    ("\223" "``")\r\r
+    ("\224" "''")\r\r
+    ("\225" "*")\r\r
+    ("\226" "-")\r\r
+    ("\227" "-")\r\r
+    ("\231" "(TM)")\r\r
+    ("\233" ">")\r\r
+    ("\234" "oe")\r\r
+    ("\264" "'"))\r\r
+  "Table for MS-to-Latin1 translation.")\r\r
+\r\r
+(defcustom gnus-ignored-mime-types nil\r\r
+  "List of MIME types that should be ignored by Gnus."\r\r
+  :group 'gnus-article-mime\r\r
+  :type '(repeat regexp))\r\r
+\r\r
+(defcustom gnus-unbuttonized-mime-types '(".*/.*")\r\r
+  "List of MIME types that should not be given buttons when rendered."\r\r
+  :group 'gnus-article-mime\r\r
+  :type '(repeat regexp))\r\r
+\r\r
+(defcustom gnus-treat-body-highlight-signature t\r\r
+  "Highlight the signature."\r\r
+  :group 'gnus-article\r\r
+  :type '(choice (const :tag "Off" nil)\r\r
+                (const :tag "On" t)\r\r
+                (const :tag "Last" last)\r\r
+                (integer :tag "Less")\r\r
+                (sexp :tag "Predicate")))\r\r
+\r\r
+(defcustom gnus-article-mime-part-function nil\r\r
+  "Function called with a MIME handle as the argument."\r\r
+  :group 'gnus-article-mime\r\r
+  :type 'function)\r\r
+\r\r
+;;; Internal variables\r\r
+\r\r
+(defvar gnus-article-mime-handle-alist-1 nil)\r\r
+(defvar gnus-treatment-function-alist\r\r
+  '((gnus-treat-body-highlight-signature gnus-article-highlight-signature nil)\r\r
+    ))\r\r
+\r\r
+(defvar gnus-article-mime-handle-alist nil)\r\r
+(defvar article-lapsed-timer nil)\r\r
+(defvar gnus-article-current-summary nil)\r\r
+\r\r
+(defvar gnus-article-mode-syntax-table\r\r
+  (let ((table (copy-syntax-table text-mode-syntax-table)))\r\r
+    (modify-syntax-entry ?- "w" table)\r\r
+    (modify-syntax-entry ?> ")" table)\r\r
+    (modify-syntax-entry ?< "(" table)\r\r
+    table)\r\r
+  "Syntax table used in article mode buffers.\r\r
+Initialized from `text-mode-syntax-table.")\r\r
+\r\r
+(defvar gnus-save-article-buffer nil)\r\r
+\r\r
+(defvar gnus-article-mode-line-format-alist\r\r
+  (nconc '((?w (gnus-article-wash-status) ?s)\r\r
+          (?m (gnus-article-mime-part-status) ?s))\r\r
+        gnus-summary-mode-line-format-alist))\r\r
+\r\r
+(defvar gnus-number-of-articles-to-be-saved nil)\r\r
+\r\r
+(defvar gnus-inhibit-hiding nil)\r\r
+\r\r
+(defsubst gnus-article-hide-text (b e props)\r\r
+  "Set text PROPS on the B to E region, extending `intangible' 1 past B."\r\r
+  (add-text-properties b e props)\r\r
+  (when (memq 'intangible props)\r\r
+    (put-text-property\r\r
+     (max (1- b) (point-min))\r\r
+     b 'intangible (cddr (memq 'intangible props)))))\r\r
+\r\r
+(defmacro gnus-with-article (article &rest forms)\r\r
+  "Select ARTICLE and perform FORMS in the original article buffer.\r\r
+Then replace the article with the result."\r\r
+  `(progn\r\r
+     ;; We don't want the article to be marked as read.\r\r
+     (let (gnus-mark-article-hook)\r\r
+       (gnus-summary-select-article t t nil ,article))\r\r
+     (set-buffer gnus-original-article-buffer)\r\r
+     ,@forms\r\r
+     (if (not (gnus-check-backend-function\r\r
+              'request-replace-article (car gnus-article-current)))\r\r
+        (gnus-message 5 "Read-only group; not replacing")\r\r
+       (unless (gnus-request-replace-article\r\r
+               ,article (car gnus-article-current)\r\r
+               (current-buffer) t)\r\r
+        (error "Couldn't replace article")))\r\r
+     ;; The cache and backlog have to be flushed somewhat.\r\r
+     (when gnus-keep-backlog\r\r
+       (gnus-backlog-remove-article\r\r
+       (car gnus-article-current) (cdr gnus-article-current)))\r\r
+     (when gnus-use-cache\r\r
+       (gnus-cache-update-article\r\r
+       (car gnus-article-current) (cdr gnus-article-current)))))\r\r
+\r\r
+(put 'gnus-with-article 'lisp-indent-function 1)\r\r
+(put 'gnus-with-article 'edebug-form-spec '(form body))\r\r
+\r\r
+(defsubst gnus-article-unhide-text (b e)\r\r
+  "Remove hidden text properties from region between B and E."\r\r
+  (remove-text-properties b e gnus-hidden-properties)\r\r
+  (when (memq 'intangible gnus-hidden-properties)\r\r
+    (put-text-property (max (1- b) (point-min))\r\r
+                      b 'intangible nil)))\r\r
+\r\r
+(defun gnus-article-hide-text-type (b e type)\r\r
+  "Hide text of TYPE between B and E."\r\r
+  (gnus-article-hide-text\r\r
+   b e (cons 'article-type (cons type gnus-hidden-properties))))\r\r
+\r\r
+(defun gnus-article-unhide-text-type (b e type)\r\r
+  "Unhide text of TYPE between B and E."\r\r
+  (remove-text-properties\r\r
+   b e (cons 'article-type (cons type gnus-hidden-properties)))\r\r
+  (when (memq 'intangible gnus-hidden-properties)\r\r
+    (put-text-property (max (1- b) (point-min))\r\r
+                      b 'intangible nil)))\r\r
+\r\r
+(defun gnus-article-hide-text-of-type (type)\r\r
+  "Hide text of TYPE in the current buffer."\r\r
+  (save-excursion\r\r
+    (let ((b (point-min))\r\r
+         (e (point-max)))\r\r
+      (while (setq b (text-property-any b e 'article-type type))\r\r
+       (add-text-properties b (incf b) gnus-hidden-properties)))))\r\r
+\r\r
+(defun gnus-article-delete-text-of-type (type)\r\r
+  "Delete text of TYPE in the current buffer."\r\r
+  (save-excursion\r\r
+    (let ((b (point-min)))\r\r
+      (while (setq b (text-property-any b (point-max) 'article-type type))\r\r
+       (delete-region\r\r
+        b (or (text-property-not-all b (point-max) 'article-type type)\r\r
+              (point-max)))))))\r\r
+\r\r
+(defun gnus-article-delete-invisible-text ()\r\r
+  "Delete all invisible text in the current buffer."\r\r
+  (save-excursion\r\r
+    (let ((b (point-min)))\r\r
+      (while (setq b (text-property-any b (point-max) 'invisible t))\r\r
+       (delete-region\r\r
+        b (or (text-property-not-all b (point-max) 'invisible t)\r\r
+              (point-max)))))))\r\r
+\r\r
+(defun gnus-article-text-type-exists-p (type)\r\r
+  "Say whether any text of type TYPE exists in the buffer."\r\r
+  (text-property-any (point-min) (point-max) 'article-type type))\r\r
+\r\r
+(defsubst gnus-article-header-rank ()\r\r
+  "Give the rank of the string HEADER as given by `gnus-sorted-header-list'."\r\r
+  (let ((list gnus-sorted-header-list)\r\r
+       (i 0))\r\r
+    (while list\r\r
+      (when (looking-at (car list))\r\r
+       (setq list nil))\r\r
+      (setq list (cdr list))\r\r
+      (incf i))\r\r
+    i))\r\r
+\r\r
+(defun article-hide-headers (&optional arg delete)\r\r
+  "Toggle whether to hide unwanted headers and possibly sort them as well.\r\r
+If given a negative prefix, always show; if given a positive prefix,\r\r
+always hide."\r\r
+  (interactive (gnus-article-hidden-arg))\r\r
+  (current-buffer)\r\r
+  (if (gnus-article-check-hidden-text 'headers arg)\r\r
+      ;; Show boring headers as well.\r\r
+      (gnus-article-show-hidden-text 'boring-headers)\r\r
+    ;; This function might be inhibited.\r\r
+    (unless gnus-inhibit-hiding\r\r
+      (save-excursion\r\r
+       (save-restriction\r\r
+         (let ((buffer-read-only nil)\r\r
+               (case-fold-search t)\r\r
+               (props (nconc (list 'article-type 'headers)\r\r
+                             gnus-hidden-properties))\r\r
+               (max (1+ (length gnus-sorted-header-list)))\r\r
+               (ignored (when (not gnus-visible-headers)\r\r
+                          (cond ((stringp gnus-ignored-headers)\r\r
+                                 gnus-ignored-headers)\r\r
+                                ((listp gnus-ignored-headers)\r\r
+                                 (mapconcat 'identity gnus-ignored-headers\r\r
+                                            "\\|")))))\r\r
+               (visible\r\r
+                (cond ((stringp gnus-visible-headers)\r\r
+                       gnus-visible-headers)\r\r
+                      ((and gnus-visible-headers\r\r
+                            (listp gnus-visible-headers))\r\r
+                       (mapconcat 'identity gnus-visible-headers "\\|"))))\r\r
+               (inhibit-point-motion-hooks t)\r\r
+               beg)\r\r
+           ;; First we narrow to just the headers.\r\r
+           (widen)\r\r
+           (goto-char (point-min))\r\r
+           ;; Hide any "From " lines at the beginning of (mail) articles.\r\r
+           (while (looking-at "From ")\r\r
+             (forward-line 1))\r\r
+           (unless (bobp)\r\r
+             (if delete\r\r
+                 (delete-region (point-min) (point))\r\r
+               (gnus-article-hide-text (point-min) (point) props)))\r\r
+           ;; Then treat the rest of the header lines.\r\r
+           (narrow-to-region\r\r
+            (point)\r\r
+            (if (search-forward "\n\n" nil t) ; if there's a body\r\r
+                (progn (forward-line -1) (point))\r\r
+              (point-max)))\r\r
+           ;; Then we use the two regular expressions\r\r
+           ;; `gnus-ignored-headers' and `gnus-visible-headers' to\r\r
+           ;; select which header lines is to remain visible in the\r\r
+           ;; article buffer.\r\r
+           (goto-char (point-min))\r\r
+           (while (re-search-forward "^[^ \t]*:" nil t)\r\r
+             (beginning-of-line)\r\r
+             ;; Mark the rank of the header.\r\r
+             (put-text-property\r\r
+              (point) (1+ (point)) 'message-rank\r\r
+              (if (or (and visible (looking-at visible))\r\r
+                      (and ignored\r\r
+                           (not (looking-at ignored))))\r\r
+                  (gnus-article-header-rank)\r\r
+                (+ 2 max)))\r\r
+             (forward-line 1))\r\r
+           (message-sort-headers-1)\r\r
+           (when (setq beg (text-property-any\r\r
+                            (point-min) (point-max) 'message-rank (+ 2 max)))\r\r
+             ;; We make the unwanted headers invisible.\r\r
+             (if delete\r\r
+                 (delete-region beg (point-max))\r\r
+               ;; Suggested by Sudish Joseph <joseph@cis.ohio-state.edu>.\r\r
+               (gnus-article-hide-text-type beg (point-max) 'headers))\r\r
+             ;; Work around XEmacs lossage.\r\r
+             (put-text-property (point-min) beg 'invisible nil))))))))\r\r
+\r\r
+(defun article-hide-boring-headers (&optional arg)\r\r
+  "Toggle hiding of headers that aren't very interesting.\r\r
+If given a negative prefix, always show; if given a positive prefix,\r\r
+always hide."\r\r
+  (interactive (gnus-article-hidden-arg))\r\r
+  (when (and (not (gnus-article-check-hidden-text 'boring-headers arg))\r\r
+            (not gnus-show-all-headers))\r\r
+    (save-excursion\r\r
+      (save-restriction\r\r
+       (let ((buffer-read-only nil)\r\r
+             (list gnus-boring-article-headers)\r\r
+             (inhibit-point-motion-hooks t)\r\r
+             elem)\r\r
+         (nnheader-narrow-to-headers)\r\r
+         (while list\r\r
+           (setq elem (pop list))\r\r
+           (goto-char (point-min))\r\r
+           (cond\r\r
+            ;; Hide empty headers.\r\r
+            ((eq elem 'empty)\r\r
+             (while (re-search-forward "^[^:]+:[ \t]*\n[^ \t]" nil t)\r\r
+               (forward-line -1)\r\r
+               (gnus-article-hide-text-type\r\r
+                (progn (beginning-of-line) (point))\r\r
+                (progn\r\r
+                  (end-of-line)\r\r
+                  (if (re-search-forward "^[^ \t]" nil t)\r\r
+                      (match-beginning 0)\r\r
+                    (point-max)))\r\r
+                'boring-headers)))\r\r
+            ;; Hide boring Newsgroups header.\r\r
+            ((eq elem 'newsgroups)\r\r
+             (when (equal (gnus-fetch-field "newsgroups")\r\r
+                          (gnus-group-real-name\r\r
+                           (if (boundp 'gnus-newsgroup-name)\r\r
+                               gnus-newsgroup-name\r\r
+                             "")))\r\r
+               (gnus-article-hide-header "newsgroups")))\r\r
+            ((eq elem 'followup-to)\r\r
+             (when (equal (message-fetch-field "followup-to")\r\r
+                          (message-fetch-field "newsgroups"))\r\r
+               (gnus-article-hide-header "followup-to")))\r\r
+            ((eq elem 'reply-to)\r\r
+             (let ((from (message-fetch-field "from"))\r\r
+                   (reply-to (message-fetch-field "reply-to")))\r\r
+               (when (and\r\r
+                      from reply-to\r\r
+                      (ignore-errors\r\r
+                        (equal\r\r
+                         (nth 1 (funcall gnus-extract-address-components from))\r\r
+                         (nth 1 (funcall gnus-extract-address-components reply-to)))))\r\r
+                 (gnus-article-hide-header "reply-to"))))\r\r
+            ((eq elem 'date)\r\r
+             (let ((date (message-fetch-field "date")))\r\r
+               (when (and date\r\r
+                          (< (days-between (current-time-string) date)\r\r
+                             4))\r\r
+                 (gnus-article-hide-header "date"))))\r\r
+            ((eq elem 'long-to)\r\r
+             (let ((to (message-fetch-field "to")))\r\r
+               (when (> (length to) 1024)\r\r
+                 (gnus-article-hide-header "to"))))\r\r
+            ((eq elem 'many-to)\r\r
+             (let ((to-count 0))\r\r
+               (goto-char (point-min))\r\r
+               (while (re-search-forward "^to:" nil t)\r\r
+                 (setq to-count (1+ to-count)))\r\r
+               (when (> to-count 1)\r\r
+                 (while (> to-count 0)\r\r
+                   (goto-char (point-min))\r\r
+                   (save-restriction\r\r
+                     (re-search-forward "^to:" nil nil to-count)\r\r
+                     (forward-line -1)\r\r
+                     (narrow-to-region (point) (point-max))\r\r
+                     (gnus-article-hide-header "to"))\r\r
+                   (setq to-count (1- to-count)))))))))))))\r\r
+\r\r
+(defun gnus-article-hide-header (header)\r\r
+  (save-excursion\r\r
+    (goto-char (point-min))\r\r
+    (when (re-search-forward (concat "^" header ":") nil t)\r\r
+      (gnus-article-hide-text-type\r\r
+       (progn (beginning-of-line) (point))\r\r
+       (progn\r\r
+        (end-of-line)\r\r
+        (if (re-search-forward "^[^ \t]" nil t)\r\r
+            (match-beginning 0)\r\r
+          (point-max)))\r\r
+       'boring-headers))))\r\r
+\r\r
+(defvar gnus-article-normalized-header-length 40\r\r
+  "Length of normalized headers.")\r\r
+\r\r
+(defun article-normalize-headers ()\r\r
+  "Make all header lines 40 characters long."\r\r
+  (interactive)\r\r
+  (let ((buffer-read-only nil)\r\r
+       column)\r\r
+    (save-excursion\r\r
+      (save-restriction\r\r
+       (message-narrow-to-head)\r\r
+       (while (not (eobp))\r\r
+         (cond\r\r
+          ((< (setq column (- (gnus-point-at-eol) (point)))\r\r
+              gnus-article-normalized-header-length)\r\r
+           (end-of-line)\r\r
+           (insert (make-string\r\r
+                    (- gnus-article-normalized-header-length column)\r\r
+                    ? )))\r\r
+          ((> column gnus-article-normalized-header-length)\r\r
+           (gnus-put-text-property\r\r
+            (progn\r\r
+              (forward-char gnus-article-normalized-header-length)\r\r
+              (point))\r\r
+            (gnus-point-at-eol)\r\r
+            'invisible t))\r\r
+          (t\r\r
+           ;; Do nothing.\r\r
+           ))\r\r
+         (forward-line 1))))))\r\r
+\r\r
+(defun article-treat-dumbquotes ()\r\r
+  "Translate M******** sm*rtq**t*s into proper text."\r\r
+  (interactive)\r\r
+  (article-translate-strings gnus-article-dumbquotes-map))\r\r
+\r\r
+(defun article-translate-characters (from to)\r\r
+  "Translate all characters in the body of the article according to FROM and TO.\r\r
+FROM is a string of characters to translate from; to is a string of\r\r
+characters to translate to."\r\r
+  (save-excursion\r\r
+    (when (article-goto-body)\r\r
+      (let ((buffer-read-only nil)\r\r
+           (x (make-string 225 ?x))\r\r
+           (i -1))\r\r
+       (while (< (incf i) (length x))\r\r
+         (aset x i i))\r\r
+       (setq i 0)\r\r
+       (while (< i (length from))\r\r
+         (aset x (aref from i) (aref to i))\r\r
+         (incf i))\r\r
+       (translate-region (point) (point-max) x)))))\r\r
+\r\r
+(defun article-translate-strings (map)\r\r
+  "Translate all string in the body of the article according to MAP.\r\r
+MAP is an alist where the elements are on the form (\"from\" \"to\")."\r\r
+  (save-excursion\r\r
+    (when (article-goto-body)\r\r
+      (let ((buffer-read-only nil)\r\r
+           elem)\r\r
+       (while (setq elem (pop map))\r\r
+         (save-excursion\r\r
+           (while (search-forward (car elem) nil t)\r\r
+             (replace-match (cadr elem)))))))))\r\r
+\r\r
+(defun article-treat-overstrike ()\r\r
+  "Translate overstrikes into bold text."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (when (article-goto-body)\r\r
+      (let ((buffer-read-only nil))\r\r
+       (while (search-forward "\b" nil t)\r\r
+         (let ((next (char-after))\r\r
+               (previous (char-after (- (point) 2))))\r\r
+           ;; We do the boldification/underlining by hiding the\r\r
+           ;; overstrikes and putting the proper text property\r\r
+           ;; on the letters.\r\r
+           (cond\r\r
+            ((eq next previous)\r\r
+             (gnus-article-hide-text-type (- (point) 2) (point) 'overstrike)\r\r
+             (put-text-property (point) (1+ (point)) 'face 'bold))\r\r
+            ((eq next ?_)\r\r
+             (gnus-article-hide-text-type\r\r
+              (1- (point)) (1+ (point)) 'overstrike)\r\r
+             (put-text-property\r\r
+              (- (point) 2) (1- (point)) 'face 'underline))\r\r
+            ((eq previous ?_)\r\r
+             (gnus-article-hide-text-type (- (point) 2) (point) 'overstrike)\r\r
+             (put-text-property\r\r
+              (point) (1+ (point)) 'face 'underline)))))))))\r\r
+\r\r
+(defun article-fill ()\r\r
+  "Format too long lines."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (let ((buffer-read-only nil))\r\r
+      (widen)\r\r
+      (article-goto-body)\r\r
+      (end-of-line 1)\r\r
+      (let ((paragraph-start "^[>|#:<;* ]*[ \t]*$")\r\r
+           (adaptive-fill-regexp "[ \t]*\\([|#:<;>*]+ *\\)?")\r\r
+           (adaptive-fill-mode t))\r\r
+       (while (not (eobp))\r\r
+         (and (>= (current-column) (min fill-column (window-width)))\r\r
+              (/= (preceding-char) ?:)\r\r
+              (fill-paragraph nil))\r\r
+         (end-of-line 2))))))\r\r
+\r\r
+(defun article-remove-cr ()\r\r
+  "Translate CRLF pairs into LF, and then CR into LF.."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (let ((buffer-read-only nil))\r\r
+      (goto-char (point-min))\r\r
+      (while (search-forward "\r$" nil t)\r\r
+       (replace-match "" t t))\r\r
+      (goto-char (point-min))\r\r
+      (while (search-forward "\r" nil t)\r\r
+       (replace-match "\n" t t)))))\r\r
+\r\r
+(defun article-remove-trailing-blank-lines ()\r\r
+  "Remove all trailing blank lines from the article."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (let ((buffer-read-only nil))\r\r
+      (goto-char (point-max))\r\r
+      (delete-region\r\r
+       (point)\r\r
+       (progn\r\r
+        (while (and (not (bobp))\r\r
+                    (looking-at "^[ \t]*$")\r\r
+                    (not (gnus-annotation-in-region-p\r\r
+                          (point) (gnus-point-at-eol))))\r\r
+          (forward-line -1))\r\r
+        (forward-line 1)\r\r
+        (point))))))\r\r
+\r\r
+(defun article-display-x-face (&optional force)\r\r
+  "Look for an X-Face header and display it if present."\r\r
+  (interactive (list 'force))\r\r
+  (save-excursion\r\r
+    ;; Delete the old process, if any.\r\r
+    (when (process-status "article-x-face")\r\r
+      (delete-process "article-x-face"))\r\r
+    (let ((inhibit-point-motion-hooks t)\r\r
+         (case-fold-search t)\r\r
+         from last)\r\r
+      (save-restriction\r\r
+       (nnheader-narrow-to-headers)\r\r
+       (setq from (message-fetch-field "from"))\r\r
+       (goto-char (point-min))\r\r
+       (while (and gnus-article-x-face-command\r\r
+                   (not last)\r\r
+                   (or force\r\r
+                       ;; Check whether this face is censored.\r\r
+                       (not gnus-article-x-face-too-ugly)\r\r
+                       (and gnus-article-x-face-too-ugly from\r\r
+                            (not (string-match gnus-article-x-face-too-ugly\r\r
+                                               from))))\r\r
+                   ;; Has to be present.\r\r
+                   (re-search-forward "^X-Face: " nil t))\r\r
+         ;; This used to try to do multiple faces (`while' instead of\r\r
+         ;; `when' above), but (a) sending multiple EOFs to xv doesn't\r\r
+         ;; work (b) it can crash some versions of Emacs (c) are\r\r
+         ;; multiple faces really something to encourage?\r\r
+         (when (stringp gnus-article-x-face-command)\r\r
+           (setq last t))\r\r
+         ;; We now have the area of the buffer where the X-Face is stored.\r\r
+         (save-excursion\r\r
+           (let ((beg (point))\r\r
+                 (end (1- (re-search-forward "^\\($\\|[^ \t]\\)" nil t))))\r\r
+             ;; We display the face.\r\r
+             (if (symbolp gnus-article-x-face-command)\r\r
+                 ;; The command is a lisp function, so we call it.\r\r
+                 (if (gnus-functionp gnus-article-x-face-command)\r\r
+                     (funcall gnus-article-x-face-command beg end)\r\r
+                   (error "%s is not a function" gnus-article-x-face-command))\r\r
+               ;; The command is a string, so we interpret the command\r\r
+               ;; as a, well, command, and fork it off.\r\r
+               (let ((process-connection-type nil))\r\r
+                 (process-kill-without-query\r\r
+                  (start-process\r\r
+                   "article-x-face" nil shell-file-name shell-command-switch\r\r
+                   gnus-article-x-face-command))\r\r
+                 (process-send-region "article-x-face" beg end)\r\r
+                 (process-send-eof "article-x-face"))))))))))\r\r
+\r\r
+(defun article-decode-mime-words ()\r\r
+  "Decode all MIME-encoded words in the article."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (let ((inhibit-point-motion-hooks t)\r\r
+         buffer-read-only\r\r
+         (rfc2047-default-charset gnus-newsgroup-default-charset)\r\r
+         (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))\r\r
+      (mail-decode-encoded-word-region (point-min) (point-max)))))\r\r
+\r\r
+(defun article-decode-charset (&optional prompt)\r\r
+  "Decode charset-encoded text in the article.\r\r
+If PROMPT (the prefix), prompt for a coding system to use."\r\r
+  (interactive "P")\r\r
+  (save-excursion\r\r
+    (save-restriction\r\r
+      (message-narrow-to-head)\r\r
+      (let* ((inhibit-point-motion-hooks t)\r\r
+            (case-fold-search t)\r\r
+            (ct (message-fetch-field "Content-Type" t))\r\r
+            (cte (message-fetch-field "Content-Transfer-Encoding" t))\r\r
+            (ctl (and ct (condition-case ()\r\r
+                             (mail-header-parse-content-type ct)\r\r
+                           (error nil))))\r\r
+            (charset (cond\r\r
+                      (prompt\r\r
+                       (mm-read-coding-system "Charset to decode: "))\r\r
+                      (ctl\r\r
+                       (mail-content-type-get ctl 'charset))))\r\r
+            (rfc2047-default-charset gnus-newsgroup-default-charset)\r\r
+            (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced)\r\r
+            buffer-read-only)\r\r
+       (goto-char (point-max))\r\r
+       (widen)\r\r
+       (forward-line 1)\r\r
+       (narrow-to-region (point) (point-max))\r\r
+       (when (and (or (not ctl)\r\r
+                      (equal (car ctl) "text/plain"))\r\r
+                  (not (mm-uu-test)))\r\r
+         (mm-decode-body\r\r
+          charset (and cte (intern (downcase\r\r
+                                    (gnus-strip-whitespace cte))))\r\r
+          (car ctl)))))))\r\r
+\r\r
+(defun article-decode-encoded-words ()\r\r
+  "Remove encoded-word encoding from headers."\r\r
+  (let (buffer-read-only)\r\r
+    (let ((charset (save-excursion\r\r
+                    (set-buffer gnus-summary-buffer)\r\r
+                    default-mime-charset)))\r\r
+      (mime-decode-header-in-buffer charset)\r\r
+      )))\r\r
+\r\r
+(defun article-de-quoted-unreadable (&optional force)\r\r
+  "Translate a quoted-printable-encoded article.\r\r
+If FORCE, decode the article whether it is marked as quoted-printable\r\r
+or not."\r\r
+  (interactive (list 'force))\r\r
+  (save-excursion\r\r
+    (let ((buffer-read-only nil)\r\r
+         (type (gnus-fetch-field "content-transfer-encoding"))\r\r
+         (charset\r\r
+          (or gnus-newsgroup-default-charset mm-default-coding-system))\r\r
+         (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))\r\r
+      (when (or force\r\r
+               (and type (string-match "quoted-printable" (downcase type))))\r\r
+       (article-goto-body)\r\r
+       (save-restriction\r\r
+         (narrow-to-region (point) (point-max))\r\r
+         (quoted-printable-decode-region (point-min) (point-max))\r\r
+         (when charset\r\r
+           (mm-decode-body charset)))))))\r\r
+\r\r
+(defun article-hide-pgp (&optional arg)\r\r
+  "Toggle hiding of any PGP headers and signatures in the current article.\r\r
+If given a negative prefix, always show; if given a positive prefix,\r\r
+always hide."\r\r
+  (interactive (gnus-article-hidden-arg))\r\r
+  (unless (gnus-article-check-hidden-text 'pgp arg)\r\r
+    (save-excursion\r\r
+      (let ((inhibit-point-motion-hooks t)\r\r
+           buffer-read-only beg end)\r\r
+       (widen)\r\r
+       (goto-char (point-min))\r\r
+       ;; Hide the "header".\r\r
+       (when (search-forward "\n-----BEGIN PGP SIGNED MESSAGE-----\n" nil t)\r\r
+         (delete-region (1+ (match-beginning 0)) (match-end 0))\r\r
+         ;; PGP 5 and GNU PG add a `Hash: <>' comment, hide that too\r\r
+         (when (looking-at "Hash:.*$")\r\r
+           (delete-region (point) (1+ (gnus-point-at-eol))))\r\r
+         (setq beg (point))\r\r
+         ;; Hide the actual signature.\r\r
+         (and (search-forward "\n-----BEGIN PGP SIGNATURE-----\n" nil t)\r\r
+              (setq end (1+ (match-beginning 0)))\r\r
+              (delete-region\r\r
+               end\r\r
+               (if (search-forward "\n-----END PGP SIGNATURE-----\n" nil t)\r\r
+                   (match-end 0)\r\r
+                 ;; Perhaps we shouldn't hide to the end of the buffer\r\r
+                 ;; if there is no end to the signature?\r\r
+                 (point-max))))\r\r
+         ;; Hide "- " PGP quotation markers.\r\r
+         (when (and beg end)\r\r
+           (narrow-to-region beg end)\r\r
+           (goto-char (point-min))\r\r
+           (while (re-search-forward "^- " nil t)\r\r
+             (delete-region\r\r
+              (match-beginning 0) (match-end 0)))\r\r
+           (widen))\r\r
+         (gnus-run-hooks 'gnus-article-hide-pgp-hook))))))\r\r
+\r\r
+(defun article-hide-pem (&optional arg)\r\r
+  "Toggle hiding of any PEM headers and signatures in the current article.\r\r
+If given a negative prefix, always show; if given a positive prefix,\r\r
+always hide."\r\r
+  (interactive (gnus-article-hidden-arg))\r\r
+  (unless (gnus-article-check-hidden-text 'pem arg)\r\r
+    (save-excursion\r\r
+      (let (buffer-read-only end)\r\r
+       (widen)\r\r
+       (goto-char (point-min))\r\r
+       ;; hide the horrendously ugly "header".\r\r
+       (and (search-forward "\n-----BEGIN PRIVACY-ENHANCED MESSAGE-----\n"\r\r
+                            nil\r\r
+                            t)\r\r
+            (setq end (1+ (match-beginning 0)))\r\r
+            (gnus-article-hide-text-type\r\r
+             end\r\r
+             (if (search-forward "\n\n" nil t)\r\r
+                 (match-end 0)\r\r
+               (point-max))\r\r
+             'pem))\r\r
+       ;; hide the trailer as well\r\r
+       (and (search-forward "\n-----END PRIVACY-ENHANCED MESSAGE-----\n"\r\r
+                            nil\r\r
+                            t)\r\r
+            (gnus-article-hide-text-type\r\r
+             (match-beginning 0) (match-end 0) 'pem))))))\r\r
+\r\r
+(defun article-hide-signature (&optional arg)\r\r
+  "Hide the signature in the current article.\r\r
+If given a negative prefix, always show; if given a positive prefix,\r\r
+always hide."\r\r
+  (interactive (gnus-article-hidden-arg))\r\r
+  (unless (gnus-article-check-hidden-text 'signature arg)\r\r
+    (save-excursion\r\r
+      (save-restriction\r\r
+       (let ((buffer-read-only nil))\r\r
+         (when (gnus-article-narrow-to-signature)\r\r
+           (gnus-article-hide-text-type\r\r
+            (point-min) (point-max) 'signature)))))))\r\r
+\r\r
+(defun article-strip-leading-blank-lines ()\r\r
+  "Remove all blank lines from the beginning of the article."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (let ((inhibit-point-motion-hooks t)\r\r
+         buffer-read-only)\r\r
+      (when (article-goto-body)\r\r
+       (while (and (not (eobp))\r\r
+                   (looking-at "[ \t]*$"))\r\r
+         (gnus-delete-line))))))\r\r
+\r\r
+(defun article-goto-body ()\r\r
+  "Place point at the start of the body."  \r\r
+  (goto-char (point-min))\r\r
+  (if (search-forward "\n\n" nil t)\r\r
+      t\r\r
+    (goto-char (point-max))\r\r
+    nil))\r\r
+\r\r
+(defun article-strip-multiple-blank-lines ()\r\r
+  "Replace consecutive blank lines with one empty line."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (let ((inhibit-point-motion-hooks t)\r\r
+         buffer-read-only)\r\r
+      ;; First make all blank lines empty.\r\r
+      (article-goto-body)\r\r
+      (while (re-search-forward "^[ \t]+$" nil t)\r\r
+       (unless (gnus-annotation-in-region-p\r\r
+                (match-beginning 0) (match-end 0))\r\r
+         (replace-match "" nil t)))\r\r
+      ;; Then replace multiple empty lines with a single empty line.\r\r
+      (article-goto-body)\r\r
+      (while (re-search-forward "\n\n\n+" nil t)\r\r
+       (unless (gnus-annotation-in-region-p\r\r
+                (match-beginning 0) (match-end 0))\r\r
+         (replace-match "\n\n" t t))))))\r\r
+\r\r
+(defun article-strip-leading-space ()\r\r
+  "Remove all white space from the beginning of the lines in the article."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (let ((inhibit-point-motion-hooks t)\r\r
+         buffer-read-only)\r\r
+      (article-goto-body)\r\r
+      (while (re-search-forward "^[ \t]+" nil t)\r\r
+       (replace-match "" t t)))))\r\r
+\r\r
+(defun article-strip-trailing-space ()\r\r
+  "Remove all white space from the end of the lines in the article."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (let ((inhibit-point-motion-hooks t)\r\r
+         buffer-read-only)\r\r
+      (article-goto-body)\r\r
+      (while (re-search-forward "[ \t]+$" nil t)\r\r
+       (replace-match "" t t)))))\r\r
+\r\r
+(defun article-strip-blank-lines ()\r\r
+  "Strip leading, trailing and multiple blank lines."\r\r
+  (interactive)\r\r
+  (article-strip-leading-blank-lines)\r\r
+  (article-remove-trailing-blank-lines)\r\r
+  (article-strip-multiple-blank-lines))\r\r
+\r\r
+(defun article-strip-all-blank-lines ()\r\r
+  "Strip all blank lines."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (let ((inhibit-point-motion-hooks t)\r\r
+         buffer-read-only)\r\r
+      (article-goto-body)\r\r
+      (while (re-search-forward "^[ \t]*\n" nil t)\r\r
+       (replace-match "" t t)))))\r\r
+\r\r
+(defun gnus-article-narrow-to-signature ()\r\r
+  "Narrow to the signature; return t if a signature is found, else nil."\r\r
+  (widen)\r\r
+  (let ((inhibit-point-motion-hooks t))\r\r
+    (when (gnus-article-search-signature)\r\r
+      (forward-line 1)\r\r
+      ;; Check whether we have some limits to what we consider\r\r
+      ;; to be a signature.\r\r
+      (let ((limits (if (listp gnus-signature-limit) gnus-signature-limit\r\r
+                     (list gnus-signature-limit)))\r\r
+           limit limited)\r\r
+       (while (setq limit (pop limits))\r\r
+         (if (or (and (integerp limit)\r\r
+                      (< (- (point-max) (point)) limit))\r\r
+                 (and (floatp limit)\r\r
+                      (< (count-lines (point) (point-max)) limit))\r\r
+                 (and (gnus-functionp limit)\r\r
+                      (funcall limit))\r\r
+                 (and (stringp limit)\r\r
+                      (not (re-search-forward limit nil t))))\r\r
+             ()                        ; This limit did not succeed.\r\r
+           (setq limited t\r\r
+                 limits nil)))\r\r
+       (unless limited\r\r
+         (narrow-to-region (point) (point-max))\r\r
+         t)))))\r\r
+\r\r
+(defun gnus-article-search-signature ()\r\r
+  "Search the current buffer for the signature separator.\r\r
+Put point at the beginning of the signature separator."\r\r
+  (let ((cur (point)))\r\r
+    (goto-char (point-max))\r\r
+    (if (if (stringp gnus-signature-separator)\r\r
+           (re-search-backward gnus-signature-separator nil t)\r\r
+         (let ((seps gnus-signature-separator))\r\r
+           (while (and seps\r\r
+                       (not (re-search-backward (car seps) nil t)))\r\r
+             (pop seps))\r\r
+           seps))\r\r
+       t\r\r
+      (goto-char cur)\r\r
+      nil)))\r\r
+\r\r
+(eval-and-compile\r\r
+  (autoload 'w3-display "w3-parse")\r\r
+  (autoload 'w3-do-setup "w3" "" t)\r\r
+  (autoload 'w3-region "w3-display" "" t))\r\r
+\r\r
+(defun gnus-article-treat-html ()\r\r
+  "Render HTML."\r\r
+  (interactive)\r\r
+  (let ((cbuf (current-buffer)))\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (let (buf buffer-read-only b e)\r\r
+      (w3-do-setup)\r\r
+      (goto-char (point-min))\r\r
+      (narrow-to-region\r\r
+       (if (search-forward "\n\n" nil t)\r\r
+          (setq b (point))\r\r
+        (point-max))\r\r
+       (setq e (point-max)))\r\r
+      (with-temp-buffer\r\r
+       (insert-buffer-substring gnus-article-buffer b e)\r\r
+       (require 'url)\r\r
+       (save-window-excursion\r\r
+         (w3-region (point-min) (point-max))\r\r
+         (setq buf (buffer-substring-no-properties (point-min) (point-max)))))\r\r
+      (when buf\r\r
+       (delete-region (point-min) (point-max))\r\r
+       (insert buf))\r\r
+      (widen)\r\r
+      (goto-char (point-min))\r\r
+      (set-window-start (get-buffer-window (current-buffer)) (point-min))\r\r
+      (set-buffer cbuf))))\r\r
+\r\r
+(defun gnus-article-hidden-arg ()\r\r
+  "Return the current prefix arg as a number, or 0 if no prefix."\r\r
+  (list (if current-prefix-arg\r\r
+           (prefix-numeric-value current-prefix-arg)\r\r
+         0)))\r\r
+\r\r
+(defun gnus-article-check-hidden-text (type arg)\r\r
+  "Return nil if hiding is necessary.\r\r
+Arg can be nil or a number.  Nil and positive means hide, negative\r\r
+means show, 0 means toggle."\r\r
+  (save-excursion\r\r
+    (save-restriction\r\r
+      (widen)\r\r
+      (let ((hide (gnus-article-hidden-text-p type)))\r\r
+       (cond\r\r
+        ((or (null arg)\r\r
+             (> arg 0))\r\r
+         nil)\r\r
+        ((< arg 0)\r\r
+         (gnus-article-show-hidden-text type))\r\r
+        (t\r\r
+         (if (eq hide 'hidden)\r\r
+             (gnus-article-show-hidden-text type)\r\r
+           nil)))))))\r\r
+\r\r
+(defun gnus-article-hidden-text-p (type)\r\r
+  "Say whether the current buffer contains hidden text of type TYPE."\r\r
+  (let ((pos (text-property-any (point-min) (point-max) 'article-type type)))\r\r
+    (while (and pos\r\r
+               (not (get-text-property pos 'invisible)))\r\r
+      (setq pos\r\r
+           (text-property-any (1+ pos) (point-max) 'article-type type)))\r\r
+    (if pos\r\r
+       'hidden\r\r
+      nil)))\r\r
+\r\r
+(defun gnus-article-show-hidden-text (type &optional hide)\r\r
+  "Show all hidden text of type TYPE.\r\r
+If HIDE, hide the text instead."\r\r
+  (save-excursion\r\r
+    (let ((buffer-read-only nil)\r\r
+         (inhibit-point-motion-hooks t)\r\r
+         (end (point-min))\r\r
+         beg)\r\r
+      (while (setq beg (text-property-any end (point-max) 'article-type type))\r\r
+       (goto-char beg)\r\r
+       (setq end (or\r\r
+                  (text-property-not-all beg (point-max) 'article-type type)\r\r
+                  (point-max)))\r\r
+       (if hide\r\r
+           (gnus-article-hide-text beg end gnus-hidden-properties)\r\r
+         (gnus-article-unhide-text beg end))\r\r
+       (goto-char end))\r\r
+      t)))\r\r
+\r\r
+(defconst article-time-units\r\r
+  `((year . ,(* 365.25 24 60 60))\r\r
+    (week . ,(* 7 24 60 60))\r\r
+    (day . ,(* 24 60 60))\r\r
+    (hour . ,(* 60 60))\r\r
+    (minute . 60)\r\r
+    (second . 1))\r\r
+  "Mapping from time units to seconds.")\r\r
+\r\r
+(defun article-date-ut (&optional type highlight header)\r\r
+  "Convert DATE date to universal time in the current article.\r\r
+If TYPE is `local', convert to local time; if it is `lapsed', output\r\r
+how much time has lapsed since DATE."\r\r
+  (interactive (list 'ut t))\r\r
+  (let* ((header (or header\r\r
+                    (mail-header-date gnus-current-headers)\r\r
+                    (message-fetch-field "date")\r\r
+                    ""))\r\r
+        (date (if (vectorp header) (mail-header-date header)\r\r
+                header))\r\r
+        (date-regexp "^Date:[ \t]\\|^X-Sent:[ \t]")\r\r
+        (inhibit-point-motion-hooks t)\r\r
+        bface eface newline)\r\r
+    (when (and date (not (string= date "")))\r\r
+      (save-excursion\r\r
+       (save-restriction\r\r
+         (nnheader-narrow-to-headers)\r\r
+         (let ((buffer-read-only nil))\r\r
+           ;; Delete any old Date headers.\r\r
+           (if (re-search-forward date-regexp nil t)\r\r
+               (progn\r\r
+                 (setq bface (get-text-property (gnus-point-at-bol) 'face)\r\r
+                       eface (get-text-property (1- (gnus-point-at-eol))\r\r
+                                                'face))\r\r
+                 (delete-region (progn (beginning-of-line) (point))\r\r
+                                (progn (end-of-line) (point)))\r\r
+                 (beginning-of-line))\r\r
+             (goto-char (point-max))\r\r
+             (setq newline t))\r\r
+           (insert (article-make-date-line date type))\r\r
+           ;; Do highlighting.\r\r
+           (beginning-of-line)\r\r
+           (when (looking-at "\\([^:]+\\): *\\(.*\\)$")\r\r
+             (put-text-property (match-beginning 1) (1+ (match-end 1))\r\r
+                                'face bface)\r\r
+             (put-text-property (match-beginning 2) (match-end 2)\r\r
+                                'face eface))\r\r
+           (when newline\r\r
+             (end-of-line)\r\r
+             (insert "\n"))))))))\r\r
+\r\r
+(defun article-make-date-line (date type)\r\r
+  "Return a DATE line of TYPE."\r\r
+  (let ((time (condition-case ()\r\r
+                 (date-to-time date)\r\r
+               (error '(0 0)))))\r\r
+    (cond\r\r
+     ;; Convert to the local timezone.  We have to slap a\r\r
+     ;; `condition-case' round the calls to the timezone\r\r
+     ;; functions since they aren't particularly resistant to\r\r
+     ;; buggy dates.\r\r
+     ((eq type 'local)\r\r
+      (let ((tz (car (current-time-zone))))\r\r
+       (format "Date: %s %s%04d" (current-time-string time)\r\r
+               (if (> tz 0) "+" "-") (abs (/ tz 36)))))\r\r
+     ;; Convert to Universal Time.\r\r
+     ((eq type 'ut)\r\r
+      (concat "Date: "\r\r
+             (current-time-string\r\r
+              (let* ((e (parse-time-string date))\r\r
+                    (tm (apply 'encode-time e))\r\r
+                    (ms (car tm))\r\r
+                    (ls (- (cadr tm) (car (current-time-zone)))))\r\r
+                (cond ((< ls 0) (list (1- ms) (+ ls 65536)))\r\r
+                      ((> ls 65535) (list (1+ ms) (- ls 65536)))\r\r
+                      (t (list ms ls)))))\r\r
+             " UT"))\r\r
+     ;; Get the original date from the article.\r\r
+     ((eq type 'original)\r\r
+      (concat "Date: " (if (string-match "\n+$" date)\r\r
+                          (substring date 0 (match-beginning 0))\r\r
+                        date)))\r\r
+     ;; Let the user define the format.\r\r
+     ((eq type 'user)\r\r
+      (if (gnus-functionp gnus-article-time-format)\r\r
+         (funcall gnus-article-time-format time)\r\r
+       (concat\r\r
+        "Date: "\r\r
+        (format-time-string gnus-article-time-format time))))\r\r
+     ;; ISO 8601.\r\r
+     ((eq type 'iso8601)\r\r
+      (concat\r\r
+       "Date: "\r\r
+       (format-time-string "%Y%M%DT%h%m%s" time)))\r\r
+     ;; Do an X-Sent lapsed format.\r\r
+     ((eq type 'lapsed)\r\r
+      ;; If the date is seriously mangled, the timezone functions are\r\r
+      ;; liable to bug out, so we ignore all errors.\r\r
+      (let* ((now (current-time))\r\r
+            (real-time (subtract-time now time))\r\r
+            (real-sec (and real-time\r\r
+                           (+ (* (float (car real-time)) 65536)\r\r
+                              (cadr real-time))))\r\r
+            (sec (and real-time (abs real-sec)))\r\r
+            num prev)\r\r
+       (cond\r\r
+        ((null real-time)\r\r
+         "X-Sent: Unknown")\r\r
+        ((zerop sec)\r\r
+         "X-Sent: Now")\r\r
+        (t\r\r
+         (concat\r\r
+          "X-Sent: "\r\r
+          ;; This is a bit convoluted, but basically we go\r\r
+          ;; through the time units for years, weeks, etc,\r\r
+          ;; and divide things to see whether that results\r\r
+          ;; in positive answers.\r\r
+          (mapconcat\r\r
+           (lambda (unit)\r\r
+             (if (zerop (setq num (ffloor (/ sec (cdr unit)))))\r\r
+                 ;; The (remaining) seconds are too few to\r\r
+                 ;; be divided into this time unit.\r\r
+                 ""\r\r
+               ;; It's big enough, so we output it.\r\r
+               (setq sec (- sec (* num (cdr unit))))\r\r
+               (prog1\r\r
+                   (concat (if prev ", " "") (int-to-string\r\r
+                                              (floor num))\r\r
+                           " " (symbol-name (car unit))\r\r
+                           (if (> num 1) "s" ""))\r\r
+                 (setq prev t))))\r\r
+           article-time-units "")\r\r
+          ;; If dates are odd, then it might appear like the\r\r
+          ;; article was sent in the future.\r\r
+          (if (> real-sec 0)\r\r
+              " ago"\r\r
+            " in the future"))))))\r\r
+     (t\r\r
+      (error "Unknown conversion type: %s" type)))))\r\r
+\r\r
+(defun article-date-local (&optional highlight)\r\r
+  "Convert the current article date to the local timezone."\r\r
+  (interactive (list t))\r\r
+  (article-date-ut 'local highlight))\r\r
+\r\r
+(defun article-date-original (&optional highlight)\r\r
+  "Convert the current article date to what it was originally.\r\r
+This is only useful if you have used some other date conversion\r\r
+function and want to see what the date was before converting."\r\r
+  (interactive (list t))\r\r
+  (article-date-ut 'original highlight))\r\r
+\r\r
+(defun article-date-lapsed (&optional highlight)\r\r
+  "Convert the current article date to time lapsed since it was sent."\r\r
+  (interactive (list t))\r\r
+  (article-date-ut 'lapsed highlight))\r\r
+\r\r
+(defun article-update-date-lapsed ()\r\r
+  "Function to be run from a timer to update the lapsed time line."\r\r
+  (let (deactivate-mark)\r\r
+    (save-excursion\r\r
+      (ignore-errors\r\r
+       (walk-windows\r\r
+        (lambda (w)\r\r
+          (set-buffer (window-buffer w))\r\r
+          (when (eq major-mode 'gnus-article-mode)\r\r
+            (goto-char (point-min))\r\r
+            (when (re-search-forward "^X-Sent:" nil t)\r\r
+              (article-date-lapsed t)))))))))\r\r
+\r\r
+(defun gnus-start-date-timer (&optional n)\r\r
+  "Start a timer to update the X-Sent header in the article buffers.\r\r
+The numerical prefix says how frequently (in seconds) the function\r\r
+is to run."\r\r
+  (interactive "p")\r\r
+  (unless n\r\r
+    (setq n 1))\r\r
+  (gnus-stop-date-timer)\r\r
+  (setq article-lapsed-timer\r\r
+       (nnheader-run-at-time 1 n 'article-update-date-lapsed)))\r\r
+\r\r
+(defun gnus-stop-date-timer ()\r\r
+  "Stop the X-Sent timer."\r\r
+  (interactive)\r\r
+  (when article-lapsed-timer\r\r
+    (nnheader-cancel-timer article-lapsed-timer)\r\r
+    (setq article-lapsed-timer nil)))\r\r
+\r\r
+(defun article-date-user (&optional highlight)\r\r
+  "Convert the current article date to the user-defined format.\r\r
+This format is defined by the `gnus-article-time-format' variable."\r\r
+  (interactive (list t))\r\r
+  (article-date-ut 'user highlight))\r\r
+\r\r
+(defun article-date-iso8601 (&optional highlight)\r\r
+  "Convert the current article date to ISO8601."\r\r
+  (interactive (list t))\r\r
+  (article-date-ut 'iso8601 highlight))\r\r
+\r\r
+(defun article-show-all ()\r\r
+  "Show all hidden text in the article buffer."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (let ((buffer-read-only nil))\r\r
+      (gnus-article-unhide-text (point-min) (point-max)))))\r\r
+\r\r
+(defun article-emphasize (&optional arg)\r\r
+  "Emphasize text according to `gnus-emphasis-alist'."\r\r
+  (interactive (gnus-article-hidden-arg))\r\r
+  (unless (gnus-article-check-hidden-text 'emphasis arg)\r\r
+    (save-excursion\r\r
+      (let ((alist gnus-emphasis-alist)\r\r
+           (buffer-read-only nil)\r\r
+           (props (append '(article-type emphasis)\r\r
+                          gnus-hidden-properties))\r\r
+           regexp elem beg invisible visible face)\r\r
+       (article-goto-body)\r\r
+       (setq beg (point))\r\r
+       (while (setq elem (pop alist))\r\r
+         (goto-char beg)\r\r
+         (setq regexp (car elem)\r\r
+               invisible (nth 1 elem)\r\r
+               visible (nth 2 elem)\r\r
+               face (nth 3 elem))\r\r
+         (while (re-search-forward regexp nil t)\r\r
+           (when (and (match-beginning visible) (match-beginning invisible))\r\r
+             (gnus-article-hide-text\r\r
+              (match-beginning invisible) (match-end invisible) props)\r\r
+             (gnus-article-unhide-text-type\r\r
+              (match-beginning visible) (match-end visible) 'emphasis)\r\r
+             (gnus-put-text-property-excluding-newlines\r\r
+              (match-beginning visible) (match-end visible) 'face face)\r\r
+             (goto-char (match-end invisible)))))))))\r\r
+\r\r
+(defvar gnus-summary-article-menu)\r\r
+(defvar gnus-summary-post-menu)\r\r
+\r\r
+;;; Saving functions.\r\r
+\r\r
+(defun gnus-article-save (save-buffer file &optional num)\r\r
+  "Save the currently selected article."\r\r
+  (unless gnus-save-all-headers\r\r
+    ;; Remove headers according to `gnus-saved-headers'.\r\r
+    (let ((gnus-visible-headers\r\r
+          (or gnus-saved-headers gnus-visible-headers))\r\r
+         (gnus-article-buffer save-buffer))\r\r
+      (save-excursion\r\r
+       (set-buffer save-buffer)\r\r
+       (article-hide-headers 1 t))))\r\r
+  (save-window-excursion\r\r
+    (if (not gnus-default-article-saver)\r\r
+       (error "No default saver is defined")\r\r
+      ;; !!! Magic!  The saving functions all save\r\r
+      ;; `gnus-save-article-buffer' (or so they think), but we\r\r
+      ;; bind that variable to our save-buffer.\r\r
+      (set-buffer gnus-article-buffer)\r\r
+      (let* ((gnus-save-article-buffer save-buffer)\r\r
+            (filename\r\r
+             (cond\r\r
+              ((not gnus-prompt-before-saving) 'default)\r\r
+              ((eq gnus-prompt-before-saving 'always) nil)\r\r
+              (t file)))\r\r
+            (gnus-number-of-articles-to-be-saved\r\r
+             (when (eq gnus-prompt-before-saving t)\r\r
+               num)))                  ; Magic\r\r
+       (set-buffer gnus-article-current-summary)\r\r
+       (funcall gnus-default-article-saver filename)))))\r\r
+\r\r
+(defun gnus-read-save-file-name (prompt &optional filename\r\r
+                                       function group headers variable)\r\r
+  (let ((default-name\r\r
+         (funcall function group headers (symbol-value variable)))\r\r
+       result)\r\r
+    (setq\r\r
+     result\r\r
+     (cond\r\r
+      ((eq filename 'default)\r\r
+       default-name)\r\r
+      ((eq filename t)\r\r
+       default-name)\r\r
+      (filename filename)\r\r
+      (t\r\r
+       (let* ((split-name (gnus-get-split-value gnus-split-methods))\r\r
+             (prompt\r\r
+              (format prompt\r\r
+                      (if (and gnus-number-of-articles-to-be-saved\r\r
+                               (> gnus-number-of-articles-to-be-saved 1))\r\r
+                          (format "these %d articles"\r\r
+                                  gnus-number-of-articles-to-be-saved)\r\r
+                        "this article")))\r\r
+             (file\r\r
+              ;; Let the split methods have their say.\r\r
+              (cond\r\r
+               ;; No split name was found.\r\r
+               ((null split-name)\r\r
+                (read-file-name\r\r
+                 (concat prompt " (default "\r\r
+                         (file-name-nondirectory default-name) ") ")\r\r
+                 (file-name-directory default-name)\r\r
+                 default-name))\r\r
+               ;; A single group name is returned.\r\r
+               ((stringp split-name)\r\r
+                (setq default-name\r\r
+                      (funcall function split-name headers\r\r
+                               (symbol-value variable)))\r\r
+                (read-file-name\r\r
+                 (concat prompt " (default "\r\r
+                         (file-name-nondirectory default-name) ") ")\r\r
+                 (file-name-directory default-name)\r\r
+                 default-name))\r\r
+               ;; A single split name was found\r\r
+               ((= 1 (length split-name))\r\r
+                (let* ((name (expand-file-name\r\r
+                              (car split-name) gnus-article-save-directory))\r\r
+                       (dir (cond ((file-directory-p name)\r\r
+                                   (file-name-as-directory name))\r\r
+                                  ((file-exists-p name) name)\r\r
+                                  (t gnus-article-save-directory))))\r\r
+                  (read-file-name\r\r
+                   (concat prompt " (default " name ") ")\r\r
+                   dir name)))\r\r
+               ;; A list of splits was found.\r\r
+               (t\r\r
+                (setq split-name (nreverse split-name))\r\r
+                (let (result)\r\r
+                  (let ((file-name-history\r\r
+                         (nconc split-name file-name-history)))\r\r
+                    (setq result\r\r
+                          (expand-file-name\r\r
+                           (read-file-name\r\r
+                            (concat prompt " (`M-p' for defaults) ")\r\r
+                            gnus-article-save-directory\r\r
+                            (car split-name))\r\r
+                           gnus-article-save-directory)))\r\r
+                  (car (push result file-name-history)))))))\r\r
+        ;; Create the directory.\r\r
+        (gnus-make-directory (file-name-directory file))\r\r
+        ;; If we have read a directory, we append the default file name.\r\r
+        (when (file-directory-p file)\r\r
+          (setq file (concat (file-name-as-directory file)\r\r
+                             (file-name-nondirectory default-name))))\r\r
+        ;; Possibly translate some characters.\r\r
+        (nnheader-translate-file-chars file)))))\r\r
+    (gnus-make-directory (file-name-directory result))\r\r
+    (set variable result)))\r\r
+\r\r
+(defun gnus-article-archive-name (group)\r\r
+  "Return the first instance of an \"Archive-name\" in the current buffer."\r\r
+  (let ((case-fold-search t))\r\r
+    (when (re-search-forward "archive-name: *\\([^ \n\t]+\\)[ \t]*$" nil t)\r\r
+      (nnheader-concat gnus-article-save-directory\r\r
+                      (match-string 1)))))\r\r
+\r\r
+(defun gnus-article-nndoc-name (group)\r\r
+  "If GROUP is an nndoc group, return the name of the parent group."\r\r
+  (when (eq (car (gnus-find-method-for-group group)) 'nndoc)\r\r
+    (gnus-group-get-parameter group 'save-article-group)))\r\r
+\r\r
+(defun gnus-summary-save-in-rmail (&optional filename)\r\r
+  "Append this article to Rmail file.\r\r
+Optional argument FILENAME specifies file name.\r\r
+Directory to save to is default to `gnus-article-save-directory'."\r\r
+  (setq filename (gnus-read-save-file-name\r\r
+                 "Save %s in rmail file:" filename\r\r
+                 gnus-rmail-save-name gnus-newsgroup-name\r\r
+                 gnus-current-headers 'gnus-newsgroup-last-rmail))\r\r
+  (gnus-eval-in-buffer-window gnus-save-article-buffer\r\r
+    (save-excursion\r\r
+      (save-restriction\r\r
+       (widen)\r\r
+       (gnus-output-to-rmail filename))))\r\r
+  filename)\r\r
+\r\r
+(defun gnus-summary-save-in-mail (&optional filename)\r\r
+  "Append this article to Unix mail file.\r\r
+Optional argument FILENAME specifies file name.\r\r
+Directory to save to is default to `gnus-article-save-directory'."\r\r
+  (setq filename (gnus-read-save-file-name\r\r
+                 "Save %s in Unix mail file:" filename\r\r
+                 gnus-mail-save-name gnus-newsgroup-name\r\r
+                 gnus-current-headers 'gnus-newsgroup-last-mail))\r\r
+  (gnus-eval-in-buffer-window gnus-save-article-buffer\r\r
+    (save-excursion\r\r
+      (save-restriction\r\r
+       (widen)\r\r
+       (if (and (file-readable-p filename)\r\r
+                (mail-file-babyl-p filename))\r\r
+           (rmail-output-to-rmail-file filename t)\r\r
+         (gnus-output-to-mail filename)))))\r\r
+  filename)\r\r
+\r\r
+(defun gnus-summary-save-in-file (&optional filename overwrite)\r\r
+  "Append this article to file.\r\r
+Optional argument FILENAME specifies file name.\r\r
+Directory to save to is default to `gnus-article-save-directory'."\r\r
+  (setq filename (gnus-read-save-file-name\r\r
+                 "Save %s in file:" filename\r\r
+                 gnus-file-save-name gnus-newsgroup-name\r\r
+                 gnus-current-headers 'gnus-newsgroup-last-file))\r\r
+  (gnus-eval-in-buffer-window gnus-save-article-buffer\r\r
+    (save-excursion\r\r
+      (save-restriction\r\r
+       (widen)\r\r
+       (when (and overwrite\r\r
+                  (file-exists-p filename))\r\r
+         (delete-file filename))\r\r
+       (gnus-output-to-file filename))))\r\r
+  filename)\r\r
+\r\r
+(defun gnus-summary-write-to-file (&optional filename)\r\r
+  "Write this article to a file.\r\r
+Optional argument FILENAME specifies file name.\r\r
+The directory to save in defaults to `gnus-article-save-directory'."\r\r
+  (gnus-summary-save-in-file nil t))\r\r
+\r\r
+(defun gnus-summary-save-body-in-file (&optional filename)\r\r
+  "Append this article body to a file.\r\r
+Optional argument FILENAME specifies file name.\r\r
+The directory to save in defaults to `gnus-article-save-directory'."\r\r
+  (setq filename (gnus-read-save-file-name\r\r
+                 "Save %s body in file:" filename\r\r
+                 gnus-file-save-name gnus-newsgroup-name\r\r
+                 gnus-current-headers 'gnus-newsgroup-last-file))\r\r
+  (gnus-eval-in-buffer-window gnus-save-article-buffer\r\r
+    (save-excursion\r\r
+      (save-restriction\r\r
+       (widen)\r\r
+       (when (article-goto-body)\r\r
+         (narrow-to-region (point) (point-max)))\r\r
+       (gnus-output-to-file filename))))\r\r
+  filename)\r\r
+\r\r
+(defun gnus-summary-save-in-pipe (&optional command)\r\r
+  "Pipe this article to subprocess."\r\r
+  (setq command\r\r
+       (cond ((and (eq command 'default)\r\r
+                   gnus-last-shell-command)\r\r
+              gnus-last-shell-command)\r\r
+             (command command)\r\r
+             (t (read-string\r\r
+                 (format\r\r
+                  "Shell command on %s: "\r\r
+                  (if (and gnus-number-of-articles-to-be-saved\r\r
+                           (> gnus-number-of-articles-to-be-saved 1))\r\r
+                      (format "these %d articles"\r\r
+                              gnus-number-of-articles-to-be-saved)\r\r
+                    "this article"))\r\r
+                 gnus-last-shell-command))))\r\r
+  (when (string-equal command "")\r\r
+    (setq command gnus-last-shell-command))\r\r
+  (gnus-eval-in-buffer-window gnus-article-buffer\r\r
+    (save-restriction\r\r
+      (widen)\r\r
+      (shell-command-on-region (point-min) (point-max) command nil)))\r\r
+  (setq gnus-last-shell-command command))\r\r
+\r\r
+;;; Article file names when saving.\r\r
+\r\r
+(defun gnus-capitalize-newsgroup (newsgroup)\r\r
+  "Capitalize NEWSGROUP name."\r\r
+  (when (not (zerop (length newsgroup)))\r\r
+    (concat (char-to-string (upcase (aref newsgroup 0)))\r\r
+           (substring newsgroup 1))))\r\r
+\r\r
+(defun gnus-Numeric-save-name (newsgroup headers &optional last-file)\r\r
+  "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.\r\r
+If variable `gnus-use-long-file-name' is non-nil, it is ~/News/News.group/num.\r\r
+Otherwise, it is like ~/News/news/group/num."\r\r
+  (let ((default\r\r
+         (expand-file-name\r\r
+          (concat (if (gnus-use-long-file-name 'not-save)\r\r
+                      (gnus-capitalize-newsgroup newsgroup)\r\r
+                    (gnus-newsgroup-directory-form newsgroup))\r\r
+                  "/" (int-to-string (mail-header-number headers)))\r\r
+          gnus-article-save-directory)))\r\r
+    (if (and last-file\r\r
+            (string-equal (file-name-directory default)\r\r
+                          (file-name-directory last-file))\r\r
+            (string-match "^[0-9]+$" (file-name-nondirectory last-file)))\r\r
+       default\r\r
+      (or last-file default))))\r\r
+\r\r
+(defun gnus-numeric-save-name (newsgroup headers &optional last-file)\r\r
+  "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.\r\r
+If variable `gnus-use-long-file-name' is non-nil, it is\r\r
+~/News/news.group/num. Otherwise, it is like ~/News/news/group/num."\r\r
+  (let ((default\r\r
+         (expand-file-name\r\r
+          (concat (if (gnus-use-long-file-name 'not-save)\r\r
+                      newsgroup\r\r
+                    (gnus-newsgroup-directory-form newsgroup))\r\r
+                  "/" (int-to-string (mail-header-number headers)))\r\r
+          gnus-article-save-directory)))\r\r
+    (if (and last-file\r\r
+            (string-equal (file-name-directory default)\r\r
+                          (file-name-directory last-file))\r\r
+            (string-match "^[0-9]+$" (file-name-nondirectory last-file)))\r\r
+       default\r\r
+      (or last-file default))))\r\r
+\r\r
+(defun gnus-Plain-save-name (newsgroup headers &optional last-file)\r\r
+  "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.\r\r
+If variable `gnus-use-long-file-name' is non-nil, it is\r\r
+~/News/News.group.  Otherwise, it is like ~/News/news/group/news."\r\r
+  (or last-file\r\r
+      (expand-file-name\r\r
+       (if (gnus-use-long-file-name 'not-save)\r\r
+          (gnus-capitalize-newsgroup newsgroup)\r\r
+        (concat (gnus-newsgroup-directory-form newsgroup) "/news"))\r\r
+       gnus-article-save-directory)))\r\r
+\r\r
+(defun gnus-plain-save-name (newsgroup headers &optional last-file)\r\r
+  "Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.\r\r
+If variable `gnus-use-long-file-name' is non-nil, it is\r\r
+~/News/news.group.  Otherwise, it is like ~/News/news/group/news."\r\r
+  (or last-file\r\r
+      (expand-file-name\r\r
+       (if (gnus-use-long-file-name 'not-save)\r\r
+          newsgroup\r\r
+        (concat (gnus-newsgroup-directory-form newsgroup) "/news"))\r\r
+       gnus-article-save-directory)))\r\r
+\r\r
+(eval-and-compile\r\r
+  (mapcar\r\r
+   (lambda (func)\r\r
+     (let (afunc gfunc)\r\r
+       (if (consp func)\r\r
+          (setq afunc (car func)\r\r
+                gfunc (cdr func))\r\r
+        (setq afunc func\r\r
+              gfunc (intern (format "gnus-%s" func))))\r\r
+       (fset gfunc\r\r
+            (if (not (fboundp afunc))\r\r
+                nil\r\r
+              `(lambda (&optional interactive &rest args)\r\r
+                 ,(documentation afunc t)\r\r
+                 (interactive (list t))\r\r
+                 (save-excursion\r\r
+                   (set-buffer gnus-article-buffer)\r\r
+                   (if interactive\r\r
+                       (call-interactively ',afunc)\r\r
+                     (apply ',afunc args))))))))\r\r
+   '(article-hide-headers\r\r
+     article-hide-boring-headers\r\r
+     article-treat-overstrike\r\r
+     (article-fill . gnus-article-word-wrap)\r\r
+     article-remove-cr\r\r
+     article-display-x-face\r\r
+     article-de-quoted-unreadable\r\r
+     article-mime-decode-quoted-printable\r\r
+     article-hide-pgp\r\r
+     article-hide-pem\r\r
+     article-hide-signature\r\r
+     article-remove-trailing-blank-lines\r\r
+     article-strip-leading-blank-lines\r\r
+     article-strip-multiple-blank-lines\r\r
+     article-strip-leading-space\r\r
+     article-strip-trailing-space\r\r
+     article-strip-blank-lines\r\r
+     article-strip-all-blank-lines\r\r
+     article-date-local\r\r
+     article-date-iso8601\r\r
+     article-date-original\r\r
+     article-date-ut\r\r
+     article-decode-mime-words\r\r
+     article-decode-charset\r\r
+     article-decode-encoded-words\r\r
+     article-date-user\r\r
+     article-date-lapsed\r\r
+     article-emphasize\r\r
+     article-treat-dumbquotes\r\r
+     article-normalize-headers\r\r
+     (article-show-all . gnus-article-show-all-headers))))\r\r
+\f\r\r
+;;;\r\r
+;;; Gnus article mode\r\r
+;;;\r\r
+\r\r
+(put 'gnus-article-mode 'mode-class 'special)\r\r
+\r\r
+(gnus-define-keys gnus-article-mode-map\r\r
+  " " gnus-article-goto-next-page\r\r
+  "\177" gnus-article-goto-prev-page\r\r
+  [delete] gnus-article-goto-prev-page\r\r
+  "\C-c^" gnus-article-refer-article\r\r
+  "h" gnus-article-show-summary\r\r
+  "s" gnus-article-show-summary\r\r
+  "\C-c\C-m" gnus-article-mail\r\r
+  "?" gnus-article-describe-briefly\r\r
+  gnus-mouse-2 gnus-article-push-button\r\r
+  "\r" gnus-article-press-button\r\r
+  "\t" gnus-article-next-button\r\r
+  "\M-\t" gnus-article-prev-button\r\r
+  "e" gnus-article-edit\r\r
+  "<" beginning-of-buffer\r\r
+  ">" end-of-buffer\r\r
+  "\C-c\C-i" gnus-info-find-node\r\r
+  "\C-c\C-b" gnus-bug\r\r
+\r\r
+  "\C-d" gnus-article-read-summary-keys\r\r
+  "\M-*" gnus-article-read-summary-keys\r\r
+  "\M-#" gnus-article-read-summary-keys\r\r
+  "\M-^" gnus-article-read-summary-keys\r\r
+  "\M-g" gnus-article-read-summary-keys)\r\r
+\r\r
+(substitute-key-definition\r\r
+ 'undefined 'gnus-article-read-summary-keys gnus-article-mode-map)\r\r
+\r\r
+(defun gnus-article-make-menu-bar ()\r\r
+  (gnus-turn-off-edit-menu 'article)\r\r
+  (unless (boundp 'gnus-article-article-menu)\r\r
+    (easy-menu-define\r\r
+     gnus-article-article-menu gnus-article-mode-map ""\r\r
+     '("Article"\r\r
+       ["Scroll forwards" gnus-article-goto-next-page t]\r\r
+       ["Scroll backwards" gnus-article-goto-prev-page t]\r\r
+       ["Show summary" gnus-article-show-summary t]\r\r
+       ["Fetch Message-ID at point" gnus-article-refer-article t]\r\r
+       ["Mail to address at point" gnus-article-mail t]\r\r
+       ["Send a bug report" gnus-bug t]))\r\r
+\r\r
+    (easy-menu-define\r\r
+     gnus-article-treatment-menu gnus-article-mode-map ""\r\r
+     '("Treatment"\r\r
+       ["Hide headers" gnus-article-hide-headers t]\r\r
+       ["Hide signature" gnus-article-hide-signature t]\r\r
+       ["Hide citation" gnus-article-hide-citation t]\r\r
+       ["Treat overstrike" gnus-article-treat-overstrike t]\r\r
+       ["Remove carriage return" gnus-article-remove-cr t]))\r\r
+\r\r
+    ;; Note "Commands" menu is defined in gnus-sum.el for consistency\r\r
+\r\r
+    (when (boundp 'gnus-summary-post-menu)\r\r
+      (define-key gnus-article-mode-map [menu-bar post]\r\r
+       (cons "Post" gnus-summary-post-menu)))\r\r
+\r\r
+    (gnus-run-hooks 'gnus-article-menu-hook)))\r\r
+\r\r
+(defun gnus-article-mode ()\r\r
+  "Major mode for displaying an article.\r\r
+\r\r
+All normal editing commands are switched off.\r\r
+\r\r
+The following commands are available in addition to all summary mode\r\r
+commands:\r\r
+\\<gnus-article-mode-map>\r\r
+\\[gnus-article-next-page]\t Scroll the article one page forwards\r\r
+\\[gnus-article-prev-page]\t Scroll the article one page backwards\r\r
+\\[gnus-article-refer-article]\t Go to the article referred to by an article id near point\r\r
+\\[gnus-article-show-summary]\t Display the summary buffer\r\r
+\\[gnus-article-mail]\t Send a reply to the address near point\r\r
+\\[gnus-article-describe-briefly]\t Describe the current mode briefly\r\r
+\\[gnus-info-find-node]\t Go to the Gnus info node"\r\r
+  (interactive)\r\r
+  (when (gnus-visual-p 'article-menu 'menu)\r\r
+    (gnus-article-make-menu-bar))\r\r
+  (gnus-simplify-mode-line)\r\r
+  (setq mode-name "Article")\r\r
+  (setq major-mode 'gnus-article-mode)\r\r
+  (make-local-variable 'minor-mode-alist)\r\r
+  (unless (assq 'gnus-show-mime minor-mode-alist)\r\r
+    (push (list 'gnus-show-mime " MIME") minor-mode-alist))\r\r
+  (use-local-map gnus-article-mode-map)\r\r
+  (gnus-update-format-specifications nil 'article-mode)\r\r
+  (set (make-local-variable 'page-delimiter) gnus-page-delimiter)\r\r
+  (make-local-variable 'gnus-page-broken)\r\r
+  (make-local-variable 'gnus-button-marker-list)\r\r
+  (make-local-variable 'gnus-article-current-summary)\r\r
+  (make-local-variable 'gnus-article-mime-handles)\r\r
+  (make-local-variable 'gnus-article-decoded-p)\r\r
+  (make-local-variable 'gnus-article-mime-handle-alist)\r\r
+  (gnus-set-default-directory)\r\r
+  (buffer-disable-undo)\r\r
+  (setq buffer-read-only t)\r\r
+  (set-syntax-table gnus-article-mode-syntax-table)\r\r
+  (gnus-run-hooks 'gnus-article-mode-hook))\r\r
+\r\r
+(defun gnus-article-setup-buffer ()\r\r
+  "Initialize the article buffer."\r\r
+  (let* ((name (if gnus-single-article-buffer "*Article*"\r\r
+                (concat "*Article " gnus-newsgroup-name "*")))\r\r
+        (original\r\r
+         (progn (string-match "\\*Article" name)\r\r
+                (concat " *Original Article"\r\r
+                        (substring name (match-end 0))))))\r\r
+    (setq gnus-article-buffer name)\r\r
+    (setq gnus-original-article-buffer original)\r\r
+    (setq gnus-article-mime-handle-alist nil)\r\r
+    ;; This might be a variable local to the summary buffer.\r\r
+    (unless gnus-single-article-buffer\r\r
+      (save-excursion\r\r
+       (set-buffer gnus-summary-buffer)\r\r
+       (setq gnus-article-buffer name)\r\r
+       (setq gnus-original-article-buffer original)\r\r
+       (gnus-set-global-variables)))\r\r
+    ;; Init original article buffer.\r\r
+    (save-excursion\r\r
+      (set-buffer (gnus-get-buffer-create gnus-original-article-buffer))\r\r
+      (setq major-mode 'gnus-original-article-mode)\r\r
+      (make-local-variable 'gnus-original-article))\r\r
+    (if (get-buffer name)\r\r
+       (save-excursion\r\r
+         (set-buffer name)\r\r
+         (buffer-disable-undo)\r\r
+         (setq buffer-read-only t)\r\r
+         (unless (eq major-mode 'gnus-article-mode)\r\r
+           (gnus-article-mode))\r\r
+         (current-buffer))\r\r
+      (save-excursion\r\r
+       (set-buffer (gnus-get-buffer-create name))\r\r
+       (gnus-article-mode)\r\r
+       (make-local-variable 'gnus-summary-buffer)\r\r
+       (gnus-summary-set-local-parameters gnus-newsgroup-name)\r\r
+       (current-buffer)))))\r\r
+\r\r
+;; Set article window start at LINE, where LINE is the number of lines\r\r
+;; from the head of the article.\r\r
+(defun gnus-article-set-window-start (&optional line)\r\r
+  (set-window-start\r\r
+   (get-buffer-window gnus-article-buffer t)\r\r
+   (save-excursion\r\r
+     (set-buffer gnus-article-buffer)\r\r
+     (goto-char (point-min))\r\r
+     (if (not line)\r\r
+        (point-min)\r\r
+       (gnus-message 6 "Moved to bookmark")\r\r
+       (search-forward "\n\n" nil t)\r\r
+       (forward-line line)\r\r
+       (point)))))\r\r
+\r\r
+;;; @@ article filters\r\r
+;;;\r\r
+\r\r
+(defun gnus-article-display-mime-message ()\r\r
+  "Article display method for MIME message."\r\r
+  ;; called from `gnus-original-article-buffer'.\r\r
+  (let ((charset (with-current-buffer gnus-summary-buffer\r\r
+                  default-mime-charset)))\r\r
+    (make-local-variable 'default-mime-charset)\r\r
+    (setq default-mime-charset charset)\r\r
+    (mime-display-message mime-message-structure\r\r
+                         gnus-article-buffer nil gnus-article-mode-map)\r\r
+    (make-local-variable 'default-mime-charset)\r\r
+    (setq default-mime-charset charset)\r\r
+    )\r\r
+  ;; `mime-display-message' changes current buffer to `gnus-article-buffer'.\r\r
+  (make-local-variable 'mime-button-mother-dispatcher)\r\r
+  (setq mime-button-mother-dispatcher\r\r
+       (function gnus-article-push-button))\r\r
+  (run-hooks 'gnus-mime-article-prepare-hook))\r\r
+\r\r
+(defun gnus-article-display-traditional-message ()\r\r
+  "Article display method for traditional message."\r\r
+  (set-buffer gnus-article-buffer)\r\r
+  (let (buffer-read-only)\r\r
+    (erase-buffer)\r\r
+    (insert-buffer-substring gnus-original-article-buffer)))\r\r
+\r\r
+(defun gnus-article-make-full-mail-header (&optional number charset)\r\r
+  "Create a new mail header structure in a raw article buffer."\r\r
+  (unless (and number charset)\r\r
+    (save-current-buffer\r\r
+      (set-buffer gnus-summary-buffer)\r\r
+      (unless number\r\r
+       (setq number (or (cdr gnus-article-current) 0)))\r\r
+      (unless charset\r\r
+       (setq charset (or default-mime-charset 'x-ctext)))))\r\r
+  (goto-char (point-min))\r\r
+  (let ((header-end (if (search-forward "\n\n" nil t)\r\r
+                       (1- (point))\r\r
+                     (goto-char (point-max))))\r\r
+       (chars (- (point-max) (point)))\r\r
+       (lines (count-lines (point) (point-max)))\r\r
+       (default-mime-charset charset)\r\r
+       xref)\r\r
+    (narrow-to-region (point-min) header-end)\r\r
+    (setq xref (std11-fetch-field "xref"))\r\r
+    (prog1\r\r
+       (make-full-mail-header\r\r
+        number\r\r
+        (std11-fetch-field "subject")\r\r
+        (std11-fetch-field "from")\r\r
+        (std11-fetch-field "date")\r\r
+        (std11-fetch-field "message-id")\r\r
+        (std11-fetch-field "references")\r\r
+        chars\r\r
+        lines\r\r
+        (when xref (concat "Xref: " xref)))\r\r
+      (widen))))\r\r
+\r\r
+(defun gnus-article-prepare (article &optional all-headers header)\r\r
+  "Prepare ARTICLE in article mode buffer.\r\r
+ARTICLE should either be an article number or a Message-ID.\r\r
+If ARTICLE is an id, HEADER should be the article headers.\r\r
+If ALL-HEADERS is non-nil, no headers are hidden."\r\r
+  (save-excursion\r\r
+    ;; Make sure we start in a summary buffer.\r\r
+    (unless (eq major-mode 'gnus-summary-mode)\r\r
+      (set-buffer gnus-summary-buffer))\r\r
+    (setq gnus-summary-buffer (current-buffer))\r\r
+    (let* ((gnus-article (if header (mail-header-number header) article))\r\r
+          (summary-buffer (current-buffer))\r\r
+          (gnus-tmp-internal-hook gnus-article-internal-prepare-hook)\r\r
+          (group gnus-newsgroup-name)\r\r
+          result)\r\r
+      (save-excursion\r\r
+       (gnus-article-setup-buffer)\r\r
+       (set-buffer gnus-original-article-buffer)\r\r
+       ;; Deactivate active regions.\r\r
+       (when (and (boundp 'transient-mark-mode)\r\r
+                  transient-mark-mode)\r\r
+         (setq mark-active nil))\r\r
+       (if (not (setq result (let ((buffer-read-only nil))\r\r
+                               (gnus-request-article-this-buffer\r\r
+                                article group))))\r\r
+           ;; There is no such article.\r\r
+           (save-excursion\r\r
+             (when (and (numberp article)\r\r
+                        (not (memq article gnus-newsgroup-sparse)))\r\r
+               (setq gnus-article-current\r\r
+                     (cons gnus-newsgroup-name article))\r\r
+               (set-buffer gnus-summary-buffer)\r\r
+               (setq gnus-current-article article)\r\r
+               (if (eq (gnus-article-mark article) gnus-undownloaded-mark)\r\r
+                   (progn\r\r
+                     (gnus-summary-set-agent-mark article)\r\r
+                     (message "Message marked for downloading"))\r\r
+                 (gnus-summary-mark-article article gnus-canceled-mark)\r\r
+                 (unless (memq article gnus-newsgroup-sparse)\r\r
+                   (gnus-error 1\r\r
+                    "No such article (may have expired or been canceled)")))))\r\r
+         (if (or (eq result 'pseudo)\r\r
+                 (eq result 'nneething))\r\r
+             (progn\r\r
+               (save-excursion\r\r
+                 (set-buffer summary-buffer)\r\r
+                 (push article gnus-newsgroup-history)\r\r
+                 (setq gnus-last-article gnus-current-article\r\r
+                       gnus-current-article 0\r\r
+                       gnus-current-headers nil\r\r
+                       gnus-article-current nil)\r\r
+                 (if (eq result 'nneething)\r\r
+                     (gnus-configure-windows 'summary)\r\r
+                   (gnus-configure-windows 'article))\r\r
+                 (gnus-set-global-variables))\r\r
+               (let ((gnus-article-mime-handle-alist-1\r\r
+                      gnus-article-mime-handle-alist))\r\r
+                 (gnus-set-mode-line 'article)))\r\r
+           ;; The result from the `request' was an actual article -\r\r
+           ;; or at least some text that is now displayed in the\r\r
+           ;; article buffer.\r\r
+           (when (and (numberp article)\r\r
+                      (not (eq article gnus-current-article)))\r\r
+             ;; Seems like a new article has been selected.\r\r
+             ;; `gnus-current-article' must be an article number.\r\r
+             (save-excursion\r\r
+               (set-buffer summary-buffer)\r\r
+               (push article gnus-newsgroup-history)\r\r
+               (setq gnus-last-article gnus-current-article\r\r
+                     gnus-current-article article\r\r
+                     gnus-current-headers\r\r
+                     (gnus-summary-article-header gnus-current-article)\r\r
+                     gnus-article-current\r\r
+                     (cons gnus-newsgroup-name gnus-current-article))\r\r
+               (unless (vectorp gnus-current-headers)\r\r
+                 (setq gnus-current-headers nil))\r\r
+               (gnus-summary-goto-subject gnus-current-article)\r\r
+               (when (gnus-summary-show-thread)\r\r
+                 ;; If the summary buffer really was folded, the\r\r
+                 ;; previous goto may not actually have gone to\r\r
+                 ;; the right article, but the thread root instead.\r\r
+                 ;; So we go again.\r\r
+                 (gnus-summary-goto-subject gnus-current-article))\r\r
+               (gnus-run-hooks 'gnus-mark-article-hook)\r\r
+               (gnus-set-mode-line 'summary)\r\r
+               (when (gnus-visual-p 'article-highlight 'highlight)\r\r
+                 (gnus-run-hooks 'gnus-visual-mark-article-hook))\r\r
+               ;; Set the global newsgroup variables here.\r\r
+               ;; Suggested by Jim Sisolak\r\r
+               ;; <sisolak@trans4.neep.wisc.edu>.\r\r
+               (gnus-set-global-variables)\r\r
+               (setq gnus-have-all-headers\r\r
+                     (or all-headers gnus-show-all-headers))))\r\r
+           (when (or (numberp article)\r\r
+                     (stringp article))\r\r
+             (gnus-article-prepare-display)\r\r
+             ;; Do page break.\r\r
+             (goto-char (point-min))\r\r
+             (setq gnus-page-broken\r\r
+                   (when gnus-break-pages\r\r
+                     (gnus-narrow-to-page)\r\r
+                     t)))\r\r
+           (let ((gnus-article-mime-handle-alist-1\r\r
+                  gnus-article-mime-handle-alist))\r\r
+             (gnus-set-mode-line 'article))\r\r
+           (gnus-configure-windows 'article)\r\r
+           (article-goto-body)\r\r
+           (set-window-point (get-buffer-window (current-buffer)) (point))\r\r
+           t))))))\r\r
+\r\r
+(defun gnus-article-prepare-display ()\r\r
+  "Make the current buffer look like a nice article."\r\r
+  (let ((method\r\r
+        (if gnus-show-mime\r\r
+            (progn\r\r
+              (setq mime-message-structure gnus-current-headers)\r\r
+              gnus-article-display-method-for-mime)\r\r
+          gnus-article-display-method-for-traditional)))\r\r
+    (gnus-run-hooks 'gnus-tmp-internal-hook)\r\r
+    (gnus-run-hooks 'gnus-article-prepare-hook)\r\r
+    ;; Display message.\r\r
+    (funcall method)\r\r
+    ;; Associate this article with the current summary buffer.\r\r
+    (setq gnus-article-current-summary (current-buffer))\r\r
+    ;; Perform the article display hooks.\r\r
+    (gnus-run-hooks 'gnus-article-display-hook)))\r\r
+\r\r
+;;;\r\r
+;;; Gnus MIME viewing functions\r\r
+;;;\r\r
+\r\r
+(defvar gnus-mime-button-line-format "%{%([%p. %d%T]%)%}%e\n"\r\r
+  "The following specs can be used:\r\r
+%t  The MIME type\r\r
+%T  MIME type, along with additional info\r\r
+%n  The `name' parameter\r\r
+%d  The description, if any\r\r
+%l  The length of the encoded part\r\r
+%p  The part identifier number\r\r
+%e  Dots if the part isn't displayed")\r\r
+\r\r
+(defvar gnus-mime-button-line-format-alist\r\r
+  '((?t gnus-tmp-type ?s)\r\r
+    (?T gnus-tmp-type-long ?s)\r\r
+    (?n gnus-tmp-name ?s)\r\r
+    (?d gnus-tmp-description ?s)\r\r
+    (?p gnus-tmp-id ?s)\r\r
+    (?l gnus-tmp-length ?d)\r\r
+    (?e gnus-tmp-dots ?s)))\r\r
+\r\r
+(defvar gnus-mime-button-commands\r\r
+  '((gnus-article-press-button "\r"    "Toggle Display")\r\r
+    (gnus-mime-view-part       "v"     "View Interactively...")\r\r
+    (gnus-mime-save-part       "o"     "Save...")\r\r
+    (gnus-mime-copy-part       "c"     "View As Text, In Other Buffer")\r\r
+    (gnus-mime-inline-part     "i"     "View As Text, In This Buffer")\r\r
+    (gnus-mime-internalize-part        "E"     "View Internally")\r\r
+    (gnus-mime-externalize-part        "e"     "View Externally")\r\r
+    (gnus-mime-pipe-part       "|"     "Pipe To Command...")))\r\r
+\r\r
+(defun gnus-article-mime-part-status ()\r\r
+  (if gnus-article-mime-handle-alist-1\r\r
+      (format " (%d parts)" (length gnus-article-mime-handle-alist-1))\r\r
+    ""))\r\r
+\r\r
+(defvar gnus-mime-button-map nil)\r\r
+(unless gnus-mime-button-map\r\r
+  (setq gnus-mime-button-map (make-sparse-keymap))\r\r
+  (set-keymap-parent gnus-mime-button-map gnus-article-mode-map)\r\r
+  (define-key gnus-mime-button-map gnus-mouse-2 'gnus-article-push-button)\r\r
+  (define-key gnus-mime-button-map gnus-mouse-3 'gnus-mime-button-menu)\r\r
+  (mapcar (lambda (c)\r\r
+           (define-key gnus-mime-button-map (cadr c) (car c)))\r\r
+         gnus-mime-button-commands))\r\r
+\r\r
+(defun gnus-mime-button-menu (event)\r\r
+  "Construct a context-sensitive menu of MIME commands."\r\r
+  (interactive "e")\r\r
+  (gnus-article-check-buffer)\r\r
+  (let ((response (x-popup-menu \r\r
+                  t `("MIME Part" \r\r
+                      ("" ,@(mapcar (lambda (c)\r\r
+                                      (cons (caddr c) (car c)))\r\r
+                                    gnus-mime-button-commands)))))\r\r
+        (pos (event-start event)))\r\r
+    (when response\r\r
+      (set-buffer (window-buffer (posn-window pos)))\r\r
+      (goto-char (posn-point pos))\r\r
+      (funcall response))))\r\r
+\r\r
+(defun gnus-mime-view-all-parts (&optional handles)\r\r
+  "View all the MIME parts."\r\r
+  (interactive)\r\r
+  (save-current-buffer\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (let ((handles (or handles gnus-article-mime-handles))\r\r
+         (rfc2047-default-charset gnus-newsgroup-default-charset)\r\r
+         (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))\r\r
+      (if (stringp (car handles))\r\r
+         (gnus-mime-view-all-parts (cdr handles))\r\r
+       (mapcar 'mm-display-part handles)))))\r\r
+\r\r
+(defun gnus-mime-save-part ()\r\r
+  "Save the MIME part under point."\r\r
+  (interactive)\r\r
+  (gnus-article-check-buffer)\r\r
+  (let ((data (get-text-property (point) 'gnus-data)))\r\r
+    (mm-save-part data)))\r\r
+\r\r
+(defun gnus-mime-pipe-part ()\r\r
+  "Pipe the MIME part under point to a process."\r\r
+  (interactive)\r\r
+  (gnus-article-check-buffer)\r\r
+  (let ((data (get-text-property (point) 'gnus-data)))\r\r
+    (mm-pipe-part data)))\r\r
+\r\r
+(defun gnus-mime-view-part ()\r\r
+  "Interactively choose a view method for the MIME part under point."\r\r
+  (interactive)\r\r
+  (gnus-article-check-buffer)\r\r
+  (let ((data (get-text-property (point) 'gnus-data))\r\r
+       (url-standalone-mode (not gnus-plugged)))\r\r
+    (mm-interactively-view-part data)))\r\r
+\r\r
+(defun gnus-mime-copy-part (&optional handle)\r\r
+  "Put the the MIME part under point into a new buffer."\r\r
+  (interactive)\r\r
+  (gnus-article-check-buffer)\r\r
+  (let* ((handle (or handle (get-text-property (point) 'gnus-data)))\r\r
+        (contents (mm-get-part handle))|\r\r
+        (base (file-name-nondirectory\r\r
+               (or\r\r
+                (mail-content-type-get (mm-handle-type handle) 'name)\r\r
+                (mail-content-type-get (mm-handle-type handle)\r\r
+                                       'filename)\r\r
+                "*decoded*")))\r\r
+        (buffer (generate-new-buffer base)))\r\r
+    (switch-to-buffer buffer)\r\r
+    (insert contents)\r\r
+    ;; We do it this way to make `normal-mode' set the appropriate mode.\r\r
+    (unwind-protect\r\r
+       (progn\r\r
+         (setq buffer-file-name (expand-file-name base))\r\r
+         (normal-mode))\r\r
+      (setq buffer-file-name nil))\r\r
+    (goto-char (point-min))))\r\r
+\r\r
+(defun gnus-mime-inline-part (&optional charset)\r\r
+  "Insert the MIME part under point into the current buffer."\r\r
+  (interactive "P") ; For compatibility reasons we are not using "z".\r\r
+  (gnus-article-check-buffer)\r\r
+  (let* ((data (get-text-property (point) 'gnus-data))\r\r
+        contents\r\r
+        (url-standalone-mode (not gnus-plugged))\r\r
+        (b (point))\r\r
+        buffer-read-only)\r\r
+    (if (mm-handle-undisplayer data)\r\r
+       (mm-remove-part data)\r\r
+      (setq contents (mm-get-part data))\r\r
+      (forward-line 2)\r\r
+      (when charset \r\r
+       (unless (symbolp charset)\r\r
+         (setq charset (mm-read-coding-system "Charset: ")))\r\r
+       (setq contents (mm-decode-coding-string contents charset)))\r\r
+      (mm-insert-inline data contents)\r\r
+      (goto-char b))))\r\r
+\r\r
+(defun gnus-mime-externalize-part (&optional handle)\r\r
+  "View the MIME part under point with an external viewer."\r\r
+  (interactive)\r\r
+  (gnus-article-check-buffer)\r\r
+  (let* ((handle (or handle (get-text-property (point) 'gnus-data)))\r\r
+        (url-standalone-mode (not gnus-plugged))\r\r
+        (mm-user-display-methods nil)\r\r
+        (mm-all-images-fit t)\r\r
+        (rfc2047-default-charset gnus-newsgroup-default-charset)\r\r
+        (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))\r\r
+    (if (mm-handle-undisplayer handle)\r\r
+       (mm-remove-part handle)\r\r
+      (mm-display-part handle))))\r\r
+\r\r
+(defun gnus-mime-internalize-part (&optional handle)\r\r
+  "View the MIME part under point with an internal viewer."\r\r
+  (interactive)\r\r
+  (gnus-article-check-buffer)\r\r
+  (let* ((handle (or handle (get-text-property (point) 'gnus-data)))\r\r
+        (url-standalone-mode (not gnus-plugged))\r\r
+        (mm-user-display-methods '((".*" . inline)))\r\r
+        (mm-all-images-fit t)\r\r
+        (rfc2047-default-charset gnus-newsgroup-default-charset)\r\r
+        (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))\r\r
+    (if (mm-handle-undisplayer handle)\r\r
+       (mm-remove-part handle)\r\r
+      (mm-display-part handle))))\r\r
+\r\r
+(defun gnus-article-part-wrapper (n function)\r\r
+  (save-current-buffer\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (when (> n (length gnus-article-mime-handle-alist))\r\r
+      (error "No such part"))\r\r
+    (let ((handle (cdr (assq n gnus-article-mime-handle-alist))))\r\r
+      (funcall function handle))))\r\r
+\r\r
+(defun gnus-article-pipe-part (n)\r\r
+  "Pipe MIME part N, which is the numerical prefix."\r\r
+  (interactive "p")\r\r
+  (gnus-article-part-wrapper n 'mm-pipe-part))\r\r
+  \r\r
+(defun gnus-article-save-part (n)\r\r
+  "Save MIME part N, which is the numerical prefix."\r\r
+  (interactive "p")\r\r
+  (gnus-article-part-wrapper n 'mm-save-part))\r\r
+  \r\r
+(defun gnus-article-interactively-view-part (n)\r\r
+  "Pipe MIME part N, which is the numerical prefix."\r\r
+  (interactive "p")\r\r
+  (gnus-article-part-wrapper n 'mm-interactively-view-part))\r\r
+  \r\r
+(defun gnus-article-copy-part (n)\r\r
+  "Pipe MIME part N, which is the numerical prefix."\r\r
+  (interactive "p")\r\r
+  (gnus-article-part-wrapper n 'gnus-mime-copy-part))\r\r
+\r\r
+(defun gnus-article-externalize-part (n)\r\r
+  "Pipe MIME part N, which is the numerical prefix."\r\r
+  (interactive "p")\r\r
+  (gnus-article-part-wrapper n 'gnus-mime-externalize-part))\r\r
+  \r\r
+(defun gnus-article-view-part (n)\r\r
+  "View MIME part N, which is the numerical prefix."\r\r
+  (interactive "p")\r\r
+  (save-current-buffer\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (when (> n (length gnus-article-mime-handle-alist))\r\r
+      (error "No such part"))\r\r
+    (let ((handle (cdr (assq n gnus-article-mime-handle-alist))))\r\r
+      (when (gnus-article-goto-part n)\r\r
+       (if (equal (car handle) "multipart/alternative")\r\r
+           (gnus-article-press-button)\r\r
+         (when (eq (gnus-mm-display-part handle) 'internal)\r\r
+           (gnus-set-window-start)))))))\r\r
+\r\r
+(defun gnus-mm-display-part (handle)\r\r
+  "Display HANDLE and fix MIME button."\r\r
+  (let ((id (get-text-property (point) 'gnus-part))\r\r
+       (point (point))\r\r
+       buffer-read-only)\r\r
+    (delete-region (gnus-point-at-bol) (progn (forward-line 1) (point)))\r\r
+    (gnus-insert-mime-button\r\r
+     handle id (list (not (mm-handle-displayed-p handle))))\r\r
+    (prog1\r\r
+       (let ((window (selected-window))\r\r
+             (rfc2047-default-charset gnus-newsgroup-default-charset)\r\r
+             (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))\r\r
+         (save-excursion\r\r
+           (unwind-protect\r\r
+               (let ((win (get-buffer-window (current-buffer) t)))\r\r
+                 (if win\r\r
+                     (select-window win))\r\r
+                 (goto-char point)\r\r
+                 (forward-line)\r\r
+                 (mm-display-part handle))\r\r
+             (select-window window))))\r\r
+      (goto-char point))))\r\r
+\r\r
+(defun gnus-article-goto-part (n)\r\r
+  "Go to MIME part N."\r\r
+  (let ((point (text-property-any (point-min) (point-max) 'gnus-part n)))\r\r
+    (when point\r\r
+      (goto-char point))))\r\r
+\r\r
+(defun gnus-insert-mime-button (handle gnus-tmp-id &optional displayed)\r\r
+  (let ((gnus-tmp-name\r\r
+        (or (mail-content-type-get (mm-handle-type handle)\r\r
+                                   'name)\r\r
+            (mail-content-type-get (mm-handle-disposition handle)\r\r
+                                   'filename)\r\r
+            ""))\r\r
+       (gnus-tmp-type (car (mm-handle-type handle)))\r\r
+       (gnus-tmp-description (or (mm-handle-description handle)\r\r
+                                 ""))\r\r
+       (gnus-tmp-dots\r\r
+        (if (if displayed (car displayed)\r\r
+              (mm-handle-displayed-p handle))\r\r
+            "" "..."))\r\r
+       (gnus-tmp-length (with-current-buffer (mm-handle-buffer handle)\r\r
+                          (buffer-size)))\r\r
+       gnus-tmp-type-long b e)\r\r
+    (setq gnus-tmp-type-long (concat gnus-tmp-type\r\r
+                                    (and (not (equal gnus-tmp-name ""))\r\r
+                                         (concat "; " gnus-tmp-name))))\r\r
+    (or (equal gnus-tmp-description "")\r\r
+       (setq gnus-tmp-type-long (concat " --- " gnus-tmp-type-long)))\r\r
+    (unless (bolp)\r\r
+      (insert "\n"))\r\r
+    (setq b (point))\r\r
+    (gnus-eval-format\r\r
+     gnus-mime-button-line-format gnus-mime-button-line-format-alist\r\r
+     `(local-map ,gnus-mime-button-map\r\r
+                keymap ,gnus-mime-button-map\r\r
+                gnus-callback gnus-mm-display-part\r\r
+                gnus-part ,gnus-tmp-id\r\r
+                article-type annotation\r\r
+                gnus-data ,handle))\r\r
+    (setq e (point))\r\r
+    (widget-convert-button 'link b e\r\r
+                          :mime-handle handle\r\r
+                          :action 'gnus-widget-press-button\r\r
+                          :button-keymap gnus-mime-button-map\r\r
+                          :help-echo\r\r
+                          (lambda (widget)\r\r
+                            ;; Needed to properly clear the message\r\r
+                            ;; due to a bug in wid-edit\r\r
+                            (setq help-echo-owns-message t)\r\r
+                            (format\r\r
+                             "Click to %s the MIME part; %s for more options"\r\r
+                             (if (mm-handle-displayed-p\r\r
+                                  (widget-get widget :mime-handle))\r\r
+                                 "hide" "show")\r\r
+                             (if gnus-xemacs "button3" "mouse-3"))))))\r\r
+\r\r
+(defun gnus-widget-press-button (elems el)\r\r
+  (goto-char (widget-get elems :from))\r\r
+  (let ((url-standalone-mode (not gnus-plugged)))\r\r
+    (gnus-article-press-button)))\r\r
+\r\r
+(defun gnus-display-mime (&optional ihandles)\r\r
+  "Insert MIME buttons in the buffer."\r\r
+  (save-excursion\r\r
+    (save-selected-window\r\r
+      (let ((window (get-buffer-window gnus-article-buffer))\r\r
+           (point (point)))\r\r
+       (when window\r\r
+         (select-window window)\r\r
+         ;; We have to do this since selecting the window\r\r
+         ;; may change the point.  So we set the window point.\r\r
+         (set-window-point window point)))\r\r
+      (let* ((handles (or ihandles (mm-dissect-buffer) (mm-uu-dissect)))\r\r
+            handle name type b e display)\r\r
+       (unless ihandles\r\r
+         ;; Top-level call; we clean up.\r\r
+         (mm-destroy-parts gnus-article-mime-handles)\r\r
+         (setq gnus-article-mime-handles handles\r\r
+               gnus-article-mime-handle-alist nil)\r\r
+         ;; We allow users to glean info from the handles.\r\r
+         (when gnus-article-mime-part-function\r\r
+           (gnus-mime-part-function handles)))\r\r
+       (when (and handles\r\r
+                  (or (not (stringp (car handles)))\r\r
+                      (cdr handles)))\r\r
+         (unless ihandles\r\r
+           ;; Clean up for mime parts.\r\r
+           (article-goto-body)\r\r
+           (delete-region (point) (point-max)))\r\r
+         (gnus-mime-display-part handles))))))\r\r
+\r\r
+(defun gnus-mime-display-part (handle)\r\r
+  (cond\r\r
+   ;; Single part.\r\r
+   ((not (stringp (car handle)))\r\r
+    (gnus-mime-display-single handle))\r\r
+   ;; multipart/alternative\r\r
+   ((equal (car handle) "multipart/alternative")\r\r
+    (let ((id (1+ (length gnus-article-mime-handle-alist))))\r\r
+      (push (cons id handle) gnus-article-mime-handle-alist)\r\r
+      (gnus-mime-display-alternative (cdr handle) nil nil id)))\r\r
+   ;; multipart/related\r\r
+   ((equal (car handle) "multipart/related")\r\r
+    ;;;!!!We should find the start part, but we just default\r\r
+    ;;;!!!to the first part.\r\r
+    (gnus-mime-display-part (cadr handle)))\r\r
+   ;; Other multiparts are handled like multipart/mixed.\r\r
+   (t\r\r
+    (gnus-mime-display-mixed (cdr handle)))))\r\r
+\r\r
+(defun gnus-mime-part-function (handles)\r\r
+  (if (stringp (car handles))\r\r
+      (mapcar 'gnus-mime-part-function (cdr handles))\r\r
+    (funcall gnus-article-mime-part-function handles)))\r\r
+\r\r
+(defun gnus-mime-display-mixed (handles)\r\r
+  (mapcar 'gnus-mime-display-part handles))\r\r
+\r\r
+(defun gnus-mime-display-single (handle)\r\r
+  (let ((type (car (mm-handle-type handle)))\r\r
+       (ignored gnus-ignored-mime-types)\r\r
+       (not-attachment t)\r\r
+       (move nil)\r\r
+       display text)\r\r
+    (catch 'ignored\r\r
+      (progn\r\r
+       (while ignored\r\r
+         (when (string-match (pop ignored) type)\r\r
+           (throw 'ignored nil)))\r\r
+       (if (and (setq not-attachment\r\r
+                      (or (not (mm-handle-disposition handle))\r\r
+                          (equal (car (mm-handle-disposition handle))\r\r
+                                 "inline")))\r\r
+                (mm-automatic-display-p type)\r\r
+                (or (mm-inlinable-part-p type)\r\r
+                    (mm-automatic-external-display-p type)))\r\r
+           (setq display t)\r\r
+         (when (equal (car (split-string type "/"))\r\r
+                      "text")\r\r
+           (setq text t)))\r\r
+       (let ((id (1+ (length gnus-article-mime-handle-alist))))\r\r
+         (push (cons id handle) gnus-article-mime-handle-alist)\r\r
+         (when (or (not display)\r\r
+                   (not (gnus-unbuttonized-mime-type-p type)))\r\r
+           (gnus-article-insert-newline)\r\r
+           (gnus-insert-mime-button\r\r
+            handle id (list (or display\r\r
+                                (and not-attachment text))))\r\r
+           (gnus-article-insert-newline)\r\r
+           (gnus-article-insert-newline)\r\r
+           (setq move t)))\r\r
+       (cond\r\r
+        (display\r\r
+         (when move\r\r
+           (forward-line -2))\r\r
+         (let ((rfc2047-default-charset gnus-newsgroup-default-charset)\r\r
+               (mm-charset-iso-8859-1-forced \r\r
+                gnus-newsgroup-iso-8859-1-forced))\r\r
+           (mm-display-part handle t))\r\r
+         (goto-char (point-max)))\r\r
+        ((and text not-attachment)\r\r
+         (when move\r\r
+           (forward-line -2))\r\r
+         (gnus-article-insert-newline)\r\r
+         (mm-insert-inline handle (mm-get-part handle))\r\r
+         (goto-char (point-max))))))))\r\r
+\r\r
+(defun gnus-unbuttonized-mime-type-p (type)\r\r
+  "Say whether TYPE is to be unbuttonized."\r\r
+  (unless gnus-inhibit-mime-unbuttonizing\r\r
+    (catch 'found\r\r
+      (let ((types gnus-unbuttonized-mime-types))\r\r
+       (while types\r\r
+         (when (string-match (pop types) type)\r\r
+           (throw 'found t)))))))\r\r
+\r\r
+(defun gnus-article-insert-newline ()\r\r
+  "Insert a newline, but mark it as undeletable."\r\r
+  (gnus-put-text-property\r\r
+   (point) (progn (insert "\n") (point)) 'gnus-undeletable t))\r\r
+\r\r
+(defun gnus-mime-display-alternative (handles &optional preferred ibegend id)\r\r
+  (let* ((preferred (or preferred (mm-preferred-alternative handles)))\r\r
+        (ihandles handles)\r\r
+        (point (point))\r\r
+        handle buffer-read-only from props begend not-pref)\r\r
+    (save-window-excursion\r\r
+      (save-restriction\r\r
+       (when ibegend\r\r
+         (narrow-to-region (car ibegend)\r\r
+                           (or (cdr ibegend)\r\r
+                               (progn\r\r
+                                 (goto-char (car ibegend))\r\r
+                                 (forward-line 2)\r\r
+                                 (point))))\r\r
+         (delete-region (point-min) (point-max))\r\r
+         (mm-remove-parts handles))\r\r
+       (setq begend (list (point-marker)))\r\r
+       ;; Do the toggle.\r\r
+       (unless (setq not-pref (cadr (member preferred ihandles)))\r\r
+         (setq not-pref (car ihandles)))\r\r
+       (when (or ibegend\r\r
+                 (not (gnus-unbuttonized-mime-type-p\r\r
+                       "multipart/alternative")))\r\r
+         (gnus-add-text-properties\r\r
+          (setq from (point))\r\r
+          (progn\r\r
+            (insert (format "%d.  " id))\r\r
+            (point))\r\r
+          `(gnus-callback\r\r
+            (lambda (handles)\r\r
+              (unless ,(not ibegend)\r\r
+                (setq gnus-article-mime-handle-alist\r\r
+                      ',gnus-article-mime-handle-alist))\r\r
+              (gnus-mime-display-alternative\r\r
+               ',ihandles ',not-pref ',begend ,id))\r\r
+            local-map ,gnus-mime-button-map\r\r
+            ,gnus-mouse-face-prop ,gnus-article-mouse-face\r\r
+            face ,gnus-article-button-face\r\r
+            keymap ,gnus-mime-button-map\r\r
+            gnus-part ,id\r\r
+            gnus-data ,handle))\r\r
+         (widget-convert-button 'link from (point)\r\r
+                                :action 'gnus-widget-press-button\r\r
+                                :button-keymap gnus-widget-button-keymap)\r\r
+         ;; Do the handles\r\r
+         (while (setq handle (pop handles))\r\r
+           (gnus-add-text-properties\r\r
+            (setq from (point))\r\r
+            (progn\r\r
+              (insert (format "(%c) %-18s"\r\r
+                              (if (equal handle preferred) ?* ? )\r\r
+                              (if (stringp (car handle))\r\r
+                                  (car handle)\r\r
+                                (car (mm-handle-type handle)))))\r\r
+              (point))\r\r
+            `(gnus-callback\r\r
+              (lambda (handles)\r\r
+                (unless ,(not ibegend)\r\r
+                  (setq gnus-article-mime-handle-alist\r\r
+                        ',gnus-article-mime-handle-alist))\r\r
+                (gnus-mime-display-alternative\r\r
+                 ',ihandles ',handle ',begend ,id))\r\r
+              local-map ,gnus-mime-button-map\r\r
+              ,gnus-mouse-face-prop ,gnus-article-mouse-face\r\r
+              face ,gnus-article-button-face\r\r
+              keymap ,gnus-mime-button-map\r\r
+              gnus-part ,id\r\r
+              gnus-data ,handle))\r\r
+           (widget-convert-button 'link from (point)\r\r
+                                  :action 'gnus-widget-press-button\r\r
+                                  :button-keymap gnus-widget-button-keymap)\r\r
+           (insert "  "))\r\r
+         (insert "\n\n"))\r\r
+       (when preferred\r\r
+         (if (stringp (car preferred))\r\r
+             (gnus-display-mime preferred)\r\r
+           (let ((rfc2047-default-charset gnus-newsgroup-default-charset)\r\r
+                 (mm-charset-iso-8859-1-forced \r\r
+                  gnus-newsgroup-iso-8859-1-forced))\r\r
+             (mm-display-part preferred)))\r\r
+         (goto-char (point-max))\r\r
+         (setcdr begend (point-marker)))))\r\r
+    (when ibegend\r\r
+      (goto-char point))))\r\r
+\r\r
+(defun gnus-article-wash-status ()\r\r
+  "Return a string which display status of article washing."\r\r
+  (save-excursion\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (let ((cite (gnus-article-hidden-text-p 'cite))\r\r
+         (headers (gnus-article-hidden-text-p 'headers))\r\r
+         (boring (gnus-article-hidden-text-p 'boring-headers))\r\r
+         (pgp (gnus-article-hidden-text-p 'pgp))\r\r
+         (pem (gnus-article-hidden-text-p 'pem))\r\r
+         (signature (gnus-article-hidden-text-p 'signature))\r\r
+         (overstrike (gnus-article-hidden-text-p 'overstrike))\r\r
+         (emphasis (gnus-article-hidden-text-p 'emphasis))\r\r
+         (mime gnus-show-mime))\r\r
+      (format "%c%c%c%c%c%c%c"\r\r
+             (if cite ?c ? )\r\r
+             (if (or headers boring) ?h ? )\r\r
+             (if (or pgp pem) ?p ? )\r\r
+             (if signature ?s ? )\r\r
+             (if overstrike ?o ? )\r\r
+             (if mime ?m ? )\r\r
+             (if emphasis ?e ? )))))\r\r
+\r\r
+(fset 'gnus-article-hide-headers-if-wanted 'gnus-article-maybe-hide-headers)\r\r
+\r\r
+(defun gnus-article-maybe-hide-headers ()\r\r
+  "Hide unwanted headers if `gnus-have-all-headers' is nil.\r\r
+Provided for backwards compatibility."\r\r
+  (or (save-excursion (set-buffer gnus-summary-buffer) gnus-have-all-headers)\r\r
+      gnus-inhibit-hiding\r\r
+      (gnus-article-hide-headers)))\r\r
+\r\r
+;;; Article savers.\r\r
+\r\r
+(defun gnus-output-to-file (file-name)\r\r
+  "Append the current article to a file named FILE-NAME."\r\r
+  (let ((artbuf (current-buffer)))\r\r
+    (with-temp-buffer\r\r
+      (insert-buffer-substring artbuf)\r\r
+      ;; Append newline at end of the buffer as separator, and then\r\r
+      ;; save it to file.\r\r
+      (goto-char (point-max))\r\r
+      (insert "\n")\r\r
+      (append-to-file (point-min) (point-max) file-name)\r\r
+      t)))\r\r
+\r\r
+(defun gnus-narrow-to-page (&optional arg)\r\r
+  "Narrow the article buffer to a page.\r\r
+If given a numerical ARG, move forward ARG pages."\r\r
+  (interactive "P")\r\r
+  (setq arg (if arg (prefix-numeric-value arg) 0))\r\r
+  (save-excursion\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (goto-char (point-min))\r\r
+    (widen)\r\r
+    ;; Remove any old next/prev buttons.\r\r
+    (when (gnus-visual-p 'page-marker)\r\r
+      (let ((buffer-read-only nil))\r\r
+       (gnus-remove-text-with-property 'gnus-prev)\r\r
+       (gnus-remove-text-with-property 'gnus-next)))\r\r
+    (when\r\r
+       (cond ((< arg 0)\r\r
+              (re-search-backward page-delimiter nil 'move (1+ (abs arg))))\r\r
+             ((> arg 0)\r\r
+              (re-search-forward page-delimiter nil 'move arg)))\r\r
+      (goto-char (match-end 0)))\r\r
+    (narrow-to-region\r\r
+     (point)\r\r
+     (if (re-search-forward page-delimiter nil 'move)\r\r
+        (match-beginning 0)\r\r
+       (point)))\r\r
+    (when (and (gnus-visual-p 'page-marker)\r\r
+              (not (= (point-min) 1)))\r\r
+      (save-excursion\r\r
+       (goto-char (point-min))\r\r
+       (gnus-insert-prev-page-button)))\r\r
+    (when (and (gnus-visual-p 'page-marker)\r\r
+              (< (+ (point-max) 2) (buffer-size)))\r\r
+      (save-excursion\r\r
+       (goto-char (point-max))\r\r
+       (gnus-insert-next-page-button)))))\r\r
+\r\r
+;; Article mode commands\r\r
+\r\r
+(defun gnus-article-goto-next-page ()\r\r
+  "Show the next page of the article."\r\r
+  (interactive)\r\r
+  (when (gnus-article-next-page)\r\r
+    (goto-char (point-min))\r\r
+    (gnus-article-read-summary-keys nil (gnus-character-to-event ?n))))\r\r
+\r\r
+(defun gnus-article-goto-prev-page ()\r\r
+  "Show the next page of the article."\r\r
+  (interactive)\r\r
+  (if (bobp) (gnus-article-read-summary-keys nil (gnus-character-to-event ?p))\r\r
+    (gnus-article-prev-page nil)))\r\r
+\r\r
+(defun gnus-article-next-page (&optional lines)\r\r
+  "Show the next page of the current article.\r\r
+If end of article, return non-nil.  Otherwise return nil.\r\r
+Argument LINES specifies lines to be scrolled up."\r\r
+  (interactive "p")\r\r
+  (move-to-window-line -1)\r\r
+  (if (save-excursion\r\r
+       (end-of-line)\r\r
+       (and (pos-visible-in-window-p)  ;Not continuation line.\r\r
+            (eobp)))\r\r
+      ;; Nothing in this page.\r\r
+      (if (or (not gnus-page-broken)\r\r
+             (save-excursion\r\r
+               (save-restriction\r\r
+                 (widen) (forward-line 1) (eobp)))) ;Real end-of-buffer?\r\r
+         t                             ;Nothing more.\r\r
+       (gnus-narrow-to-page 1)         ;Go to next page.\r\r
+       nil)\r\r
+    ;; More in this page.\r\r
+    (let ((scroll-in-place nil))\r\r
+      (condition-case ()\r\r
+         (scroll-up lines)\r\r
+       (end-of-buffer\r\r
+        ;; Long lines may cause an end-of-buffer error.\r\r
+        (goto-char (point-max)))))\r\r
+    (move-to-window-line 0)\r\r
+    nil))\r\r
+\r\r
+(defun gnus-article-prev-page (&optional lines)\r\r
+  "Show previous page of current article.\r\r
+Argument LINES specifies lines to be scrolled down."\r\r
+  (interactive "p")\r\r
+  (move-to-window-line 0)\r\r
+  (if (and gnus-page-broken\r\r
+          (bobp)\r\r
+          (not (save-restriction (widen) (bobp)))) ;Real beginning-of-buffer?\r\r
+      (progn\r\r
+       (gnus-narrow-to-page -1)        ;Go to previous page.\r\r
+       (goto-char (point-max))\r\r
+       (recenter -1))\r\r
+    (let ((scroll-in-place nil))\r\r
+      (prog1\r\r
+         (condition-case ()\r\r
+             (scroll-down lines)\r\r
+           (beginning-of-buffer\r\r
+            (goto-char (point-min))))\r\r
+       (move-to-window-line 0)))))\r\r
+\r\r
+(defun gnus-article-refer-article ()\r\r
+  "Read article specified by message-id around point."\r\r
+  (interactive)\r\r
+  (let ((point (point)))\r\r
+    (search-forward ">" nil t)         ;Move point to end of "<....>".\r\r
+    (if (re-search-backward "\\(<[^<> \t\n]+>\\)" nil t)\r\r
+       (let ((message-id (match-string 1)))\r\r
+         (goto-char point)\r\r
+         (set-buffer gnus-summary-buffer)\r\r
+         (gnus-summary-refer-article message-id))\r\r
+      (goto-char (point))\r\r
+      (error "No references around point"))))\r\r
+\r\r
+(defun gnus-article-show-summary ()\r\r
+  "Reconfigure windows to show summary buffer."\r\r
+  (interactive)\r\r
+  (if (not (gnus-buffer-live-p gnus-summary-buffer))\r\r
+      (error "There is no summary buffer for this article buffer")\r\r
+    (gnus-article-set-globals)\r\r
+    (gnus-configure-windows 'article)\r\r
+    (gnus-summary-goto-subject gnus-current-article)\r\r
+    (gnus-summary-position-point)))\r\r
+\r\r
+(defun gnus-article-describe-briefly ()\r\r
+  "Describe article mode commands briefly."\r\r
+  (interactive)\r\r
+  (gnus-message 6\r\r
+               (substitute-command-keys "\\<gnus-article-mode-map>\\[gnus-article-goto-next-page]:Next page     \\[gnus-article-goto-prev-page]:Prev page  \\[gnus-article-show-summary]:Show summary  \\[gnus-info-find-node]:Run Info  \\[gnus-article-describe-briefly]:This help")))\r\r
+\r\r
+(defun gnus-article-summary-command ()\r\r
+  "Execute the last keystroke in the summary buffer."\r\r
+  (interactive)\r\r
+  (let ((obuf (current-buffer))\r\r
+       (owin (current-window-configuration))\r\r
+       func)\r\r
+    (switch-to-buffer gnus-article-current-summary 'norecord)\r\r
+    (setq func (lookup-key (current-local-map) (this-command-keys)))\r\r
+    (call-interactively func)\r\r
+    (set-buffer obuf)\r\r
+    (set-window-configuration owin)\r\r
+    (set-window-point (get-buffer-window (current-buffer)) (point))))\r\r
+\r\r
+(defun gnus-article-summary-command-nosave ()\r\r
+  "Execute the last keystroke in the summary buffer."\r\r
+  (interactive)\r\r
+  (let (func)\r\r
+    (pop-to-buffer gnus-article-current-summary 'norecord)\r\r
+    (setq func (lookup-key (current-local-map) (this-command-keys)))\r\r
+    (call-interactively func)))\r\r
+\r\r
+(defun gnus-article-check-buffer ()\r\r
+  "Beep if not in an article buffer."\r\r
+  (unless (equal major-mode 'gnus-article-mode)\r\r
+    (error "Command invoked outside of a Gnus article buffer")))\r\r
+\r\r
+(defun gnus-article-read-summary-keys (&optional arg key not-restore-window)\r\r
+  "Read a summary buffer key sequence and execute it from the article buffer."\r\r
+  (interactive "P")\r\r
+  (gnus-article-check-buffer)\r\r
+  (let ((nosaves\r\r
+         '("q" "Q"  "c" "r" "R" "\C-c\C-f" "m"  "a" "f" "F"\r\r
+           "Zc" "ZC" "ZE" "ZQ" "ZZ" "Zn" "ZR" "ZG" "ZN" "ZP"\r\r
+           "=" "^" "\M-^" "|"))\r\r
+        (nosave-but-article\r\r
+         '("A\r"))\r\r
+        (nosave-in-article\r\r
+         '("\C-d"))\r\r
+        (up-to-top\r\r
+         '("n" "Gn" "p" "Gp"))\r\r
+        keys new-sum-point)\r\r
+    (save-excursion\r\r
+      (set-buffer gnus-article-current-summary)\r\r
+      (let (gnus-pick-mode)\r\r
+        (push (or key last-command-event) unread-command-events)\r\r
+        (setq keys (read-key-sequence nil))))\r\r
+    (message "")\r\r
+\r\r
+    (if (or (member keys nosaves)\r\r
+            (member keys nosave-but-article)\r\r
+            (member keys nosave-in-article))\r\r
+        (let (func)\r\r
+          (save-window-excursion\r\r
+            (pop-to-buffer gnus-article-current-summary 'norecord)\r\r
+            ;; We disable the pick minor mode commands.\r\r
+            (let (gnus-pick-mode)\r\r
+              (setq func (lookup-key (current-local-map) keys))))\r\r
+          (if (not func)\r\r
+              (ding)\r\r
+            (unless (member keys nosave-in-article)\r\r
+              (set-buffer gnus-article-current-summary))\r\r
+            (call-interactively func)\r\r
+            (setq new-sum-point (point)))\r\r
+          (when (member keys nosave-but-article)\r\r
+            (pop-to-buffer gnus-article-buffer 'norecord)))\r\r
+      ;; These commands should restore window configuration.\r\r
+      (let ((obuf (current-buffer))\r\r
+            (owin (current-window-configuration))\r\r
+            (opoint (point))\r\r
+            (summary gnus-article-current-summary)\r\r
+            func in-buffer selected)\r\r
+        (if not-restore-window\r\r
+            (pop-to-buffer summary 'norecord)\r\r
+          (switch-to-buffer summary 'norecord))\r\r
+        (setq in-buffer (current-buffer))\r\r
+        ;; We disable the pick minor mode commands.\r\r
+        (if (setq func (let (gnus-pick-mode)\r\r
+                         (lookup-key (current-local-map) keys)))\r\r
+            (progn\r\r
+              (call-interactively func)\r\r
+              (setq new-sum-point (point)))\r\r
+          (ding))\r\r
+        (when (eq in-buffer (current-buffer))\r\r
+          (setq selected (gnus-summary-select-article))\r\r
+          (set-buffer obuf)\r\r
+          (unless not-restore-window\r\r
+            (set-window-configuration owin))\r\r
+          (unless (or (not (eq selected 'old)) (member keys up-to-top))\r\r
+            (set-window-point (get-buffer-window (current-buffer))\r\r
+                              opoint))\r\r
+          (let ((win (get-buffer-window gnus-article-current-summary)))\r\r
+            (when win\r\r
+              (set-window-point win new-sum-point))))))))\r\r
+\r\r
+(defun gnus-article-hide (&optional arg force)\r\r
+  "Hide all the gruft in the current article.\r\r
+This means that PGP stuff, signatures, cited text and (some)\r\r
+headers will be hidden.\r\r
+If given a prefix, show the hidden text instead."\r\r
+  (interactive (append (gnus-article-hidden-arg) (list 'force)))\r\r
+  (gnus-article-hide-headers arg)\r\r
+  (gnus-article-hide-pgp arg)\r\r
+  (gnus-article-hide-citation-maybe arg force)\r\r
+  (gnus-article-hide-signature arg))\r\r
+\r\r
+(defun gnus-article-maybe-highlight ()\r\r
+  "Do some article highlighting if article highlighting is requested."\r\r
+  (when (gnus-visual-p 'article-highlight 'highlight)\r\r
+    (gnus-article-highlight-some)))\r\r
+\r\r
+(defun gnus-check-group-server ()\r\r
+  ;; Make sure the connection to the server is alive.\r\r
+  (unless (gnus-server-opened\r\r
+          (gnus-find-method-for-group gnus-newsgroup-name))\r\r
+    (gnus-check-server (gnus-find-method-for-group gnus-newsgroup-name))\r\r
+    (gnus-request-group gnus-newsgroup-name t)))\r\r
+\r\r
+(defun gnus-request-article-this-buffer (article group)\r\r
+  "Get an article and insert it into this buffer."\r\r
+  (let (do-update-line sparse-header)\r\r
+    (prog1\r\r
+       (save-excursion\r\r
+         (erase-buffer)\r\r
+         (gnus-kill-all-overlays)\r\r
+         (setq group (or group gnus-newsgroup-name))\r\r
+\r\r
+         ;; Using `gnus-request-article' directly will insert the article into\r\r
+         ;; `nntp-server-buffer' - so we'll save some time by not having to\r\r
+         ;; copy it from the server buffer into the article buffer.\r\r
+\r\r
+         ;; We only request an article by message-id when we do not have the\r\r
+         ;; headers for it, so we'll have to get those.\r\r
+         (when (stringp article)\r\r
+           (let ((gnus-override-method gnus-refer-article-method))\r\r
+             (gnus-read-header article)))\r\r
+\r\r
+         ;; If the article number is negative, that means that this article\r\r
+         ;; doesn't belong in this newsgroup (possibly), so we find its\r\r
+         ;; message-id and request it by id instead of number.\r\r
+         (when (and (numberp article)\r\r
+                    gnus-summary-buffer\r\r
+                    (get-buffer gnus-summary-buffer)\r\r
+                    (gnus-buffer-exists-p gnus-summary-buffer))\r\r
+           (save-excursion\r\r
+             (set-buffer gnus-summary-buffer)\r\r
+             (let ((header (gnus-summary-article-header article)))\r\r
+               (when (< article 0)\r\r
+                 (cond\r\r
+                  ((memq article gnus-newsgroup-sparse)\r\r
+                   ;; This is a sparse gap article.\r\r
+                   (setq do-update-line article)\r\r
+                   (setq article (mail-header-id header))\r\r
+                   (let ((gnus-override-method gnus-refer-article-method))\r\r
+                     (setq sparse-header (gnus-read-header article)))\r\r
+                   (setq gnus-newsgroup-sparse\r\r
+                         (delq article gnus-newsgroup-sparse)))\r\r
+                  ((vectorp header)\r\r
+                   ;; It's a real article.\r\r
+                   (setq article (mail-header-id header)))\r\r
+                  (t\r\r
+                   ;; It is an extracted pseudo-article.\r\r
+                   (setq article 'pseudo)\r\r
+                   (gnus-request-pseudo-article header))))\r\r
+\r\r
+               (let ((method (gnus-find-method-for-group\r\r
+                              gnus-newsgroup-name)))\r\r
+                 (when (and (eq (car method) 'nneething)\r\r
+                            (vectorp header))\r\r
+                   (let ((dir (concat\r\r
+                               (file-name-as-directory\r\r
+                                (or (cadr (assq 'nneething-address method))\r\r
+                                    (nth 1 method)))\r\r
+                               (mail-header-subject header))))\r\r
+                     (when (file-directory-p dir)\r\r
+                       (setq article 'nneething)\r\r
+                       (gnus-group-enter-directory dir))))))))\r\r
+\r\r
+         (cond\r\r
+          ;; Refuse to select canceled articles.\r\r
+          ((and (numberp article)\r\r
+                gnus-summary-buffer\r\r
+                (get-buffer gnus-summary-buffer)\r\r
+                (gnus-buffer-exists-p gnus-summary-buffer)\r\r
+                (eq (cdr (save-excursion\r\r
+                           (set-buffer gnus-summary-buffer)\r\r
+                           (assq article gnus-newsgroup-reads)))\r\r
+                    gnus-canceled-mark))\r\r
+           nil)\r\r
+          ;; Check the backlog.\r\r
+          ((and gnus-keep-backlog\r\r
+                (gnus-backlog-request-article group article (current-buffer)))\r\r
+           'article)\r\r
+          ;; Check asynchronous pre-fetch.\r\r
+          ((gnus-async-request-fetched-article group article (current-buffer))\r\r
+           (gnus-async-prefetch-next group article gnus-summary-buffer)\r\r
+           (when (and (numberp article) gnus-keep-backlog)\r\r
+             (gnus-backlog-enter-article group article (current-buffer)))\r\r
+           'article)\r\r
+          ;; Check the cache.\r\r
+          ((and gnus-use-cache\r\r
+                (numberp article)\r\r
+                (gnus-cache-request-article article group))\r\r
+           'article)\r\r
+          ;; Get the article and put into the article buffer.\r\r
+          ((or (stringp article) (numberp article))\r\r
+           (let ((gnus-override-method\r\r
+                  (and (stringp article) gnus-refer-article-method))\r\r
+                 (buffer-read-only nil))\r\r
+             (erase-buffer)\r\r
+             (gnus-kill-all-overlays)\r\r
+             (gnus-check-group-server)\r\r
+             (when (gnus-request-article article group (current-buffer))\r\r
+               (when (numberp article)\r\r
+                 (gnus-async-prefetch-next group article gnus-summary-buffer)\r\r
+                 (when gnus-keep-backlog\r\r
+                   (gnus-backlog-enter-article\r\r
+                    group article (current-buffer))))\r\r
+               'article)))\r\r
+          ;; It was a pseudo.\r\r
+          (t article)))\r\r
+\r\r
+      ;; Associate this article with the current summary buffer.\r\r
+      (setq gnus-article-current-summary gnus-summary-buffer)\r\r
+\r\r
+      ;; Take the article from the original article buffer\r\r
+      ;; and place it in the buffer it's supposed to be in.\r\r
+      (when (and (get-buffer gnus-article-buffer)\r\r
+                (equal (buffer-name (current-buffer))\r\r
+                       (buffer-name (get-buffer gnus-article-buffer))))\r\r
+       (save-excursion\r\r
+         (if (get-buffer gnus-original-article-buffer)\r\r
+             (set-buffer gnus-original-article-buffer)\r\r
+           (set-buffer (gnus-get-buffer-create gnus-original-article-buffer))\r\r
+           (buffer-disable-undo)\r\r
+           (setq major-mode 'gnus-original-article-mode)\r\r
+           (setq buffer-read-only t))\r\r
+         (let (buffer-read-only)\r\r
+           (erase-buffer)\r\r
+           (insert-buffer-substring gnus-article-buffer))\r\r
+         (setq gnus-original-article (cons group article)))\r\r
+\r\r
+       ;; Decode charsets.\r\r
+       (run-hooks 'gnus-article-decode-hook)\r\r
+       ;; Mark article as decoded or not.\r\r
+       (setq gnus-article-decoded-p gnus-article-decode-hook))\r\r
+\r\r
+      ;; Update sparse articles.\r\r
+      (when (and do-update-line\r\r
+                (or (numberp article)\r\r
+                    (stringp article)))\r\r
+       (let ((buf (current-buffer)))\r\r
+         (set-buffer gnus-summary-buffer)\r\r
+         (gnus-summary-update-article do-update-line sparse-header)\r\r
+         (gnus-summary-goto-subject do-update-line nil t)\r\r
+         (set-window-point (get-buffer-window (current-buffer) t)\r\r
+                           (point))\r\r
+         (set-buffer buf))))))\r\r
+\r\r
+;;;\r\r
+;;; Article editing\r\r
+;;;\r\r
+\r\r
+(defcustom gnus-article-edit-mode-hook nil\r\r
+  "Hook run in article edit mode buffers."\r\r
+  :group 'gnus-article-various\r\r
+  :type 'hook)\r\r
+\r\r
+(defcustom gnus-article-edit-article-setup-function\r\r
+  'gnus-article-mime-edit-article-setup\r\r
+  "Function called to setup an editing article buffer."\r\r
+  :group 'gnus-article-various\r\r
+  :type 'function)\r\r
+\r\r
+(defvar gnus-article-edit-done-function nil)\r\r
+\r\r
+(defvar gnus-article-edit-mode-map nil)\r\r
+\r\r
+;; Should we be using derived.el for this?\r\r
+(unless gnus-article-edit-mode-map\r\r
+  (setq gnus-article-edit-mode-map (make-sparse-keymap))\r\r
+  (set-keymap-parent gnus-article-edit-mode-map text-mode-map)\r\r
+\r\r
+  (gnus-define-keys gnus-article-edit-mode-map\r\r
+    "\C-c\C-c" gnus-article-edit-done\r\r
+    "\C-c\C-k" gnus-article-edit-exit)\r\r
+\r\r
+  (gnus-define-keys (gnus-article-edit-wash-map\r\r
+                    "\C-c\C-w" gnus-article-edit-mode-map)\r\r
+    "f" gnus-article-edit-full-stops))\r\r
+\r\r
+(defun gnus-article-edit-mode ()\r\r
+  "Major mode for editing articles.\r\r
+This is an extended text-mode.\r\r
+\r\r
+\\{gnus-article-edit-mode-map}"\r\r
+  (interactive)\r\r
+  (setq major-mode 'gnus-article-edit-mode)\r\r
+  (setq mode-name "Article Edit")\r\r
+  (use-local-map gnus-article-edit-mode-map)\r\r
+  (make-local-variable 'gnus-article-edit-done-function)\r\r
+  (make-local-variable 'gnus-prev-winconf)\r\r
+  (setq buffer-read-only nil)\r\r
+  (buffer-enable-undo)\r\r
+  (widen)\r\r
+  (gnus-run-hooks 'text-mode-hook 'gnus-article-edit-mode-hook))\r\r
+\r\r
+(defun gnus-article-edit (&optional force)\r\r
+  "Edit the current article.\r\r
+This will have permanent effect only in mail groups.\r\r
+If FORCE is non-nil, allow editing of articles even in read-only\r\r
+groups."\r\r
+  (interactive "P")\r\r
+  (when (and (not force)\r\r
+            (gnus-group-read-only-p))\r\r
+    (error "The current newsgroup does not support article editing"))\r\r
+  (gnus-article-date-original)\r\r
+  (gnus-article-edit-article\r\r
+   `(lambda (no-highlight)\r\r
+      (gnus-summary-edit-article-done\r\r
+       ,(or (mail-header-references gnus-current-headers) "")\r\r
+       ,(gnus-group-read-only-p) ,gnus-summary-buffer no-highlight))))\r\r
+\r\r
+(defun gnus-article-edit-article (exit-func)\r\r
+  "Start editing the contents of the current article buffer."\r\r
+  (let ((winconf (current-window-configuration)))\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (gnus-article-edit-mode)\r\r
+    (gnus-article-delete-text-of-type 'annotation)\r\r
+    (gnus-set-text-properties (point-min) (point-max) nil)\r\r
+    (gnus-configure-windows 'edit-article)\r\r
+    (setq gnus-article-edit-done-function exit-func)\r\r
+    (setq gnus-prev-winconf winconf)\r\r
+    (when gnus-article-edit-article-setup-function\r\r
+      (funcall gnus-article-edit-article-setup-function))\r\r
+    (gnus-message 6 "C-c C-c to end edits")))\r\r
+\r\r
+(defun gnus-article-edit-done (&optional arg)\r\r
+  "Update the article edits and exit."\r\r
+  (interactive "P")\r\r
+  (save-excursion\r\r
+    (save-restriction\r\r
+      (widen)\r\r
+      (when (article-goto-body)\r\r
+       (let ((lines (count-lines (point) (point-max)))\r\r
+             (length (- (point-max) (point)))\r\r
+             (case-fold-search t)\r\r
+             (body (copy-marker (point))))\r\r
+         (goto-char (point-min))\r\r
+         (when (re-search-forward "^content-length:[ \t]\\([0-9]+\\)" body t)\r\r
+           (delete-region (match-beginning 1) (match-end 1))\r\r
+           (insert (number-to-string length)))\r\r
+         (goto-char (point-min))\r\r
+         (when (re-search-forward\r\r
+                "^x-content-length:[ \t]\\([0-9]+\\)" body t)\r\r
+           (delete-region (match-beginning 1) (match-end 1))\r\r
+           (insert (number-to-string length)))\r\r
+         (goto-char (point-min))\r\r
+         (when (re-search-forward "^lines:[ \t]\\([0-9]+\\)" body t)\r\r
+           (delete-region (match-beginning 1) (match-end 1))\r\r
+           (insert (number-to-string lines)))))))\r\r
+  (let ((func gnus-article-edit-done-function)\r\r
+       (buf (current-buffer))\r\r
+       (start (window-start)))\r\r
+    (remove-hook 'gnus-article-mode-hook\r\r
+                'gnus-article-mime-edit-article-unwind)\r\r
+    (gnus-article-edit-exit)\r\r
+    (save-excursion\r\r
+      (set-buffer buf)\r\r
+      (let ((buffer-read-only nil))\r\r
+       (funcall func arg))\r\r
+      ;; The cache and backlog have to be flushed somewhat.\r\r
+      (when gnus-keep-backlog\r\r
+       (gnus-backlog-remove-article\r\r
+        (car gnus-article-current) (cdr gnus-article-current)))\r\r
+      ;; Flush original article as well.\r\r
+      (save-excursion\r\r
+       (when (get-buffer gnus-original-article-buffer)\r\r
+         (set-buffer gnus-original-article-buffer)\r\r
+         (setq gnus-original-article nil)))\r\r
+      (when gnus-use-cache\r\r
+       (gnus-cache-update-article\r\r
+        (car gnus-article-current) (cdr gnus-article-current))))\r\r
+    (set-buffer buf)\r\r
+    (set-window-start (get-buffer-window buf) start)\r\r
+    (set-window-point (get-buffer-window buf) (point))))\r\r
+\r\r
+(defun gnus-article-edit-exit ()\r\r
+  "Exit the article editing without updating."\r\r
+  (interactive)\r\r
+  ;; We remove all text props from the article buffer.\r\r
+  (let ((buf (format "%s" (buffer-string)))\r\r
+       (curbuf (current-buffer))\r\r
+       (p (point))\r\r
+       (window-start (window-start)))\r\r
+    (erase-buffer)\r\r
+    (insert buf)\r\r
+    (let ((winconf gnus-prev-winconf))\r\r
+      (gnus-article-mode)\r\r
+      (set-window-configuration winconf)\r\r
+      ;; Tippy-toe some to make sure that point remains where it was.\r\r
+      (save-current-buffer\r\r
+       (set-buffer curbuf)\r\r
+       (set-window-start (get-buffer-window (current-buffer)) window-start)\r\r
+       (goto-char p)))))\r\r
+\r\r
+(defun gnus-article-edit-full-stops ()\r\r
+  "Interactively repair spacing at end of sentences."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (goto-char (point-min))\r\r
+    (search-forward-regexp "^$" nil t)\r\r
+    (let ((case-fold-search nil))\r\r
+      (query-replace-regexp "\\([.!?][])}]* \\)\\([[({A-Z]\\)" "\\1 \\2"))))\r\r
+\r\r
+;;;\r\r
+;;; Article editing with MIME-Edit\r\r
+;;;\r\r
+\r\r
+(defcustom gnus-article-mime-edit-article-setup-hook nil\r\r
+  "Hook run after setting up a MIME editing article buffer."\r\r
+  :group 'gnus-article-various\r\r
+  :type 'hook)\r\r
+\r\r
+(defun gnus-article-mime-edit-article-unwind ()\r\r
+  "Unwind `gnus-article-buffer' if article editing was given up."\r\r
+  (remove-hook 'gnus-article-mode-hook 'gnus-article-mime-edit-article-unwind)\r\r
+  (when mime-edit-mode-flag\r\r
+    (mime-edit-exit 'nomime 'no-error)\r\r
+    (message ""))\r\r
+  (when (featurep 'font-lock)\r\r
+    (setq font-lock-defaults nil)\r\r
+    (font-lock-mode 0)))\r\r
+\r\r
+(defun gnus-article-mime-edit-article-setup ()\r\r
+  "Convert current buffer to MIME-Edit buffer and turn on MIME-Edit mode\r\r
+after replacing with the original article."\r\r
+  (setq gnus-show-mime t)\r\r
+  (setq gnus-article-edit-done-function\r\r
+       `(lambda (&rest args)\r\r
+          (when mime-edit-mode-flag\r\r
+            (mime-edit-exit)\r\r
+            (message ""))\r\r
+          (goto-char (point-min))\r\r
+          (let (case-fold-search)\r\r
+            (when (re-search-forward\r\r
+                   (format "^%s$" (regexp-quote mail-header-separator))\r\r
+                   nil t)\r\r
+              (replace-match "")))\r\r
+          (when (featurep 'font-lock)\r\r
+            (setq font-lock-defaults nil)\r\r
+            (font-lock-mode 0))\r\r
+          (apply ,gnus-article-edit-done-function args)\r\r
+          (set-buffer gnus-original-article-buffer)\r\r
+          (erase-buffer)\r\r
+          (insert-buffer gnus-article-buffer)\r\r
+          (setq gnus-current-headers (gnus-article-make-full-mail-header))\r\r
+          (gnus-article-prepare-display)))\r\r
+  (substitute-key-definition\r\r
+   'gnus-article-edit-exit 'gnus-article-mime-edit-exit\r\r
+   gnus-article-edit-mode-map)\r\r
+  (erase-buffer)\r\r
+  (insert-buffer gnus-original-article-buffer)\r\r
+  (mime-edit-again)\r\r
+  (when (featurep 'font-lock)\r\r
+    (set (make-local-variable 'font-lock-defaults)\r\r
+        '(message-font-lock-keywords t))\r\r
+    (font-lock-set-defaults)\r\r
+    (turn-on-font-lock))\r\r
+  (add-hook 'gnus-article-mode-hook 'gnus-article-mime-edit-article-unwind)\r\r
+  (gnus-run-hooks 'gnus-article-mime-edit-article-setup-hook))\r\r
+\r\r
+(defun gnus-article-mime-edit-exit ()\r\r
+  "Exit the article MIME editing without updating."\r\r
+  (interactive)\r\r
+  (let ((winconf gnus-prev-winconf)\r\r
+       buf)\r\r
+    (when mime-edit-mode-flag\r\r
+      (mime-edit-exit)\r\r
+      (message ""))\r\r
+    (goto-char (point-min))\r\r
+    (let (case-fold-search)\r\r
+      (when (re-search-forward\r\r
+            (format "^%s$" (regexp-quote mail-header-separator)) nil t)\r\r
+       (replace-match "")))\r\r
+    (when (featurep 'font-lock)\r\r
+      (setq font-lock-defaults nil)\r\r
+      (font-lock-mode 0))\r\r
+    ;; We remove all text props from the article buffer.\r\r
+    (setq buf (format "%s" (buffer-string)))\r\r
+    (set-buffer (get-buffer-create gnus-original-article-buffer))\r\r
+    (erase-buffer)\r\r
+    (insert buf)\r\r
+    (setq gnus-current-headers (gnus-article-make-full-mail-header))\r\r
+    (gnus-article-prepare-display)\r\r
+    (set-window-configuration winconf)))\r\r
+\r\r
+;;;\r\r
+;;; Article highlights\r\r
+;;;\r\r
+\r\r
+;; Written by Per Abrahamsen <abraham@iesd.auc.dk>.\r\r
+\r\r
+;;; Internal Variables:\r\r
+\r\r
+(defcustom gnus-button-url-regexp "\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?\\([-a-zA-Z0-9_=!?#$@~`%&*+|\\/:;.,]\\|\\w\\)+\\([-a-zA-Z0-9_=#$@~`%&*+|\\/]\\|\\w\\)"\r\r
+  "Regular expression that matches URLs."\r\r
+  :group 'gnus-article-buttons\r\r
+  :type 'regexp)\r\r
+\r\r
+(defcustom gnus-button-alist\r\r
+  `(("<\\(url:[>\n\t ]*?\\)?news:[>\n\t ]*\\([^>\n\t ]*@[^>\n\t ]*\\)>"\r\r
+     0 t gnus-button-message-id 2)\r\r
+    ("\\bnews:\\([^>\n\t ]*@[^>)!;:,\n\t ]*\\)" 0 t gnus-button-message-id 1)\r\r
+    ("\\(\\b<\\(url:[>\n\t ]*\\)?news:[>\n\t ]*\\(//\\)?\\([^>\n\t ]*\\)>\\)"\r\r
+     1 t\r\r
+     gnus-button-fetch-group 4)\r\r
+    ("\\bnews:\\(//\\)?\\([^'\">\n\t ]+\\)" 0 t gnus-button-fetch-group 2)\r\r
+    ("\\bin\\( +article\\| +message\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2\r\r
+     t gnus-button-message-id 3)\r\r
+    ("\\(<URL: *\\)mailto: *\\([^> \n\t]+\\)>" 0 t gnus-url-mailto 2)\r\r
+    ("mailto:\\([-a-zA-Z.@_+0-9%]+\\)" 0 t gnus-url-mailto 1)\r\r
+    ("\\bmailto:\\([^ \n\t]+\\)" 0 t gnus-url-mailto 1)\r\r
+    ;; This is how URLs _should_ be embedded in text...\r\r
+    ("<URL: *\\([^>]*\\)>" 0 t gnus-button-embedded-url 1)\r\r
+    ;; Raw URLs.\r\r
+    (,gnus-button-url-regexp 0 t gnus-button-url 0))\r\r
+  "*Alist of regexps matching buttons in article bodies.\r\r
+\r\r
+Each entry has the form (REGEXP BUTTON FORM CALLBACK PAR...), where\r\r
+REGEXP: is the string matching text around the button,\r\r
+BUTTON: is the number of the regexp grouping actually matching the button,\r\r
+FORM: is a lisp expression which must eval to true for the button to\r\r
+be added,\r\r
+CALLBACK: is the function to call when the user push this button, and each\r\r
+PAR: is a number of a regexp grouping whose text will be passed to CALLBACK.\r\r
+\r\r
+CALLBACK can also be a variable, in that case the value of that\r\r
+variable it the real callback function."\r\r
+  :group 'gnus-article-buttons\r\r
+  :type '(repeat (list regexp\r\r
+                      (integer :tag "Button")\r\r
+                      (sexp :tag "Form")\r\r
+                      (function :tag "Callback")\r\r
+                      (repeat :tag "Par"\r\r
+                              :inline t\r\r
+                              (integer :tag "Regexp group")))))\r\r
+\r\r
+(defcustom gnus-header-button-alist\r\r
+  `(("^\\(References\\|Message-I[Dd]\\):" "<[^>]+>"\r\r
+     0 t gnus-button-message-id 0)\r\r
+    ("^\\(From\\|Reply-To\\):" ": *\\(.+\\)$" 1 t gnus-button-reply 1)\r\r
+    ("^\\(Cc\\|To\\):" "[^ \t\n<>,()\"]+@[^ \t\n<>,()\"]+"\r\r
+     0 t gnus-button-mailto 0)\r\r
+    ("^X-[Uu][Rr][Ll]:" ,gnus-button-url-regexp 0 t gnus-button-url 0)\r\r
+    ("^Subject:" ,gnus-button-url-regexp 0 t gnus-button-url 0)\r\r
+    ("^[^:]+:" ,gnus-button-url-regexp 0 t gnus-button-url 0)\r\r
+    ("^[^:]+:" "\\(<\\(url: \\)?news:\\([^>\n ]*\\)>\\)" 1 t\r\r
+     gnus-button-message-id 3))\r\r
+  "*Alist of headers and regexps to match buttons in article heads.\r\r
+\r\r
+This alist is very similar to `gnus-button-alist', except that each\r\r
+alist has an additional HEADER element first in each entry:\r\r
+\r\r
+\(HEADER REGEXP BUTTON FORM CALLBACK PAR)\r\r
+\r\r
+HEADER is a regexp to match a header.  For a fuller explanation, see\r\r
+`gnus-button-alist'."\r\r
+  :group 'gnus-article-buttons\r\r
+  :group 'gnus-article-headers\r\r
+  :type '(repeat (list (regexp :tag "Header")\r\r
+                      regexp\r\r
+                      (integer :tag "Button")\r\r
+                      (sexp :tag "Form")\r\r
+                      (function :tag "Callback")\r\r
+                      (repeat :tag "Par"\r\r
+                              :inline t\r\r
+                              (integer :tag "Regexp group")))))\r\r
+\r\r
+(defvar gnus-button-regexp nil)\r\r
+(defvar gnus-button-marker-list nil)\r\r
+;; Regexp matching any of the regexps from `gnus-button-alist'.\r\r
+\r\r
+(defvar gnus-button-last nil)\r\r
+;; The value of `gnus-button-alist' when `gnus-button-regexp' was build.\r\r
+\r\r
+;;; Commands:\r\r
+\r\r
+(defun gnus-article-push-button (event)\r\r
+  "Check text under the mouse pointer for a callback function.\r\r
+If the text under the mouse pointer has a `gnus-callback' property,\r\r
+call it with the value of the `gnus-data' text property."\r\r
+  (interactive "e")\r\r
+  (set-buffer (window-buffer (posn-window (event-start event))))\r\r
+  (let* ((pos (posn-point (event-start event)))\r\r
+         (data (get-text-property pos 'gnus-data))\r\r
+        (fun (get-text-property pos 'gnus-callback)))\r\r
+    (goto-char pos)\r\r
+    (when fun\r\r
+      (funcall fun data))))\r\r
+\r\r
+(defun gnus-article-press-button ()\r\r
+  "Check text at point for a callback function.\r\r
+If the text at point has a `gnus-callback' property,\r\r
+call it with the value of the `gnus-data' text property."\r\r
+  (interactive)\r\r
+  (let* ((data (get-text-property (point) 'gnus-data))\r\r
+        (fun (get-text-property (point) 'gnus-callback)))\r\r
+    (when fun\r\r
+      (funcall fun data))))\r\r
+\r\r
+(defun gnus-article-prev-button (n)\r\r
+  "Move point to N buttons backward.\r\r
+If N is negative, move forward instead."\r\r
+  (interactive "p")\r\r
+  (gnus-article-next-button (- n)))\r\r
+\r\r
+(defun gnus-article-next-button (n)\r\r
+  "Move point to N buttons forward.\r\r
+If N is negative, move backward instead."\r\r
+  (interactive "p")\r\r
+  (let ((function (if (< n 0) 'previous-single-property-change\r\r
+                   'next-single-property-change))\r\r
+       (inhibit-point-motion-hooks t)\r\r
+       (backward (< n 0))\r\r
+       (limit (if (< n 0) (point-min) (point-max))))\r\r
+    (setq n (abs n))\r\r
+    (while (and (not (= limit (point)))\r\r
+               (> n 0))\r\r
+      ;; Skip past the current button.\r\r
+      (when (get-text-property (point) 'gnus-callback)\r\r
+       (goto-char (funcall function (point) 'gnus-callback nil limit)))\r\r
+      ;; Go to the next (or previous) button.\r\r
+      (gnus-goto-char (funcall function (point) 'gnus-callback nil limit))\r\r
+      ;; Put point at the start of the button.\r\r
+      (when (and backward (not (get-text-property (point) 'gnus-callback)))\r\r
+       (goto-char (funcall function (point) 'gnus-callback nil limit)))\r\r
+      ;; Skip past intangible buttons.\r\r
+      (when (get-text-property (point) 'intangible)\r\r
+       (incf n))\r\r
+      (decf n))\r\r
+    (unless (zerop n)\r\r
+      (gnus-message 5 "No more buttons"))\r\r
+    n))\r\r
+\r\r
+(defun gnus-article-highlight (&optional force)\r\r
+  "Highlight current article.\r\r
+This function calls `gnus-article-highlight-headers',\r\r
+`gnus-article-highlight-citation',\r\r
+`gnus-article-highlight-signature', and `gnus-article-add-buttons' to\r\r
+do the highlighting.  See the documentation for those functions."\r\r
+  (interactive (list 'force))\r\r
+  (gnus-article-highlight-headers)\r\r
+  (gnus-article-highlight-citation force)\r\r
+  (gnus-article-highlight-signature)\r\r
+  (gnus-article-add-buttons force)\r\r
+  (gnus-article-add-buttons-to-head))\r\r
+\r\r
+(defun gnus-article-highlight-some (&optional force)\r\r
+  "Highlight current article.\r\r
+This function calls `gnus-article-highlight-headers',\r\r
+`gnus-article-highlight-signature', and `gnus-article-add-buttons' to\r\r
+do the highlighting.  See the documentation for those functions."\r\r
+  (interactive (list 'force))\r\r
+  (gnus-article-highlight-headers)\r\r
+  (gnus-article-highlight-signature)\r\r
+  (gnus-article-add-buttons))\r\r
+\r\r
+(defun gnus-article-highlight-headers ()\r\r
+  "Highlight article headers as specified by `gnus-header-face-alist'."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (save-restriction\r\r
+      (let ((alist gnus-header-face-alist)\r\r
+           (buffer-read-only nil)\r\r
+           (case-fold-search t)\r\r
+           (inhibit-point-motion-hooks t)\r\r
+           entry regexp header-face field-face from hpoints fpoints)\r\r
+       (message-narrow-to-head)\r\r
+       (while (setq entry (pop alist))\r\r
+         (goto-char (point-min))\r\r
+         (setq regexp (concat "^\\("\r\r
+                              (if (string-equal "" (nth 0 entry))\r\r
+                                  "[^\t ]"\r\r
+                                (nth 0 entry))\r\r
+                              "\\)")\r\r
+               header-face (nth 1 entry)\r\r
+               field-face (nth 2 entry))\r\r
+         (while (and (re-search-forward regexp nil t)\r\r
+                     (not (eobp)))\r\r
+           (beginning-of-line)\r\r
+           (setq from (point))\r\r
+           (unless (search-forward ":" nil t)\r\r
+             (forward-char 1))\r\r
+           (when (and header-face\r\r
+                      (not (memq (point) hpoints)))\r\r
+             (push (point) hpoints)\r\r
+             (gnus-put-text-property from (point) 'face header-face))\r\r
+           (when (and field-face\r\r
+                      (not (memq (setq from (point)) fpoints)))\r\r
+             (push from fpoints)\r\r
+             (if (re-search-forward "^[^ \t]" nil t)\r\r
+                 (forward-char -2)\r\r
+               (goto-char (point-max)))\r\r
+             (gnus-put-text-property from (point) 'face field-face))))))))\r\r
+\r\r
+(defun gnus-article-highlight-signature ()\r\r
+  "Highlight the signature in an article.\r\r
+It does this by highlighting everything after\r\r
+`gnus-signature-separator' using `gnus-signature-face'."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (let ((buffer-read-only nil)\r\r
+         (inhibit-point-motion-hooks t))\r\r
+      (save-restriction\r\r
+       (when (and gnus-signature-face\r\r
+                  (gnus-article-narrow-to-signature))\r\r
+         (gnus-overlay-put (gnus-make-overlay (point-min) (point-max))\r\r
+                           'face gnus-signature-face)\r\r
+         (widen)\r\r
+         (gnus-article-search-signature)\r\r
+         (let ((start (match-beginning 0))\r\r
+               (end (set-marker (make-marker) (1+ (match-end 0)))))\r\r
+           (gnus-article-add-button start (1- end) 'gnus-signature-toggle\r\r
+                                    end)))))))\r\r
+\r\r
+(defun gnus-button-in-region-p (b e prop)\r\r
+  "Say whether PROP exists in the region."\r\r
+  (text-property-not-all b e prop nil))\r\r
+\r\r
+(defun gnus-article-add-buttons (&optional force)\r\r
+  "Find external references in the article and make buttons of them.\r\r
+\"External references\" are things like Message-IDs and URLs, as\r\r
+specified by `gnus-button-alist'."\r\r
+  (interactive (list 'force))\r\r
+  (save-excursion\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (let ((buffer-read-only nil)\r\r
+         (inhibit-point-motion-hooks t)\r\r
+         (case-fold-search t)\r\r
+         (alist gnus-button-alist)\r\r
+         beg entry regexp)\r\r
+      ;; Remove all old markers.\r\r
+      (let (marker entry)\r\r
+       (while (setq marker (pop gnus-button-marker-list))\r\r
+         (goto-char marker)\r\r
+         (when (setq entry (gnus-button-entry))\r\r
+           (put-text-property (match-beginning (nth 1 entry))\r\r
+                              (match-end (nth 1 entry))\r\r
+                              'gnus-callback nil))\r\r
+         (set-marker marker nil)))\r\r
+      ;; We skip the headers.\r\r
+      (article-goto-body)\r\r
+      (setq beg (point))\r\r
+      (while (setq entry (pop alist))\r\r
+       (setq regexp (car entry))\r\r
+       (goto-char beg)\r\r
+       (while (re-search-forward regexp nil t)\r\r
+         (let* ((start (and entry (match-beginning (nth 1 entry))))\r\r
+                (end (and entry (match-end (nth 1 entry))))\r\r
+                (from (match-beginning 0)))\r\r
+           (when (and (or (eq t (nth 2 entry))\r\r
+                          (eval (nth 2 entry)))\r\r
+                      (not (gnus-button-in-region-p\r\r
+                            start end 'gnus-callback)))\r\r
+             ;; That optional form returned non-nil, so we add the\r\r
+             ;; button.\r\r
+             (gnus-article-add-button\r\r
+              start end 'gnus-button-push\r\r
+              (car (push (set-marker (make-marker) from)\r\r
+                         gnus-button-marker-list))))))))))\r\r
+\r\r
+;; Add buttons to the head of an article.\r\r
+(defun gnus-article-add-buttons-to-head ()\r\r
+  "Add buttons to the head of the article."\r\r
+  (interactive)\r\r
+  (save-excursion\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (let ((buffer-read-only nil)\r\r
+         (inhibit-point-motion-hooks t)\r\r
+         (case-fold-search t)\r\r
+         (alist gnus-header-button-alist)\r\r
+         entry beg end)\r\r
+      (nnheader-narrow-to-headers)\r\r
+      (while alist\r\r
+       ;; Each alist entry.\r\r
+       (setq entry (car alist)\r\r
+             alist (cdr alist))\r\r
+       (goto-char (point-min))\r\r
+       (while (re-search-forward (car entry) nil t)\r\r
+         ;; Each header matching the entry.\r\r
+         (setq beg (match-beginning 0))\r\r
+         (setq end (or (and (re-search-forward "^[^ \t]" nil t)\r\r
+                            (match-beginning 0))\r\r
+                       (point-max)))\r\r
+         (goto-char beg)\r\r
+         (while (re-search-forward (nth 1 entry) end t)\r\r
+           ;; Each match within a header.\r\r
+           (let* ((entry (cdr entry))\r\r
+                  (start (match-beginning (nth 1 entry)))\r\r
+                  (end (match-end (nth 1 entry)))\r\r
+                  (form (nth 2 entry)))\r\r
+             (goto-char (match-end 0))\r\r
+             (when (eval form)\r\r
+               (gnus-article-add-button\r\r
+                start end (nth 3 entry)\r\r
+                (buffer-substring (match-beginning (nth 4 entry))\r\r
+                                  (match-end (nth 4 entry)))))))\r\r
+         (goto-char end))))\r\r
+    (widen)))\r\r
+\r\r
+;;; External functions:\r\r
+\r\r
+(defun gnus-article-add-button (from to fun &optional data)\r\r
+  "Create a button between FROM and TO with callback FUN and data DATA."\r\r
+  (when gnus-article-button-face\r\r
+    (gnus-overlay-put (gnus-make-overlay from to)\r\r
+                     'face gnus-article-button-face))\r\r
+  (gnus-add-text-properties\r\r
+   from to\r\r
+   (nconc (and gnus-article-mouse-face\r\r
+              (list gnus-mouse-face-prop gnus-article-mouse-face))\r\r
+         (list 'gnus-callback fun)\r\r
+         (and data (list 'gnus-data data)))))\r\r
+\r\r
+;;; Internal functions:\r\r
+\r\r
+(defun gnus-article-set-globals ()\r\r
+  (save-excursion\r\r
+    (set-buffer gnus-summary-buffer)\r\r
+    (gnus-set-global-variables)))\r\r
+\r\r
+(defun gnus-signature-toggle (end)\r\r
+  (save-excursion\r\r
+    (set-buffer gnus-article-buffer)\r\r
+    (let ((buffer-read-only nil)\r\r
+         (inhibit-point-motion-hooks t))\r\r
+      (if (get-text-property end 'invisible)\r\r
+         (gnus-article-unhide-text end (point-max))\r\r
+       (gnus-article-hide-text end (point-max) gnus-hidden-properties)))))\r\r
+\r\r
+(defun gnus-button-entry ()\r\r
+  ;; Return the first entry in `gnus-button-alist' matching this place.\r\r
+  (let ((alist gnus-button-alist)\r\r
+       (entry nil))\r\r
+    (while alist\r\r
+      (setq entry (pop alist))\r\r
+      (if (looking-at (car entry))\r\r
+         (setq alist nil)\r\r
+       (setq entry nil)))\r\r
+    entry))\r\r
+\r\r
+(defun gnus-button-push (marker)\r\r
+  ;; Push button starting at MARKER.\r\r
+  (save-excursion\r\r
+    (goto-char marker)\r\r
+    (let* ((entry (gnus-button-entry))\r\r
+          (inhibit-point-motion-hooks t)\r\r
+          (fun (nth 3 entry))\r\r
+          (args (mapcar (lambda (group)\r\r
+                          (let ((string (match-string group)))\r\r
+                            (gnus-set-text-properties\r\r
+                             0 (length string) nil string)\r\r
+                            string))\r\r
+                        (nthcdr 4 entry))))\r\r
+      (cond\r\r
+       ((fboundp fun)\r\r
+       (apply fun args))\r\r
+       ((and (boundp fun)\r\r
+            (fboundp (symbol-value fun)))\r\r
+       (apply (symbol-value fun) args))\r\r
+       (t\r\r
+       (gnus-message 1 "You must define `%S' to use this button"\r\r
+                     (cons fun args)))))))\r\r
+\r\r
+(defun gnus-button-message-id (message-id)\r\r
+  "Fetch MESSAGE-ID."\r\r
+  (save-excursion\r\r
+    (set-buffer gnus-summary-buffer)\r\r
+    (gnus-summary-refer-article message-id)))\r\r
+\r\r
+(defun gnus-button-fetch-group (address)\r\r
+  "Fetch GROUP specified by ADDRESS."\r\r
+  (if (not (string-match "[:/]" address))\r\r
+      ;; This is just a simple group url.\r\r
+      (gnus-group-read-ephemeral-group address gnus-select-method)\r\r
+    (if (not (string-match "^\\([^:/]+\\)\\(:\\([^/]+\\)/\\)?\\(.*\\)$"\r\r
+                          address))\r\r
+       (error "Can't parse %s" address)\r\r
+      (gnus-group-read-ephemeral-group\r\r
+       (match-string 4 address)\r\r
+       `(nntp ,(match-string 1 address)\r\r
+             (nntp-address ,(match-string 1 address))\r\r
+             (nntp-port-number ,(if (match-end 3)\r\r
+                                    (match-string 3 address)\r\r
+                                  "nntp")))))))\r\r
+\r\r
+(defun gnus-url-parse-query-string (query &optional downcase)\r\r
+  (let (retval pairs cur key val)\r\r
+    (setq pairs (split-string query "&"))\r\r
+    (while pairs\r\r
+      (setq cur (car pairs)\r\r
+            pairs (cdr pairs))\r\r
+      (if (not (string-match "=" cur))\r\r
+          nil                           ; Grace\r\r
+        (setq key (gnus-url-unhex-string (substring cur 0 (match-beginning 0)))\r\r
+              val (gnus-url-unhex-string (substring cur (match-end 0) nil)))\r\r
+        (if downcase\r\r
+            (setq key (downcase key)))\r\r
+        (setq cur (assoc key retval))\r\r
+        (if cur\r\r
+            (setcdr cur (cons val (cdr cur)))\r\r
+          (setq retval (cons (list key val) retval)))))\r\r
+    retval))\r\r
+\r\r
+(defun gnus-url-unhex (x)\r\r
+  (if (> x ?9)\r\r
+      (if (>= x ?a)\r\r
+          (+ 10 (- x ?a))\r\r
+        (+ 10 (- x ?A)))\r\r
+    (- x ?0)))\r\r
+\r\r
+(defun gnus-url-unhex-string (str &optional allow-newlines)\r\r
+  "Remove %XXX embedded spaces, etc in a url.\r\r
+If optional second argument ALLOW-NEWLINES is non-nil, then allow the\r\r
+decoding of carriage returns and line feeds in the string, which is normally\r\r
+forbidden in URL encoding."\r\r
+  (setq str (or str ""))\r\r
+  (let ((tmp "")\r\r
+        (case-fold-search t))\r\r
+    (while (string-match "%[0-9a-f][0-9a-f]" str)\r\r
+      (let* ((start (match-beginning 0))\r\r
+             (ch1 (gnus-url-unhex (elt str (+ start 1))))\r\r
+             (code (+ (* 16 ch1)\r\r
+                      (gnus-url-unhex (elt str (+ start 2))))))\r\r
+        (setq tmp (concat\r\r
+                   tmp (substring str 0 start)\r\r
+                   (cond\r\r
+                    (allow-newlines\r\r
+                     (char-to-string code))\r\r
+                    ((or (= code ?\n) (= code ?\r))\r\r
+                     " ")\r\r
+                    (t (char-to-string code))))\r\r
+              str (substring str (match-end 0)))))\r\r
+    (setq tmp (concat tmp str))\r\r
+    tmp))\r\r
+\r\r
+(defun gnus-url-mailto (url)\r\r
+  ;; Send mail to someone\r\r
+  (when (string-match "mailto:/*\\(.*\\)" url)\r\r
+    (setq url (substring url (match-beginning 1) nil)))\r\r
+  (let (to args subject func)\r\r
+    (if (string-match (regexp-quote "?") url)\r\r
+        (setq to (gnus-url-unhex-string (substring url 0 (match-beginning 0)))\r\r
+              args (gnus-url-parse-query-string\r\r
+                    (substring url (match-end 0) nil) t))\r\r
+      (setq to (gnus-url-unhex-string url)))\r\r
+    (setq args (cons (list "to" to) args)\r\r
+          subject (cdr-safe (assoc "subject" args)))\r\r
+    (gnus-setup-message 'reply\r\r
+      (message-mail)\r\r
+      (while args\r\r
+       (setq func (intern-soft (concat "message-goto-" (downcase (caar args)))))\r\r
+       (if (fboundp func)\r\r
+           (funcall func)\r\r
+         (message-position-on-field (caar args)))\r\r
+       (insert (mapconcat 'identity (cdar args) ", "))\r\r
+       (setq args (cdr args)))\r\r
+      (if subject\r\r
+         (message-goto-body)\r\r
+       (message-goto-subject)))))\r\r
+\r\r
+(defun gnus-button-mailto (address)\r\r
+  ;; Mail to ADDRESS.\r\r
+  (set-buffer (gnus-copy-article-buffer))\r\r
+  (gnus-setup-message 'reply\r\r
+    (message-reply address)))\r\r
+\r\r
+(defun gnus-button-reply (address)\r\r
+  ;; Reply to ADDRESS.\r\r
+  (gnus-setup-message 'reply\r\r
+    (message-reply address)))\r\r
+\r\r
+(defun gnus-button-url (address)\r\r
+  "Browse ADDRESS."\r\r
+  ;; In Emacs 20, `browse-url-browser-function' may be an alist.\r\r
+  (if (listp browse-url-browser-function)\r\r
+      (browse-url address)\r\r
+    (funcall browse-url-browser-function address)))\r\r
+\r\r
+(defun gnus-button-embedded-url (address)\r\r
+  "Browse ADDRESS."\r\r
+  ;; In Emacs 20, `browse-url-browser-function' may be an alist.\r\r
+  (if (listp browse-url-browser-function)\r\r
+      (browse-url (gnus-strip-whitespace address))\r\r
+    (funcall browse-url-browser-function (gnus-strip-whitespace address))))\r\r
+\r\r
+;;; Next/prev buttons in the article buffer.\r\r
+\r\r
+(defvar gnus-next-page-line-format "%{%(Next page...%)%}\n")\r\r
+(defvar gnus-prev-page-line-format "%{%(Previous page...%)%}\n")\r\r
+\r\r
+(defvar gnus-prev-page-map nil)\r\r
+(unless gnus-prev-page-map\r\r
+  (setq gnus-prev-page-map (make-sparse-keymap))\r\r
+  (define-key gnus-prev-page-map gnus-mouse-2 'gnus-button-prev-page)\r\r
+  (define-key gnus-prev-page-map "\r" 'gnus-button-prev-page))\r\r
+\r\r
+(defun gnus-insert-prev-page-button ()\r\r
+  (let ((buffer-read-only nil))\r\r
+    (gnus-eval-format\r\r
+     gnus-prev-page-line-format nil\r\r
+     `(gnus-prev t local-map ,gnus-prev-page-map\r\r
+                gnus-callback gnus-article-button-prev-page\r\r
+                article-type annotation))))\r\r
+\r\r
+(defvar gnus-next-page-map nil)\r\r
+(unless gnus-next-page-map\r\r
+  (setq gnus-next-page-map (make-keymap))\r\r
+  (suppress-keymap gnus-prev-page-map)\r\r
+  (define-key gnus-next-page-map gnus-mouse-2 'gnus-button-next-page)\r\r
+  (define-key gnus-next-page-map "\r" 'gnus-button-next-page))\r\r
+\r\r
+(defun gnus-button-next-page ()\r\r
+  "Go to the next page."\r\r
+  (interactive)\r\r
+  (let ((win (selected-window)))\r\r
+    (select-window (get-buffer-window gnus-article-buffer t))\r\r
+    (gnus-article-next-page)\r\r
+    (select-window win)))\r\r
+\r\r
+(defun gnus-button-prev-page ()\r\r
+  "Go to the prev page."\r\r
+  (interactive)\r\r
+  (let ((win (selected-window)))\r\r
+    (select-window (get-buffer-window gnus-article-buffer t))\r\r
+    (gnus-article-prev-page)\r\r
+    (select-window win)))\r\r
+\r\r
+(defun gnus-insert-next-page-button ()\r\r
+  (let ((buffer-read-only nil))\r\r
+    (gnus-eval-format gnus-next-page-line-format nil\r\r
+                     `(gnus-next\r\r
+                       t local-map ,gnus-next-page-map\r\r
+                       gnus-callback gnus-article-button-next-page\r\r
+                       article-type annotation))))\r\r
+\r\r
+(defun gnus-article-button-next-page (arg)\r\r
+  "Go to the next page."\r\r
+  (interactive "P")\r\r
+  (let ((win (selected-window)))\r\r
+    (select-window (get-buffer-window gnus-article-buffer t))\r\r
+    (gnus-article-next-page)\r\r
+    (select-window win)))\r\r
+\r\r
+(defun gnus-article-button-prev-page (arg)\r\r
+  "Go to the prev page."\r\r
+  (interactive "P")\r\r
+  (let ((win (selected-window)))\r\r
+    (select-window (get-buffer-window gnus-article-buffer t))\r\r
+    (gnus-article-prev-page)\r\r
+    (select-window win)))\r\r
+\r\r
+(defvar gnus-decode-header-methods\r\r
+  '(gnus-decode-with-mail-decode-encoded-word-region)\r\r
+  "List of methods used to decode headers.\r\r
+\r\r
+This variable is a list of FUNCTION or (REGEXP . FUNCTION). If item is\r\r
+FUNCTION, FUNCTION will be apply to all newsgroups. If item is a\r\r
+(REGEXP . FUNCTION), FUNCTION will be only apply to thes newsgroups\r\r
+whose names match REGEXP.\r\r
+\r\r
+For example:\r\r
+((\"chinese\" . gnus-decode-encoded-word-region-by-guess)\r\r
+ mail-decode-encoded-word-region\r\r
+ (\"chinese\" . rfc1843-decode-region))\r\r
+")\r\r
+\r\r
+(defvar gnus-decode-header-methods-cache nil)\r\r
+\r\r
+(defun gnus-decode-with-mail-decode-encoded-word-region (start end)\r\r
+  (let ((rfc2047-default-charset gnus-newsgroup-default-charset)\r\r
+       (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))\r\r
+    (mail-decode-encoded-word-region start end)))\r\r
+\r\r
+(defun gnus-multi-decode-header (start end)\r\r
+  "Apply the functions from `gnus-encoded-word-methods' that match."\r\r
+  (unless (and gnus-decode-header-methods-cache\r\r
+              (eq gnus-newsgroup-name\r\r
+                  (car gnus-decode-header-methods-cache)))\r\r
+    (setq gnus-decode-header-methods-cache (list gnus-newsgroup-name))\r\r
+    (mapc '(lambda (x)\r\r
+            (if (symbolp x)\r\r
+                (nconc gnus-decode-header-methods-cache (list x))\r\r
+              (if (and gnus-newsgroup-name\r\r
+                       (string-match (car x) gnus-newsgroup-name))\r\r
+                  (nconc gnus-decode-header-methods-cache\r\r
+                         (list (cdr x))))))\r\r
+         gnus-decode-header-methods))\r\r
+  (let ((xlist gnus-decode-header-methods-cache))\r\r
+    (pop xlist)\r\r
+    (save-restriction\r\r
+      (narrow-to-region start end)\r\r
+      (while xlist\r\r
+       (funcall (pop xlist) (point-min) (point-max))))))\r\r
+\r\r
+\r\r
+;;; @ for mime-view\r\r
+;;;\r\r
+\r\r
+(defun gnus-article-header-presentation-method (entity situation)\r\r
+  (mime-insert-header entity)\r\r
+  )\r\r
+\r\r
+(set-alist 'mime-header-presentation-method-alist\r\r
+          'gnus-original-article-mode\r\r
+          #'gnus-article-header-presentation-method)\r\r
+\r\r
+(defun gnus-mime-preview-quitting-method ()\r\r
+  (if gnus-show-mime\r\r
+      (gnus-article-show-summary)\r\r
+    (mime-preview-kill-buffer)\r\r
+    (delete-other-windows)\r\r
+    (gnus-article-show-summary)\r\r
+    (gnus-summary-select-article nil t)\r\r
+    ))\r\r
+\r\r
+(set-alist 'mime-preview-quitting-method-alist\r\r
+          'gnus-original-article-mode #'gnus-mime-preview-quitting-method)\r\r
+\r\r
+(defun gnus-following-method (buf)\r\r
+  (set-buffer buf)\r\r
+  (message-followup)\r\r
+  (message-yank-original)\r\r
+  (kill-buffer buf)\r\r
+  (goto-char (point-min))\r\r
+  )\r\r
+\r\r
+(set-alist 'mime-preview-following-method-alist\r\r
+          'gnus-original-article-mode #'gnus-following-method)\r\r
+\r\r
+\r\r
+;;; @ end\r\r
+;;;\r\r
+\r\r
+(gnus-ems-redefine)\r\r
+\r\r
+(provide 'gnus-art)\r\r
+\r\r
+(run-hooks 'gnus-art-load-hook)\r\r
+\r\r
+;;; gnus-art.el ends here\r\r
index 4f50461..ccbbfd9 100644 (file)
@@ -515,8 +515,10 @@ none, and whose CDR is the corresponding element of DOMAINS."
 
 ;;; Query a remote DB.  This requires some stuff from w3 !
 
-(require 'url)
-(require 'w3-forms)
+(eval-and-compile
+  (ignore-errors
+    (require 'url)
+    (require 'w3-forms)))
 
 (defun gnus-picons-url-retrieve (url fn arg)
   (let ((old-asynch (default-value 'url-be-asynchronous))
@@ -732,30 +734,31 @@ none, and whose CDR is the corresponding element of DOMAINS."
 ;;; Main jobs dispatcher function
 
 (defun gnus-picons-next-job-internal ()
-  (if (setq gnus-picons-job-already-running (pop gnus-picons-jobs-alist))
-      (let* ((job gnus-picons-job-already-running)
-            (sym-ann (pop job))
-            (tag (pop job)))
-       (if tag
-           (cond ((stringp tag);; (SYM-ANN "..." RIGHT-P)
-                  (gnus-picons-network-display-internal sym-ann nil tag
-                                                        (pop job)))
-                 ((and (eq 'bar tag)
-                       gnus-picons-display-article-move-p)
-                  (gnus-picons-network-display-internal
-                   sym-ann
-                   (let ((gnus-picons-file-suffixes '("xbm")))
-                     (gnus-picons-try-face
-                      gnus-xmas-glyph-directory "bar."))
-                   nil (pop job)))
-                 ((eq 'search tag);; (SYM-ANN 'search USER ADDRS DBS RIGHT-P)
-                  (gnus-picons-network-search
-                   (pop job) (pop job) (pop job) sym-ann (pop job)))
-                 ((eq 'picon tag);; (SYM-ANN 'picon URL PART RIGHT-P)
-                  (gnus-picons-network-display
-                   (pop job) (pop job) sym-ann (pop job)))
-                 (t (setq gnus-picons-job-already-running nil)
-                    (error "Unknown picon job tag %s" tag)))))))
+  (when (setq gnus-picons-job-already-running (pop gnus-picons-jobs-alist))
+    (let* ((job gnus-picons-job-already-running)
+          (sym-ann (pop job))
+          (tag (pop job)))
+      (when tag
+       (cond
+        ((stringp tag);; (SYM-ANN "..." RIGHT-P)
+         (gnus-picons-network-display-internal
+          sym-ann nil tag (pop job)))
+        ((eq 'bar tag)
+         (gnus-picons-network-display-internal
+          sym-ann
+          (let ((gnus-picons-file-suffixes '("xbm")))
+            (gnus-picons-try-face
+             gnus-xmas-glyph-directory "bar."))
+          nil (pop job)))
+        ((eq 'search tag);; (SYM-ANN 'search USER ADDRS DBS RIGHT-P)
+         (gnus-picons-network-search
+          (pop job) (pop job) (pop job) sym-ann (pop job)))
+        ((eq 'picon tag);; (SYM-ANN 'picon URL PART RIGHT-P)
+         (gnus-picons-network-display
+          (pop job) (pop job) sym-ann (pop job)))
+        (t
+         (setq gnus-picons-job-already-running nil)
+         (error "Unknown picon job tag %s" tag)))))))
 
 (defun gnus-picons-next-job ()
   "Start processing the job queue if it is not in progress."
index 4ada523..a1e2d28 100644 (file)
@@ -259,10 +259,10 @@ is restarted, and sometimes reloaded."
 (defconst gnus-product-name "T-gnus"
   "Product name of this version of gnus.")
 
-(defconst gnus-version-number "6.10.047"
+(defconst gnus-version-number "6.10.048"
   "Version number for this version of gnus.")
 
-(defconst gnus-original-version-number "0.62"
+(defconst gnus-original-version-number "v0.63"
     "Version number for this version of Gnus.")
 
 (defconst gnus-original-product-name "Pterodactyl Gnus"
index bd35833..da59745 100644 (file)
@@ -2051,11 +2051,7 @@ prefix, and don't delete any headers."
           (if (listp message-indent-citation-function)
               message-indent-citation-function
             (list message-indent-citation-function)))))
-    (goto-char start)
-    ;; Quote parts.
-    (while (re-search-forward "<#/?!*\\(multipart\\|part\\|external\\)" end t)
-      (goto-char (match-beginning 1))
-      (insert "!"))
+    (mml-quote-region start end)
     (goto-char end)
     (when (re-search-backward "^-- $" start t)
       ;; Also peel off any blank lines before the signature.
@@ -2085,12 +2081,7 @@ prefix, and don't delete any headers."
             (if (listp message-indent-citation-function)
                 message-indent-citation-function
               (list message-indent-citation-function)))))
-      (goto-char start)
-      ;; Quote parts.
-      (while (re-search-forward
-             "<#/?!*\\(multipart\\|part\\|external\\)" end t)
-       (goto-char (match-beginning 1))
-       (insert "!"))
+      (mml-quote-region start end)
       (goto-char start)
       (while functions
        (funcall (pop functions)))
@@ -4777,24 +4768,50 @@ regexp varstr."
 ;;; MIME functions
 ;;;
 
+
+;; I really think this function should be renamed.  It is only useful
+;; for inserting file attachments.
+
 (defun message-insert-mime-part (file type description)
-  "Insert a multipart/alternative part into the buffer."
+  "Attach a file to the outgoing MIME message.
+The file is not inserted or encoded until you send the message with
+`\\[message-send-and-exit]' or `\\[message-send]'.
+
+FILE is the name of the file to attach.  TYPE is its content-type, a
+string of the form \"type/subtype\".  DESCRIPTION is a one-line
+description of the attachment."
   (interactive
-   (let* ((file (read-file-name "Insert file: " nil nil t))
-         (type (mm-default-file-encoding file)))
-     (list file
-          (completing-read
-           (format "MIME type for %s: " file)
-           (delete-duplicates
-            (mapcar (lambda (m) (list (cdr m))) mailcap-mime-extensions))
-           nil nil type)
-          (read-string "Description: "))))
-  (insert (format "<#part type=%s filename=\"%s\"%s><#/part>\n"
-                 type file
-                 (if (zerop (length description))
-                     ""
-                   (format " description=%s"
-                           (prin1-to-string description))))))
+   (let* ((file (read-file-name "Attach file: " nil nil t))
+         (type (completing-read
+                (format "Content type (default %s): "
+                        (or (mm-default-file-encoding file)
+                            ;; Perhaps here we should check
+                            ;; what the file looks like, and
+                            ;; offer text/plain if it looks
+                            ;; like text/plain.
+                            "application/octet-stream"))
+                (delete-duplicates
+                 (mapcar (lambda (m) (list (cdr m))) mailcap-mime-extensions)
+                 :test 'equal)))
+         (description (read-string "One line description: ")))
+     (list file type description)))
+  (when (string-match "\\`[ \t]*\\'" description)
+    (setq description nil))
+  (when (string-match "\\`[ \t]*\\'" type)
+    (setq type (mm-default-file-encoding file))) nil
+  ;; Prevent some common errors.  This is inspired by similar code in
+  ;; VM.
+  (when (file-directory-p file)
+    (error "%s is a directory, cannot attach" file))
+  (unless (file-exists-p file)
+    (error "No such file: %s" file))
+  (unless (file-readable-p file)
+    (error "Permission denied: %s" file))
+  (insert (format "<#part type=%s filename=%s%s><#/part>\n"
+                 type (prin1-to-string file)
+                 (if description
+                     (format " description=%s" (prin1-to-string description))
+                   ""))))
 
 (defun message-mime-insert-external (file type)
   "Insert a message/external-body part into the buffer."
index 7b0061f..56c9e80 100644 (file)
          (device-sound-enabled-p)))
     ("audio/au" mm-inline-audio
      (and (or (featurep 'nas-sound) (featurep 'native-sound))
-         (device-sound-enabled-p))))
+         (device-sound-enabled-p)))
+    ("multipart/alternative" ignore t)
+    ("multipart/mixed" ignore t)
+    ("multipart/related" ignore t))
   "Alist of media types/test that say whether the media types can be displayed inline.")
 
 (defvar mm-user-display-methods
   "List of MIME type regexps that will be displayed externally automatically.")
 
 (defvar mm-alternative-precedence
-  '("image/jpeg" "image/gif" "text/html" "text/enriched"
+  '("multipart/related" "multipart/mixed" "multipart/alternative"
+    "image/jpeg" "image/gif" "text/html" "text/enriched"
     "text/richtext" "text/plain")
   "List that describes the precedence of alternative parts.")
 
@@ -250,15 +254,15 @@ external if displayed external."
 (defun mm-display-external (handle method)
   "Display HANDLE using METHOD."
   (mm-with-unibyte-buffer
-    (insert-buffer-substring (mm-handle-buffer handle))
-    (mm-decode-content-transfer-encoding
-     (mm-handle-encoding handle) (car (mm-handle-type handle)))
     (if (functionp method)
        (let ((cur (current-buffer)))
          (if (eq method 'mailcap-save-binary-file)
              (progn
                (set-buffer (generate-new-buffer "*mm*"))
                (setq method nil))
+           (insert-buffer-substring (mm-handle-buffer handle))
+           (mm-decode-content-transfer-encoding
+            (mm-handle-encoding handle) (car (mm-handle-type handle)))
            (let ((win (get-buffer-window cur t)))
              (when win
                (select-window win)))
@@ -273,6 +277,10 @@ external if displayed external."
                    (funcall method)
                  (mm-save-part handle))
              (mm-handle-set-undisplayer handle mm))))
+      ;; The function is a string to be executed.
+      (insert-buffer-substring (mm-handle-buffer handle))
+      (mm-decode-content-transfer-encoding
+       (mm-handle-encoding handle) (car (mm-handle-type handle)))
       (let* ((dir (make-temp-name (expand-file-name "emm." mm-tmp-directory)))
             (filename (mail-content-type-get
                        (mm-handle-disposition handle) 'filename))
@@ -437,7 +445,7 @@ This overrides entries in the mailcap file."
   "Return a version of ARG that is safe to evaluate in a shell."
   (let ((pos 0) new-pos accum)
     ;; *** bug: we don't handle newline characters properly
-    (while (setq new-pos (string-match "[;!`\"$\\& \t{} ]" arg pos))
+    (while (setq new-pos (string-match "[;!`\"$\\& \t{} |()<>]" arg pos))
       (push (substring arg pos new-pos) accum)
       (push "\\" accum)
       (push (list (aref arg new-pos)) accum)
index 1e2f6ab..a83ceae 100644 (file)
@@ -1,4 +1,4 @@
-;;; mml.el --- A package for parsing and validating MML documents
+;;; mml.el --- A package for parsing and validating MML documents\r\r
 ;; Copyright (C) 1998 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
       (buffer-substring-no-properties beg (goto-char (point-max))))))
 
 (defvar mml-boundary nil)
-(defvar mml-base-boundary "=-=-=")
+(defvar mml-base-boundary "-=-=")
 (defvar mml-multipart-number 0)
 
 (defun mml-generate-mime ()
            (substring path (1+ (match-end 2))))
     path))
 
+(defun mml-quote-region (beg end)
+  "Quote the MML tags in the region."
+  (interactive "r")
+  (save-excursion
+    (goto-char beg)
+    ;; Quote parts.
+    (while (re-search-forward
+           "<#/?!*\\(multipart\\|part\\|external\\)" end t)
+      (goto-char (match-beginning 1))
+      (insert "!"))))
+
 (provide 'mml)
 
 ;;; mml.el ends here
index d7c1d4d..d68c8c4 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus-ja
-@settitle Semi-gnus 6.10.047 Manual
+@settitle Semi-gnus 6.10.048 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -345,7 +345,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Semi-gnus 6.10.047 Manual
+@title Semi-gnus 6.10.048 Manual
 
 @author by Lars Magne Ingebrigtsen
 @author by members of Semi-gnus mailing-list
@@ -399,7 +399,7 @@ Semi-gnus \e$B$O!"Bg$-$J3($,F~$C$F$$$?$j$5$^$6$^$J7A<0$rMQ$$$?$j$7$F$$$k$A$g$C\e(B
 \e$B$J8@8l7w$r:9JL$7$^$;$s!#$"$"!"%/%j%s%4%s$NJ}$O\e(B Unicode Next Generation\e$B$r\e(B
 \e$B$*BT$A$/$@$5$$!#\e(B
 
-\e$B$3$N@bL@=q$O\e(B Semi-gnus 6.10.047 \e$B$KBP1~$7$^$9!#\e(B
+\e$B$3$N@bL@=q$O\e(B Semi-gnus 6.10.048 \e$B$KBP1~$7$^$9!#\e(B
 
 @end ifinfo
 
index 2c56a89..2acc1ae 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Semi-gnus 6.10.047 Manual
+@settitle Semi-gnus 6.10.048 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -318,7 +318,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Semi-gnus 6.10.047 Manual
+@title Semi-gnus 6.10.048 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -361,7 +361,7 @@ internationalization/localization and multiscript features based on MULE
 API.  So Semi-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.047.
+This manual corresponds to Semi-gnus 6.10.048.
 
 @end ifinfo
 
index d256af3..211fae9 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message-ja
-@settitle Message 6.10.047 Manual
+@settitle Message 6.10.048 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -60,7 +60,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Message 6.10.047 Manual
+@title Message 6.10.048 Manual
 
 @author by Lars Magne Ingebrigtsen
 @translated by members of Semi-gnus mailing-list
@@ -112,7 +112,7 @@ Gnus \e$B$NA4$F$N%a%C%;!<%8$N:n@.\e(B (\e$B%a!<%k$H%K%e!<%9$NN>J}\e(B) \e$B$O%a%C%;!<
 * Key Index::         \e$B%a%C%;!<%8%b!<%I%-!<$N0lMw!#\e(B
 @end menu
 
-\e$B$3$N%^%K%e%"%k$O\e(B Message 6.10.047 \e$B$KBP1~$7$^$9!#\e(BMessage \e$B$O$3$N%^%K%e%"%k$H\e(B
+\e$B$3$N%^%K%e%"%k$O\e(B Message 6.10.048 \e$B$KBP1~$7$^$9!#\e(BMessage \e$B$O$3$N%^%K%e%"%k$H\e(B
 \e$BF1$8HGHV9f$N\e(B Gnus \e$B$NG[I[$H6&$KG[I[$5$l$^$9!#\e(B
 
 
index 01edcb2..9a7f820 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Message 6.10.047 Manual
+@settitle Message 6.10.048 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.047 Manual
+@title Message 6.10.048 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.047.  Message is
+This manual corresponds to Message 6.10.048.  Message is
 distributed with the Gnus distribution bearing the same version number
 as this manual.