-1998-12-22 Katsumi Yamaoka <yamaoka@jpl.org>
+1999-03-27 MORIOKA Tomohiko <tomo@etl.go.jp>
- * lisp/gnus-art.el (gnus-article-prepare-display): Set
- `gnus-article-current-summary' to `gnus-summary-buffer'.
+ * lisp/gnus-art.el (gnus-following-method): Use
+ `gnus-group-find-parameter' to detect the current message is news
+ or not.
-1998-12-18 Katsumi Yamaoka <yamaoka@jpl.org>
+ * lisp/gnus-art.el (gnus-following-method): Use
+ `message-wide-reply' for mail.
- * lisp/gnus-start.el (gnus-read-newsrc-el-file): Bug (referring to
- unbounded variable) fix.
+1999-03-27 MORIOKA Tomohiko <tomo@etl.go.jp>
-1998-12-17 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * lisp/gnus-start.el (gnus-read-newsrc-el-file): Don't load newsrc
- file if it does not exist.
+ * lisp/message.el (message-yank-original): Don't call
+ `gnus-copy-article-buffer' to avoid problem to yank assembled
+ (FULL) message of message/partial pieces.
-1998-12-14 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * lisp/gnus.el: (gnus-version-number): Update to 6.9.2.
-
- * lisp/nnheader.el (nnheader-find-file-noselect): Call
- `find-file-noselect-as-coding-system' with CODING-SYSTEM as the
- 1st arg.
-
- * lisp/nnmail.el (nnmail-find-file): Call
- `insert-file-contents-as-coding-system' with CODING-SYSTEM as the
- 1st arg.
- * lisp/nnheader.el (nnheader-insert-file-contents): Likewise.
-
- * lisp/gnus-start.el (gnus-save-newsrc-file): Call
- `write-region-as-coding-system' with CODING-SYSTEM as the 1st arg.
- (gnus-read-newsrc-el-file): Call
- `insert-file-contents-as-coding-system' with CODING-SYSTEM as the
- 1st arg.
-
- * lisp/gnus-cache.el (gnus-cache-save-buffers): Call
- `gnus-write-buffer-as-coding-system' with CODING-SYSTEM as the 1st
- arg.
-
- * lisp/gnus-util.el (gnus-write-buffer-as-coding-system): Be
- CODING-SYSTEM the 1st arg.
-
- * lisp/nnmail.el (nnmail-write-region): Call
- `write-region-as-coding-system' with CODING-SYSTEM as the 1st arg.
- * lisp/gnus-start.el (gnus-save-newsrc-file): Likewise.
- * lisp/gnus-agent.el (gnus-agent-expire): Likewise.
- (gnus-agent-fetch-headers): Likewise.
- (gnus-agent-flush-cache): Likewise.
- (gnus-agent-fetch-articles): Likewise.
- (gnus-agent-save-history): Likewise.
- (gnus-agent-save-groups): Likewise.
- (gnus-agent-save-active): Likewise.
-
-1998-12-14 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * lisp/nnheader.el (nnheader-find-file-noselect): Use
- `find-file-noselect-as-coding-system' (renamed from
- `find-file-noselect-as-specified-coding-system').
-
- * lisp/nnmail.el (nnmail-find-file): Use
- `insert-file-contents-as-coding-system' (renamed from
- `insert-file-contents-as-specified-coding-system').
- * lisp/nnheader.el (nnheader-insert-file-contents): Likewise.
-
- * lisp/gnus-start.el (gnus-save-newsrc-file): Use
- `write-region-as-coding-system' (renamed from
- `write-region-as-specified-coding-system').
- (gnus-read-newsrc-el-file): Use
- `insert-file-contents-as-coding-system' (renamed from
- `insert-file-contents-as-specified-coding-system').
-
- * lisp/gnus-cache.el (gnus-cache-save-buffers): Use
- `gnus-write-buffer-as-coding-system' (renamed from
- `gnus-write-buffer-as-specified-coding-system').
-
- * lisp/gnus-util.el (gnus-write-buffer-as-coding-system):
- Renamed from `gnus-write-buffer-as-specified-coding-system'.
-
- * lisp/nnmail.el (nnmail-write-region): Use
- `write-region-as-coding-system' (renamed from
- `write-region-as-specified-coding-system').
- * lisp/gnus-start.el (gnus-save-newsrc-file): Likewise.
- * lisp/gnus-agent.el (gnus-agent-expire): Likewise.
- (gnus-agent-fetch-headers): Likewise.
- (gnus-agent-flush-cache): Likewise.
- (gnus-agent-fetch-articles): Likewise.
- (gnus-agent-save-history): Likewise.
- (gnus-agent-save-groups): Likewise.
- (gnus-agent-save-active): Likewise.
-
-1998-12-11 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * lisp/nnheader.el (nnheader-find-file-noselect): Call
- `find-file-noselect-as-specified-coding-system' directly.
-
-1998-12-10 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * lisp/pop3.el (pop3-movemail): Use `write-region-as-binary'
- instead of `append-to-file'.
- (pop3-movemail-file-coding-system): Abolished.
-
- * lisp/nnheader.el (nnheader-find-file-noselect): Use
- `find-file-noselect-as-specified-coding-system' instead of
- `find-file-noselect'.
-
- * lisp/nnmail.el (nnmail-find-file): Use
- `insert-file-contents-as-specified-coding-system' instead of
- `insert-file-contents'.
- * lisp/nnheader.el (nnheader-insert-file-contents): Likewise.
-
- * lisp/message.el (message-send-mail-with-qmail): Enclose
- `call-process-region' with `as-binary-process'.
- (message-send-mail-with-sendmail): Likewise.
- (message-send-coding-system): Abolished.
-
- * lisp/gnus-start.el (gnus-save-newsrc-file): Emulate
- `save-buffer' with `write-region-as-specified-coding-system'.
- (gnus-read-newsrc-el-file): Emulate `load' with
- `insert-file-contents-as-specified-coding-system' and
- `eval-region'.
-
- * lisp/gnus-cache.el (gnus-cache-save-buffers): Use
- `gnus-write-buffer-as-specified-coding-system' instead of
- `gnus-write-buffer'.
-
- * lisp/gnus-util.el (gnus-output-to-mail): Use
- `write-region-as-binary' instead of `append-to-file'.
- (gnus-output-to-mail): Use `gnus-write-buffer-as-binary' instead
- of `gnus-write-buffer'.
- (gnus-write-buffer-as-specified-coding-system): New function.
- (gnus-write-buffer-as-binary): New function.
-
- * lisp/nnmail.el (nnmail-write-region): Use
- `write-region-as-specified-coding-system' instead of
- `write-region'.
- * lisp/gnus-start.el (gnus-save-newsrc-file): Likewise.
- * lisp/gnus-agent.el (gnus-agent-expire): Likewise.
- (gnus-agent-fetch-headers): Likewise.
- (gnus-agent-flush-cache): Likewise.
- (gnus-agent-fetch-articles): Likewise.
- (gnus-agent-save-history): Likewise.
- (gnus-agent-save-groups): Likewise.
- (gnus-agent-save-active): Likewise.
-
-1998-12-08 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * lisp/smtp.el (smtp-via-smtp): Use `open-network-stream-as-binary'
- instead of `open-network-stream'.
- * lisp/pop3.el (pop3-open-server): Likewise.
- * lisp/nntp.el (nntp-open-network-stream): Likewise.
- * lisp/gnus-gl.el (bbb-connect-to-bbbd): Likewise.
-
- * lisp/nntp.el (nntp-open-rlogin): Enclose `start-process' with
- `as-binary-process'.
- (nntp-open-telnet): Likewise.
-
- * lisp/smtp.el (smtp-coding-system): Abolished.
-
- * lisp/nntp.el (nntp-coding-system-for-write): Abolished.
- (nntp-coding-system-for-read): Abolished.
-
- * lisp/nntp.el: Don't require `tcp'.
- * lisp/nndb.el: Likewise.
-
-1998-12-07 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * lisp/message.el (message-get-parameter-with-eval): Call
- `message-get-parameter' with arg `key' first.
-
-1998-11-26 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
-
- * lisp/gnus.el: (gnus-version-number): Update to 6.9.1.
- (gnus-version): Modified for SEMI 1.11, FLIM 1.12.
-
- * lisp/gnus-draft.el: (gnus-draft-decoding-buffer): Call
- `mime-edit-decode-message-in-buffer' instead of
- `mime-edit-decode-buffer'.
+1999-01-31 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * Chaos: Version 1.12.4 was released.
+
+ * lisp/gnus.el (gnus-version-number): Update to 1.12.4.
+
+ * lisp/gnus-sum.el: Abolish macro `gnus-nov-read-integer',
+ `gnus-nov-skip-field' and `gnus-nov-field'.
+ (gnus-nov-parse-line): Use `nnheader-nov-field' and
+ `nnheader-nov-read-integer' instead of `gnus-nov-field' and
+ `gnus-nov-read-integer'.
+ (gnus-get-newsgroup-headers-xover): Use
+ `gnus-retrieve-parsed-headers'.
+
+ * lisp/gnus-cache.el (gnus-cache-retrieve-parsed-headers): Use
+ `gnus-cache-braid-headers',
+ `nnheader-get-newsgroup-headers-xover*' and
+ `nnheader-retrieve-headers-from-directory*' instead of
+ `gnus-get-newsgroup-headers-xover', `gnus-cache-braid-parsed-nov'
+ nor `gnus-cache-braid-parsed-heads'; abolish function
+ `gnus-cache-braid-parsed-nov' and `gnus-cache-braid-parsed-nov'.
+ (gnus-cache-braid-headers): New function.
+
+ * lisp/nnheader.el (nnheader-file-name-translation-alist): Modify
+ DOC-string to sync with Pterodactyl Gnus v0.66.
+ (nnheader-nov-read-integer): Use `char-after' instead of
+ `following-char' <to sync with Pterodactyl Gnus v0.66>; use
+ `(search-forward "\t" eol 'move)' instead of `(forward-char 1)' as
+ same as `gnus-nov-read-integer'.
+ (nnheader-parse-nov): Use `char-after' instead of `following-char'
+ <to sync with Pterodactyl Gnus v0.66>.
+ (nnheader-retrieve-headers-from-directory*): New function.
+ (nnheader-retrieve-headers-from-directory): Use
+ `nnheader-retrieve-headers-from-directory*'.
+ (nnheader-get-newsgroup-headers-xover*): New function.
+ (nnheader-insert-references): Modify comment to sync with
+ Pterodactyl Gnus v0.66.
- * lisp/gnus-sum.el: (gnus-structured-field-decoder): Use
- `eword-decode-and-unfold-structured-field-body' instead of
- 'eword-decode-and-unfold-structured-field'.
- (gnus-unstructured-field-decoder): remove `must-unfold'.
+1999-01-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-11-26 Katsumi Yamaoka <yamaoka@jpl.org>
+ * Chaos: Version 1.12.3 was released.
- * lisp/gnus-msg.el (gnus-summary-supersede-article): Bind
- `gnus-message-setup-hook' to nil.
+ * lisp/gnus.el (gnus-version-number): Update to 1.12.3.
- * lisp/message.el (message-supersede-setup-for-mime-edit): New
+ * lisp/nnmh.el (nnmh-retrieve-parsed-headers): Use
+ `nnheader-retrieve-headers-from-directory'.
+
+ * lisp/nnheader.el (nnheader-retrieve-headers-from-directory): 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.
+1999-01-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-11-25 Hasebe Satoshi <hasebe@mtgcb.telcom.oki.co.jp>
+ * Chaos: Version 1.12.2 was released.
- * lisp/gnus-util.el: Require RMAIL in a different way.
+1999-01-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-11-24 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+ * lisp/gnus.el (gnus-version-number): Update to 1.12.2.
+ (gnus-version): Modify for SEMI 1.13.
- * 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): Likewise.
+ * lisp/gnus-int.el (gnus-retrieve-parsed-headers): Use
+ `gnus-cache-retrieve-parsed-headers' instead of
+ `gnus-cache-retrieve-headers'.
-1998-11-24 Katsumi Yamaoka <yamaoka@jpl.org>
+ * lisp/gnus-cache.el (gnus-cache-retrieve-parsed-headers): New
+ function.
+ (gnus-cache-braid-parsed-nov): New function.
+ (gnus-cache-braid-parsed-heads): New function.
- * lisp/dgnushack.el (dgnushack-compile): Dismiss "gnus-bbdb.el"
- from the list if BBDB has not been installed.
+1999-01-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-11-20 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+ * Chaos: Version 1.12.1 was released.
- * lisp/gnus-util.el: Require `rmail' only if RMAIL has been
- installed.
+1999-01-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-11-19 Keiichi Suzuki <kei-suzu@mail.wbs.ne.jp>
+ * lisp/gnus.el (gnus-version-number): Update to 1.12.1.
- * 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-sum.el (gnus-article-sort-by-author): fixed.
- * 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'.
+1999-01-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-11-19 Katsumi Yamaoka <yamaoka@jpl.org>
+ * lisp/gnus-int.el (gnus-retrieve-parsed-headers): Add new
+ optional arguments `dependencies' and `force-new'; new
+ implementation; call `retrieve-parsed-headers' if it is found.
- * lisp/gnus.el (gnus-version-number): Update to 6.8.20.
+ * lisp/nnmh.el (nnmh-retrieve-parsed-headers): New function.
- * Sync up with Gnus 5.6.45.
+1999-01-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-11-18 Katsumi Yamaoka <yamaoka@jpl.org>
+ * lisp/gnus-sum.el (gnus-select-newsgroup): Use
+ `gnus-retrieve-parsed-headers' instead of `gnus-retrieve-headers'
+ and `gnus-get-newsgroup-headers-xover' or
+ `gnus-get-newsgroup-headers'.
- * lisp/message.el (message-mimic-kill-buffer): Rewrite.
+ * lisp/gnus-int.el (gnus-retrieve-parsed-headers): New function.
-1998-11-18 Katsumi Yamaoka <yamaoka@jpl.org>
+1999-01-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * lisp/message.el (message-mimic-kill-buffer): New function.
- (message-mode-map): Use it for `C-x k'.
+ * Chaos: Version 1.12.0 was released.
-1998-11-18 Keiichi Suzuki <kei-suzu@mail.wbs.ne.jp>
+1999-01-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * lisp/message.el (message-dont-send): Use `message-delete-frame'.
+ * Sync up with Gnus 5.6.45.
-1998-11-14 Kenji Itoh <keit@tpj.co.jp>
+1998-12-01 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * lisp/nnmail.el (nnmail-read-passwd): Use `read-passwd' if it
- exists as a function.
+ * Chao-gnus: Version 6.12.5 was released.
- * lisp/pop3.el (pop3-read-passwd): Likewise.
+ * Abolish smtp.el and smtpmail.el (moved to FLIM).
-1998-11-16 Katsumi Yamaoka <yamaoka@jpl.org>
+1998-11-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * make.bat: Replace line endings from `LF' to `CRLF'.
+ * lisp/gnus.el (gnus-version-number): Update to 6.12.5.
+ (gnus-version): Modify for SEMI 1.12.
-1998-11-16 Katsumi Yamaoka <yamaoka@jpl.org>
+1998-11-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * README-gnus-bbdb.en, README-gnus-bbdb.ja: New files.
+ * lisp/message.el: Sync with Gnus 5.6.45.
- * lisp/gnus-bbdb.el: Replace string in comment "Nana-" to "Semi-".
+1998-07-03 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-1998-11-13 Keiichi Suzuki <kei-suzu@mail.wbs.ne.jp>
+ * lisp/message.el (message-send-mail-with-smtp): Require 'smtp.
- * lisp/gnus-msg.el (gnus-setup-message): Setup
- `message-startup-parameter-alist' for starting `message-mode'.
+1998-06-18 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
- * lisp/message.el (message-parameter-alist): New variable.
- (message-startup-parameter-alist): New variable.
- (message-eval-parameter): New function.
- (message-get-reply-buffer): New function.
- (message-get-original-reply-buffer): New function.
- (message-mode): Make new local variable `message-parameter-alist'.
- (message-fetch-reply-field): Use `message-get-reply-buffer'.
- (message-yank-original): Ditto.
- (message-setup): Get message reply buffer from
- `message-parameter-alist'.
- (message-mime-insert-article): Use
- `message-get-original-reply-buffer'.
+ * lisp/message.el (message-send-mail-with-smtp): New
+ implementation.
- * lisp/gnus-bbdb.el: New file. Interface for BBDB.
+1998-11-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-11-12 Katsumi Yamaoka <yamaoka@jpl.org>
+ * lisp/gnus.el (gnus-version-number): Update to 6.12.4.
- * lisp/gnus-msg.el (gnus-summary-resend-bounced-mail): Bind
- `gnus-message-setup-hook' to nil.
+ * lisp/nnheader.el (nnheader-decode-subject): Use field-decoder
+ for `nov' mode.
+ (nnheader-decode-from): Likewise.
- * 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.
+1998-11-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * 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-edit-article): Call
- `gnus-article-edit-article-setup-function' if it is non-nil.
- (gnus-article-edit-article-setup-function): New user option. Use
- `gnus-article-mime-edit-article-setup' in default.
- (gnus-article-mime-edit-article-setup-hook): New hook.
- (gnus-article-mime-edit-exit): New function. Use
- `gnus-article-make-full-mail-header'.
- (gnus-article-mime-edit-article-setup): Ditto.
- (gnus-article-mime-edit-article-unwind): New function.
- (gnus-article-make-full-mail-header): New function.
- (gnus-article-prepare-display): New function.
- (gnus-article-prepare): Use it.
+ * lisp/gnus.el (gnus-version-number): Update to 6.12.3.
-1998-11-11 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+1998-11-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * lisp/message.el (message-mode-map): Add new command key
- `C-x C-s' for `message-save-drafts'.
+ * lisp/mmgnus.el (entity-buffer): Must move to (point-min) before
+ search boundary between header and body (to fix problem with
+ Emacs).
-1998-11-11 Keiichi Suzuki <kei-suzu@mail.wbs.ne.jp>
+1998-11-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * lisp/message.el (message-8bit-encoding-list): New variable.
- (message-send-mail): Use `message-check-mail-syntax'.
- (message-check-news-body-syntax): Use `message-check-8bit'.
- (message-check-mail-syntax): New function.
- (message-check-mail-header-syntax): New function.
- (message-check-mail-body-syntax): New function.
- (message-check-8bit): New function.
+ * lisp/nnmh.el (nnmh-retrieve-headers): Don't use
+ `nnheader-fold-continuation-lines'.
-1998-11-09 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+ * lisp/gnus-sum.el (gnus-get-newsgroup-headers): Don't expect
+ unfolded (to fix problem when using gnus-cache).
- * lisp/pop3-fma.el: Set the value of `nnmail-read-passwd' as a
- symbol `pop3-fma-read-passwd'.
+1998-10-31 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-11-04 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+ * lisp/gnus.el (gnus-version-number): Update to 6.12.2.
+ (gnus-version): Modify for SEMI 1.11.
- * lisp/message.el: (message-do-fcc): Don't run message-header-hook
- and message-before-do-fcc-hook.
+ * lisp/gnus-draft.el (gnus-draft-decoding-function): Use
+ `mime-edit-decode-message-in-buffer' instead of
+ `mime-edit-decode-buffer'.
-1998-11-02 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+1998-10-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * lisp/message.el: (message-make-in-reply-to): Generate
- In-Reply-To header according to draft-ietf-drums-msg-fmt-05.
+ * lisp/gnus-draft.el (gnus-draft-decoding-function): Use
+ `mime-edit-decode-buffer' simply as initial value.
-1998-10-30 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+ * lisp/gnus-art.el (gnus-article-decode-rfc1522): Use
+ `mime-decode-header-in-buffer' instead of `eword-decode-header'.
+ (gnus-article-display-message-with-encoded-word): Likewise.
- * lisp/gnus.el: Add autoload setting for `pop3-fma'.
+ * lisp/gnus.el (gnus-version-number): Update to 6.12.1.
-1998-10-28 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+ * 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'.
- * lisp/pop3-fma.el: Determin base64 encode/decode function by FLIM.
+1998-10-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-10-26 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+ * lisp/gnus.el (gnus-version-number): Update to 6.9.7.
+ (gnus-version): Modify for SEMI 1.10.
- * lisp/message.el (message-save-drafts): New function.
- To save drafts in network code.
- (message-save-buffer): New variable.
+1998-10-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * lisp/pop3-fma.el: Require `mel-b-el' if `mel-b' does not exist.
+ * lisp/nnheader.el (nnheader-insert-nov): Use `mime-fetch-field'
+ for Subject and From field.
-1998-10-23 Katsumi Yamaoka <yamaoka@jpl.org>
+1998-10-20 Katsumi Yamaoka <yamaoka@jpl.org>
- * lisp/gnus-msg.el (gnus-message-make-user-agent): New function.
+ * lisp/nnheader.el (nnheader-parse-nov): Use
+ `make-full-mail-header'.
-1998-10-21 Katsumi Yamaoka <yamaoka@jpl.org>
+1998-10-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * lisp/gnus-xmas.el (gnus-tilde-pad-form): Guard for non string
- symbol.
+ * lisp/nnheader.el (nnheader-parse-head): Use
+ `make-full-mail-header'.
-1998-10-17 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+1998-10-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * lisp/pop3-fma.el (pop3-fma-init-message-hook): Change
- message-send-hook to mime-edit-translate-hook.
+ * lisp/gnus.el (gnus-version-number): Update to 6.9.6.
+ (gnus-version): Modify for SEMI 1.9.
-1998-10-14 Katsumi Yamaoka <yamaoka@jpl.org>
+1998-10-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * 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.
+ * 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-13 Katsumi Yamaoka <yamaoka@jpl.org>
+1998-10-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * 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/gnus.el (gnus-version-number): Update to 6.9.5.
- * lisp/nnheader.el (nnheader-Y-or-n-p): Rewrite for Emacs 19 or
- later except for XEmacs.
+1998-10-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-10-08 Katsumi Yamaoka <yamaoka@jpl.org>
+ * lisp/nnheader.el (make-full-mail-header-from-decoded-header):
+ New function.
- * lisp/message.el (message-mode-map): Define key `C-x k'.
- (message-kill-buffer): Change the prompt string.
- (message-kill-buffer): Refer to
- `message-kill-buffer-query-function'.
- (message-kill-buffer-query-function): New user option.
+ * lisp/message.el (message-reply): Use
+ `make-full-mail-header-from-decoded-header' instead of
+ `make-full-mail-header'.
+ (message-followup): Likewise.
- * lisp/nnheader.el (nnheader-Y-or-n-p): New function.
+1998-10-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-1998-10-07 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+ * lisp/gnus-sum.el (gnus-summary-set-default-charset): New
+ function.
- * lisp/nnagent.el (nnagent-open-server): Small bug fix.
+ * 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'.
+ (gnus-article-display-message-with-encoded-word): Likewise.
-1998-10-07 Keiichi Suzuki <kei-suzu@mail.wbs.ne.jp>
+1998-10-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * TODO.ja: New file.
+ * lisp/gnus-msg.el (gnus-message-setup-hook): Add
+ `gnus-maybe-setup-default-charset'.
+ Delete dummy definition for `nnspool-rejected-article-hook' and
+ `xemacs-codename'
+ (gnus-maybe-setup-default-charset): New function.
-1998-10-05 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+ * lisp/message.el (message-setup-hook): Delete
+ `message-maybe-setup-default-charset'.
+ Abolish variable `message-newsreader' and `message-mailer'.
+ (message-user-agent): New variable.
+ Abolish function `message-maybe-setup-default-charset'.
+
+1998-10-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * lisp/gnus.el (gnus-info-filename): New variable.
- (gnus-info-find-node): Use `gnus-info-filename' and
- `current-language-environment'.
+ * lisp/gnus.el (gnus-version-number): Update to 6.9.4.
1998-10-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
`message-send-news-function' or `message-send-mail-function'
instead of `message-send-and-exit'.
-1998-10-01 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+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-10-02 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/gnus-art.el (gnus-article-prepare): Don't store original
+ buffer to the entity.
+
+ * lisp/mmgnus.el: Use `generic' as mother backend; abolish method
+ `entity-header-start', `entity-header-end' and `fetch-field'.
+ (entity-buffer): New method.
+
+ * lisp/gnus-cache.el (gnus-cache-possibly-enter-article): Use
+ `mime-fetch-field' to refer Subject and From field for saving
+ cache file.
+
+1998-10-01 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/gnus.el (gnus-version-number): Update to 6.9.3.
+
+ * lisp/nnheader.el (make-full-mail-header): Store original subject
+ and from fields.
+
+1998-09-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * 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/nnheader.el (make-full-mail-header): Decode subject and
+ from; changed to inline function.
+
+1998-09-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/gnus-sum.el (gnus-get-newsgroup-headers): Store
+ content-type.
+
+1998-09-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/gnus.el (gnus-version-number): Update to 6.9.2.
+
+ * lisp/mmgnus.el: New module.
+
+ * lisp/gnus-art.el (gnus-article-prepare): Use content of
+ `gnus-current-headers' as mime-message-structure.
+
+1998-09-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/gnus.el (gnus-version-number): Update to 6.9.1.
+ (gnus-version): Modify for Chao 1.11.
- * lisp/pop3-fma.el (pop3-fma-movemail): Bug fix.
- Delete variable pop3-fma-movemail options.
- Add new variabel pop3-fma-commandline-arguments.
+ * lisp/nnheader.el (make-full-mail-header): Changed to macro.
+
+1998-09-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/gnus.el (gnus-version): Modify for Chao 1.10.
+
+ * lisp/gnus-score.el (gnus-header-index): Modify to use
+ mime-entity structure as gnus-header structure.
+
+ * 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.
+ (make-full-mail-header): Use `make-mime-entity-internal'.
+
+1998-09-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/message.el (message-reply): Use `make-full-mail-header'.
+ (message-followup): Likewise.
+
+ * lisp/nnheader.el (mail-header-references): Use
+ `mime-fetch-field' and `mail-header-entity'.
+ (mail-header-set-references): Use `mail-header-set-field'.
+ Define mm-backend `nil' and its method `fetch-field'.
+ (make-full-mail-header): Modify data structure to store References
+ to mime-entity.
+
+1998-09-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/nnheader.el (mail-header-id): Use `mime-fetch-field' and
+ `mail-header-entity'.
+ (mail-header-set-id): Use `mail-header-set-field'.
+ (make-full-mail-header): Modify data structure to store Message-Id
+ to mime-entity.
+
+1998-09-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/nnheader.el (mail-header-entity): New macro.
+ (mail-header-set-entity): New macro.
+ (mail-header-set-field): New macro.
+ (mail-header-set-parsed-field): New macro.
+ (mail-header-subject): Use `mail-header-entity'.
+ (mail-header-set-subject): Use `mail-header-set-parsed-field'.
+ (mail-header-from): Use `mail-header-entity'.
+ (mail-header-set-from): Use `mail-header-set-parsed-field'.
+ (mail-header-date): Use `mime-fetch-field' and
+ `mail-header-entity'.
+ (mail-header-set-date): Use `mail-header-set-field'.
+ (make-full-mail-header): Modify data structure to store Date to
+ mime-entity.
+ (make-mail-header): Use `make-full-mail-header'.
+
+1998-09-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/nnheader.el (mail-header-from): Use `mime-read-field'.
+ (mail-header-set-from): Store to mime-entity.
+ (make-full-mail-header): Modify data structure to store Subject to
+ mime-entity.
+
+1998-09-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/nnheader.el (mail-header-subject): Use `mime-read-field'.
+ (mail-header-set-subject): Store to mime-entity.
+ (make-full-mail-header): Modify data structure to store Subject to
+ mime-entity.
+
+1998-09-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/gnus-sum.el (gnus-update-summary-mark-positions): Use
+ `make-full-mail-header'.
1998-09-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
* lisp/gnus-soup.el (gnus-soup-send-packet): `message-mailer' and
`message-newsreader' were replaced by `message-user-agent'.
-1998-09-17 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+1998-09-29 MORIOKA Tomohiko <morioka@jaist.ac.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.
+ * lisp/gnus-sum.el (gnus-get-newsgroup-headers): Use
+ `make-full-mail-header'.
1998-09-26 Katsumi Yamaoka <yamaoka@jpl.org>
1998-09-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
* lisp/message.el (message-send): Don't call
- `message-fix-before-sending' before `message-encode-function' is
- called.
+ `message-fix-before-sending' before `message-encode-function' is
+ called.
1998-09-06 Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
* lisp/pop3-fma.el: Add error handle and fix typo.
-
+
1998-08-28 Keiichi Suzuki <kei-suzu@mail.wbs.ne.jp>
* lisp/message.el: Repair `multi frame control'.
* lisp/gnus.el (gnus-version-number): Update to 6.8.14.
* Sync up with Gnus 5.6.38.
-
+
1998-08-20 Keiichi Suzuki <kei-suzu@mail.wbs.ne.jp>
* lisp/message.el (message-frames): New custom group.
* lisp/gnus.el (gnus-version-number): Update to 6.8.13.
* Sync up with Gnus 5.6.37.
-
+
1998-08-16 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
* lisp/gnus-sum.el (gnus-summary-scroll-down): Failed to sync.
* lisp/gnus.el (gnus-version-number): Update to 6.8.12.
* Sync up with Gnus 5.6.36.
-
+
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): Fix typo.
* 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 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 Keiichi Suzuki <kei-suzu@mail.wbs.ne.jp>
* lisp/message.el (message-yank-original): For citing any message.
1998-08-06 Katsumi Yamaoka <yamaoka@jpl.org>
- * lisp/smtp.el: Do not insert empty line at the end of message.
-
+ *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
+ (gnus-summary-line-format-spec) to display Japanese character
correctly in Gnus summaly.
1998-08-05 Keiichi Suzuki <kei-suzu@mail.wbs.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.
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
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.
+ 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/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.
(gnus-version): Modify for SEMI 1.4.
* lisp/gnus-sum.el: Use 'mime-add-condition to set up
- acting-condition.
+ acting-condition.
1998-05-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
* 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.
+ 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>
1998-04-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
* README.semi (How to get? (via CVS)): Modify descriptions about
- TAG.
+ TAG.
1998-04-23 MORIOKA Tomohiko <morioka@jaist.ac.jp>
1998-04-23 MORIOKA Tomohiko <morioka@jaist.ac.jp>
* lisp/message.el (message-make-forward-subject): Use
- `eword-decode-unstructured-field-body' for subject.
+ `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'.
+ 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>
(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.
+ '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: Modify styles.
* texi/gnus.texi: Modify for Semi-gnus (sync up with
- gnus-ja.texi).
+ gnus-ja.texi).
1998-04-20 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
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.
+ for 'mime-view-following-method-alist.
1998-04-18 MORIOKA Tomohiko <morioka@jaist.ac.jp>
`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.
1998-03-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
* lisp/gnus-art.el: Add setting for
- `mime-raw-buffer-coding-system-alist'.
+ `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'.
+ `mime-preview-quitting-method-for-gnus'.
* lisp/gnus-art.el: Rename `mime-view-quitting-method-alist' ->
- `mime-preview-quitting-method-alist'.
+ `mime-preview-quitting-method-alist'.
* lisp/gnus-art.el: Rename `mime-view-kill-buffer' ->
- `mime-preview-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'.
+ `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-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-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])
+ `-r semi-gnus'. (cf. [tm-en:1559])
1998-02-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
* 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-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.
+ References.
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'.
+ `eword-decode-and-unfold-structured-field'.
* lisp/gnus-art.el (gnus-article-decode-rfc1522): Use charset
- conversion option of `eword-decode-header'.
+ conversion option of `eword-decode-header'.
(gnus-article-decode-encoded-word): Use charset conversion option
- of `eword-decode-header'; use `gnus-run-hooks'.
+ of `eword-decode-header'; use `gnus-run-hooks'.
(gnus-content-header-filter): Use charset conversion option of
- `eword-decode-header'.
+ `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.
+ localized code.
1998-02-16 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.
+ 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
+ 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>
1998-01-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
* lisp/message.el (message-send-mail-with-sendmail): Guard
- `coding-system-for-write' by binary.
+ `coding-system-for-write' by binary.
(message-send-mail-with-qmail): Likewise.
1998-01-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
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.
+ `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.
+ `smtp-recipient-address-list' as global variable.
* lisp/smtpmail.el (smtpmail-recipient-address-list): New
- variable; renamed from `smtp-recipient-address-list'.
+ 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'.
+ 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'.
+ `smtp-address-buffer' for `smtp-deduce-address-list'.
* lisp/smtp.el (smtp-deduce-address-list): Bind and generate
- `smtp-address-buffer' in itself.
+ `smtp-address-buffer' in itself.
1998-01-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
* 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' as an item.
(message-send-mail-with-smtp): New function.
* ChangeLog: New file.
info:
cd texi && $(MAKE) EMACS=$(EMACS) all
+info-ja:
+ cd texi && $(MAKE) EMACS=$(EMACS) MAKEINFO=no ja
+
clean:
rm -f */*.orig */*.rej *.orig *.rej
-This package contains Semi-gnus 6.9.
+This package contains Semi-gnus.
What is Semi-gnus?
==================
Gnus to use it, and you must not use gnus-mime for SEMI.
It requires SEMI package, so please get and install SEMI package
-before to install it. Semi-gnus 6.9 requires SEMI 1.11. You can get
-SEMI from
-ftp://ftp.jaist.ac.jp/pub/elisp/semi/
-Required environment for SEMI is written in README.en of SEMI package.
+before to install it.
+
How to get? (via CVS)
=====================
-(0) cvs login (first time only)
+(0) cvs login
% cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
login
ichikawa ichikawa branch
- pgnus-ichikawa ichikawa branch. Based on pGnus
-
akr akr branch
shuhei-k shuhei-k branch
Mail-Followup-To/Mail-Reply-To, gnus-cache fix.
-For more detailed information, please read README.branch.
-
How to get? (via ftp)
=====================
semi-gnus-ja-help@meadow.scphys.kyoto-u.ac.jp (Japanese)
In addition, we need developers. If you would like to develop it,
-please send mail to cvs@chamonix.jaist.ac.jp with your account name
-and UNIX /etc/passwd style crypted password.
+please send mail to cvs@chamonix.jaist.ac.jp.
-;;; gnus-agent.el --- unplugged support for Gnus
+;;; gnus-agent.el --- unplugged support for Semi-gnus
;; Copyright (C) 1997,98 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Prune off articles that we have already fetched.
(while (and articles
(cdr (assq (car articles) gnus-agent-article-alist)))
- (pop articles))
+ (pop articles))
(let ((arts articles))
(while (cdr arts)
(if (cdr (assq (cadr arts) gnus-agent-article-alist))
(cdr (assq 'dormant
(gnus-info-marks info)))))
nov-file (gnus-agent-article-name ".overview" group))
- (gnus-agent-load-alist group)
+ (gnus-agent-load-alist group)
(gnus-message 5 "Expiring articles in %s" group)
(set-buffer overview)
(erase-buffer)
(when (file-exists-p nov-file)
(nnheader-insert-file-contents nov-file))
(goto-char (point-min))
- (setq article 0)
+ (setq article 0)
(while (setq elem (pop articles))
(setq article (car elem))
(when (or (null low)
(setq prev alist
alist (cdr alist))))
(setq gnus-agent-article-alist (cdr first))
- (gnus-agent-save-alist group)
- ;; Mark all articles up to the first article
- ;; in `gnus-article-alist' as read.
+ ;;; Mark all articles up to the first article
+ ;;; in `gnus-article-alist' as read.
(when (and info (caar gnus-agent-article-alist))
(setcar (nthcdr 2 info)
(gnus-range-add
-;;; gnus-cache.el --- cache interface for Gnus
-;; Copyright (C) 1995,96,97,98 Free Software Foundation, Inc.
+;;; gnus-cache.el --- cache interface for Chaos
+;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
;; Keywords: news
;; This file is part of GNU Emacs.
;; [number subject from date id references chars lines xref]
(insert (format "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n"
(mail-header-number headers)
- (mail-header-subject headers)
- (mail-header-from headers)
+ (mime-fetch-field 'Subject headers)
+ (mime-fetch-field 'From headers)
(mail-header-date headers)
(mail-header-id headers)
(or (mail-header-references headers) "")
(when (file-exists-p file)
(erase-buffer)
(gnus-kill-all-overlays)
- (insert-file-contents file)
+ (nnheader-insert-file-contents file)
t)))
(defun gnus-cache-possibly-alter-active (group active)
;; unsuccessful), so we use the cached headers exclusively.
(set-buffer nntp-server-buffer)
(erase-buffer)
- (insert-file-contents cache-file)
+ (nnheader-insert-file-contents cache-file)
'nov)
((eq type 'nov)
;; We have both cached and uncached NOV headers, so we
cached articles))
type)))))))
+(defun gnus-cache-retrieve-parsed-headers (articles group &optional fetch-old
+ dependencies force-new)
+ "Retrieve the parsed-headers for ARTICLES in GROUP."
+ (let ((cached
+ (setq gnus-newsgroup-cached (gnus-cache-articles-in-group group))))
+ (if (not cached)
+ ;; No cached articles here, so we just retrieve them
+ ;; the normal way.
+ (let ((gnus-use-cache nil))
+ (gnus-retrieve-parsed-headers articles group fetch-old
+ dependencies force-new))
+ (let ((uncached-articles (gnus-sorted-intersection
+ (gnus-sorted-complement articles cached)
+ articles))
+ (cache-file (gnus-cache-file-name group ".overview")))
+ (gnus-cache-braid-headers
+ ;; We first retrieve all the headers that we don't have in
+ ;; the cache.
+ (prog1
+ (let ((gnus-use-cache nil))
+ (when uncached-articles
+ (and articles
+ (gnus-retrieve-parsed-headers
+ uncached-articles group fetch-old
+ dependencies))
+ ))
+ (gnus-cache-save-buffers))
+ ;; Then we insert the cached headers.
+ (cond ((not (file-exists-p cache-file))
+ ;; There are no cached headers.
+ )
+ ((eq gnus-headers-retrieved-by 'nov)
+ (with-current-buffer nntp-server-buffer
+ (erase-buffer)
+ (nnheader-insert-file-contents cache-file)
+ (nnheader-get-newsgroup-headers-xover*
+ articles nil dependencies group)
+ ))
+ (t
+ ;; We braid HEADs.
+ (nnheader-retrieve-headers-from-directory*
+ cached
+ (expand-file-name
+ (file-name-as-directory
+ (nnheader-translate-file-chars
+ (if (gnus-use-long-file-name 'not-cache)
+ group
+ (let ((group
+ (nnheader-replace-chars-in-string group ?/ ?_)))
+ ;; Translate the first colon into a slash.
+ (when (string-match ":" group)
+ (aset group (match-beginning 0) ?/))
+ (nnheader-replace-chars-in-string group ?. ?/)))
+ t))
+ gnus-cache-directory)
+ dependencies)
+ )))
+ ))))
+
(defun gnus-cache-enter-article (&optional n)
"Enter the next N articles into the cache.
If not given a prefix, use the process marked articles instead.
(set-buffer cache-buf)
(buffer-disable-undo (current-buffer))
(erase-buffer)
- (insert-file-contents (or file (gnus-cache-file-name group ".overview")))
+ (nnheader-insert-file-contents (or file (gnus-cache-file-name group ".overview")))
(goto-char (point-min))
(insert "\n")
(goto-char (point-min)))
(save-excursion
(set-buffer cache-buf)
(erase-buffer)
- (insert-file-contents (gnus-cache-file-name group (car cached)))
+ (nnheader-insert-file-contents (gnus-cache-file-name group (car cached)))
(goto-char (point-min))
(insert "220 ")
(princ (car cached) (current-buffer))
(setq cached (cdr cached)))
(kill-buffer cache-buf)))
+(defun gnus-cache-braid-headers (headers cached-headers)
+ (if cached-headers
+ (if headers
+ (let (cached-header hrest nhrest)
+ (nconc (catch 'tag
+ (while cached-headers
+ (setq cached-header (car cached-headers))
+ (if (< (mail-header-number cached-header)
+ (mail-header-number (car headers)))
+ (throw 'tag (nreverse cached-headers))
+ (setq hrest headers
+ nhrest (cdr hrest))
+ (while (and nhrest
+ (> (mail-header-number cached-header)
+ (mail-header-number (car nhrest))))
+ (setq hrest nhrest
+ nhrest (cdr nhrest))
+ )
+ ;;(if nhrest
+ (setcdr hrest (cons cached-header nhrest))
+ ;; (setq headers
+ ;; (nconc headers (list cached-header)))
+ ;; (throw 'tag nil)
+ ;;)
+ )
+ (setq cached-headers (cdr cached-headers))))
+ headers))
+ (nreverse cached-headers))
+ headers))
+
;;;###autoload
(defun gnus-jog-cache ()
"Go through all groups and put the articles into the cache.
;; We simply read the active file.
(save-excursion
(gnus-set-work-buffer)
- (insert-file-contents gnus-cache-active-file)
+ (nnheader-insert-file-contents gnus-cache-active-file)
(gnus-active-to-gnus-format
nil (setq gnus-cache-active-hashtb
(gnus-make-hashtable
-;;; gnus-draft.el --- draft message support for Gnus
+;;; gnus-draft.el --- draft message support for Semi-gnus
;; Copyright (C) 1997,98 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
-;; Keywords: news
+;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+;; Keywords: mail, news, MIME, offline
;; This file is part of GNU Emacs.
(interactive)
(let ((article (gnus-summary-article-number)))
(gnus-summary-mark-as-read article gnus-canceled-mark)
- (gnus-draft-setup article gnus-newsgroup-name)
+ (gnus-draft-setup-for-editing article gnus-newsgroup-name)
(set-buffer-modified-p t)
(save-buffer)
(push
(defun gnus-draft-send (article &optional group)
"Send message ARTICLE."
- (gnus-draft-setup article (or group "nndraft:queue"))
+ (gnus-draft-setup-for-sending article (or group "nndraft:queue"))
(let ((message-syntax-checks 'dont-check-for-anything-just-trust-me)
message-send-hook type method)
;; We read the meta-information that says how and where
(message-remove-header gnus-agent-meta-information-header)))
;; Then we send it. If we have no meta-information, we just send
;; it and let Message figure out how.
- (when (and (or (null method)
- (gnus-server-opened method)
- (gnus-open-server method))
- (if type
- (let ((message-this-is-news (eq type 'news))
- (message-this-is-mail (eq type 'mail))
- (gnus-post-method method)
- (message-post-method method))
- (message-send-and-exit))
- (message-send-and-exit)))
+ (when (let ((mail-header-separator ""))
+ (cond ((eq type 'news)
+ (mime-edit-maybe-split-and-send
+ (function
+ (lambda ()
+ (interactive)
+ (funcall message-send-news-function method)
+ )))
+ (funcall message-send-news-function method)
+ )
+ ((eq type 'mail)
+ (mime-edit-maybe-split-and-send
+ (function
+ (lambda ()
+ (interactive)
+ (funcall message-send-mail-function)
+ )))
+ (funcall message-send-mail-function)
+ t)))
(let ((gnus-verbose-backends nil))
(gnus-request-expire-articles
(list article) (or group "nndraft:queue") t)))))
;;; Utility functions
+(defcustom gnus-draft-decoding-function
+ #'mime-edit-decode-message-in-buffer
+ "*Function called to decode the message from network representation."
+ :group 'gnus-agent
+ :type 'function)
+
;;;!!!If this is byte-compiled, it fails miserably.
;;;!!!This is because `gnus-setup-message' uses uninterned symbols.
;;;!!!This has been fixed in recent versions of Emacs and XEmacs,
;;;!!!but for the time being, we'll just run this tiny function uncompiled.
(progn
-(defun gnus-draft-setup (narticle group)
+(defun gnus-draft-setup-for-editing (narticle group)
(gnus-setup-message 'forward
(let ((article narticle))
(message-mail)
(if (not (gnus-request-restore-buffer article group))
(error "Couldn't restore the article")
;; Insert the separator.
+ (funcall gnus-draft-decoding-function)
(goto-char (point-min))
(search-forward "\n\n")
(forward-char -1)
(insert mail-header-separator)
(forward-line 1)
(message-set-auto-save-file-name))))))
+;;
+(defvar gnus-draft-send-draft-buffer " *send draft*")
+(progn
+(defun gnus-draft-setup-for-sending (narticle group)
+ (let ((article narticle))
+ (if (not (get-buffer gnus-draft-send-draft-buffer))
+ (get-buffer-create gnus-draft-send-draft-buffer))
+ (set-buffer gnus-draft-send-draft-buffer)
+ (erase-buffer)
+ (if (not (gnus-request-restore-buffer article group))
+ (error "Couldn't restore the article")
+ ))))
+;; For draft TEST
(defun gnus-draft-article-sendable-p (article)
"Say whether ARTICLE is sendable."
-;;; gnus-ems.el --- functions for making Gnus work under different Emacsen
+;;; gnus-ems.el --- functions for making Semi-gnus work under different Emacsen
;; Copyright (C) 1995,96,97,98 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; Tatsuya Ichikawa <t-ichi@niagara.shiojiri.ne.jp>
;; Keywords: news
;; This file is part of GNU Emacs.
from to)
(goto-line number)
(unless (eobp) ; Sometimes things become confused (broken).
- (if (boundp 'MULE)
- (forward-char (chars-in-string prefix))
- (forward-char (length prefix)))
+ (forward-char (chars-in-string prefix))
(skip-chars-forward " \t")
(setq from (point))
(end-of-line 1)
gnus-cite-overlay-list)
(gnus-overlay-put (gnus-make-overlay from to) 'face face))))))
-(defun gnus-mule-max-width-function (el max-width)
- (` (let* ((val (eval (, el)))
- (valstr (if (numberp val)
- (int-to-string val) val)))
- (if (> (length valstr) (, max-width))
- (truncate-string valstr (, max-width))
- valstr))))
+(defvar gnus-mule-bitmap-image-file nil)
+(defun gnus-mule-group-startup-message (&optional x y)
+ "Insert startup message in current buffer."
+ ;; Insert the message.
+ (erase-buffer)
+ (insert
+ (if (featurep 'bitmap)
+ (format " %s
+
+"
+ "" (if (and (stringp gnus-mule-bitmap-image-file)
+ (file-exists-p gnus-mule-bitmap-image-file))
+ (insert-file gnus-mule-bitmap-image-file)))
+ (format " %s
+ _ ___ _ _
+ _ ___ __ ___ __ _ ___
+ __ _ ___ __ ___
+ _ ___ _
+ _ _ __ _
+ ___ __ _
+ __ _
+ _ _ _
+ _ _ _
+ _ _ _
+ __ ___
+ _ _ _ _
+ _ _
+ _ _
+ _ _
+ _
+ __
+
+"
+ "")))
+ ;; And then hack it.
+ (gnus-indent-rigidly (point-min) (point-max)
+ (/ (max (- (window-width) (or x 46)) 0) 2))
+ (goto-char (point-min))
+ (forward-line 1)
+ (let* ((pheight (count-lines (point-min) (point-max)))
+ (wheight (window-height))
+ (rest (- wheight pheight)))
+ (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n)))
+ ;; Fontify some.
+ (put-text-property (point-min) (point-max) 'face 'gnus-splash-face)
+ (goto-char (point-min))
+ (setq mode-line-buffer-identification (concat " " gnus-version))
+ (setq gnus-simple-splash t)
+ (set-buffer-modified-p t))
(defun gnus-encode-coding-string (string system)
string)
;; `emacs-version'. In this case, implementation for XEmacs/mule
;; may be able to share between XEmacs and XEmacs/mule.
- (defalias 'gnus-truncate-string 'truncate-string)
-
(defvar gnus-summary-display-table nil
"Display table used in summary mode buffers.")
- (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face)
- (fset 'gnus-max-width-function 'gnus-mule-max-width-function)
(fset 'gnus-summary-set-display-table (lambda ()))
(fset 'gnus-encode-coding-string 'encode-coding-string)
(fset 'gnus-decode-coding-string 'decode-coding-string)
-
+
+ (if (fboundp 'truncate-string-to-width)
+ (fset 'gnus-truncate-string 'truncate-string-to-width)
+ (fset 'gnus-truncate-string 'truncate-string))
+
+ (defun gnus-tilde-max-form (el max-width)
+ "Return a form that limits EL to MAX-WIDTH."
+ (let ((max (abs max-width)))
+ (if (symbolp el)
+ `(if (> (string-width ,el) ,max)
+ ,(if (< max-width 0)
+ `(gnus-truncate-string
+ ,el (string-width ,el)
+ (- (string-width ,el) ,max))
+ `(gnus-truncate-string ,el ,max))
+ ,el)
+ `(let ((val (eval ,el)))
+ (if (> (string-width val) ,max)
+ ,(if (< max-width 0)
+ `(gnus-truncate-string
+ val (string-width val)
+ (- (string-width val) ,max))
+ `(gnus-truncate-string val ,max))
+ val)))))
+
+ (defun gnus-tilde-cut-form (el cut-width)
+ "Return a form that cuts CUT-WIDTH off of EL."
+ (let ((cut (abs cut-width)))
+ (if (symbolp el)
+ `(if (> (string-width ,el) ,cut)
+ ,(if (< cut-width 0)
+ `(gnus-truncate-string
+ ,el (- (string-width ,el) ,cut))
+ `(gnus-truncate-string
+ ,el (- (string-width ,el) ,cut) ,cut))
+ ,el)
+ `(let ((val (eval ,el)))
+ (if (> (string-width val) ,cut)
+ ,(if (< cut-width 0)
+ `(gnus-truncate-string
+ val (- (string-width val) ,cut))
+ `(gnus-truncate-string
+ val (- (string-width val) ,cut) ,cut))
+ val)))))
+
+ (when window-system
+ (require 'path-util)
+ (if (module-installed-p 'bitmap)
+ (fset 'gnus-group-startup-message 'gnus-mule-group-startup-message)
+ ))
+
(when (boundp 'gnus-check-before-posting)
(setq gnus-check-before-posting
(delq 'long-lines
(delq 'control-chars gnus-check-before-posting))))
- (defun gnus-summary-line-format-spec ()
- (insert gnus-tmp-unread gnus-tmp-replied
- gnus-tmp-score-char gnus-tmp-indentation)
- (put-text-property
- (point)
- (progn
- (insert
- gnus-tmp-opening-bracket
- (format "%4d: %-20s"
- gnus-tmp-lines
- (if (> (length gnus-tmp-name) 20)
- (truncate-string gnus-tmp-name 20)
- gnus-tmp-name))
- gnus-tmp-closing-bracket)
- (point))
- gnus-mouse-face-prop gnus-mouse-face)
- (insert " " gnus-tmp-subject-or-nil "\n"))
+ (when (fboundp 'chars-in-string)
+ (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face))
+
)))
(defun gnus-region-active-p ()
-;;; gnus-int.el --- backend interface functions for Gnus
-;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
+;;; gnus-int.el --- backend interface functions for Chaos
+;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
;; Keywords: news
;; This file is part of GNU Emacs.
articles (gnus-group-real-name group)
(nth 1 gnus-command-method) fetch-old))))
+(defun gnus-retrieve-parsed-headers (articles group &optional fetch-old
+ dependencies force-new)
+ "Request parsed-headers for ARTICLES in GROUP.
+If FETCH-OLD, retrieve all headers (or some subset thereof) in the group."
+ (unless dependencies
+ (setq dependencies
+ (save-excursion
+ (set-buffer gnus-summary-buffer)
+ gnus-newsgroup-dependencies)))
+ (let ((gnus-command-method (gnus-find-method-for-group group))
+ headers)
+ (if (and gnus-use-cache (numberp (car articles)))
+ (setq headers
+ (gnus-cache-retrieve-parsed-headers articles group fetch-old
+ dependencies force-new))
+ (let ((func (gnus-get-function gnus-command-method
+ 'retrieve-parsed-headers 'no-error)))
+ (if func
+ (setq headers (funcall func articles dependencies
+ (gnus-group-real-name group)
+ (nth 1 gnus-command-method) fetch-old
+ force-new)
+ gnus-headers-retrieved-by (car headers)
+ headers (cdr headers))
+ (setq gnus-headers-retrieved-by
+ (funcall
+ (gnus-get-function gnus-command-method 'retrieve-headers)
+ articles (gnus-group-real-name group)
+ (nth 1 gnus-command-method) fetch-old))
+ )))
+ (or headers
+ (if (eq gnus-headers-retrieved-by 'nov)
+ (gnus-get-newsgroup-headers-xover
+ articles nil dependencies gnus-newsgroup-name t)
+ (gnus-get-newsgroup-headers dependencies)))
+ ))
+
(defun gnus-retrieve-articles (articles group)
"Request ARTICLES in GROUP."
(let ((gnus-command-method (gnus-find-method-for-group group)))
-;;; gnus-msg.el --- mail and post interface for Gnus
+;;; gnus-msg.el --- mail and post interface for Semi-gnus
;; Copyright (C) 1995,96,97,98 Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
;; Lars Magne Ingebrigtsen <larsi@gnus.org>
-;; Keywords: news
+;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
+;; Keywords: mail, news, MIME
;; This file is part of GNU Emacs.
The first %s will be replaced by the Newsgroups header;
the second with the current group name.")
-(defvar gnus-message-setup-hook nil
+(defvar gnus-message-setup-hook '(gnus-maybe-setup-default-charset)
"Hook run after setting up a message buffer.")
(defvar gnus-bug-create-help-buffer t
(defvar gnus-message-group-art nil)
(defconst gnus-bug-message
- "Sending a bug report to the Gnus Towers.
+ (format "Sending a bug report to the Gnus Towers.
+========================================
+
+This gnus is the %s%s.
+If you think the bug is a Semi-gnus bug, send a bug report to Semi-gnus
+Developers. (the addresses below are mailing list addresses)
+
========================================
The buffer below is a mail buffer. When you press `C-c C-c', it will
Please describe the bug in annoying, painstaking detail.
Thank you for your help in stamping out bugs.
-")
+"
+ gnus-product-name
+ (if (string= gnus-product-name "Semi-gnus")
+ ""
+ ", a modified version of Semi-gnus")))
(eval-and-compile
(autoload 'gnus-uu-post-news "gnus-uu" nil t)
"\M-c" gnus-summary-mail-crosspost-complaint
"om" gnus-summary-mail-forward
"op" gnus-summary-post-forward
- "Om" gnus-uu-digest-mail-forward
- "Op" gnus-uu-digest-post-forward)
+ "Om" gnus-summary-mail-digest
+ "Op" gnus-summary-post-digest)
(gnus-define-keys (gnus-send-bounce-map "D" gnus-summary-send-map)
"b" gnus-summary-resend-bounced-mail
(setq message-post-method
`(lambda (arg)
(gnus-post-method arg ,gnus-newsgroup-name)))
- (setq message-newsreader (setq message-mailer (gnus-extended-version)))
+ (setq message-user-agent (gnus-extended-version))
(message-add-action
`(set-window-configuration ,winconf) 'exit 'postpone 'kill)
(message-add-action
article)
(while (setq article (pop articles))
(when (gnus-summary-select-article t nil nil article)
- (when (gnus-eval-in-buffer-window gnus-original-article-buffer
- (message-cancel-news))
+ (when (gnus-eval-in-buffer-window gnus-article-buffer
+ (save-excursion
+ (set-buffer gnus-original-article-buffer)
+ (message-cancel-news)))
(gnus-summary-mark-as-read article gnus-canceled-mark)
(gnus-cache-remove-article 1))
(gnus-article-hide-headers-if-wanted))
\f
;; Dummy to avoid byte-compile warning.
-(defvar nnspool-rejected-article-hook)
-(defvar xemacs-codename)
+;;(defvar nnspool-rejected-article-hook)
+;;(defvar xemacs-codename)
-;;; Since the X-Newsreader/X-Mailer are ``vanity'' headers, they might
-;;; as well include the Emacs version as well.
-;;; The following function works with later GNU Emacs, and XEmacs.
+;;; Since the User-Agent is ``vanity'' headers.
(defun gnus-extended-version ()
- "Stringified Gnus version and Emacs version."
+ "Stringified gnus version."
(interactive)
- (concat
- gnus-version
- "/"
- (cond
- ((string-match "^\\([0-9]+\\.[0-9]+\\)\\.[.0-9]+$" emacs-version)
- (concat "Emacs " (substring emacs-version
- (match-beginning 1)
- (match-end 1))))
- ((string-match "\\([A-Z]*[Mm][Aa][Cc][Ss]\\)[^(]*\\(\\((beta.*)\\|'\\)\\)?"
- emacs-version)
- (concat (substring emacs-version
- (match-beginning 1)
- (match-end 1))
- (format " %d.%d" emacs-major-version emacs-minor-version)
- (if (match-beginning 3)
- (substring emacs-version
- (match-beginning 3)
- (match-end 3))
- "")
- (if (boundp 'xemacs-codename)
- (concat " - \"" xemacs-codename "\""))))
- (t emacs-version))))
-
-;; Written by "Mr. Per Persson" <pp@gnu.ai.mit.edu>.
-(defun gnus-inews-insert-mime-headers ()
- "Insert MIME headers.
-Assumes ISO-Latin-1 is used iff 8-bit characters are present."
- (goto-char (point-min))
- (let ((mail-header-separator
- (progn
- (goto-char (point-min))
- (if (and (search-forward (concat "\n" mail-header-separator "\n")
- nil t)
- (not (search-backward "\n\n" nil t)))
- mail-header-separator
- ""))))
- (or (mail-position-on-field "Mime-Version")
- (insert "1.0")
- (cond ((save-restriction
- (widen)
- (goto-char (point-min))
- (re-search-forward "[^\000-\177]" nil t))
- (or (mail-position-on-field "Content-Type")
- (insert "text/plain; charset=ISO-8859-1"))
- (or (mail-position-on-field "Content-Transfer-Encoding")
- (insert "8bit")))
- (t (or (mail-position-on-field "Content-Type")
- (insert "text/plain; charset=US-ASCII"))
- (or (mail-position-on-field "Content-Transfer-Encoding")
- (insert "7bit")))))))
-
-(custom-add-option 'message-header-hook 'gnus-inews-insert-mime-headers)
+ (concat gnus-product-name "/" gnus-version-number))
\f
;;;
(interactive "P")
(gnus-setup-message 'forward
(gnus-summary-select-article)
- (set-buffer gnus-original-article-buffer)
+ (let ((charset default-mime-charset))
+ (set-buffer gnus-original-article-buffer)
+ (make-local-variable 'default-mime-charset)
+ (setq default-mime-charset charset)
+ )
(let ((message-included-forward-headers
(if full-headers "" message-included-forward-headers)))
(message-forward post))))
+(defun gnus-summary-post-forward (&optional full-headers)
+ "Forward the current article to a newsgroup.
+If FULL-HEADERS (the prefix), include full headers when forwarding."
+ (interactive "P")
+ (gnus-summary-mail-forward full-headers t))
+
+;;; XXX: generate Subject and ``Topics''?
+(defun gnus-summary-mail-digest (&optional n post)
+ "Digests and forwards all articles in this series."
+ (interactive "P")
+ (let ((subject "Digested Articles")
+ (articles (gnus-summary-work-articles n))
+ article)
+ (gnus-setup-message 'forward
+ (gnus-summary-select-article)
+ (if post (message-news nil subject) (message-mail nil subject))
+ (message-goto-body)
+ (while (setq article (pop articles))
+ (save-window-excursion
+ (set-buffer gnus-summary-buffer)
+ (gnus-summary-select-article nil nil nil article)
+ (gnus-summary-remove-process-mark article))
+ (insert (mime-make-tag "message" "rfc822") "\n")
+ (insert-buffer-substring gnus-original-article-buffer))
+ (push-mark)
+ (message-goto-body)
+ (mime-edit-enclose-digest-region (point)(mark t)))))
+
+(defun gnus-summary-post-digest (&optional n)
+ "Digest and forwards all articles in this series to a newsgroup."
+ (interactive "P")
+ (gnus-summary-mail-digest n t))
+
(defun gnus-summary-resend-message (address n)
"Resend the current article to ADDRESS."
(interactive "sResend message(s) to: \nP")
(set-buffer gnus-original-article-buffer)
(message-resend address)))))
-(defun gnus-summary-post-forward (&optional full-headers)
- "Forward the current article to a newsgroup.
-If FULL-HEADERS (the prefix), include full headers when forwarding."
- (interactive "P")
- (gnus-summary-mail-forward full-headers t))
-
(defvar gnus-nastygram-message
"The following article was inappropriately posted to %s.\n\n"
"Format string to insert in nastygrams.
(insert gnus-bug-message)
(goto-char (point-min)))
(message-pop-to-buffer "*Gnus Bug*")
- (message-setup `((To . ,gnus-maintainer) (Subject . "")))
+ (message-setup
+ `((To . ,gnus-maintainer) (Cc . ,semi-gnus-developers) (Subject . "")))
(when gnus-bug-create-help-buffer
(push `(gnus-bug-kill-buffer) message-send-actions))
(goto-char (point-min))
(save-restriction
(message-narrow-to-headers)
(let ((gcc (or gcc (mail-fetch-field "gcc" nil t)))
- (cur (current-buffer))
+ (coding-system-for-write 'raw-text)
groups group method)
(when gcc
(message-remove-header "gcc")
(gnus-request-create-group group method))
(save-excursion
(nnheader-set-temp-buffer " *acc*")
- (insert-buffer-substring cur)
+ (insert-buffer-substring message-encoding-buffer)
+ (gnus-run-hooks 'gnus-before-do-gcc-hook)
(goto-char (point-min))
(when (re-search-forward
(concat "^" (regexp-quote mail-header-separator) "$")
(insert (car val) ": " (cdr val) "\n"))
(gnus-pull (car val) gnus-message-style-insertions)))))
+
+;;; @ for MIME Edit mode
+;;;
+
+(defun gnus-maybe-setup-default-charset ()
+ (let ((charset
+ (and (boundp 'gnus-summary-buffer)
+ (buffer-live-p gnus-summary-buffer)
+ (save-excursion
+ (set-buffer gnus-summary-buffer)
+ default-mime-charset))))
+ (if charset
+ (progn
+ (make-local-variable 'default-mime-charset)
+ (setq default-mime-charset charset)
+ ))))
+
+
;;; Allow redefinition of functions.
(gnus-ems-redefine)
(defconst gnus-header-index
;; Name to index alist.
- '(("number" 0 gnus-score-integer)
- ("subject" 1 gnus-score-string)
- ("from" 2 gnus-score-string)
- ("date" 3 gnus-score-date)
- ("message-id" 4 gnus-score-string)
- ("references" 5 gnus-score-string)
- ("chars" 6 gnus-score-integer)
- ("lines" 7 gnus-score-integer)
- ("xref" 8 gnus-score-string)
+ '(("number" 1 gnus-score-integer)
+ ("subject" 8 gnus-score-string)
+ ("from" 9 gnus-score-string)
+ ("date" 10 gnus-score-date)
+ ("message-id" 11 gnus-score-string)
+ ("references" 12 gnus-score-string)
+ ("chars" 13 gnus-score-integer)
+ ("lines" 14 gnus-score-integer)
+ ("xref" 15 gnus-score-string)
("head" -1 gnus-score-body)
("body" -1 gnus-score-body)
("all" -1 gnus-score-body)
- ("followup" 2 gnus-score-followup)
- ("thread" 5 gnus-score-thread)))
+ ("followup" 9 gnus-score-followup)
+ ("thread" 12 gnus-score-thread)))
;;; Summary mode score maps.
(search-forward "\n\n")
(forward-char -1)
(insert mail-header-separator)
- (setq message-newsreader (setq message-mailer
- (gnus-extended-version)))
+ (setq message-user-agent (gnus-extended-version))
(cond
((string= (gnus-soup-reply-kind (car replies)) "news")
(gnus-message 5 "Sending news message to %s..."
;; This function parses the FORMAT string with the help of the
;; SPEC-ALIST and returns a list that can be eval'ed to return a
;; string.
- (let ((max-width 0)
+ (let (max-width
spec flist fstring elem result dontinsert user-defined
type value pad-width spec-beg cut-width ignore-value
- tilde-form tilde elem-type)
+ tilde-form tilde elem-type
+ (xemacs-mule-p (and gnus-xemacs (featurep 'mule))))
(save-excursion
(gnus-set-work-buffer)
(insert format)
(goto-char (point-min))
- (while (re-search-forward "%" nil t)
+ (while (search-forward "%" nil t)
(setq user-defined nil
spec-beg nil
pad-width nil
(setq elem '("*" ?s))))
(setq elem-type (cadr elem))
;; Insert the new format elements.
- (when pad-width
- (insert (number-to-string pad-width)))
+ (and pad-width (not xemacs-mule-p)
+ (insert (number-to-string pad-width)))
;; Create the form to be evaled.
- (if (or max-width cut-width ignore-value)
+ (if (or max-width cut-width ignore-value
+ (and pad-width xemacs-mule-p))
(progn
(insert ?s)
(let ((el (car elem)))
(setq el (gnus-tilde-cut-form el cut-width)))
(when max-width
(setq el (gnus-tilde-max-form el max-width)))
+ (and pad-width xemacs-mule-p
+ (setq el (gnus-tilde-pad-form el pad-width)))
(push el flist)))
(insert elem-type)
(push (car elem) flist))))
:group 'gnus-newsrc
:type 'boolean)
-(defvar gnus-startup-file-coding-system 'binary
- "*Coding system for startup file.")
-
;;; Internal variables
(defvar gnus-newsrc-file-version nil)
(file-exists-p (concat file ".el"))
(file-exists-p (concat file ".elc")))
(condition-case var
- (let ((coding-system-for-read
- gnus-startup-file-coding-system))
- (load file nil t))
+ (load file nil t)
(error
(error "Error in %s: %s" file var)))))))))
(gnus-message 5 "Reading %s..." ding-file)
(let (gnus-newsrc-assoc)
(condition-case nil
- (let ((coding-system-for-read gnus-startup-file-coding-system))
- (load ding-file t t t))
+ (load ding-file t t t)
(error
(ding)
(unless (gnus-yes-or-no-p
(gnus-message 5 "Saving %s.eld..." gnus-current-startup-file)
(gnus-gnus-to-quick-newsrc-format)
(gnus-run-hooks 'gnus-save-quick-newsrc-hook)
- (let ((coding-system-for-write gnus-startup-file-coding-system))
- (save-buffer))
+ (save-buffer)
(kill-buffer (current-buffer))
(gnus-message
5 "Saving %s.eld...done" gnus-current-startup-file))
-;;; gnus-sum.el --- summary mode commands for Gnus
+;;; gnus-sum.el --- summary mode commands for Semi-gnus
;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
-;; Keywords: news
+;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; Keywords: mail, news, MIME
;; This file is part of GNU Emacs.
(require 'gnus-range)
(require 'gnus-int)
(require 'gnus-undo)
-(require 'gnus-util)
+(require 'mime-view)
+
(autoload 'gnus-summary-limit-include-cached "gnus-cache" nil t)
+(autoload 'gnus-set-summary-default-charset "gnus-i18n" nil t)
(defcustom gnus-kill-summary-on-exit t
"*If non-nil, kill the summary buffer when you exit from it.
:group 'gnus-article-various
:type 'boolean)
-(defcustom gnus-show-mime nil
+(defcustom gnus-show-mime t
"*If non-nil, do mime processing of articles.
The articles will simply be fed to the function given by
`gnus-show-mime-method'."
:group 'gnus-summary-visual
:type 'hook)
-(defcustom gnus-structured-field-decoder 'identity
- "Function to decode non-ASCII characters in structured field for summary."
- :group 'gnus-various
- :type 'function)
-
-(defcustom gnus-unstructured-field-decoder 'identity
- "Function to decode non-ASCII characters in unstructured field for summary."
- :group 'gnus-various
- :type 'function)
-
(defcustom gnus-parse-headers-hook
- (list 'gnus-hack-decode-rfc1522 'gnus-decode-rfc1522)
+ '(gnus-set-summary-default-charset)
"*A hook called before parsing the headers."
:group 'gnus-various
:type 'hook)
(?S ,(macroexpand '(mail-header-subject gnus-tmp-header)) ?s)
(?s gnus-tmp-subject-or-nil ?s)
(?n gnus-tmp-name ?s)
- (?A (car (cdr (funcall gnus-extract-address-components gnus-tmp-from)))
- ?s)
- (?a (or (car (funcall gnus-extract-address-components gnus-tmp-from))
+ (?A (std11-address-string
+ (car (mime-read-field 'From gnus-tmp-header))) ?s)
+ (?a (or (std11-full-name-string
+ (car (mime-read-field 'From gnus-tmp-header)))
gnus-tmp-from) ?s)
(?F gnus-tmp-from ?s)
(?x ,(macroexpand '(mail-header-xref gnus-tmp-header)) ?s)
"t" gnus-article-hide-headers
"g" gnus-summary-show-article
"l" gnus-summary-goto-last-article
+ "v" gnus-summary-preview-mime-message
"\C-c\C-v\C-v" gnus-uu-decode-uu-view
"\C-d" gnus-summary-enter-digest-group
"\M-\C-d" gnus-summary-read-document
"e" gnus-article-emphasize
"w" gnus-article-fill-cited-article
"c" gnus-article-remove-cr
- "q" gnus-article-de-quoted-unreadable
"f" gnus-article-display-x-face
"l" gnus-summary-stop-page-breaking
"r" gnus-summary-caesar-message
["Word wrap" gnus-article-fill-cited-article t]
["CR" gnus-article-remove-cr t]
["Show X-Face" gnus-article-display-x-face t]
- ["Quoted-Printable" gnus-article-de-quoted-unreadable t]
["UnHTMLize" gnus-article-treat-html t]
["Rot 13" gnus-summary-caesar-message t]
["Unix pipe" gnus-summary-pipe-message t]
["Wide reply and yank" gnus-summary-wide-reply-with-original t]
["Mail forward" gnus-summary-mail-forward t]
["Post forward" gnus-summary-post-forward t]
- ["Digest and mail" gnus-uu-digest-mail-forward t]
- ["Digest and post" gnus-uu-digest-post-forward t]
+ ["Digest and mail" gnus-summary-mail-digest t]
+ ["Digest and post" gnus-summary-post-digest t]
["Resend message" gnus-summary-resend-message t]
["Send bounced mail" gnus-summary-resend-bounced-mail t]
["Send a mail" gnus-summary-mail-other-window t]
(let ((gnus-summary-line-format-spec spec)
(gnus-newsgroup-downloadable '((0 . t))))
(gnus-summary-insert-line
- [0 "" "" "" "" "" 0 0 ""] 0 nil 128 t nil "" nil 1)
+ (make-full-mail-header 0 "" "" "" "" "" 0 0 "")
+ 0 nil 128 t nil "" nil 1)
(goto-char (point-min))
(setq pos (list (cons 'unread (and (search-forward "\200" nil t)
(- (point) 2)))))
;; The following macros and functions were written by Felix Lee
;; <flee@cse.psu.edu>.
-(defmacro gnus-nov-read-integer ()
- '(prog1
- (if (= (following-char) ?\t)
- 0
- (let ((num (ignore-errors (read buffer))))
- (if (numberp num) num 0)))
- (unless (eobp)
- (search-forward "\t" eol 'move))))
+;; (defmacro gnus-nov-read-integer ()
+;; '(prog1
+;; (if (= (following-char) ?\t)
+;; 0
+;; (let ((num (ignore-errors (read buffer))))
+;; (if (numberp num) num 0)))
+;; (unless (eobp)
+;; (search-forward "\t" eol 'move))))
-(defmacro gnus-nov-skip-field ()
- '(search-forward "\t" eol 'move))
+;; (defmacro gnus-nov-skip-field ()
+;; '(search-forward "\t" eol 'move))
-(defmacro gnus-nov-field ()
- '(buffer-substring (point) (if (gnus-nov-skip-field) (1- (point)) eol)))
+;; (defmacro gnus-nov-field ()
+;; '(buffer-substring (point) (if (gnus-nov-skip-field) (1- (point)) eol)))
;; This function has to be called with point after the article number
;; on the beginning of the line.
header)
;; overview: [num subject from date id refs chars lines misc]
- (unwind-protect
- (progn
- (narrow-to-region (point) eol)
- (unless (eobp)
- (forward-char))
-
- (setq header
- (make-full-mail-header
- number ; number
- (funcall
- gnus-unstructured-field-decoder (gnus-nov-field)) ; subject
- (funcall
- gnus-structured-field-decoder (gnus-nov-field)) ; from
- (gnus-nov-field) ; date
- (or (gnus-nov-field)
- (nnheader-generate-fake-message-id)) ; id
- (gnus-nov-field) ; refs
- (gnus-nov-read-integer) ; chars
- (gnus-nov-read-integer) ; lines
- (unless (= (following-char) ?\n)
- (gnus-nov-field))))) ; misc
-
- (widen))
+ ;;(unwind-protect
+ ;;(progn
+ ;;(narrow-to-region (point) eol)
+ (unless (eobp)
+ (forward-char))
+
+ (setq header
+ (make-full-mail-header
+ number ; number
+ (nnheader-nov-field) ; subject
+ (nnheader-nov-field) ; from
+ (nnheader-nov-field) ; date
+ (or (nnheader-nov-field) ; id
+ (nnheader-generate-fake-message-id))
+ (nnheader-nov-field) ; refs
+ (nnheader-nov-read-integer) ; chars
+ (nnheader-nov-read-integer) ; lines
+ (unless (= (following-char) ?\n)
+ (nnheader-nov-field)))) ; misc
+ ;;)
+ ;;(widen))
(when gnus-alter-header-function
(funcall gnus-alter-header-function header))
(defsubst gnus-article-sort-by-author (h1 h2)
"Sort articles by root author."
(string-lessp
- (let ((extract (funcall
- gnus-extract-address-components
- (mail-header-from h1))))
- (or (car extract) (cadr extract) ""))
- (let ((extract (funcall
- gnus-extract-address-components
- (mail-header-from h2))))
- (or (car extract) (cadr extract) ""))))
+ (let ((addr (car (mime-read-field 'From h1))))
+ (or (std11-full-name-string addr)
+ (std11-address-string addr)
+ ""))
+ (let ((addr (car (mime-read-field 'From h2))))
+ (or (std11-full-name-string addr)
+ (std11-address-string addr)
+ ""))
+ ))
(defun gnus-thread-sort-by-author (h1 h2)
"Sort threads by root author."
;; Retrieve the headers and read them in.
(gnus-message 5 "Fetching headers for %s..." gnus-newsgroup-name)
(setq gnus-newsgroup-headers
- (if (eq 'nov
- (setq gnus-headers-retrieved-by
- (gnus-retrieve-headers
- articles gnus-newsgroup-name
- ;; We might want to fetch old headers, but
- ;; not if there is only 1 article.
- (and (or (and
- (not (eq gnus-fetch-old-headers 'some))
- (not (numberp gnus-fetch-old-headers)))
- (> (length articles) 1))
- gnus-fetch-old-headers))))
- (gnus-get-newsgroup-headers-xover
- articles nil nil gnus-newsgroup-name t)
- (gnus-get-newsgroup-headers)))
+ (gnus-retrieve-parsed-headers
+ articles gnus-newsgroup-name
+ ;; We might want to fetch old headers, but
+ ;; not if there is only 1 article.
+ (and (or (and (not (eq gnus-fetch-old-headers 'some))
+ (not (numberp gnus-fetch-old-headers)))
+ (> (length articles) 1))
+ gnus-fetch-old-headers)))
(gnus-message 5 "Fetching headers for %s...done" gnus-newsgroup-name)
;; Kludge to avoid having cached articles nixed out in virtual groups.
(subst-char-in-region (point-min) (point-max) ?\t ? t)
(gnus-run-hooks 'gnus-parse-headers-hook)
(let ((case-fold-search t)
- in-reply-to header p lines chars)
+ in-reply-to header p lines chars ctype)
(goto-char (point-min))
;; Search to the beginning of the next header. Error messages
;; do not begin with 2 or 3.
;; doesn't always go hand in hand.
(setq
header
- (vector
+ (make-full-mail-header
;; Number.
(prog1
(read cur)
(progn
(goto-char p)
(if (search-forward "\nsubject: " nil t)
- (funcall
- gnus-unstructured-field-decoder (nnheader-header-value))
+ (buffer-substring (match-end 0) (std11-field-end))
"(none)"))
;; From.
(progn
(goto-char p)
(if (search-forward "\nfrom: " nil t)
- (funcall
- gnus-structured-field-decoder (nnheader-header-value))
+ (buffer-substring (match-end 0) (std11-field-end))
"(nobody)"))
;; Date.
(progn
(goto-char p)
(if (search-forward "\ndate: " nil t)
- (nnheader-header-value) ""))
+ (buffer-substring (match-end 0) (std11-field-end))
+ ""))
;; Message-ID.
(progn
(goto-char p)
(progn
(setq end (point))
(prog1
- (nnheader-header-value)
+ (buffer-substring (match-end 0) (std11-field-end))
(setq ref
(buffer-substring
(progn
- (end-of-line)
+ ;; (end-of-line)
(search-backward ">" end t)
(1+ (point)))
(progn
;; were no references and the in-reply-to header looks
;; promising.
(if (and (search-forward "\nin-reply-to: " nil t)
- (setq in-reply-to (nnheader-header-value))
+ (setq in-reply-to
+ (buffer-substring (match-end 0)
+ (std11-field-end)))
(string-match "<[^>]+>" in-reply-to))
(let (ref2)
(setq ref (substring in-reply-to (match-beginning 0)
(progn
(goto-char p)
(and (search-forward "\nxref: " nil t)
- (nnheader-header-value)))))
+ (buffer-substring (match-end 0) (std11-field-end))))))
+ (goto-char p)
+ (if (and (search-forward "\ncontent-type: " nil t)
+ (setq ctype
+ (buffer-substring (match-end 0) (std11-field-end))))
+ (mime-entity-set-content-type-internal
+ header (mime-parse-Content-Type ctype)))
(when (equal id ref)
(setq ref nil))
(let ((gnus-nov-is-evil t))
(nconc
(nreverse headers)
- (when (gnus-retrieve-headers sequence group)
- (gnus-get-newsgroup-headers))))))))
+ (gnus-retrieve-parsed-headers sequence group)
+ ))))))
(defun gnus-article-get-xrefs ()
"Fill in the Xref value in `gnus-current-headers', if necessary.
(let ((max (max (point) (mark)))
articles article)
(save-excursion
- (goto-char (min (min (point) (mark))))
+ (goto-char (min (point) (mark)))
(while
(and
(push (setq article (gnus-summary-article-number)) articles)
(gnus-summary-recenter)
(gnus-summary-position-point))))
+(defun gnus-summary-preview-mime-message (arg)
+ "MIME decode and play this message."
+ (interactive "P")
+ (or gnus-show-mime
+ (let ((gnus-break-pages nil)
+ (gnus-show-mime t))
+ (gnus-summary-select-article t t)
+ ))
+ (select-window (get-buffer-window gnus-article-buffer))
+ )
+
;;; Dead summaries.
(defvar gnus-dead-summary-mode-map nil)
(> (prefix-numeric-value arg) 0)))
(gnus-summary-select-article t 'force))
+(defun gnus-summary-set-default-charset (charset)
+ "Display the current article with MIME CHARSET."
+ (interactive
+ (list (completing-read "MIME-charset = "
+ (mapcar (function
+ (lambda (cs)
+ (list (symbol-name cs))
+ ))
+ (mime-charset-list)))))
+ (let ((default-mime-charset charset))
+ (gnus-summary-select-article t 'force)
+ ))
+
(defun gnus-summary-caesar-message (&optional arg)
"Caesar rotate the current article by 13.
The numerical prefix specifies how many places to rotate each letter
(set-buffer (gnus-get-buffer-create " *import file*"))
(buffer-disable-undo (current-buffer))
(erase-buffer)
- (insert-file-contents file)
+ (nnheader-insert-file-contents file)
(goto-char (point-min))
(unless (nnheader-article-p)
;; This doesn't look like an article, so we fudge some headers.
"Mark the current article quickly as unread with MARK."
(let* ((article (gnus-summary-article-number))
(old-mark (gnus-summary-article-mark article)))
- ;; Allow the backend to change the mark.
- (setq mark (gnus-request-update-mark gnus-newsgroup-name article mark))
+ ;; Let the backend know about the mark change.
+ (setq mark (gnus-request-update-mark gnus-newsgroup-name article mark))
(if (eq mark old-mark)
t
(if (<= article 0)
(let* ((mark (or mark gnus-del-mark))
(article (or article (gnus-summary-article-number)))
(old-mark (gnus-summary-article-mark article)))
- ;; Allow the backend to change the mark.
- (setq mark (gnus-request-update-mark gnus-newsgroup-name article mark))
+ ;; Let the backend know about the mark change.
+ (setq mark (gnus-request-update-mark gnus-newsgroup-name article mark))
(if (eq mark old-mark)
t
(unless article
(gnus-summary-exit))
buffers)))))
+
+;;; @ for mime-partial
+;;;
+
+(defun gnus-request-partial-message ()
+ (save-excursion
+ (let ((number (gnus-summary-article-number))
+ (group gnus-newsgroup-name)
+ (mother gnus-article-buffer))
+ (set-buffer (get-buffer-create " *Partial Article*"))
+ (erase-buffer)
+ (setq mime-preview-buffer mother)
+ (gnus-request-article-this-buffer number group)
+ (mime-parse-buffer)
+ )))
+
+(autoload 'mime-combine-message/partial-pieces-automatically
+ "mime-partial"
+ "Internal method to combine message/partial messages automatically.")
+
+(mime-add-condition
+ 'action '((type . message)(subtype . partial)
+ (major-mode . gnus-original-article-mode)
+ (method . mime-combine-message/partial-pieces-automatically)
+ (summary-buffer-exp . gnus-summary-buffer)
+ (request-partial-message-method . gnus-request-partial-message)
+ ))
+
+
+;;; @ end
+;;;
+
(gnus-ems-redefine)
(provide 'gnus-sum)
-;;; gnus-util.el --- utility functions for Gnus
+;;; gnus-util.el --- utility functions for Semi-gnus
;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
-;; Keywords: news
+;; Keywords: mail, news, MIME
;; This file is part of GNU Emacs.
(set symbol nil))
symbol))
-(defun gnus-truncate-string (str width)
+;; Avoid byte-compile warning.
+;; In Mule, this function will be redefined to `truncate-string',
+;; which takes 3 or 4 args.
+(defun gnus-truncate-string (str width &rest ignore)
(substring str 0 width))
;; Added by Geoffrey T. Dairiki <dairiki@u.washington.edu>. A safe way
(let ((file-buffer (create-file-buffer filename)))
(save-excursion
(set-buffer file-buffer)
- (let ((require-final-newline nil))
+ (let ((require-final-newline nil)
+ (coding-system-for-write 'binary))
(gnus-write-buffer filename)))
(kill-buffer file-buffer))
(error "Output file does not exist")))
;; Decide whether to append to a file or to an Emacs buffer.
(let ((outbuf (get-file-buffer filename)))
(if (not outbuf)
- (let ((buffer-read-only nil))
+ (let ((buffer-read-only nil)
+ (coding-system-for-write 'binary))
(save-excursion
(goto-char (point-max))
(forward-char -2)
'x-color-values
(lambda (color)
(color-instance-rgb-components
- (make-color-instance color))))))
+ (make-color-instance color)))))
+
+ (when (featurep 'mule)
+ (defun gnus-tilde-pad-form (el pad-width)
+ "Return a form that pads EL to PAD-WIDTH."
+ (let ((pad (abs pad-width)))
+ (if (symbolp el)
+ (if (< pad-width 0)
+ `(concat ,el (make-string
+ (max 0 (- ,pad (string-width ,el))) ?\ ))
+ `(concat (make-string
+ (max 0 (- ,pad (string-width ,el))) ?\ )
+ ,el))
+ (if (< pad-width 0)
+ `(let ((val (eval ,el)))
+ (concat val (make-string
+ (max 0 (- ,pad (string-width val))) ?\ )))
+ `(let ((val (eval ,el)))
+ (concat (make-string
+ (max 0 (- ,pad (string-width val))) ?\ )
+ val))))))
+ ))
(defun gnus-xmas-redefine ()
"Redefine lots of Gnus functions for XEmacs."
(add-hook 'gnus-draft-mode-hook 'gnus-xmas-draft-menu-add)
(add-hook 'gnus-summary-mode-hook
'gnus-xmas-switch-horizontal-scrollbar-off)
- (add-hook 'gnus-tree-mode-hook 'gnus-xmas-switch-horizontal-scrollbar-off))
-
+ (add-hook 'gnus-tree-mode-hook 'gnus-xmas-switch-horizontal-scrollbar-off)
+
+ (when (featurep 'mule)
+ (defun gnus-truncate-string (str end-column &optional start-column padding)
+ "Truncate string STR to end at column END-COLUMN.
+The optional 2nd arg START-COLUMN, if non-nil, specifies
+the starting column; that means to return the characters occupying
+columns START-COLUMN ... END-COLUMN of STR.
+
+The optional 3rd arg PADDING, if non-nil, specifies a padding character
+to add at the end of the result if STR doesn't reach column END-COLUMN,
+or if END-COLUMN comes in the middle of a character in STR.
+PADDING is also added at the beginning of the result
+if column START-COLUMN appears in the middle of a character in STR.
+
+If PADDING is nil, no padding is added in these cases, so
+the resulting string may be narrower than END-COLUMN.
+\[Emacs 20.3 emulating function]"
+ (or start-column
+ (setq start-column 0))
+ (let ((len (length str))
+ (idx 0)
+ (column 0)
+ (head-padding "") (tail-padding "")
+ ch last-column last-idx from-idx)
+ (condition-case nil
+ (while (< column start-column)
+ (setq ch (aref str idx)
+ column (+ column (char-width ch))
+ idx (1+ idx)))
+ (args-out-of-range (setq idx len)))
+ (if (< column start-column)
+ (if padding (make-string end-column padding) "")
+ (if (and padding (> column start-column))
+ (setq head-padding
+ (make-string (- column start-column) padding)))
+ (setq from-idx idx)
+ (if (< end-column column)
+ (setq idx from-idx)
+ (condition-case nil
+ (while (< column end-column)
+ (setq last-column column
+ last-idx idx
+ ch (aref str idx)
+ column (+ column (char-width ch))
+ idx (1+ idx)))
+ (args-out-of-range (setq idx len)))
+ (if (> column end-column)
+ (setq column last-column idx last-idx))
+ (if (and padding (< column end-column))
+ (setq tail-padding
+ (make-string (- end-column column) padding))))
+ (setq str (substring str from-idx idx))
+ (if padding
+ (concat head-padding str tail-padding)
+ str))))
+
+ (defun gnus-tilde-max-form (el max-width)
+ "Return a form that limits EL to MAX-WIDTH."
+ (let ((max (abs max-width)))
+ (if (symbolp el)
+ (if (< max-width 0)
+ `(let ((width (string-width ,el)))
+ (gnus-truncate-string ,el width (- width ,max)))
+ `(gnus-truncate-string ,el ,max))
+ (if (< max-width 0)
+ `(let* ((val (eval ,el))
+ (width (string-width val)))
+ (gnus-truncate-string val width (- width ,max)))
+ `(let ((val (eval ,el)))
+ (gnus-truncate-string val ,max))))))
+
+ (defun gnus-tilde-cut-form (el cut-width)
+ "Return a form that cuts CUT-WIDTH off of EL."
+ (let ((cut (abs cut-width)))
+ (if (symbolp el)
+ (if (< cut-width 0)
+ `(gnus-truncate-string ,el (- (string-width ,el) ,cut))
+ `(gnus-truncate-string ,el (string-width ,el) ,cut))
+ (if (< cut-width 0)
+ `(let ((val (eval ,el)))
+ (gnus-truncate-string val (- (string-width val) ,cut)))
+ `(let ((val (eval ,el)))
+ (gnus-truncate-string val (string-width val) ,cut))))))
+ ))
;;; XEmacs logo and toolbar.
;;; gnus.el --- a newsreader for GNU Emacs
-;; Copyright (C) 1987,88,89,90,93,94,95,96,97,98 Free Software Foundation, Inc.
+;; Copyright (C) 1987,88,89,90,93,94,95,96,97,98,99
+;; Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
;; Lars Magne Ingebrigtsen <larsi@gnus.org>
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "5.6.45"
- "Version number for this version of Gnus.")
+(defconst gnus-product-name "Chaos"
+ "Product name of this version of gnus.")
-(defconst gnus-version (format "Gnus v%s" gnus-version-number)
- "Version string for this version of Gnus.")
+(defconst gnus-version-number "1.12.4"
+ "Version number for this version of gnus.")
+
+(defconst gnus-version
+ (format "%s %s (based on Gnus 5.6.45; for SEMI 1.12/1.13, FLIM 1.12)"
+ gnus-product-name gnus-version-number)
+ "Version string for this version of gnus.")
(defcustom gnus-inhibit-startup-message nil
"If non-nil, the startup message will not be displayed.
:group 'gnus-summary-format
:type '(radio (function-item gnus-extract-address-components)
(function-item mail-extract-address-components)
+ (function-item std11-extract-address-components)
(function :tag "Other")))
(defcustom gnus-carpal nil
gnus-article-emphasize
gnus-article-fill-cited-article
gnus-article-remove-cr
- gnus-article-de-quoted-unreadable
gnus-summary-stop-page-breaking
;; gnus-summary-caesar-message
;; gnus-summary-verbose-headers
"bugs@gnus.org (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
+(defconst semi-gnus-developers
+ "Semi-gnus Developers:
+ semi-gnus-en@meadow.scphys.kyoto-u.ac.jp (In English),\
+ semi-gnus-ja@meadow.scphys.kyoto-u.ac.jp (In Japanese);"
+ "The mail address of the Semi-gnus developers.")
+
(defvar gnus-info-nodes
'((gnus-group-mode "(gnus)The Group Buffer")
(gnus-summary-mode "(gnus)The Summary Buffer")
(if (eq (nth 1 package) ':interactive)
(cdddr package)
(cdr package)))))
- '(("metamail" metamail-buffer)
- ("info" Info-goto-node)
+ '(("info" Info-goto-node)
("hexl" hexl-hex-string-to-integer)
("pp" pp pp-to-string pp-eval-expression)
("ps-print" ps-print-preprint)
gnus-article-hide-headers gnus-article-hide-boring-headers
gnus-article-treat-overstrike gnus-article-word-wrap
gnus-article-remove-cr gnus-article-remove-trailing-blank-lines
- gnus-article-display-x-face gnus-article-de-quoted-unreadable
+ gnus-article-display-x-face
gnus-article-mime-decode-quoted-printable gnus-article-hide-pgp
gnus-article-hide-pem gnus-article-hide-signature
gnus-article-strip-leading-blank-lines gnus-article-date-local
(defvar byte-compile-default-warnings)
+(or (featurep 'path-util)
+ (load "apel/path-util"))
+(add-path "apel")
+(add-path "flim")
+(add-path "semi")
+
(defun maybe-fbind (args)
(while args
(or (fboundp (car args))
;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
-;; Keywords: mail, news
+;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
+;; Keiichi Suzuki <kei-suzu@mail.wbs.ne.jp>
+;; Keywords: mail, news, MIME
;; This file is part of GNU Emacs.
;;; Code:
-(eval-when-compile (require 'cl))
+(eval-when-compile
+ (require 'cl)
+ (require 'smtp)
+ )
(require 'mailheader)
(require 'nnheader)
(if (string-match "XEmacs\\|Lucid" emacs-version)
(require 'mail-abbrevs)
(require 'mailabbrev))
+(require 'mime-edit)
(defgroup message '((user-mail-address custom-variable)
(user-full-name custom-variable))
:group 'message
:group 'faces)
+(defgroup message-frames nil
+ "Message frames"
+ :group 'message)
+
(defcustom message-directory "~/Mail/"
"*Directory from which all other mail file variables are derived."
:group 'message-various
(function :tag "Other"))
:group 'message-sending)
+(defcustom message-encode-function 'message-maybe-encode
+ "*A function called to encode messages."
+ :group 'message-sending
+ :type 'function)
+
(defcustom message-courtesy-message
"The following message is a courtesy copy of an article\nthat has been posted to %s as well.\n\n"
"*This is inserted at the start of a mailed copy of a posted message.
(defcustom message-required-news-headers
'(From Newsgroups Subject Date Message-ID
(optional . Organization) Lines
- (optional . X-Newsreader))
+ (optional . User-Agent))
"*Headers to be generated or prompted for when posting an article.
RFC977 and RFC1036 require From, Date, Newsgroups, Subject,
Message-ID. Organization, Lines, In-Reply-To, Expires, and
-X-Newsreader are optional. If don't you want message to insert some
+User-Agent are optional. If don't you want message to insert some
header, remove it from this list."
:group 'message-news
:group 'message-headers
(defcustom message-required-mail-headers
'(From Subject Date (optional . In-Reply-To) Message-ID Lines
- (optional . X-Mailer))
+ (optional . User-Agent))
"*Headers to be generated or prompted for when mailing a message.
RFC822 required that From, Date, To, Subject and Message-ID be
-included. Organization, Lines and X-Mailer are optional."
+included. Organization, Lines and User-Agent are optional."
:group 'message-mail
:group 'message-headers
:type '(repeat sexp))
:group 'message-headers
:type 'regexp)
-(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|^X-Trace:\\|^X-Complaints-To:\\|Return-Path:\\|^Supersedes:\\|^X-Trace:\\|^X-Complaints-To:"
+(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|^X-Trace:\\|^X-Complaints-To:\\|Return-Path:\\|^Supersedes:"
"*Header lines matching this regexp will be deleted before posting.
It's best to delete old Path and Date headers before posting to avoid
any confusion."
:group 'message-headers)
(defcustom message-forward-start-separator
- "------- Start of forwarded message -------\n"
+ (concat (mime-make-tag "message" "rfc822") "\n")
"*Delimiter inserted before forwarded messages."
:group 'message-forwarding
:type 'string)
(defcustom message-forward-end-separator
- "------- End of forwarded message -------\n"
+ (concat (mime-make-tag "text" "plain") "\n")
"*Delimiter inserted after forwarded messages."
:group 'message-forwarding
:type 'string)
:type 'boolean)
(defcustom message-included-forward-headers
- "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-\\|^Message-ID:\\|^References:\\|^Content-Transfer-Encoding:\\|^Content-Type:\\|^Mime-Version:"
+ "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-\\|^Message-ID:\\|^References:\\|^Content-\\|^MIME-Version:"
"*Regexp matching headers to be included in forwarded messages."
:group 'message-forwarding
:type 'regexp)
:group 'message-forwarding
:type 'boolean)
-(defcustom message-ignored-resent-headers "^Return-receipt"
+(defcustom message-ignored-resent-headers "^Return-Receipt"
"*All headers that match this regexp will be deleted when resending a message."
:group 'message-interface
:type 'regexp)
Legal values include `message-send-mail-with-sendmail' (the default),
`message-send-mail-with-mh', `message-send-mail-with-qmail' and
-`smtpmail-send-it'."
+`message-send-mail-with-smtp'."
:type '(radio (function-item message-send-mail-with-sendmail)
(function-item message-send-mail-with-mh)
(function-item message-send-mail-with-qmail)
- (function-item smtpmail-send-it)
+ (function-item message-send-mail-with-smtp)
(function :tag "Other"))
:group 'message-sending
:group 'message-mail)
-(defcustom message-send-news-function 'message-send-news
+;; 1997-09-29 by MORIOKA Tomohiko
+(defcustom message-send-news-function 'message-send-news-with-gnus
"Function to call to send the current buffer as news.
The headers should be delimited by a line whose contents match the
variable `mail-header-separator'."
:group 'message-headers
:type 'boolean)
-(defcustom message-setup-hook nil
+(defcustom message-setup-hook '(turn-on-mime-edit)
"Normal hook, run each time a new outgoing message is initialized.
The function `message-setup' runs this hook."
:group 'message-various
:group 'message-various
:type 'hook)
-(defcustom message-header-hook nil
+(defcustom message-header-hook '(eword-encode-header)
"Hook run in a message mode buffer narrowed to the headers."
:group 'message-various
:type 'hook)
(defvar message-reply-buffer nil)
(defvar message-reply-headers nil)
-(defvar message-newsreader nil)
-(defvar message-mailer nil)
+(defvar message-user-agent nil) ; XXX: This symbol is overloaded! See below.
(defvar message-sent-message-via nil)
(defvar message-checksum nil)
(defvar message-send-actions nil
"A list of actions to be performed before killing a message buffer.")
(defvar message-postpone-actions nil
"A list of actions to be performed after postponing a message.")
+(defvar message-original-frame nil)
(define-widget 'message-header-lines 'text
"All header lines must be LFD terminated."
:group 'message-various
:type 'hook)
+(defcustom message-use-multi-frames nil
+ "Make new frame when sending messages."
+ :group 'message-frames
+ :type 'boolean)
+
+(defcustom message-delete-frame-on-exit nil
+ "Delete frame after sending messages."
+ :group 'message-frames
+ :type '(choice (const :tag "off" nil)
+ (const :tag "always" t)
+ (const :tag "ask" ask)))
+
(defvar message-send-coding-system 'binary
"Coding system to encode outgoing mail.")
(Lines)
(Expires)
(Message-ID)
- (References . message-shorten-references)
- (X-Mailer)
- (X-Newsreader))
+ (References . message-fill-references)
+ (User-Agent))
"Alist used for formatting headers.")
(eval-and-compile
(autoload 'nndraft-request-expire-articles "nndraft")
(autoload 'gnus-open-server "gnus-int")
(autoload 'gnus-request-post "gnus-int")
+ (autoload 'gnus-copy-article-buffer "gnus-msg")
(autoload 'gnus-alive-p "gnus-util")
(autoload 'rmail-output "rmail"))
(setq paragraph-separate paragraph-start)
(make-local-variable 'message-reply-headers)
(setq message-reply-headers nil)
- (make-local-variable 'message-newsreader)
- (make-local-variable 'message-mailer)
+ (make-local-variable 'message-user-agent)
(make-local-variable 'message-post-method)
(make-local-variable 'message-sent-message-via)
(setq message-sent-message-via nil)
(forward-line 1))))
(goto-char start)))
+(defvar gnus-article-copy)
(defun message-yank-original (&optional arg)
"Insert the message being replied to, if any.
Puts point before the text and mark after.
;;; Sending messages
;;;
+;; Avoid byte-compile warning.
+(defvar message-encoding-buffer nil)
+(defvar message-edit-buffer nil)
+(defvar message-mime-mode nil)
+
(defun message-send-and-exit (&optional arg)
"Send message like `message-send', then, if no errors, exit from mail buffer."
(interactive "P")
(let ((buf (current-buffer))
- (actions message-exit-actions))
+ (actions message-exit-actions)
+ (frame (selected-frame))
+ (org-frame message-original-frame))
(when (and (message-send arg)
(buffer-name buf))
(if message-kill-buffer-on-exit
(when (eq buf (current-buffer))
(message-bury buf)))
(message-do-actions actions)
+ (message-delete-frame frame org-frame)
t)))
(defun message-dont-send ()
(interactive)
(when (or (not (buffer-modified-p))
(yes-or-no-p "Message modified; kill anyway? "))
- (let ((actions message-kill-actions))
+ (let ((actions message-kill-actions)
+ (frame (selected-frame))
+ (org-frame message-original-frame))
(setq buffer-file-name nil)
(kill-buffer (current-buffer))
- (message-do-actions actions))))
+ (message-do-actions actions)
+ (message-delete-frame frame org-frame))))
+
+(defun message-delete-frame (frame org-frame)
+ "Delete frame for editing message."
+ (when (and (or (and (featurep 'xemacs)
+ (not (eq 'tty (device-type))))
+ window-system
+ (>= emacs-major-version 20))
+ (or (and (eq message-delete-frame-on-exit t)
+ (select-frame frame)
+ (or (eq frame org-frame)
+ (prog1
+ (y-or-n-p "Delete this frame?")
+ (message ""))))
+ (and (eq message-delete-frame-on-exit 'ask)
+ (select-frame frame)
+ (prog1
+ (y-or-n-p "Delete this frame?")
+ (message "")))))
+ (delete-frame frame)))
(defun message-bury (buffer)
"Bury this mail buffer."
(undo-boundary)
(let ((inhibit-read-only t))
(put-text-property (point-min) (point-max) 'read-only nil))
- (message-fix-before-sending)
(run-hooks 'message-send-hook)
(message "Sending...")
- (let ((alist message-send-method-alist)
+ (let ((message-encoding-buffer
+ (message-generate-new-buffer-clone-locals " message encoding"))
+ (message-edit-buffer (current-buffer))
+ (message-mime-mode mime-edit-mode-flag)
+ (alist message-send-method-alist)
(success t)
elem sent)
- (while (and success
- (setq elem (pop alist)))
- (when (and (or (not (funcall (cadr elem)))
- (and (or (not (memq (car elem)
- message-sent-message-via))
- (y-or-n-p
- (format
- "Already sent message via %s; resend? "
- (car elem))))
- (setq success (funcall (caddr elem) arg)))))
- (setq sent t)))
+ (save-excursion
+ (set-buffer message-encoding-buffer)
+ (erase-buffer)
+ (insert-buffer message-edit-buffer)
+ (funcall message-encode-function)
+ (message-fix-before-sending)
+ (while (and success
+ (setq elem (pop alist)))
+ (when (and (or (not (funcall (cadr elem)))
+ (and (or (not (memq (car elem)
+ message-sent-message-via))
+ (y-or-n-p
+ (format
+ "Already sent message via %s; resend? "
+ (car elem))))
+ (setq success (funcall (caddr elem) arg)))))
+ (setq sent t))))
(when (and success sent)
(message-do-fcc)
;;(when (fboundp 'mail-hist-put-headers-into-history)
(defun message-send-via-news (arg)
"Send the current message via news."
- (funcall message-send-news-function arg))
+ (message-send-news arg))
(defun message-fix-before-sending ()
"Do various things to make the message nice before sending it."
(require 'mail-utils)
(let ((tembuf (message-generate-new-buffer-clone-locals " message temp"))
(case-fold-search nil)
- (news (message-news-p))
- (mailbuf (current-buffer)))
+ (news (message-news-p)))
(save-restriction
(message-narrow-to-headers)
;; Insert some headers.
(save-excursion
(set-buffer tembuf)
(erase-buffer)
- ;; Avoid copying text props.
- (insert (format
- "%s" (save-excursion
- (set-buffer mailbuf)
- (buffer-string))))
+ (insert-buffer message-encoding-buffer)
;; Remove some headers.
(save-restriction
(message-narrow-to-headers)
(or (message-fetch-field "cc")
(message-fetch-field "to")))
(message-insert-courtesy-copy))
+ (mime-edit-maybe-split-and-send
+ (function
+ (lambda ()
+ (interactive)
+ (funcall message-send-mail-function)
+ )))
(funcall message-send-mail-function))
(kill-buffer tembuf))
- (set-buffer mailbuf)
+ (set-buffer message-edit-buffer)
(push 'mail message-sent-message-via)))
(defun message-send-mail-with-sendmail ()
;; Pass it on to mh.
(mh-send-letter)))
+(defun message-send-mail-with-smtp ()
+ "Send off the prepared buffer with SMTP."
+ (require 'smtp) ; XXX
+ (let ((case-fold-search t)
+ recipients)
+ (save-restriction
+ (message-narrow-to-headers)
+ (setq recipients
+ ;; XXX: Should be replaced by better one.
+ (smtp-deduce-address-list (current-buffer)
+ (point-min) (point-max)))
+ ;; Remove BCC lines.
+ (message-remove-header "bcc"))
+ ;; replace the header delimiter with a blank line.
+ (goto-char (point-min))
+ (re-search-forward
+ (concat "^" (regexp-quote mail-header-separator) "\n"))
+ (replace-match "\n")
+ (backward-char 1)
+ (run-hooks 'message-send-mail-hook)
+ (if recipients
+ (let ((result (smtp-via-smtp user-mail-address
+ recipients
+ (current-buffer))))
+ (unless (eq result t)
+ (error "Sending failed; " result)))
+ (error "Sending failed; no recipients"))))
+
(defun message-send-news (&optional arg)
(let ((tembuf (message-generate-new-buffer-clone-locals " *message temp*"))
(case-fold-search nil)
(method (if (message-functionp message-post-method)
(funcall message-post-method arg)
message-post-method))
- (messbuf (current-buffer))
(message-syntax-checks
(if arg
(cons '(existing-newsgroups . disabled)
(set-buffer tembuf)
(buffer-disable-undo (current-buffer))
(erase-buffer)
- ;; Avoid copying text props.
- (insert (format
- "%s" (save-excursion
- (set-buffer messbuf)
- (buffer-string))))
+ (insert-buffer message-encoding-buffer)
;; Remove some headers.
(save-restriction
(message-narrow-to-headers)
;; require one newline at the end.
(or (= (preceding-char) ?\n)
(insert ?\n))
- (let ((case-fold-search t))
- ;; Remove the delimiter.
- (goto-char (point-min))
- (re-search-forward
- (concat "^" (regexp-quote mail-header-separator) "\n"))
- (replace-match "\n")
- (backward-char 1))
- (run-hooks 'message-send-news-hook)
- ;;(require (car method))
- ;;(funcall (intern (format "%s-open-server" (car method)))
- ;;(cadr method) (cddr method))
- ;;(setq result
- ;; (funcall (intern (format "%s-request-post" (car method)))
- ;; (cadr method)))
- (gnus-open-server method)
- (setq result (gnus-request-post method)))
+ (mime-edit-maybe-split-and-send
+ (function
+ (lambda ()
+ (interactive)
+ (save-restriction
+ (std11-narrow-to-header mail-header-separator)
+ (goto-char (point-min))
+ (when (re-search-forward "^Message-Id:" nil t)
+ (delete-region (match-end 0)(std11-field-end))
+ (insert (concat " " (message-make-message-id)))
+ ))
+ (funcall message-send-news-function method)
+ )))
+ (setq result (funcall message-send-news-function method)))
(kill-buffer tembuf))
- (set-buffer messbuf)
+ (set-buffer message-edit-buffer)
(if result
(push 'news message-sent-message-via)
(message "Couldn't send message via news: %s"
(nnheader-get-report (car method)))
nil))))
+;; 1997-09-29 by MORIOKA Tomohiko
+(defun message-send-news-with-gnus (method)
+ (let ((case-fold-search t))
+ ;; Remove the delimiter.
+ (goto-char (point-min))
+ (re-search-forward
+ (concat "^" (regexp-quote mail-header-separator) "\n"))
+ (replace-match "\n")
+ (backward-char 1)
+ (run-hooks 'message-send-news-hook)
+ ;;(require (car method))
+ ;;(funcall (intern (format "%s-open-server" (car method)))
+ ;;(cadr method) (cddr method))
+ ;;(setq result
+ ;; (funcall (intern (format "%s-request-post" (car method)))
+ ;; (cadr method)))
+ (gnus-open-server method)
+ (gnus-request-post method)
+ ))
+
;;;
;;; Header generation & syntax checking.
;;;
(message-narrow-to-headers)
(message-check-news-header-syntax)))
;; Check the body.
- (message-check-news-body-syntax)))))
+ (save-excursion
+ (set-buffer message-edit-buffer)
+ (message-check-news-body-syntax))))))
(defun message-check-news-header-syntax ()
(and
(defun message-do-fcc ()
"Process Fcc headers in the current buffer."
(let ((case-fold-search t)
- (buf (current-buffer))
+ (coding-system-for-write 'raw-text)
list file)
(save-excursion
(set-buffer (get-buffer-create " *message temp*"))
(buffer-disable-undo (current-buffer))
(erase-buffer)
- (insert-buffer-substring buf)
+ (insert-buffer-substring message-encoding-buffer)
(save-restriction
(message-narrow-to-headers)
(while (setq file (message-fetch-field "fcc"))
(push file list)
(message-remove-header "fcc" nil t)))
+ (run-hooks 'message-header-hook 'message-before-do-fcc-hook)
(goto-char (point-min))
(re-search-forward (concat "^" (regexp-quote mail-header-separator) "$"))
(replace-match "" t t)
(or mail-host-address
(message-make-fqdn)))
+(defun message-make-user-agent ()
+ "Return user-agent info."
+ (if message-user-agent
+ (save-excursion
+ (goto-char (point-min))
+ (let ((case-fold-search t)
+ user-agent beg p end)
+ (if (re-search-forward "^User-Agent:[ \t]*" nil t)
+ (progn
+ (setq beg (match-beginning 0)
+ p (match-end 0)
+ end (std11-field-end)
+ user-agent (buffer-substring p end))
+ (delete-region beg (1+ end))
+ (concat message-user-agent " " user-agent)
+ )
+ message-user-agent)))))
+
(defun message-generate-headers (headers)
"Prepare article HEADERS.
Headers already prepared in the buffer are not modified."
(To nil)
(Distribution (message-make-distribution))
(Lines (message-make-lines))
- (X-Newsreader message-newsreader)
- (X-Mailer (and (not (message-fetch-field "X-Newsreader"))
- message-mailer))
+ (User-Agent (message-make-user-agent))
(Expires (message-make-expires))
(case-fold-search t)
header value elem)
(widen)
(forward-line 1)))
+(defun message-fill-references (header value)
+ (insert (capitalize (symbol-name header))
+ ": "
+ (std11-fill-msg-id-list-string
+ (if (consp value) (car value) value))
+ "\n"))
+
(defun message-fill-header (header value)
(let ((begin (point))
(fill-column 990)
(defun message-pop-to-buffer (name)
"Pop to buffer NAME, and warn if it already exists and is modified."
- (let ((buffer (get-buffer name)))
+ (let ((pop-up-frames pop-up-frames)
+ (special-display-buffer-names special-display-buffer-names)
+ (special-display-regexps special-display-regexps)
+ (same-window-buffer-names same-window-buffer-names)
+ (same-window-regexps same-window-regexps)
+ (buffer (get-buffer name))
+ (cur (current-buffer)))
+ (if (or (and (featurep 'xemacs)
+ (not (eq 'tty (device-type))))
+ window-system
+ (>= emacs-major-version 20))
+ (when message-use-multi-frames
+ (setq pop-up-frames t
+ special-display-buffer-names nil
+ special-display-regexps nil
+ same-window-buffer-names nil
+ same-window-regexps nil))
+ (setq pop-up-frames nil))
(if (and buffer
(buffer-name buffer))
(progn
(error "Message being composed")))
(set-buffer (pop-to-buffer name)))
(erase-buffer)
- (message-mode)))
+ (message-mode)
+ (when pop-up-frames
+ (make-local-variable 'message-original-frame)
+ (setq message-original-frame (selected-frame)))))
(defun message-do-send-housekeeping ()
"Kill old message buffers."
(if wide to-address nil)))
(setq message-reply-headers
- (vector 0 subject from date message-id references 0 0 ""))
+ (make-full-mail-header-from-decoded-header
+ 0 subject from date message-id references 0 0 ""))
(message-setup
`((Subject . ,subject)
cur)
(setq message-reply-headers
- (vector 0 subject from date message-id references 0 0 ""))))
+ (make-full-mail-header-from-decoded-header
+ 0 subject from date message-id references 0 0 ""))))
;;;###autoload
message-id (message-fetch-field "message-id" t)
distribution (message-fetch-field "distribution")))
;; Make sure that this article was written by the user.
- (unless (or (and sender
- (string-equal
- (downcase sender)
- (downcase (message-make-sender))))
- (string-equal
- (downcase (cadr (mail-extract-address-components from)))
- (downcase (cadr (mail-extract-address-components
- (message-make-from))))))
+ (unless (or (and sender
+ (string-equal
+ (downcase sender)
+ (downcase (message-make-sender))))
+ (string-equal
+ (downcase (cadr (mail-extract-address-components from)))
+ (downcase (cadr (mail-extract-address-components
+ (message-make-from))))))
(error "This article is not yours"))
;; Make control message.
(setq buf (set-buffer (get-buffer-create " *message cancel*")))
message-cancel-message)
(message "Canceling your article...")
(if (let ((message-syntax-checks
- 'dont-check-for-anything-just-trust-me))
- (funcall message-send-news-function))
+ 'dont-check-for-anything-just-trust-me)
+ (message-encoding-buffer (current-buffer))
+ (message-edit-buffer (current-buffer)))
+ (message-send-news))
(message "Canceling your article...done"))
(kill-buffer buf)))))
(let ((funcs message-make-forward-subject-function)
(subject (if message-wash-forwarded-subjects
(message-wash-subject
- (or (message-fetch-field "Subject") ""))
- (or (message-fetch-field "Subject") ""))))
+ (or (nnheader-decode-subject
+ (message-fetch-field "Subject"))
+ ""))
+ (or (nnheader-decode-subject
+ (message-fetch-field "Subject"))
+ ""))))
;; Make sure funcs is a list.
(and funcs
(not (listp funcs))
(set-buffer (get-buffer-create " *message resend*"))
(buffer-disable-undo (current-buffer))
(erase-buffer)
- (message-setup `((To . ,address)))
+ ;; avoid to turn-on-mime-edit
+ (let (message-setup-hook)
+ (message-setup `((To . ,address)))
+ )
;; Insert our usual headers.
(message-generate-headers '(From Date To))
(message-narrow-to-headers)
(when (looking-at "From ")
(replace-match "X-From-Line: "))
;; Send it.
- (message-send-mail)
+ (let ((message-encoding-buffer (current-buffer))
+ (message-edit-buffer (current-buffer)))
+ (message-send-mail))
(kill-buffer (current-buffer)))
(message "Resending message to %s...done" address)))
(insert-buffer-substring cur)
(undo-boundary)
(message-narrow-to-head)
- (if (and (message-fetch-field "Mime-Version")
+ (if (and (message-fetch-field "MIME-Version")
(setq boundary (message-fetch-field "Content-Type")))
(if (string-match "boundary=\"\\([^\"]+\\)\"" boundary)
(setq boundary (concat (match-string 1 boundary) " *\n"
(let ((locals (save-excursion
(set-buffer buffer)
(buffer-local-variables)))
- (regexp "^gnus\\|^nn\\|^message"))
+ (regexp "^\\(gnus\\|nn\\|message\\|user-\\(mail-address\\|full-name\\)\\)"))
(mapcar
(lambda (local)
(when (and (consp local)
(cdr local)))))
locals)))
+
+;;; @ for MIME Edit mode
+;;;
+
+(defun message-maybe-encode ()
+ (when message-mime-mode
+ (run-hooks 'mime-edit-translate-hook)
+ (if (catch 'mime-edit-error
+ (save-excursion
+ (mime-edit-translate-body)
+ ))
+ (error "Translation error!")
+ )
+ (end-of-invisible)
+ (run-hooks 'mime-edit-exit-hook)
+ ))
+
+(defun message-mime-insert-article (&optional message)
+ (interactive)
+ (let ((message-cite-function 'mime-edit-inserted-message-filter)
+ (message-reply-buffer gnus-original-article-buffer)
+ )
+ (message-yank-original nil)
+ ))
+
+(set-alist 'mime-edit-message-inserter-alist
+ 'message-mode (function message-mime-insert-article))
+
;;; Miscellaneous functions
;; stolen (and renamed) from nnheader.el
(load newsrc-file))
(nnheader-temp-write nov-file
(when (file-exists-p nov-file)
- (insert-file-contents nov-file))
+ (nnheader-insert-file-contents nov-file))
(setq nov-buffer (current-buffer))
;; Go through the active hashtb and add new all groups that match the
;; kiboze regexp.
-;;; nnmh.el --- mhspool access for Gnus
-;; Copyright (C) 1995,96,97,98 Free Software Foundation, Inc.
+;;; nnmh.el --- mhspool access for Chaos
+;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
-;; Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
+;; Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
+;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
;; Keywords: news, mail
;; This file is part of GNU Emacs.
(when large
(nnheader-message 5 "nnmh: Receiving headers...done"))
- (nnheader-fold-continuation-lines)
+ ;; (nnheader-fold-continuation-lines)
'headers))))
+(deffoo nnmh-retrieve-parsed-headers (articles
+ dependencies
+ &optional newsgroup server fetch-old
+ force-new)
+ (save-excursion
+ (set-buffer nntp-server-buffer)
+ (let* ((file nil)
+ (number (length articles))
+ (large (and (numberp nnmail-large-newsgroup)
+ (> number nnmail-large-newsgroup)))
+ (count 0)
+ (pathname-coding-system 'binary)
+ (case-fold-search t)
+ ;;beg
+ article
+ headers header id end ref lines chars ctype)
+ (nnmh-possibly-change-directory newsgroup server)
+ ;; We don't support fetching by Message-ID.
+ (nnheader-retrieve-headers-from-directory
+ articles nnmh-current-directory dependencies
+ fetch-old force-new large "nnmh")
+ )))
+
(deffoo nnmh-open-server (server &optional defs)
(nnoo-change-server 'nnmh server defs)
(when (not (file-exists-p nnmh-directory))
;; Yasuo Okabe
;; Author: Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
;; Yasuo OKABE <okabe@kuis.kyoto-u.ac.jp>
-;; Version: 1.16
+;; Version: 1.11
;; Keywords: mail , gnus , pop3
;;
;; SPECIAL THANKS
(` (defvar (, symbol) (, value) (, doc))))
)
+(unless (and (fboundp 'pop3-fma-encode-string)
+ (fboundp 'pop3-fma-decode-string))
+ (require 'mel-b)
+ (fset 'pop3-fma-encode-string 'base64-encode-string)
+ (fset 'pop3-fma-decode-string 'base64-decode-string))
+
(defgroup pop3-fma nil
"Multile POP3 account utility for Gnus."
:prefix "pop3-fma-"
:group 'mail
:group 'news)
-(defconst pop3-fma-version-number "1.16")
+(defconst pop3-fma-version-number "1.11")
(defconst pop3-fma-codename
+;; "Feel the wind" ; 0.10
+;; "My home town" ; 0.11
+;; "On the road" ; 0.12
+;; "Rock'n Roll city" ; 0.13
+;; "Money" ; 0.20
+;; "Still 19" ; 0.21
;; "J boy" ; 1.00
;; "Blood line" ; 1.10
-;; "Star ring" ; 1.11
-;; "Goodbye Game" ; 1.12
-;; "Love is Gamble" ; 1.13
-;; "Lonely" ; 1.14
- "Feel the wind" ; 1.16
+ "Star ring" ; 0.xx
+;; "Goodbye Game" ; 0.xx
)
(defconst pop3-fma-version (format "Multiple POP3 account utiliy for Gnus v%s - \"%s\""
pop3-fma-version-number
:group 'pop3-fma
:type '(repeat (string :tag "Argument")))
-(defcustom pop3-fma-save-password-information nil
- "*If non nil , save POP Server's password information.
-============== Important notice =====================
-Please take care of your password information.
-If set to t , your pop3 password is saved in pop3-fma-password in raw text.
-So , Anybody can see this information by describe-variable.
-If there is any problem , please set this variable to nil(default).
-============== Important notice ====================="
- :group 'pop3-fma
- :type 'boolean)
-
;;; Internal variables.
(defvar pop3-fma-password nil
"*POP3 password , user , mailhost information for Gnus.")
-(defvar pop3-fma-movemail-program
- (if (eq system-type 'windows-nt)
- "movemail.exe"
- "movemail")
- "*External program name your movemail.")
-
+(defvar pop3-fma-movemail-program "movemail.exe"
+ "*External program name your movemail.
+Please do not set this valiable non-nil if you do not use Meadow.")
;; Temporary variable
(defvar hdr nil)
(defvar passwd nil)
(defvar str nil)
+(defvar pop3-fma-movemail-options pop3-fma-movemail-arguments)
(defvar spool nil)
(defvar movemail-output-buffer " *movemail-out*")
-(defvar pop3-fma-commandline-arguments nil)
-
-;;; To silence byte compiler
-(and
- (fboundp 'eval-when-compile)
- (eval-when-compile
- (save-excursion
- (beginning-of-defun)
- (eval-region (point-min) (point)))
- (let (case-fold-search)
- (mapcar
- (function
- (lambda (symbol)
- (unless (boundp symbol)
- (make-local-variable symbol)
- (eval (list 'setq symbol nil)))))
- '(:group
- :prefix :type
- pop3-maildrop
- pop3-mailhost
- ))
- (make-local-variable 'byte-compile-warnings)
- (setq byte-compile-warnings nil))))
(defun pop3-fma-init-message-hook ()
(add-hook 'message-send-hook 'pop3-fma-message-add-header))
(pop3-mailhost
(substring inbox (match-end (string-match "^.*@" inbox))))
(pop3-password
- (if pop3-fma-save-password-information
- (pop3-fma-read-passwd (substring inbox (match-end (string-match "^.*@" inbox))))
- (pop3-fma-input-password
- (substring inbox (match-end (string-match "^.*@" inbox)))
- (substring inbox (match-end (string-match "^po:" inbox))
- (- (match-end (string-match "^.*@" inbox)) 1)))))
+ (pop3-fma-read-passwd (substring inbox (match-end (string-match "^.*@" inbox)))))
(pop3-authentication-scheme
(nth 1 (assoc inbox pop3-fma-spool-file-alist)))
(pop3-fma-movemail-type (pop3-fma-get-movemail-type inbox)))
(eq pop3-fma-movemail-type 'exe))
(progn
(setenv "MAILHOST" pop3-mailhost)
- (if (and (not (memq pop3-password pop3-fma-commandline-arguments))
- (not (memq (concat "po:" pop3-maildrop) pop3-fma-commandline-arguments)))
+ (if (and (not (memq pop3-password pop3-fma-movemail-arguments))
+ (not (memq (concat "po:" pop3-maildrop) pop3-fma-movemail-arguments)))
(progn
- (setq pop3-fma-commandline-arguments
- (append
- pop3-fma-movemail-arguments
+ (setq pop3-fma-movemail-arguments nil)
+ (setq pop3-fma-movemail-arguments
+ (append pop3-fma-movemail-options
(list
(concat "po:" pop3-maildrop)
crashbox
exec-directory
pop3-fma-movemail-program)
nil movemail-output-buffer nil
- pop3-fma-commandline-arguments)
+ pop3-fma-movemail-arguments)
(let ((string (buffer-string)))
(if (> (length string) 0)
(progn
;;
(defun pop3-fma-read-passwd (mailhost)
(setq passwd (nth 2 (assoc mailhost pop3-fma-password)))
- passwd)
+ (pop3-fma-decode-string passwd))
-(defun pop3-fma-input-password (mailhost maildrop)
- (pop3-fma-read-noecho
- (format "POP Password for %s at %s: " maildrop mailhost) t))
-
-(setq pop3-read-passwd 'pop3-fma-read-passwd
- nnmail-read-passwd 'pop3-fma-read-passwd)
+(setq pop3-read-passwd 'pop3-fma-read-passwd)
;;
;; Set multiple pop3 server's password
(defun pop3-fma-store-password (passwd)
(list
pop3-mailhost
pop3-maildrop
- passwd)))))
+ (pop3-fma-encode-string passwd)))))
(setcar (cdr (cdr (assoc pop3-mailhost pop3-fma-password)))
- passwd)
- (message "POP password registered.")
- passwd)
+ (pop3-fma-encode-string passwd)))
+ (message "POP password registered.")
+ (pop3-fma-encode-string passwd))
;;
;;;###autoload
(defun pop3-fma-set-pop3-password()
(interactive)
- (if pop3-fma-save-password-information
- (progn
- (mapcar
- (lambda (x)
- (let ((pop3-maildrop
- (substring (car x) (match-end (string-match "^po:" (car x)))
- (- (match-end (string-match "^.*@" (car x))) 1)))
- (pop3-mailhost
- (substring (car x) (match-end (string-match "^.*@" (car x))))))
- (call-interactively 'pop3-fma-store-password)))
- pop3-fma-spool-file-alist)))
+ (mapcar
+ (lambda (x)
+ (let ((pop3-maildrop
+ (substring (car x) (match-end (string-match "^po:" (car x)))
+ (- (match-end (string-match "^.*@" (car x))) 1)))
+ (pop3-mailhost
+ (substring (car x) (match-end (string-match "^.*@" (car x))))))
+ (call-interactively 'pop3-fma-store-password)))
+ pop3-fma-spool-file-alist)
(setq nnmail-movemail-program 'pop3-fma-movemail)
;; (setq nnmail-spool-file pop3-fma-spool-file-alist))
(setq nnmail-spool-file (append
(car spool))
pop3-fma-spool-file-alist))))
;;
-(defmacro pop3-fma-read-char-exclusive ()
- (cond ((featurep 'xemacs)
- '(let ((table (quote ((backspace . ?\C-h) (delete . ?\C-?)
- (left . ?\C-h))))
- event key)
- (while (not
- (and
- (key-press-event-p (setq event (next-command-event)))
- (setq key (or (event-to-character event)
- (cdr (assq (event-key event) table)))))))
- key))
- ((fboundp 'read-char-exclusive)
- '(read-char-exclusive))
- (t
- '(read-char))))
-;;
(defun pop3-fma-read-noecho (prompt &optional stars)
"Read a single line of text from user without echoing, and return it.
Argument PROMPT ."
(and (> truncate 0)
(setq msg (concat "$" (substring msg (1+ truncate))))))
(message msg)
- (setq c (pop3-fma-read-char-exclusive))
- (cond ((eq ?\C-g c)
+ (setq c (read-char-exclusive))
+ (cond ((= c ?\C-g)
(setq quit-flag t
done t))
- ((memq c '(?\r ?\n ?\e))
+ ((or (= c ?\r) (= c ?\n) (= c ?\e))
(setq done t))
- ((eq ?\C-u c)
+ ((= c ?\C-u)
(setq ans ""))
- ((and (/= ?\b c) (/= ?\177 c))
+ ((and (/= c ?\b) (/= c ?\177))
(setq ans (concat ans (char-to-string c))))
((> (length ans) 0)
(setq ans (substring ans 0 -1)))))
;;
;; pop3-fma.el ends here.
-
;; Author: Richard L. Pieri <ratinox@peorth.gweep.net>
;; Keywords: mail, pop3
-;; Version: 1.3m
+;; Version: 1.3m+
;; This file is part of GNU Emacs.
(require 'mail-utils)
(provide 'pop3)
-(defconst pop3-version "1.3m")
+(defconst pop3-version "1.3m+")
(defvar pop3-maildrop (or (user-login-name) (getenv "LOGNAME") (getenv "USER") nil)
"*POP3 maildrop.")
"Timestamp returned when initially connected to the POP server.
Used for APOP authentication.")
+(defvar pop3-movemail-file-coding-system 'binary
+ "Crashbox made by pop3-movemail with this coding system.")
+
(defvar pop3-read-point nil)
(defvar pop3-debug nil)
(pop3-retr process n crashbuf)
(save-excursion
(set-buffer crashbuf)
- (append-to-file (point-min) (point-max) crashbox)
+ (let ((coding-system-for-write pop3-movemail-file-coding-system))
+ (append-to-file (point-min) (point-max) crashbox))
(set-buffer (process-buffer process))
(while (> (buffer-size) 5000)
(goto-char (point-min))
(setq pop3-timestamp
(substring response (or (string-match "<" response) 0)
(+ 1 (or (string-match ">" response) -1)))))
- process
- ))
+ process))
;; Support functions
all: gnus message
+ja: gnus-ja message-ja
+
most: texi2latex.elc latex latexps
.SUFFIXES: .texi .dvi .ps
install:
$(SHELL) $(top_srcdir)/mkinstalldirs $(infodir)
- @for file in gnus message; do \
+ @for file in gnus message gnus-ja message-ja; do \
for ifile in `echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
if test -f $$ifile; then \
echo " $(INSTALL_DATA) $$ifile $(infodir)/$$ifile"; \
\input texinfo @c -*-texinfo-*-
@setfilename gnus-ja
-@settitle Semi-gnus 6.9.2 Manual
+@settitle Semi-gnus 6.8.19 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Semi-gnus 6.9.2 Manual
+@title Semi-gnus 6.8.19 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.9.2 \e$B$KBP1~$7$^$9!#\e(B
+\e$B$3$N@bL@=q$O\e(B Semi-gnus 6.8.19 \e$B$KBP1~$7$^$9!#\e(B
@end ifinfo
@vindex gnus-subscribe-newsgroup-method
\e$B?7$7$$%0%k!<%W$KAx6x$7$?$H$-$K\e(B gnus \e$B$,2?$r$9$k$+$O!"JQ?t\e(B
-@code{gnus-subscribe-newsroup-method} \e$B$K$h$C$F7hDj$5$l$^$9!#\e(B
+@code{gnus-subscribe-nesgroup-method} \e$B$K$h$C$F7hDj$5$l$^$9!#\e(B
\e$B$3$NJQ?t$O4X?t$r4^$s$G$$$kI,MW$,$"$j$^$9!#$3$N4X?t$O?7$7$$%0%k!<%W$NL>A0\e(B
\e$B$rM#0l$N0z?t$H$7$F8F$P$l$^$9!#\e(B
@vindex gnus-options-not-subscribe
@vindex gnus-options-subscribe
-\e$B%U%!%$%k\e(B @file{.newsrc} \e$B$r$$$8$j$?$/$J$$>l9g$O!"\e(B
+\e$B%U%!%$%k\e(B @file{.newrc} \e$B$r$$$8$j$?$/$J$$>l9g$O!"\e(B
@code{gnus-options-subscribe} \e$B$H\e(B @code{gnus-options-not-subscribe} \e$B$N#2\e(B
\e$B$D$NJQ?t$@$1$r@_Dj$9$k$3$H$b$G$-$^$9!#$3$N#2$D$NJQ?t$O%U%!%$%k\e(B
-@file{.newsrc} \e$B$N\e(B @samp{optinos -n} \e$B9T$HA4$/F1$8$3$H$r$7$^$9!#$I$A$i$NJQ\e(B
+@file{.newrc} \e$B$N\e(B @samp{optinos -n} \e$B9T$HA4$/F1$8$3$H$r$7$^$9!#$I$A$i$NJQ\e(B
\e$B?t$b@55,I=8=$G!"?7$7$$%0%k!<%W$OA0<T$K9gCW$9$l$PL5>r7o$K9XFI$5$l!"8e<T$K\e(B
\e$B9gCW$9$k$HL5;k$5$l$^$9!#\e(B
@cindex .newsrc.el
@cindex .newsrc.eld
-\e$B:#$d!"$"$J$?$O%U%!%$%k\e(B @file{.newsrc} \e$B$K$D$$$F$9$Y$FCN$C$F$$$^$9!#$9$Y$F\e(B
+\e$B:#$d!"$"$J$?$O%U%!%$%k\e(B @file{.newrc} \e$B$K$D$$$F$9$Y$FCN$C$F$$$^$9!#$9$Y$F\e(B
\e$B$N9XFI>pJs$OEAE}E*$K$3$N%U%!%$%k$KC_@Q$5$l$^$9!#\e(B
@sc{GNUS} \e$B$G$OJ*;v$,>/!9J#;($K$J$C$F$$$^$9!#%U%!%$%k\e(B @file{.newsrc} \e$B$r:G\e(B
\e$B5-;v$KIU$1$i$l$k0u$O$$$/$D$+$"$j$^$9!#\e(B
-\e$B5-;v$N\e(B @dfn{\e$B9XFIEY\e(B}\e$B!J$*$)!"$9$s$4$$?78l6g$@!*!K$r7hDj$9$k0u$,$"$j$^\e(B
-\e$B$9!#1Q;z$N0u$O0lHLE*$K$O\e(B @dfn{\e$B4{FI\e(B}\e$B$r0UL#$7!"1Q;z$G$J$$J8;z$O0lHLE*$K\e(B
+\e$B5-;v$N\e(B @dfn{\e$B9XFIEY\e(B}\e$B!J$*$)!"%K!<%H!&%-!<%N?78l6g$@!*!K$r7hDj$9$k0u$,$"$j$^\e(B
+\e$B$9!#1Q;z$N0u$O0lHLE*$K$O\e(B@dfn{\e$B4{FI\e(B}\e$B$r0UL#$7!"1Q;z$G$J$$J8;z$O0lHLE*$K\e(B
@dfn{\e$BL$FI\e(B}\e$B$r0UL#$7$^$9!#\e(B
\e$B2C$($F!"9XFIEY$K1F6A$7$J$$0u$b$"$j$^$9!#\e(B
@kindex Z s \e$B!J35N,!K\e(B
@findex gnus-summary-save-newsrc
\e$B8=:_$N4{FI\e(B/\e$B0uIU$-5-;v$N?t$r%I%j%V%k%P%C%U%!\e(B (dribble buffer) \e$B$KJ]B8$7!"\e(B
-\e$B$=$l$+$i%I%j%V%k%P%C%U%!$rJ]B8$7$^$9\e(B (@code{gnus-summary-save-newsrc})\e$B!#\e(B
+\e$B$=$l$+$i%I%j%V%k%P%C%U%!$rJ]B8$7$^$9\e(B (@code{gnus-summary-save-newrc})\e$B!#\e(B
\e$B$b$7@\F,0z?t$rM?$($i$l$l$P!"%U%!%$%k\e(B @file{.newsrc} \e$B$bJ]B8$7$^$9!#$3$NL?\e(B
\e$BNa$r;H$&$H!"99?7$J$7$GH4$1=P$k;v\e(B (@kbd{Q} \e$BL?Na\e(B) \e$B$O0UL#$,L5$/$J$j$^$9!#\e(B
@end table
@table @code
@item nngateway-simple-header-transformaton
-@var{newsgroup}@@@code{nngateway-address} \e$B$N$h$&$J\e(B @code{To} \e$B%X%C%@!<$r\e(B
-\e$B$D$/$j$^$9!#\e(B
+@var{nesgroup}@@@code{nngateway-address} \e$B$N$h$&$J\e(B @code{To} \e$B%X%C%@!<$r$D\e(B
+\e$B$/$j$^$9!#\e(B
@findex nngateway-mail2news-header-transformation
Gnus \e$B$O\e(B MIME \e$B$N07$$$r$;$:!"$3$NI8=`$K$J$k$b$N$O\e(B \e$B$9$4$/NI$$$H9M$($F$$$k$N\e(B
\e$B$G!"2f!9$O$3$3$KBg$-$J7j$,6u$$$F$$$k;v$K$J$j$^$9!#\e(B
-@item X-Newsreader
+@item X-Nesreader
\e$B$3$l$O\e(B ``\e$B$D$^$i$J$$%X%C%@!<\e(B'' \e$B$H9M$($i$l$F$$$^$9$,!";d$O>CHq<T$N>pJs$G$"\e(B
\e$B$k$H8+$J$7$F$$$^$9!#\e(B@code{tin} \e$B$H\e(B @code{Netscape} \e$B$+$iAw$i$l$F$/$kHs>o$K\e(B
\e$BB?$/$NMM<0$K1h$C$F$$$J$$5-;v$r8+$?8e$G!";d$O$=$l$i$r5-;v$rEj9F$9$k$?$a$K\e(B
-\e$B$O;H$o$J$$J}$,NI$$$H$$$&;v$rCN$j$^$7$?!#$b$7\e(B @code{X-Newsreader} \e$B%X%C%@!<\e(B
+\e$B$O;H$o$J$$J}$,NI$$$H$$$&;v$rCN$j$^$7$?!#$b$7\e(B @code{X-Nesreader} \e$B%X%C%@!<\e(B
\e$B$,L5$1$l$P;d$O$=$N>pJs$rF@$k;v$O$J$+$C$?$G$7$g$&!#\e(B
@end table
@item \e$B%P%C%/%(%s%I\e(B (backend)
@cindex backend
Gnus \e$B$O%K%e!<%9$H%a!<%k$NN>J}$N$$$m$$$m$J%P%C%/%(%s%I$,M?$($?5-;v$rF@$^\e(B
-\e$B$9!#\e(BGnus \e$B$O!"$$$o$f$k2<$K2#$?$o$C$F$$$k%a%G%#%"$r07$&;v$O$7$^$;$s\e(B---\e$B$3$l\e(B
-\e$B$O$9$Y$F%P%C%/%(%s%I$K$h$C$F$J$5$l$^$9!#\e(B
+\e$B$9!#\e(BGnus \e$B$O$O!"$$$o$f$k2<$K2#$?$o$C$F$$$k%a%G%#%"$r07$&;v$O$7$^$;$s\e(B---\e$B$3\e(B
+\e$B$l$O$9$Y$F%P%C%/%(%s%I$K$h$C$F$J$5$l$^$9!#\e(B
@item \e$B4pK\\e(B (native)
@cindex native
@item
@kbd{M-x gnus-version} \e$B$r;n$7$F2<$5$$!#$b$7!"\e(B
-@samp{Semi-gnus 6.9.2 (based on Gnus 5.6.45; for SEMI 1.11, FLIM 1.12)}
+@samp{Semi-gnus 6.8.19 (based on Gnus 5.6.44; for SEMI 1.8, FLIM 1.9/1.9)}
\e$B$N$h$&$J$b$N$,=P$F$-$?$J$i!"@5$7$$%U%!%$%k$,FI$_9~$^$l$F$$$^$9!#\e(B
\e$B$b$7!"\e(B@samp{NNTP 3.x} \e$B$d\e(B @samp{nntp flee} \e$B$N$h$&$J$b$N$,=P$F$-$?$H$-$O!"\e(B
\e$B$=$3$K$"$k$$$/$D$+$N8E$$\e(B @file{.el} \e$B%U%!%$%k$,FI$_9~$^$l$F$$$^$9!#$=$l$i\e(B
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Gnus 5.6.45 Manual
+@settitle Chaos 1.12.0 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@ifinfo
-This file documents Gnus, the GNU Emacs newsreader.
+This file documents gnus, the GNU Emacs newsreader.
Copyright (C) 1995,96 Free Software Foundation, Inc.
@tex
@titlepage
-@title Gnus 5.6.45 Manual
+@title Chaos 1.12.0 Manual
@author by Lars Magne Ingebrigtsen
@page
@node Top
-@top The Gnus Newsreader
+@top The gnus Newsreader
@ifinfo
-You can read news (and mail) from within Emacs by using Gnus. The news
+You can read news (and mail) from within Emacs by using gnus. The news
can be gotten by any nefarious means you can think of---@sc{nntp}, local
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Gnus 5.6.45.
+Chaos provides MIME features based on SEMI API. So Chaos
+supports your right to read strange messages including big images or
+other various kinds of formats. Chaos also supports
+internationalization/localization and multiscript features based on MULE
+API. So Chaos does not discriminate various language communities.
+Oh, if you are a Klingon, please wait Unicode Next Generation.
+
+This manual corresponds to Chaos 1.12.0.
@end ifinfo
Gnus tries to empower people who read news the same way Emacs empowers
people who edit text. Gnus sets no limits to what the user should be
-allowed to do. Users are encouraged to extend Gnus to make it behave
+allowed to do. Users are encouraged to extend gnus to make it behave
like they want it to behave. A program should not control people;
people should be empowered to do what they want by using (or abusing)
the program.
@end menu
@node Starting Up
-@chapter Starting Gnus
+@chapter Starting gnus
@cindex starting up
@kindex M-x gnus
@findex gnus
-If your system administrator has set things up properly, starting Gnus
+If your system administrator has set things up properly, starting gnus
and reading news is extremely easy---you just type @kbd{M-x gnus} in
your Emacs.
@findex gnus-other-frame
@kindex M-x gnus-other-frame
-If you want to start Gnus in a different frame, you can use the command
+If you want to start gnus in a different frame, you can use the command
@kbd{M-x gnus-other-frame} instead.
If things do not go smoothly at startup, you have to twiddle some
@menu
* Finding the News:: Choosing a method for getting news.
-* The First Time:: What does Gnus do the first time you start it?
+* The First Time:: What does gnus do the first time you start it?
* The Server is Down:: How can I read my mail then?
-* Slave Gnusae:: You can have more than one Gnus active at a time.
-* Fetching a Group:: Starting Gnus just to read a group.
-* New Groups:: What is Gnus supposed to do with new groups?
+* Slave Gnusae:: You can have more than one gnus active at a time.
+* Fetching a Group:: Starting gnus just to read a group.
+* New Groups:: What is gnus supposed to do with new groups?
* Startup Files:: Those pesky startup files---@file{.newsrc}.
* Auto Save:: Recovering from a crash.
* The Active File:: Reading the active file over a slow line Takes Time.
@vindex gnus-select-method
@c @head
-The @code{gnus-select-method} variable says where Gnus should look for
+The @code{gnus-select-method} variable says where gnus should look for
news. This variable should be a list where the first element says
@dfn{how} and the second element says @dfn{where}. This method is your
-native method. All groups not fetched with this method are
-foreign groups.
+native method. All groups not fetched with this method are foreign
+groups.
For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where
you want to get your daily dosage of news from, you'd say:
@vindex gnus-nntpserver-file
@cindex NNTPSERVER
@cindex @sc{nntp} server
-If this variable is not set, Gnus will take a look at the
+If this variable is not set, gnus will take a look at the
@code{NNTPSERVER} environment variable. If that variable isn't set,
-Gnus will see whether @code{gnus-nntpserver-file}
+gnus will see whether @code{gnus-nntpserver-file}
(@file{/etc/nntpserver} by default) has any opinions on the matter. If
-that fails as well, Gnus will try to use the machine running Emacs as an @sc{nntp} server. That's a long shot, though.
+that fails as well, gnus will try to use the machine running Emacs as an
+@sc{nntp} server. That's a long shot, though.
@vindex gnus-nntp-server
If @code{gnus-nntp-server} is set, this variable will override
@code{gnus-nntp-server} to @code{nil}, which is what it is by default.
@vindex gnus-secondary-servers
-You can also make Gnus prompt you interactively for the name of an
+You can also make gnus prompt you interactively for the name of an
@sc{nntp} server. If you give a non-numerical prefix to @code{gnus}
-(i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
+(i.e., @kbd{C-u M-x gnus}), gnus will let you choose between the servers
in the @code{gnus-secondary-servers} list (if any). You can also just
type in the name of any server you feel like visiting.
@section The First Time
@cindex first time usage
-If no startup files exist, Gnus will try to determine what groups should
+If no startup files exist, gnus will try to determine what groups should
be subscribed by default.
@vindex gnus-default-subscribed-newsgroups
-If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
+If the variable @code{gnus-default-subscribed-newsgroups} is set, gnus
will subscribe you to just those groups in that list, leaving the rest
killed. Your system administrator should have set this variable to
something useful.
-Since she hasn't, Gnus will just subscribe you to a few arbitrarily
+Since she hasn't, gnus will just subscribe you to a few arbitrarily
picked groups (i.e., @samp{*.newusers}). (@dfn{Arbitrary} is defined
here as @dfn{whatever Lars thinks you should read}.)
-You'll also be subscribed to the Gnus documentation group, which should
+You'll also be subscribed to the gnus documentation group, which should
help you with most common problems.
-If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
+If @code{gnus-default-subscribed-newsgroups} is @code{t}, gnus will just
use the normal functions for handling new groups, and not do anything
special.
@section The Server is Down
@cindex server errors
-If the default server is down, Gnus will understandably have some
+If the default server is down, gnus will understandably have some
problems starting. However, if you have some mail groups in addition to
-the news groups, you may want to start Gnus anyway.
+the news groups, you may want to start gnus anyway.
Gnus, being the trusting sort of program, will ask whether to proceed
without a native select method if that server can't be contacted. This
@c @head
If you know that the server is definitely down, or you just want to read
your mail without bothering with the server at all, you can use the
-@code{gnus-no-server} command to start Gnus. That might come in handy
+@code{gnus-no-server} command to start gnus. That might come in handy
if you're in a hurry as well. This command will not attempt to contact
your primary server---instead, it will just activate all groups on level
1 and 2. (You should preferably keep no native groups on those two
@section Slave Gnusae
@cindex slave
-You might want to run more than one Emacs with more than one Gnus at the
-same time. If you are using different @file{.newsrc} files (e.g., if you
-are using the two different Gnusae to read from two different servers),
-that is no problem whatsoever. You just do it.
+You might want to run more than one Emacs with more than one gnus at the
+same time. If you are using different @file{.newsrc} files (e.g., if
+you are using the two different gnusae to read from two different
+servers), that is no problem whatsoever. You just do it.
The problem appears when you want to run two Gnusae that use the same
@code{.newsrc} file.
-To work around that problem some, we here at the Think-Tank at the Gnus
-Towers have come up with a new concept: @dfn{Masters} and
-@dfn{slaves}. (We have applied for a patent on this concept, and have
-taken out a copyright on those words. If you wish to use those words in
-conjunction with each other, you have to send $1 per usage instance to
-me. Usage of the patent (@dfn{Master/Slave Relationships In Computer
-Applications}) will be much more expensive, of course.)
+To work around that problem some, we here at the Think-Tank at the gnus
+Towers have come up with a new concept: @dfn{Masters} and @dfn{slaves}.
+(We have applied for a patent on this concept, and have taken out a
+copyright on those words. If you wish to use those words in conjunction
+with each other, you have to send $1 per usage instance to me. Usage of
+the patent (@dfn{Master/Slave Relationships In Computer Applications})
+will be much more expensive, of course.)
-Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
-however you do it). Each subsequent slave Gnusae should be started with
+Anyways, you start one gnus up the normal way with @kbd{M-x gnus} (or
+however you do it). Each subsequent slave gnusae should be started with
@kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc}
files, but instead save @dfn{slave files} that contain information only
-on what groups have been read in the slave session. When a master Gnus
+on what groups have been read in the slave session. When a master gnus
starts, it will read (and delete) these slave files, incorporating all
information from them. (The slave files will be read in the sequence
they were created, so the latest changes will have precedence.)
@findex gnus-fetch-group
It is sometimes convenient to be able to just say ``I want to read this
-group and I don't care whether Gnus has been started or not''. This is
+group and I don't care whether gnus has been started or not''. This is
perhaps more useful for people who write code than for users, but the
command @code{gnus-fetch-group} provides this functionality in any case.
It takes the group name as a parameter.
@code{nil}, you can always subscribe to the new groups just by pressing
@kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable
is @code{ask-server} by default. If you set this variable to
-@code{always}, then Gnus will query the backends for new groups even
+@code{always}, then gnus will query the backends for new groups even
when you do the @kbd{g} command (@pxref{Scanning New Messages}).
@menu
* Checking New Groups:: Determining what groups are new.
-* Subscription Methods:: What Gnus should do with new groups.
-* Filtering New Groups:: Making Gnus ignore certain new groups.
+* Subscription Methods:: What gnus should do with new groups.
+* Filtering New Groups:: Making gnus ignore certain new groups.
@end menu
Gnus normally determines whether a group is new or not by comparing the
list of groups from the active file(s) with the lists of subscribed and
dead groups. This isn't a particularly fast method. If
-@code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
+@code{gnus-check-new-newsgroups} is @code{ask-server}, gnus will ask the
server for new groups since the last time. This is both faster and
cheaper. This also means that you can get rid of the list of killed
groups altogether, so you may set @code{gnus-save-killed-list} to
server supports @code{ask-server}? No? Good, because I don't have a
fail-safe answer. I would suggest just setting this variable to
@code{ask-server} and see whether any new groups appear within the next
-few days. If any do, then it works. If none do, then it doesn't
-work. I could write a function to make Gnus guess whether the server
-supports @code{ask-server}, but it would just be a guess. So I won't.
-You could @code{telnet} to the server and say @code{HELP} and see
-whether it lists @samp{NEWGROUPS} among the commands it understands. If
-it does, then it might work. (But there are servers that lists
-@samp{NEWGROUPS} without supporting the function properly.)
-
-This variable can also be a list of select methods. If so, Gnus will
+few days. If any do, then it works. If none do, then it doesn't work.
+I could write a function to make gnus guess whether the server supports
+@code{ask-server}, but it would just be a guess. So I won't. You could
+@code{telnet} to the server and say @code{HELP} and see whether it lists
+@samp{NEWGROUPS} among the commands it understands. If it does, then it
+might work. (But there are servers that lists @samp{NEWGROUPS} without
+supporting the function properly.)
+
+This variable can also be a list of select methods. If so, gnus will
issue an @code{ask-server} command to each of the select methods, and
subscribe them (or not) using the normal methods. This might be handy
if you are monitoring a few servers for new groups. A side effect is
@subsection Subscription Methods
@vindex gnus-subscribe-newsgroup-method
-What Gnus does when it encounters a new group is determined by the
+What gnus does when it encounters a new group is determined by the
@code{gnus-subscribe-newsgroup-method} variable.
This variable should contain a function. This function will be called
@item gnus-subscribe-interactively
@vindex gnus-subscribe-interactively
-Subscribe new groups interactively. This means that Gnus will ask
-you about @strong{all} new groups. The groups you choose to subscribe
-to will be subscribed hierarchically.
+Subscribe new groups interactively. This means that gnus will ask you
+about @strong{all} new groups. The groups you choose to subscribe to
+will be subscribed hierarchically.
@item gnus-subscribe-killed
@vindex gnus-subscribe-killed
@vindex gnus-subscribe-hierarchical-interactive
A closely related variable is
@code{gnus-subscribe-hierarchical-interactive}. (That's quite a
-mouthful.) If this variable is non-@code{nil}, Gnus will ask you in a
+mouthful.) If this variable is non-@code{nil}, gnus will ask you in a
hierarchical fashion whether to subscribe to new groups or not. Gnus
will ask you for each sub-hierarchy whether you want to descend the
hierarchy or not.
Now, you all know about the @file{.newsrc} file. All subscription
information is traditionally stored in this file.
-Things got a bit more complicated with @sc{gnus}. In addition to
+Things got a bit more complicated with @sc{GNUS}. In addition to
keeping the @file{.newsrc} file updated, it also used a file called
@file{.newsrc.el} for storing all the information that didn't fit into
the @file{.newsrc} file. (Actually, it also duplicated everything in
-the @file{.newsrc} file.) @sc{gnus} would read whichever one of these
+the @file{.newsrc} file.) @sc{GNUS} would read whichever one of these
files was the most recently saved, which enabled people to swap between
@sc{gnus} and other newsreaders.
never delete the @file{.newsrc.eld} file---it contains much information
not stored in the @file{.newsrc} file.
+In addition, gnus does not change anything. Hail comrade Lars!
+
@vindex gnus-save-newsrc-file
You can turn off writing the @file{.newsrc} file by setting
@code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
-the file and save some space, as well as exiting from Gnus faster.
+the file and save some space, as well as exiting from gnus faster.
However, this will make it impossible to use other newsreaders than
-Gnus. But hey, who would want to, right?
+gnus. But hey, who would want to, right?
@vindex gnus-save-killed-list
If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
@end lisp
@vindex gnus-init-file
-When Gnus starts, it will read the @code{gnus-site-init-file}
+When gnus starts, it will read the @code{gnus-site-init-file}
(@file{.../site-lisp/gnus} by default) and @code{gnus-init-file}
(@file{~/.gnus} by default) files. These are normal Emacs Lisp files
and can be used to avoid cluttering your @file{~/.emacs} and
-@file{site-init} files with Gnus stuff. Gnus will also check for files
+@file{site-init} files with gnus stuff. Gnus will also check for files
with the same names as these, but with @file{.elc} and @file{.el}
suffixes. In other words, if you have set @code{gnus-init-file} to
@file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
@cindex dribble file
@cindex auto-save
-Whenever you do something that changes the Gnus data (reading articles,
+Whenever you do something that changes the gnus data (reading articles,
catching up, killing/subscribing groups), the change is added to a
special @dfn{dribble buffer}. This buffer is auto-saved the normal
Emacs way. If your Emacs should crash before you have saved the
@file{.newsrc} files, all changes you have made can be recovered from
this file.
-If Gnus detects this file at startup, it will ask the user whether to
-read it. The auto save file is deleted whenever the real startup file is
-saved.
+If gnus detects this file at startup, it will ask the user whether to
+read it. The auto save file is deleted whenever the real startup file
+is saved.
@vindex gnus-use-dribble-file
-If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
+If @code{gnus-use-dribble-file} is @code{nil}, gnus won't create and
maintain a dribble buffer. The default is @code{t}.
@vindex gnus-dribble-directory
Gnus will put the dribble file(s) in @code{gnus-dribble-directory}. If
-this variable is @code{nil}, which it is by default, Gnus will dribble
+this variable is @code{nil}, which it is by default, gnus will dribble
into the directory where the @file{.newsrc} file is located. (This is
normally the user's home directory.) The dribble file will get the same
file permissions as the @code{.newsrc} file.
@cindex active file
@cindex ignored groups
-When Gnus starts, or indeed whenever it tries to determine whether new
+When gnus starts, or indeed whenever it tries to determine whether new
articles have arrived, it reads the active file. This is a very large
file that lists all the active groups and articles on the server.
@vindex gnus-ignored-newsgroups
-Before examining the active file, Gnus deletes all lines that match the
+Before examining the active file, gnus deletes all lines that match the
regexp @code{gnus-ignored-newsgroups}. This is done primarily to reject
-any groups with bogus names, but you can use this variable to make Gnus
+any groups with bogus names, but you can use this variable to make gnus
ignore hierarchies you aren't ever interested in. However, this is not
recommended. In fact, it's highly discouraged. Instead, @pxref{New
Groups} for an overview of other variables that can be used instead.
@vindex gnus-read-active-file
@c @head
The active file can be rather Huge, so if you have a slow network, you
-can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
+can set @code{gnus-read-active-file} to @code{nil} to prevent gnus from
reading the active file. This variable is @code{some} by default.
Gnus will try to make do by getting information just on the groups that
you actually subscribe to.
Note that if you subscribe to lots and lots of groups, setting this
-variable to @code{nil} will probably make Gnus slower, not faster. At
-present, having this variable @code{nil} will slow Gnus down
+variable to @code{nil} will probably make gnus slower, not faster. At
+present, having this variable @code{nil} will slow gnus down
considerably, unless you read news over a 2400 baud modem.
This variable can also have the value @code{some}. Gnus will then
at all. In any case, @code{some} should be faster than @code{nil}, and
is certainly faster than @code{t} over slow lines.
-If this variable is @code{nil}, Gnus will ask for group info in total
+If this variable is @code{nil}, gnus will ask for group info in total
lock-step, which isn't very fast. If it is @code{some} and you use an
-@sc{nntp} server, Gnus will pump out commands as fast as it can, and
+@sc{nntp} server, gnus will pump out commands as fast as it can, and
read all the replies in one swoop. This will normally result in better
performance, but if the server does not support the aforementioned
@code{LIST ACTIVE group} command, this isn't very nice to the server.
@item gnus-load-hook
@vindex gnus-load-hook
-A hook run while Gnus is being loaded. Note that this hook will
+A hook run while gnus is being loaded. Note that this hook will
normally be run just once in each Emacs session, no matter how many
-times you start Gnus.
+times you start gnus.
@item gnus-before-startup-hook
@vindex gnus-before-startup-hook
-A hook run after starting up Gnus successfully.
+A hook run after starting up gnus successfully.
@item gnus-startup-hook
@vindex gnus-startup-hook
-A hook run as the very last thing after starting up Gnus
+A hook run as the very last thing after starting up gnus
@item gnus-started-hook
@vindex gnus-started-hook
-A hook that is run as the very last thing after starting up Gnus
+A hook that is run as the very last thing after starting up gnus
successfully.
@item gnus-started-hook
@item gnus-check-bogus-newsgroups
@vindex gnus-check-bogus-newsgroups
-If non-@code{nil}, Gnus will check for and delete all bogus groups at
+If non-@code{nil}, gnus will check for and delete all bogus groups at
startup. A @dfn{bogus group} is a group that you have in your
@file{.newsrc} file, but doesn't exist on the news server. Checking for
bogus groups can take quite a while, so to save time and resources it's
@item gnus-no-groups-message
@vindex gnus-no-groups-message
-Message displayed by Gnus when no groups are available.
+Message displayed by gnus when no groups are available.
@item gnus-play-startup-jingle
@vindex gnus-play-startup-jingle
-If non-@code{nil}, play the Gnus jingle at startup.
+If non-@code{nil}, play the gnus jingle at startup.
@item gnus-startup-jingle
@vindex gnus-startup-jingle
@cindex group buffer
The @dfn{group buffer} lists all (or parts) of the available groups. It
-is the first buffer shown when Gnus starts, and will never be killed as
-long as Gnus is active.
+is the first buffer shown when gnus starts, and will never be killed as
+long as gnus is active.
@iftex
@iflatex
There should always be a colon on the line; the cursor always moves to
the colon after performing an operation. Nothing else is required---not
even the group name. All displayed text is just window dressing, and is
-never examined by Gnus. Gnus stores all real information it needs using
+never examined by gnus. Gnus stores all real information it needs using
text properties.
(Note that if you make a really strange, wonderful, spreadsheet-like
@end table
When the forms are @code{eval}ed, point is at the beginning of the line
-of the group in question, so you can use many of the normal Gnus
+of the group in question, so you can use many of the normal gnus
functions for snarfing info on the group.
@vindex gnus-group-update-hook
Select the current group, switch to the summary buffer and display the
first unread article (@code{gnus-group-read-group}). If there are no
unread articles in the group, or if you give a non-numerical prefix to
-this command, Gnus will offer to fetch all the old articles in this
+this command, gnus will offer to fetch all the old articles in this
group from the server. If you give a numerical prefix @var{N}, @var{N}
-determines the number of articles Gnus will fetch. If @var{N} is
-positive, Gnus fetches the @var{N} newest articles, if @var{N} is
-negative, Gnus fetches the @var{abs(N)} oldest articles.
+determines the number of articles gnus will fetch. If @var{N} is
+positive, gnus fetches the @var{N} newest articles, if @var{N} is
+negative, gnus fetches the @var{abs(N)} oldest articles.
@item RET
@kindex RET (Group)
scoring/killing will be performed, there will be no highlights and no
expunging. This might be useful if you're in a real hurry and have to
enter some humongous group. If you give a 0 prefix to this command
-(i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer,
+(i.e., @kbd{0 M-RET}), gnus won't even generate the summary buffer,
which is useful if you want to toggle threading before generating the
summary buffer (@pxref{Summary Generation Commands}).
@end table
@vindex gnus-large-newsgroup
-The @code{gnus-large-newsgroup} variable says what Gnus should consider
+The @code{gnus-large-newsgroup} variable says what gnus should consider
to be a big group. This is 200 by default. If the group has more
-(unread and/or ticked) articles than this, Gnus will query the user
+(unread and/or ticked) articles than this, gnus will query the user
before entering the group. The user can then specify how many articles
should be fetched from the server. If the user specifies a negative
number (@code{-n}), the @code{n} oldest articles will be fetched. If it
@c @icon{gnus-group-catchup-current}
Mark all unticked articles in this group as read
(@code{gnus-group-catchup-current}).
-@code{gnus-group-catchup-group-hook} is called when catching up a group from
-the group buffer.
+@code{gnus-group-catchup-group-hook} is called when catching up a group
+from the group buffer.
@item C
@kindex C (Group)
All groups have a level of @dfn{subscribedness}. For instance, if a
group is on level 2, it is more subscribed than a group on level 5. You
-can ask Gnus to just list groups on a given level or lower
+can ask gnus to just list groups on a given level or lower
(@pxref{Listing Groups}), or to just check for new articles in groups on
a given level or lower (@pxref{Scanning New Messages}).
@kindex G h (Group)
@cindex help group
@findex gnus-group-make-help-group
-Make the Gnus help group (@code{gnus-group-make-help-group}).
+Make the gnus help group (@code{gnus-group-make-help-group}).
@item G a
@kindex G a (Group)
@findex gnus-group-make-archive-group
@vindex gnus-group-archive-directory
@vindex gnus-group-recent-archive-directory
-Make a Gnus archive group (@code{gnus-group-make-archive-group}). By
+Make a gnus archive group (@code{gnus-group-make-archive-group}). By
default a group pointing to the most recent articles will be created
(@code{gnus-group-recent-archive-directory}), but given a prefix, a full
group will be created from @code{gnus-group-archive-directory}.
Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
@code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs},
@code{rfc934}, @code{rfc822-forward}, and @code{forward}. If you run
-this command without a prefix, Gnus will guess at the file type.
+this command without a prefix, gnus will guess at the file type.
@xref{Document Groups}.
@item G u
@vindex gnus-activate-foreign-newsgroups
If @code{gnus-activate-foreign-newsgroups} is a positive number,
-Gnus will check all foreign groups with this level or lower at startup.
+gnus will check all foreign groups with this level or lower at startup.
This might take quite a while, especially if you subscribe to lots of
groups from different @sc{nntp} servers. Also @pxref{Group Levels};
@code{gnus-activate-level} also affects activation of foreign
(auto-expire . t))
@end example
-We see that each element consists of a "dotted pair"---the thing before
-the dot is the key, while the thing after the dot is the value. All the
-parameters have this form @emph{except} local variable specs, which are
-not dotted pairs, but proper lists.
+We see that each element consists of a ``dotted pair''---the thing
+before the dot is the key, while the thing after the dot is the value.
+All the parameters have this form @emph{except} local variable specs,
+which are not dotted pairs, but proper lists.
The following group parameters can be used:
@item newsgroup
@cindex newsgroup
-If you have @code{(newsgroup . t)} in the group parameter list, Gnus
+If you have @code{(newsgroup . t)} in the group parameter list, gnus
will treat all responses as if they were responses to news articles.
This can be useful if you have a mail group that's really a mirror of a
news group.
@end table
@item comment
-Elements that look like @code{(comment . "This is a comment")}
-are arbitrary comments on the group. They are currently ignored by
-Gnus, but provide a place for you to store information on particular
-groups.
+Elements that look like @code{(comment . "This is a comment")} are
+arbitrary comments on the group. They are currently ignored by gnus,
+but provide a place for you to store information on particular groups.
@item @var{(variable form)}
You can use the group parameters to set variables local to the group you
@node Exiting Gnus
-@section Exiting Gnus
-@cindex exiting Gnus
+@section Exiting gnus
+@cindex exiting gnus
-Yes, Gnus is ex(c)iting.
+Yes, gnus is ex(c)iting.
@table @kbd
@item z
@kindex z (Group)
@findex gnus-group-suspend
-Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus,
-but it kills all buffers except the Group buffer. I'm not sure why this
-is a gain, but then who am I to judge?
+Suspend gnus (@code{gnus-group-suspend}). This doesn't really exit
+gnus, but it kills all buffers except the Group buffer. I'm not sure
+why this is a gain, but then who am I to judge?
@item q
@kindex q (Group)
@findex gnus-group-exit
@c @icon{gnus-group-exit}
-Quit Gnus (@code{gnus-group-exit}).
+Quit gnus (@code{gnus-group-exit}).
@item Q
@kindex Q (Group)
@findex gnus-group-quit
-Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
-The dribble file will be saved, though (@pxref{Auto Save}).
+Quit gnus without saving the @file{.newsrc} files
+(@code{gnus-group-quit}). The dribble file will be saved, though
+(@pxref{Auto Save}).
@end table
@vindex gnus-exit-gnus-hook
@vindex gnus-suspend-gnus-hook
-@code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
-@code{gnus-exit-gnus-hook} is called when you quit Gnus, while
+@code{gnus-suspend-gnus-hook} is called when you suspend gnus and
+@code{gnus-exit-gnus-hook} is called when you quit gnus, while
@code{gnus-after-exiting-gnus-hook} is called as the final item when
-exiting Gnus.
+exiting gnus.
@findex gnus-unload
@cindex unloading
-If you wish to completely unload Gnus and all its adherents, you can use
+If you wish to completely unload gnus and all its adherents, you can use
the @code{gnus-unload} command. This command is also very handy when
trying to customize meta-variables.
@item A T
@kindex A T (Topic)
@findex gnus-topic-list-active
-List all groups that Gnus knows about in a topics-ified way
+List all groups that gnus knows about in a topics-ified way
(@code{gnus-topic-list-active}).
@item G p
@section Misc Group Stuff
@menu
-* Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
-* Group Information:: Information and help on groups and Gnus.
-* Group Timestamp:: Making Gnus keep track of when you last read a group.
-* File Commands:: Reading and writing the Gnus files.
+* Scanning New Messages:: Asking gnus to see whether new messages have arrived.
+* Group Information:: Information and help on groups and gnus.
+* Group Timestamp:: Making gnus keep track of when you last read a group.
+* File Commands:: Reading and writing the gnus files.
@end menu
@table @kbd
@kindex R (Group)
@cindex restarting
@findex gnus-group-restart
-Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
+Restart gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
file(s), closes the connection to all servers, clears up all run-time
-Gnus variables, and then starts Gnus all over again.
+gnus variables, and then starts gnus all over again.
@end table
between the various sites. @code{ange-ftp} (or @code{efs}) will be used
for fetching the file.
-If fetching from the first site is unsuccessful, Gnus will attempt to go
+If fetching from the first site is unsuccessful, gnus will attempt to go
through @code{gnus-group-faq-directory} and try to open them one by one.
@item H d
@kindex M-d (Group)
@findex gnus-group-describe-all-groups
Describe all groups (@code{gnus-group-describe-all-groups}). If given a
-prefix, force Gnus to re-read the description file from the server.
+prefix, force gnus to re-read the description file from the server.
@item H v
@itemx V
@kindex H v (Group)
@cindex version
@findex gnus-version
-Display current Gnus version numbers (@code{gnus-version}).
+Display current gnus version numbers (@code{gnus-version}).
@item ?
@kindex ? (Group)
@cindex info
@cindex manual
@findex gnus-info-find-node
-Go to the Gnus info node (@code{gnus-info-find-node}).
+Go to the gnus info node (@code{gnus-info-find-node}).
@end table
@cindex timestamps
@cindex group timestamps
-It can be convenient to let Gnus keep track of when you last read a
+It can be convenient to let gnus keep track of when you last read a
group. To set the ball rolling, you should add
@code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
@vindex gnus-extract-address-components
Gnus will use the value of the @code{gnus-extract-address-components}
variable as a function for getting the name and address parts of a
-@code{From} header. Two pre-defined functions exist:
+@code{From} header. Three pre-defined functions exist:
@code{gnus-extract-address-components}, which is the default, quite
-fast, and too simplistic solution; and
-@code{mail-extract-address-components}, which works very nicely, but is
-slower. The default function will return the wrong answer in 5% of the
-cases. If this is unacceptable to you, use the other function instead.
+fast, and too simplistic solution;
+@code{mail-extract-address-components}, which works nicely, but is
+slower; and @code{std11-extract-address-components}, which works very
+nicely, but is slower. The default function will return the wrong
+answer in 5% of the cases. If this is unacceptable to you, use the
+other function instead.
@vindex gnus-summary-same-subject
@code{gnus-summary-same-subject} is a string indicating that the current
@end table
The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
-have to be handled with care. For reasons of efficiency, Gnus will
+have to be handled with care. For reasons of efficiency, gnus will
compute what column these characters will end up in, and ``hard-code''
that. This means that it is invalid to have these specs after a
variable-length spec. Well, you might not be arrested, but your summary
The smart choice is to have these specs as far to the left as possible.
(Isn't that the case with everything, though? But I digress.)
-This restriction may disappear in later versions of Gnus.
+This restriction may disappear in later versions of gnus.
@node Summary Buffer Mode Line
without displaying the article (@code{gnus-summary-goto-subject}).
@end table
-If Gnus asks you to press a key to confirm going to the next group, you
+If gnus asks you to press a key to confirm going to the next group, you
can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
buffer, searching for the next group to read without actually returning
to the group buffer.
@vindex gnus-auto-select-next
@item gnus-auto-select-next
If you issue one of the movement commands (like @kbd{n}) and there are
-no more unread articles after the current one, Gnus will offer to go to
+no more unread articles after the current one, gnus will offer to go to
the next group. If this variable is @code{t} and the next group is
-empty, Gnus will exit summary mode and return to the group buffer. If
-this variable is neither @code{t} nor @code{nil}, Gnus will select the
+empty, gnus will exit summary mode and return to the group buffer. If
+this variable is neither @code{t} nor @code{nil}, gnus will select the
next group, no matter whether it has any unread articles or not. As a
-special case, if this variable is @code{quietly}, Gnus will select the
+special case, if this variable is @code{quietly}, gnus will select the
next group without asking for confirmation. If this variable is
@code{almost-quietly}, the same will happen only if you are located on
the last article in the group. Finally, if this variable is
@item gnus-auto-center-summary
@vindex gnus-auto-center-summary
-If non-@code{nil}, Gnus will keep the point in the summary buffer
+If non-@code{nil}, gnus will keep the point in the summary buffer
centered at all times. This makes things quite tidy, but if you have a
slow network connection, or simply do not like this un-Emacsism, you can
set this variable to @code{nil} to get the normal Emacs scrolling
resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You
will be popped into a mail buffer where you can edit the headers before
sending the mail off again. If you give a prefix to this command, and
-the bounced mail is a reply to some other mail, Gnus will try to fetch
+the bounced mail is a reply to some other mail, gnus will try to fetch
that mail and display it for easy perusal of its headers. This might
very well fail, though.
ship a mail to a different account of yours. (If you're both
@code{root} and @code{postmaster} and get a mail for @code{postmaster}
to the @code{root} account, you may want to resend it to
-@code{postmaster}. Ordnung muß sein!
+@code{postmaster}. Ordnung mu\e,A_\e(B sein!
This command understands the process/prefix convention
(@pxref{Process/Prefix}).
you would do normally. The previous article will be
canceled/superseded.
-Just remember, kids: There is no 'c' in 'supersede'.
+Just remember, kids: There is no `c' in `supersede'.
@node Marking Articles
Marking articles as @dfn{expirable} (or have them marked as such
automatically) doesn't make much sense in normal groups---a user doesn't
control expiring of news articles, but in mail groups, for instance,
-articles marked as @dfn{expirable} can be deleted by Gnus at
-any time.
+articles marked as @dfn{expirable} can be deleted by gnus at any time.
@end table
You can set a bookmark in the current article. Say you are reading a
long thesis on cats' urinary tracts, and have to go home for dinner
before you've finished reading the thesis. You can then set a bookmark
-in the article, and Gnus will jump to this bookmark the next time it
+in the article, and gnus will jump to this bookmark the next time it
encounters the article. @xref{Setting Marks}
@item
@cindex customizing threading
@menu
-* Loose Threads:: How Gnus gathers loose threads into bigger threads.
+* Loose Threads:: How gnus gathers loose threads into bigger threads.
* Filling In Threads:: Making the threads displayed look fuller.
* More Threading:: Even more variables for fiddling with threads.
* Low-Level Threading:: You thought it was over... but you were wrong!
@table @code
@item gnus-summary-make-false-root
@vindex gnus-summary-make-false-root
-If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
+If non-@code{nil}, gnus will gather all loose subtrees into one big tree
and create a dummy root at the top. (Wait a minute. Root at the top?
Yup.) Loose subtrees occur when the real root has expired, or you've
read or killed the root in a previous session.
-When there is no real root of a thread, Gnus will have to fudge
-something. This variable says what fudging method Gnus should use.
+When there is no real root of a thread, gnus will have to fudge
+something. This variable says what fudging method gnus should use.
There are four possible values:
@iftex
@item gnus-summary-gather-subject-limit
@vindex gnus-summary-gather-subject-limit
Loose threads are gathered by comparing subjects of articles. If this
-variable is @code{nil}, Gnus requires an exact match between the
+variable is @code{nil}, gnus requires an exact match between the
subjects of the loose threads before gathering them into one big
super-thread. This might be too strict a requirement, what with the
presence of stupid newsreaders that chop off long subject lines. If
you think so, set this variable to, say, 20 to require that only the
first 20 characters of the subjects have to match. If you set this
-variable to a really low number, you'll find that Gnus will gather
+variable to a really low number, you'll find that gnus will gather
everything in sight into one thread, which isn't very helpful.
@cindex fuzzy article gathering
-If you set this variable to the special value @code{fuzzy}, Gnus will
+If you set this variable to the special value @code{fuzzy}, gnus will
use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
Matching}).
@table @code
@item gnus-fetch-old-headers
@vindex gnus-fetch-old-headers
-If non-@code{nil}, Gnus will attempt to build old threads by fetching
-more old headers---headers to articles marked as read. If you
-would like to display as few summary lines as possible, but still
-connect as many loose threads as possible, you should set this variable
-to @code{some} or a number. If you set it to a number, no more than
-that number of extra old headers will be fetched. In either case,
-fetching old headers only works if the backend you are using carries
-overview files---this would normally be @code{nntp}, @code{nnspool} and
+If non-@code{nil}, gnus will attempt to build old threads by fetching
+more old headers---headers to articles marked as read. If you would
+like to display as few summary lines as possible, but still connect as
+many loose threads as possible, you should set this variable to
+@code{some} or a number. If you set it to a number, no more than that
+number of extra old headers will be fetched. In either case, fetching
+old headers only works if the backend you are using carries overview
+files---this would normally be @code{nntp}, @code{nnspool} and
@code{nnml}. Also remember that if the root of the thread has been
-expired by the server, there's not much Gnus can do about that.
+expired by the server, there's not much gnus can do about that.
This variable can also be set to @code{invisible}. This won't have any
visible effects, but is useful if you use the @kbd{A T} command a lot
gotten by setting this variable to @code{some}. Gnus will then look at
the complete @code{References} headers of all articles and try to string
together articles that belong in the same thread. This will leave
-@dfn{gaps} in the threading display where Gnus guesses that an article
+@dfn{gaps} in the threading display where gnus guesses that an article
is missing from the thread. (These gaps appear like normal summary
-lines. If you select a gap, Gnus will try to fetch the article in
-question.) If this variable is @code{t}, Gnus will display all these
+lines. If you select a gap, gnus will try to fetch the article in
+question.) If this variable is @code{t}, gnus will display all these
``gaps'' without regard for whether they are useful for completing the
-thread or not. Finally, if this variable is @code{more}, Gnus won't cut
+thread or not. Finally, if this variable is @code{more}, gnus won't cut
off sparse leaf nodes that don't lead anywhere. This variable is
@code{nil} by default.
@item gnus-parse-headers-hook
@vindex gnus-parse-headers-hook
Hook run before parsing any headers. The default value is
-@code{(gnus-decode-rfc1522)}, which means that QPized headers will be
-slightly decoded in a hackish way. This is likely to change in the
-future when Gnus becomes @sc{MIME}ified.
+@code{(gnus-set-summary-default-charset)}, which sets up local value of
+@code{default-mime-charset} in summary buffer based on variable
+@code{gnus-newsgroup-default-charset-alist}.
@item gnus-alter-header-function
@vindex gnus-alter-header-function
If you read your news from an @sc{nntp} server that's far away, the
network latencies may make reading articles a chore. You have to wait
for a while after pressing @kbd{n} to go to the next article before the
-article appears. Why can't Gnus just go ahead and fetch the article
+article appears. Why can't gnus just go ahead and fetch the article
while you are reading the previous one? Why not, indeed.
First, some caveats. There are some pitfalls to using asynchronous
-article fetching, especially the way Gnus does it.
+article fetching, especially the way gnus does it.
Let's say you are reading article 1, which is short, and article 2 is
quite long, and you are not interested in reading that. Gnus does not
know this, so it goes ahead and fetches article 2. You decide to read
-article 3, but since Gnus is in the process of fetching article 2, the
+article 3, but since gnus is in the process of fetching article 2, the
connection is blocked.
-To avoid these situations, Gnus will open two (count 'em two)
+To avoid these situations, gnus will open two (count 'em two)
connections to the server. Some people may think this isn't a very nice
thing to do, but I don't see any real alternatives. Setting up that
-extra connection takes some time, so Gnus startup will be slower.
+extra connection takes some time, so gnus startup will be slower.
Gnus will fetch more articles than you will read. This will mean that
the link between your machine and the @sc{nntp} server will become more
@code{nil} on read articles. The function is called with an article
data structure as the only parameter.
-If, for instance, you wish to pre-fetch only unread articles shorter than 100 lines, you could say something like:
+If, for instance, you wish to pre-fetch only unread articles shorter
+than 100 lines, you could say something like:
@lisp
(defun my-async-short-unread-p (data)
@end lisp
These functions will be called many, many times, so they should
-preferably be short and sweet to avoid slowing down Gnus too much.
-It's probably a good idea to byte-compile things like this.
+preferably be short and sweet to avoid slowing down gnus too much. It's
+probably a good idea to byte-compile things like this.
@vindex gnus-prefetched-article-deletion-strategy
Articles have to be removed from the asynch buffer sooner or later. The
@vindex gnus-cache-active-file
The cache stores information on what articles it contains in its active
file (@code{gnus-cache-active-file}). If this file (or any other parts
-of the cache) becomes all messed up for some reason or other, Gnus
+of the cache) becomes all messed up for some reason or other, gnus
offers two functions that will try to set things right. @kbd{M-x
gnus-cache-generate-nov-databases} will (re)build all the @sc{nov}
files, and @kbd{gnus-cache-generate-active} will (re)generate the active
If you have a slow connection, but the idea of using caching seems
unappealing to you (and it is, really), you can help the situation some
-by switching on the @dfn{backlog}. This is where Gnus will buffer
+by switching on the @dfn{backlog}. This is where gnus will buffer
already read articles so that it doesn't have to re-fetch articles
you've already read. This only helps if you are in the habit of
re-selecting articles you've recently read, of course. If you never do
-that, turning the backlog on will slow Gnus down a little bit, and
+that, turning the backlog on will slow gnus down a little bit, and
increase memory usage some.
@vindex gnus-keep-backlog
-If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store
+If you set @code{gnus-keep-backlog} to a number @var{n}, gnus will store
at most @var{n} old articles in a buffer for later re-fetching. If this
-variable is non-@code{nil} and is not a number, Gnus will store
+variable is non-@code{nil} and is not a number, gnus will store
@emph{all} read articles, which means that your Emacs will grow without
bound before exploding and taking your machine down with you. I put
that in there just to keep y'all on your toes.
(@pxref{Decoding Articles}).
@vindex gnus-save-all-headers
-If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
+If @code{gnus-save-all-headers} is non-@code{nil}, gnus will not delete
unwanted headers before saving the article.
@vindex gnus-saved-headers
@vindex gnus-default-article-saver
You can customize the @code{gnus-default-article-saver} variable to make
-Gnus do what you want it to. You can use any of the four ready-made
+gnus do what you want it to. You can use any of the four ready-made
functions below, or you can create your own.
@table @code
@end table
@vindex gnus-split-methods
-You can have Gnus suggest where to save articles by plonking a regexp into
-the @code{gnus-split-methods} alist. For instance, if you would like to
-save articles related to Gnus in the file @file{gnus-stuff}, and articles
-related to VM in @code{vm-stuff}, you could set this variable to something
-like:
+You can have gnus suggest where to save articles by plonking a regexp
+into the @code{gnus-split-methods} alist. For instance, if you would
+like to save articles related to gnus in the file @file{gnus-stuff}, and
+articles related to VM in @code{vm-stuff}, you could set this variable
+to something like:
@lisp
(("^Subject:.*gnus\\|^Newsgroups:.*gnus" "gnus-stuff")
name completion over the results from applying this variable.
This variable is @code{((gnus-article-archive-name))} by default, which
-means that Gnus will look at the articles it saves for an
-@code{Archive-name} line and use that as a suggestion for the file
-name.
+means that gnus will look at the articles it saves for an
+@code{Archive-name} line and use that as a suggestion for the file name.
Here's an example function to clean up file names somewhat. If you have
lots of mail groups called things like
simplish rule: The subjects must be (nearly) identical, except for the
last two numbers of the line. (Spaces are largely ignored, however.)
-For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus
+For example: If you choose a subject called @samp{cat.gif (2/3)}, gnus
will find all the articles that match the regexp @samp{^cat.gif
([0-9]+/[0-9]+).*$}.
(@code{gnus-uu-decode-uu-and-save}).
All this is very much different from how @code{gnus-uu} worked with
-@sc{gnus 4.1}, where you had explicit keystrokes for everything under
+@sc{GNUS 4.1}, where you had explicit keystrokes for everything under
the sun. This version of @code{gnus-uu} generally assumes that you mark
articles in some way (@pxref{Setting Process Marks}) and then press
@kbd{X u}.
@item gnus-uu-user-view-rules-end
@vindex gnus-uu-user-view-rules-end
-This variable is consulted if Gnus couldn't make any matches from the
+This variable is consulted if gnus couldn't make any matches from the
user and default view rules.
@item gnus-uu-user-archive-rules
@cindex viewing files
@cindex pseudo-articles
-After decoding, if the file is some sort of archive, Gnus will attempt
+After decoding, if the file is some sort of archive, gnus will attempt
to unpack the archive and see if any of the files in the archive can be
viewed. For instance, if you have a gzipped tar file @file{pics.tar.gz}
-containing the files @file{pic1.jpg} and @file{pic2.gif}, Gnus will
+containing the files @file{pic1.jpg} and @file{pic2.gif}, gnus will
uncompress and de-tar the main file, and then view the two pictures.
This unpacking process is recursive, so if the archive contains archives
of archives, it'll all be unpacked.
-Finally, Gnus will normally insert a @dfn{pseudo-article} for each
+Finally, gnus will normally insert a @dfn{pseudo-article} for each
extracted file into the summary buffer. If you go to these
``articles'', you will be prompted for a command to run (usually Gnus
will make a suggestion), and then the command will be run.
@vindex gnus-cite-face-list
List of faces used for highlighting citations (@pxref{Faces and Fonts}).
When there are citations from multiple articles in the same message,
-Gnus will try to give each citation from each article its own face.
+gnus will try to give each citation from each article its own face.
This should make it easier to see who wrote what.
@item gnus-supercite-regexp
@item W m
@kindex W m (Summary)
@findex gnus-summary-toggle-mime
-Toggle whether to run the article through @sc{mime} before displaying
+Toggle whether to display the article as @sc{mime} message
(@code{gnus-summary-toggle-mime}).
@item W o
Remove CR (i. e., @samp{^M}s on the end of the lines)
(@code{gnus-article-remove-cr}).
-@item W q
-@kindex W q (Summary)
-@findex gnus-article-de-quoted-unreadable
-Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
-Quoted-Printable is one common @sc{mime} encoding employed when sending
-non-ASCII (i. e., 8-bit) articles. It typically makes strings like
-@samp{déjà vu} look like @samp{d=E9j=E0 vu}, which doesn't look very
-readable to me.
-
@item W f
@kindex W f (Summary)
@cindex x-face
If given a positive numerical prefix, fetch that many articles back into
the ancestry. If given a negative numerical prefix, fetch just that
-ancestor. So if you say @kbd{3 ^}, Gnus will fetch the parent, the
+ancestor. So if you say @kbd{3 ^}, gnus will fetch the parent, the
grandparent and the grandgrandparent of the current article. If you say
-@kbd{-3 ^}, Gnus will only fetch the grandgrandparent of the current
+@kbd{-3 ^}, gnus will only fetch the grandgrandparent of the current
article.
@item A R (Summary)
@section Alternative Approaches
Different people like to read news using different methods. This being
-Gnus, we offer a small selection of minor modes for the summary buffers.
+gnus, we offer a small selection of minor modes for the summary buffers.
@menu
* Pick and Read:: First mark articles and then read them.
@cindex trees
@vindex gnus-use-trees
-If you don't like the normal Gnus summary display, you might try setting
+If you don't like the normal gnus summary display, you might try setting
@code{gnus-use-trees} to @code{t}. This will create (by default) an
additional @dfn{tree buffer}. You can execute all summary mode commands
in the tree buffer.
@item gnus-tree-minimize-window
@vindex gnus-tree-minimize-window
-If this variable is non-@code{nil}, Gnus will try to keep the tree
-buffer as small as possible to allow more room for the other Gnus
+If this variable is non-@code{nil}, gnus will try to keep the tree
+buffer as small as possible to allow more room for the other gnus
windows. If this variable is a number, the tree buffer will never be
higher than that number. The default is @code{t}. Note that if you
have several windows displayed side-by-side in a frame and the tree
Edit the current article (@code{gnus-summary-edit-article}). To finish
editing and make the changes permanent, type @kbd{C-c C-c}
(@kbd{gnus-summary-edit-article-done}). If you give a prefix to the
-@kbd{C-c C-c} command, Gnus won't re-highlight the article.
+@kbd{C-c C-c} command, gnus won't re-highlight the article.
@item B q
@kindex B q (Summary)
@vindex gnus-move-split-methods
@cindex moving articles
-If you move (or copy) articles regularly, you might wish to have Gnus
+If you move (or copy) articles regularly, you might wish to have gnus
suggest where to put the articles. @code{gnus-move-split-methods} is a
variable that uses the same syntax as @code{gnus-split-methods}
(@pxref{Saving Articles}). You may customize that variable to create
@vindex gnus-summary-ignore-duplicates
@item gnus-summary-ignore-duplicates
-When Gnus discovers two articles that have the same @code{Message-ID},
+When gnus discovers two articles that have the same @code{Message-ID},
it has to do something drastic. No articles are allowed to have the
same @code{Message-ID}, but this may happen when reading mail from some
sources. Gnus allows you to customize what happens with this variable.
-If it is @code{nil} (which is the default), Gnus will rename the
+If it is @code{nil} (which is the default), gnus will rename the
@code{Message-ID} (for display purposes only) and display the article as
any other article. If this variable is @code{t}, it won't display the
article---it'll be as if it never existed.
@item H i
@kindex H i (Summary)
@findex gnus-info-find-node
-Go to the Gnus info node (@code{gnus-info-find-node}).
+Go to the gnus info node (@code{gnus-info-find-node}).
@end table
@vindex gnus-kill-summary-on-exit
If you're in the habit of exiting groups, and then changing your mind
about it, you might set @code{gnus-kill-summary-on-exit} to @code{nil}.
-If you do that, Gnus won't kill the summary buffer when you exit it.
+If you do that, gnus won't kill the summary buffer when you exit it.
(Quelle surprise!) Instead it will change the name of the buffer to
something like @samp{*Dead Summary ... *} and install a minor mode
called @code{gnus-dead-summary-mode}. Now, if you switch back to this
@node Duplicate Suppression
@section Duplicate Suppression
-By default, Gnus tries to make sure that you don't have to read the same
+By default, gnus tries to make sure that you don't have to read the same
article more than once by utilizing the crossposting mechanism
(@pxref{Crosspost Handling}). However, that simple and efficient
-approach may not work satisfactory for some users for various
-reasons.
+approach may not work satisfactory for some users for various reasons.
@enumerate
@item
@vindex gnus-save-duplicate-list
If non-@code{nil}, save the list of duplicates to a file. This will
make startup and shutdown take longer, so the default is @code{nil}.
-However, this means that only duplicate articles read in a single Gnus
+However, this means that only duplicate articles read in a single gnus
session are suppressed.
@item gnus-duplicate-list-length
default is @file{~/News/suppression}.
@end table
-If you have a tendency to stop and start Gnus often, setting
+If you have a tendency to stop and start gnus often, setting
@code{gnus-save-duplicate-list} to @code{t} is probably a good idea. If
-you leave Gnus running for weeks on end, you may have it @code{nil}. On
+you leave gnus running for weeks on end, you may have it @code{nil}. On
the other hand, saving the list makes startup and shutdown much slower,
-so that means that if you stop and start Gnus often, you should set
+so that means that if you stop and start gnus often, you should set
@code{gnus-save-duplicate-list} to @code{nil}. Uhm. I'll leave this up
to you to figure out, I think.
The articles are displayed in the article buffer, of which there is only
one. All the summary buffers share the same article buffer unless you
-tell Gnus otherwise.
+tell gnus otherwise.
@menu
* Hiding Headers:: Deciding what headers should be displayed.
-* Using MIME:: Pushing articles through @sc{mime} before reading them.
+* Using MIME:: Pushing to mime articles as @sc{mime} messages.
* Customizing Articles:: Tailoring the look of the articles.
* Article Keymap:: Keystrokes available in the article buffer.
* Misc Article:: Other stuff.
should be a regular expression that matches all lines that you want to
hide. All lines that do not match this variable will remain visible.
-For instance, if you just want to get rid of the @code{References} line
-and the @code{Xref} line, you might say:
+For instance, if you just want to get rid of the @code{References} field
+and the @code{Xref} field, you might say:
@lisp
(setq gnus-ignored-headers "^References:\\|^Xref:")
@end lisp
Any headers that are to remain visible, but are not listed in this
-variable, will be displayed in random order after all the headers listed in this variable.
+variable, will be displayed in random order after all the headers listed
+in this variable.
@findex gnus-article-hide-boring-headers
@vindex gnus-article-display-hook
@code{gnus-article-display-hook}. What this function does depends on
the @code{gnus-boring-article-headers} variable. It's a list, but this
list doesn't actually contain header names. Instead is lists various
-@dfn{boring conditions} that Gnus can check and remove from sight.
+@dfn{boring conditions} that gnus can check and remove from sight.
These conditions are:
@table @code
other naughty stuff in innocent-looking articles.
@vindex gnus-show-mime
-@vindex gnus-show-mime-method
+@vindex gnus-article-display-method-for-mime
@vindex gnus-strict-mime
-@findex metamail-buffer
+@findex gnus-article-display-mime-message
Gnus handles @sc{mime} by pushing the articles through
-@code{gnus-show-mime-method}, which is @code{metamail-buffer} by
-default. This function calls the external @code{metamail} program to
-actually do the work. One common problem with this program is that is
-thinks that it can't display 8-bit things in the Emacs buffer. To tell
-it the truth, put something like the following in your
-@file{.bash_profile} file. (You do use @code{bash}, don't you?)
-
-@example
-export MM_CHARSET="iso-8859-1"
-@end example
-
-For more information on @code{metamail}, see its manual page.
+@code{gnus-article-display-method-for-mime}, which is
+@code{gnus-article-display-mime-message} by default. This function
+calls the SEMI MIME-View program to actually do the work. For more
+information on SEMI MIME-View, see its manual page (however it is not
+existed yet, sorry).
Set @code{gnus-show-mime} to @code{t} if you want to use
@sc{mime} all the time. However, if @code{gnus-strict-mime} is
set, then you'll see some unfortunate display glitches in the article
buffer. These can't be avoided.
-It might be best to just use the toggling functions from the summary
-buffer to avoid getting nasty surprises. (For instance, you enter the
-group @samp{alt.sing-a-long} and, before you know it, @sc{mime} has
-decoded the sound file in the article and some horrible sing-a-long song
-comes screaming out your speakers, and you can't find the volume
-button, because there isn't one, and people are starting to look at you,
-and you try to stop the program, but you can't, and you can't find the
-program to control the volume, and everybody else in the room suddenly
-decides to look at you disdainfully, and you'll feel rather stupid.)
+In GNUS or Gnus, it might be best to just use the toggling functions
+from the summary buffer to avoid getting nasty surprises. (For instance,
+you enter the group @samp{alt.sing-a-long} and, before you know it,
+@sc{mime} has decoded the sound file in the article and some horrible
+sing-a-long song comes screaming out your speakers, and you can't find
+the volume button, because there isn't one, and people are starting to
+look at you, and you try to stop the program, but you can't, and you
+can't find the program to control the volume, and everybody else in the
+room suddenly decides to look at you disdainfully, and you'll feel
+rather stupid.)
Any similarity to real events and people is purely coincidental. Ahem.
+To avoid such kind of situation, gnus stops to use
+@code{metamail-buffer}. So now, you can set @code{gnus-show-mime} to
+non-@code{nil} every-time, then you can push button in the article
+buffer when there are nobody else.
+
@node Customizing Articles
@section Customizing Articles
by pressing @kbd{C-c C-c}. @xref{Top, , Top, message, The Message
Manual}. If you are in a foreign news group, and you wish to post the
article using the foreign server, you can give a prefix to @kbd{C-c C-c}
-to make Gnus try to post using the foreign server.
+to make gnus try to post using the foreign server.
@menu
* Mail:: Mailing and replying.
* Post:: Posting and following up.
* Posting Server:: What server should you post via?
* Mail and Post:: Mailing and posting at the same time.
-* Archived Messages:: Where Gnus stores the messages you've sent.
+* Archived Messages:: Where gnus stores the messages you've sent.
* Posting Styles:: An easier way to specify who you are.
* Drafts:: Postponing messages and rejected messages.
* Rejected Articles:: What happens if the server doesn't like your article?
dealing with @sc{soup} packets and the like where one is apt to send the
same packet multiple times.) This variable says what the name of this
history file is. It is @file{~/News/Sent-Message-IDs} by default. Set
-this variable to @code{nil} if you don't want Gnus to keep a history
+this variable to @code{nil} if you don't want gnus to keep a history
file.
@item gnus-sent-message-ids-length
@vindex gnus-post-method
-It can be quite complicated. Normally, Gnus will use the same native
+It can be quite complicated. Normally, gnus will use the same native
server. However. If your native server doesn't allow posting, just
reading, you probably want to use some other server to post your
(extremely intelligent and fabulously interesting) articles. You can
the ``current'' server for posting.
If you give a zero prefix (i.e., @kbd{C-u 0 C-c C-c}) to that command,
-Gnus will prompt you for what method to use for posting.
+gnus will prompt you for what method to use for posting.
You can also set @code{gnus-post-method} to a list of select methods.
-If that's the case, Gnus will always prompt you for what method to use
+If that's the case, gnus will always prompt you for what method to use
for posting.
Finally, if you want to always post using the same select method as
is the default.
@vindex gnus-message-archive-method
-@code{gnus-message-archive-method} says what virtual server Gnus is to
+@code{gnus-message-archive-method} says what virtual server gnus is to
use to store sent messages. The default is:
@lisp
group. (If you want to disable storing for just one particular message,
you can just remove the @code{Gcc} header that has been inserted.) The
archive group will appear in the group buffer the next time you start
-Gnus, or the next time you press @kbd{F} in the group buffer. You can
+gnus, or the next time you press @kbd{F} in the group buffer. You can
enter it and read the articles in it just like you'd read any other
group. If the group gets really big and annoying, you can simply rename
if (using @kbd{G r} in the group buffer) to something
other day, and send it when you feel its finished.
Well, don't worry about it. Whenever you start composing a message of
-some sort using the Gnus mail and post commands, the buffer you get will
+some sort using the gnus mail and post commands, the buffer you get will
automatically associate to an article in a special @dfn{draft} group.
If you save the buffer the normal way (@kbd{C-x C-s}, for instance), the
article will be saved there. (Auto-save files also go to the draft
@emph{there be demons}. Perhaps you have included too much cited text.
Perhaps the disk is full. Perhaps the server is down.
-These situations are, of course, totally beyond the control of Gnus.
+These situations are, of course, totally beyond the control of gnus.
(Gnus, of course, loves the way you look, always feels great, has angels
fluttering around inside of it, doesn't care about how much cited text
-you include, never runs full and never goes down.) So Gnus saves these
+you include, never runs full and never goes down.) So gnus saves these
articles until some later time when the server feels better.
The rejected articles will automatically be put in a special draft group
@end table
-
@findex nnfolder-generate-active-file
@kindex M-x nnfolder-generate-active-file
If you have lots of @code{nnfolder}-like files you'd like to read with
If the search engine changes its output substantially, @code{nnweb}
won't be able to parse it and will fail. One could hardly fault the Web
-providers if they were to do this---their @emph{raison d'être} is to
+providers if they were to do this---their @emph{raison d'\e,Aj\e(Btre} is to
make money off of advertisements, not to provide services to the
community. Since @code{nnweb} washes the ads off all the articles, one
might think that the providers might be somewhat miffed. We'll see.
@kindex J S (Agent Group)
@findex gnus-group-send-drafts
Send all sendable messages in the draft group
-(@code{gnus-agent-fetch-session}). @xref{Drafts}
+(@code{gnus-agent-send-draft}). @xref{Drafts}
@item J a
@kindex J a (Agent Group)
Score on the head.
@item t
-Score on thead.
+Score on thread.
@end table
@item !
@itemx not
-@itemx ¬
+@itemx \e,A,\e(B
This logical operator only takes a single argument. It returns the
logical negation of the value of its argument.
which defaults to the @samp{SAVEDIR} environment variable, or
@file{~/News/} if that variable isn't set.
-Note that Gnus is mostly loaded when the @file{.gnus.el} file is read.
+Note that gnus is mostly loaded when the @file{.gnus.el} file is read.
This means that other directory variables that are initialized from this
variable won't be set properly if you set this variable in
@file{.gnus.el}. Set this variable in @file{.emacs} instead.
Kevin Davidson---came up with the name @dfn{ding}, so blame him.
@item
-François Pinard---many, many interesting and thorough bug reports, as
+Fran\e,Ag\e(Bois Pinard---many, many interesting and thorough bug reports, as
well as autoconf support.
@end itemize
Christopher Davis,
Andrew Eskilsson,
Kai Grossjohann,
-David Kågedal,
+David K\e,Ae\e(Bgedal,
Richard Pieri,
Fabrice Popineau,
Daniel Quinlan,
Gunnar Horrigmo,
Richard Hoskins,
Brad Howes,
-François Felix Ingrand,
+Fran\e,Ag\e(Bois Felix Ingrand,
Ishikawa Ichiro, @c Ishikawa
Lee Iverson,
Iwamuro Motonori, @c Iwamuro
@end example
@item
- tanken var at når du bruker `gnus-startup-file' som prefix (FOO) til å lete
-opp en fil FOO-SERVER, FOO-SERVER.el, FOO-SERVER.eld, kan du la den være en
+ tanken var at n\e,Ae\e(Br du bruker `gnus-startup-file' som prefix (FOO) til ilete
+opp en fil FOO-SERVER, FOO-SERVER.el, FOO-SERVER.eld, kan du la den v\e,Af\e(Bre en
liste hvor du bruker hvert element i listen som FOO, istedet. da kunne man
hatt forskjellige serveres startup-filer forskjellige steder.
for sci? first the sci.something? then sci.somethingelse?...
@item
-Ja, det burde være en måte å si slikt. Kanskje en ny variabel?
-`gnus-use-few-score-files'? Så kunne score-regler legges til den
+Ja, det burde v\e,Af\e(Bre en m\e,Ae\e(Bte \e,Ae\e(B si slikt. Kanskje en ny variabel?
+`gnus-use-few-score-files'? S\e,Ae\e(B kunne score-regler legges til den
"mest" lokale score-fila. F. eks. ville no-gruppene betjenes av
"no.all.SCORE", osv.
@item
gnus-article-hide-pgp
-Selv ville jeg nok ha valgt å slette den dersom teksten matcher
+Selv ville jeg nok ha valgt islette den dersom teksten matcher
@example
"\\(This\s+\\)?[^ ]+ has been automatically signed by"
@end example
@item
With dummy roots, `^' and then selecing the first article
-in any other dummy thread will make Gnus highlight the
+in any other dummy thread will make gnus highlight the
dummy root instead of the first article.
@item
\input texinfo @c -*-texinfo-*-
@setfilename message-ja
-@settitle Message 5.6.45 Manual
+@settitle Message 5.6.33 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Message 5.6.45 Manual
+@title Message 5.6.22 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 5.6.45 \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 5.6.22 \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