-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
-========================================================================
-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
-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
-;;; 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
;;; 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))
;;; 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."
(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"
(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.
(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)))
;;; 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."
(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.")
(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)))
(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))
"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)
-;;; 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
\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
@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
\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
\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
@tex
@titlepage
-@title Semi-gnus 6.10.047 Manual
+@title Semi-gnus 6.10.048 Manual
@author by Lars Magne Ingebrigtsen
@page
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
\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
@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
* 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
\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
@tex
@titlepage
-@title Message 6.10.047 Manual
+@title Message 6.10.048 Manual
@author by Lars Magne Ingebrigtsen
@page
* 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.