+++ /dev/null
-1998-06-24 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.8.0 (Toyama) released.
-
- * SEMI-CFG: Modify for FLIM 1.6.0.
-
- * README.en (Required environment): Modify for FLIM 1.6.0.
-
-1998-06-24 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el:
- - Abolish function `mime-raw-find-entity-from-node-id',
- `mime-raw-find-entity-from-number'.
- - Move function `mime-entity-parent' to mime.el of FLIM.
- - Abolish variable `mime-view-uuencode-encoding-name-list'.
- - Move function `mime-entity-uu-filename' and
- `mime-entity-filename' to mime.el of FLIM.
- (mime-preview-follow-current-entity): Use function
- `mime-find-entity-from-node-id' instead of
- `mime-raw-find-entity-from-node-id'.
- (mime-preview-move-to-upper): Don't use
- `mime-raw-find-entity-from-node-id'.
-
- * mime-pgp.el (mime-verify-application/pgp-signature): Don't use
- `mime-raw-find-entity-from-node-id'.
- (mime-decrypt-application/pgp-encrypted): Likewise.
-
- * mime-view.el, mime-play.el (mime-entity-safe-filename): Use
- `mime-read-field' instead of `mime-entity-read-field'.
-
- * mime-partial.el
- (mime-combine-message/partial-pieces-automatically): Use
- `mime-read-field' instead of `mime-entity-read-field'.
-
- * mime-bbdb.el (mime-bbdb/update-record): Use `mime-fetch-field'
- and `mime-read-field' instead of `mime-entity-fetch-field' and
- `mime-entity-read-field'.
-
-1998-06-23 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-display-message): Use window of
- preview-buffer or preview-buffer to display preview-buffer.
- (mime-view-buffer): fixed.
- (mime-view-mode): fixed.
-
- * MIME-View-API-ja.ol: Delete MIME-View-API-ja.ol.
-
-1998-06-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * NEWS (Changes in SEMI 1.8): New chapter.
-
-1998-06-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Abolish external x-face viewer.
-
-1998-06-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * semi-def.el: Abolish function `tm:set-fields', `tm:add-fields'
- and `tm:delete-fields'.
-
- * mime-partial.el: Abolish variable
- `mime-view-partial-message-method-alist' and function
- `mime-view-partial-message'.
- (mime-combine-message/partial-pieces-automatically): Use
- `request-partial-message-method' in acting-situation.
-
-1998-06-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-display-message): Delete unnecessary
- `mime-parse-buffer'.
-
-\f
-1998-06-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.7.1 (Higashi-Toyama) released.
-
- * README.en (Required environment): Delete description about
- `enable-multibyte-characters'; modify for FLIM 1.5.0.
-
-1998-06-22 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-
- * mime-edit.el (mime-content-types): Add "url" access-type and
- "subject" parameter of "mail-server" access-type to
- message/external-body media-type.
- (mime-edit-define-menu-for-xemacs): Doc-string fix.
-
-1998-06-22 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-
- * SEMI-CFG: Support run-in-place installation of BBDB and
- Emacs/W3.
-
-1998-06-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Don't require `std11'.
-
- * mime-view.el: Require `mime' instead of `mime-lib'.
- (mime-entity-filename): Don't use `std11-strip-quoted-string'.
-
- * mime-edit.el: Don't require `eword-encode'.
-
-1998-06-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-partial.el
- (mime-combine-message/partial-pieces-automatically): Fixed.
-
- * mime-pgp.el (mime-view-application/pgp): Use function
- `mime-entity-representation-type'.
-
- * mime-play.el (mime-view-message/rfc822): Use function
- `mime-entity-representation-type'.
- (mime-store-message/partial-piece): `mime-entity-body-start' and
- `mime-entity-body-end'.
-
- * mime-text.el (mime-text-insert-decoded-body): Use function
- `mime-entity-cooked-p'.
-
- * mime-view.el (mime-entity-representation-type): New function.
- (mime-entity-cooked-p): New function.
- (mime-display-entity): Use function `mime-entity-cooked-p'.
-
-1998-06-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el (mime-text-insert-decoded-body): Use
- `mime-entity-content'.
-
- * mime-image.el (mime-display-image): Use `mime-entity-content'.
-
-1998-06-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-entity-safe-filename): New implementation.
-
-1998-06-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el (mime-text-insert-decoded-body): Delete unnecessary
- `save-restriction'.
-
-1998-06-20 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-
- * semi-def.el: Require 'custom.
-
-1998-06-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Don't require `mime-parse'.
-
-1998-06-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-CFG: - Modify for FLIM 1.5.0.
- - Don't signal error if tm is found in load-path.
-
-1998-06-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-save-content): Use `mime-entity-body-start'
- and `mime-entity-body-end'.
-
-1998-06-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-view-application/pgp): fixed.
- (mime-verify-application/pgp-signature): Use
- `mime-message-structure' instead of `mime-raw-message-info'.
- (mime-decrypt-application/pgp-encrypted): Use
- `mime-message-structure' instead of `mime-raw-message-info'.
-
- * mime-view.el (mime-display-message): Use `mime-parse-buffer';
- abolish variable `mime-raw-message-info'; use
- `mime-message-structure' instead of `mime-raw-message-info'.
-
-1998-06-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-bbdb.el (mime-bbdb/update-record): Use
- `mime-entity-fetch-field' and `mime-entity-read-field'.
-
-1998-06-19 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-
- * SEMI-CFG: Require 'cl first.
-
-\f
-1998-06-18 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.7.0 (Mizuhashi) released.
-
-1998-06-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el, mime-view.el, semi-def.el: Rename
- `mime-module-version' to `mime-user-interface-version'.
-
- * mime-parse.el, SEMI-ELS: Move mime-parse.el to FLIM layer.
-
-1998-06-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * semi-setup.el (call-after-loaded): Moved from semi-def.el.
-
- * semi-def.el: Move `call-after-loaded' to semi-setup.el.
-
-1998-06-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-insert-entity-button): Change interface.
-
-1998-06-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-entity-filename): Moved from mime-play.el.
- (mime-view-entity-title): Use `mime-entity-filename'.
-
- * mime-play.el: Move `mime-entity-filename' to mime-view.el.
-
-1998-06-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-entity-filename): New function; abolish
- `mime-raw-get-original-filename'.
- (mime-entity-safe-filename): New function; abolish
- `mime-raw-get-filename'.
- (mime-activate-mailcap-method): Use `mime-entity-safe-filename'.
- (mime-save-content): Use `mime-entity-safe-filename'.
- (mime-detect-content): Use `mime-entity-safe-filename'.
-
- * mime-view.el (mime-entity-uu-filename): New function; abolish
- `mime-raw-get-uu-filename'.
-
-1998-06-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-entity-title): Renamed from
- `mime-raw-get-subject'; use `mime-entity-read-field'.
-
-1998-06-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * NEWS (Changes in SEMI 1.7): New chapter.
- (Changes in SEMI 1.6): Add description of entity-detection.
-
-1998-06-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Rename `mime-view-following-method-alist' to
- `mime-preview-following-method-alist'.
-
-1998-06-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * semi-setup.el, mime-pgp.el: Rename
- `mime-method-to-add-application/pgp-keys' to
- `mime-add-application/pgp-keys'.
-
- * semi-setup.el, mime-pgp.el: Rename
- `mime-method-to-decrypt-application/pgp-encrypted' to
- `mime-decrypt-application/pgp-encrypted'.
-
- * semi-setup.el, mime-pgp.el: Rename
- `mime-method-to-verify-application/pgp-signature' to
- `mime-verify-application/pgp-signature'.
-
- * semi-setup.el, mime-pgp.el: Rename
- `mime-method-to-verify-multipart/signed' to
- `mime-verify-multipart/signed'.
-
- * semi-setup.el, mime-pgp.el: Rename
- `mime-method-for-application/pgp' to `mime-view-application/pgp'.
-
- * SEMI-naming.ol: New file.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-partial.el: Rename
- `mime-method-to-combine-message/partial-pieces' to
- `mime-combine-message/partial-pieces-automatically'.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el, mime-view.el: Rename
- `mime-method-to-display-caesar' to `mime-view-caesar'.
-
- * mime-play.el, mime-view.el: Rename
- `mime-method-to-display-message/external-ftp' to
- `mime-view-message/external-ftp'.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el, mime-partial.el, mime-play.el: Rename
- `mime-method-to-store-message/partial' to
- `mime-store-message/partial-piece'.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el, mime-view.el: Rename
- `mime-method-to-display-message/rfc822' to
- `mime-view-message/rfc822'.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el, mime-view.el: Rename `mime-method-to-detect' to
- `mime-detect-content'.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-display-entity): Abolish body-filter support.
-
- * mime-play.el, mime-view.el: Rename `mime-method-to-save' to
- `mime-save-content'.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-activate-mailcap-method): Fixed.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-image.el (mime-display-image): New function; abolish
- function `mime-preview-filter-for-image'.
-
- * mime-image.el: Rename `mime-view-content-header-filter-hook' to
- `mime-display-header-hook'.
-
- * mime-view.el (mime-display-entity): Run
- `mime-display-header-hook'.
-
- * mime-text.el, mime-view.el: Rename `mime-preview-text/enriched'
- to `mime-display-text/enriched'.
-
- * mime-text.el, mime-view.el: Rename `mime-preview-text/richtext'
- to `mime-display-text/richtext'.
-
- * mime-text.el, mime-view.el: Rename `mime-preview-text/plain' to
- `mime-display-text/plain'.
-
- * mime-view.el (mime-display-multipart/mixed): Renamed from
- `mime-preview-multipart/mixed'.
-
- * mime-view.el (mime-display-multipart/alternative): Renamed from
- `mime-preview-multipart/alternative'.
-
- * mime-view.el (mime-display-message/partial-button): Renamed from
- `mime-preview-message/partial-button'.
-
- * mime-view.el (mime-display-entity): Renamed from
- `mime-view-display-entity'; change interface.
- (mime-display-message): Renamed from `mime-view-display-message'.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * README.en (Required environment): Modify for FLIM 1.4.0.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Move function `mime-entity-number' to FLIM layer.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-header-presentation-method-alist): New
- variable; abolish variable
- `mime-view-content-header-filter-alist'; abolish function
- `mime-view-cut-header'; abolish variable
- `mime-view-ignored-field-regexp'.
- (mime-view-display-entity): Use
- `mime-header-presentation-method-alist'.
-
- * mime-parse.el: Move definition of structure `mime-entity' to
- FLIM layer.
-
-1998-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Change order of `mime-entity'.
-
-\f
-1998-06-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.6.0 (Namerikawa) released.
-
-1998-06-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view-ja.texi, mime-view-ja.sgml: New files.
-
- * mime-view.el (mime-view-mode): Fix DOC-string.
-
-1998-06-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-file-content-type-alist): Renamed from
- `mime-file-type-regexp-type-subtype-alist'.
-
-1998-06-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * NEWS: Add description about
- `mime-preview-over-to-{previous|next}-method-alist'.
-
- * mime-view.el (mime-preview-over-to-previous-method-alist):
- Add DOC-string.
- (mime-preview-over-to-next-method-alist): Add DOC-string.
-
- * mime-view.el (mime-preview-over-to-previous-method-alist):
- Renamed from `mime-view-over-to-previous-method-alist'.
- (mime-preview-over-to-next-method-alist): Renamed from
- `mime-view-over-to-next-method-alist'.
-
-1998-06-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-w3.el (mime-save-background-color): Fixed.
-
- * mime-view.el (mime-acting-condition): Set up
- `mime-method-to-detect' for application/octet-stream in "play"
- mode.
-
- * mime-play.el (mime-file-type-regexp-type-subtype-alist): New
- variable.
- (mime-method-to-detect): New function.
-
-1998-06-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-sort-situation): Modify for
- Content-Disposition information.
-
-1998-06-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Abolish variable `mime-view-show-summary-method'
- and function `mime-preview-show-summary'.
-
-1998-06-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-entity-situation): Add information of
- Content-Disposition.
-
-1998-06-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * MIME-View-API-ja.ol (mime-preview-buffer): Add description about
- `mime-preview-original-major-mode'.
-
- * mime-view.el (mime-preview-original-major-mode): Modify
- DOC-string.
-
- * NEWS: Add description about abolishment of tm-compatible
- external method support.
-
- * mime-play.el (mime-raw-play-entity): Abolish tm-compatible
- external method support; abolish function
- `mime-activate-external-method' and
- `mime-make-external-method-args'.
-
-1998-06-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-activate-mailcap-method): Use
- `mime-entity-body-start'.
-
- * mime-play.el (mime-activate-external-method): Change interface.
-
- * mime-play.el (mime-activate-mailcap-method): Change interface.
-
-1998-06-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * MIME-View-API-ja.ol (mime-preview-buffer): Delete description
- about text-property `mime-view-raw-buffer'.
-
- * mime-play.el (mime-preview-play-current-entity): Don't refer
- text-property `mime-view-raw-buffer'.
-
- * mime-view.el (mime-view-display-entity): Don't set up
- text-property `mime-view-raw-buffer'.
-
-1998-06-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * MIME-View-API-ja.ol: Abolish description about
- `mime-preview-original-major-mode'.
-
- * NEWS (Changes in SEMI 1.6): New chapter.
-
- * TODO (multipart/related support): New item.
-
-1998-06-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * NEWS: Add description about mime-w3.el.
-
-1998-06-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-w3.el (mime-save-background-color): New macro.
- (mime-preview-text/html): Use `mime-save-background-color'.
-
-1998-06-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: Abolish variable `mime-edit-signing-type' and
- `mime-edit-encrypting-type'.
- (mime-edit-process-multipart-1): Separate "signed" to "pgp-signed"
- and "kazu-signed"; separate "encrypted" to "pgp-encrypted" and
- "kazu-encrypted".
- (mime-edit-enclose-signed-region): Renamed from
- `mime-edit-enclose-pgp-signed-region'.
- (mime-edit-enclose-pgp-encrypted-region): Renamed from
- `mime-edit-enclose-encrypted-region'.
- (mime-edit-enclose-kazu-signed-region): New function.
- (mime-edit-enclose-kazu-encrypted-region): New function.
- (mime-edit-set-sign): Don't refer `mime-edit-signing-type'.
- (mime-edit-set-encrypt): Don't refer `mime-edit-encrypting-type'.
-
-1998-06-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-sign-pgp-kazu): Abolish unused local
- variable.
- (mime-edit-encrypt-pgp-kazu): Abolish unused local variables.
-
-1998-06-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-method-for-application/pgp): Change interface.
- (mime-method-to-verify-multipart/signed): Change interface.
- (mime-method-to-verify-application/pgp-signature): Change
- interface.
- (mime-method-to-decrypt-application/pgp-encrypted): Change
- interface.
- (mime-method-to-add-application/pgp-keys): Change interface.
-
- * mime-partial.el (mime-method-to-combine-message/partial-pieces):
- Change interface.
-
- * mime-play.el (mime-raw-play-entity): Change interface of
- internal-method.
- (mime-method-to-save): Change interface.
- (mime-method-to-display-message/rfc822): Change interface.
- (mime-method-to-store-message/partial): Change interface.
- (mime-method-to-display-message/external-ftp): Change interface.
- (mime-method-to-display-caesar): Change interface.
-
-1998-06-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-normalize-body): Use
- `mime-charset-type-list' directly; abolish local variable
- `mime-edit-charset-default-encoding-alist' and function
- `mime-make-charset-default-encoding-alist'.
- (mime-edit-toggle-transfer-level): Don't set up
- `mime-edit-charset-default-encoding-alist'.
-
-1998-06-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-message): Set up
- `mime-raw-message-info'.
- (mime-view-buffer): New function.
- (mime-view-mode): Don't set up `mime-raw-message-info'.
-
-1998-06-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-charset-type-list): Use base64 for cn-gb2312
- and gb2312.
- (mime-edit-normalize-body): If encoding is not specified for
- charset, use quoted-printable or 8bit for mime-transfer-level is 7
- or 8.
-
- * mime-edit.el (mime-charset-type-list): Add `shift_jis'.
-
-1998-06-10 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-message): Use
- `mime-maybe-hide-echo-buffer'.
- (mime-view-mode): Don't use `mime-maybe-hide-echo-buffer'.
-
- * mime-view.el (mime-view-display-message): Move point to top of
- body; run `mime-view-mode-hook'.
- (mime-view-mode): Don't move point; don't run
- `mime-view-mode-hook'.
-
- * mime-view.el (mime-view-display-message): Add new optional
- argument `default-keymap-or-function'.
- (mime-view-mode): Modify for `mime-view-display-message'.
-
- * mime-view.el (mime-view-display-message): Add new optional
- argument `mother'; set to `mime-mother-buffer'.
- (mime-view-mode): Modify for `mime-view-display-message'.
-
-1998-06-10 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-mc.el: Use `eval-and-compile' to load "mc-pgp".
-
- * mime-view.el (mime-preview-multipart/mixed): Modify for
- `mime-view-display-entity'; don't refer `mime-raw-buffer'.
- (mime-preview-multipart/alternative): Modify for
- `mime-view-display-entity'; don't refer `mime-raw-buffer'.
- (mime-view-display-entity): Change interface to abolish argument
- for raw-buffer; don't refer `mime-raw-buffer'.
- (mime-view-display-message): Abolish variable
- `mime-preview-original-major-mode'; modify for
- `mime-view-display-entity'.
- (mime-preview-original-major-mode): New implementation; add
- optional argument `recursive'.
- (mime-preview-follow-current-entity): Modify for
- `mime-preview-original-major-mode'.
- (mime-preview-move-to-next): Use function
- `mime-preview-original-major-mode'.
- (mime-preview-scroll-up-entity): Use function
- `mime-preview-original-major-mode'.
- (mime-preview-scroll-down-entity): Use function
- `mime-preview-original-major-mode'.
- (mime-preview-quit): Use function
- `mime-preview-original-major-mode'.
- (mime-preview-show-summary): Use function
- `mime-preview-original-major-mode'.
-
- * mime-view.el (mime-view-display-message): New function; abolish
- function `mime-view-setup-buffers'.
- (mime-view-mode): Use `mime-view-display-message'.
-
-1998-06-10 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-raw-play-entity): Use
- `mime-entity-situation'.
-
- * mime-view.el (mime-entity-situation): New function.
- (mime-preview-multipart/alternative): Use `mime-entity-situation'.
- (mime-view-display-entity): Use `mime-entity-situation'.
-
-1998-06-10 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-enclose-region-internal): Abolish unused
- local variable.
-
-1998-06-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * MIME-View-API-ja.ol (entity): Add description of
- `mime-entity-number'.
-
- * mime-play.el (mime-method-to-display-caesar): Use
- `mime-entity-number'.
-
- * mime-parse.el (mime-entity-number): New function.
-
-1998-06-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * MIME-View-API-ja.ol (entity-button): Modify description of
- `mime-view-insert-entity-button'.
-
- * mime-view.el (mime-view-insert-entity-button): Change interface.
- (mime-view-display-entity): Modify for
- `mime-view-insert-entity-button'.
-
-1998-06-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * MIME-View-API-ja.ol (entity-button): Modify description of
- `mime-view-entity-button-visible-p'.
-
- * mime-view.el (mime-view-entity-button-visible-p): Change
- interface.
- (mime-view-display-entity): Modify for
- `mime-view-entity-button-visible-p'.
-
-1998-06-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * MIME-View-API-ja.ol: Add description of `mime-entity-parent' and
- abolish description `mime-raw-entity-parent'.
-
- * mime-view.el (mime-entity-parent): New function; abolish
- `mime-raw-entity-parent'.
- (mime-view-entity-button-visible-p): Use `mime-entity-parent'
- instead of `mime-raw-entity-parent'.
-
-\f
-1998-06-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.5.4 (Higashi-Namerikawa) released.
-
- * mime-edit.el (mime-edit-normalize-body): Abolish unused local
- variable.
-
-1998-06-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-translate-single-part-tag): Add new
- argument `boundary'.
- (mime-edit-translate-region): Modify for
- `mime-edit-translate-single-part-tag'.
-
-1998-06-08 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-w3.el (mime-put-keymap-region): New macro.
- (mime-preview-text/html): Use macro `mime-put-keymap-region'.
-
-1998-06-08 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-ELS (semi-modules-to-compile): Add 'mime-w3 if w3 is found.
-
- * semi-setup.el (mime-setup-enable-inline-html): New variable; add
- setting for mime-w3.el conditionally.
-
- * mime-w3.el: New module.
-
-1998-06-08 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-preview-multipart/alternative): Fix typo.
-
-1998-06-08 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-x-emacs-value): Check
- `enable-multibyte-characters' is bound or not.
-
-\f
-1998-06-08 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.5.3 (Uozu) released.
-
- * NEWS (`pgp-elkins' -> `pgp-mime'): New section.
-
- * mime-edit.el: Rename `pgp-elkins' -> `pgp-mime'.
-
-1998-06-08 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-sign-pgp-elkins): Abolish unused local
- variable.
- (mime-edit-encrypt-pgp-elkins): Abolish unused local variable.
-
-1998-06-08 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el (mime-parse-multipart): fixed.
-
-\f
-1998-06-08 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.5.2 (Kurobe) released.
-
- * mime-play.el (mime-delq-null-situation): New function.
- (mime-raw-play-entity): Use `mime-delq-null-situation'.
-
-1998-06-08 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * TODO (Better implementation for multipart/alternative): done.
-
- * NEWS (type-subtype-score): New section.
-
-1998-06-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-raw-message-info): Modify DOC-string.
-
- * MIME-View-API-ja.ol: Modify for SEMI 1.5.
-
-1998-06-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-touched-flag): Define by `defvar'.
- (mime-edit-mode): Don't check `mime-edit-touched-flag' is bound or
- not.
-
- * mime-edit.el (mime-edit-find-inmost): Abolish unused local
- variables.
-
-1998-06-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el (mime-text-insert-decoded-body): Don't refer
- `mime-raw-buffer'.
-
- * mime-parse.el: Change format of `mime-entity' to add `buffer'.
-
-1998-06-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el: When it is compiled, require 'bbdb or define
- `bbdb-buffer-name' to avoid compiler warning.
-
- (mime-method-to-display-caesar): Abolish unused local variable.
-
- Use `eval-buffer' to eval contents of
- `mime-acting-situation-examples-file'.
-
-1998-06-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el: Move definition of variable
- `mime-raw-representation-type' to mime-view.el.
-
- * mime-view.el: Move definition of variable
- `mime-raw-representation-type' from mime-text.el.
- (mime-raw-message-info): Modify DOC-string.
-
- * MIME-View-API-ja.ol: New file.
-
-\f
-1998-06-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.5.1 (Ikuji) released.
-
- * mime-view.el (mime-raw-message-info): Fix typo.
- (mime-view-type-subtype-score-alist): New variable.
- (mime-preview-multipart/alternative): New function; set up for
- `mime-preview-condition'.
- (mime-view-display-entity): Add optional argument `situation'.
-
-1998-06-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-entity): Call
- body-presentation-method to display multipart if it is function.
-
- * NEWS: Add news about SEMI 1.5.
-
-1998-06-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-preview-multipart/mixed): New function.
- (mime-view-display-entity): Use `mime-preview-multipart/mixed'.
-
-1998-06-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-entity): Display entity-button
- in body if button is invisible and body-presentation-method is not
- found.
-
-\f
-1998-06-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.5.0 (Nishi-Ny\e-Dþzen)\e-A released.
-
- * README.en (Required environment): Modify for FLIM 1.3.0.
-
-1998-06-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-raw-write-region): New implementation; refer
- `mime-raw-representation-type' or
- `mime-raw-representation-type-alist' instead of
- `mime-raw-buffer-coding-system-alist'.
-
- * mime-view.el: Abolish variable
- `mime-raw-buffer-coding-system-alist'.
-
-1998-06-02 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-method-for-application/pgp): Use
- `mime-raw-representation-type-alist' instead of
- `mime-text-decoder-alist'; set up to
- `mime-raw-representation-type' instead of `mime-text-decoder'.
-
- * mime-play.el (mime-method-to-display-message/rfc822): Use
- `mime-raw-representation-type-alist' instead of
- `mime-text-decoder-alist'; set up to
- `mime-raw-representation-type' instead of `mime-text-decoder'.
- (mime-method-to-display-caesar): Use
- `mime-text-insert-decoded-body'.
-
- * mime-text.el (mime-raw-representation-type): New variable;
- abolish `mime-text-decoder'.
- (mime-text-insert-decoded-body): Change interface; refer
- `mime-raw-representation-type' or
- `mime-raw-representation-type-alist' instead of
- `mime-text-decoder' or `mime-text-decoder-alist'; abolish function
- `mime-text-decode-buffer' and `mime-text-decode-buffer-maybe'.
- (mime-preview-text/plain): Modify for new interface of
- `mime-text-insert-decoded-body'.
- (mime-preview-text/richtext): Modify for new interface of
- `mime-text-insert-decoded-body'.
- (mime-preview-text/enriched): Modify for new interface of
- `mime-text-insert-decoded-body'.
-
- * mime-view.el (mime-raw-representation-type-alist): New variable;
- abolish `mime-text-decoder-alist'.
-
-1998-05-31 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el (mime-parse-multipart): fixed.
-
-\f
-1998-06-01 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.4.6 (Ny\e-Dþzen)\e-A released.
-
-1998-05-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el (mime-text-insert-decoded-body): New function;
- abolish 'mime-text-decode-body.
- (mime-preview-text/plain): Use 'mime-text-insert-decoded-body.
- (mime-preview-text/richtext): Use 'mime-text-insert-decoded-body.
- (mime-preview-text/enriched): Use 'mime-text-insert-decoded-body.
-
-1998-05-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-preview-condition): Set up for
- 'mime-preview-text/enriched instead of
- 'mime-preview-filter-for-text/enriched.
-
- * mime-text.el (mime-preview-text/enriched): New function; abolish
- 'mime-preview-filter-for-text/enriched.
-
-1998-05-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-preview-condition): Set up for
- 'mime-preview-text/richtext instead of
- 'mime-preview-filter-for-text/richtext.
-
- * mime-text.el (mime-preview-text/richtext): New function; abolish
- 'mime-preview-filter-for-text/richtext.
-
-1998-05-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Rename 'mime-view-insert-message/partial-button to
- 'mime-preview-message/partial-button.
-
-1998-05-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-preview-condition): Set up for
- 'mime-preview-text/plain instead of
- 'mime-preview-filter-for-text/plain.
- (mime-view-insert-message/partial-button): Change interface for
- new spec of body-presentation-method.
- (mime-view-display-entity): Change interface of
- body-presentation-method.
-
- * mime-text.el (mime-preview-text/plain): New function; abolish
- 'mime-preview-filter-for-text/plain.
-
-1998-05-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el (make-mime-entity): Change format.
- (mime-entity-header-start): New function.
- (mime-entity-header-end): New function.
- (mime-entity-body-start): New function.
- (mime-entity-body-end): New function.
- (mime-entity-content-type): Modify for new format.
- (mime-entity-content-disposition): Modify for new format.
- (mime-entity-encoding): Modify for new format.
- (mime-entity-children): Modify for new format.
- (mime-entity-point-min): Change to alias of
- 'mime-entity-header-start.
- (mime-entity-point-max): Change to alias of 'mime-entity-body-end.
- (mime-parse-multipart): Modify for 'make-mime-entity.
- (mime-parse-message): Modify for 'make-mime-entity.
-
-1998-05-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el (mime-parse-multipart): Change interface; abolish
- local variable 'beg and 'end.
- (mime-parse-message): Modify for 'mime-parse-multipart.
-
-1998-05-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el (mime-parse-multipart): Use
- 'mime-content-type-parameter.
-
-1998-05-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el (mime-parse-Content-Transfer-Encoding): New
- function.
- (mime-read-Content-Transfer-Encoding): Use function
- 'mime-parse-Content-Transfer-Encoding.
- (mime-parse-message): Use 'mime-parse-* instead of 'mime-read-*.
-
-1998-05-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Move 'regexp-* and 'regexp-or to mime-def.el of
- FLIM (Chao); move 'std11-quoted-pair-regexp, 'std11-qtext-regexp
- and 'std11-quoted-string-regexp to mime-def.el of FLIM (Chao).
-
-1998-05-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Rename 'rfc822/quoted-string-regexp ->
- 'std11-quoted-string-regexp.
-
- * mime-parse.el: Rename 'rfc822/qtext-regexp ->
- 'std11-qtext-regexp.
-
- * mime-parse.el: Rename 'rfc822/quoted-pair-regexp ->
- 'std11-quoted-pair-regexp.
-
-1998-05-29 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * mime-view.el (mime-preview-scroll-down-entity): Use (not (bobp))
- instead of (> (point) 1).
-
-1998-05-25 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * mime-play.el (mime-preview-play-current-entity): Don't widen.
-
-1998-05-25 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * mime-play.el (mime-raw-play-entity): Abolish point correcting
- procedures for VM.
-
- * mime-play.el (mime-preview-play-current-entity): Do widen befor
- playing the entity.
-
-\f
-1998-05-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.4.5 (Tomari) released.
-
- * README.en (Mailing lists): Add notice about direct-mail for
- authors.
-
-1998-05-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-raw-dired-function): Don't refer
- 'mime/use-multi-frame.
-
- * semi-def.el: Abolish variable 'mime/use-multi-frame.
-
- * semi-def.el (mime-insert-button): Merge arguments of two
- 'insert.
-
- * semi-def.el: Abolish function 'get-version-string because it is
- not used.
-
- * TODO (Don't use filter-model): New item.
-
- * TODO (Fix problem of dynamic configuration for
- 'mime-acting-condition): Done.
-
- * TODO (Mother entity should modify preview-situation of
- children): Done.
-
-1998-05-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-setup-buffers): Use
- 'mime-view-display-entity; abolish 'mime-view-display-message.
- (mime-view-display-entity): fixed.
-
-1998-05-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-message): fixed.
-
-1998-05-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-raw-get-subject): Use
- 'mime-content-disposition-filename.
-
- * mime-parse.el (mime-content-type-parameter): New function.
-
- * mime-parse.el (mime-content-disposition-parameter): New
- function.
- (mime-content-disposition-filename): New function.
-
-1998-05-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-raw-get-original-filename): Abolish optional
- argument 'encoding; modify for 'mime-raw-get-uu-filename.
-
- * mime-view.el (mime-raw-get-uu-filename): Change interface; don't
- check encoding.
- (mime-raw-get-subject): Change interface; new implementation.
-
-1998-05-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-entity): fixed.
-
- * mime-parse.el (mime-parse-multipart): Change interface.
-
-1998-05-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el (make-mime-entity): Add 'content-disposition.
- (mime-entity-content-disposition): New function.
- (mime-parse-multipart): Modify for 'make-mime-entity.
- (mime-parse-message): Modify for 'make-mime-entity.
-
-1998-05-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-raw-play-entity): Don't use
- 'mime-entity-media-type, 'mime-entity-media-subtype and
- 'mime-entity-parameters.
-
-1998-05-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-entity): Don't use
- 'mime-entity-media-type, 'mime-entity-media-subtype and
- 'mime-entity-parameters.
-
-1998-05-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-message): Don't use
- 'mime-entity-media-type, 'mime-entity-media-subtype and
- 'mime-entity-parameters.
-
-1998-05-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-setup.el: Avoid warning message of byte-compiler.
-
-\f
-1998-05-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.4.4 (Ecch\e-Dþ-Miyazaki)\e-A released.
-
- * mime-play.el (mime-mailcap-method-filename-alist): New variable.
- (mime-mailcap-method-sentinel): New function.
- (mime-activate-mailcap-method): Use 'mime-mailcap-method-sentinel;
- don't use 'mime-show-echo-buffer.
-
-1998-05-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-activate-mailcap-method): Regard
- 'mime-temp-directory.
-
-1998-05-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el (make-mime-entity): Change interface and
- data-format.
- (mime-entity-content-type): New access function.
- (mime-entity-media-type): New implementation.
- (mime-entity-subtype): New implementation.
- (mime-entity-parameters): New implementation.
- (mime-parse-multipart): Change interface; modify for
- 'make-mime-entity.
- (mime-parse-message): Modify for 'make-mime-entity.
-
-\f
-1998-05-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.4.3 (Ichiburi) released.
-
-1998-05-12 Kazuhiro Ohta <ohta@ele.cst.nihon-u.ac.jp>
-
- * mime-partial.el: start and end of the region fixed.
-
-1998-05-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el (make-mime-content-type): New function.
- (mime-parse-Content-Type): Use 'make-mime-content-type.
- (mime-parse-multipart): Use 'make-mime-content-type.
-
-1998-05-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Change data format of mime-content-disposition.
-
-1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Rename 'mime/Content-Transfer-Encoding ->
- 'mime-read-Content-Transfer-Encoding.
-
-1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-raw-get-subject): Use
- 'mime-content-disposition-parameters.
-
- * mime-play.el (mime-raw-get-original-filename): Use
- 'mime-content-disposition-parameters.
-
- * mime-parse.el (mime-content-disposition-type): New function.
- (mime-content-disposition-parameters): New function.
-
-1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el, mime-play.el, mime-view.el: Rename
- 'mime/Content-Disposition -> 'mime-read-Content-Disposition.
-
-1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * Makefile (PACKAGE): New variable.
- (tar): Use $(PACKAGE).
-
-1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Change data format of mime-content-type.
-
-1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-decode-buffer): Use
- 'mime-content-type-primary-type, 'mime-content-type-subtype and
- 'mime-content-type-parameters.
-
-1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el (mime-content-type-primary-type): New function.
- (mime-content-type-subtype): New function.
- (mime-content-type-parameters): New function.
- (mime-parse-message): Use 'mime-content-type-primary-type,
- 'mime-content-type-subtype and 'mime-content-type-parameters.
-
-1998-05-10 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Abolish function 'symbol-concat because it is not
- used.
-
-\f
-1998-05-10 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.4.2 (Oyashirazu) released.
-
-1998-05-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * README.en (Authors): New section.
-
- * README.en (CVS based development): New section.
-
-1998-05-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-preview-move-to-previous): Must regard
- previous entity separated by null property region.
- (mime-preview-move-to-next): Must regard next entity separated by
- null property region.
-
-1998-05-03 Simon Josefsson <jas@pdc.kth.se>
-
- * mime-view.el (mime-preview-move-to-previous): check that new
- prop is non-null
-
- * mime-view.el (mime-preview-move-to-next): skip leading null
- props, check that new prop is non-null
-
-1998-05-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Use 'ctree-set-calist-with-default instead of
- 'ctree-set-calist-strictly to set up mailcap entries.
-
-\f
-1998-05-06 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.4.1 (\e-DÃ’mi)\e-A released.
-
- * README.en (Required environment): Modify for FLIM 1.2.0.
-
-1998-05-06 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Move 'mime-type/subtype-string to
- flim/mime-def.el.
-
-1998-05-06 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-sort-situation): New function.
- (mime-raw-play-entity): Use 'mime-sort-situation.
-
-1998-05-06 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-activate-mailcap-method): Use
- 'mailcap-format-command.
-
-1998-05-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * README.en (What's SEMI?): Add description about mailcap.
- (Documentation): Add RFC 1524; change location of RFC.
-
-\f
-1998-05-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.4.0 (Itoigawa) released.
-
- * README.en (Required environment): Modify for FLIM 1.1.0.
-
- * SEMI-CFG: Modify error message for FLIM 1.1.0.
-
-1998-05-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * semi-def.el: Abolish 'mime/find-file-function because it is not
- used.
-
-1998-05-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * TODO (keymap-prefix): done.
- (mailcap support): done.
- (Change 'mime-acting-condition to condition-tree format): done.
- (Unify entity display specifications to 'mime-preview-condition):
- done.
-
-1998-05-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * NEWS: Add description for SEMI 1.4.
-
-1998-05-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Abolish setting for tm-sh-scripts.
-
- * semi-setup.el: Abolish MUA depended signature setting.
-
- * mail-mime-setup.el: Move setting for 'mail-signature from
- semi-setup.el.
-
-1998-05-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * semi-setup.el: Use 'mime-add-condition to set up for mime-pgp.
-
- * mime-pgp.el: Abolish setting for 'mime-preview-condition and
- mime-acting-condition.
-
- * semi-def.el (mime-condition-type-alist): New variable.
- (mime-condition-mode-alist): New variable.
- (mime-add-condition): New function.
-
-1998-05-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-acting-condition): Use
- 'ctree-set-calist-with-default to set up 'mime-method-to-save.
-
-1998-05-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-acting-condition): Delete setting for
- metamail.
-
-1998-05-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-activate-mailcap-method): New function.
- (mime-raw-play-entity): Use 'mime-activate-mailcap-method for
- mailcap method.
-
- * mime-view.el (mime-acting-condition): Read mailcap.
-
-1998-05-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mailcap.el: Move mailcap.el to FLIM.
-
-1998-05-02 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-raw-play-entity): Sort before registering to
- 'mime-acting-situation-examples.
-
-\f
-1998-04-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.3.4 (Kajiyashiki) released.
-
-1998-04-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-CFG: Modify messages for APEL 8.7.
-
- * README.en (Required environment): Modify for APEL 8.7.
-
-1998-04-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-find-every-acting-situation): Change
- default value to 't.
-
-1998-04-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-save-acting-situation-examples): New
- function; set up for 'kill-emacs-hook.
-
- * mime-play.el (mime-acting-situation-examples): Renamed from
- 'mime-user-acting-condition.
-
- * mime-play.el: Load MIME acting-example file.
-
- * mime-view.el (mime-acting-situation-examples-file): New
- variable.
-
-1998-04-29 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-raw-play-entity): Use
- 'ctree-match-calist-partially.
-
-\f
-1998-04-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.3.3 (Uramoto) released.
-
-1998-04-27 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-raw-play-entity): Refer
- 'mime-view-find-every-acting-situation.
-
- * mime-view.el (mime-view): New customize group.
- (mime-view-find-every-acting-situation): New variable.
-
-1998-04-27 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-user-acting-condition): New variable.
- (mime-raw-play-entity): Refer it.
-
-1998-04-27 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-raw-play-entity): Get all available
- acting-situations; display menu of methods to select
- acting-situation to activate.
-
- * semi-def.el (select-menu-alist): New function.
-
-\f
-1998-04-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.3.2 (N\e-Dò)\e-A was released.
-
- * mime-edit.el (mime-edit-mode-entity-prefix): New variable.
- (mime-edit-mode-entity-map): New variable.
- (mime-edit-mode-enclosure-prefix): New variable.
- (mime-edit-mode-enclosure-map): New variable.
- (mime-edit-mode-map): Use 'mime-edit-mode-entity-map and
- 'mime-edit-mode-enclosure-map.
-
- * mime-view.el (mime-acting-condition): Fix setting.
-
-1998-04-24 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-raw-play-entity): Use 'ctree-match-calist
- directly; abolish 'mime/get-content-decoding-alist.
-
-\f
-1998-04-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.3.1 (Tsutsuishi) was released.
-
- * mime-view.el (mime-preview-follow-current-entity): Abolish
- unused local variable 'message-info.
-
-1998-04-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-split-ignored-field-regexp): Add
- Message-Id field.
-
-1998-04-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mail-mime-setup.el: Must require 'alist.
-
-\f
-1998-04-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.3.0 (Nadachi) was released.
-
-1998-04-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * semi-def.el: Don't require 'atype; abolish function
- 'field-unifier-for-mode.
-
-1998-04-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el: Use 'ctree-set-calist-strictly instead of
- 'set-atype to set up for 'mime-acting-condition.
-
- * mime-play.el (mime/get-content-decoding-alist): Use
- 'ctree-match-calist instead of 'get-unified-alist.
-
- * mime-view.el (mime-acting-condition): Change format from list of
- atype to ctree.
-
-\f
-1998-04-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.2.4 (Arimagawa) was released.
-
- * NEWS: Modify for SEMI 1.2.4 (Arimagawa).
-
- * mime-view.el (mime-view-display-message): Check 'message-button
- is 'visible.
- (mime-view-display-entity): Check 'header is 'visible.
-
-1998-04-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Abolish variable
- 'mime-view-childrens-header-showing-Content-Type-list and function
- 'mime-view-header-visible-p.
- (mime-preview-follow-current-entity): Don't use
- 'mime-view-header-visible-p.
-
-1998-04-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-preview-condition): Don't display body of
- message/rfc822 and message/news; add '(entity-button . invisible)
- to default situation of child entity.
- (mime-view-display-entity): Don't display entity-button if
- 'entity-button field value of preview-condition is 'invisible.
-
-\f
-1998-04-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.2.3 (Tanihama) was released.
-
- * mime-view.el: Abolish function 'mime-view-body-visible-p and
- 'mime-view-entity-separator-visible-p.
- (mime-view-display-entity): Don't use
- 'mime-view-entity-separator-visible-p.
-
-1998-04-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-preview-condition): Specify
- 'childrens-situation field for message/rfc822 and message/news.
- (mime-view-display-message): Use value of 'childrens-situation
- field of preview-situation as default-situation of children.
- (mime-view-display-entity): Add new argument 'default-situation;
- use it as elements of draft of preview-situation; use value of
- 'header field of preview-situation instead of
- 'mime-view-header-visible-p; use value of 'childrens-situation
- field of preview-situation as default-situation of children.
-
-\f
-1998-04-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.2.2 (Naoetsu) was released.
-
- * README.en: Modify for FLIM.
-
-1998-04-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-CFG: Modify messages for FLIM and APEL 8.2.
-
-1998-04-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-CFG: Add "flim" instead of "rime" to 'load-path.
-
-1998-04-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-calist::field-match-method-as-default-rule):
- New function; setup for calist-field-match-method for 'header and
- 'body.
-
-1998-04-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-preview-condition): Add (message-button
- . visible) to application/pgp again.
-
-1998-04-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-message): Abolish unused local
- variable 'ctype.
- (mime-view-display-entity): Abolish unused local variable 'ctype.
-
- * mime-view.el (mime-view-display-message): Don't use
- 'mime-view-content-button-visible-ctype-list; abolish it.
-
-1998-04-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-entity-button-visible-p): Omit to check
- entity is not message.
- (mime-view-header-visible-p): Omit to check entity is message.
- (mime-view-setup-buffers): Call 'mime-view-display-message instead
- of 'mime-view-display-entity.
- (mime-view-display-message): New function.
- (mime-view-display-entity): Abolish local variable
- 'entity-node-id; don't check entity is message or not.
-
-1998-04-10 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-CFG: Add "rime" instead of "mel" to 'load-path.
-
-1998-04-10 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-ELS (semi-modules-to-compile): Delete 'mime-def,
- 'eword-encode and 'eword-decode.
-
- * mime-def.el, eword-encode.el, eword-decode.el: Abolish
- mime-def.el, eword-decode.el and eword-encode.el; (moved to RIME).
-
-1998-04-10 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el (regexp-or): Moved from semi-def.el.
-
- * semi-def.el: Move 'regexp-or to mime-parse.el.
- Move 'eliminate-top-spaces to mime-def.el.
-
- * mime-def.el (eliminate-top-spaces): Moved from semi-def.el.
-
-1998-04-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-ELS (semi-modules-to-compile): Add 'semi-def.
-
- * semi-setup.el: Require 'semi-def instead of 'mime-def.
-
- * mime-view.el: Require 'semi-def.
-
- * mime-def.el: Move SEMI depended definitions to semi-def.el.
-
- * semi-def.el: Move SEMI depended definitions from mime-def.el.
-
- * eword-decode.el (eword-decode-version): Don't use
- `mime-module-version'.
-
-\f
-1998-04-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.2.1 (Nomachi) was released.
-
-1998-04-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-setup-buffers): Don't use
- 'mime-raw-flatten-message-info.
- (mime-view-display-entity): Display recursively.
-
-1998-04-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * TODO: New file.
-
-1998-04-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-decode.el (eword-decode-version): Use
- `mime-module-version' instead of `semi-version'.
-
- * mime-edit.el (mime-edit-version-string): Use
- `mime-module-version' instead of `semi-version'.
-
- * mime-view.el (mime-view-version-string): Use
- `mime-module-version' instead of `semi-version'.
-
- * mime-def.el (mime-module-version): New variable; abolish
- `semi-version'.
-
-\f
-1998-03-26 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.2.0 (Nishiizumi) was released.
-
- * NEWS: Update for SEMI 1.2.
-
-1998-03-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el: Rename 'mime-view-plain-text-preview-hook ->
- 'mime-preview-text/plain-hook.
-
- * mime-text.el (mime-text-add-url-buttons): New function.
- (mime-text-add-url-buttons-maybe): New function.
-
-1998-03-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el, mime-text.el, mime-image.el: Rename
- 'mime-view-filter-for-* -> 'mime-preview-filter-for-*.
-
-1998-03-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el: Rename 'mime-decode-text-body ->
- 'mime-text-decode-body.
-
-1998-03-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el (mime-decode-text-body): Change interface; call
- 'mime-text-decode-hook.
-
-1998-03-23 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * VERSION: New file.
-
-\f
-1998-03-23 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.1.2 (Shin-Nishikanazawa) was released.
-
-1998-03-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * NEWS: Modify about 'image-format.
-
- * mime-image.el (mime-view-filter-for-image): Refer 'image-format
- of preview-situation instead of 'mime-view-image-converter-alist;
- abolish variable 'mime-view-image-converter-alist.
-
-1998-03-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * NEWS: Modify about 'body-filter.
-
-1998-03-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-image.el: Abolish 'mime-view-ps-to-gif-command.
-
- * mime-image.el (mime-view-filter-for-image): Change interface.
- Abolish `mime-view-filter-for-application/postscript'.
-
- * mime-text.el (mime-view-filter-for-text/plain): Change
- interface.
- (mime-view-filter-for-text/richtext): Change interface.
- (mime-view-filter-for-text/enriched): Change interface.
-
- * mime-view.el (mime-view-display-entity): Change interface of
- body-filter.
-
-1998-03-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-image.el (mime-preview-condition): Set 'with-filter in
- body-presentation-method for body-filter.
-
- * mime-view.el (mime-view-display-entity): Call body-filter only
- when body-presentation-method is 'with-filter.
-
-1998-03-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-entity): Modify to omit check
- for body-presentation-method.
-
-1998-03-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * NEWS: Modify about `mime-preview-condition'.
-
-1998-03-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-image.el: Set up for `mime-preview-condition' instead of
- `mime-view-body-visible-condition' and
- `mime-view-content-filter-alist'.
-
- * mime-view.el (mime-preview-condition): New variable.
- (mime-view-body-visible-p): Use `mime-preview-condition' instead
- of `mime-view-body-visible-condition'; abolish variable
- `mime-view-body-visible-condition'.
- (mime-view-insert-message/partial-button): Add argument
- `situation'.
- (mime-view-display-entity): Use `mime-preview-condition' instead
- of `mime-view-content-filter-alist'; don't hard-coding for
- `message/partial-button'; abolish variable
- `mime-view-content-filter-alist'.
-
-1998-03-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el: Require 'mime-text when compiling.
-
-1998-03-21 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-
- * eword-decode.el (eword-lexical-analyze-internal): Fixed return
- value.
-
- * mime-view.el (mime-view-body-visible-condition): text media-
- type is always visible.
-
-\f
-1998-03-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.1.1 (Oshino) was released.
-
- * mime-play.el (mime-method-to-save): Must treat nil encoding as
- 7bit.
-
-1998-03-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * NEWS: Update for latest version.
-
-1998-03-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-CFG: Must set up load-path before version check codes.
-
-1998-03-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Don't require mime-text.el; add autoload setting
- for mime-text.el.
- (mime-text-decoder-alist): moved from mime-text.el.
- (mime-view-entity-separator-visible-p): New function.
- Abolish `mime-view-display-header', `mime-view-display-body' and
- `mime-view-entity-separator-function'.
-
- * mime-text.el: Require mime-view (mime-text.el is autoloaded by
- mime-view); variable `mime-text-decoder-alist' was moved to
- mime-view.el.
-
- * mime-play.el (mime-method-to-save): fixed.
-
-1998-03-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * NEWS: New file.
-
-\f
-1998-03-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.1.0 (Nonoichi) was released.
-
-1998-03-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-method-to-verify-application/pgp-signature):
- Abolish unused local-variable `raw-buf'.
-
- * mime-play.el (mime-raw-play-entity): fixed.
-
- * mime-view.el (mime-preview-original-window-configuration): Use
- `defvar' to avoid warning of byte-compiler.
-
- * mime-view.el (mime-view-display-entity): Don't use
- `mime-view-entity-button-function' (abolish it); use
- `mime-root-entity-p'.
-
-1998-03-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-entity-button-visible-p): New function.
- (mime-view-entity-button-function): Use function
- `mime-view-entity-button-visible-p'.
-
- * mime-view.el (mime-raw-entity-parent): New function.
- (mime-view-entity-button-function): Use `mime-raw-entity-parent'.
-
- * mime-view.el (mime-view-entity-button-function): Use
- `mime-root-entity-p'.
-
- * mime-parse.el (mime-root-entity-p): New function.
-
-1998-03-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-CFG: Insert version check code.
-
-1998-03-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-image.el: Set up `mime-view-body-visible-condition' instead
- of `mime-view-visible-media-type-list'.
-
- * mime-view.el (mime-view-body-visible-condition): New variable.
- (mime-view-body-visible-p): Use `mime-view-body-visible-condition'
- instead of `mime-view-visible-media-type-list'.
- Abolish `mime-view-visible-media-type-list'.
-
- * mime-parse.el (mime-type/subtype-string): New function.
- (mime-entity-type/subtype): Use `mime-type/subtype-string'.
-
-1998-03-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-method-to-verify-application/pgp-signature):
- Use `mime-raw-write-region'.
-
- * mime-view.el (mime-raw-buffer-coding-system-alist): Move setting
- for mh-show-mode.
-
- * mime-play.el, mime-view.el: Rename
- `mime-raw-coding-system-alist' ->
- `mime-raw-buffer-coding-system-alist'.
-
- * mime-view.el, mime-play.el: Move `mime-raw-coding-system-alist'
- from mime-play.el to mime-view.el.
-
-1998-03-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-raw-point-to-entity-node-id): Use
- `mime-raw-find-entity-from-point'.
- (mime-raw-point-to-entity-number): Likewise.
-
- * mime-view.el (mime-raw-find-entity-from-point): New function.
-
-1998-03-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-body): Change interface.
-
-1998-03-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el, mime-view.el: Rename `mime-view-entity-info' ->
- `mime-view-entity'.
-
- * mime-view.el: Rename `mime-raw-entity-number-to-entity-info' ->
- `mime-raw-find-entity-from-number'.
-
- * mime-pgp.el, mime-view.el: Rename
- `mime-raw-entity-node-id-to-entity-info' ->
- `mime-raw-find-entity-from-node-id'.
-
- * mime-pgp.el, mime-partial.el, mime-play.el, mime-view.el,
- mime-parse.el: Rename `mime-entity-info' -> `mime-entity'.
-
-1998-03-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-header-visible-p): Change interface.
- (mime-view-body-visible-p): Change interface.
-
- * mime-view.el (mime-view-insert-entity-button): Change interface.
- (mime-view-entity-button-function): Change interface.
-
- * mime-view.el (mime-view-body-visible-p): Add DOC-string.
-
- * mime-view.el: `rcnum' -> `entity-node-id'.
-
-1998-03-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-method-to-verify-application/pgp-signature):
- Don't use temporary buffer for signed entity.
-
- * mime-pgp.el (mime-method-to-verify-application/pgp-signature):
- Don't use temporary buffer for PGP-signature.
-
-1998-03-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-method-to-verify-application/pgp-signature):
- Use `write-region-as-binary'.
-
- * mime-pgp.el (mime-method-to-verify-application/pgp-signature):
- Use `mime-write-decoded-region'.
-
- * mime-pgp.el: Rename `rmcnum' -> `mother-node-id'.
-
-1998-03-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-method-to-decrypt-application/pgp-encrypted):
- Use `mime-raw-point-to-entity-node-id'; abolish `entity-number'.
-
- * (mime-method-to-verify-application/pgp-signature): Use
- `mime-raw-point-to-entity-node-id'; abolish `entity-number'.
-
- * mime-pgp.el (mime-method-to-verify-multipart/signed): Use
- `mime-raw-point-to-entity-node-id'.
-
- * mime-view.el (mime-raw-point-to-entity-node-id): New function.
-
- * mime-view.el, mime-pgp.el: Rename `reversed-entity-number' ->
- `entity-node-id'.
-
- * mime-view.el, mime-parse.el: Rename `reversed-number' ->
- `node-id'.
-
- * mime-pgp.el: `rcnum' -> `reversed-entity-number'.
-
- * mime-pgp.el: `cnum' -> `entity-number'.
-
- * mime-pgp.el: `beg' -> `start'.
-
-1998-03-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mailcap.el (mailcap-look-at-field): Change field-name to symbol.
-
-1998-03-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mailcap.el (mailcap-look-at-type-field): Must allow
- "implicit-wild".
- (mailcap-look-at-field): fixed.
-
-1998-03-13 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-
- * README.en (Bug reports): Modify description of tm mailing list.
-
-1998-03-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el, mime-play.el: Rename
- `mime-view-quitting-method-for-mime-show-message-mode' ->
- `mime-preview-quitting-method-for-mime-show-message-mode'.
-
- * mime-play.el, mime-edit.el, mime-view.el: Rename
- `mime-view-quitting-method-alist' ->
- `mime-preview-quitting-method-alist'.
-
-1998-03-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el: Rename `mime-article::write-region' ->
- `mime-raw-write-region'.
-
-1998-03-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el, mime-play.el: Rename `mime-playback-entity' ->
- `mime-raw-play-entity'.
-
- * mime-play.el, mime-view.el: Rename `mime-view-cinfo' ->
- `mime-view-entity-info'.
-
- * mime-view.el, mime-parse.el: Rename `mime-entity-info-rnum' ->
- `mime-entity-info-reversed-number'.
-
- * mime-view.el: Rename `mime/flatten-content-info' ->
- `mime-raw-flatten-message-info'.
-
- * mime-pgp.el, mime-view.el: Rename `mime-raw-rcnum-to-cinfo' ->
- `mime-raw-reversed-entity-number-to-entity-info'.
-
- * mime-view.el: Rename `mime-raw-cnum-to-cinfo' ->
- `mime-raw-entity-number-to-entity-info'.
-
- * mime-pgp.el, mime-partial.el, mime-view.el: Rename
- `mime-raw-entity-info' -> `mime-raw-message-info'.
-
- * mime-play.el, mime-pgp.el, mime-view.el: Rename
- `mime-raw-point-content-number' ->
- `mime-raw-point-to-entity-number'.
-
-1998-03-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el, mime-pgp.el, mime-view.el: Rename ` mime-article/'
- -> `mime-raw-'.
-
- * mime-view.el: Rename `mime-view-get-original-major-mode' ->
- `mime-preview-original-major-mode'.
-
- * mime-view.el: Rename `mime-view-display-x-face' ->
- `mime-preview-display-x-face'.
-
- * mime-play.el, mime-pgp.el, mime-bbdb.el, mime-view.el: Rename
- `mime-view-buffer' -> `mime-preview-buffer'.
-
- * mime-play.el, mime-view.el: Rename `mime::preview/' ->
- `mime-preview-'.
-
- * mime-view.el: Rename `mime-view-original-major-mode' ->
- `mime-preview-original-major-mode'.
-
- * mime-play.el, mime-edit.el, mime-view.el: Rename
- `mime-view-kill-buffer' -> `mime-preview-kill-buffer'.
-
- * mime-view.el: Rename `mime-view-show-summary' ->
- `mime-preview-show-summary'.
-
- * mime-view.el: Rename `mime-view-quit' -> `mime-preview-quit'.
-
- * mime-view.el: Rename `mime-view-follow-current-entity' ->
- `mime-preview-follow-current-entity'.
-
- * mime-view.el: Rename `mime-view-print-current-entity' ->
- `mime-preview-print-current-entity'.
-
- * mime-view.el (mime-view-menu-list): Modify menu.
-
- * mime-view.el: Rename `mime-view-extract-current-entity' ->
- `mime-preview-extract-current-entity'.
-
- * mime-def.el, mime-play.el, mime-view.el: Rename
- `mime-view-play-current-entity' ->
- `mime-preview-play-current-entity'.
-
- * mime-view.el: Rename `mime-view-previous-line-content' ->
- `mime-preview-previous-line-entity'.
-
- * mime-view.el: Rename `mime-view-next-line-content' ->
- `mime-preview-next-line-entity'.
-
- * mime-view.el: Rename `mime-view-scroll-' ->
- `mime-preview-scroll-'.
-
- * mime-view.el: Rename `mime-view-move-to-' ->
- `mime-preview-move-to-'.
-
- * mime-play.el, mime-image.el: Rename `mime-preview/' ->
- `mime-preview-'.
-
-1998-03-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-partial.el (mime-method-to-combine-message/partial-pieces):
- Rename `mime-raw-content-info' -> `mime-raw-entity-info'.
-
- * mime-pgp.el, mime-view.el: Rename `mime-raw-content-info' ->
- `mime-raw-entity-info'.
-
-1998-03-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-raw-content-info): Modify DOC-string.
-
-1998-03-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el: Abolish `eword-encode-RCS-ID'.
-
-1998-03-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-partial.el: Rename
- `mime-combine-message/partials-automatically' ->
- `mime-method-to-combine-message/partial-pieces'.
-
-1998-03-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-acting-condition): Separate type and subtype.
-
- * mime-view.el (mime-acting-condition): Separate type and subtype.
-
- * mime-play.el (mime-playback-entity): Separate type and subtype.
-
-\f
-1998-03-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.0.2 (Nonoichi-K\e-Dòdaimae)\e-A was released.
-
-1998-03-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el: Rename `mime-pgp-add-keys' ->
- `mime-method-to-add-application/pgp-keys'.
-
- * mime-pgp.el: Rename `mime-pgp-decrypt-application/pgp-encrypted'
- -> `mime-method-to-decrypt-application/pgp-encrypted'.
-
- * mime-pgp.el: Rename `mime-pgp-check-application/pgp-signature'
- -> `mime-method-to-verify-application/pgp-signature'.
-
- * mime-pgp.el: Rename `mime-check-multipart/signed' ->
- `mime-method-to-verify-multipart/signed'.
-
- * mime-pgp.el: Rename `mime-process-application/pgp' ->
- `mime-method-for-application/pgp'.
-
-1998-03-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mailcap.el (mailcap-look-at-type-field): Change type and subtype
- to symbol.
-
- * mailcap.el (mailcap-file): New variable.
- (mailcap-parse-file): New function.
-
-1998-03-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * README.en (What's SEMI?): Remove what does SEMI stand for.
-
-1998-03-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-acting-condition): Use `mime-method-to-save'
- instead of external method "tm-file".
-
- * mime-play.el: Rename `mime-extract-current-entity' ->
- `mime-method-to-save'.
-
-1998-03-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-ELS (semi-modules-to-compile): Abolish mime-file.el.
-
- * mime-play.el (mime-extract-current-entity): New function; copied
- from mime-file.el; abolish mime-file.el.
-
- * mime-view.el (mime-acting-condition), mime-partial.el
- (mime-combine-message/partials-automatically), mime-play.el:
- Rename `mime-display-message/partial' ->
- `mime-method-to-store-message/partial'.
-
-1998-03-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-acting-condition), mime-play.el: Rename
- `mime-display-caesar' -> `mime-method-to-display-caesar'.
-
- * mime-view.el (mime-acting-condition), mime-play.el: Rename
- `mime-display-message/external-ftp' ->
- `mime-method-to-display-message/external-ftp'.
-
- * mime-view.el (mime-acting-condition), mime-play.el: Rename
- `mime-display-message/rfc822' ->
- `mime-method-to-display-message/rfc822'.
-
- * mime-play.el: Rename `mime-article/make-method-args' ->
- `mime-make-external-method-args'.
-
- * mime-file.el: Fix setting.
-
-1998-03-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el: Rename `mime-article/start-external-method-region'
- -> `mime-activate-external-method'.
-
- * mime-play.el, mime-pgp.el: Rename `mime-display-content' ->
- `mime-playback-entity'.
-
- * mime-file.el (mime-extract-current-entity): Use
- `mime-write-decoded-region'.
-
- * mime-file.el: Rename `mime-article/extract-file' ->
- `mime-extract-current-entity'.
-
-1998-03-03 François Pinard <pinard@iro.umontreal.ca>
-
- * mime-edit.el (mime-edit-insert-signature): Function
- `mime-edit-insert-tag' is sometimes called with more arguments
- than it is ready to accept. (cf. [tm-en:1585])
-
-1998-03-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-insert-text): New optional argument
- `subtype'.
-
-\f
-1998-02-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.0.1 (Magae) was released.
-
-1998-02-27 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-check-multipart/signed): New function.
-
-1998-02-26 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-decode.el (eword-decode-and-fold-structured-field): Fixed.
-
- * mime-edit.el (mime-file-types): Use `defcustom'.
-
-\f
-1998-02-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 1.0.0 (Nukaj\e-Dþtaku-mae)\e-A was released.
-
- * SEMI-ELS: Remove mime-tar.el.
-
-1998-02-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-decode.el (eword-decode-version): Use `semi-version';
- abolish `eword-decode-RCS-ID'.
-
- * mime-view.el (mime-view-version-string): Use `semi-version';
- abolish `mime-view-version' and `mime-view-RCS-ID'.
-
- * mime-edit.el (mime-edit-version-string): Use `semi-version';
- abolish `mime-edit-version' and `mime-edit-RCS-ID'.
-
- * mime-def.el (semi-version): New constant; abolish constant
- `semi-version-name'.
-
- * mime-view.el: Rename `mime-view-version-name' ->
- `mime-view-version-string'.
-
- * mime-edit.el: Rename `mime-edit-version-name' ->
- `mime-edit-version-string'.
-
- * eword-decode.el (eword-lexical-analyzers): New variable.
- (eword-analyze-quoted-string): Add second argument.
- (eword-analyze-domain-literal): New function.
- (eword-analyze-spaces): New function.
- (eword-analyze-special): New function.
- (eword-analyze-atom): Add second argument.
- (eword-lexical-analyze-internal): Use `eword-lexical-analyzers'.
-
-\f
-1998-02-17 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.118.2 (Otomaru) was released.
-
- * eword-decode.el (eword-decode-and-unfold-structured-field): New
- function.
-
- * eword-decode.el (eword-decode-and-fold-structured-field): New
- function.
- (eword-decode-structured-field-body): Use it.
- (eword-decode-header): Likewise.
-
- * eword-decode.el (eword-decode-structured-field-body): If
- `START-COLUMN' is nil, it uses `mapconcat'.
-
- * eword-decode.el (eword-decode-token): New function.
- (eword-decode-structured-field-body): Add new optional arguments
- `START-COLUMN' and `MAX-COLUMN'; fill results; use function
- `eword-decode-token'.
- (eword-decode-header): Specify START-COLUMN for
- `eword-decode-structured-field-body'.
-
-1998-02-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-decode.el (eword-decode-header): Unfold fields including
- encoded-words.
-
- * eword-decode.el (eword-decode-ignored-field-list): New variable.
- (eword-decode-structured-field-list): New variable.
- (eword-decode-header): Refer them.
-
- * eword-decode.el (eword-decode-header): Don't use
- `eword-decode-unstructured-field-body'.
-
-1998-02-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-decode.el (eword-decode-header): New implementation; add
- new argument `CODE-CONVERSION' as first argument. Change
- `SEPARATOR' as second argument.
-
-\f
-1998-02-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.118.1 (Shijima) was released.
-
- * README.en (Bug reports): Modified for SEMI.
-
-1998-02-06 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-normalize-body): Must not ignore case to
- search "From " in beginning of line.
-
-1998-01-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-image.el: Comment out setting for inline Postscript
- feature.
-
-1998-01-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-decode.el (eword-analyze-atom): New function.
- (eword-lexical-analyze-internal): Use `eword-analyze-atom' instead
- of `std11-analyze-atom'.
-
-1997-11-26 Thierry Emery <Thierry.Emery@aar.alcatel-alsthom.fr>
-
- * mime-edit.el (mime-edit-insert-text): Fix to avoid unexpected
- entering enriched-mode. (cf. [tm-ja:2697])
-
-\f
-1997-11-26 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.118 (Sodani) was released.
-
-1997-11-24 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-maybe-hide-echo-buffer): bury MIME echo
- buffer.
-
-1997-11-23 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-maybe-hide-echo-buffer): New inline function;
- abolish `mime-hide-echo-buffer'.
- (mime-view-mode): Use `mime-maybe-hide-echo-buffer'.
-
-1997-11-20 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el: Rename `mime-article/add-pgp-keys' ->
- `mime-pgp-add-keys'.
-
- * mime-pgp.el: Rename `mime-article/decrypt-pgp' ->
- `mime-pgp-decrypt-application/pgp-encrypted'.
-
- * mime-pgp.el: Rename `mime-article/check-pgp-signature' ->
- `mime-pgp-check-application/pgp-signature'.
-
- * mime-pgp.el: Rename `mime::article/call-pgp-to-check-signature'
- -> `mime-pgp-check-signature'.
-
- * mime-pgp.el: Rename `mime-article/view-application/pgp' ->
- `mime-process-application/pgp'.
-
-\f
-1997-11-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.116 (D\e-Dòhòji)\e-A was released.
-
-1997-11-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el, mime-pgp.el, mime-partial.el: Rename
- `mime::article/content-info' -> `mime-raw-content-info'.
-
-1997-11-11 François Pinard <pinard@iro.umontreal.ca>
-
- * mime-edit.el: Modify space in prompt and removespurious trailing
- spaces in the files. (cf. [tm-en:1507])
-
-1997-11-08 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: Rename `mime-edit-enclose-region' ->
- `mime-edit-enclose-region-internal'.
-
- * mime-edit.el (mime-edit-enclose-quote-region,
- mime-edit-enclose-mixed-region, mime-edit-enclose-parallel-region,
- mime-edit-enclose-digest-region,
- mime-edit-enclose-alternative-region,
- mime-edit-enclose-signed-region,
- mime-edit-enclose-encrypted-region): Change subtype to symbol.
-
-1997-11-06 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-bbdb.el, semi-setup.el: Use path-util.el instead of
- file-detect.el.
-
-1997-11-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-def.el: Add group `mime' to `default-mime-charset'.
-
-1997-11-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el (eword-encode-field): Must regard MIME-Version
- field as structured field.
-
-\f
-1997-11-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.115.2 (Inokuchi) was released.
-
-1997-11-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-split-message): Use `defcustom'.
- (mime-edit-message-default-max-lines): Use `defcustom'.
- (mime-edit-message-max-lines-alist): Use `defcustom'.
-
-1997-11-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * Makefile: Abolish `execs' and `install-execs'.
-
-1997-11-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit): New customize group.
- (mime-ignore-preceding-spaces): Use `defcustom'.
- (mime-ignore-trailing-spaces): Use `defcustom'.
- (mime-ignore-same-text-tag): Use `defcustom'.
- (mime-auto-hide-body): Use `defcustom'.
- (mime-edit-voice-recorder): Use `defcustom'.
- (mime-edit-mode-hook): Use `defcustom'.
- (mime-edit-translate-hook): Use `defcustom'.
- (mime-edit-exit-hook): Use `defcustom'.
-
- * mime-def.el (mime): New customize group.
- (mime-button-face): Use `defcustom'.
- (mime-button-mouse-face): Use `defcustom'.
-
-1997-11-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-x-emacs-value): Don't add mule-version
- if enable-multibyte-characters is nil.
-
-1997-10-31 Kazuhiro Ohta <ohta@ele.cst.nihon-u.ac.jp>
-
- * mime-play.el (mime-article::write-region): fixed
- (cf. [tm-ja:2641]).
-
-1997-10-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * semi-setup.el (mime-setup-set-signature-key): Check local keymap
- is exist or not to fix problem about
- `gnus-summary-resend-message'.
-
-\f
-1997-10-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.115.1 (Oyanagi) was released.
-
-1997-10-03 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-
- * mime-play.el (mime-display-message/partial): Use `write-region'.
-
- * mime-pgp.el (mime-article/check-pgp-signature): Use
- `write-region'.
-
- * mime-file.el (mime-article/extract-file): Use `write-region'.
-
-1997-10-02 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-def.el: Don't use `third' (don't use cl function).
-
- * SEMI-CFG: Add current directory to load-path.
-
- * mime-def.el, mime-edit.el (mime-edit-insert-text): Rename
- `second' -> `cadr' (Don't use cl function).
-
-\f
-1997-09-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.115 (Hinomiko) was released.
-
- * README.en: Modify for Emacs 20.2.
-
-1997-09-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-def.el (butlast, nbutlast): Don't use `defun-maybe' for cl
- functions.
-
-1997-09-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-def.el (butlast): New function; imported from cl.el.
- (nbutlast): New function; imported from cl.el.
-
-1997-09-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-cut-header): Don't use `member-if'.
-
- * mime-def.el: Don't require cl.
-
- * eword-encode.el: Abolish variable `eword-generate-X-Nsubject'.
- (eword-encode-header): Abolish X-Nsubject field generator.
-
- * eword-encode.el (eword-find-field-encoding-method): New inline
- function.
- (eword-encode-header): Use it.
-
-1997-09-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-image.el: Use `exec-installed-p' to search
- `uncompface-program'.
-
-1997-09-24 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-
- * signature.el: Add doc-string to `signature-file-alist'.
-
- * mime-bbdb.el: Remove Artur Pioro from the authors list; Recent
- versions don't contain his code.
-
-1997-09-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Don't use cl.
- (mime-article/rcnum-to-cinfo): New implementation (use function
- `mime-article/cnum-to-cinfo'); use `defsubst'.
-
-1997-09-18 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-x-emacs-value): Use `(featurep
- 'xemacs)'; add DOC-string.
-
-1997-09-17 Hisashi Miyashita <himi@bird.scphys.kyoto-u.ac.jp>
-
- * mime-edit.el (mime-edit-x-emacs-value): Add `(Meadow-version)'
- when running Meadow. (cf. [tm-ja:2567], [mule-win32:4339])
-
-1997-09-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-mime-version-field-for-message/partial):
- New constant.
- (mime-edit-insert-partial-header): Use it.
-
-\f
-1997-09-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.112 (Tsurugi) was released.
-
-1997-09-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-insert-entity-button): Change interface
- to use `media-type' and `media-subtype' instead of `ctype'.
- (mime-view-entity-button-function): ditto.
-
-1997-09-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-body-visible-p): Change interface to use
- `media-type' and `media-subtype' instead of `ctype'.
- (mime-view-entity-separator-function): ditto.
-
-1997-09-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-entity): Use `media-type' and
- `media-subtype' instead of `ctype' to compare with
- message/partial.
-
- * mime-view.el (mime-view-follow-current-entity,
- mime-view-display-entity, mime-view-entity-button-function): Use
- `mime-entity-info-media-type' and `mime-entity-info-media-subtype'
- instead of `mime-entity-info-type/subtype'.
-
-1997-09-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Abolish macro `define-structure'.
-
- (make-mime-entity-info, mime-entity-info-rnum,
- mime-entity-info-point-min, mime-entity-info-point-max,
- mime-entity-info-parameters, mime-entity-info-encoding,
- mime-entity-info-children): New implementation.
-
- (mime-entity-info-media-type, mime-entity-info-media-subtype): New
- inline function.
-
- * mime-view.el (mime-view-display-entity,
- mime-article/point-content-number, mime-article/cnum-to-cinfo,
- mime/flatten-content-info): Use `mime-entity-info-children'
- instead of `mime::content-info/children'.
-
- * mime-parse.el (mime-entity-info-children): New inline function.
-
-1997-09-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-body-visible-p,
- mime-view-display-entity): Use `mime-entity-info-encoding' instead
- of `mime::content-info/encoding'.
-
- * mime-play.el (mime-display-content): Use
- `mime-entity-info-encoding' instead of
- `mime::content-info/encoding'.
-
- * mime-parse.el (mime-entity-info-encoding): New inline function.
-
-1997-09-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-entity), mime-partial.el
- (mime-combine-message/partials-automatically), mime-play.el
- (mime-display-content): Use `mime-entity-info-parameters' instead
- of `mime::content-info/parameters'.
-
- * mime-parse.el (mime-entity-info-parameters): New inline
- function.
-
-1997-09-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-header-visible-p,
- mime-view-body-visible-p, mime-view-entity-button-function,
- mime-view-display-entity, mime-view-follow-current-entity),
- mime-play.el (mime-display-content): Use
- `mime-entity-info-type/subtype' instead of
- `mime::content-info/type'.
-
- * mime-parse.el (mime-entity-info-type/subtype): New inline
- function.
-
-1997-09-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-entity,
- mime-article/rcnum-to-cinfo, mime-view-follow-current-entity,
- mime-view-move-to-upper): Use `mime::content-info/rcnum' instead
- of `mime-entity-info-rnum'.
-
- * mime-parse.el (mime-entity-info-rnum): New inline function.
-
-1997-09-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-display-entity,
- mime-article/point-content-number,
- mime-view-follow-current-entity), mime-play.el
- (mime-display-content), mime-pgp.el
- (mime-article/check-pgp-signature, mime-article/decrypt-pgp): Use
- `mime-entity-info-point-{min|max}' instead of
- `mime::content-info/point-{min|max}'.
-
- * mime-parse.el (mime-entity-info-point-min): New inline function.
- (mime-entity-info-point-max): New inline function.
- (mime-parse-multipart): Use `mime-entity-info-point-max' instead
- of `mime::content-info/point-max'.
-
-1997-09-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mailcap.el (mailcap-skip-comment): Check `chr' is nil.
-
- * mime-edit.el (mime-edit-decode-buffer): Modify for new return
- format of `mime-parse-Content-Type'.
-
- * mime-parse.el (mime-parse-Content-Type): Change return format.
- (mime-read-Content-Type): Modify DOC-string.
- (make-mime-entity-info): New inline function.
- (mime-parse-multipart): Change interface.
- (mime-parse-message): Rename names of arguments.
-
- * mime-def.el (mime-tspecials): Remove `.' and control-characters.
- (mime-token-regexp): Add specification for control-characters.
-
-1997-09-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-cut-header): Use `defun' instead of
- `defsubst'.
-
- * mime-view.el: Rename `mime-preview/display-body' ->
- `mime-view-display-body'.
-
- * mime-view.el: Rename `mime-preview/display-header' ->
- `mime-view-display-header'.
-
-1997-09-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el, mime-edit.el: Rename `mime/Content-Type' ->
- `mime-read-Content-Type'.
-
- * mime-parse.el (symbol-concat): New implementation.
-
-1997-08-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-def.el: Abolish alias `last*'.
-
- * eword-decode.el (eword-lexical-analyze): `last' of Emacs 20.0.97
- allows two arguments.
-
-1997-08-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-decode.el (eword-lexical-analyze): Use `last*' instead of
- `last' (for Emacs 20.0.96).
-
- * mime-def.el (last*): New alias for old emacsen.
-
-1997-07-26 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el, mime-def.el: Constant
- `mime-disposition-type-regexp' was moved from mime-def.el to
- mime-parse.el.
-
-\f
-1997-07-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.97 (Naka-Tsurugi) was released.
-
-1997-07-24 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: Delete unnecessary "[mime-edit.el]" from
- DOC-strings.
-
-1997-07-23 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-decode.el (eword-analyze-encoded-word): cdr of return
- value must not nil (cf.[tm-ja:2496])
-
-1997-07-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el, mime-play.el: `mime-article/view-message/rfc822'
- -> `mime-display-message/rfc822'.
-
-1997-07-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el (eword-phrase-route-addr-to-rwl): Use function
- `eword-addr-seq-to-rwl'.
-
- * eword-encode.el: `tm-eword::phrase-route-addr-to-rwl' ->
- `eword-phrase-route-addr-to-rwl'.
-
- * eword-encode.el (eword-addr-seq-to-rwl): New function.
- (eword-addr-spec-to-rwl): Use function `eword-addr-seq-to-rwl'.
-
- * eword-encode.el (eword-addr-spec-to-rwl): New implementation.
-
- * eword-encode.el: `tm-eword::addr-spec-to-rwl' ->
- `eword-addr-spec-to-rwl'.
-
-1997-07-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Constant `mime::ctype-regexp' was abolished.
-
- * mime-parse.el: Constant `mime::dtype-regexp' was abolished.
-
- * mime-parse.el, mime-def.el: `mime/disposition-type-regexp' ->
- `mime-disposition-type-regexp'.
-
-\f
-1997-07-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.96 (Kaga-Ichinomiya) was released.
-
-1997-07-05 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: (mime-edit-normalize-body):
- - Protect "From " in beginning of line (insert `ESC ( B' before it
- if possible, otherwise encode by quoted-printable)
- - canonicalize line break code for base64
-
-1997-07-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * signature.el (signature-separator): New variable.
- (insert-signature): Insert `signature-separator' when signature is
- inserted at end of file.
-
-1997-07-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-version-name): Add `semi-version-name'.
-
- * mime-view.el (mime-view-version-name): New constant.
-
- * mime-def.el (semi-version-name): New constant.
-
-1997-07-02 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * README.en (Required environment): Updated.
-
-1997-07-02 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el, mime-def.el: `mime/content-type-subtype-regexp'
- -> `mime-media-type/subtype-regexp'.
-
-1997-07-02 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el, mime-def.el, mailcap.el: `mime/token-regexp' ->
- `mime-token-regexp'.
-
- * mime-def.el: `mime/tspecials' -> `mime-tspecials'.
-
-1997-07-02 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el, mime-pgp.el, mime-def.el: `mime/temp-buffer-name'
- -> `mime-temp-buffer-name'.
-
-1997-07-02 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el (mime-decode-text-body): Canonicalize line break
- code.
-
-1997-06-27 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mailcap.el: New file.
-
-1997-06-26 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el (eword-field-encoding-method-alist): Add
- "Message-ID" as ignored.
-
-1997-06-26 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el (tm-eword::encode-string-1): avoid infinite loop
- caused by long non-encoded-word element. (cf. [tm-en:1356])
-
-1997-06-24 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: `mime-preview/display-message/partial' ->
- `mime-view-insert-message/partial-button'.
-
- * mime-view.el (mime-preview/display-message/partial): Use
- `mime-add-button' again.
-
-1997-06-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el: `tm-eword::lc-words-to-words' ->
- `eword-encode-charset-words-to-words'.
-
- * eword-encode.el (tm-eword::lc-words-to-words): New
- implementation; function `tm-eword::parse-word' was abolished.
-
-1997-06-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el: `tm-eword::split-to-lc-words' ->
- `eword-encode-divide-into-charset-words'.
-
- * eword-encode.el: Function `tm-eword::parse-lc-word' was
- abolished.
- (tm-eword::split-to-lc-words): New implementation.
-
-1997-06-21 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el: `tm-eword::char-type' ->
- `eword-encode-char-type'.
-
- * eword-encode.el: `tm-eword::encode-encoded-text' ->
- `eword-encode-text'
-
- * mime-view.el (mime-view-insert-entity-button,
- mime-preview/display-message/partial): Use `mime-insert-button'.
-
- (mime-view-setup-buffers): Enclose codes to display preview-buffer
- by `(let ((inhibit-read-only t)) ...)'.
-
- * mime-def.el (mime-insert-button): New inline function.
-
- * mime-def.el (mime-add-button): Argument `func' was renamed to
- `function'; Use overlay for `mime-button-mouse-face'.
-
-\f
-1997-06-19 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.92 was released.
-
- * mime-view.el, mime-play.el, mime-partial.el:
- `mime-article/decode-' -> `mime-display-'.
-
- * mime-play.el (mime-display-caesar): fixed.
-
-1997-06-18 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-decode.el (eword-decode-structured-field-body): fixed.
-
-1997-06-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-decode.el (eword-lexical-analyze-cache): New variable.
- (eword-lexical-analyze-cache-max): New variable.
- (eword-analyze-quoted-string): New function.
- (eword-analyze-comment): New function.
- (eword-analyze-encoded-word): New function.
- (eword-lexical-analyze-internal): New function.
- (eword-lexical-analyze): New function.
- (eword-decode-structured-field-body): New function.
- (eword-decode-unstructured-field-body): New function.
- (eword-extract-address-components): New function.
-
-1997-06-11 Steven L Baur <steve@xemacs.org>
-
- * eword-encode.el (tm-eword::char-type, tm-eword::encode-rwl,
- tm-eword::encode-rwl): Clean up Ebola
- infection. (cf.[tm-en:1346],[xemacs-beta:9333])
-
-\f
-1997-05-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.91 was released.
-
-Wed May 28 13:16:15 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-define-keymap): fixed problem about
- [tab], [delete] and [backspace] keys.
-
-Tue May 27 03:26:23 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-sign-pgp-elkins): Enclose PGP-processing
- by `as-binary-process'.
-
-1997-05-23 Steven L Baur <steve@altair.xemacs.org>
-
- * mime-view.el (mime-acting-condition): Add image/png
- mime type. (cf.[tm-en:1334])
-
- * mime-image.el: Add image/png mime type. (cf.[tm-en:1334])
-
- * mime-edit.el (mime-file-types): Add png handling.
- (mime-content-types): Ditto. (cf.[tm-en:1334])
-
-Fri May 23 22:13:47 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-define-keymap): Doesn't bind
- `beginning-of-buffer' and `end-of-buffer' for "<" and ">" keys.
-
-\f
-1997-05-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.88 was released.
-
-Thu May 15 06:05:13 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * Makefile (tar): New implementation.
-
-Tue May 13 14:32:39 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-MK (config-semi): fixed.
-
- * SEMI-CFG: Add site-lisp/apel/ even if LISPDIR is specified.
-
-Tue May 13 14:11:48 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * README.en: Add `LISPDIR'.
-
- * Makefile (LISPDIR): New variable.
-
- * SEMI-CFG: Setting for load-path is modified.
-
-Mon May 12 12:30:42 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-tar.el, mime-play.el, mime-pgp.el, mime-file.el,
- mime-view.el: `mime/content-decoding-condition' ->
- `mime-acting-condition'.
-
-\f
-1997-05-09 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.87 was released.
-
-Fri May 9 04:19:21 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-tar.el: `mime-viewer/uuencode-encoding-name-list' ->
- `mime-view-uuencode-encoding-name-list'.
-
-Fri May 9 03:07:02 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: Use "text/x-rot13-47-48" instead of
- "text/x-rot13-47".
-
- * mime-view.el (mime/content-decoding-condition): Add
- "text/x-rot13-47-48".
-
-Fri May 9 01:26:13 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-normalize-body): Use
- `mule-caesar-region' instead of `caesar-region'.
-
- * mime-play.el (mime-display-caesar): Use `mule-caesar-region'
- instead of `caesar-region'.
-
- * mime-def.el: Add autoload for mule-caesar.el.
-
- * mime-def.el: Function caesar-region was abolished.
-
-Thu May 8 23:31:45 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el, mime-edit.el, mime-def.el: `tm:caesar-region' ->
- `caesar-region'.
-
-Thu May 8 22:37:47 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-define-keymap): Use
- `set-keymap-default-binding' for XEmacs.
-
-Wed May 7 10:04:36 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-display-caesar): Don't use
- `buffer-substring'.
-
- * mime-play.el (mime-display-caesar): Use `view-buffer' instead of
- `view-mode-enter'.
-
-Wed May 7 09:37:54 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el: Don't require `view'.
-
- Constant `mime-view-text/plain-mode-map' was abolished.
-
- Function `mime-view-text/plain-mode' and
- `mime-view-text/plain-exit' were abolished.
-
- (mime-display-caesar): Use `view-mode-enter mother' instead of
- `mime-view-text/plain-mode'.
-
-Wed May 7 09:33:48 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el, mime-view.el (mime/content-decoding-condition):
- `mime-article/decode-caesar' -> `mime-display-caesar'.
-
-Wed May 7 05:49:03 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-cut-header): fixed. (cf.[tm-ja:2386])
-
-\f
-1997-04-30 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI: Version 0.83 was released.
-
-Sat Apr 5 06:20:34 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-def.el: Overlay is required by emu.
-
-Thu Apr 3 18:09:35 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-image.el, mime-view.el, mime-text.el:
- `mime-preview/filter-' -> `mime-view-filter-'.
-
- * mime-view.el: `mime-preview/get-original-major-mode' ->
- `mime-view-get-original-major-mode'.
-
-Thu Mar 27 22:16:53 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-mode): Hide mime-echo window.
-
- * mime-view.el: Function `mime-hide-echo-buffer' was moved from
- mime-play.el.
-
- * mime-play.el: Function `mime-hide-echo-buffer' was moved to
- mime-view.el.
-
- * mime-play.el (mime-hide-echo-buffer): New inline function.
-
- * mime-play.el (mime-echo-window-height): New variable.
-
-Thu Mar 27 21:48:32 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-content-end): Abolish unused local
- variable `beg'.
-
-Thu Mar 27 21:45:49 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-follow-current-entity): Abolish unused
- local variable `rc'.
-
-Thu Mar 27 21:42:08 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el (eword-encode-field): Intern down-cased
- field-name and use `memq' instead of `member' to detect a field is
- address-list or not.
-
-Thu Mar 27 21:17:25 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-article/check-pgp-signature): Use
- `insert-buffer-substring'.
-
-Thu Mar 27 20:59:00 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-article/check-pgp-signature):
- `mime-article/show-output-buffer' -> `mime-show-echo-buffer'.
-
- * mime-play.el: `mime-article/show-output-buffer' ->
- `mime-show-echo-buffer'.
-
- * mime-play.el: `mime/output-buffer-window-is-shared-with-bbdb' ->
- `mime-echo-window-is-shared-with-bbdb'.
-
-Thu Mar 27 20:47:14 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el: Variable
- `mime/output-buffer-window-is-shared-with-bbdb' was moved from
- mime-def.el.
-
- * mime-def.el: Variable
- `mime/output-buffer-window-is-shared-with-bbdb' was moved to
- mime-play.el.
-
-Thu Mar 27 20:40:57 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-mode): `mime/output-buffer-name' ->
- `mime-echo-buffer-name'.
-
- * mime-play.el: `mime/output-buffer-name' ->
- `mime-echo-buffer-name'.
-
- * mime-pgp.el (mime-article/check-pgp-signature):
- `mime/output-buffer-name' -> `mime-echo-buffer-name'.
-
- * mime-def.el (mime-echo-buffer-name): Renamed from
- `mime/output-buffer-name'.
-
-Fri Mar 21 17:55:10 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-content-end): Abolish unused local
- variable `top'.
-
- * mime-view.el: Function `mime-view-make-preview-buffer' was
- abolished.
-
- * mime-view.el: `mime-view-setup-buffer' ->
- `mime-view-setup-buffers'.
-
-\f
-1997-03-18 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * MU: Version 0.40.2 was released.
- * SEMI: Version 0.75 was released.
-
-Tue Mar 18 15:28:25 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-edit-translate-single-part-tag): Add
- DOC-string.
-
-Tue Mar 18 15:21:28 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: `mime::preview/original-major-mode' ->
- `mime-view-original-major-mode'.
-
-Tue Mar 18 15:17:48 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el, mime-view.el: `mime::preview/mother-buffer' ->
- `mime-mother-buffer'.
-
-Tue Mar 18 15:12:10 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el, mime-play.el, mime-edit.el, mime-view.el:
- `mime::preview/article-buffer' -> `mime-raw-buffer'.
-
-Tue Mar 18 14:47:23 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-tar.el, mime-play.el, mime-pgp.el, mime-bbdb.el,
- mime-view.el: `mime::article/preview-buffer' ->
- `mime-view-buffer'.
-
-Tue Mar 18 14:32:53 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Structure `mime::preview-content-info' was
- abolished.
-
- (mime-view-setup-buffer): Return only
- `mime::article/preview-buffer'.
-
- (mime-view-make-preview-buffer): Don't generate
- preview-content-list; Return only `mime::article/preview-buffer'.
-
- (mime-view-display-entity): Don't create
- `mime::preview-content-info'.
-
- (mime-view-mode): Don't set for `mime::preview/content-list'.
-
-Tue Mar 18 13:56:18 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-partial.el (mime-combine-message/partials-automatically):
- Don't use preview-content-list.
-
-Tue Mar 18 13:06:09 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * semi-setup.el: Don't require mime-partial; It is autoloaded.
-
- * mime-partial.el: `mime-article/grab-message/partials' ->
- `mime-combine-message/partials-automatically'.
-
- * mime-partial.el: `mime-partial/preview-article' ->
- `mime-view-partial-message'.
-
- * mime-partial.el: `mime-partial/preview-article-method-alist' ->
- `mime-view-partial-message-method-alist'.
-
- * mime-play.el
- (mime-view-quitting-method-for-mime-show-message-mode): Don't use
- preview-content-list.
-
- * mime-text.el (mime-text-decoder-alist): `mime/show-message-mode'
- -> `mime-show-message-mode'.
-
- * mime-pgp.el (mime-article/view-application/pgp):
- `mime/show-message-mode' -> `mime-show-message-mode'.
-
- * mime-view.el (mime-view-follow-current-entity): New
- implementation.
-
-Tue Mar 18 08:24:07 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: `mime-view-follow-content' ->
- `mime-view-follow-current-entity'.
-
- * mime-view.el (mime-view-mode): Don't use preview-content-list to
- move to initial point.
-
- * mime-view.el: Function `mime-preview/cinfo-to-pcinfo' was
- abolished.
-
- * mime-view.el: Function `mime-preview/point-pcinfo' was
- abolished.
-
- * mime-view.el: Function `mime-preview/point-content-number' was
- abolished.
-
- * mime-play.el (mime-view-play-current-entity): New
- implementation.
-
-Mon Mar 17 17:18:29 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-quit): Use variable
- `mime::preview/original-major-mode'.
-
- * mime-view.el (mime-view-show-summary): Use variable
- `mime::preview/original-major-mode'.
-
- * mime-view.el (mime-view-scroll-down-entity): New implementation.
-
- * mime-view.el (mime-view-scroll-up-entity): New implementation.
-
-Mon Mar 17 16:19:30 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: `mime-view-scroll-down-content' ->
- `mime-view-scroll-down-entity'.
-
- * mime-view.el: `mime-view-scroll-up-content' ->
- `mime-view-scroll-up-entity'.
-
- * mime-view.el (mime-view-move-to-next): New implementation.
-
-Mon Mar 17 16:03:11 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: `mime-view-next-content' ->
- `mime-view-move-to-next'.
-
- * mime-view.el (mime-view-move-to-previous): New implementation.
-
- * mime-view.el: `mime-view-previous-content' ->
- `mime-view-move-to-previous'.
-
- * mime-view.el: `mime-view-up-content' ->
- `mime-view-move-to-upper'.
-
-Mon Mar 17 15:39:17 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el, mime-play.el: `mime/show-message-mode' ->
- `mime-show-message-mode'.
-
- * mime-view.el (mime-view-up-content): New implementation.
-
- * mime-view.el: `mime-preview/display-content' ->
- `mime-view-display-entity'.
-
- * mime-view.el (mime-preview/display-content): Put
- `mime-view-raw-buffer' and `mime-view-cinfo' as text-property.
-
- * mime-view.el: Variable `mime-view-visible-field-regexp' was
- abolished.
-
- * mime-view.el: `mime-preview/cut-header' ->
- `mime-view-cut-header'.
-
- * mime-view.el (mime-view-entity-separator-function): New
- implementation.
-
- * mime-view.el: `mime-preview/default-content-separator' ->
- `mime-view-entity-separator-function'.
-
-Mon Mar 17 13:49:27 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-view-header-visible-p): Abolish optional
- argument `ctype'.
-
- * mime-view.el (mime-view-entity-button-function): New
- implementation.
-
- * mime-view.el: Variable
- `mime-view-content-button-ignored-ctype-list' was abolished.
-
- * mime-view.el: `mime-preview/default-content-button-function' ->
- `mime-view-entity-button-function'.
-
- * mime-view.el: Variable `mime-preview/content-button-function'
- was abolished.
-
- * mime-def.el (mime-add-button): New implementation.
-
- * mime-view.el (mime-view-insert-entity-button): modified.
-
- * mime-view.el: `mime-preview/insert-content-button' ->
- `mime-view-insert-entity-button'.
-
- * mime-view.el (mime-view-header-visible-p): Don't calculate ctype
- is optional argument `ctype' is not nil.
-
-Mon Mar 17 12:12:01 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: `mime-print-entity' ->
- `mime-view-print-current-entity'.
-
- * mime-view.el: `mime-extract-entity' ->
- `mime-view-extract-current-entity'.
-
- * mime-play.el, mime-view.el: `mime-play-entity' ->
- `mime-view-play-current-entity'.
-
- * mime-view.el (mime-play-entity, mime-extract-entity,
- mime-print-entity): Add DOC-string.
-
- * mime-view.el: `mime-view-print-content' -> `mime-print-entity'.
-
- * mime-view.el: `mime-view-extract-content' ->
- `mime-extract-entity'.
-
- * mime-play.el: Variable `mime-view-decoding-mode' was abolished.
-
- * mime-play.el: Variable `mime-view-decoding-mode' was moved from
- mime-view.el.
-
- * mime-view.el: Variable `mime-view-decoding-mode' was moved to
- mime-play.el.
-
-Mon Mar 17 05:09:05 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el: Use `mime-play-entity' instead of
- `mime-view-play-content'.
-
-Mon Mar 17 05:06:33 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el, mime-play.el: `mime-preview/decode-content' ->
- `mime-play-entity'.
-
- * mime-view.el (mime-view-play-content, mime-view-extract-content,
- mime-view-print-content): Modify to use optional argument `mode'.
-
-Mon Mar 17 04:41:21 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el (mime-preview/decode-content,
- mime-article/decode-content): Add new optional argument `mode'.
-
-Sun Mar 16 02:23:31 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el: `mime-charset/maybe-decode-buffer' ->
- `mime-text-decode-buffer-maybe'.
-
- * mime-text.el: `mime-preview/decode-text-buffer' ->
- `mime-decode-text-body'.
-
- * mime-view.el (mime-view-visible-media-type-list): Add
- "text/rfc822-headers".
-
-Sun Mar 16 01:02:03 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-image.el, mime-view.el:
- `mime-view-default-showing-Content-Type-list' ->
- `mime-view-visible-media-type-list'.
-
-Sun Mar 16 00:22:03 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el: `mime-raw::text-decoder' -> `mime-text-decoder'.
-
- * mime-pgp.el (mime-article/view-application/pgp):
- `mime-charset/decode-buffer' -> `mime-text-decode-buffer'.
-
- * mime-text.el: `mime-charset/decode-buffer' ->
- `mime-text-decode-buffer'.
-
-Sat Mar 15 23:59:09 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-article/view-application/pgp):
- `mime-raw::text-decoder' -> `mime-text-decoder'.
-
- * mime-text.el: `mime-raw::text-decoder' -> `mime-text-decoder'.
-
-Sat Mar 15 23:53:49 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el: Variable `mime-raw::text-decoder' was moved from
- mime-view.el.
-
- * mime-view.el: Variable `mime-raw::text-decoder' was moved to
- mime-text.el.
-
-Sat Mar 15 22:40:50 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-article/view-application/pgp): Use
- `insert-buffer-substring'.
-
-Sat Mar 15 22:27:53 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-article/view-application/pgp):
- `mime::article/code-converter' -> `mime-raw::text-decoder'.
-
- * mime-play.el (mime-article/view-message/rfc822):
- `mime::article/code-converter' -> `mime-raw::text-decoder'.
-
- * mime-text.el (mime-preview/decode-text-buffer):
- `mime::article/code-converter' -> `mime-raw::text-decoder'.
-
- * mime-view.el: `mime::article/code-converter' ->
- `mime-raw::text-decoder'.
-
-Sat Mar 15 21:20:02 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el (mime-article/add-pgp-keys): Abolish unused local
- variables `charset' and `mime::article/preview-buffer'.
-
- * mime-pgp.el (mime-article/add-pgp-keys): Abolish unused local
- variable `mode'.
-
-Sat Mar 15 21:10:43 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-image.el (mime-preview/filter-for-image): Abolish unused
- local variable `charset'.
-
- * mime-pgp.el (mime-article/check-pgp-signature): Abolish unused
- local variable `status'.
-
- * mime-pgp.el: (mime-article/view-application/pgp,
- mime-article/add-pgp-keys): Abolish unused local variable
- `cur-buf'.
-
- * mime-image.el (mime-preview/filter-for-image,
- mime-preview/filter-for-application/postscript): Abolish unused
- local variable `mode'.
-
-Sat Mar 15 20:56:19 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el
- (mime-preview/filter-for-text/richtext,
- mime-preview/filter-for-text/enriched): Abolish unused local
- variable `mode'.
-
- * mime-text.el (mime-preview/decode-text-buffer): New
- implementation.
-
- * mime-view.el (mime-view-follow-content): Abolish unused
- variables `f', `mid', `subj', `reply-to', `cc', `to', `from', `he'
- and `hb'.
-
- * mime-edit.el (mime-edit-goto-tag): Abolish unused variable
- `multipart'.
-
- * mime-file.el (mime-article/extract-file): Abolish unused local
- variable `the-buf'.
-
- * mime-tar.el: Quote *autoconv*.
-
-Sat Mar 15 20:29:25 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-partial.el (mime-article/grab-message/partials): Unused
- local variable `mother' was abolished.
-
- * mime-play.el (mime-article/decode-caesar): Unused local variable
- `cur-buf' was abolished.
-
- * mime-play.el (mime-article/decode-message/external-ftp): Unused
- local variable `access-type' was abolished; Comment out `mode'.
-
- * mime-play.el (mime-article/view-message/rfc822): Unused local
- variable `cur-buf' was abolished.
-
- * mime-text.el (mime-preview/filter-for-text/richtext,
- mime-preview/filter-for-text/enriched): Unused local variable `m'
- was abolished.
-
- * mime-parse.el (mime-parse-multipart):
- Unused local variable `ct' was abolished.
-
- * eword-encode.el: Require eword-decode.
-
- * mime-image.el (mime-preview/filter-for-application/postscript):
- Unused local variable `m' was abolished.
-
-Sat Mar 15 19:47:27 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el: (mime-article/view-application/pgp):
- `mime-viewer/code-converter-alist' -> `mime-text-decoder-alist'.
-
- * mime-pgp.el (mime-pgp-command): New variable.
-
- (mime::article/call-pgp-to-check-signature): Use variable
- `mime-pgp-command'. (cf. [tm-en:1259])
-
-Sat Mar 15 19:25:25 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-pgp.el: `mime/viewer-mode' -> `mime-view-mode'.
- (cf. [tm-en:1259])
-
-\f
-1997-03-14 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * emu: Version 7.40.1 was released.
- * APEL: Version 3.2 was released.
- * bitmap-mule: Version 7.17 was released.
- * MU: Version 0.40.1 was released.
- * MEL: Version 6.3 was released.
- * SEMI: Version 0.72 was released.
-
-Fri Mar 14 08:48:07 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-ELS (semi-modules-to-compile): Add mail-mime-setup.el.
-
-Fri Mar 14 08:47:06 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mail-mime-setup.el: New module.
-
- * mime-setup.el: Only loads MUA specific setup files.
-
- * semi-setup.el: Setting for mime-edit, signature and mu-cite were
- moved from mime-setup.el.
-
- * semi-setup.el: Setting for gnus-mime was moved to
- gnus-mime/gnus-mime-setup.el.
-
- * semi-setup.el: Setting for mh-e was moved to emh/emh-setup.el.
-
- * Makefile: modified for SEMI package.
-
-Fri Mar 14 07:42:44 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-MK: Don't compile and install other packages.
-
-Fri Mar 14 06:09:23 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: Definition of `mime-edit-mode' must be previous to
- `add-minor-mode'.
-
- * mime-image.el (mime-preview/filter-for-image): Don't use
- `assoc-value'.
-
-Fri Mar 14 04:49:04 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: Variable `mime-edit-prefix' and `mime-edit-map'
- were abolished; Use `mime-edit-mode-map' directly.
-
- Use "C-c C-m" for enclosure commands.
-
- Add new binding "C-c C-x s" for `mime-edit-set-sign', "C-c C-x e"
- for `mime-edit-set-encrypt'.
-
-Fri Mar 14 04:41:27 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * semi-setup.el: Require file-detect.
-
-Wed Mar 12 07:49:41 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-CFG: Delete variables about other packages.
-
-Mon Mar 10 15:16:26 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-def.el: Variable `mime-temp-directory' was moved to
- mel/mel.el.
-
-1997-03-10 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-ELS (semi-modules-to-compile): Delete `mime-ftp'.
-
- * mime-view.el (mime/content-decoding-condition): Set up for
- `mime-article/decode-message/external-ftp'.
-
- * semi-setup.el: tm-latex.el was abolished.
-
- * semi-setup.el: tm-ftp is merged to mime-play.el.
-
- * mime-play.el (mime-article/dired-function): New variable; copied
- from tm-ftp.el.
-
- (mime-article/dired-function-for-one-frame,
- mime-article/decode-message/external-ftp): New function; copied
- from tm-ftp.el.
-
-1997-03-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-partial.el (mime-article/grab-message/partials): Don't use
- `assoc-value'.
-
-1997-03-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-play.el: Require filename.
-
-1997-03-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-setup.el: Don't check `(boundp 'epoch::version)'.
-
- * mime-setup.el: Use `turn-on-mime-edit' instead of
- `mime-edit-mode'.
-
- * mime-edit.el (mime-edit-decode-buffer): Renamed from
- `mime-editor::edit-again'; optional argument `code-conversion' was
- changed to `not-decode-text' (behavior was reversed).
- (mime-edit-again): modified for `mime-edit-decode-buffer'.
-
- * mime-edit.el (mime-edit-again-ignored-field-regexp): New
- variable.
-
- * mime-edit.el (mime-edit-again): optional argument
- `code-conversion' was changed to `not-decode-text' (behavior was
- reversed); optional argument `no-mode' was renamed to
- `not-turn-on'; `mail-header-separator' was replaced to null line
- before converting.
-
-1997-03-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: `mime-edit-mode' -> `turn-on-mime-edit';
- `mime-edit-toggle-mode' -> `mime-edit-mode'.
-
- Alias `mime-mode' was abolished.
-
-1997-03-06 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el (eword-encode-header): fixed.
-
- * mime-edit.el: Comments was modified.
- (mime-edit-mode): DOC-string was modified.
-
- * mime-edit.el: Function `mime-edit-define-menu-for-emacs19' was
- abolished. Buffer local variable `mime-edit-mode-old-local-map'
- was abolished.
-
- * mime-edit.el: `mime-edit-minor-mime-map' ->
- `mime-edit-mode-map'.
-
- * mime-edit.el: `mime-edit-mime-map' -> `mime-edit-map'.
-
- * mime-edit.el: Function `mime-edit-define-keymap' was abolished.
-
-1997-03-06 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: `mime-prefix' -> `mime-edit-prefix'.
-
-1997-03-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * semi-setup.el: tm-pgp.el was already renamed to mime-pgp.el.
-
-1997-03-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-def.el (pgp-function-alist): `tm:mc-' -> `mime-mc-'.
-
-1997-03-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-def.el (mime-temp-directory): Refer environment variable
- "MIME_TMP_DIR" as default value.
-
-1997-03-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-ELS (semi-modules-to-compile): tm-latex.el and tm-html.el
- were abolished.
-
- * mime-tar.el (mime-decode-message/tar), mime-play.el, mime-pgp.el
- (mime-article/check-pgp-signature), mime-partial.el
- (mime-article/grab-message/partials), mime-image.el, mime-edit.el
- (mime-edit-split-and-send), mime-def.el: Variable `mime/tmp-dir'
- was renamed to `mime-temp-directory'.
-
- * mime-edit.el: `mime/edit-again' was renamed to
- `mime-edit-again'.
-
-1997-03-04 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-text.el, mime-edit.el: `mime/temporary-message-mode' was
- renamed to `mime-temp-message-mode'.
-
- * mime-edit.el: Draft preview feature was abolished.
-
- * mime-edit.el (mime-transfer-level-string): Fixed DOC-string.
-
- Buffer local variable `mime/editing-buffer' was renamed to
- `mime-edit-buffer'.
-
- * mime-edit.el (mime-edit-insert-x-emacs-field): New variable.
- (mime-edit-x-emacs-value): New variable.
- (mime-edit-translate-body): Insert X-Emacs field if variable
- `mime-edit-insert-x-emacs-field' is not nil.
-
-1997-03-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-view.el (mime-preview/insert-content-button): Don't use
- function `assoc-value'.
-
-1997-03-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-bbdb.el: `mime-bbdb-' -> `mime-bbdb/'.
-
-1997-03-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-MK: compile and install emu and apel.
-
-1997-03-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-ELS: tm-bbdb.el was renamed to mime-bbdb.el.
-
- * mime-bbdb.el: Renamed from tm-bbdb.el.
-
- * SEMI-CFG (EMU_PREFIX, EMU_DIR): New variable.
- (APEL_PREFIX, APEL_DIR, APEL_RELATIVE_DIR): New variable.
- (load-path): Add "../apel" instead of "../tl".
-
- * SEMI-ELS: alist.el was moved to ../apel/.
-
-1997-03-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-parse.el: Require emu; Function `char-list-to-string' was
- abolished.
-
- * mime-edit.el: Require emu; definitions about visible/invisible
- were abolished.
-
-1997-03-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el: Require emu; function
- `find-non-ascii-charset-string' and
- `find-non-ascii-charset-region' were abolished.
-
- * mime-def.el: Require atype; functions about atype were
- abolished.
-
-1997-03-03 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-def.el: Require emu; Variable `running-xemacs' was
- abolished; Macro `defun-maybe' was abolished; Function `functionp'
- was abolished; Variable `charsets-mime-charset-alist',
- `default-mime-charset' and `mime-charset-coding-system-alist' were
- abolished; Function `mime-charset-to-coding-system',
- `charsets-to-mime-charset', `detect-mime-charset-region',
- `encode-mime-charset-region', `decode-mime-charset-region',
- `encode-mime-charset-string' and `decode-mime-charset-string' were
- abolished.
-
-Sat Mar 1 04:12:37 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-def.el (charsets-to-mime-charset): New function; copied
- from emu.el.
-
- * eword-encode.el: Use `char-bytes' instead of `char-length'.
-
- * mime-def.el (eliminate-top-spaces): New inline-function; copied
- from tl-str.el.
-
- * mime-edit.el: Fixed about definition of visible/invisible
- functions for XEmacs.
-
-Sat Mar 1 03:39:01 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-edit.el (enable-invisible, end-of-invisible): New macro;
- copied from emu-19.el.
- (invisible-region, invisible-p, next-visible-point): New function;
- copied from emu-19.el and emu-xemacs.el.
- (visible-region): New function; copied from emu-19.el.
-
- * mime-edit.el (mime-edit-make-boundary): New function.
- (mime-edit-translate-body, mime-edit-translate-region): Use
- `mime-edit-make-boundary'.
-
- * mime-edit.el (replace-space-with-underline): New inline
- function; copied from tl-str.el.
-
-Sat Mar 1 02:07:00 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * eword-encode.el (find-non-ascii-charset-region): New
- inline-function; copied from emu-e20.el.
-
-Fri Feb 28 06:46:48 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-def.el: Require cl.
-
- * mime-view.el (mouse-button-2): New variable; copied from
- emu-19.el and emu-xemacs.el.
-
- * mime-def.el (defun-maybe): New macro; copied from emu.el.
- (functionp): New function; copied from emu.el.
-
-Fri Feb 28 05:14:54 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-play.el: Supports only Emacs/mule API.
-
- * mime-def.el (field-unify): Fixed.
-
- * semi-setup.el: Don't require mime-play.
-
- * mime-def.el: Function `put-fields' were abolished.
-
- * mime-def.el: atype functions were moved from mime-play.el.
-
- * mime-play.el: atype functions were moved to mime-def.el.
-
-Fri Feb 28 04:50:13 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-def.el (call-after-loaded): New function; moved from
- semi-setup.el.
-
- * semi-setup.el: Function `call-after-loaded' was moved to
- mime-def.el; require mime-def.
-
-Fri Feb 28 04:44:27 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * semi-setup.el: require mime-play instead of mime-view when
- compiling.
-
-Fri Feb 28 04:21:43 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * SEMI-MK: BINS were abolished.
-
- * SEMI-CFG: require cl.
-
- * SEMI-CFG: Variable `BIN_SRC_DIR' and `BINS' were abolished.
-
-Fri Feb 28 04:08:12 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * SEMI-MK: Renamed from TM-MK.
-
- * SEMI-CFG: Don't require tl-misc.
-
- * SEMI-ELS (semi-modules-to-compile): Add alist.el.
-
-Fri Feb 28 02:33:20 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-play.el (field-unify): Fixed.
-
-Fri Feb 28 02:22:38 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-setup.el, mime-image.el, mime-edit.el, mime-play.el:
- Require alist.
-
- * alist.el: New module; separated from tl-list.el.
-
- * mime-play.el: Function `put-alist' and `del-alist' were moved to
- alist.el.
-
- * mime-play.el (mime-article/coding-system-alist): Use
- `no-conversion' instead of *noconv*.
-
-Thu Feb 27 13:48:48 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-parse.el (char-list-to-string): New inline-function; copied
- from emu-19.el.
-
-Thu Feb 27 13:43:38 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-parse.el (symbol-concat): New inline-function; copied from
- tl-str.el.
-
- * semi-setup.el: require 'mime-view when compiling.
-
- * mime-parse.el (regexp-*): New inline-function; copied from
- tl-str.el.
-
-Thu Feb 27 13:28:10 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * semi-setup.el (running-xemacs): New variable.
-
-Thu Feb 27 09:00:33 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-play.el: `mime/viewer-mode' -> `mime-view-mode'.
-
- * mime-def.el: fixed DOC string.
-
-Thu Feb 27 08:56:45 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * eword-decode.el: Don't require emu.
-
- * mime-def.el (charsets-mime-charset-alist, default-mime-charset,
- mime-charset-coding-system-alist): New variable; copied from
- emu-e20.el.
- (mime-charset-to-coding-system, detect-mime-charset-region,
- encode-mime-charset-region, decode-mime-charset-region,
- encode-mime-charset-string, decode-mime-charset-string): New
- function; copied from emu-e20.el.
-
- * eword-encode.el (find-non-ascii-charset-string): New
- inline-function; copied from emu-e20.el.
-
-Thu Feb 27 08:36:01 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-tar.el: Don't require emu.
-
-Thu Feb 27 08:34:21 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-play.el (put-alist, del-alist): New function; copied from
- tl-list.el.
- (put-fields, field-unifier-for-default, field-unifier-for-mode,
- field-unify, assoc-unify, get-unified-alist, delete-atype,
- remove-atype, replace-atype, set-atype): New function; copied from
- tl-atype.el. Don't require tl-atype.
-
-Thu Feb 27 08:18:16 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * semi-setup.el (call-after-loaded): New function; imported from
- tl-misc.el; Don't require tl-misc.
-
-Thu Feb 27 08:10:24 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-pgp.el: Renamed from tm-pgp.el.
-
-Thu Feb 27 08:05:45 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-def.el (pgp-function-alist): tm-edit-mc.el was renamed to
- mime-mc.el.
-
- * mime-mc.el: Renamed from tm-edit-mc.el.
-
-Thu Feb 27 06:38:44 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-text.el: `tm:mother-button-dispatcher' ->
- `mime-button-mother-dispatcher'.
-
- * mime-def.el, mime-text.el (mime-preview/filter-for-text/plain),
- mime-view.el, mime-tar.el (mime-tar-set-properties):
- `tm:add-button' -> `mime-add-button'.
-
- * mime-file.el: Renamed from tm-file.el.
-
-Wed Feb 26 13:01:25 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * eword-decode.el: Must require emu.
-
- * eword-decode.el (eword-decode-region): Unused local variable
- `charset', `encoding' and `text'.
-
-Wed Feb 26 07:58:29 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * eword-decode.el (eword-decode-encoded-word): Use
- `add-text-properties' directly.
-
-Wed Feb 26 07:44:22 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-def.el (tm:add-button): Use `add-text-properties' directly.
-
- * mime-def.el (running-xemacs): New variable; if it is not nil,
- require overlay.
-
- * mime-def.el (regexp-or): New function.
-
-Wed Feb 26 04:57:33 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-tar.el: Renamed from tm-tar.el.
-
- * mime-view.el (mime-view-define-keymap): `tm:button-dispatcher'
- -> `mime-button-dispatcher'.
-
- * mime-def.el: `tm:button-dispatcher' -> `mime-button-dispatcher'.
-
- * mime-def.el: `tm:mother-button-dispatcher' ->
- `mime-button-mother-dispatcher'.
-
- * mime-def.el: `semi-data' -> `mime-button-data'.
-
- * mime-def.el: `semi-callback' -> `mime-button-callback'.
-
- * mime-def.el: `tm:mouse-face' -> `mime-button-mouse-face'.
-
- * mime-def.el: `tm:button-face' -> `mime-button-face'.
-
- * mime-def.el (tm:add-button, tm:button-dispatcher):
- `mime-callback' was renamed to `semi-callback'; `mime-data' was
- renamed to `semi-data'.
-
-Wed Feb 26 03:54:17 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-def.el (tm:add-button): Use `make-overlay' directly.
-
- * mime-def.el (tm:add-button): Use `overlay-put' directly.
-
-Tue Feb 25 07:40:37 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-text.el: `tm:browse-url' was renamed to
- `mime-text-browse-url'.
-
- * mime-text.el: Require browse-url.
-
- * mime-text.el: `tm:URL-regexp' was renamed to
- `mime-text-url-regexp'.
-
- * mime-text.el: Variable `tm:URL-regexp',
- `browse-url-browser-function' and function `tm:browse-url' were
- moved from mime-def.el.
-
- * mime-def.el: Variable `tm:URL-regexp',
- `browse-url-browser-function' and function `tm:browse-url' were
- moved to mime-text.el.
-
- * eword-decode.el: Variable `tm:warning-face' was renamed to
- `eword-warning-face'.
-
- * eword-decode.el: Variable `tm:warning-face' was moved from
- mime-def.el.
-
- * mime-def.el: Variable `tm:warning-face' was moved to
- eword-decode.el.
-
- * mime-def.el: Function `tm:set-face-region' was abolished.
-
- * mime-edit.el: `mime-edit-make-charset-default-encoding-alist' ->
- `mime-make-charset-default-encoding-alist'.
-
- * mime-edit.el: `mime-edit-transfer-level' ->
- `mime-transfer-level'.
-
- * mime-edit.el: Function `mime/encoding-name' was renamed to
- `mime-encoding-name'.
-
- * mime-def.el: Function `mime/make-charset-default-encoding-alist'
- was abolished.
-
- * mime-edit.el: Function `mime/encoding-name' was moved from
- mime-def.el.
-
- * mime-def.el: Function `mime/encoding-name' was moved to
- mime-edit.el.
-
-Tue Feb 25 06:15:53 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-edit.el: Variable `mime-charset-type-list' was moved from
- mime-def.el.
-
- * mime-def.el: Variable `mime-charset-type-list' was moved to
- mime-edit.el.
-
-Mon Feb 24 10:07:33 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * eword-encode.el (eword-encode-header): fixed typo.
-
-Mon Feb 24 10:04:23 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-edit.el (mime-edit-insert-message, mime-edit-insert-mail,
- mime-editor::edit-again): Don't use `assoc-value'; Don't require
- tl-list.
-
-Mon Feb 24 10:00:50 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-play.el: require tl-atype.
-
- * mime-view.el: Don't require tl-atype.
-
-Mon Feb 24 09:58:14 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-view.el: Don't require tl-misc.
-
-Mon Feb 24 09:57:03 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * eword-encode.el (eword-encode-header): Use function `assoc-if'
- instead of `ASSOC'; require cl instead of tl-list.
-
- * mime-parse.el (define-structure): New macro; Don't require
- tl-misc.el.
-
- * mime-view.el (mime-preview/insert-content-button): Don't use
- function `assoc-value'.
-
- * mime-view.el: Require cl instead of tl-list.
-
- * mime-view.el: Don't require tl-str.el.
-
-Mon Feb 24 09:12:12 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-parse.el (define-structure): New macro; Don't require
- tl-misc.el.
-
- * mime-view.el (mime-preview/insert-content-button): Don't use
- function `assoc-value'.
-
- * mime-view.el: Require cl instead of tl-list.
-
- * mime-view.el: Don't require tl-str.el.
-
-Mon Feb 24 09:04:48 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * eword-decode.el: Constant
- `eword-Q-encoding-and-encoded-text-regexp' was abolished.
-
- * eword-decode.el (quoted-printable-hex-chars,
- quoted-printable-octet-regexp, eword-Q-encoded-text-regexp,
- eword-Q-encoding-and-encoded-text-regexp): New constant; moved
- from mime-def.el.
-
- * mime-def.el (quoted-printable-hex-chars,
- quoted-printable-octet-regexp, eword-Q-encoded-text-regexp,
- eword-Q-encoding-and-encoded-text-regexp): Moved to
- eword-decode.el.
-
- * eword-decode.el (base64-token-regexp,
- base64-token-padding-regexp, eword-B-encoded-text-regexp): New
- constant; moved from mime-def.el.
-
- * mime-def.el: Constant `base64-token-regexp',
- `base64-token-padding-regexp' and `eword-B-encoded-text-regexp'
- were moved to eword-decode.el.
-
- * mime-def.el: Constant `eword-B-encoding-and-encoded-text-regexp'
- was abolished.
-
-Mon Feb 24 08:52:01 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * eword-decode.el: Don't require emu.
-
- * eword-decode.el: Don't require tl-str.el.
-
- * mime-def.el (get-version-string): New inline-function; imported
- from tl-str.el.
-
-Mon Feb 24 02:42:24 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-setup.el: Function `mime/encode-message-header' was renamed
- to `eword-encode-header'.
-
- * mime-edit.el, eword-encode.el: Function
- `eword-encode-message-header' was renamed to
- `eword-encode-header'.
-
-Mon Feb 24 02:26:02 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * eword-decode.el (eword-decode-header): New optional argument
- `SEPARATOR'; Use function `std11-narrow-to-header'.
-
- * mime-view.el, mime-setup.el, eword-decode.el: Function
- `eword-decode-message-header' was renamed to
- `eword-decode-header'.
-
-Mon Feb 24 02:17:11 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-edit.el: tm-ew-e.el was renamed to eword-encode.el;
- Function `mime/encode-message-header' was renamed to
- `eword-encode-message-header'.
-
-Mon Feb 24 01:59:28 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-view.el: Function `mime-eword/decode-string' was renamed to
- `eword-decode-string'.
-
- * mime-def.el: `mime/Q-' -> `eword-Q-'.
-
- * mime-def.el: `mime/B-' -> `eword-B-'.
-
-Mon Feb 24 01:46:59 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * eword-decode.el: Constant `eword-charset-regexp' was renamed to
- `mime-charset-regexp'.
-
- * mime-def.el: Constant `mime/charset-regexp' was renamed to
- `mime-charset-regexp'.
-
-Mon Feb 24 01:38:18 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-view.el: Function `mime/decode-message-header' was renamed to
- `eword-decode-message-header'.
-
- * mime-view.el: tm-ew-d.el was renamed to eword-decode.el.
-
-Mon Feb 24 01:32:33 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-setup.el: tm-ew-d.el was renamed to eword-decode.el;
- Function `mime/decode-message-header' was renamed to
- `eword-decode-message-header'.
-
-Sat Feb 22 17:30:15 1997 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-CFG: Renamed from TM-CFG.
-
- * SEMI-ELS: Renamed from TM-ELS.
-
- * eword-encode.el: `eword-exist-encoded-word-in-subject' ->
- `eword-in-subject-p'.
-
- * eword-encode.el: `mime/' -> `eword-'.
-
- * eword-encode.el (eword-generate-X-Nsubject): Don't refer
- variable `mime/use-X-Nsubject'.
-
- * eword-encode.el (eword-generate-X-Nsubject): Renamed from
- `mime/generate-X-Nsubject'.
-
- * eword-encode.el (eword-field-encoding-method-alist): Don't refer
- variable `mime/no-encoding-header-fields'.
-
- * eword-encode.el (eword-field-encoding-method-alist): Renamed
- from `mime/field-encoding-method-alist'.
-
- * eword-encode.el: Renamed from tm-ew-e.el.
-
- * eword-decode.el: Renamed from tm-ew-d.el.
-
- * mime-view.el: Don't require tm-def.
-
- * mime-parse.el: tm-def.el was renamed to mime-def.el.
-
- * mime-def.el: Renamed from tm-def.el.
-
-1997-02-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * SEMI-ELS: Renamed from TM-ELS.
-
-1997-02-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * eword-encode.el: `eword-exist-encoded-word-in-subject' ->
- `eword-in-subject-p'.
-
- * eword-encode.el: `mime/' -> `eword-'.
-
- * eword-encode.el (eword-generate-X-Nsubject): Don't refer
- variable `mime/use-X-Nsubject'.
-
- * eword-encode.el (eword-generate-X-Nsubject): Renamed from
- `mime/generate-X-Nsubject'.
-
- * eword-encode.el (eword-field-encoding-method-alist): Don't refer
- variable `mime/no-encoding-header-fields'.
-
- * eword-encode.el (eword-field-encoding-method-alist): Renamed
- from `mime/field-encoding-method-alist'.
-
- * eword-encode.el: Renamed from tm-ew-e.el.
-
- * eword-decode.el: Renamed from tm-ew-d.el.
-
- * mime-view.el: Don't require tm-def.
-
- * mime-parse.el: tm-def.el was renamed to mime-def.el.
-
-1997-02-22 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-def.el: Renamed from tm-def.el.
-
-Fri Feb 21 08:04:42 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-view.el: Don't `suppress-keymap'.
-
-Fri Feb 21 07:42:32 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-view.el: tm-parse.el was renamed to mime-parse.el.
-
- * mime-parse.el: Renamed from tm-parse.el.
-
- * mime-view.el: Key-binding for function
- `mime-view-display-x-face' was abolished.
-
-Fri Feb 21 07:04:51 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-setup.el: modified for mime-edit.el.
-
-Fri Feb 21 07:02:52 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-edit.el: `mime-editor/' -> `mime-edit-'.
-
-Fri Feb 21 06:57:11 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-edit.el: based on tm-edit 7.105.
-
- * semi-setup.el: tm-image.el was renamed to mime-image.el.
-
- * mime-image.el: Renamed from tm-image.el.
-
-Fri Feb 21 05:57:53 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * semi-setup.el: Renamed from tm-setup.el.
-
- * mime-setup.el: Setting for GNUS was abolished.
-
- * mime-setup.el: Variable `mime-setup-use-sc' was abolished.
-
- * mime-view.el: tm-play.el was renamed to mime-play.el.
-
- * mime-partial.el: Renamed from tm-partial.el.
-
- * mime-play.el: Renamed from tm-play.el.
-
- * mime-view.el: `tm-text' is renamed to `mime-text'.
-
- * mime-view.el (mime-view-mode): Optional argument `mother-keymap'
- was renamed to `default-keymap-or-function'; optional argument
- `default-function' was abolished.
-
- * mime-text.el: `mime-view-code-converter-alist' ->
- `mime-text-decoder-alist'.
-
- * mime-text.el: Renamed from tm-text.el.
-
-Thu Feb 20 09:02:36 1997 Tomohiko Morioka <tmorioka@mule.etl.go.jp>
-
- * mime-view.el: `mime/viewer-mode' -> `mime-view-mode'.
-
- * mime-view.el: Renamed from tm-view.el.
-
-Thu Jul 11 14:57:42 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-file-types): add for patch.
-
- * mime-edit.el: rearrangement.
-
-Wed Jul 10 12:05:05 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/normalize-body): Use function
- `encode-mime-charset-region' instead of
- `mime-charset-encode-region'.
-
-Wed Jul 10 11:51:13 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/normalize-body): fixed.
-
- * mime-edit.el (mime-editor/define-charset):
- Argument `charset' was changed to
- symbol.
- (mime-editor/choose-charset): Changed to return symbol.
- (mime-editor/normalize-body): charset was changed to symbol.
-
-Wed Jul 10 11:22:55 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/make-charset-default-encoding-alist):
- New function.
- (mime-editor/charset-default-encoding-alist): Use function
- `mime-editor/make-charset-default-encoding-alist'.
- (mime-editor/toggle-transfer-level): Use function
- `mime-editor/make-charset-default-encoding-alist'.
-
- * mime-edit.el (mime-editor/choose-charset): Use function
- `detect-mime-charset-region' instead of
- `mime/find-charset-region'.
-
-Tue Jul 9 13:24:21 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime/editor-mode): Don't toggle.
-
- (mime-editor/toggle-mode): New function.
-
-Tue Jul 2 14:06:53 1996 Alastair Burt <burt@dfki.uni-kl.de>
-
- * mime-edit.el: I think the following is the best way to handle
- tm-edit as a minor mode in XEmacs (at least in 19.14 -- I am not
- sure if "add-minor-mode" works the same way in earlier versions).
- By clicking on the mode line you can turn mime/editor-mode on or
- off.
-
-Thu Jun 27 14:08:17 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/encrypt-pgp-kazu): Use macro
- `as-binary-process'.
-
- * mime-edit.el (mime-editor/sign-pgp-kazu): Use macro
- `as-binary-process'.
-
-Wed Jun 12 05:58:23 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/split-message-sender-alist): setting
- for `mail-mode' was moved to tm-rmail.el.
-
-Sun Jun 9 06:44:19 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: Variable
- `mime-editor/message-default-sender-alist' was abolished.
-
-Sun Jun 9 06:40:26 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: Variable `mime-editor/window-config-alist' was
- abolished.
-
-Sun Jun 9 06:35:10 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/split-and-send): New implementation.
-
-Mon Jun 3 17:39:10 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor::edit-again): fixed about multipart.
-
-Wed May 29 09:57:53 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/define-charset,
- mime-editor/set-parameter): Function `mime-set-parameter' was
- renamed to `mime-editor/set-parameter'.
-
- * mime-edit.el (mime-set-parameter): New implementation
-
- (mime-editor/translate-single-part-tag): New function.
- (mime-editor/translate-region): Use function
- `mime-editor/translate-single-part-tag'.
-
-Tue May 28 15:15:33 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor::edit-again): fixed.
-
- * mime-edit.el (mime/edit-again): fixed.
-
- * mime-edit.el (mime-editor::edit-again): modified for new tag
- rule.
-
- * mime-edit.el (mime-editor/insert-signature): Use variable
- `signature-file-name' instead of `signature'.
-
- * mime-edit.el (mime-editor/multipart-beginning-regexp): Don't
- require begging new-line.
-
- (defconst mime-editor/multipart-end-regexp): Don't require begging
- new-line.
-
- (mime-editor/find-inmost): modified for new enclosure tag rule.
-
- (mime-editor/translate-region): modified for new enclosure tag rule.
-
- (mime-editor/enclose-region): modified for new enclosure tag rule.
-
-Sun May 26 05:04:20 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el: Add `(provide 'tm-edit)'.
-
- Do `(run-hooks 'tm-edit-load-hook)' if variable
- `mime-edit-load-hook' is not bound.
-
-Sun May 26 02:10:08 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/insert-binary-buffer): fixed.
- (mime-editor/normalize-body): fixed.
-
-Sat May 25 20:47:32 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/normalize-body): fixed.
-
- (mime-editor/content-end): Used function `invisible-p' and
- `next-visible-point'.
-
-Sat May 25 20:05:20 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/insert-binary-buffer): Use function
- `invisible-region' instead of `mime-flag-region'.
- (mime-editor/normalize-body): Use function `visible-region'
- instead of `mime-flag-region'.
- (mime-editor/content-end): New implementation.
-
-Sat May 25 16:04:28 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/enquote-region): New command; bound to
- `C-c C-x q'.
-
- (mime-editor/menu-list): New item for function
- `mime-editor/enquote-region'.
-
-Sat May 25 15:52:44 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/process-multipart-1): Use function
- `string-equal' instead of `string='.
-
-Sat May 25 15:48:33 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/process-multipart-1): fixed about
- condition of next tag inserting.
-
-Sat May 25 15:36:58 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/enclose-region): fixed for new format.
-
-Sat May 25 15:15:03 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/insert-partial-header): Comment of
- Mime-Version field was modified.
-
- * mime-edit.el (mime-editor/insert-tag): Don't insert unnecessary
- line break.
-
- * mime-edit.el (mime-editor/version-name): New constant.
-
- (mime-editor/mime-version-value): Use constant
- `mime-editor/version-name'.
-
- (mime-editor/insert-partial-header): Use constant
- `mime-editor/version-name'.
-
-Fri May 24 15:16:37 1996 MORIOKA Tomohiko <morioka@jaist.ac.jp>
-
- * mime-edit.el (mime-editor/goto-tag): fixed for a tag without
- line break.
- (mime-editor/normalize-body): fixed for a tag without line break.
-
- * mime-edit.el (mime-editor/translate-region): fixed for a part
- starting without line break.
-
- * mime-edit.el (mime-editor/single-part-tag-regexp): It allows any
- column.
- (mime-editor/quoted-single-part-tag-regexp): New constant.
- (mime-editor/enquote-region): New function.
- (mime-editor/dequote-region): New function.
- (mime-editor/process-multipart-1): Processing for ``quote''
- enclosure was added.
- (mime-editor/translate-body): Use function
- `mime-editor/dequote-region'.
-
- (mime-editor/mime-version-value): Comment was renamed.
-
- * mime-edit.el: Renamed from tm-edit.el
+++ /dev/null
-SEMI NEWS --- history of major-changes.
-Copyright (C) 1998 Free Software Foundation, Inc.
-
-* Changes in SEMI 1.8
-
-** Abolish external X-Face viewer
-
-
-** Abolish obsolete utility for *-field-list and *-field-regexp
-
- Abolish function `tm:set-fields', `tm:add-fields' and
-`tm:delete-fields'.
-
-
-** Change MUA interface of automatic message/partial combining
-
- Abolish variable `mime-view-partial-message-method-alist'.
-
- Instead of it, `request-partial-message-method' in acting-situation
-is available to specify MUA depended implementation.
-
- Each element of `mime-view-partial-message-method-alist' were
-required to display message at current summary line, and its return
-value were ignored. On the other hand,
-`request-partial-message-method' is required to return structure of
-message at current summary line. Format of it is mime-entity.
-
-\f
-* Changes in SEMI 1.7
-
-** Header-presentation-method
-
- Now MIME-View uses header-presentation-method instead of
-header-filter.
-
- - abolish variable `mime-view-content-header-filter-alist'
-
- - abolish function `mime-view-cut-header'
-
- - Rename `mime-view-content-header-filter-hook' to
- `mime-display-header-hook'
-
-
-** Abolish `mime-view-ignored-field-regexp'
-
- Now mime-view uses `mime-view-ignored-field-list' directly in
-default header-presentation-method.
-
-
-** Abolish body filter support
-
- Please use body-presentation-method.
-
-
-** Methods for MUAs
-
- - Rename `mime-view-following-method-alist' to
- `mime-preview-following-method-alist'
-
- - Rename `mime-method-to-combine-message/partial-pieces' to
- `mime-combine-message/partial-pieces-automatically'
-
-\f
-* Changes in SEMI 1.6
-
-** Abolish tm-compatible external method support
-
- Abolish tm-compatible external method support. Please use mailcap
-method instead of it.
-
-
-** Abolish `mime-edit-signing-type' and `mime-edit-encrypting-type'
-
- C-c C-m C-s encloses as "pgp-signed" which means PGP/MIME signature.
-
- C-c C-m C-e encloses as "pgp-encrypted" which means PGP/MIME
-encryption.
-
-
-** New method to detect content of entity
-
- Now MIME-View can detect content of entity for
-application/octet-stream in default setting.
-
- It uses "file" command to detect. User can customize
-`mime-file-content-type-alist' to specify media-type for output of
-"file" command. It is an alist of "file" output patterns
-vs. corresponding media-types. Each element looks like (REGEXP TYPE
-SUBTYPE). REGEXP is pattern for "file" command output. TYPE is
-symbol to indicate primary type of media-type. SUBTYPE is symbol to
-indicate subtype of media-type.
-
-
-** New interface to display message
-
-- Function `mime-view-buffer'
-- Function `mime-view-display-message'
-
-
-** Change interface of internal playback method
-
- Interface of internal playback method was changed to
-
- (entity situation)
-
-It is as same as interface of body-presentation-method.
-
-
-** Change interface of `mime-view-entity-button-visible-p'
-
-** Change interface of `mime-view-insert-entity-button'
-
-
-** `mime-preview-original-major-mode'
-
- Abolish variable `mime-preview-original-major-mode'.
-
- Please use function `mime-preview-original-major-mode' instead of
-it.
-
-
-** mime-preview-over-to-{previous|next}-method-alist
-
- `mime-preview-over-to-{previous|next}-method-alist' were renamed
-from `mime-view-over-to-{previous|next}-method-alist'.
-
-\f
-* Changes in SEMI 1.5
-
-** mime-w3
-
- Add inline text/html preview feature using w3. If
-`mime-setup-enable-inline-html' is not nil, semi-setup.el sets up it.
-
-
-** `pgp-elkins' -> `pgp-mime'
-
- Rename `pgp-elkins' -> `pgp-mime'. Variable
-`mime-edit-signing-type' and `mime-edit-encrypting-type' does not
-allow `pgp-elkins'.
-
-
-** type-subtype-score
-
- Now MIME-View chooses one entity to display body in
-multipart/alternative. In this mechanism,
-`mime-view-type-subtype-score-alist' is used to specify priority of
-each entity.
-
- Variable `mime-view-type-subtype-score-alist' is alist of
-TYPE-SUBTYPE vs. SCORE. TYPE-SUBTYPE is cons pair (TYPE . SUBTYPE),
-symbol TYPE or t. TYPE and SUBTYPE are symbol. `t' means default.
-SCORE is integer. Larger number is larger priority.
-
-
-** text presentation
-
- Change text presentation mechanism. In anything older than SEMI
-1.4, text presentation mechanism is based on filter model. However it
-has design problem about conversion between byte representation and
-text presentation. So SEMI was changed to use
-body-presentation-method to display text entity. In this purpose, old
-text decoding features were abolished and introduces news features
-(cf. next section).
-
-
-** mime-raw-representation-type and mime-raw-representation-type-alist
-
- Abolish `mime-text-decoder' and `mime-text-decoder-alist' because of
-text presentation mechanism change (cf. previous section). Instead of
-it, SEMI introduces variable about representation-type of
-mime-raw-buffer. If it is `binary', mime-raw-buffer is as same as
-network representation. If it is `cooked', mime-raw-buffer is
-code-converted.
-
- `mime-raw-representation-type-alist' is an alist of major-mode
-vs. representation-type. Each element looks like
-
- (SYMBOL . REPRESENTATION-TYPE).
-
-SYMBOL is major-mode or t. t means default.
-
- `mime-raw-representation-type' is a buffer local variable of
-mime-raw-buffer. If it is non-nil, it overrides
-`mime-raw-representation-type-alist'.
-
- In addition, `mime-raw-buffer-coding-system-alist' was abolished.
-Because representation-type has enough information.
-
-\f
-* Changes in SEMI 1.4
-
-** mailcap
-
- mailcap was supported to set up 'mime-acting-condition.
-
- tm-external-method scripts written by born shell were abolished.
-
-
-** mime-add-condition
-
- New function to set up 'mime-preview-condition and/or
-'mime-acting-condition.
-
-
-** signature setting in semi-setup.el
-
- Abolish MUA depended signature setting.
-
- Setting for mail-mode were moved to mail-mime-setup.el.
-
-\f
-* Changes in SEMI 1.3
-
-** mime-acting-condition
-
- Format of variable 'mime-acting-condition was changed from `atype'
-to `condition tree'. Its format is as same as
-'mime-preview-condition.
-
- If there are two or more conditions are found when matching, menu
-pops up to select method to run. Selected situation will be added to
-example database. (cf. mime-acting-situation-examples-file)
-
-** New variables
-
-*** mime-view-find-every-acting-situation
-
- Find every available acting-situation if non-nil.
-
-*** mime-acting-situation-examples-file
-
- File name of example about acting-situation demonstrated by
- user.
-
-\f
-* Changes in SEMI 1.2
-
-** User setting
-
-*** hooks
-
- 'mime-view-plain-text-preview-hook was renamed to
-'mime-preview-text/plain-hook.
-
-*** Variable
-
- Variable 'mime-view-childrens-header-showing-Content-Type-list was
-abolished. Please use 'mime-preview-condition instead.
-
-*** API about visible-predicates were abolished
-
- Following functions were abolished:
-
- mime-view-header-visible-p (entity message-info)
-
- mime-view-body-visible-p (entity message-info)
-
- mime-view-entity-separator-visible-p (entity message-info)
-
-Please use 'mime-preview-condition instead.
-
- Function 'mime-view-entity-button-visible-p is not abolished, but it
-is obsoleted.
-
-*** mime-preview-condition
-
- Following are added as pre-defined keys:
-
- 'childrens-situation default preview-situation for children
- 'message-button to specify to display message-button
- nil: default (invisible)
- 'visible: visible
- 'invisible: invisible
- 'entity-button to specify to display entity-button
- nil: default (visible)
- 'visible: visible
- 'invisible: invisible
- 'header to specify to display header
- nil: default (invisible)
- 'visible: visible
- 'invisible: invisible
-
-** API
-
-*** Interface for body-filter
-
- 'mime-view-filter-for-* was renamed to 'mime-preview-filter-for-*.
-
-
-*** mime-text-decode-body
-
- Function 'mime-decode-text-body was renamed to
-'mime-text-decode-body and changed interface. New interface is
-following:
-
- mime-text-decode-body (SITUATION)
-
-SITUATION is preview-situation. Content-Transfer-Encoding and
-MIME-charset are specified in field of it.
-
-\f
-* Changes in SEMI 1.1
-
-** User setting
-
-*** Setting variable about visible body
-
- 'mime-view-visible-media-type-list and
-'mime-view-content-filter-alist were abolished. Please use
-'mime-preview-condition instead.
-
- Notice that 'mime-preview-condition is not list of
-media-type/subtype string nor association-list. It uses new
-data-structure `ctree' (condition-tree; it is introduced to replace
-`atype'). Function 'ctree-set-calist-strictly and
-'ctree-set-calist-with-default may be useful to modify it (`calist'
-(condition-alist) is as same as `atype').
-
-
-*** API about visible-predicates
-
- Interface of visible-predicates for entity elements were changed.
-New interfaces are following:
-
- mime-view-entity-button-visible-p (entity message-info)
-
- mime-view-header-visible-p (entity message-info)
-
- mime-view-body-visible-p (entity message-info)
-
- mime-view-entity-separator-visible-p (entity message-info)
-
-
-** API
-
-*** entity representation
-
- Structure 'mime-entity-info was renamed to 'mime-entity. So various
-functions were renamed too.
-
-
-*** Interface for entity-button generators
-
- Interface of entity-button generators was changed. New interfaces
-is following:
-
- mime-view-insert-entity-button (entity message-info subject)
-
-
-*** mime-preview-condition and preview-situation
-
- Conditions about preview generation are unified to
-'mime-preview-condition. Namely other variables, such as
-'mime-view-visible-media-type-list, 'mime-view-content-filter-alist,
-'mime-view-image-converter-alist were abolished.
-
- Preview-situation is generated from entity information, running
-environment and 'mime-preview-condition. These elements are checked
-to match with each other. (it is similar to acting-situation)
-
- Format of preview-situation is association-list. Following key is
-pre-defined:
-
- 'type media-type
- 'subtype media-subtype
- 'encoding content-transfer-encoding
- 'major-mode major-mode of MUA
- <STRING> attribute of Content-Type field.
- 'body-presentation-method body-presentation-method
-
-If 'body-presentation-method is 'with-filter, 'body-filter is used to
-specify body-filter function. If 'body-presentation-method is
-function, it is called to generate presentation of entity body.
-
-Body-filter function 'mime-view-filter-for-image refers 'image-format.
-
-Setting for message/partial button is specified by
-'mime-preview-condition instead of hard-coding.
-
-
-*** Interface for body-filter
-
- Interface of body-filter was changed. New interfaces is following:
-
- <body-filter> (situation)
-
-Current pre-defined filters are following:
-
- mime-view-filter-for-text/plain (situation)
- mime-view-filter-for-text/richtext (situation)
- mime-view-filter-for-text/enriched (situation)
- mime-view-filter-for-image (situation) ; if available
-
-'mime-view-filter-for-application/postscript was abolished.
-
-
-*** Format of mime-acting-condition (acting-situation)
-
- Format of `mime-acting-condition' were changed. `type' and
-`subtype' are separated and changed to symbol.
-
-
-*** Renaming
-
-- mime-view-buffer -> mime-preview-buffer
-
-\f
-Local variables:
-mode: outline
-paragraph-separate: "[ \f]*$"
-end:
+++ /dev/null
-[README for SEMI kernel package (English Version)]
-
-What's SEMI?
-============
-
- SEMI is a library to provide MIME feature for GNU Emacs. MIME is a
- proposed internet standard for including content and headers other
- than (ASCII) plain text in messages.
-
- RFC 2045 : Internet Message Bodies
- RFC 2046 : Media Types
- RFC 2047 : Message Header Extensions
- RFC 2048 : MIME Registration Procedures
- RFC 2049 : MIME Conformance
-
- SEMI has the following features:
-
- - MIME message viewer (mime-view-mode) (RFC 2045 .. 2049)
- - MIME message composer (mime-edit-mode) (RFC 2045 .. 2049)
-
- MIME message viewer and composer also support following features:
-
- - filename handling by Content-Disposition field (RFC 1806)
- - PGP/MIME security Multiparts (RFC 2015)
- - application/pgp (draft-kazu-pgp-mime-00.txt; obsolete)
- - text/richtext (RFC 1521; obsolete; preview only)
- - text/enriched (RFC 1896)
- - External method configuration by mailcap (RFC 1524)
-
- Notice that this package does not contain MIME extender for any
- MUAs. They are released as separated packages.
-
-
-Required environment
-====================
-
- SEMI supports XEmacs 20.2 or later with mule, and Emacs 20.
-
- SEMI does not support anything older than Emacs 19.28 or XEmacs
- 19.14. SEMI also does not support Emacs 19.29 to 19.34, XEmacs
- 19.15 or XEmacs 20.2 without mule, but SEMI may work with them.
-
- SEMI requires APEL (8.7 or later) and FLIM (1.6.0 or later) package.
- Please install them before installing it. APEL package is available
- at:
-
- ftp://ftp.jaist.ac.jp/pub/GNU/elisp/apel/
-
- and FLIM package is available at:
-
- ftp://ftp.jaist.ac.jp/pub/GNU/elisp/flim/
-
- PGP/MIME and application/pgp require mailcrypt or tiny-pgp package.
-
- The package enriched.el is required to compose text/enriched, so if
- you use Emacs anything 19.28 or older (including official version of
- MULE 2.3), WYSIWYG composing for text/enriched is not available.
-
-
-Installation
-============
-
- % make install
-
- You can specify the emacs command name, for example
-
- % make install EMACS=xemacs
-
- If `EMACS=...' is omitted, EMACS=emacs is used.
-
- You can specify the prefix of the directory tree for Emacs Lisp
- programs and shell scripts, for example:
-
- % make install PREFIX=~/
-
- If `PREFIX=...' is omitted, the prefix of the directory tree of the
- specified emacs command is used (perhaps /usr/local).
-
- For example, if PREFIX=/usr/local and EMACS 19.34 is specified, it
- will create the following directory tree:
-
- /usr/local/share/emacs/19.34/site-lisp/ --- emu
- /usr/local/share/emacs/site-lisp/apel/ --- APEL
- /usr/local/share/emacs/site-lisp/flim/ --- FLIM
- /usr/local/share/emacs/site-lisp/semi/ --- SEMI
-
- You can specify site-lisp directory, for example
-
- % make install LISPDIR=~/share/emacs/lisp
-
- If `LISPDIR=...' is omitted, site-lisp directory of the specified
- emacs command is used (perhaps /usr/local/share/emacs/site-lisp or
- /usr/local/lib/xemacs/site-lisp).
-
- You can specify other optional settings by editing the file
- ${archive}/SEMI-CFG. Please read ${archive}/README.en and comments
- in ${archive}/SEMI-CFG.
-
-
-Initialization
-==============
-
-(a) load-path
-
- If you are using Emacs or Mule, please add directory of emu, apel,
- flim and semi to load-path. If you install by default setting, you
- can write subdirs.el for example:
-
- --------------------------------------------------------------------
- (normal-top-level-add-to-load-path
- '("apel" "flim" "semi"))
- --------------------------------------------------------------------
-
- If you are using XEmacs, there are no need of setting about
- load-path.
-
-(b) mime-setup
-
- Please insert the following into your ~/.emacs:
-
- (load "mime-setup")
-
-
-Documentation
-=============
-
- To get started, please read ${archive}/README.en.
-
- RFC's 822, 1524, 1806, 1847, 1896, 2015, 2045, 2046, 2047, 2048 and
- 2049 are available via anonymous ftp:
-
- ftp://ftp.merit.edu/internet/documents/rfc/
-
-
-Mailing lists
-=============
-
- If you write bug-reports and/or suggestions for improvement, please
- send them to the tm Mailing List:
-
- bug-tm-en@chamonix.jaist.ac.jp (English)
- bug-tm-ja@chamonix.jaist.ac.jp (Japanese)
-
- Via the tm ML, you can report SEMI bugs, obtain the latest release
- of SEMI, and discuss future enhancements to SEMI. To join the tm
- ML, send an empty e-mail to
-
- tm-en-help@chamonix.jaist.ac.jp (English)
- tm-ja-help@chamonix.jaist.ac.jp (Japanese)
-
- Notice that you should not send mail to author(s), such as
- morioka@jaist.ac.jp, directly. Because your problem may occur in
- other environments (if not, it might be your problem, not bug of
- SEMI). We should discuss in the tm mailing lists. Anyway
- direct-mail for authors might be ignored. Please send mail to the
- tm mailing lists.
-
-
-CVS based development
-=====================
-
- If you would like to join CVS based development, please send mail to
-
- cvs@chamonix.jaist.ac.jp
-
- with your account name and UNIX style crypted password. We hope you
- will join the open development.
-
-
-Authors
-=======
-
-Original authors
-
- MORIOKA Tomohiko <morioka@jaist.ac.jp>
- (the author of mime-view and various parts of SEMI)
- UMEDA Masanobu <umerin@mse.kyutech.ac.jp>
- (the author of mime.el of emacs-mime-tools. mime.el is the
- origin of mime-edit.el of SEMI)
-
-Other authors
-
- Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
- (a major author of signature.el and a lot of codes)
- MASUTANI Yasuhiro <masutani@me.es.osaka-u.ac.jp>
- (anonymous ftp codes of mime-play.el)
- OKABE Yasuo <okabe@kudpc.kyoto-u.ac.jp>
- (a major author of mime-partial.el and signature.el)
-
- Steinar Bang <sb@metis.no>
- Steven L. Baur <steve@miranova.com>
- Kevin Broadey <KevinB@bartley.demon.co.uk>
- Alastair Burt <burt@dfki.uni-kl.de>
- Eric Ding <ericding@San-Jose.ate.slb.com>
- Thierry Emery <Thierry.Emery@aar.alcatel-alsthom.fr>
- Simon Josefsson <jas@pdc.kth.se>
- Jens Lautenbacher <jtl@tkm.physik.uni-karlsruhe.de>
- Carsten Leonhardt <leo@arioch.tng.oche.de>
- Pekka Marjola <marjola@bilbo.ntc.nokia.com>
- Hisashi Miyashita <himi@bird.scphys.kyoto-u.ac.jp>
- Kazuhiro Ohta <ohta@ele.cst.nihon-u.ac.jp>
- Alexandre Oliva <oliva@dcc.unicamp.br>
- François Pinard <pinard@iro.umontreal.ca>
- Artur Pioro <artur@flugor.if.uj.edu.pl>
- Dan Rich <drich@morpheus.corp.sgi.com>
- (contribute to evolve mime-image.el with XEmacs)
- Katsumi Yamaoka <yamaoka@ga.sony.co.jp>
+++ /dev/null
-;;; -*-Emacs-Lisp-*-
-
-;; SEMI-CFG: installation setting about SEMI.
-
-;;; Code:
-
-(require 'cl)
-
-(defvar default-load-path load-path)
-
-(add-to-list 'load-path
- (expand-file-name "../../site-lisp/apel" data-directory))
-(add-to-list 'load-path
- (expand-file-name "." data-directory))
-
-(when (boundp 'LISPDIR)
- (add-to-list 'default-load-path LISPDIR)
- (add-to-list 'load-path LISPDIR)
- (add-to-list 'load-path (expand-file-name "apel" LISPDIR))
- )
-
-(condition-case nil
- (require 'install)
- (error (error "Please install APEL 8.7 or later.")))
-
-(add-path "bitmap-mule")
-(add-path "flim")
-
-(add-to-list 'load-path (expand-file-name "."))
-
-(or (module-installed-p 'calist)
- (error "Please install APEL 8.7 or later."))
-(or (module-installed-p 'mime)
- (error "Please install FLIM 1.6.0 or later."))
-(if (module-installed-p 'tm-view)
- (message "Please remove tm from load-path."))
-
-
-;;; @ Please specify optional package directory if you use them.
-;;;
-
-;; It is only necessary to use `add-path' if these packages are not
-;; already on the standard load-path of Emacs.
-
-;; Function `get-latest-path' detect latest version of such package
-;; under load-path directories. If you want to use a version of a
-;; package instead of latest version, please specify by argument of
-;; function `add-path'.
-
-;; Function `add-path' finds path under load-path directories. If a
-;; package does not exist in load-path, please specify by absolutely
-;; (`~/' is available), for example
-;; (add-path "~/lib/elisp/mailcrypt-3.4")
-;; or
-;; (add-path "/opt/share/xmule/site-lisp/mailcrypt-3.4")
-
-
-;;; @@ Please specify Mailcrypt path.
-;;;
-
-;; Use latest version installed in load-path.
-
-(let ((path (get-latest-path "mailcrypt" 'all-paths)))
- (if path
- (add-path path)
- ))
-
-;; Or please specify path.
-;; (add-path "mailcrypt-3.4" 'all-paths)
-
-
-;;; @@ Please specify BBDB path.
-;;;
-
-(let ((path (get-latest-path "bbdb" 'all-paths)))
- (when path
- (add-path path)
- (add-path (expand-file-name "lisp" path)) ; run-in-place installation
- ))
-
-;; Or please specify path.
-;; (add-path "bbdb-1.50" 'all-paths)
-
-
-;;;
-;;; @@ Please specify Emacs/W3 path.
-;;;
-
-(let ((path (get-latest-path "w3" 'all-paths)))
- (when path
- (add-path path)
- (add-path (expand-file-name "lisp" path)) ; run-in-place installation
- ))
-
-;; Or please specify path.
-;; (add-path "w3-4.0pre.20" 'all-paths)
-
-
-;;; @ shell
-;;;
-
-;; Please specify shell command path.
-(setq SHELL
- (find-if (function file-exists-p)
- '("/bin/sh" "/usr/bin/sh")
- ))
-
-;; Please specify shell command option.
-(setq SHELLOPTION "-c")
-
-
-;;; @ Please specify prefix of install directory.
-;;;
-
-;; Please specify install path prefix.
-;; If it is omitted, shared directory (maybe /usr/local is used).
-(defvar PREFIX install-prefix)
-;;(setq PREFIX "~/")
-
-;; Please specify install path prefix for binaries.
-(defvar EXEC_PREFIX
- (if (or running-emacs-18 running-xemacs)
- (expand-file-name "../../.." exec-directory)
- (expand-file-name "../../../.." exec-directory)
- ))
-
-;; Please specify emu prefix [optional]
-(setq EMU_PREFIX
- (if (string-match "XEmacs" emacs-version)
- "emu"
- ""))
-
-;; Please specify SEMI prefix [optional]
-(setq SEMI_PREFIX "semi")
-
-
-;;; @ executables
-;;;
-
-;; Please specify binary path.
-(defvar BIN_DIR (expand-file-name "bin" EXEC_PREFIX))
-
-;; Please specify binary path. (for external method scripts)
-(setq METHOD_DIR (expand-file-name "share/semi" PREFIX))
-
-
-\f
-
-;;; @ optional settings
-;;;
-
-;; It is generated by automatically. Please set variable `PREFIX'.
-;; If you don't like default directory tree, please set it.
-(defvar LISPDIR (install-detect-elisp-directory PREFIX))
-;; (setq install-default-elisp-directory "~/lib/emacs/lisp")
-
-(setq SEMI_KERNEL_DIR (expand-file-name SEMI_PREFIX LISPDIR))
-(setq SETUP_FILE_DIR SEMI_KERNEL_DIR)
-
-(setq METHOD_SRC_DIR "methods")
-(setq METHODS
- '("tm-au" "tm-file" "tm-html" "tm-image" "tm-mpeg"
- "tm-plain" "tm-ps"
- "tmdecode"))
-
-;;; SEMI-CFG ends here
+++ /dev/null
-;;; -*-Emacs-Lisp-*-
-
-;; SEMI-ELS: list of SEMI modules to install
-
-;;; Code:
-
-(setq semi-modules-to-compile
- '(signature
- semi-def mime-view mime-text mime-play mime-partial mime-edit
- semi-setup mail-mime-setup))
-
-(setq semi-modules-not-to-compile nil)
-
-(mapcar (function
- (lambda (cell)
- (let ((c-module (car cell))
- (i-modules (cdr cell))
- )
- (if (module-installed-p c-module)
- (setq semi-modules-to-compile
- (nconc semi-modules-to-compile i-modules))
- (setq semi-modules-not-to-compile
- (nconc semi-modules-not-to-compile i-modules))
- )
- )))
- '((mailcrypt mime-pgp mime-mc)
- (bbdb mime-bbdb)
- (w3 mime-w3)
- ))
-
-(if (or (string-match "XEmacs" emacs-version)
- (featurep 'mule))
- (setq semi-modules-to-compile
- (nconc semi-modules-to-compile '(mime-image)))
- )
-
-(setq semi-modules (append semi-modules-to-compile
- semi-modules-not-to-compile))
-
-;;; SEMI-ELS ends here
+++ /dev/null
-;;; -*-Emacs-Lisp-*-
-;;;
-;;; $Id: SEMI-MK,v 1.2 1998-03-13 12:55:52 morioka Exp $
-;;;
-;;; Code:
-
-(defun config-semi ()
- (let (prefix exec-prefix lisp-dir)
- (and (setq prefix (car command-line-args-left))
- (or (string-equal "NONE" prefix)
- (defvar PREFIX prefix)
- ))
- (setq command-line-args-left (cdr command-line-args-left))
- (and (setq exec-prefix (car command-line-args-left))
- (or (string-equal "NONE" exec-prefix)
- (defvar EXEC_PREFIX exec-prefix)
- ))
- (setq command-line-args-left (cdr command-line-args-left))
- (and (setq lisp-dir (car command-line-args-left))
- (or (string-equal "NONE" lisp-dir)
- (defvar LISPDIR lisp-dir)
- ))
- (setq command-line-args-left (cdr command-line-args-left))
- )
- (load-file "SEMI-CFG")
- (load-file "SEMI-ELS")
- (princ (format "PREFIX=%s\tEXEC_PREFIX=%s
-LISPDIR=%s\n" PREFIX EXEC_PREFIX LISPDIR))
- )
-
-(defun directory= (dir1 dir2)
- (string= (file-name-as-directory dir1)(file-name-as-directory dir2))
- )
-
-(defun compile-semi ()
- (config-semi)
- (print load-path)
- (compile-elisp-modules semi-modules-to-compile ".")
- (compile-elisp-module 'mime-setup ".")
- )
-
-(defun install-semi ()
- (config-semi)
- (princ (format "%s\n" emacs-version))
- (install-elisp-modules semi-modules "." SEMI_KERNEL_DIR)
- (install-elisp-modules '(mime-setup) "." SETUP_FILE_DIR)
- )
-
-(defun install-execs ()
- (config-semi)
- (install-files METHODS METHOD_SRC_DIR METHOD_DIR nil t)
- )
-
-;;; SEMI-MK ends here
+++ /dev/null
-* MIME-View
-
-** mime-entity-*
-
- mime-entity related functions.
-
-
-** mime-raw-*
-
- mime-raw-buffer related features.
-
- - buffer local variables in mime-raw-buffer
-
- - functions expected running in mime-raw-buffer
-
-
-** mime-preview-*
-
- mime-preview-buffer related features.
-
- - buffer local variables in mime-preview-buffer
-
- - functions expected running in mime-preview-buffer
-
-
-** mime-display-*
-
- - functions to make presentation in mime-preview-buffer from
- element(s) of mime-raw-buffer
-
-
-** mime-view-*
-
- MIME-View related general features.
-
- - variables or functions related with both mime-raw-buffer and
- mime-preview-buffer
-
- - customizable variables
-
- - view something and enter another mode in another buffer
+++ /dev/null
-[TODO]
-======
-
-* MIME-View
-
-** dynamic configuration for 'mime-preview-condition
-
-** multipart/related support
-
-** Don't use filter-model
-
- tomo (major developer of SEMI) and akr (major developer of
-FLIM-FLAM) discussed about Emacs 20.3 problem related with SEMI and
-FLIM. They found essential problem with Emacs 20.3 are:
-
- - Emacs 20.3 separates string-type to unibyte-string and
- multibyte-string. Emacs 20.3 has enough APIs to treat them.
-
- - Buffer has mode about interpretation of contents. Each mode is
- designed to save semantics as characters. Namely buffer contains
- unibyte-characters or multibyte-characters. One buffer can not
- contain both representations.
-
- - {decode|encode}-coding-{region|string} run in byte world. So it
- is not harmonized with other API.
-
- - It seems easy to write code in one mode or one world
- (unibyte-string or multibyte-string). However it seems not easy
- to write inter-mode program, such as SEMI.
-
- - Byte <-> byte conversion, such as base64, quoted-printable, must
- be run only with unibyte-mode.
-
- - Byte <-> character conversion, such as
- {decode|encode}-coding-region, should not be defined in single
- buffer. Instead of them, decoder should read from unibyte buffer
- and output to multibyte buffer. Similarly, encoder should read
- from multibyte buffer and output to unibyte buffer.
- `insert-buffer-substring' like API may be suitable. Anyway Emacs
- introduces multiple representations, so it should be redesigned
- based on multiple representation world model.
-
- Anyway FLIM should introduce new APIs based on inter-representation
-world model. Conventional APIs should be implemented based on new
-APIs.
-
- SEMI should abolish filter model and introduce new methods to
-display inline data. These methods should use new FLIM APIs based on
-inter-representation world model.
-
-
-* MIME-Edit
-
-** WYSIWYG editing support
-
-** Use MIME-Preview like tag and display
-
-** Redesign to use two buffers for one message
-
- MIME-View is based on "Multiple Representation Space (layer) Model".
-In this model, network representation and its presentation are
-distinguished. Thus MIME-View uses two buffers for one message,
-'mime-raw-buffer (for network representation) and
-'mime-preview-buffer. MIME-View manages them based on information of
-entities. According to experience of MIME-View, this model is good to
-treat complex structured data, such as MIME.
-
- MIME-Edit was designed to use one buffer for one message. So it is
-hard to edit like WYSIWYG style. Format of tag is limited by
-translation. Content of forwarded message is unreadable. It is
-better to introduce "Multiple Representation Space Model" to resolve
-these problems.
-
-** Check available MIME-charset
-
- MIME-charset \e$B0J30$,@8@.$5$l$k>l9g$N=hM}$r;XDj$G$-$k$h$&$K$9$k!#\e(B
-
- For example:
-
- (a) translate problematic characters to similar representation
- (b) display warning message
- (e.g. "`x-ctext' is generated. Do you send it? (yes/no)")
- (c) stop sending
-
-** Don't use buffer-local variables
-
- Don't use buffer-local variables to control behavior about
-translating to network representation, such as 'mime-transfer-level,
-'mime-transfer-level-string,
-'mime-edit-charset-default-encoding-alist, 'mime-edit-pgp-processing.
-Because they have problem with Semi-gnus.
-
-
-* Etc.
-
-** Write manual
-
-
-
-[Known Bugs]
-============
-
-* MIME-Edit
+++ /dev/null
-[SEMI Version names]
-
-0.72 -------- --------
-0.75 -------- --------
-0.83 -------- --------
-0.87 -------- --------
-0.88 -------- --------
-0.91 -------- --------
-0.92 -------- --------
-
-;;-------------------------------------------------------------------------
-;; Hokuriku Railway \e$(BKLN&E4F;\e(B
-;; Ishikawa Line \e$(B@P@n@~\e(B
-;;-------------------------------------------------------------------------
-0.96 Kaga-Ichinomiya \e$(B2C2l0l$N5\\e(B ; \e$(B!JGr;3Hf\e$(D5/\e$(B?@<R!K\e(B
-0.97 Naka-Tsurugi \e$(BCfDaMh\e(B
-0.112 Tsurugi \e$(BDaMh\e(B ; <=> \e$(B$8$c$$%P%9\e(B
-0.115 Hinomiko \e$(BF|8f;R\e(B
-0.115.1 Oyanagi \e$(B>.Lx\e(B
-0.115.2 Inokuchi \e$(B0f8}\e(B
-0.116 D\e-Dòhòji\e-A \e$(BF;K!;{\e(B
-0.118 Sodani \e$(BA>C+\e(B
-0.118.1 Shijima \e$(B;M==K|\e(B
-0.118.2 Otomaru \e$(B254]\e(B
-1.0.0 Nukaj\e-Dþtaku-mae\e-A \e$(B3[=;BpA0\e(B
-1.0.1 Magae \e$(BGOBX\e(B
-1.0.2 Nonoichi-K\e-Dòdaimae\e-A \e$(BLn!9;T9)BgA0\e(B
-1.1.0 Nonoichi \e$(BLn!9;T\e(B
-1.1.1 Oshino \e$(B2!Ln\e(B
-1.1.2 Shin-Nishikanazawa \e$(B?7@>6bBt\e(B ; <=> JR \e$(B@>6bBt\e(B
-1.2.0 Nishiizumi \e$(B@>@t\e(B
-1.2.1 Nomachi \e$(BLnD.\e(B
-
-;;-------------------------------------------------------------------------
-;; West Japan Railway \e$(B@>F|K\N95RE4F;\e(B http://www.westjr.co.jp/
-;; Hokuriku Line \e$(BKLN&K\@~\e(B
-;;-------------------------------------------------------------------------
-1.2.2 Naoetsu \e$(BD>9>DE\e(B ; = JR \e$(B?.1[K\@~\e(B
-1.2.3 Tanihama \e$(BC+IM\e(B
-1.2.4 Arimagawa \e$(BM-4V@n\e(B
-1.3.0 Nadachi \e$(BL>N)\e(B
-1.3.1 Tsutsuishi \e$(BE{@P\e(B
-1.3.2 N\e-Dò\e-A \e$(BG=@8\e(B
-1.3.3 Uramoto \e$(B1:K\\e(B
-1.3.4 Kajiyashiki \e$(B3a20I_\e(B
-1.4.0 Itoigawa \e$(B;e5{@n\e(B ; = JR \e$(BBg;e@~\e(B
-1.4.1 \e-DÃ’mi\e-A \e$(B@D3$\e(B
-1.4.2 Oyashirazu \e$(B?FITCN\e(B
-1.4.3 Ichiburi \e$(B;T?6\e(B
-1.4.4 Ecch\e-Dþ-Miyazaki\e-A \e$(B1[Cf5\:j\e(B
-1.4.5 Tomari \e$(BGq\e(B
-1.4.6 Ny\e-Dþzen\e-A \e$(BF~A1\e(B
-1.5.0 Nishi-Ny\e-Dþzen\e-A \e$(B@>F~A1\e(B
-1.5.1 Ikuji \e$(B@8CO\e(B
-1.5.2 Kurobe \e$(B9uIt\e(B
-1.5.3 Uozu \e$(B5{DE\e(B ; <=> \e$(BIY;3COJ}E4F;\e(B
-1.5.4 Higashi-Namerikawa \e$(BEl3j@n\e(B
-1.6.0 Namerikawa \e$(B3j@n\e(B ; <=> \e$(BIY;3COJ}E4F;\e(B
-1.7.0 Mizuhashi \e$(B?e66\e(B
-1.7.1 Higashi-Toyama \e$(BElIY;3\e(B
-1.8.0 Toyama \e$(BIY;3\e(B ; = JR \e$(B9b;3K\@~!"IY;39A@~\e(B
-: : :
-------- Takaoka \e$(B9b2,\e(B ; = JR \e$(BI98+@~!">kC<@~\e(B
-: : :
-------- Higashi-Kanazawa \e$(BEl6bBt\e(B
-------- Kanazawa \e$(B6bBt\e(B ; <=> \e$(BKLN&E4F;\e(B \e$(BKLE46bBt\e(B
-------- Nishi-Kanazawa \e$(B@>6bBt\e(B ; <=> \e$(BKLN&E4F;\e(B \e$(B?7@>6bBt\e(B
-------- (JR) Nonoichi \e$(BLn!9;T\e(B
-: : :
-------- Tsuruga \e$(BFX2l\e(B ; = JR \e$(B>.IM@~\e(B
-------- Shin-Hikida \e$(B?7I%ED\e(B
-------- \e-DÃ’mi-Shiotsu\e-A \e$(B6a9>1vDE\e(B ; = JR \e$(B8P@>@~\e(B
-------- Yogo \e$(BM>8b\e(B
-------- Kinomoto \e$(BLZ%NK\\e(B
-------- Takatsuki \e$(B9b7n\e(B
-------- Kawake \e$(B2OLS\e(B
-------- Torahime \e$(B8WI1\e(B
-------- Nagahama \e$(BD9IM\e(B
-------- Tamura \e$(BEDB<\e(B
-------- Sakata \e$(B:dED\e(B
- (Maibara) (\e$(BJF86\e(B) ; = JR \e$(BEl3$F;K\@~\e(B
-
-
-[WEMI version names]
-
-;;-------------------------------------------------------------------------
-;; East Japan Railway \e$(BElF|K\N95RE4F;\e(B http://www.jreast.co.jp/
-;; T\e-Dòkaidò\e-A Line \e$(BEl3$F;K\@~\e(B
-;;-------------------------------------------------------------------------
-1.2.0 T\e-Dòkyò\e-A \e$(BEl5~\e(B
-1.2.1 Shinbashi \e$(B?766\e(B ; = JR \e$(B;3<j@~!"2#?\2l@~\e(B
-1.2.2 Shinagawa \e$(BIJ@n\e(B ; = JR \e$(B;3<j@~!"2#?\2l@~\e(B
-1.2.3 Kawasaki \e$(B@n:j\e(B ; = JR \e$(BFnIp@~\e(B
-1.2.4 Yokohama \e$(B2#IM\e(B ; = JR \e$(B5~IMElKL@~!&:,4_@~!"2#?\2l@~\e(B
-1.3.0 Totsuka \e$(B8MDM\e(B ; = JR \e$(B2#?\2l@~\e(B
-1.3.1 \e-DÃ’funa\e-A \e$(BBgA%\e(B ; = JR \e$(B:,4_@~!"2#?\2l@~\e(B
-1.4.0 Fujisawa \e$(BF#Bt\e(B ; <=> \e$(B>.ED5^EEE4\e(B \e$(B9>%NEg@~!"9>%NEgEEE4\e(B
-1.4.1 Tsujid\e-Dò\e-A \e$(@DT\e$(BF2\e(B ; \e$(B!J!V\e$(@DT\e$(B!W\e(B= J90@B-4454:128b\e$(B!K\e(B
-1.4.2 Chigasaki \e$(B3}%v:j\e(B ; = JR \e$(BAjLO@~\e(B
-1.4.3 Hiratsuka \e$(BJ?DM\e(B
-1.4.4 \e-DÃ’iso\e-A \e$(BBg0k\e(B
-1.4.5 Ninomiya \e$(BFs5\\e(B
-1.4.6 K\e-Dòzu\e-A \e$(B9qI\DE\e(B ; = JR \e$(B8fEB>l@~\e(B
-1.5.0 Kamonomiya \e$(B3{5\\e(B
-1.5.1 Odawara \e$(B>.ED86\e(B ; <=> \e$(B>.ED5^!"H":,EP;3E4F;!"0KF&H":,E4F;\e(B
-1.5.2 Hayakawa \e$(BAa@n\e(B
-1.5.3 Nebukawa \e$(B:,I\@n\e(B
-1.5.4 Manazuru \e$(B??Da\e(B
-1.6.0 Yugawara \e$(BEr2O86\e(B
-1.7.0 Atami \e$(BG.3$\e(B ; = JR \e$(B0KEl@~\e(B
-;;-------------------------------------------------------------------------
-;; Central Japan Railway \e$(BEl3$N95RE4F;\e(B
-;;-------------------------------------------------------------------------
-1.7.1 Kan'nami \e$(BH!Fn\e(B
------ Mishima \e$(B;0Eg\e(B ; = \e$(B0KF&H":,E4F;\e(B
------ Numazu \e$(B>BDE\e(B ; = JR \e$(B8fEB>l@~\e(B
------ Katahama \e$(BJRIM\e(B
------ Hara \e$(B86\e(B
------ Higashi-Tagonoura \e$(BElED;R%N1:\e(B
------ Yoshiwara \e$(B5H86\e(B ; = \e$(B3YFnE4F;\e(B
------ Fuji \e$(BIY;N\e(B ; = JR \e$(B?H1d@~\e(B
-: : :
------ Kanayama \e$(B6b;3\e(B ; =\e$(B!J\e(BJR \e$(BCf1{K\@~!K\e(B
------ Ot\e-Dòbashi\e-A \e$(BHxF,66\e(B
------ Nagoya \e$(BL>8E20\e(B ; = JR \e$(B4X@>K\@~!J!&Cf1{K\@~!K\e(B
-: : :
------ Gifu \e$(B4tIl\e(B ; = JR \e$(B9b;3K\@~\e(B
-: : :
------ Samegai \e$(B@C%v0f\e(B
-;;-------------------------------------------------------------------------
-;; West Japan Railway \e$(B@>F|K\N95RE4F;\e(B http://www.westjr.co.jp/
-;;-------------------------------------------------------------------------
------ Maibara \e$(BJF86\e(B ; = JR \e$(BKLN&K\@~\e(B
-: : :
------ Kusatsu \e$(BApDE\e(B ; = JR \e$(BApDE@~\e(B
-: : :
------ Yamashina \e$(B;32J\e(B ; = JR \e$(B8P@>@~\e(B
------ Ky\e-Dòto\e-A \e$(B5~ET\e(B ; = JR \e$(BF`NI@~!&;31"K\@~\e(B
- ; <=> \e$(B6aE4\e(B \e$(B5~ET@~!"5~ET;T8rDL6I\e(B \e$(B1(4]@~\e(B
-: : :
------ \e-DÃ’saka\e-A \e$(BBg:e\e(B ; = JR \e$(BBg:e4D>u@~\e(B <=> JR \e$(BEl@>@~\e(B \e$(BKL?7CO\e(B
- ; <=> \e$(BBg:e;T8rDL6I!":e?@!":e5^\e(B \e$(BG_ED\e(B
-: : :
------ K\e-Dòbe\e-A \e$(B?@8M\e(B ; = JR \e$(B;3M[K\@~\e(B
-
-
-[REMI version names]
-
-;;-------------------------------------------------------------------------
-;; West Japan Railway \e$(B@>F|K\N95RE4F;\e(B http://www.westjr.co.jp/
-;; Himi Line \e$(BI98+@~\e(B
-;;-------------------------------------------------------------------------
-1.4.0 Himi \e$(BI98+\e(B
-1.5.0 Shimao \e$(BEgHx\e(B
-1.6.0 Amaharashi \e$(B1+@2\e(B
-1.7.0 Ecch\e-Dþ-Kokubu\e-A \e$(B1[Cf9qJ,\e(B
-------- Fushiki \e$(BIzLZ\e(B
-------- Noumachi \e$(BG=D.\e(B
-------- Ecch\e-Dþ-Nakagawa\e-A \e$(B1[CfCf@n\e(B
- (Takaoka) (\e$(B9b2,\e(B) ; = JR \e$(BKLN&K\@~!">kC<@~\e(B
-
-
-[etc.]
-
-;;-------------------------------------------------------------------------
-;; West Japan Railway \e$(B@>F|K\N95RE4F;\e(B http://www.westjr.co.jp/
-;; Kosei Line \e$(B8P@>@~\e(B
-;;-------------------------------------------------------------------------
-------- (\e-DÃ’mi-Shiotsu)\e-A (\e$(B6a9>1vDE\e(B) ; = JR \e$(BKLN&K\@~\e(B
-: : :
-------- Nishi-\e-DÃ’tsu\e-A \e$(B@>BgDE\e(B
- (Yamashina) (\e$(B;32J\e(B) ; = JR \e$(BEl3$F;K\@~\e(B
+++ /dev/null
---<<alternative>>-{
-
- It is available from
-
- ftp://ftp.jaist.ac.jp/pub/GNU/elisp/semi/
-
---[[message/external-body;
- access-type=anon-ftp;
- site="ftp.jaist.ac.jp";
- directory="/pub/GNU/elisp/semi";
- name="semi-VERSION.tar.gz";
- mode=image]]
-Content-Type: application/octet-stream;
- name="semi-VERSION.tar.gz";
- type=tar;
- conversions=gzip
---}-<<alternative>>
+++ /dev/null
-;;; mail-mime-setup.el --- setup file for mail-mode.
-
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: mail-mode, MIME, multimedia, multilingual, encoded-word
-
-;; This file is part of SEMI (Setting for Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'semi-setup)
-(require 'alist)
-
-
-(autoload 'turn-on-mime-edit "mime-edit"
- "Unconditionally turn on MIME-Edit minor mode." t)
-
-(autoload 'eword-decode-header "eword-decode"
- "Decode MIME encoded-words in header fields." t)
-
-
-;;; @ for mail-mode, RMAIL and VM
-;;;
-
-(add-hook 'mail-setup-hook 'eword-decode-header)
-(add-hook 'mail-setup-hook 'turn-on-mime-edit 'append)
-(add-hook 'mail-send-hook 'mime-edit-maybe-translate)
-(set-alist 'mime-edit-split-message-sender-alist
- 'mail-mode (function
- (lambda ()
- (interactive)
- (funcall send-mail-function)
- )))
-
-
-;;; @ for signature
-;;;
-
-(if mime-setup-use-signature
- (setq mail-signature nil)
- )
-
-
-;;; @ end
-;;;
-
-(provide 'mail-mime-setup)
-
-;;; mail-mime-setup.el ends here
+++ /dev/null
-;;; mime-bbdb.el --- SEMI shared module for BBDB
-
-;; Copyright (C) 1995,1996,1997 Shuhei KOBAYASHI
-;; Copyright (C) 1997,1998 MORIOKA Tomohiko
-
-;; Author: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Maintainer: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Keywords: BBDB, MIME, multimedia, multilingual, mail, news
-
-;; This file is part of SEMI (Suite of Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'path-util)
-(require 'std11)
-(require 'mime-view)
-
-(if (module-installed-p 'bbdb-com)
- (require 'bbdb-com)
- (eval-when-compile
- ;; imported from bbdb-1.51
- (defmacro bbdb-pop-up-elided-display ()
- '(if (boundp 'bbdb-pop-up-elided-display)
- bbdb-pop-up-elided-display
- bbdb-elided-display))
- (defmacro bbdb-user-mail-names ()
- "Returns a regexp matching the address of the logged-in user"
- '(or bbdb-user-mail-names
- (setq bbdb-user-mail-names
- (concat "\\b" (regexp-quote (user-login-name)) "\\b"))))
- ))
-
-
-;;; @ User Variables
-;;;
-
-(defvar mime-bbdb/use-mail-extr t
- "*If non-nil, `mail-extract-address-components' is used.
-Otherwise `mime-bbdb/extract-address-components' overrides it.")
-
-(defvar mime-bbdb/auto-create-p nil
- "*If t, create new BBDB records automatically.
-If function, then it is called with no arguments to decide whether an
-entry should be automatically creaded.
-
-mime-bbdb uses this variable instead of `bbdb/mail-auto-create-p' or
-`bbdb/news-auto-create-p' unless other tm-MUA overrides it.")
-
-(defvar mime-bbdb/delete-empty-window nil
- "*If non-nil, delete empty BBDB window.
-All bbdb-MUAs but bbdb-gnus display BBDB window even if it is empty.
-If you prefer behavior of bbdb-gnus, set this variable to t.
-
-For framepop users: If empty, `framepop-banish' is used instead.")
-
-;;; @ mail-extr
-;;;
-
-(defun mime-bbdb/extract-address-components (str)
- (let* ((ret (std11-extract-address-components str))
- (phrase (car ret))
- (address (car (cdr ret)))
- (methods mime-bbdb/canonicalize-full-name-methods))
- (while (and phrase methods)
- (setq phrase (funcall (car methods) phrase)
- methods (cdr methods)))
- (if (string= address "") (setq address nil))
- (if (string= phrase "") (setq phrase nil))
- (list phrase address)
- ))
-
-(or mime-bbdb/use-mail-extr
- (progn
- (require 'mail-extr) ; for `what-domain'
- (or (fboundp 'tm:mail-extract-address-components)
- (fset 'tm:mail-extract-address-components
- (symbol-function 'mail-extract-address-components)))
- (fset 'mail-extract-address-components
- (symbol-function 'mime-bbdb/extract-address-components))
- ))
-
-
-;;; @ bbdb-extract-field-value
-;;;
-
-(or (fboundp 'tm:bbdb-extract-field-value)
- (progn
- ;; (require 'bbdb-hooks) ; not provided.
- ;; (or (fboundp 'bbdb-extract-field-value) ; defined as autoload
- (or (fboundp 'bbdb-header-start)
- (load "bbdb-hooks"))
- (fset 'tm:bbdb-extract-field-value
- (symbol-function 'bbdb-extract-field-value))
- (defun bbdb-extract-field-value (field)
- (let ((value (tm:bbdb-extract-field-value field)))
- (and value
- (eword-decode-string value))))
- ))
-
-
-;;; @ full-name canonicalization methods
-;;;
-
-(defun mime-bbdb/canonicalize-spaces (str)
- (let (dest)
- (while (string-match "\\s +" str)
- (setq dest (cons (substring str 0 (match-beginning 0)) dest))
- (setq str (substring str (match-end 0)))
- )
- (or (string= str "")
- (setq dest (cons str dest)))
- (setq dest (nreverse dest))
- (mapconcat 'identity dest " ")
- ))
-
-(defun mime-bbdb/canonicalize-dots (str)
- (let (dest)
- (while (string-match "\\." str)
- (setq dest (cons (substring str 0 (match-end 0)) dest))
- (setq str (substring str (match-end 0)))
- )
- (or (string= str "")
- (setq dest (cons str dest)))
- (setq dest (nreverse dest))
- (mapconcat 'identity dest " ")
- ))
-
-(defvar mime-bbdb/canonicalize-full-name-methods
- '(eword-decode-string
- mime-bbdb/canonicalize-dots
- mime-bbdb/canonicalize-spaces))
-
-
-;;; @ BBDB functions for mime-view-mode
-;;;
-
-(defun mime-bbdb/update-record (&optional offer-to-create)
- "Return the record corresponding to the current MIME previewing message.
-Creating or modifying it as necessary. A record will be created if
-mime-bbdb/auto-create-p is non-nil, or if OFFER-TO-CREATE is non-nil and
-the user confirms the creation."
- (save-excursion
- (if (and mime-preview-buffer
- (get-buffer mime-preview-buffer))
- (set-buffer mime-preview-buffer))
- (if bbdb-use-pop-up
- (mime-bbdb/pop-up-bbdb-buffer offer-to-create)
- (let* ((message (get-text-property (point-min) 'mime-view-entity))
- (from (mime-fetch-field 'From message))
- addr)
- (if (or (null from)
- (null (setq addr (car (mime-read-field 'From message))))
- (string-match (bbdb-user-mail-names)
- (std11-address-string addr)))
- (setq from (or (mime-fetch-field 'To message)
- from))
- )
- (if from
- (bbdb-annotate-message-sender
- (eword-decode-structured-field-body from) t
- (or (bbdb-invoke-hook-for-value mime-bbdb/auto-create-p)
- offer-to-create)
- offer-to-create))
- ))))
-
-(defun mime-bbdb/annotate-sender (string)
- "Add a line to the end of the Notes field of the BBDB record
-corresponding to the sender of this message."
- (interactive
- (list (if bbdb-readonly-p
- (error "The Insidious Big Brother Database is read-only.")
- (read-string "Comments: "))))
- (bbdb-annotate-notes (mime-bbdb/update-record t) string))
-
-(defun mime-bbdb/edit-notes (&optional arg)
- "Edit the notes field or (with a prefix arg) a user-defined field
-of the BBDB record corresponding to the sender of this message."
- (interactive "P")
- (let ((record (or (mime-bbdb/update-record t)
- (error ""))))
- (bbdb-display-records (list record))
- (if arg
- (bbdb-record-edit-property record nil t)
- (bbdb-record-edit-notes record t))))
-
-(defun mime-bbdb/show-sender ()
- "Display the contents of the BBDB for the sender of this message.
-This buffer will be in bbdb-mode, with associated keybindings."
- (interactive)
- (let ((record (mime-bbdb/update-record t)))
- (if record
- (bbdb-display-records (list record))
- (error "unperson"))))
-
-(defun mime-bbdb/pop-up-bbdb-buffer (&optional offer-to-create)
- "Make the *BBDB* buffer be displayed along with the MIME preview window(s),
-displaying the record corresponding to the sender of the current message."
- (let ((framepop (eq temp-buffer-show-function 'framepop-display-buffer)))
- (or framepop
- (bbdb-pop-up-bbdb-buffer
- (function
- (lambda (w)
- (let ((b (current-buffer)))
- (set-buffer (window-buffer w))
- (prog1 (eq major-mode 'mime-view-mode)
- (set-buffer b)))))))
- (let ((bbdb-gag-messages t)
- (bbdb-use-pop-up nil)
- (bbdb-electric-p nil))
- (let ((record (mime-bbdb/update-record offer-to-create))
- (bbdb-elided-display (bbdb-pop-up-elided-display))
- (b (current-buffer)))
- (if framepop
- (if record
- (bbdb-display-records (list record))
- (framepop-banish))
- (bbdb-display-records (if record (list record) nil))
- (if (and (null record)
- mime-bbdb/delete-empty-window)
- (delete-windows-on (get-buffer "*BBDB*"))))
- (set-buffer b)
- record))))
-
-(defun mime-bbdb/define-keys ()
- (let ((mime-view-mode-map (current-local-map)))
- (define-key mime-view-mode-map ";" 'mime-bbdb/edit-notes)
- (define-key mime-view-mode-map ":" 'mime-bbdb/show-sender)
- ))
-
-(add-hook 'mime-view-define-keymap-hook 'mime-bbdb/define-keys)
-
-
-;;; @ for signature.el
-;;;
-
-(defun signature/get-bbdb-sigtype (addr)
- "Extract sigtype information from BBDB."
- (let ((record (bbdb-search-simple nil addr)))
- (and record
- (bbdb-record-getprop record 'sigtype))
- ))
-
-(defun signature/set-bbdb-sigtype (sigtype addr)
- "Add sigtype information to BBDB."
- (let* ((bbdb-notice-hook nil)
- (record (bbdb-annotate-message-sender
- addr t
- (bbdb-invoke-hook-for-value
- bbdb/mail-auto-create-p)
- t)))
- (if record
- (progn
- (bbdb-record-putprop record 'sigtype sigtype)
- (bbdb-change-record record nil))
- )))
-
-(defun signature/get-sigtype-from-bbdb (&optional verbose)
- (let* ((to (std11-field-body "To"))
- (addr (and to
- (car (cdr (mail-extract-address-components to)))))
- (sigtype (signature/get-bbdb-sigtype addr))
- return
- )
- (if addr
- (if verbose
- (progn
- (setq return (signature/get-sigtype-interactively sigtype))
- (if (and (not (string-equal return sigtype))
- (y-or-n-p
- (format "Register \"%s\" for <%s>? " return addr))
- )
- (signature/set-bbdb-sigtype return addr)
- )
- return)
- (or sigtype
- (signature/get-signature-file-name))
- ))
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-bbdb)
-
-(run-hooks 'mime-bbdb-load-hook)
-
-;;; end of mime-bbdb.el
+++ /dev/null
-;;; mime-edit.el --- Simple MIME Composer for GNU Emacs
-
-;; Copyright (C) 1993,1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: UMEDA Masanobu <umerin@mse.kyutech.ac.jp>
-;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1994/08/21 renamed from mime.el
-;; Renamed: 1997/2/21 from tm-edit.el
-;; Keywords: MIME, multimedia, multilingual, mail, news
-
-;; This file is part of SEMI (Sophisticated Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;; This is an Emacs minor mode for editing Internet multimedia
-;; messages formatted in MIME (RFC 2045, 2046, 2047, 2048 and 2049).
-;; All messages in this mode are composed in the tagged MIME format,
-;; that are described in the following examples. The messages
-;; composed in the tagged MIME format are automatically translated
-;; into a MIME compliant message when exiting the mode.
-
-;; Mule (multilingual feature of Emacs 20 and multilingual extension
-;; for XEmacs 20) has a capability of handling multilingual text in
-;; limited ISO-2022 manner that is based on early experiences in
-;; Japanese Internet community and resulted in RFC 1468 (ISO-2022-JP
-;; charset for MIME). In order to enable multilingual capability in
-;; single text message in MIME, charset of multilingual text written
-;; in Mule is declared as either `ISO-2022-JP-2' [RFC 1554]. Mule is
-;; required for reading the such messages.
-
-;; This MIME composer can work with Mail mode, mh-e letter Mode, and
-;; News mode. First of all, you need the following autoload
-;; definition to load mime-edit-mode automatically:
-;;
-;; (autoload 'turn-on-mime-edit "mime-edit"
-;; "Minor mode for editing MIME message." t)
-;;
-;; In case of Mail mode (includes VM mode), you need the following
-;; hook definition:
-;;
-;; (add-hook 'mail-mode-hook 'turn-on-mime-edit)
-;; (add-hook 'mail-send-hook 'mime-edit-maybe-translate)
-;;
-;; In case of MH-E, you need the following hook definition:
-;;
-;; (add-hook 'mh-letter-mode-hook
-;; (function
-;; (lambda ()
-;; (turn-on-mime-edit)
-;; (make-local-variable 'mail-header-separator)
-;; (setq mail-header-separator "--------")
-;; ))))
-;; (add-hook 'mh-before-send-letter-hook 'mime-edit-maybe-translate)
-;;
-;; In case of News mode, you need the following hook definition:
-;;
-;; (add-hook 'news-reply-mode-hook 'turn-on-mime-edit)
-;; (add-hook 'news-inews-hook 'mime-edit-maybe-translate)
-;;
-;; In case of Emacs 19, it is possible to emphasize the message tags
-;; using font-lock mode as follows:
-;;
-;; (add-hook 'mime-edit-mode-hook
-;; (function
-;; (lambda ()
-;; (font-lock-mode 1)
-;; (setq font-lock-keywords (list mime-edit-tag-regexp))
-;; ))))
-
-;; The message tag looks like:
-;;
-;; --[[TYPE/SUBTYPE;PARAMETERS][ENCODING]]
-;;
-;; The tagged MIME message examples:
-;;
-;; This is a conventional plain text. It should be translated into
-;; text/plain.
-;;
-;;--[[text/plain]]
-;; This is also a plain text. But, it is explicitly specified as is.
-;;--[[text/plain; charset=ISO-8859-1]]
-;; This is also a plain text. But charset is specified as iso-8859-1.
-;;
-;; ¡Hola! Buenos dÃas. ¿Cómo está usted?
-;;--[[text/enriched]]
-;; <center>This is a richtext.</center>
-;;
-;;--[[image/gif][base64]]^M...image encoded in base64 comes here...
-;;
-;;--[[audio/basic][base64]]^M...audio encoded in base64 comes here...
-
-;;; Code:
-
-(require 'emu)
-(require 'sendmail)
-(require 'mail-utils)
-(require 'mel)
-(require 'mime-view)
-(require 'signature)
-(require 'alist)
-
-
-;;; @ version
-;;;
-
-(defconst mime-edit-version-string
- `,(concat (car mime-user-interface-version) " "
- (mapconcat #'number-to-string
- (cddr mime-user-interface-version) ".")
- " - \"" (cadr mime-user-interface-version) "\""))
-
-
-;;; @ variables
-;;;
-
-(defgroup mime-edit nil
- "MIME edit mode"
- :group 'mime)
-
-(defcustom mime-ignore-preceding-spaces nil
- "*Ignore preceding white spaces if non-nil."
- :group 'mime-edit
- :type 'boolean)
-
-(defcustom mime-ignore-trailing-spaces nil
- "*Ignore trailing white spaces if non-nil."
- :group 'mime-edit
- :type 'boolean)
-
-(defcustom mime-ignore-same-text-tag t
- "*Ignore preceding text content-type tag that is same with new one.
-If non-nil, the text tag is not inserted unless something different."
- :group 'mime-edit
- :type 'boolean)
-
-(defcustom mime-auto-hide-body t
- "*Hide non-textual body encoded in base64 after insertion if non-nil."
- :group 'mime-edit
- :type 'boolean)
-
-(defcustom mime-edit-voice-recorder
- (function mime-edit-voice-recorder-for-sun)
- "*Function to record a voice message and encode it."
- :group 'mime-edit
- :type 'function)
-
-(defcustom mime-edit-mode-hook nil
- "*Hook called when enter MIME mode."
- :group 'mime-edit
- :type 'hook)
-
-(defcustom mime-edit-translate-hook nil
- "*Hook called before translating into a MIME compliant message.
-To insert a signature file automatically, call the function
-`mime-edit-insert-signature' from this hook."
- :group 'mime-edit
- :type 'hook)
-
-(defcustom mime-edit-exit-hook nil
- "*Hook called when exit MIME mode."
- :group 'mime-edit
- :type 'hook)
-
-(defvar mime-content-types
- '(("text"
- ;; Charset parameter need not to be specified, since it is
- ;; defined automatically while translation.
- ("plain"
- ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
- )
- ("richtext"
- ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
- )
- ("enriched"
- ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
- )
- ("x-latex"
- ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
- )
- ("html"
- ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
- )
- ("x-rot13-47-48")
- )
- ("message"
- ("external-body"
- ("access-type"
- ("anon-ftp"
- ("site" "ftp.jaist.ac.jp" "wnoc-fuk.wide.ad.jp" "nic.karrn.ad.jp")
- ("directory" "/pub/GNU/elisp/mime")
- ("name")
- ("mode" "image" "ascii" "local8"))
- ("ftp"
- ("site")
- ("directory")
- ("name")
- ("mode" "image" "ascii" "local8"))
- ("tftp" ("site") ("name"))
- ("afs" ("site") ("name"))
- ("local-file" ("site") ("name"))
- ("mail-server"
- ("server" "ftpmail@nic.karrn.ad.jp")
- ("subject"))
- ("url" ("url"))
- ))
- ("rfc822")
- ("news")
- )
- ("application"
- ("octet-stream" ("type" "" "tar" "shar"))
- ("postscript")
- ("x-kiss" ("x-cnf")))
- ("image"
- ("gif")
- ("jpeg")
- ("png")
- ("tiff")
- ("x-pic")
- ("x-mag")
- ("x-xwd")
- ("x-xbm")
- )
- ("audio" ("basic"))
- ("video" ("mpeg"))
- )
- "*Alist of content-type, subtype, parameters and its values.")
-
-(defcustom mime-file-types
- '(("\\.txt$"
- "text" "plain" nil
- nil
- "inline" (("filename" . file))
- )
- ("\\.pln$"
- "text" "plain" nil
- nil
- "inline" (("filename" . file))
- )
- ("\\.rtf$"
- "text" "richtext" nil
- nil
- nil nil)
- ("\\.html$"
- "text" "html" nil
- nil
- nil nil)
- ("\\.ps$"
- "application" "postscript" nil
- "quoted-printable"
- "attachment" (("filename" . file))
- )
- ("\\.jpg$"
- "image" "jpeg" nil
- "base64"
- "inline" (("filename" . file))
- )
- ("\\.gif$"
- "image" "gif" nil
- "base64"
- "inline" (("filename" . file))
- )
- ("\\.png$"
- "image" "png" nil
- "base64"
- "inline" (("filename" . file))
- )
- ("\\.tiff$"
- "image" "tiff" nil
- "base64"
- "inline" (("filename" . file))
- )
- ("\\.pic$"
- "image" "x-pic" nil
- "base64"
- "inline" (("filename" . file))
- )
- ("\\.mag$"
- "image" "x-mag" nil
- "base64"
- "inline" (("filename" . file))
- )
- ("\\.xbm$"
- "image" "x-xbm" nil
- "base64"
- "inline" (("filename" . file))
- )
- ("\\.xwd$"
- "image" "x-xwd" nil
- "base64"
- "inline" (("filename" . file))
- )
- ("\\.au$"
- "audio" "basic" nil
- "base64"
- "attachment" (("filename" . file))
- )
- ("\\.mpg$"
- "video" "mpeg" nil
- "base64"
- "attachment" (("filename" . file))
- )
- ("\\.el$"
- "application" "octet-stream" (("type" . "emacs-lisp"))
- "7bit"
- "attachment" (("filename" . file))
- )
- ("\\.lsp$"
- "application" "octet-stream" (("type" . "common-lisp"))
- "7bit"
- "attachment" (("filename" . file))
- )
- ("\\.tar\\.gz$"
- "application" "octet-stream" (("type" . "tar+gzip"))
- "base64"
- "attachment" (("filename" . file))
- )
- ("\\.tgz$"
- "application" "octet-stream" (("type" . "tar+gzip"))
- "base64"
- "attachment" (("filename" . file))
- )
- ("\\.tar\\.Z$"
- "application" "octet-stream" (("type" . "tar+compress"))
- "base64"
- "attachment" (("filename" . file))
- )
- ("\\.taz$"
- "application" "octet-stream" (("type" . "tar+compress"))
- "base64"
- "attachment" (("filename" . file))
- )
- ("\\.gz$"
- "application" "octet-stream" (("type" . "gzip"))
- "base64"
- "attachment" (("filename" . file))
- )
- ("\\.Z$"
- "application" "octet-stream" (("type" . "compress"))
- "base64"
- "attachment" (("filename" . file))
- )
- ("\\.lzh$"
- "application" "octet-stream" (("type" . "lha"))
- "base64"
- "attachment" (("filename" . file))
- )
- ("\\.zip$"
- "application" "zip" nil
- "base64"
- "attachment" (("filename" . file))
- )
- ("\\.diff$"
- "application" "octet-stream" (("type" . "patch"))
- nil
- "attachment" (("filename" . file))
- )
- ("\\.patch$"
- "application" "octet-stream" (("type" . "patch"))
- nil
- "attachment" (("filename" . file))
- )
- ("\\.signature"
- "text" "plain" nil nil nil nil)
- (".*"
- "application" "octet-stream" nil
- nil
- "attachment" (("filename" . file)))
- )
- "*Alist of file name, types, parameters, and default encoding.
-If encoding is nil, it is determined from its contents."
- :type `(repeat
- (list regexp
- ;; primary-type
- (choice :tag "Primary-Type"
- ,@(nconc (mapcar (lambda (cell)
- (list 'item (car cell))
- )
- mime-content-types)
- '(string)))
- ;; subtype
- (choice :tag "Sub-Type"
- ,@(nconc
- (apply #'nconc
- (mapcar (lambda (cell)
- (mapcar (lambda (cell)
- (list 'item (car cell))
- )
- (cdr cell)))
- mime-content-types))
- '(string)))
- ;; parameters
- (repeat :tag "Parameters of Content-Type field"
- (cons string (choice string symbol)))
- ;; content-transfer-encoding
- (choice :tag "Encoding"
- ,@(cons
- '(const nil)
- (mapcar (lambda (cell)
- (list 'item (car cell))
- )
- mime-file-encoding-method-alist)))
- ;; disposition-type
- (choice :tag "Disposition-Type"
- (item nil)
- (item "inline")
- (item "attachment")
- string)
- ;; parameters
- (repeat :tag "Parameters of Content-Disposition field"
- (cons string (choice string symbol)))
- ))
- :group 'mime-edit)
-
-
-;;; @@ about charset, encoding and transfer-level
-;;;
-
-(defvar mime-charset-type-list
- '((us-ascii 7 nil)
- (iso-8859-1 8 "quoted-printable")
- (iso-8859-2 8 "quoted-printable")
- (iso-8859-3 8 "quoted-printable")
- (iso-8859-4 8 "quoted-printable")
- (iso-8859-5 8 "quoted-printable")
- (koi8-r 8 "quoted-printable")
- (iso-8859-7 8 "quoted-printable")
- (iso-8859-8 8 "quoted-printable")
- (iso-8859-9 8 "quoted-printable")
- (iso-2022-jp 7 "base64")
- (iso-2022-kr 7 "base64")
- (euc-kr 8 "base64")
- (cn-gb2312 8 "base64")
- (gb2312 8 "base64")
- (cn-big5 8 "base64")
- (big5 8 "base64")
- (shift_jis 8 "base64")
- (iso-2022-jp-2 7 "base64")
- (iso-2022-int-1 7 "base64")
- ))
-
-(defvar mime-transfer-level 7
- "*A number of network transfer level. It should be bigger than 7.")
-(make-variable-buffer-local 'mime-transfer-level)
-
-(defsubst mime-encoding-name (transfer-level &optional not-omit)
- (cond ((> transfer-level 8) "binary")
- ((= transfer-level 8) "8bit")
- (not-omit "7bit")
- ))
-
-(defvar mime-transfer-level-string
- (mime-encoding-name mime-transfer-level 'not-omit)
- "A string formatted version of mime-transfer-level")
-(make-variable-buffer-local 'mime-transfer-level-string)
-
-
-;;; @@ about message inserting
-;;;
-
-(defvar mime-edit-yank-ignored-field-list
- '("Received" "Approved" "Path" "Replied" "Status"
- "Xref" "X-UIDL" "X-Filter" "X-Gnus-.*" "X-VM-.*")
- "Delete these fields from original message when it is inserted
-as message/rfc822 part.
-Each elements are regexp of field-name.")
-
-(defvar mime-edit-yank-ignored-field-regexp
- (concat "^"
- (apply (function regexp-or) mime-edit-yank-ignored-field-list)
- ":"))
-
-(defvar mime-edit-message-inserter-alist nil)
-(defvar mime-edit-mail-inserter-alist nil)
-
-
-;;; @@ about message splitting
-;;;
-
-(defcustom mime-edit-split-message t
- "*Split large message if it is non-nil."
- :group 'mime-edit
- :type 'boolean)
-
-(defcustom mime-edit-message-default-max-lines 1000
- "*Default maximum lines of a message."
- :group 'mime-edit
- :type 'integer)
-
-(defcustom mime-edit-message-max-lines-alist
- '((news-reply-mode . 500))
- "Alist of major-mode vs maximum lines of a message.
-If it is not specified for a major-mode,
-`mime-edit-message-default-max-lines' is used."
- :group 'mime-edit
- :type 'list)
-
-(defconst mime-edit-split-ignored-field-regexp
- "\\(^Content-\\|^Subject:\\|^Mime-Version:\\|Message-Id:\\)")
-
-(defvar mime-edit-split-blind-field-regexp
- "\\(^[BDFbdf]cc:\\|^cc:[ \t]*$\\)")
-
-(defvar mime-edit-split-message-sender-alist nil)
-
-(defvar mime-edit-news-reply-mode-server-running nil)
-
-
-;;; @@ about tag
-;;;
-
-(defconst mime-edit-single-part-tag-regexp
- "--[[][[]\\([^]]*\\)]\\([[]\\([^]]*\\)]\\|\\)]"
- "*Regexp of MIME tag in the form of [[CONTENT-TYPE][ENCODING]].")
-
-(defconst mime-edit-quoted-single-part-tag-regexp
- (concat "- " (substring mime-edit-single-part-tag-regexp 1)))
-
-(defconst mime-edit-multipart-beginning-regexp "--<<\\([^<>]+\\)>>-{\n")
-
-(defconst mime-edit-multipart-end-regexp "--}-<<\\([^<>]+\\)>>\n")
-
-(defconst mime-edit-beginning-tag-regexp
- (regexp-or mime-edit-single-part-tag-regexp
- mime-edit-multipart-beginning-regexp))
-
-(defconst mime-edit-end-tag-regexp
- (regexp-or mime-edit-single-part-tag-regexp
- mime-edit-multipart-end-regexp))
-
-(defconst mime-edit-tag-regexp
- (regexp-or mime-edit-single-part-tag-regexp
- mime-edit-multipart-beginning-regexp
- mime-edit-multipart-end-regexp))
-
-(defvar mime-tag-format "--[[%s]]"
- "*Control-string making a MIME tag.")
-
-(defvar mime-tag-format-with-encoding "--[[%s][%s]]"
- "*Control-string making a MIME tag with encoding.")
-
-
-;;; @@ multipart boundary
-;;;
-
-(defvar mime-multipart-boundary "Multipart"
- "*Boundary of a multipart message.")
-
-
-;;; @@ optional header fields
-;;;
-
-(defvar mime-edit-insert-x-emacs-field t
- "*If non-nil, insert X-Emacs header field.")
-
-(defvar mime-edit-x-emacs-value
- (if (featurep 'xemacs)
- (concat emacs-version (if (featurep 'mule)
- " with mule"
- " without mule"))
- (let ((ver (if (string-match "\\.[0-9]+$" emacs-version)
- (substring emacs-version 0 (match-beginning 0))
- emacs-version)))
- (if (featurep 'mule)
- (if (boundp 'enable-multibyte-characters)
- (concat "Emacs " ver
- (if enable-multibyte-characters
- (concat ", MULE " mule-version)
- " (with raw setting)")
- (if (featurep 'meadow)
- (concat ", " (Meadow-version))
- ))
- (concat "MULE " mule-version " based on Emacs " ver))
- ver)))
- "Body of X-Emacs field.
-If variable `mime-edit-insert-x-emacs-field' is not nil, it is
-inserted into message header.")
-
-\f
-;;; @ constants
-;;;
-
-(defconst mime-tspecials-regexp "[][()<>@,;:\\\"/?.= \t]"
- "*Specify MIME tspecials.
-Tspecials means any character that matches with it in header must be quoted.")
-
-(defconst mime-edit-mime-version-value
- (concat "1.0 (generated by " mime-edit-version-string ")")
- "MIME version number.")
-
-(defconst mime-edit-mime-version-field-for-message/partial
- (concat "MIME-Version: 1.0 (split by " mime-edit-version-string ")\n")
- "MIME version field for message/partial.")
-
-
-;;; @ keymap and menu
-;;;
-
-(defvar mime-edit-mode-flag nil)
-(make-variable-buffer-local 'mime-edit-mode-flag)
-
-(defvar mime-edit-mode-entity-prefix "\C-c\C-x"
- "Keymap prefix for MIME-Edit mode commands to insert entity or set status.")
-(defvar mime-edit-mode-entity-map (make-sparse-keymap)
- "Keymap for MIME-Edit mode commands to insert entity or set status.")
-
-(define-key mime-edit-mode-entity-map "\C-t" 'mime-edit-insert-text)
-(define-key mime-edit-mode-entity-map "\C-i" 'mime-edit-insert-file)
-(define-key mime-edit-mode-entity-map "\C-e" 'mime-edit-insert-external)
-(define-key mime-edit-mode-entity-map "\C-v" 'mime-edit-insert-voice)
-(define-key mime-edit-mode-entity-map "\C-y" 'mime-edit-insert-message)
-(define-key mime-edit-mode-entity-map "\C-m" 'mime-edit-insert-mail)
-(define-key mime-edit-mode-entity-map "\C-w" 'mime-edit-insert-signature)
-(define-key mime-edit-mode-entity-map "\C-s" 'mime-edit-insert-signature)
-(define-key mime-edit-mode-entity-map "\C-k" 'mime-edit-insert-key)
-(define-key mime-edit-mode-entity-map "t" 'mime-edit-insert-tag)
-
-(define-key mime-edit-mode-entity-map "7" 'mime-edit-set-transfer-level-7bit)
-(define-key mime-edit-mode-entity-map "8" 'mime-edit-set-transfer-level-8bit)
-(define-key mime-edit-mode-entity-map "/" 'mime-edit-set-split)
-(define-key mime-edit-mode-entity-map "s" 'mime-edit-set-sign)
-(define-key mime-edit-mode-entity-map "v" 'mime-edit-set-sign)
-(define-key mime-edit-mode-entity-map "e" 'mime-edit-set-encrypt)
-(define-key mime-edit-mode-entity-map "h" 'mime-edit-set-encrypt)
-(define-key mime-edit-mode-entity-map "p" 'mime-edit-preview-message)
-(define-key mime-edit-mode-entity-map "\C-z" 'mime-edit-exit)
-(define-key mime-edit-mode-entity-map "?" 'mime-edit-help)
-
-(defvar mime-edit-mode-enclosure-prefix "\C-c\C-m"
- "Keymap prefix for MIME-Edit mode commands about enclosure.")
-(defvar mime-edit-mode-enclosure-map (make-sparse-keymap)
- "Keymap for MIME-Edit mode commands about enclosure.")
-
-(define-key mime-edit-mode-enclosure-map
- "\C-a" 'mime-edit-enclose-alternative-region)
-(define-key mime-edit-mode-enclosure-map
- "\C-p" 'mime-edit-enclose-parallel-region)
-(define-key mime-edit-mode-enclosure-map
- "\C-m" 'mime-edit-enclose-mixed-region)
-(define-key mime-edit-mode-enclosure-map
- "\C-d" 'mime-edit-enclose-digest-region)
-(define-key mime-edit-mode-enclosure-map
- "\C-s" 'mime-edit-enclose-pgp-signed-region)
-(define-key mime-edit-mode-enclosure-map
- "\C-e" 'mime-edit-enclose-pgp-encrypted-region)
-(define-key mime-edit-mode-enclosure-map
- "\C-q" 'mime-edit-enclose-quote-region)
-
-(defvar mime-edit-mode-map (make-sparse-keymap)
- "Keymap for MIME-Edit mode commands.")
-(define-key mime-edit-mode-map
- mime-edit-mode-entity-prefix mime-edit-mode-entity-map)
-(define-key mime-edit-mode-map
- mime-edit-mode-enclosure-prefix mime-edit-mode-enclosure-map)
-
-(defconst mime-edit-menu-title "MIME-Edit")
-
-(defconst mime-edit-menu-list
- '((mime-help "Describe MIME editor mode" mime-edit-help)
- (file "Insert File" mime-edit-insert-file)
- (external "Insert External" mime-edit-insert-external)
- (voice "Insert Voice" mime-edit-insert-voice)
- (message "Insert Message" mime-edit-insert-message)
- (mail "Insert Mail" mime-edit-insert-mail)
- (signature "Insert Signature" mime-edit-insert-signature)
- (text "Insert Text" mime-edit-insert-text)
- (tag "Insert Tag" mime-edit-insert-tag)
- (alternative "Enclose as alternative"
- mime-edit-enclose-alternative-region)
- (parallel "Enclose as parallel" mime-edit-enclose-parallel-region)
- (mixed "Enclose as serial" mime-edit-enclose-mixed-region)
- (digest "Enclose as digest" mime-edit-enclose-digest-region)
- (signed "Enclose as signed" mime-edit-enclose-pgp-signed-region)
- (encrypted "Enclose as encrypted" mime-edit-enclose-pgp-encrypted-region)
- (quote "Verbatim region" mime-edit-enclose-quote-region)
- (key "Insert Public Key" mime-edit-insert-key)
- (split "About split" mime-edit-set-split)
- (sign "About sign" mime-edit-set-sign)
- (encrypt "About encryption" mime-edit-set-encrypt)
- (preview "Preview Message" mime-edit-preview-message)
- (level "Toggle transfer-level" mime-edit-toggle-transfer-level)
- )
- "MIME-edit menubar entry.")
-
-(cond (running-xemacs
- ;; modified by Pekka Marjola <pema@iki.fi>
- ;; 1995/9/5 (c.f. [tm-en:69])
- (defun mime-edit-define-menu-for-xemacs ()
- "Define menu for XEmacs."
- (cond ((featurep 'menubar)
- (make-local-variable 'current-menubar)
- (set-buffer-menubar current-menubar)
- (add-submenu
- nil
- (cons mime-edit-menu-title
- (mapcar (function
- (lambda (item)
- (vector (nth 1 item)(nth 2 item)
- mime-edit-mode-flag)
- ))
- mime-edit-menu-list)))
- )))
-
- ;; modified by Steven L. Baur <steve@miranova.com>
- ;; 1995/12/6 (c.f. [tm-en:209])
- (or (boundp 'mime-edit-popup-menu-for-xemacs)
- (setq mime-edit-popup-menu-for-xemacs
- (append '("MIME Commands" "---")
- (mapcar (function (lambda (item)
- (vector (nth 1 item)
- (nth 2 item)
- t)))
- mime-edit-menu-list)))
- )
- )
- ((>= emacs-major-version 19)
- (define-key mime-edit-mode-map [menu-bar mime-edit]
- (cons mime-edit-menu-title
- (make-sparse-keymap mime-edit-menu-title)))
- (mapcar (function
- (lambda (item)
- (define-key mime-edit-mode-map
- (vector 'menu-bar 'mime-edit (car item))
- (cons (nth 1 item)(nth 2 item))
- )
- ))
- (reverse mime-edit-menu-list)
- )
- ))
-
-
-;;; @ functions
-;;;
-
-(defvar mime-edit-touched-flag nil)
-
-;;;###autoload
-(defun mime-edit-mode ()
- "MIME minor mode for editing the tagged MIME message.
-
-In this mode, basically, the message is composed in the tagged MIME
-format. The message tag looks like:
-
- --[[text/plain; charset=ISO-2022-JP][7bit]]
-
-The tag specifies the MIME content type, subtype, optional parameters
-and transfer encoding of the message following the tag. Messages
-without any tag are treated as `text/plain' by default. Charset and
-transfer encoding are automatically defined unless explicitly
-specified. Binary messages such as audio and image are usually
-hidden. The messages in the tagged MIME format are automatically
-translated into a MIME compliant message when exiting this mode.
-
-Available charsets depend on Emacs version being used. The following
-lists the available charsets of each emacs.
-
-Without mule: US-ASCII and ISO-8859-1 (or other charset) are available.
-With mule: US-ASCII, ISO-8859-* (except for ISO-8859-5), KOI8-R,
- ISO-2022-JP, ISO-2022-JP-2, EUC-KR, CN-GB-2312,
- CN-BIG5 and ISO-2022-INT-1 are available.
-
-ISO-2022-JP-2 and ISO-2022-INT-1 charsets used in mule is expected to
-be used to represent multilingual text in intermixed manner. Any
-languages that has no registered charset are represented as either
-ISO-2022-JP-2 or ISO-2022-INT-1 in mule.
-
-If you want to use non-ISO-8859-1 charset in Emacs 19 or XEmacs
-without mule, please set variable `default-mime-charset'. This
-variable must be symbol of which name is a MIME charset.
-
-If you want to add more charsets in mule, please set variable
-`charsets-mime-charset-alist'. This variable must be alist of which
-key is list of charset and value is symbol of MIME charset. If name
-of coding-system is different as MIME charset, please set variable
-`mime-charset-coding-system-alist'. This variable must be alist of
-which key is MIME charset and value is coding-system.
-
-Following commands are available in addition to major mode commands:
-
-\[make single part\]
-\\[mime-edit-insert-text] insert a text message.
-\\[mime-edit-insert-file] insert a (binary) file.
-\\[mime-edit-insert-external] insert a reference to external body.
-\\[mime-edit-insert-voice] insert a voice message.
-\\[mime-edit-insert-message] insert a mail or news message.
-\\[mime-edit-insert-mail] insert a mail message.
-\\[mime-edit-insert-signature] insert a signature file at end.
-\\[mime-edit-insert-key] insert PGP public key.
-\\[mime-edit-insert-tag] insert a new MIME tag.
-
-\[make enclosure (maybe multipart)\]
-\\[mime-edit-enclose-alternative-region] enclose as multipart/alternative.
-\\[mime-edit-enclose-parallel-region] enclose as multipart/parallel.
-\\[mime-edit-enclose-mixed-region] enclose as multipart/mixed.
-\\[mime-edit-enclose-digest-region] enclose as multipart/digest.
-\\[mime-edit-enclose-pgp-signed-region] enclose as PGP signed.
-\\[mime-edit-enclose-pgp-encrypted-region] enclose as PGP encrypted.
-\\[mime-edit-enclose-quote-region] enclose as verbose mode
- (to avoid to expand tags)
-
-\[other commands\]
-\\[mime-edit-set-transfer-level-7bit] set transfer-level as 7.
-\\[mime-edit-set-transfer-level-8bit] set transfer-level as 8.
-\\[mime-edit-set-split] set message splitting mode.
-\\[mime-edit-set-sign] set PGP-sign mode.
-\\[mime-edit-set-encrypt] set PGP-encryption mode.
-\\[mime-edit-preview-message] preview editing MIME message.
-\\[mime-edit-exit] exit and translate into a MIME
- compliant message.
-\\[mime-edit-help] show this help.
-\\[mime-edit-maybe-translate] exit and translate if in MIME mode,
- then split.
-
-Additional commands are available in some major modes:
-C-c C-c exit, translate and run the original command.
-C-c C-s exit, translate and run the original command.
-
-The following is a message example written in the tagged MIME format.
-TABs at the beginning of the line are not a part of the message:
-
- This is a conventional plain text. It should be translated
- into text/plain.
- --[[text/plain]]
- This is also a plain text. But, it is explicitly specified as
- is.
- --[[text/plain; charset=ISO-8859-1]]
- This is also a plain text. But charset is specified as
- iso-8859-1.
-
- ¡Hola! Buenos dÃas. ¿Cómo está usted?
- --[[text/enriched]]
- This is a <bold>enriched text</bold>.
- --[[image/gif][base64]]...image encoded in base64 here...
- --[[audio/basic][base64]]...audio encoded in base64 here...
-
-User customizable variables (not documented all of them):
- mime-edit-prefix
- Specifies a key prefix for MIME minor mode commands.
-
- mime-ignore-preceding-spaces
- Preceding white spaces in a message body are ignored if non-nil.
-
- mime-ignore-trailing-spaces
- Trailing white spaces in a message body are ignored if non-nil.
-
- mime-auto-hide-body
- Hide a non-textual body message encoded in base64 after insertion
- if non-nil.
-
- mime-transfer-level
- A number of network transfer level. It should be bigger than 7.
- If you are in 8bit-through environment, please set 8.
-
- mime-edit-voice-recorder
- Specifies a function to record a voice message and encode it.
- The function `mime-edit-voice-recorder-for-sun' is for Sun
- SparcStations.
-
- mime-edit-mode-hook
- Turning on MIME mode calls the value of mime-edit-mode-hook, if
- it is non-nil.
-
- mime-edit-translate-hook
- The value of mime-edit-translate-hook is called just before translating
- the tagged MIME format into a MIME compliant message if it is
- non-nil. If the hook call the function mime-edit-insert-signature,
- the signature file will be inserted automatically.
-
- mime-edit-exit-hook
- Turning off MIME mode calls the value of mime-edit-exit-hook, if it is
- non-nil."
- (interactive)
- (if mime-edit-mode-flag
- (mime-edit-exit)
- (if mime-edit-touched-flag
- (mime-edit-again)
- (make-local-variable 'mime-edit-touched-flag)
- (setq mime-edit-touched-flag t)
- (turn-on-mime-edit)
- )))
-
-
-(cond (running-xemacs
- (add-minor-mode 'mime-edit-mode-flag
- '((" MIME-Edit " mime-transfer-level-string))
- mime-edit-mode-map
- nil
- 'mime-edit-mode)
- )
- (t
- (set-alist 'minor-mode-alist
- 'mime-edit-mode-flag
- '((" MIME-Edit " mime-transfer-level-string)))
- (set-alist 'minor-mode-map-alist
- 'mime-edit-mode-flag
- mime-edit-mode-map)
- ))
-
-
-;;;###autoload
-(defun turn-on-mime-edit ()
- "Unconditionally turn on MIME-Edit mode."
- (interactive)
- (if mime-edit-mode-flag
- (error "You are already editing a MIME message.")
- (setq mime-edit-mode-flag t)
-
- ;; Set transfer level into mode line
- ;;
- (setq mime-transfer-level-string
- (mime-encoding-name mime-transfer-level 'not-omit))
- (force-mode-line-update)
-
- ;; Define menu for XEmacs.
- (if running-xemacs
- (mime-edit-define-menu-for-xemacs)
- )
-
- (enable-invisible)
-
- ;; I don't care about saving these.
- (setq paragraph-start
- (regexp-or mime-edit-single-part-tag-regexp
- paragraph-start))
- (setq paragraph-separate
- (regexp-or mime-edit-single-part-tag-regexp
- paragraph-separate))
- (run-hooks 'mime-edit-mode-hook)
- (message
- (substitute-command-keys
- "Type \\[mime-edit-exit] to exit MIME mode, and type \\[mime-edit-help] to get help."))
- ))
-
-;;;###autoload
-(defalias 'edit-mime 'turn-on-mime-edit) ; for convenience
-
-
-(defun mime-edit-exit (&optional nomime no-error)
- "Translate the tagged MIME message into a MIME compliant message.
-With no argument encode a message in the buffer into MIME, otherwise
-just return to previous mode."
- (interactive "P")
- (if (not mime-edit-mode-flag)
- (if (null no-error)
- (error "You aren't editing a MIME message.")
- )
- (if (not nomime)
- (progn
- (run-hooks 'mime-edit-translate-hook)
- (mime-edit-translate-buffer)))
- ;; Restore previous state.
- (setq mime-edit-mode-flag nil)
- (if (and running-xemacs
- (featurep 'menubar))
- (delete-menu-item (list mime-edit-menu-title))
- )
- (end-of-invisible)
- (set-buffer-modified-p (buffer-modified-p))
- (run-hooks 'mime-edit-exit-hook)
- (message "Exit MIME editor mode.")
- ))
-
-(defun mime-edit-maybe-translate ()
- (interactive)
- (mime-edit-exit nil t)
- (call-interactively 'mime-edit-maybe-split-and-send)
- )
-
-(defun mime-edit-help ()
- "Show help message about MIME mode."
- (interactive)
- (with-output-to-temp-buffer "*Help*"
- (princ "MIME editor mode:\n")
- (princ (documentation 'mime-edit-mode))
- (print-help-return-message)))
-
-(defun mime-edit-insert-text (&optional subtype)
- "Insert a text message.
-Charset is automatically obtained from the `charsets-mime-charset-alist'.
-If optional argument SUBTYPE is not nil, text/SUBTYPE tag is inserted."
- (interactive)
- (let ((ret (mime-edit-insert-tag "text" subtype nil)))
- (when ret
- (if (looking-at mime-edit-single-part-tag-regexp)
- (progn
- ;; Make a space between the following message.
- (insert "\n")
- (forward-char -1)
- ))
- (if (and (member (cadr ret) '("enriched" "richtext"))
- (fboundp 'enriched-mode)
- )
- (enriched-mode t)
- (if (boundp 'enriched-mode)
- (enriched-mode -1)
- ))
- )))
-
-(defun mime-edit-insert-file (file &optional verbose)
- "Insert a message from a file."
- (interactive "fInsert file as MIME message: \nP")
- (let* ((guess (mime-find-file-type file))
- (type (nth 0 guess))
- (subtype (nth 1 guess))
- (parameters (nth 2 guess))
- (encoding (nth 3 guess))
- (disposition-type (nth 4 guess))
- (disposition-params (nth 5 guess))
- )
- (if verbose
- (setq type (mime-prompt-for-type type)
- subtype (mime-prompt-for-subtype type subtype)
- ))
- (if (or (interactive-p) verbose)
- (setq encoding (mime-prompt-for-encoding encoding))
- )
- (if (or (consp parameters) (stringp disposition-type))
- (let ((rest parameters) cell attribute value)
- (setq parameters "")
- (while rest
- (setq cell (car rest))
- (setq attribute (car cell))
- (setq value (cdr cell))
- (if (eq value 'file)
- (setq value (std11-wrap-as-quoted-string
- (file-name-nondirectory file)))
- )
- (setq parameters (concat parameters "; " attribute "=" value))
- (setq rest (cdr rest))
- )
- (if disposition-type
- (progn
- (setq parameters
- (concat parameters "\n"
- "Content-Disposition: " disposition-type))
- (setq rest disposition-params)
- (while rest
- (setq cell (car rest))
- (setq attribute (car cell))
- (setq value (cdr cell))
- (if (eq value 'file)
- (setq value (std11-wrap-as-quoted-string
- (file-name-nondirectory file)))
- )
- (setq parameters
- (concat parameters "; " attribute "=" value))
- (setq rest (cdr rest))
- )
- ))
- ))
- (mime-edit-insert-tag type subtype parameters)
- (mime-edit-insert-binary-file file encoding)
- ))
-
-(defun mime-edit-insert-external ()
- "Insert a reference to external body."
- (interactive)
- (mime-edit-insert-tag "message" "external-body" nil ";\n\t")
- ;;(forward-char -1)
- ;;(insert "Content-Description: " (read-string "Content-Description: ") "\n")
- ;;(forward-line 1)
- (let* ((pritype (mime-prompt-for-type))
- (subtype (mime-prompt-for-subtype pritype))
- (parameters (mime-prompt-for-parameters pritype subtype ";\n\t")))
- (and pritype
- subtype
- (insert "Content-Type: "
- pritype "/" subtype (or parameters "") "\n")))
- (if (and (not (eobp))
- (not (looking-at mime-edit-single-part-tag-regexp)))
- (insert (mime-make-text-tag) "\n")))
-
-(defun mime-edit-insert-voice ()
- "Insert a voice message."
- (interactive)
- (let ((encoding
- (completing-read
- "What transfer encoding: "
- mime-file-encoding-method-alist nil t nil)))
- (mime-edit-insert-tag "audio" "basic" nil)
- (mime-edit-define-encoding encoding)
- (save-restriction
- (narrow-to-region (1- (point))(point))
- (unwind-protect
- (funcall mime-edit-voice-recorder encoding)
- (progn
- (insert "\n")
- (invisible-region (point-min)(point-max))
- (goto-char (point-max))
- )))))
-
-(defun mime-edit-insert-signature (&optional arg)
- "Insert a signature file."
- (interactive "P")
- (let ((signature-insert-hook
- (function
- (lambda ()
- (let ((items (mime-find-file-type signature-file-name)))
- (apply (function mime-edit-insert-tag)
- (car items) (cadr items) (list (caddr items))))
- )))
- )
- (insert-signature arg)
- ))
-
-\f
-;; Insert a new tag around a point.
-
-(defun mime-edit-insert-tag (&optional pritype subtype parameters delimiter)
- "Insert new MIME tag and return a list of PRITYPE, SUBTYPE, and PARAMETERS.
-If nothing is inserted, return nil."
- (interactive)
- (let ((p (point)))
- (mime-edit-goto-tag)
- (if (and (re-search-forward mime-edit-tag-regexp nil t)
- (< (match-beginning 0) p)
- (< p (match-end 0))
- )
- (goto-char (match-beginning 0))
- (goto-char p)
- ))
- (let ((oldtag nil)
- (newtag nil)
- (current (point))
- )
- (setq pritype
- (or pritype
- (mime-prompt-for-type)))
- (setq subtype
- (or subtype
- (mime-prompt-for-subtype pritype)))
- (setq parameters
- (or parameters
- (mime-prompt-for-parameters pritype subtype delimiter)))
- ;; Make a new MIME tag.
- (setq newtag (mime-make-tag pritype subtype parameters))
- ;; Find an current MIME tag.
- (setq oldtag
- (save-excursion
- (if (mime-edit-goto-tag)
- (buffer-substring (match-beginning 0) (match-end 0))
- ;; Assume content type is 'text/plan'.
- (mime-make-tag "text" "plain")
- )))
- ;; We are only interested in TEXT.
- (if (and oldtag
- (not (mime-test-content-type
- (mime-edit-get-contype oldtag) "text")))
- (setq oldtag nil))
- ;; Make a new tag.
- (if (or (not oldtag) ;Not text
- (or mime-ignore-same-text-tag
- (not (string-equal oldtag newtag))))
- (progn
- ;; Mark the beginning of the tag for convenience.
- (push-mark (point) 'nomsg)
- (insert newtag "\n")
- (list pritype subtype parameters) ;New tag is created.
- )
- ;; Restore previous point.
- (goto-char current)
- nil ;Nothing is created.
- )
- ))
-
-(defun mime-edit-insert-binary-file (file &optional encoding)
- "Insert binary FILE at point.
-Optional argument ENCODING specifies an encoding method such as base64."
- (let* ((tagend (1- (point))) ;End of the tag
- (hide-p (and mime-auto-hide-body
- (stringp encoding)
- (not
- (let ((en (downcase encoding)))
- (or (string-equal en "7bit")
- (string-equal en "8bit")
- (string-equal en "binary")
- )))))
- )
- (save-restriction
- (narrow-to-region tagend (point))
- (mime-insert-encoded-file file encoding)
- (if hide-p
- (progn
- (invisible-region (point-min) (point-max))
- (goto-char (point-max))
- )
- (goto-char (point-max))
- ))
- (or hide-p
- (looking-at mime-edit-tag-regexp)
- (= (point)(point-max))
- (mime-edit-insert-tag "text" "plain")
- )
- ;; Define encoding even if it is 7bit.
- (if (stringp encoding)
- (save-excursion
- (goto-char tagend) ; Make sure which line the tag is on.
- (mime-edit-define-encoding encoding)
- ))
- ))
-
-\f
-;; Commands work on a current message flagment.
-
-(defun mime-edit-goto-tag ()
- "Search for the beginning of the tagged MIME message."
- (let ((current (point)))
- (if (looking-at mime-edit-tag-regexp)
- t
- ;; At first, go to the end.
- (cond ((re-search-forward mime-edit-beginning-tag-regexp nil t)
- (goto-char (1- (match-beginning 0))) ;For multiline tag
- )
- (t
- (goto-char (point-max))
- ))
- ;; Then search for the beginning.
- (re-search-backward mime-edit-end-tag-regexp nil t)
- (or (looking-at mime-edit-beginning-tag-regexp)
- ;; Restore previous point.
- (progn
- (goto-char current)
- nil
- ))
- )))
-
-(defun mime-edit-content-beginning ()
- "Return the point of the beginning of content."
- (save-excursion
- (let ((beg (save-excursion
- (beginning-of-line) (point))))
- (if (mime-edit-goto-tag)
- (let ((top (point)))
- (goto-char (match-end 0))
- (if (and (= beg top)
- (= (following-char) ?\^M))
- (point)
- (forward-line 1)
- (point)))
- ;; Default text/plain tag.
- (goto-char (point-min))
- (re-search-forward
- (concat "\n" (regexp-quote mail-header-separator)
- (if mime-ignore-preceding-spaces
- "[ \t\n]*\n" "\n")) nil 'move)
- (point))
- )))
-
-(defun mime-edit-content-end ()
- "Return the point of the end of content."
- (save-excursion
- (if (mime-edit-goto-tag)
- (progn
- (goto-char (match-end 0))
- (if (invisible-p (point))
- (next-visible-point (point))
- ;; Move to the end of this text.
- (if (re-search-forward mime-edit-tag-regexp nil 'move)
- ;; Don't forget a multiline tag.
- (goto-char (match-beginning 0))
- )
- (point)
- ))
- ;; Assume the message begins with text/plain.
- (goto-char (mime-edit-content-beginning))
- (if (re-search-forward mime-edit-tag-regexp nil 'move)
- ;; Don't forget a multiline tag.
- (goto-char (match-beginning 0)))
- (point))
- ))
-
-(defun mime-edit-define-charset (charset)
- "Set charset of current tag to CHARSET."
- (save-excursion
- (if (mime-edit-goto-tag)
- (let ((tag (buffer-substring (match-beginning 0) (match-end 0))))
- (delete-region (match-beginning 0) (match-end 0))
- (insert
- (mime-create-tag
- (mime-edit-set-parameter
- (mime-edit-get-contype tag)
- "charset" (upcase (symbol-name charset)))
- (mime-edit-get-encoding tag)))
- ))))
-
-(defun mime-edit-define-encoding (encoding)
- "Set encoding of current tag to ENCODING."
- (save-excursion
- (if (mime-edit-goto-tag)
- (let ((tag (buffer-substring (match-beginning 0) (match-end 0))))
- (delete-region (match-beginning 0) (match-end 0))
- (insert (mime-create-tag (mime-edit-get-contype tag) encoding)))
- )))
-
-(defun mime-edit-choose-charset ()
- "Choose charset of a text following current point."
- (detect-mime-charset-region (point) (mime-edit-content-end))
- )
-
-(defun mime-make-text-tag (&optional subtype)
- "Make a tag for a text after current point.
-Subtype of text type can be specified by an optional argument SUBTYPE.
-Otherwise, it is obtained from mime-content-types."
- (let* ((pritype "text")
- (subtype (or subtype
- (car (car (cdr (assoc pritype mime-content-types)))))))
- ;; Charset should be defined later.
- (mime-make-tag pritype subtype)))
-
-\f
-;; Tag handling functions
-
-(defun mime-make-tag (pritype subtype &optional parameters encoding)
- "Make a tag of MIME message of PRITYPE, SUBTYPE and optional PARAMETERS."
- (mime-create-tag (concat (or pritype "") "/" (or subtype "")
- (or parameters ""))
- encoding))
-
-(defun mime-create-tag (contype &optional encoding)
- "Make a tag with CONTENT-TYPE and optional ENCODING."
- (format (if encoding mime-tag-format-with-encoding mime-tag-format)
- contype encoding))
-
-(defun mime-edit-get-contype (tag)
- "Return Content-Type (including parameters) of TAG."
- (and (stringp tag)
- (or (string-match mime-edit-single-part-tag-regexp tag)
- (string-match mime-edit-multipart-beginning-regexp tag)
- (string-match mime-edit-multipart-end-regexp tag)
- )
- (substring tag (match-beginning 1) (match-end 1))
- ))
-
-(defun mime-edit-get-encoding (tag)
- "Return encoding of TAG."
- (and (stringp tag)
- (string-match mime-edit-single-part-tag-regexp tag)
- (match-beginning 3)
- (not (= (match-beginning 3) (match-end 3)))
- (substring tag (match-beginning 3) (match-end 3))))
-
-(defun mime-get-parameter (contype parameter)
- "For given CONTYPE return value for PARAMETER.
-Nil if no such parameter."
- (if (string-match
- (concat
- ";[ \t\n]*"
- (regexp-quote parameter)
- "[ \t\n]*=[ \t\n]*\\([^\" \t\n;]*\\|\"[^\"]*\"\\)\\([ \t\n]*;\\|$\\)")
- contype)
- (substring contype (match-beginning 1) (match-end 1))
- nil ;No such parameter
- ))
-
-(defun mime-edit-set-parameter (contype parameter value)
- "For given CONTYPE set PARAMETER to VALUE."
- (let (ctype opt-fields)
- (if (string-match "\n[^ \t\n\r]+:" contype)
- (setq ctype (substring contype 0 (match-beginning 0))
- opt-fields (substring contype (match-beginning 0)))
- (setq ctype contype)
- )
- (if (string-match
- (concat
- ";[ \t\n]*\\("
- (regexp-quote parameter)
- "[ \t\n]*=[ \t\n]*\\([^\" \t\n;]*\\|\"[^\"]*\"\\)\\)[ \t\n]*\\(;\\|$\\)")
- ctype)
- ;; Change value
- (concat (substring ctype 0 (match-beginning 1))
- parameter "=" value
- (substring contype (match-end 1))
- opt-fields)
- (concat ctype "; " parameter "=" value opt-fields)
- )))
-
-(defun mime-strip-parameters (contype)
- "Return primary content-type and subtype without parameters for CONTYPE."
- (if (string-match "^[ \t]*\\([^; \t\n]*\\)" contype)
- (substring contype (match-beginning 1) (match-end 1)) nil))
-
-(defun mime-test-content-type (contype type &optional subtype)
- "Test if CONTYPE is a TYPE and an optional SUBTYPE."
- (and (stringp contype)
- (stringp type)
- (string-match
- (concat "^[ \t]*" (downcase type) "/" (downcase (or subtype "")))
- (downcase contype))))
-
-\f
-;; Basic functions
-
-(defun mime-find-file-type (file)
- "Guess Content-Type, subtype, and parameters from FILE."
- (let ((guess nil)
- (guesses mime-file-types))
- (while (and (not guess) guesses)
- (if (string-match (car (car guesses)) file)
- (setq guess (cdr (car guesses))))
- (setq guesses (cdr guesses)))
- guess
- ))
-
-(defun mime-prompt-for-type (&optional default)
- "Ask for Content-type."
- (let ((type ""))
- ;; Repeat until primary content type is specified.
- (while (string-equal type "")
- (setq type
- (completing-read "What content type: "
- mime-content-types
- nil
- 'require-match ;Type must be specified.
- default
- ))
- (if (string-equal type "")
- (progn
- (message "Content type is required.")
- (beep)
- (sit-for 1)
- ))
- )
- type))
-
-(defun mime-prompt-for-subtype (type &optional default)
- "Ask for subtype of media-type TYPE."
- (let ((subtypes (cdr (assoc type mime-content-types))))
- (or (and default
- (assoc default subtypes))
- (setq default (car (car subtypes)))
- ))
- (let* ((answer
- (completing-read
- (if default
- (concat
- "What content subtype: (default " default ") ")
- "What content subtype: ")
- (cdr (assoc type mime-content-types))
- nil
- 'require-match ;Subtype must be specified.
- nil
- )))
- (if (string-equal answer "") default answer)))
-
-(defun mime-prompt-for-parameters (pritype subtype &optional delimiter)
- "Ask for Content-type parameters of Content-Type PRITYPE and SUBTYPE.
-Optional DELIMITER specifies parameter delimiter (';' by default)."
- (let* ((delimiter (or delimiter "; "))
- (parameters
- (mapconcat
- (function identity)
- (delq nil
- (mime-prompt-for-parameters-1
- (cdr (assoc subtype
- (cdr (assoc pritype mime-content-types))))))
- delimiter
- )))
- (if (and (stringp parameters)
- (not (string-equal parameters "")))
- (concat delimiter parameters)
- "" ;"" if no parameters
- )))
-
-(defun mime-prompt-for-parameters-1 (optlist)
- (apply (function append)
- (mapcar (function mime-prompt-for-parameter) optlist)))
-
-(defun mime-prompt-for-parameter (parameter)
- "Ask for PARAMETER.
-Parameter must be '(PROMPT CHOICE1 (CHOISE2 ...))."
- (let* ((prompt (car parameter))
- (choices (mapcar (function
- (lambda (e)
- (if (consp e) e (list e))))
- (cdr parameter)))
- (default (car (car choices)))
- (answer nil))
- (if choices
- (progn
- (setq answer
- (completing-read
- (concat "What " prompt
- ": (default "
- (if (string-equal default "") "\"\"" default)
- ") ")
- choices nil nil ""))
- ;; If nothing is selected, use default.
- (if (string-equal answer "")
- (setq answer default)))
- (setq answer
- (read-string (concat "What " prompt ": "))))
- (cons (if (and answer
- (not (string-equal answer "")))
- (concat prompt "="
- ;; Note: control characters ignored!
- (if (string-match mime-tspecials-regexp answer)
- (concat "\"" answer "\"") answer)))
- (mime-prompt-for-parameters-1 (cdr (assoc answer (cdr parameter)))))
- ))
-
-(defun mime-prompt-for-encoding (default)
- "Ask for Content-Transfer-Encoding."
- (let (encoding)
- (while (string=
- (setq encoding
- (completing-read
- "What transfer encoding: "
- mime-file-encoding-method-alist nil t default)
- )
- ""))
- encoding))
-
-\f
-;;; @ Translate the tagged MIME messages into a MIME compliant message.
-;;;
-
-(defvar mime-edit-translate-buffer-hook
- '(mime-edit-pgp-enclose-buffer
- mime-edit-translate-body
- mime-edit-translate-header))
-
-(defun mime-edit-translate-header ()
- "Encode the message header into network representation."
- (eword-encode-header 'code-conversion)
- (run-hooks 'mime-edit-translate-header-hook)
- )
-
-(defun mime-edit-translate-buffer ()
- "Encode the tagged MIME message in current buffer in MIME compliant message."
- (interactive)
- (if (catch 'mime-edit-error
- (save-excursion
- (run-hooks 'mime-edit-translate-buffer-hook)
- ))
- (progn
- (undo)
- (error "Translation error!")
- )))
-
-(defun mime-edit-find-inmost ()
- (goto-char (point-min))
- (if (re-search-forward mime-edit-multipart-beginning-regexp nil t)
- (let ((bb (match-beginning 0))
- (be (match-end 0))
- (type (buffer-substring (match-beginning 1)(match-end 1)))
- end-exp eb)
- (setq end-exp (format "--}-<<%s>>\n" type))
- (widen)
- (if (re-search-forward end-exp nil t)
- (setq eb (match-beginning 0))
- (setq eb (point-max))
- )
- (narrow-to-region be eb)
- (goto-char be)
- (if (re-search-forward mime-edit-multipart-beginning-regexp nil t)
- (progn
- (narrow-to-region (match-beginning 0)(point-max))
- (mime-edit-find-inmost)
- )
- (widen)
- (list type bb be eb)
- ))))
-
-(defun mime-edit-process-multipart-1 (boundary)
- (let ((ret (mime-edit-find-inmost)))
- (if ret
- (let ((type (car ret))
- (bb (nth 1 ret))(be (nth 2 ret))
- (eb (nth 3 ret))
- )
- (narrow-to-region bb eb)
- (delete-region bb be)
- (setq bb (point-min))
- (setq eb (point-max))
- (widen)
- (goto-char eb)
- (if (looking-at mime-edit-multipart-end-regexp)
- (let ((beg (match-beginning 0))
- (end (match-end 0))
- )
- (delete-region beg end)
- (or (looking-at mime-edit-beginning-tag-regexp)
- (eobp)
- (insert (concat (mime-make-text-tag) "\n"))
- )))
- (cond ((string-equal type "quote")
- (mime-edit-enquote-region bb eb)
- )
- ((string-equal type "pgp-signed")
- (mime-edit-sign-pgp-mime bb eb boundary)
- )
- ((string-equal type "pgp-encrypted")
- (mime-edit-encrypt-pgp-mime bb eb boundary)
- )
- ((string-equal type "kazu-signed")
- (mime-edit-sign-pgp-kazu bb eb boundary)
- )
- ((string-equal type "kazu-encrypted")
- (mime-edit-encrypt-pgp-kazu bb eb boundary)
- )
- (t
- (setq boundary
- (nth 2 (mime-edit-translate-region bb eb
- boundary t)))
- (goto-char bb)
- (insert
- (format "--[[multipart/%s;
- boundary=\"%s\"][7bit]]\n"
- type boundary))
- ))
- boundary))))
-
-(defun mime-edit-enquote-region (beg end)
- (save-excursion
- (save-restriction
- (narrow-to-region beg end)
- (goto-char beg)
- (while (re-search-forward mime-edit-single-part-tag-regexp nil t)
- (let ((tag (buffer-substring (match-beginning 0)(match-end 0))))
- (replace-match (concat "- " (substring tag 1)))
- )))))
-
-(defun mime-edit-dequote-region (beg end)
- (save-excursion
- (save-restriction
- (narrow-to-region beg end)
- (goto-char beg)
- (while (re-search-forward
- mime-edit-quoted-single-part-tag-regexp nil t)
- (let ((tag (buffer-substring (match-beginning 0)(match-end 0))))
- (replace-match (concat "-" (substring tag 2)))
- )))))
-
-(defun mime-edit-sign-pgp-mime (beg end boundary)
- (save-excursion
- (save-restriction
- (narrow-to-region beg end)
- (let* ((ret
- (mime-edit-translate-region beg end boundary))
- (ctype (car ret))
- (encoding (nth 1 ret))
- (pgp-boundary (concat "pgp-sign-" boundary)))
- (goto-char beg)
- (insert (format "Content-Type: %s\n" ctype))
- (if encoding
- (insert (format "Content-Transfer-Encoding: %s\n" encoding))
- )
- (insert "\n")
- (or (as-binary-process
- (funcall (pgp-function 'mime-sign)
- (point-min)(point-max) nil nil pgp-boundary))
- (throw 'mime-edit-error 'pgp-error)
- )
- ))))
-
-(defvar mime-edit-encrypt-recipient-fields-list '("To" "cc"))
-
-(defun mime-edit-make-encrypt-recipient-header ()
- (let* ((names mime-edit-encrypt-recipient-fields-list)
- (values
- (std11-field-bodies (cons "From" names)
- nil mail-header-separator))
- (from (prog1
- (car values)
- (setq values (cdr values))))
- (header (and (stringp from)
- (if (string-equal from "")
- ""
- (format "From: %s\n" from)
- )))
- recipients)
- (while (and names values)
- (let ((name (car names))
- (value (car values))
- )
- (and (stringp value)
- (or (string-equal value "")
- (progn
- (setq header (concat header name ": " value "\n")
- recipients (if recipients
- (concat recipients " ," value)
- value))
- ))))
- (setq names (cdr names)
- values (cdr values))
- )
- (vector from recipients header)
- ))
-
-(defun mime-edit-encrypt-pgp-mime (beg end boundary)
- (save-excursion
- (save-restriction
- (let (from recipients header)
- (let ((ret (mime-edit-make-encrypt-recipient-header)))
- (setq from (aref ret 0)
- recipients (aref ret 1)
- header (aref ret 2))
- )
- (narrow-to-region beg end)
- (let* ((ret
- (mime-edit-translate-region beg end boundary))
- (ctype (car ret))
- (encoding (nth 1 ret))
- (pgp-boundary (concat "pgp-" boundary)))
- (goto-char beg)
- (insert header)
- (insert (format "Content-Type: %s\n" ctype))
- (if encoding
- (insert (format "Content-Transfer-Encoding: %s\n" encoding))
- )
- (insert "\n")
- (or (funcall (pgp-function 'encrypt)
- recipients (point-min) (point-max) from)
- (throw 'mime-edit-error 'pgp-error)
- )
- (goto-char beg)
- (insert (format "--[[multipart/encrypted;
- boundary=\"%s\";
- protocol=\"application/pgp-encrypted\"][7bit]]
---%s
-Content-Type: application/pgp-encrypted
-
---%s
-Content-Type: application/octet-stream
-Content-Transfer-Encoding: 7bit
-
-" pgp-boundary pgp-boundary pgp-boundary))
- (goto-char (point-max))
- (insert (format "\n--%s--\n" pgp-boundary))
- )))))
-
-(defun mime-edit-sign-pgp-kazu (beg end boundary)
- (save-excursion
- (save-restriction
- (narrow-to-region beg end)
- (let* ((ret
- (mime-edit-translate-region beg end boundary))
- (ctype (car ret))
- (encoding (nth 1 ret)))
- (goto-char beg)
- (insert (format "Content-Type: %s\n" ctype))
- (if encoding
- (insert (format "Content-Transfer-Encoding: %s\n" encoding))
- )
- (insert "\n")
- (or (as-binary-process
- (funcall (pgp-function 'traditional-sign)
- beg (point-max)))
- (throw 'mime-edit-error 'pgp-error)
- )
- (goto-char beg)
- (insert
- "--[[application/pgp; format=mime][7bit]]\n")
- ))
- ))
-
-(defun mime-edit-encrypt-pgp-kazu (beg end boundary)
- (save-excursion
- (let (recipients header)
- (let ((ret (mime-edit-make-encrypt-recipient-header)))
- (setq recipients (aref ret 1)
- header (aref ret 2))
- )
- (save-restriction
- (narrow-to-region beg end)
- (let* ((ret
- (mime-edit-translate-region beg end boundary))
- (ctype (car ret))
- (encoding (nth 1 ret)))
- (goto-char beg)
- (insert header)
- (insert (format "Content-Type: %s\n" ctype))
- (if encoding
- (insert (format "Content-Transfer-Encoding: %s\n" encoding))
- )
- (insert "\n")
- (or (as-binary-process
- (funcall (pgp-function 'encrypt)
- recipients beg (point-max) nil 'maybe)
- )
- (throw 'mime-edit-error 'pgp-error)
- )
- (goto-char beg)
- (insert
- "--[[application/pgp; format=mime][7bit]]\n")
- ))
- )))
-
-(defsubst replace-space-with-underline (str)
- (mapconcat (function
- (lambda (arg)
- (char-to-string
- (if (eq arg ?\ )
- ?_
- arg)))) str "")
- )
-
-(defun mime-edit-make-boundary ()
- (concat mime-multipart-boundary "_"
- (replace-space-with-underline (current-time-string))
- ))
-
-(defun mime-edit-translate-body ()
- "Encode the tagged MIME body in current buffer in MIME compliant message."
- (interactive)
- (save-excursion
- (let ((boundary (mime-edit-make-boundary))
- (i 1)
- ret)
- (while (mime-edit-process-multipart-1
- (format "%s-%d" boundary i))
- (setq i (1+ i))
- )
- (save-restriction
- ;; We are interested in message body.
- (let* ((beg
- (progn
- (goto-char (point-min))
- (re-search-forward
- (concat "\n" (regexp-quote mail-header-separator)
- (if mime-ignore-preceding-spaces
- "[ \t\n]*\n" "\n")) nil 'move)
- (point)))
- (end
- (progn
- (goto-char (point-max))
- (and mime-ignore-trailing-spaces
- (re-search-backward "[^ \t\n]\n" beg t)
- (forward-char 1))
- (point))))
- (setq ret (mime-edit-translate-region
- beg end
- (format "%s-%d" boundary i)))
- ))
- (mime-edit-dequote-region (point-min)(point-max))
- (let ((contype (car ret)) ;Content-Type
- (encoding (nth 1 ret)) ;Content-Transfer-Encoding
- )
- ;; Insert X-Emacs field
- (and mime-edit-insert-x-emacs-field
- (or (mail-position-on-field "X-Emacs")
- (insert mime-edit-x-emacs-value)
- ))
- ;; Make primary MIME headers.
- (or (mail-position-on-field "MIME-Version")
- (insert mime-edit-mime-version-value))
- ;; Remove old Content-Type and other fields.
- (save-restriction
- (goto-char (point-min))
- (search-forward (concat "\n" mail-header-separator "\n") nil t)
- (narrow-to-region (point-min) (point))
- (goto-char (point-min))
- (mime-delete-field "Content-Type")
- (mime-delete-field "Content-Transfer-Encoding"))
- ;; Then, insert Content-Type and Content-Transfer-Encoding fields.
- (mail-position-on-field "Content-Type")
- (insert contype)
- (if encoding
- (progn
- (mail-position-on-field "Content-Transfer-Encoding")
- (insert encoding)))
- ))))
-
-(defun mime-edit-translate-single-part-tag (boundary &optional prefix)
- "Translate single-part-tag to MIME header."
- (if (re-search-forward mime-edit-single-part-tag-regexp nil t)
- (let* ((beg (match-beginning 0))
- (end (match-end 0))
- (tag (buffer-substring beg end)))
- (delete-region beg end)
- (let ((contype (mime-edit-get-contype tag))
- (encoding (mime-edit-get-encoding tag)))
- (insert (concat prefix "--" boundary "\n"))
- (save-restriction
- (narrow-to-region (point)(point))
- (insert "Content-Type: " contype "\n")
- (if encoding
- (insert "Content-Transfer-Encoding: " encoding "\n"))
- (eword-encode-header)
- ))
- t)))
-
-(defun mime-edit-translate-region (beg end &optional boundary multipart)
- (or boundary
- (setq boundary (mime-edit-make-boundary))
- )
- (save-excursion
- (save-restriction
- (narrow-to-region beg end)
- (let ((tag nil) ;MIME tag
- (contype nil) ;Content-Type
- (encoding nil) ;Content-Transfer-Encoding
- (nparts 0)) ;Number of body parts
- ;; Normalize the body part by inserting appropriate message
- ;; tags for every message contents.
- (mime-edit-normalize-body)
- ;; Counting the number of Content-Type.
- (goto-char (point-min))
- (while (re-search-forward mime-edit-single-part-tag-regexp nil t)
- (setq nparts (1+ nparts)))
- ;; Begin translation.
- (cond
- ((and (<= nparts 1)(not multipart))
- ;; It's a singular message.
- (goto-char (point-min))
- (while (re-search-forward
- mime-edit-single-part-tag-regexp nil t)
- (setq tag
- (buffer-substring (match-beginning 0) (match-end 0)))
- (delete-region (match-beginning 0) (1+ (match-end 0)))
- (setq contype (mime-edit-get-contype tag))
- (setq encoding (mime-edit-get-encoding tag))
- ))
- (t
- ;; It's a multipart message.
- (goto-char (point-min))
- (and (mime-edit-translate-single-part-tag boundary)
- (while (mime-edit-translate-single-part-tag boundary "\n")))
- ;; Define Content-Type as "multipart/mixed".
- (setq contype
- (concat "multipart/mixed;\n boundary=\"" boundary "\""))
- ;; Content-Transfer-Encoding must be "7bit".
- ;; The following encoding can be `nil', but is
- ;; specified as is since there is no way that a user
- ;; specifies it.
- (setq encoding "7bit")
- ;; Insert the trailer.
- (goto-char (point-max))
- (insert "\n--" boundary "--\n")
- ))
- (list contype encoding boundary nparts)
- ))))
-
-(defun mime-edit-normalize-body ()
- "Normalize the body part by inserting appropriate message tags."
- ;; Insert the first MIME tags if necessary.
- (goto-char (point-min))
- (if (not (looking-at mime-edit-single-part-tag-regexp))
- (insert (mime-make-text-tag) "\n"))
- ;; Check each tag, and add new tag or correct it if necessary.
- (goto-char (point-min))
- (while (re-search-forward mime-edit-single-part-tag-regexp nil t)
- (let* ((tag (buffer-substring (match-beginning 0) (match-end 0)))
- (contype (mime-edit-get-contype tag))
- (charset (mime-get-parameter contype "charset"))
- (encoding (mime-edit-get-encoding tag)))
- ;; Remove extra whitespaces after the tag.
- (if (looking-at "[ \t]+$")
- (delete-region (match-beginning 0) (match-end 0)))
- (let ((beg (point))
- (end (mime-edit-content-end))
- )
- (if (= end (point-max))
- nil
- (goto-char end)
- (or (looking-at mime-edit-beginning-tag-regexp)
- (eobp)
- (insert (mime-make-text-tag) "\n")
- ))
- (visible-region beg end)
- (goto-char beg)
- )
- (cond
- ((mime-test-content-type contype "message")
- ;; Content-type "message" should be sent as is.
- (forward-line 1)
- )
- ((mime-test-content-type contype "text")
- ;; Define charset for text if necessary.
- (setq charset (if charset
- (intern (downcase charset))
- (mime-edit-choose-charset)))
- (mime-edit-define-charset charset)
- (cond ((string-equal contype "text/x-rot13-47-48")
- (save-excursion
- (forward-line)
- (mule-caesar-region (point) (mime-edit-content-end))
- ))
- ((string-equal contype "text/enriched")
- (save-excursion
- (let ((beg (progn
- (forward-line)
- (point)))
- (end (mime-edit-content-end))
- )
- ;; Patch for hard newlines
- ;; (save-excursion
- ;; (goto-char beg)
- ;; (while (search-forward "\n" end t)
- ;; (put-text-property (match-beginning 0)
- ;; (point)
- ;; 'hard t)))
- ;; End patch for hard newlines
- (enriched-encode beg end)
- (goto-char beg)
- (if (search-forward "\n\n")
- (delete-region beg (match-end 0))
- )
- ))))
- ;; Point is now on current tag.
- ;; Define encoding and encode text if necessary.
- (or encoding ;Encoding is not specified.
- (let* ((encoding
- (let (bits conv)
- (let ((ret (cdr (assq charset mime-charset-type-list))))
- (if ret
- (setq bits (car ret)
- conv (nth 1 ret))
- (setq bits 8
- conv "quoted-printable")))
- (if (<= bits mime-transfer-level)
- (mime-encoding-name bits)
- conv)))
- (beg (mime-edit-content-beginning)))
- (encode-mime-charset-region beg (mime-edit-content-end)
- charset)
- ;; Protect "From " in beginning of line
- (save-restriction
- (narrow-to-region beg (mime-edit-content-end))
- (goto-char beg)
- (let (case-fold-search)
- (if (re-search-forward "^From " nil t)
- (unless encoding
- (if (memq charset '(iso-2022-jp
- iso-2022-jp-2
- iso-2022-int-1
- x-ctext))
- (while (progn
- (replace-match "\e(BFrom ")
- (re-search-forward "^From " nil t)
- ))
- (setq encoding "quoted-printable")
- )))))
- ;; canonicalize line break code
- (or (member encoding '(nil "7bit" "8bit" "quoted-printable"))
- (save-restriction
- (narrow-to-region beg (mime-edit-content-end))
- (goto-char beg)
- (while (re-search-forward "\\([^\r]\\)\n" nil t)
- (replace-match
- (concat (buffer-substring (match-beginning 0)
- (match-end 1)) "\r\n"))
- )))
- (goto-char beg)
- (mime-encode-region beg (mime-edit-content-end) encoding)
- (mime-edit-define-encoding encoding)
- ))
- (goto-char (mime-edit-content-end))
- )
- ((null encoding) ;Encoding is not specified.
- ;; Application, image, audio, video, and any other
- ;; unknown content-type without encoding should be
- ;; encoded.
- (let* ((encoding "base64") ;Encode in BASE64 by default.
- (beg (mime-edit-content-beginning))
- (end (mime-edit-content-end)))
- (mime-encode-region beg end encoding)
- (mime-edit-define-encoding encoding))
- (forward-line 1)
- ))
- )))
-
-(defun mime-delete-field (field)
- "Delete header FIELD."
- (let ((regexp (format "^%s:[ \t]*" field)))
- (goto-char (point-min))
- (while (re-search-forward regexp nil t)
- (delete-region (match-beginning 0)
- (progn (forward-line 1) (point)))
- )))
-
-\f
-;;;
-;;; Platform dependent functions
-;;;
-
-;; Sun implementations
-
-(defun mime-edit-voice-recorder-for-sun (encoding)
- "Record voice in a buffer using Sun audio device,
-and insert data encoded as ENCODING."
- (message "Start the recording on %s. Type C-g to finish the recording..."
- (system-name))
- (mime-insert-encoded-file "/dev/audio" encoding)
- )
-
-\f
-;;; @ Other useful commands.
-;;;
-
-;; Message forwarding commands as content-type "message/rfc822".
-
-(defun mime-edit-insert-message (&optional message)
- (interactive)
- (let ((inserter (cdr (assq major-mode mime-edit-message-inserter-alist))))
- (if (and inserter (fboundp inserter))
- (progn
- (mime-edit-insert-tag "message" "rfc822")
- (funcall inserter message)
- )
- (message "Sorry, I don't have message inserter for your MUA.")
- )))
-
-(defun mime-edit-insert-mail (&optional message)
- (interactive)
- (let ((inserter (cdr (assq major-mode mime-edit-mail-inserter-alist))))
- (if (and inserter (fboundp inserter))
- (progn
- (mime-edit-insert-tag "message" "rfc822")
- (funcall inserter message)
- )
- (message "Sorry, I don't have mail inserter for your MUA.")
- )))
-
-(defun mime-edit-inserted-message-filter ()
- (save-excursion
- (save-restriction
- (let ((header-start (point))
- (case-fold-search t)
- beg end)
- ;; for Emacs 18
- ;; (if (re-search-forward "^$" (marker-position (mark-marker)))
- (if (re-search-forward "^$" (mark t))
- (narrow-to-region header-start (match-beginning 0))
- )
- (goto-char header-start)
- (while (and (re-search-forward
- mime-edit-yank-ignored-field-regexp nil t)
- (setq beg (match-beginning 0))
- (setq end (1+ (std11-field-end)))
- )
- (delete-region beg end)
- )
- ))))
-
-
-;;; @ multipart enclosure
-;;;
-
-(defun mime-edit-enclose-region-internal (type beg end)
- (save-excursion
- (goto-char beg)
- (save-restriction
- (narrow-to-region beg end)
- (insert (format "--<<%s>>-{\n" type))
- (goto-char (point-max))
- (insert (format "--}-<<%s>>\n" type))
- (goto-char (point-max))
- )
- (or (looking-at mime-edit-beginning-tag-regexp)
- (eobp)
- (insert (mime-make-text-tag) "\n")
- )
- ))
-
-(defun mime-edit-enclose-quote-region (beg end)
- (interactive "*r")
- (mime-edit-enclose-region-internal 'quote beg end)
- )
-
-(defun mime-edit-enclose-mixed-region (beg end)
- (interactive "*r")
- (mime-edit-enclose-region-internal 'mixed beg end)
- )
-
-(defun mime-edit-enclose-parallel-region (beg end)
- (interactive "*r")
- (mime-edit-enclose-region-internal 'parallel beg end)
- )
-
-(defun mime-edit-enclose-digest-region (beg end)
- (interactive "*r")
- (mime-edit-enclose-region-internal 'digest beg end)
- )
-
-(defun mime-edit-enclose-alternative-region (beg end)
- (interactive "*r")
- (mime-edit-enclose-region-internal 'alternative beg end)
- )
-
-(defun mime-edit-enclose-pgp-signed-region (beg end)
- (interactive "*r")
- (mime-edit-enclose-region-internal 'pgp-signed beg end)
- )
-
-(defun mime-edit-enclose-pgp-encrypted-region (beg end)
- (interactive "*r")
- (mime-edit-enclose-region-internal 'pgp-encrypted beg end)
- )
-
-(defun mime-edit-enclose-kazu-signed-region (beg end)
- (interactive "*r")
- (mime-edit-enclose-region-internal 'kazu-signed beg end)
- )
-
-(defun mime-edit-enclose-kazu-encrypted-region (beg end)
- (interactive "*r")
- (mime-edit-enclose-region-internal 'kazu-encrypted beg end)
- )
-
-(defun mime-edit-insert-key (&optional arg)
- "Insert a pgp public key."
- (interactive "P")
- (mime-edit-insert-tag "application" "pgp-keys")
- (mime-edit-define-encoding "7bit")
- (funcall (pgp-function 'insert-key))
- )
-
-
-;;; @ flag setting
-;;;
-
-(defun mime-edit-set-split (arg)
- (interactive
- (list
- (y-or-n-p "Do you want to enable split? ")
- ))
- (setq mime-edit-split-message arg)
- (if arg
- (message "This message is enabled to split.")
- (message "This message is not enabled to split.")
- ))
-
-(defun mime-edit-toggle-transfer-level (&optional transfer-level)
- "Toggle transfer-level is 7bit or 8bit through.
-
-Optional TRANSFER-LEVEL is a number of transfer-level, 7 or 8."
- (interactive)
- (if (numberp transfer-level)
- (setq mime-transfer-level transfer-level)
- (if (< mime-transfer-level 8)
- (setq mime-transfer-level 8)
- (setq mime-transfer-level 7)
- ))
- (message (format "Current transfer-level is %d bit"
- mime-transfer-level))
- (setq mime-transfer-level-string
- (mime-encoding-name mime-transfer-level 'not-omit))
- (force-mode-line-update)
- )
-
-(defun mime-edit-set-transfer-level-7bit ()
- (interactive)
- (mime-edit-toggle-transfer-level 7)
- )
-
-(defun mime-edit-set-transfer-level-8bit ()
- (interactive)
- (mime-edit-toggle-transfer-level 8)
- )
-
-
-;;; @ pgp
-;;;
-
-(defvar mime-edit-pgp-processing nil)
-(make-variable-buffer-local 'mime-edit-pgp-processing)
-
-(defun mime-edit-set-sign (arg)
- (interactive
- (list
- (y-or-n-p "Do you want to sign? ")
- ))
- (if arg
- (progn
- (setq mime-edit-pgp-processing 'sign)
- (message "This message will be signed.")
- )
- (if (eq mime-edit-pgp-processing 'sign)
- (setq mime-edit-pgp-processing nil)
- )
- (message "This message will not be signed.")
- ))
-
-(defun mime-edit-set-encrypt (arg)
- (interactive
- (list
- (y-or-n-p "Do you want to encrypt? ")
- ))
- (if arg
- (progn
- (setq mime-edit-pgp-processing 'encrypt)
- (message "This message will be encrypt.")
- )
- (if (eq mime-edit-pgp-processing 'encrypt)
- (setq mime-edit-pgp-processing nil)
- )
- (message "This message will not be encrypt.")
- ))
-
-(defun mime-edit-pgp-enclose-buffer ()
- (let ((beg (save-excursion
- (goto-char (point-min))
- (if (search-forward (concat "\n" mail-header-separator "\n"))
- (match-end 0)
- )))
- (end (point-max))
- )
- (if beg
- (cond ((eq mime-edit-pgp-processing 'sign)
- (mime-edit-enclose-pgp-signed-region beg end)
- )
- ((eq mime-edit-pgp-processing 'encrypt)
- (mime-edit-enclose-pgp-encrypted-region beg end)
- ))
- )))
-
-
-;;; @ split
-;;;
-
-(defun mime-edit-insert-partial-header (fields subject
- id number total separator)
- (insert fields)
- (insert (format "Subject: %s (%d/%d)\n" subject number total))
- (insert mime-edit-mime-version-field-for-message/partial)
- (insert (format "\
-Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n"
- id number total separator))
- )
-
-(defun mime-edit-split-and-send
- (&optional cmd lines mime-edit-message-max-length)
- (interactive)
- (or lines
- (setq lines
- (count-lines (point-min) (point-max)))
- )
- (or mime-edit-message-max-length
- (setq mime-edit-message-max-length
- (or (cdr (assq major-mode mime-edit-message-max-lines-alist))
- mime-edit-message-default-max-lines))
- )
- (let* ((mime-edit-draft-file-name
- (or (buffer-file-name)
- (make-temp-name
- (expand-file-name "mime-draft" mime-temp-directory))))
- (separator mail-header-separator)
- (id (concat "\""
- (replace-space-with-underline (current-time-string))
- "@" (system-name) "\"")))
- (run-hooks 'mime-edit-before-split-hook)
- (let ((the-buf (current-buffer))
- (copy-buf (get-buffer-create " *Original Message*"))
- (header (std11-header-string-except
- mime-edit-split-ignored-field-regexp separator))
- (subject (mail-fetch-field "subject"))
- (total (+ (/ lines mime-edit-message-max-length)
- (if (> (mod lines mime-edit-message-max-length) 0)
- 1)))
- (command
- (or cmd
- (cdr
- (assq major-mode
- mime-edit-split-message-sender-alist))
- (function
- (lambda ()
- (interactive)
- (error "Split sender is not specified for `%s'." major-mode)
- ))
- ))
- (mime-edit-partial-number 1)
- data)
- (save-excursion
- (set-buffer copy-buf)
- (erase-buffer)
- (insert-buffer the-buf)
- (save-restriction
- (if (re-search-forward
- (concat "^" (regexp-quote separator) "$") nil t)
- (let ((he (match-beginning 0)))
- (replace-match "")
- (narrow-to-region (point-min) he)
- ))
- (goto-char (point-min))
- (while (re-search-forward mime-edit-split-blind-field-regexp nil t)
- (delete-region (match-beginning 0)
- (1+ (std11-field-end)))
- )))
- (while (< mime-edit-partial-number total)
- (erase-buffer)
- (save-excursion
- (set-buffer copy-buf)
- (setq data (buffer-substring
- (point-min)
- (progn
- (goto-line mime-edit-message-max-length)
- (point))
- ))
- (delete-region (point-min)(point))
- )
- (mime-edit-insert-partial-header
- header subject id mime-edit-partial-number total separator)
- (insert data)
- (save-excursion
- (message (format "Sending %d/%d..."
- mime-edit-partial-number total))
- (call-interactively command)
- (message (format "Sending %d/%d... done"
- mime-edit-partial-number total))
- )
- (setq mime-edit-partial-number
- (1+ mime-edit-partial-number))
- )
- (erase-buffer)
- (save-excursion
- (set-buffer copy-buf)
- (setq data (buffer-string))
- (erase-buffer)
- )
- (mime-edit-insert-partial-header
- header subject id mime-edit-partial-number total separator)
- (insert data)
- (save-excursion
- (message (format "Sending %d/%d..."
- mime-edit-partial-number total))
- (message (format "Sending %d/%d... done"
- mime-edit-partial-number total))
- )
- )))
-
-(defun mime-edit-maybe-split-and-send (&optional cmd)
- (interactive)
- (run-hooks 'mime-edit-before-send-hook)
- (let ((mime-edit-message-max-length
- (or (cdr (assq major-mode mime-edit-message-max-lines-alist))
- mime-edit-message-default-max-lines))
- (lines (count-lines (point-min) (point-max)))
- )
- (if (and (> lines mime-edit-message-max-length)
- mime-edit-split-message)
- (mime-edit-split-and-send cmd lines mime-edit-message-max-length)
- )))
-
-
-;;; @ preview message
-;;;
-
-(defvar mime-edit-buffer nil) ; buffer local variable
-
-(defun mime-edit-preview-message ()
- "preview editing MIME message."
- (interactive)
- (let* ((str (buffer-string))
- (separator mail-header-separator)
- (the-buf (current-buffer))
- (buf-name (buffer-name))
- (temp-buf-name (concat "*temp-article:" buf-name "*"))
- (buf (get-buffer temp-buf-name))
- )
- (if buf
- (progn
- (switch-to-buffer buf)
- (erase-buffer)
- )
- (setq buf (get-buffer-create temp-buf-name))
- (switch-to-buffer buf)
- )
- (insert str)
- (setq major-mode 'mime-temp-message-mode)
- (make-local-variable 'mail-header-separator)
- (setq mail-header-separator separator)
- (make-local-variable 'mime-edit-buffer)
- (setq mime-edit-buffer the-buf)
-
- (run-hooks 'mime-edit-translate-hook)
- (mime-edit-translate-buffer)
- (goto-char (point-min))
- (if (re-search-forward
- (concat "^" (regexp-quote separator) "$"))
- (replace-match "")
- )
- (mime-view-mode)
- ))
-
-(defun mime-edit-quitting-method ()
- "Quitting method for mime-view."
- (let ((temp mime-raw-buffer)
- buf)
- (mime-preview-kill-buffer)
- (set-buffer temp)
- (setq buf mime-edit-buffer)
- (kill-buffer temp)
- (switch-to-buffer buf)
- ))
-
-(set-alist 'mime-preview-quitting-method-alist
- 'mime-temp-message-mode
- #'mime-edit-quitting-method)
-
-
-;;; @ edit again
-;;;
-
-(defvar mime-edit-again-ignored-field-regexp
- (concat "^\\(" "Content-.*\\|Mime-Version"
- (if mime-edit-insert-x-emacs-field "\\|X-Emacs")
- "\\):")
- "Regexp for deleted header fields when `mime-edit-again' is called.")
-
-(defun mime-edit-decode-buffer (not-decode-text)
- (save-excursion
- (goto-char (point-min))
- (let ((ctl (mime-read-Content-Type)))
- (if ctl
- (let ((type (mime-content-type-primary-type ctl))
- (stype (mime-content-type-subtype ctl))
- (params (mime-content-type-parameters ctl)))
- (cond
- ((and (eq type 'application)(eq stype 'pgp-signature))
- (delete-region (point-min)(point-max))
- )
- ((eq type 'multipart)
- (let* ((boundary (cdr (assoc "boundary" params)))
- (boundary-pat
- (concat "\n--" (regexp-quote boundary) "[ \t]*\n"))
- )
- (re-search-forward boundary-pat nil t)
- (let ((bb (match-beginning 0)) eb tag)
- (setq tag (format "\n--<<%s>>-{\n" stype))
- (goto-char bb)
- (insert tag)
- (setq bb (+ bb (length tag)))
- (re-search-forward
- (concat "\n--" (regexp-quote boundary) "--[ \t]*\n")
- nil t)
- (setq eb (match-beginning 0))
- (replace-match (format "--}-<<%s>>\n" stype))
- (save-restriction
- (narrow-to-region bb eb)
- (goto-char (point-min))
- (while (re-search-forward boundary-pat nil t)
- (let ((beg (match-beginning 0))
- end)
- (delete-region beg (match-end 0))
- (save-excursion
- (if (re-search-forward boundary-pat nil t)
- (setq end (match-beginning 0))
- (setq end (point-max))
- )
- (save-restriction
- (narrow-to-region beg end)
- (mime-edit-decode-buffer not-decode-text)
- (goto-char (point-max))
- ))))
- ))
- (goto-char (point-min))
- (or (= (point-min) 1)
- (delete-region (point-min)
- (if (search-forward "\n\n" nil t)
- (match-end 0)
- (point-min)
- )))
- ))
- (t
- (let* ((ctype (format "%s/%s" type stype))
- charset
- (pstr
- (let ((bytes (+ 14 (length ctype))))
- (mapconcat (function
- (lambda (attr)
- (if (string= (car attr) "charset")
- (progn
- (setq charset (cdr attr))
- "")
- (let* ((str
- (concat (car attr)
- "=" (cdr attr))
- )
- (bs (length str))
- )
- (setq bytes (+ bytes bs 2))
- (if (< bytes 76)
- (concat "; " str)
- (setq bytes (+ bs 1))
- (concat ";\n " str)
- )
- ))))
- params "")))
- encoding
- encoded)
- (save-excursion
- (if (re-search-forward
- "Content-Transfer-Encoding:" nil t)
- (let ((beg (match-beginning 0))
- (hbeg (match-end 0))
- (end (std11-field-end)))
- (setq encoding
- (eliminate-top-spaces
- (std11-unfold-string
- (buffer-substring hbeg end))))
- (if (or charset (eq type 'text))
- (progn
- (delete-region beg (1+ end))
- (goto-char (point-min))
- (if (search-forward "\n\n" nil t)
- (progn
- (mime-decode-region
- (match-end 0)(point-max) encoding)
- (setq encoded t
- encoding nil)
- )))))))
- (if (or encoded (not not-decode-text))
- (decode-mime-charset-region
- (point-min)(point-max)
- (or charset default-mime-charset))
- )
- (let ((he
- (if (re-search-forward "^$" nil t)
- (match-end 0)
- (point-min)
- )))
- (if (= (point-min) 1)
- (progn
- (goto-char he)
- (insert
- (concat "\n"
- (mime-create-tag
- (format "%s/%s%s" type stype pstr)
- encoding)))
- )
- (delete-region (point-min) he)
- (insert
- (mime-create-tag
- (format "%s/%s%s" type stype pstr)
- encoding))
- ))
- ))))
- (or not-decode-text
- (decode-mime-charset-region (point-min) (point-max)
- default-mime-charset)
- )
- ))))
-
-(defun mime-edit-again (&optional not-decode-text no-separator not-turn-on)
- "Convert current buffer to MIME-Edit buffer and turn on MIME-Edit mode.
-Content-Type and Content-Transfer-Encoding header fields will be
-converted to MIME-Edit tags."
- (interactive)
- (goto-char (point-min))
- (if (search-forward
- (concat "\n" (regexp-quote mail-header-separator) "\n")
- nil t)
- (replace-match "\n\n")
- )
- (mime-edit-decode-buffer not-decode-text)
- (goto-char (point-min))
- (save-restriction
- (std11-narrow-to-header)
- (goto-char (point-min))
- (while (re-search-forward mime-edit-again-ignored-field-regexp nil t)
- (delete-region (match-beginning 0) (1+ (std11-field-end)))
- ))
- (or no-separator
- (and (re-search-forward "^$")
- (replace-match mail-header-separator)
- ))
- (or not-turn-on
- (turn-on-mime-edit)
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-edit)
-
-(run-hooks 'mime-edit-load-hook)
-
-;;; mime-edit.el ends here
+++ /dev/null
-;;; mime-image.el --- mime-view filter to display images
-
-;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko
-;; Copyright (C) 1996 Dan Rich
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Dan Rich <drich@morpheus.corp.sgi.com>
-;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1995/12/15
-;; Renamed: 1997/2/21 from tm-image.el
-
-;; Keywords: image, picture, X-Face, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Showy Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU XEmacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-;; If you use this program with MULE, please install
-;; etl8x16-bitmap.bdf font included in tl package.
-
-;;; Code:
-
-(require 'mime-view)
-(require 'alist)
-
-(cond ((featurep 'xemacs)
- (require 'images)
-
- (defun-maybe image-inline-p (format)
- (or (memq format image-native-formats)
- (find-if (function
- (lambda (native)
- (image-converter-chain format native)
- ))
- image-native-formats)
- ))
-
- (image-register-netpbm-utilities)
- (image-register-converter 'pic 'ppm "pictoppm")
- (image-register-converter 'mag 'ppm "magtoppm")
-
- (defun bitmap-insert-xbm-file (file)
- (let ((gl (make-glyph (list (cons 'x file))))
- (e (make-extent (point) (point)))
- )
- (set-extent-end-glyph e gl)
- ))
-
- ;;
- ;; X-Face
- ;;
- (autoload 'highlight-headers "highlight-headers")
-
- (defun mime-preview-x-face-function-use-highlight-headers ()
- (highlight-headers (point-min) (re-search-forward "^$" nil t) t)
- )
-
- (add-hook 'mime-display-header-hook
- 'mime-preview-x-face-function-use-highlight-headers)
-
- )
- ((featurep 'mule)
- ;; for MULE 2.* or mule merged EMACS
- (require 'x-face-mule)
-
- (defvar image-native-formats '(xbm))
-
- (defun-maybe image-inline-p (format)
- (memq format image-native-formats)
- )
-
- (defun-maybe image-normalize (format data)
- (and (eq format 'xbm)
- (vector 'xbm ':data data)
- ))
-
- ;;
- ;; X-Face
- ;;
- (if (exec-installed-p uncompface-program exec-path)
- (add-hook 'mime-display-header-hook
- 'x-face-decode-message-header)
- )
- ))
-
-(or (fboundp 'image-invalid-glyph-p)
- (defsubst image-invalid-glyph-p (glyph)
- (or (null (aref glyph 0))
- (null (aref glyph 2))
- (equal (aref glyph 2) "")
- ))
- )
-
-(mapcar (function
- (lambda (rule)
- (let ((type (car rule))
- (subtype (nth 1 rule))
- (format (nth 2 rule)))
- (if (image-inline-p format)
- (ctree-set-calist-strictly
- 'mime-preview-condition
- (list (cons 'type type)(cons 'subtype subtype)
- '(body . visible)
- (cons 'body-presentation-method #'mime-display-image)
- (cons 'image-format format))
- )))))
- '((image jpeg jpeg)
- (image gif gif)
- (image tiff tiff)
- (image x-tiff tiff)
- (image xbm xbm)
- (image x-xbm xbm)
- (image x-xpixmap xpm)
- (image x-pic pic)
- (image x-mag mag)
- (image png png)
- ))
-
-
-;;; @ content filter for images
-;;;
-;; (for XEmacs 19.12 or later)
-
-(defun mime-display-image (entity situation)
- (message "Decoding image...")
- (let ((gl (image-normalize (cdr (assq 'image-format situation))
- (mime-entity-content entity))))
- (cond ((image-invalid-glyph-p gl)
- (setq gl nil)
- (message "Invalid glyph!")
- )
- ((eq (aref gl 0) 'xbm)
- (let ((xbm-file
- (make-temp-name
- (expand-file-name "tm" mime-temp-directory))))
- (with-temp-buffer
- (insert (aref gl 2))
- (write-region (point-min)(point-max) xbm-file)
- )
- (message "Decoding image...")
- (bitmap-insert-xbm-file xbm-file)
- (delete-file xbm-file)
- )
- (message "Decoding image... done")
- )
- (t
- (setq gl (make-glyph gl))
- (let ((e (make-extent (point) (point))))
- (set-extent-end-glyph e gl)
- )
- (message "Decoding image... done")
- ))
- )
- (insert "\n")
- )
-
-
-;;; @ end
-;;;
-
-(provide 'mime-image)
-
-;;; mime-image.el ends here
+++ /dev/null
-;;; mime-mc.el --- Mailcrypt interface for SEMI
-
-;; Copyright (C) 1996,1997,1998 MORIOKA Tomohiko
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: PGP, security, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Secure Emacs MIME Interface).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mailcrypt)
-(eval-and-compile (load "mc-pgp"))
-
-(defun mime-mc-pgp-generic-parser (result)
- (let ((ret (mc-pgp-generic-parser result)))
- (if (consp ret)
- (vector (car ret)(cdr ret))
- )))
-
-(defun mime-mc-process-region
- (beg end passwd program args parser &optional buffer boundary)
- (let ((obuf (current-buffer))
- (process-connection-type nil)
- mybuf result rgn proc)
- (unwind-protect
- (progn
- (setq mybuf (or buffer (generate-new-buffer " *mailcrypt temp")))
- (set-buffer mybuf)
- (erase-buffer)
- (set-buffer obuf)
- (buffer-disable-undo mybuf)
- (setq proc
- (apply 'start-process "*PGP*" mybuf program args))
- (if passwd
- (progn
- (process-send-string proc (concat passwd "\n"))
- (or mc-passwd-timeout (mc-deactivate-passwd t))))
- (process-send-region proc beg end)
- (process-send-eof proc)
- (while (eq 'run (process-status proc))
- (accept-process-output proc 5))
- (setq result (process-exit-status proc))
- ;; Hack to force a status_notify() in Emacs 19.29
- (delete-process proc)
- (set-buffer mybuf)
- (goto-char (point-max))
- (if (re-search-backward "\nProcess \\*PGP.*\n\\'" nil t)
- (delete-region (match-beginning 0) (match-end 0)))
- (goto-char (point-min))
- ;; CRNL -> NL
- (while (search-forward "\r\n" nil t)
- (replace-match "\n"))
- ;; Hurm. FIXME; must get better result codes.
- (if (stringp result)
- (error "%s exited abnormally: '%s'" program result)
- (setq rgn (funcall parser result))
- ;; If the parser found something, migrate it
- (if (consp rgn)
- (progn
- (set-buffer obuf)
- (if boundary
- (save-restriction
- (narrow-to-region beg end)
- (goto-char beg)
- (insert (format "--%s\n" boundary))
- (goto-char (point-max))
- (insert (format "\n--%s
-Content-Type: application/pgp-signature
-Content-Transfer-Encoding: 7bit
-
-" boundary))
- (insert-buffer-substring mybuf (car rgn) (cdr rgn))
- (goto-char (point-max))
- (insert (format "\n--%s--\n" boundary))
- )
- (delete-region beg end)
- (goto-char beg)
- (insert-buffer-substring mybuf (car rgn) (cdr rgn))
- )
- (set-buffer mybuf)
- (delete-region (car rgn) (cdr rgn)))))
- ;; Return nil on failure and exit code on success
- (if rgn result))
- ;; Cleanup even on nonlocal exit
- (if (and proc (eq 'run (process-status proc)))
- (interrupt-process proc))
- (set-buffer obuf)
- (or buffer (null mybuf) (kill-buffer mybuf)))))
-
-(defun mime-mc-pgp-sign-region (start end &optional id unclear boundary)
- ;; (if (not (boundp 'mc-pgp-user-id))
- ;; (load "mc-pgp")
- ;; )
- (let ((process-environment process-environment)
- (buffer (get-buffer-create mc-buffer-name))
- passwd args key
- (parser (function mc-pgp-generic-parser))
- (pgp-path mc-pgp-path)
- )
- (setq key (mc-pgp-lookup-key (or id mc-pgp-user-id)))
- (setq passwd
- (mc-activate-passwd
- (cdr key)
- (format "PGP passphrase for %s (%s): " (car key) (cdr key))))
- (setenv "PGPPASSFD" "0")
- (setq args
- (cons
- (if boundary
- "-fbast"
- "-fast")
- (list "+verbose=1" "+language=en"
- (format "+clearsig=%s" (if unclear "off" "on"))
- "+batchmode" "-u" (cdr key))))
- (if mc-pgp-comment
- (setq args (cons (format "+comment=%s" mc-pgp-comment) args))
- )
- (message "Signing as %s ..." (car key))
- (if (mime-mc-process-region
- start end passwd pgp-path args parser buffer boundary)
- (progn
- (if boundary
- (progn
- (goto-char (point-min))
- (insert
- (format "\
---[[multipart/signed; protocol=\"application/pgp-signature\";
- boundary=\"%s\"; micalg=pgp-md5][7bit]]\n" boundary))
- ))
- (message "Signing as %s ... Done." (car key))
- t)
- nil)))
-
-(defun mime-mc-pgp-encrypt-region (recipients start end &optional id sign)
- (let ((mc-pgp-always-sign (if (eq sign 'maybe)
- mc-pgp-always-sign
- 'never)))
- (mc-pgp-encrypt-region
- (mc-split "\\([ \t\n]*,[ \t\n]*\\)+" recipients)
- start end id nil)
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-mc)
-
-;;; mime-mc.el ends here
+++ /dev/null
-;;; mime-partial.el --- Grabbing all MIME "message/partial"s.
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: OKABE Yasuo @ Kyoto University
-;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: message/partial, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Suite of Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mime-view)
-(require 'mime-play)
-
-(defun mime-combine-message/partial-pieces-automatically (entity situation)
- "Internal method for mime-view to combine message/partial messages
-automatically. This function refers variable
-`mime-request-partial-message-method-alist' to select function to display
-partial messages using mime-view."
- (interactive)
- (let* ((id (cdr (assoc "id" situation)))
- (target (cdr (assq 'major-mode situation)))
- (subject-buf (eval (cdr (assq 'summary-buffer-exp situation))))
- subject-id
- (root-dir (expand-file-name
- (concat "m-prts-" (user-login-name)) mime-temp-directory))
- (request-partial-message-method
- (cdr (assq 'request-partial-message-method situation)))
- full-file)
- (setq root-dir (concat root-dir "/" (replace-as-filename id)))
- (setq full-file (concat root-dir "/FULL"))
-
- (if (null target)
- (error "%s is not supported. Sorry." target)
- )
-
- ;; if you can't parse the subject line, try simple decoding method
- (if (or (file-exists-p full-file)
- (not (y-or-n-p "Merge partials?"))
- )
- (mime-store-message/partial-piece entity situation)
- (setq subject-id (mime-read-field 'Subject entity))
- (if (string-match "[0-9\n]+" subject-id)
- (setq subject-id (substring subject-id 0 (match-beginning 0)))
- )
- (save-excursion
- (set-buffer subject-buf)
- (while (search-backward subject-id nil t))
- (catch 'tag
- (while t
- (let* ((message
- ;; request message at the cursor in Subject buffer.
- (save-window-excursion
- (funcall request-partial-message-method)
- ))
- (situation (mime-entity-situation message))
- (the-id (cdr (assoc "id" situation))))
- (when (string= the-id id)
- (save-excursion
- (set-buffer (mime-entity-buffer message))
- (mime-store-message/partial-piece message situation)
- )
- (if (file-exists-p full-file)
- (throw 'tag nil)
- ))
- (if (not (progn
- (end-of-line)
- (search-forward subject-id nil t)
- ))
- (error "not found")
- )
- ))
- )))))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-partial)
-
-(run-hooks 'mime-partial-load-hook)
-
-;;; mime-partial.el ends here
+++ /dev/null
-;;; mime-pgp.el --- mime-view internal methods for PGP.
-
-;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1995/12/7
-;; Renamed: 1997/2/27 from tm-pgp.el
-;; Keywords: PGP, security, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Secure Emacs MIME Interface).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;; This module is based on
-
-;; [security-multipart] RFC 1847: "Security Multiparts for MIME:
-;; Multipart/Signed and Multipart/Encrypted" by
-;; Jim Galvin <galvin@tis.com>, Sandy Murphy <sandy@tis.com>,
-;; Steve Crocker <crocker@cybercash.com> and
-;; Ned Freed <ned@innosoft.com> (1995/10)
-
-;; [PGP/MIME] RFC 2015: "MIME Security with Pretty Good Privacy
-;; (PGP)" by Michael Elkins <elkins@aero.org> (1996/6)
-
-;; [PGP-kazu] draft-kazu-pgp-mime-00.txt: "PGP MIME Integration"
-;; by Kazuhiko Yamamoto <kazu@is.aist-nara.ac.jp> (1995/10;
-;; expired)
-
-;;; Code:
-
-(require 'mime-play)
-
-
-;;; @ Internal method for multipart/signed
-;;;
-;;; It is based on RFC 1847 (security-multipart).
-
-(defun mime-verify-multipart/signed (entity situation)
- "Internal method to verify multipart/signed."
- (mime-raw-play-entity
- (nth 1 (mime-entity-children entity)) ; entity-info of signature
- (cdr (assq 'mode situation)) ; play-mode
- ))
-
-
-;;; @ internal method for application/pgp
-;;;
-;;; It is based on draft-kazu-pgp-mime-00.txt (PGP-kazu).
-
-(defun mime-view-application/pgp (entity situation)
- (let* ((start (mime-entity-point-min entity))
- (end (mime-entity-point-max entity))
- (entity-number (mime-raw-point-to-entity-number start))
- (p-win (or (get-buffer-window mime-preview-buffer)
- (get-largest-window)))
- (new-name (format "%s-%s" (buffer-name) entity-number))
- (the-buf (current-buffer))
- (mother mime-preview-buffer)
- representation-type)
- (set-buffer (get-buffer-create new-name))
- (erase-buffer)
- (insert-buffer-substring the-buf start end)
- (cond ((progn
- (goto-char (point-min))
- (re-search-forward "^-+BEGIN PGP SIGNED MESSAGE-+$" nil t))
- (funcall (pgp-function 'verify))
- (goto-char (point-min))
- (delete-region
- (point-min)
- (and
- (re-search-forward "^-+BEGIN PGP SIGNED MESSAGE-+\n\n")
- (match-end 0)))
- (delete-region
- (and (re-search-forward "^-+BEGIN PGP SIGNATURE-+")
- (match-beginning 0))
- (point-max))
- (goto-char (point-min))
- (while (re-search-forward "^- -" nil t)
- (replace-match "-")
- )
- (setq representation-type (mime-entity-representation-type entity))
- )
- ((progn
- (goto-char (point-min))
- (re-search-forward "^-+BEGIN PGP MESSAGE-+$" nil t))
- (as-binary-process (funcall (pgp-function 'decrypt)))
- (goto-char (point-min))
- (delete-region (point-min)
- (and
- (search-forward "\n\n")
- (match-end 0)))
- (setq representation-type 'binary)
- ))
- (setq major-mode 'mime-show-message-mode)
- (setq mime-raw-representation-type representation-type)
- (save-window-excursion (mime-view-mode mother))
- (set-window-buffer p-win mime-preview-buffer)
- ))
-
-
-;;; @ Internal method for application/pgp-signature
-;;;
-;;; It is based on RFC 2015 (PGP/MIME).
-
-(defvar mime-pgp-command "pgp"
- "*Name of the PGP command.")
-
-(defvar mime-pgp-default-language 'en
- "*Symbol of language for pgp.
-It should be ISO 639 2 letter language code such as en, ja, ...")
-
-(defvar mime-pgp-good-signature-regexp-alist
- '((en . "Good signature from user.*$"))
- "Alist of language vs regexp to detect ``Good signature''.")
-
-(defvar mime-pgp-key-expected-regexp-alist
- '((en . "Key matching expected Key ID \\(\\S +\\) not found"))
- "Alist of language vs regexp to detect ``Key expected''.")
-
-(defun mime-pgp-check-signature (output-buffer orig-file)
- (save-excursion
- (set-buffer output-buffer)
- (erase-buffer))
- (let* ((lang (or mime-pgp-default-language 'en))
- (status (call-process-region (point-min)(point-max)
- mime-pgp-command
- nil output-buffer nil
- orig-file (format "+language=%s" lang)))
- (regexp (cdr (assq lang mime-pgp-good-signature-regexp-alist))))
- (if (= status 0)
- (save-excursion
- (set-buffer output-buffer)
- (goto-char (point-min))
- (message
- (cond ((not (stringp regexp))
- "Please specify right regexp for specified language")
- ((re-search-forward regexp nil t)
- (buffer-substring (match-beginning 0) (match-end 0)))
- (t "Bad signature")))
- ))))
-
-(defun mime-verify-application/pgp-signature (entity situation)
- "Internal method to check PGP/MIME signature."
- (let* ((start (mime-entity-point-min entity))
- (end (mime-entity-point-max entity))
- (encoding (cdr (assq 'encoding situation)))
- (entity-node-id (mime-raw-point-to-entity-node-id start))
- (mother (mime-entity-parent entity))
- (knum (car entity-node-id))
- (onum (if (> knum 0)
- (1- knum)
- (1+ knum)))
- (orig-entity (nth onum (mime-entity-children mother)))
- (basename (expand-file-name "tm" mime-temp-directory))
- (orig-file (make-temp-name basename))
- (sig-file (concat orig-file ".sig"))
- )
- (mime-raw-write-region (mime-entity-point-min orig-entity)
- (mime-entity-point-max orig-entity)
- orig-file)
- (save-excursion (mime-show-echo-buffer))
- (mime-write-decoded-region (save-excursion
- (goto-char start)
- (and (search-forward "\n\n")
- (match-end 0))
- ) end sig-file encoding)
- (or (mime-pgp-check-signature mime-echo-buffer-name orig-file)
- (let (pgp-id)
- (save-excursion
- (set-buffer mime-echo-buffer-name)
- (goto-char (point-min))
- (let ((regexp (cdr (assq (or mime-pgp-default-language 'en)
- mime-pgp-key-expected-regexp-alist))))
- (cond ((not (stringp regexp))
- (message
- "Please specify right regexp for specified language")
- )
- ((re-search-forward regexp nil t)
- (setq pgp-id
- (concat "0x" (buffer-substring-no-properties
- (match-beginning 1)
- (match-end 1))))
- ))))
- (if (and pgp-id
- (y-or-n-p
- (format "Key %s not found; attempt to fetch? " pgp-id))
- )
- (progn
- (funcall (pgp-function 'fetch-key) (cons nil pgp-id))
- (mime-pgp-check-signature mime-echo-buffer-name orig-file)
- ))
- ))
- (let ((other-window-scroll-buffer mime-echo-buffer-name))
- (scroll-other-window 8)
- )
- (delete-file orig-file)
- (delete-file sig-file)
- ))
-
-
-;;; @ Internal method for application/pgp-encrypted
-;;;
-;;; It is based on RFC 2015 (PGP/MIME).
-
-(defun mime-decrypt-application/pgp-encrypted (entity situation)
- (let* ((entity-node-id (mime-entity-node-id entity))
- (mother (mime-entity-parent entity))
- (knum (car entity-node-id))
- (onum (if (> knum 0)
- (1- knum)
- (1+ knum)))
- (orig-entity (nth onum (mime-entity-children mother))))
- (mime-view-application/pgp orig-entity situation)
- ))
-
-
-;;; @ Internal method for application/pgp-keys
-;;;
-;;; It is based on RFC 2015 (PGP/MIME).
-
-(defun mime-add-application/pgp-keys (entity situation)
- (let* ((start (mime-entity-point-min entity))
- (end (mime-entity-point-max entity))
- (entity-number (mime-raw-point-to-entity-number start))
- (new-name (format "%s-%s" (buffer-name) entity-number))
- (encoding (cdr (assq 'encoding situation)))
- str)
- (setq str (buffer-substring start end))
- (switch-to-buffer new-name)
- (setq buffer-read-only nil)
- (erase-buffer)
- (insert str)
- (goto-char (point-min))
- (if (re-search-forward "^\n" nil t)
- (delete-region (point-min) (match-end 0))
- )
- (mime-decode-region (point-min)(point-max) encoding)
- (funcall (pgp-function 'snarf-keys))
- (kill-buffer (current-buffer))
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-pgp)
-
-(run-hooks 'mime-pgp-load-hook)
-
-;;; mime-pgp.el ends here
+++ /dev/null
-;;; mime-play.el --- Playback processing module for mime-view.el
-
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1995/9/26 (separated from tm-view.el)
-;; Renamed: 1997/2/21 from tm-play.el
-;; Keywords: MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Secretariat of Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mime-view)
-(require 'alist)
-(require 'filename)
-
-(eval-when-compile
- (require 'mime-text)
- (condition-case nil
- (require 'bbdb)
- (error (defvar bbdb-buffer-name nil))
- ))
-
-(defvar mime-acting-situation-examples nil)
-
-(defun mime-save-acting-situation-examples ()
- (let* ((file mime-acting-situation-examples-file)
- (buffer (get-buffer-create " *mime-example*")))
- (unwind-protect
- (save-excursion
- (set-buffer buffer)
- (setq buffer-file-name file)
- (erase-buffer)
- (insert ";;; " (file-name-nondirectory file) "\n")
- (insert "\n;; This file is generated automatically by "
- mime-view-version-string "\n\n")
- (insert ";;; Code:\n\n")
- (pp `(setq mime-acting-situation-examples
- ',mime-acting-situation-examples)
- (current-buffer))
- (insert "\n;;; "
- (file-name-nondirectory file)
- " ends here.\n")
- (save-buffer))
- (kill-buffer buffer))))
-
-(add-hook 'kill-emacs-hook 'mime-save-acting-situation-examples)
-
-
-;;; @ content decoder
-;;;
-
-(defvar mime-preview-after-decoded-position nil)
-
-(defun mime-preview-play-current-entity (&optional mode)
- "Play current entity.
-It decodes current entity to call internal or external method. The
-method is selected from variable `mime-acting-condition'.
-If MODE is specified, play as it. Default MODE is \"play\"."
- (interactive)
- (or mode
- (setq mode "play"))
- (let ((entity (get-text-property (point) 'mime-view-entity)))
- (if entity
- (let ((the-buf (current-buffer))
- (raw-buffer (mime-entity-buffer entity)))
- (setq mime-preview-after-decoded-position (point))
- (set-buffer raw-buffer)
- (mime-raw-play-entity entity mode)
- (when (eq (current-buffer) raw-buffer)
- (set-buffer the-buf)
- (goto-char mime-preview-after-decoded-position)
- )))))
-
-(defun mime-sort-situation (situation)
- (sort situation
- #'(lambda (a b)
- (let ((a-t (car a))
- (b-t (car b))
- (order '((type . 1)
- (subtype . 2)
- (mode . 3)
- (method . 4)
- (major-mode . 5)
- (disposition-type . 6)
- ))
- a-order b-order)
- (if (symbolp a-t)
- (let ((ret (assq a-t order)))
- (if ret
- (setq a-order (cdr ret))
- (setq a-order 7)
- ))
- (setq a-order 8)
- )
- (if (symbolp b-t)
- (let ((ret (assq b-t order)))
- (if ret
- (setq b-order (cdr ret))
- (setq b-order 7)
- ))
- (setq b-order 8)
- )
- (if (= a-order b-order)
- (string< (format "%s" a-t)(format "%s" b-t))
- (< a-order b-order))
- )))
- )
-
-(defsubst mime-delq-null-situation (situations field)
- (let (dest)
- (while situations
- (let ((situation (car situations)))
- (if (assq field situation)
- (setq dest (cons situation dest))
- ))
- (setq situations (cdr situations)))
- dest))
-
-(defun mime-raw-play-entity (entity &optional mode situation)
- "Play entity specified by ENTITY.
-It decodes the entity to call internal or external method. The method
-is selected from variable `mime-acting-condition'. If MODE is
-specified, play as it. Default MODE is \"play\"."
- (let (method ret)
- (or situation
- (setq situation (mime-entity-situation entity)))
- (if mode
- (setq situation (cons (cons 'mode mode) situation))
- )
- (setq ret
- (or (ctree-match-calist mime-acting-situation-examples situation)
- (ctree-match-calist-partially mime-acting-situation-examples
- situation)
- situation))
- (setq ret
- (or (mime-delq-null-situation
- (ctree-find-calist mime-acting-condition ret
- mime-view-find-every-acting-situation)
- 'method)
- (mime-delq-null-situation
- (ctree-find-calist mime-acting-condition situation
- mime-view-find-every-acting-situation)
- 'method)
- ))
- (cond ((cdr ret)
- (setq ret (select-menu-alist
- "Methods"
- (mapcar (function
- (lambda (situation)
- (cons
- (format "%s"
- (cdr (assq 'method situation)))
- situation)))
- ret)))
- (setq ret (mime-sort-situation ret))
- (ctree-set-calist-strictly 'mime-acting-situation-examples ret)
- )
- (t
- (setq ret (car ret))
- ))
- (setq method (cdr (assq 'method ret)))
- (cond ((and (symbolp method)
- (fboundp method))
- (funcall method entity ret)
- )
- ((stringp method)
- (mime-activate-mailcap-method entity ret)
- )
- ;; ((and (listp method)(stringp (car method)))
- ;; (mime-activate-external-method entity ret)
- ;; )
- (t
- (mime-show-echo-buffer "No method are specified for %s\n"
- (mime-entity-type/subtype entity))
- ))
- ))
-
-
-;;; @ external decoder
-;;;
-
-(defvar mime-mailcap-method-filename-alist nil)
-
-(defun mime-activate-mailcap-method (entity situation)
- (save-excursion
- (save-restriction
- (let ((start (mime-entity-point-min entity))
- (end (mime-entity-point-max entity)))
- (narrow-to-region start end)
- (goto-char start)
- (let ((method (cdr (assoc 'method situation)))
- (name (mime-entity-safe-filename entity)))
- (setq name
- (if name
- (expand-file-name name mime-temp-directory)
- (make-temp-name
- (expand-file-name "EMI" mime-temp-directory))
- ))
- (mime-write-decoded-region (mime-entity-body-start entity) end
- name (cdr (assq 'encoding situation)))
- (message "External method is starting...")
- (let ((process
- (let ((command
- (mailcap-format-command
- method
- (cons (cons 'filename name) situation))))
- (start-process command mime-echo-buffer-name
- shell-file-name shell-command-switch command)
- )))
- (set-alist 'mime-mailcap-method-filename-alist process name)
- (set-process-sentinel process 'mime-mailcap-method-sentinel)
- )
- )))))
-
-(defun mime-mailcap-method-sentinel (process event)
- (let ((file (cdr (assq process mime-mailcap-method-filename-alist))))
- (if (file-exists-p file)
- (delete-file file)
- ))
- (remove-alist 'mime-mailcap-method-filename-alist process)
- (message (format "%s %s" process event)))
-
-(defvar mime-echo-window-is-shared-with-bbdb t
- "*If non-nil, mime-echo window is shared with BBDB window.")
-
-(defvar mime-echo-window-height
- (function
- (lambda ()
- (/ (window-height) 5)
- ))
- "*Size of mime-echo window.
-It allows function or integer. If it is function,
-`mime-show-echo-buffer' calls it to get height of mime-echo window.
-Otherwise `mime-show-echo-buffer' uses it as height of mime-echo
-window.")
-
-(defun mime-show-echo-buffer (&rest forms)
- "Show mime-echo buffer to display MIME-playing information."
- (get-buffer-create mime-echo-buffer-name)
- (let ((the-win (selected-window))
- (win (get-buffer-window mime-echo-buffer-name))
- )
- (or win
- (if (and mime-echo-window-is-shared-with-bbdb
- (boundp 'bbdb-buffer-name)
- (setq win (get-buffer-window bbdb-buffer-name))
- )
- (set-window-buffer win mime-echo-buffer-name)
- (select-window (get-buffer-window mime-preview-buffer))
- (setq win (split-window-vertically
- (- (window-height)
- (if (functionp mime-echo-window-height)
- (funcall mime-echo-window-height)
- mime-echo-window-height)
- )))
- (set-window-buffer win mime-echo-buffer-name)
- ))
- (select-window win)
- (goto-char (point-max))
- (if forms
- (insert (apply (function format) forms))
- )
- (select-window the-win)
- ))
-
-
-;;; @ file name
-;;;
-
-(defvar mime-view-file-name-char-regexp "[A-Za-z0-9+_-]")
-
-(defvar mime-view-file-name-regexp-1
- (concat mime-view-file-name-char-regexp "+\\."
- mime-view-file-name-char-regexp "+"))
-
-(defvar mime-view-file-name-regexp-2
- (concat (regexp-* mime-view-file-name-char-regexp)
- "\\(\\." mime-view-file-name-char-regexp "+\\)*"))
-
-(defun mime-entity-safe-filename (entity)
- (let ((filename
- (or (mime-entity-filename entity)
- (let ((subj
- (or (mime-read-field 'Content-Description entity)
- (mime-read-field 'Subject entity))))
- (if (and subj
- (or (string-match mime-view-file-name-regexp-1 subj)
- (string-match mime-view-file-name-regexp-2 subj)))
- (substring subj (match-beginning 0)(match-end 0))
- )))))
- (if filename
- (replace-as-filename filename)
- )))
-
-
-;;; @ file extraction
-;;;
-
-(defun mime-save-content (entity situation)
- (let* ((name (mime-entity-safe-filename entity))
- (encoding (or (mime-entity-encoding entity) "7bit"))
- (filename (if (and name (not (string-equal name "")))
- (expand-file-name name
- (save-window-excursion
- (call-interactively
- (function
- (lambda (dir)
- (interactive "DDirectory: ")
- dir)))))
- (save-window-excursion
- (call-interactively
- (function
- (lambda (file)
- (interactive "FFilename: ")
- (expand-file-name file)))))))
- )
- (if (file-exists-p filename)
- (or (yes-or-no-p (format "File %s exists. Save anyway? " filename))
- (error "")))
- (mime-write-decoded-region (mime-entity-body-start entity)
- (mime-entity-body-end entity)
- filename encoding)
- ))
-
-
-;;; @ file detection
-;;;
-
-(defvar mime-file-content-type-alist
- '(("JPEG" image jpeg)
- ("GIF" image gif)
- )
- "*Alist of \"file\" output patterns vs. corresponding media-types.
-Each element looks like (REGEXP TYPE SUBTYPE).
-REGEXP is pattern for \"file\" command output.
-TYPE is symbol to indicate primary type of media-type.
-SUBTYPE is symbol to indicate subtype of media-type.")
-
-(defun mime-detect-content (entity situation)
- (let ((beg (mime-entity-point-min entity))
- (end (mime-entity-point-max entity)))
- (goto-char beg)
- (let* ((name (save-restriction
- (narrow-to-region beg end)
- (mime-entity-safe-filename entity)
- ))
- (encoding (or (cdr (assq 'encoding situation)) "7bit"))
- (filename (if (and name (not (string-equal name "")))
- (expand-file-name name mime-temp-directory)
- (make-temp-name
- (expand-file-name "EMI" mime-temp-directory)))))
- (mime-write-decoded-region (mime-entity-body-start entity) end
- filename encoding)
- (let (type subtype)
- (with-temp-buffer
- (call-process "file" nil t nil filename)
- (goto-char (point-min))
- (if (search-forward (concat filename ": ") nil t)
- (let ((rest mime-file-content-type-alist))
- (while (not (let ((cell (car rest)))
- (if (looking-at (car cell))
- (setq type (nth 1 cell)
- subtype (nth 2 cell))
- )))
- (setq rest (cdr rest))))))
- (if type
- (mime-raw-play-entity
- entity "play"
- (put-alist 'type type
- (put-alist 'subtype subtype
- (mime-entity-situation entity))))
- ))
- )))
-
-
-;;; @ mail/news message
-;;;
-
-(defun mime-preview-quitting-method-for-mime-show-message-mode ()
- "Quitting method for mime-view.
-It is registered to variable `mime-preview-quitting-method-alist'."
- (let ((mother mime-mother-buffer)
- (win-conf mime-preview-original-window-configuration)
- )
- (kill-buffer mime-raw-buffer)
- (mime-preview-kill-buffer)
- (set-window-configuration win-conf)
- (pop-to-buffer mother)
- ))
-
-(defun mime-view-message/rfc822 (entity cal)
- (let* ((beg (mime-entity-point-min entity))
- (end (mime-entity-point-max entity))
- (cnum (mime-raw-point-to-entity-number beg))
- (new-name (format "%s-%s" (buffer-name) cnum))
- (mother mime-preview-buffer)
- (representation-type (mime-entity-representation-type entity))
- str)
- (setq str (buffer-substring beg end))
- (switch-to-buffer new-name)
- (erase-buffer)
- (insert str)
- (goto-char (point-min))
- (if (re-search-forward "^\n" nil t)
- (delete-region (point-min) (match-end 0))
- )
- (setq major-mode 'mime-show-message-mode)
- (setq mime-raw-representation-type representation-type)
- (mime-view-mode mother)
- ))
-
-
-;;; @ message/partial
-;;;
-
-(defun mime-raw-write-region (start end filename)
- "Write current region into specified file.
-When called from a program, takes three arguments:
-START, END and FILENAME. START and END are buffer positions.
-It refer `mime-raw-representation-type' or `major-mode
-mime-raw-representation-type-alist'. If it is `binary', region is
-saved as binary. Otherwise the region is saved by `write-region'."
- (let ((presentation-type
- (or mime-raw-representation-type
- (cdr (or (assq major-mode mime-raw-representation-type-alist)
- (assq t mime-raw-representation-type-alist))))))
- (if (eq presentation-type 'binary)
- (write-region-as-binary start end filename)
- (write-region start end filename)
- )))
-
-(defun mime-store-message/partial-piece (entity cal)
- (goto-char (mime-entity-point-min entity))
- (let* ((root-dir
- (expand-file-name
- (concat "m-prts-" (user-login-name)) mime-temp-directory))
- (id (cdr (assoc "id" cal)))
- (number (cdr (assoc "number" cal)))
- (total (cdr (assoc "total" cal)))
- file
- (mother mime-preview-buffer)
- )
- (or (file-exists-p root-dir)
- (make-directory root-dir)
- )
- (setq id (replace-as-filename id))
- (setq root-dir (concat root-dir "/" id))
- (or (file-exists-p root-dir)
- (make-directory root-dir)
- )
- (setq file (concat root-dir "/FULL"))
- (if (file-exists-p file)
- (let ((full-buf (get-buffer-create "FULL"))
- (pwin (or (get-buffer-window mother)
- (get-largest-window)))
- )
- (save-window-excursion
- (set-buffer full-buf)
- (erase-buffer)
- (as-binary-input-file (insert-file-contents file))
- (setq major-mode 'mime-show-message-mode)
- (mime-view-mode mother)
- )
- (set-window-buffer pwin
- (save-excursion
- (set-buffer full-buf)
- mime-preview-buffer))
- (select-window pwin)
- )
- (setq file (concat root-dir "/" number))
- (mime-raw-write-region (mime-entity-body-start entity)
- (mime-entity-body-end entity) file)
- (let ((total-file (concat root-dir "/CT")))
- (setq total
- (if total
- (progn
- (or (file-exists-p total-file)
- (save-excursion
- (set-buffer
- (get-buffer-create mime-temp-buffer-name))
- (erase-buffer)
- (insert total)
- (write-region (point-min)(point-max) total-file)
- (kill-buffer (current-buffer))
- ))
- (string-to-number total)
- )
- (and (file-exists-p total-file)
- (save-excursion
- (set-buffer (find-file-noselect total-file))
- (prog1
- (and (re-search-forward "[0-9]+" nil t)
- (string-to-number
- (buffer-substring (match-beginning 0)
- (match-end 0)))
- )
- (kill-buffer (current-buffer))
- )))
- )))
- (if (and total (> total 0))
- (catch 'tag
- (save-excursion
- (set-buffer (get-buffer-create mime-temp-buffer-name))
- (let ((full-buf (current-buffer)))
- (erase-buffer)
- (let ((i 1))
- (while (<= i total)
- (setq file (concat root-dir "/" (int-to-string i)))
- (or (file-exists-p file)
- (throw 'tag nil)
- )
- (as-binary-input-file (insert-file-contents file))
- (goto-char (point-max))
- (setq i (1+ i))
- ))
- (as-binary-output-file
- (write-region (point-min)(point-max)
- (expand-file-name "FULL" root-dir)))
- (let ((i 1))
- (while (<= i total)
- (let ((file (format "%s/%d" root-dir i)))
- (and (file-exists-p file)
- (delete-file file)
- ))
- (setq i (1+ i))
- ))
- (let ((file (expand-file-name "CT" root-dir)))
- (and (file-exists-p file)
- (delete-file file)
- ))
- (save-window-excursion
- (setq major-mode 'mime-show-message-mode)
- (mime-view-mode mother)
- )
- (let ((pwin (or (get-buffer-window mother)
- (get-largest-window)
- ))
- (pbuf (save-excursion
- (set-buffer full-buf)
- mime-preview-buffer)))
- (set-window-buffer pwin pbuf)
- (select-window pwin)
- )))))
- )))
-
-
-;;; @ message/external-body
-;;;
-
-(defvar mime-raw-dired-function
- (if (and (>= emacs-major-version 19) window-system)
- (function dired-other-frame)
- (function mime-raw-dired-function-for-one-frame)
- ))
-
-(defun mime-raw-dired-function-for-one-frame (dir)
- (let ((win (or (get-buffer-window mime-preview-buffer)
- (get-largest-window))))
- (select-window win)
- (dired dir)
- ))
-
-(defun mime-view-message/external-ftp (entity cal)
- (let* ((site (cdr (assoc "site" cal)))
- (directory (cdr (assoc "directory" cal)))
- (name (cdr (assoc "name" cal)))
- (pathname (concat "/anonymous@" site ":" directory)))
- (message (concat "Accessing " (expand-file-name name pathname) "..."))
- (funcall mime-raw-dired-function pathname)
- (goto-char (point-min))
- (search-forward name)
- ))
-
-
-;;; @ rot13-47
-;;;
-
-(defun mime-view-caesar (entity situation)
- "Internal method for mime-view to display ROT13-47-48 message."
- (let* ((new-name (format "%s-%s" (buffer-name)
- (mime-entity-number entity)))
- (mother mime-preview-buffer))
- (let ((pwin (or (get-buffer-window mother)
- (get-largest-window)))
- (buf (get-buffer-create new-name)))
- (set-window-buffer pwin buf)
- (set-buffer buf)
- (select-window pwin)
- )
- (setq buffer-read-only nil)
- (erase-buffer)
- (mime-text-insert-decoded-body entity)
- (mule-caesar-region (point-min) (point-max))
- (set-buffer-modified-p nil)
- (set-buffer mother)
- (view-buffer new-name)
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-play)
-
-(let* ((file mime-acting-situation-examples-file)
- (buffer (get-buffer-create " *mime-example*")))
- (if (file-readable-p file)
- (unwind-protect
- (save-excursion
- (set-buffer buffer)
- (erase-buffer)
- (insert-file-contents file)
- (eval-buffer)
- ;; format check
- (or (eq (car mime-acting-situation-examples) 'type)
- (setq mime-acting-situation-examples nil))
- )
- (kill-buffer buffer))))
-
-;;; mime-play.el ends here
+++ /dev/null
-;;; mime-setup.el --- setup file for MIME viewer and composer.
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: MIME, multimedia, multilingual, mail, news
-
-;; This file is part of SEMI (Setting for Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(load "mail-mime-setup")
-
-(condition-case nil
- (load "gnus-mime-setup")
- (error (message "gnus-mime-setup is not found."))
- )
-
-(condition-case nil
- (load "emh-setup")
- (error (message "emh-setup is not found."))
- )
-
-
-;;; @ end
-;;;
-
-(provide 'mime-setup)
-
-(run-hooks 'mime-setup-load-hook)
-
-;;; mime-setup.el ends here
+++ /dev/null
-;;; mime-text.el --- mime-view content filter for text
-
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: text, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Suite of Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mime-view)
-
-
-;;; @ code conversion
-;;;
-
-(defun mime-text-insert-decoded-body (entity)
- "Insert text body of ENTITY in SITUATION.
-It decodes MIME-encoding then code-converts as MIME-charset.
-MIME-encoding is value of field 'encoding of SITUATION. It must be
-'nil or string. MIME-charset is value of field \"charset\" of
-SITUATION. It must be symbol."
- (let ((str (mime-entity-content entity)))
- (insert
- (if (and (mime-entity-cooked-p entity)
- (member (mime-entity-encoding entity)
- '(nil "7bit" "8bit" "binary")))
- str
- (decode-mime-charset-string str
- (or (mime-content-type-parameter
- (mime-entity-content-type entity)
- "charset")
- default-mime-charset))
- )))
- (run-hooks 'mime-text-decode-hook)
- )
-
-
-;;; @ for URL
-;;;
-
-(require 'browse-url)
-
-(defvar mime-text-url-regexp
- "\\(http\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,]*[-a-zA-Z0-9_=#$@~`%&*+|\\/]"
- "*Regexp to match URL in text/plain body.")
-
-(defun mime-text-browse-url (&optional url)
- (if (fboundp browse-url-browser-function)
- (if url
- (funcall browse-url-browser-function url)
- (call-interactively browse-url-browser-function))
- (if (fboundp mime-button-mother-dispatcher)
- (call-interactively mime-button-mother-dispatcher)
- )
- ))
-
-(defsubst mime-text-add-url-buttons ()
- "Add URL-buttons for text body."
- (goto-char (point-min))
- (while (re-search-forward mime-text-url-regexp nil t)
- (let ((beg (match-beginning 0))
- (end (match-end 0)))
- (mime-add-button beg end #'mime-text-browse-url
- (list (buffer-substring beg end)))
- )))
-
-(defun mime-text-add-url-buttons-maybe ()
- "Add URL-buttons if 'browse-url-browser-function is not 'nil."
- (if browse-url-browser-function
- (mime-text-add-url-buttons)
- ))
-
-
-;;; @ content filters for mime-text
-;;;
-
-(defun mime-display-text/plain (entity situation)
- (save-restriction
- (narrow-to-region (point-max)(point-max))
- (mime-text-insert-decoded-body entity)
- (goto-char (point-max))
- (if (not (eq (char-after (1- (point))) ?\n))
- (insert "\n")
- )
- (mime-text-add-url-buttons)
- (run-hooks 'mime-display-text/plain-hook)
- ))
-
-(defun mime-display-text/richtext (entity situation)
- (save-restriction
- (narrow-to-region (point-max)(point-max))
- (mime-text-insert-decoded-body entity)
- (let ((beg (point-min)))
- (remove-text-properties beg (point-max) '(face nil))
- (richtext-decode beg (point-max))
- )))
-
-(defun mime-display-text/enriched (entity situation)
- (save-restriction
- (narrow-to-region (point-max)(point-max))
- (mime-text-insert-decoded-body entity)
- (let ((beg (point-min)))
- (remove-text-properties beg (point-max) '(face nil))
- (enriched-decode beg (point-max))
- )))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-text)
-
-;;; mime-text.el ends here
+++ /dev/null
-<!doctype sinfo system>
-<head>
-<title>SEMI 1.6 MIME-View \e$B@bL@=q\e(B
-<author>\e$B<i2,\e(B \e$BCNI'\e(B <mail>morioka@jaist.ac.jp</mail>
-<date>1998/06/15
-
-<toc>
-</head>
-
-<body>
-
-<abstract>
-<p>
-This file documents MIME-View, a MIME Viewer for GNU Emacs.
-<p>
-GNU Emacs \e$BMQ$N\e(B MIME Viewer \e$B$G$"$k\e(B MIME-View \e$B$K$D$$$F@bL@$7$^$9!#\e(B
-</abstract>
-
-
-<h1> MIME-View \e$B$C$F2?!)\e(B
-<node> Introduction
-<p>
-MIME-View \e$B$O\e(B GNU Emacs \e$B$GF0:n$9$kHFMQE*$J\e(B MIME viewer \e$B$G$9!#\e(B
-<p>
-MIME-View \e$B$O\e(B MIME message \e$B$r1\Mw$9$k$?$a$NMxMQ<T3&LL\e(B (user interface)
-\e$B$N3K$G$"$j!"$3$N>e$G\e(B presentation-method \e$B$H8F$P$l$kI=<($r:n$k%W%m%0%i%`\e(B
-\e$B$rF0$+$7$?$j!"\e(Bacting-method \e$B$H8F$P$l$k\e(B entity \e$B$N=hM}%W%m%0%i%`$rF0$+$9\e(B
-\e$B$3$H$,2DG=$G!"$5$^$6$^$J<oN`$N\e(B entity \e$B$r07$&;v$,$G$-$k$h$&$K$J$C$F$$$^$9!#\e(B
-
-
-<h1> MIME-View \e$B35@b\e(B
-<node> Overview
-<p>
-Internet \e$B$NEE;R=q4J!&%M%C%H%K%e!<%9$J$I$N=qLL\e(B (message) \e$B$NI=8=7A<0$O\e(B
-STD 11 \e$B$K4p$E$$$F$$$^$9!#\e(BSTD 11 \e$B$N=qLLK\BN\e(B (message body) \e$B$O9T$rM#0l$N\e(B
-\e$B9=B$$H$9$k4J0WJ8LL\e(B (plain text) \e$B$G$"$j!"J8;zId9f$b\e(B us-ascii \e$B$HDj$a$i$l\e(B
-\e$B$F$$$^$9!#<B:]$K$O!"J8;zId9f$r\e(B us-ascii \e$B$NBe$o$j$K$=$N8@8l7w$GMQ$$$i$l\e(B
-\e$B$kJ8;zId9f$H$7$?!XCO0h2=$5$l$?\e(B STD 11\e$B!Y=qLL$bMQ$$$i$l$F$-$^$7$?$,!"$3\e(B
-\e$B$N>l9g$b=qLL$NJ8;zId9f$O#1$D$G$9!#$3$N$?$a!"MxMQ<T3&LL\e(B (Message User
-Agent) \e$B$O!"$7$P$7$P!"\e(Bbyte \e$BNs\e(B = us-ascii \e$BJ8;zNs!"$J$$$7$O!"\e(Bbyte \e$BNs\e(B = \e$B$=\e(B
-\e$B$N8@8l7w$GMQ$$$kJ8;zId9f$NJ8;zNs$N$h$&$K8+Jo$7$F$-$^$7$?!#\e(B
-<p>
-\e$B$7$+$7$J$,$i!"\e(BMIME \e$B$G$O=qLL$O\e(B entity \e$B$rC10L$H$9$kLZ9=B$$K$J$j!"$^$?!"\e(B
-\e$B#1$D$N=qLL$GJ#?t$NJ8;zId9f$rMQ$$$k$3$H$,$G$-$^$9!#$^$?!"\e(Bentity \e$B$NFbMF\e(B
-\e$B$OJ8LL$d3($N$h$&$JC1=c$KI=<(2DG=$J$b$N$@$1$G$J$/!"2;@<$dF02h$J$I$N0lDj\e(B
-\e$B;~4V:F@8$5$l$k$h$&$J$b$N$dFCDj$N%"%W%j%1!<%7%g%s$N%G!<%?$d%W%m%0%i%`$N\e(B
-\e$B%=!<%9!"$"$k$$$O!"\e(Bftp \e$B$d\e(B mail service \e$B$NMxMQK!$d\e(B URL \e$B$H$$$C$?7A$GI=$5\e(B
-\e$B$l$?30It;2>H$J$I$N$5$^$6$^$J$b$N$,9M$($i$^$9!#$3$N$?$a!"I=<($@$1$r9M$(\e(B
-\e$B$F$$$?\e(B STD 11 \e$B$K$*$1$kMxMQ<T3&LL$NC1=c$J1dD9$G$O\e(B MIME \e$B$NA4$F$N5!G=$r07\e(B
-\e$B$&$3$H$O$G$-$^$;$s!#$D$^$j!"\e(BMIME \e$B$N7A<0$K9g$o$;$FI|9f$9$k$@$1$G$OIT==\e(B
-\e$BJ,$G$"$j!"MxMQ<T$H$NBPOCE*$J:F@8=hM}$r9MN8$9$kI,MW$,$"$j$^$9!#\e(BMIME \e$B=q\e(B
-\e$BLL$N7A<0$O<+F0=hM}$,$7$d$9$/@_7W$5$l$F$$$^$9$,!"\e(BMIME \e$B=qLL$K4^$^$l$kFb\e(B
-\e$BMF$NCf$K$O%;%-%e%j%F%#!<>e$NLdBj$+$i<+F0=hM}$r$9$k$Y$-$G$J$$$b$N$,$"$j!"\e(B
-\e$B$3$&$$$C$?$b$N$N:F@8$K4X$7$F$OMxMQ<T$NH=CG$r6D$0$h$&$K@_7W$5$l$k$Y$-$G\e(B
-\e$B$7$g$&!#7k6I!"\e(BMIME \e$B=qLL$r07$&$?$a$K$O\e(B STD 11 \e$B$*$h$S\e(B MIME \e$B$N9=J8$G5-=R\e(B
-\e$B$5$l$?%a%C%;!<%8$N>pJs8r49MQI=8=$H$=$N2r<a7k2L$G$"$kI=<(2hLL$d:F@8Ey$N\e(B
-\e$B=hM}$r6hJL$7$F9M$($kI,MW$,$"$j$^$9!#$^$?!"MxMQ<T$H$NBPOCE*$J:F@8=hM}$,\e(B
-\e$BI,MW$G$9!#\e(B
-<p>
-\e$B$3$N$?$a!"\e(BMIME-View \e$B$O#1$D$N=qLL$KBP$7$F!">pJs8r49MQI=8=$r3JG<$9$k\e(B
-mime-raw-buffer \e$B$HI=<(MQI=8=$r3JG<$9$k\e(B mime-preview-buffer \e$B$N#2$D$N\e(B
-buffer \e$B$rMQ$$$^$9!#\e(B
-<p>
-MIME-View \e$B$O\e(B mime-preview-buffer \e$B$KBP$7$F\e(B mime-view-mode \e$B$H$$$&\e(B MIME
-message \e$B$r1\Mw$9$k$?$a$N\e(B mode \e$B$rDs6!$7$^$9!#MxMQ<T$O$3$3$G3F\e(B entity \e$B$K\e(B
-\e$BBP$7$FA`:n$r9T$&$3$H$,$G$-$^$9!#\e(B
-
-
-<h1> mime-preview-buffer \e$B$N2hLL9=@.\e(B
-<node> MIME-Preview
-<p>
-mime-view-mode \e$B$G$O3F\e(B entity \e$B$KBP$7$F\e(B
-<p>
-<verb>
- [entity-button]
- (header)
-
- (body)
- (separator)
-</verb>
-<p>
-<noindent>
-\e$B$H$$$&>pJs$rI=<($7$^$9!#$3$l$i$O>r7o$K=>$C$F\e(B design \e$B$rJQ99$7$?$j!"I=<(\e(B
-\e$B$rM^@)$9$k$3$H$b$G$-$^$9!#\e(B
-<p>
-\e$B0J2<$K!"I=<(Nc$r<($7$^$9!#\e(B
-
-
-<verb>
-From: morioka@jaist.ac.jp (\e$B<i2,\e(B \e$BCNI'\e(B / MORIOKA Tomohiko)
-Subject: Re: \e$B<ALd!)\e(B
-Newsgroups: zxr.message.mime
-Date: 22 Oct 93 11:02:44
-Mime-Version: 1.0
-Organization: Japan Advanced Institute of Science and Technology,
- Ishikawa, Japan
-
-[1 (text/plain)]
- MIME-Edit mode \e$B$K$*$1$k!"\e(BMIME message \e$B$N:n$jJ}!#\e(B
-
- C-c C-x ? \e$B$r2!$9$H\e(B help \e$B$,=P$F$/$k!#\e(B
-
-C-c C-x C-t insert a text message.
-C-c C-x TAB insert a (binary) file.
-C-c C-x C-e insert a reference to external body.
-C-c C-x C-v insert a voice message.
-C-c C-x C-y insert a mail or news message.
-C-c C-x RET insert a mail message.
-C-c C-x C-s insert a signature file at end.
-C-c C-x t insert a new MIME tag.
-C-c C-x a enclose as multipart/alternative.
-C-c C-x p enclose as multipart/parallel.
-C-c C-x m enclose as multipart/mixed.
-C-c C-x d enclose as multipart/digest.
-C-c C-x s enclose as PGP signed.
-C-c C-x e enclose as PGP encrypted.
-C-c C-x C-k insert PGP public key.
-C-c C-x C-p preview editing MIME message.
-...
-
-\e$B$C$FLu$G!"\e(BC-c C-x C-i \e$B$r2!$7$F!"A^F~$7$?$$\e(B binary file \e$B$r;XDj$7$^$9!#\e(B
-
- binary file \e$B$N\e(B MIME encoding \e$B$K$O!"IaDL!"\e(BBase64 \e$B$r;XDj$7$^$9!#\e(B
-
-[2 (image/gif)]
-
-[3 (text/plain)]
-
- \e$B$3$s$JIw$K!"3(F~$j\e(B message \e$B$N$G$->e$,$j!#\e(B
-
-\e$B".".".".".".".".".".".\e(B \e$B%m%7%"%s!&%F%#!<$r0lGU!#\e(B \e$B".".".".".".".".".".".\e(B
-\e$B".".".".".\e(B \e$B!y\e(B \e$B%8%c%`$G$O$J$/%^!<%^%l!<%I$G$b$J$/K*L*$G\e(B \e$B!y\e(B \e$B".".".".".\e(B
-\e$B".".".".".\e(B \e$B'.'0'2$$'0','!\e(B \e$B'4'0'.'0'7'*','0\e(B \e$B".".".".".\e(B
-\e$B".".".".".".".\e(B Internet E-mail: <morioka@jaist.ac.jp> \e$B".".".".".".".\e(B
-</verb>
-
-
-<h2> entity-button
-<node> entity-button
-<p>
-<concept>entity-button</concept> \e$B$O\e(B entity \e$B$N@hF,$K$"$C$F!"$=$N\e(B entity
-\e$B$K4X$9$kBg$^$+$J>pJs$rI=<($9$kItJ,$G$9!#\e(B
-<p>
-\e$BI8=`$G$O\e(B
-
-<verb>
- [1.3 test (text/plain)]
-</verb>
-
-<noindent>
-\e$B$N$h$&$J46$8$KI=<($5$l$^$9!#\e(B
-<p>
-\e$B:G=i$N?t;z$O\e(B message \e$BCf$N$3$N\e(B entity \e$B$N0LCV$r@aHV9f$N$h$&$KI=$7$?$b$N\e(B
-\e$B$G!"\e(B<concept>entity-number</concept> \e$B$H8F$S$^$9!#\e(B
-<p>
-\e$B#2HVL\$NJ8;zNs$OI=Bj$rI=$7$^$9!#$3$N>pJs$O!"\e(B
-
-<ol>
-<li>Content-Description field \e$B$b$7$/$O\e(B Subject field \e$B$K=q$+$l$?I=Bj\e(B
-<li>Content-Disposition field \e$B$N\e(B filename parameter \e$B$K=q$+$l$?\e(B file \e$BL>\e(B
-<li>Content-Type field \e$B$N\e(B name parameter \e$B$K=q$+$l$?\e(B file \e$BL>\e(B
-<li> uuencode \e$B$N>l9g$N\e(B file \e$BL>\e(B
-</ol>
-
-<noindent>
-\e$B$+$i:n$j$^$9!#$I$l$bB8:_$7$J$$>l9g$O6uGr$,I=<($5$l$^$9!#\e(B
-<p>
-\e$B#3HVL\$N3g8L$NCf$N>pJs$O$=$N\e(B entity \e$B$N\e(B media-type/subtype \e$B$rI=$7$^$9!#\e(B
-\e$BHs\e(B MIME entity \e$B$N>l9g!"\e(B<code>nil</code> \e$B$,I=<($5$l$^$9!#\e(B
-<p>
-\e$B$3$N\e(B entity-button \e$B$O\e(B entity \e$B$NFbMF$r>]D'$9$k\e(B icon \e$B$N$h$&$JLr3d$r2L$?\e(B
-\e$B$7$^$9!#Nc$($P!"\e(B
-
-<verb>
- [2 (image/gif)]
-</verb>
-
-<noindent>
-\e$B$N>e$G\e(B <kbd>v</kbd> \e$B$r2!$;$P$3$3$KF~$C$F$$$k3($,I=<($5$l$^$9!#\e(B
-<p>
-\e$B$^$?!"\e(Bmouse \e$BA`:n$,2DG=$J>l9g!"\e(Bentity-button \e$B$rBh#2%\%?%s!J\e(B3 button
-mouse \e$B$N>l9g!"Cf1{$N%\%?%s!K$G2!$;$P!"F1MM$K$=$N3($,I=<($5$l$^$9!#\e(B
-
-
-<h2> entity-header
-<node> entity-header
-<p>
-<concept>entity-header</concept> \e$B$O$"$k\e(B entity \e$B$N\e(B header \e$B$rI=<($9$kIt\e(B
-\e$BJ,$G$9!J!V$=$N$^$^$d$s$1!W$C$FE\$i$J$$$G!#$=$&$$$&$b$s$J$s$G$9!K!#\e(B
-
-
-<h2> entity-body
-<node> entity-body
-<p>
-<concept>entity-body</concept> \e$B$O\e(B part \e$B$NFbMF$rI=<($9$kItJ,$G$9!#\e(B
-<p>
-\e$B$3$l$b$R$M$j$,B-$j$J$$$G$9$,!"$^$"!"$=$&$$$&$b$s$G$9!#\e(B
-<p>
-\e$B$H$O$$$(!"<B:]$K$O>/$7$R$M$C$F$^$9!#\e(B
-<p>
-text entity \e$B$N>l9g$O\e(B charset \e$B$K1~$8$F\e(B code \e$BJQ49$7$?$j$7$^$9$7!"\e(BXEmacs
-\e$B$G$O\e(B image entity \e$B$rJQ49$7$J$$$H$$$1$J$$$7!#\e(B
-<p>
-\e$B>\$7$/$O$^$?8e$G!#\e(B
-
-
-<h1> mime-preview-buffer \e$B$G$NA`:n\e(B
-<node> mime-view-mode
-<p>
-mime-preview-buffer \e$B$K$O0J2<$N5!G=$,$"$j$^$9!#\e(B
-<p>
-<kl>
-<kt>u
-<kd>
-\e$B>e$N\e(B part \e$B$KLa$k!J\e(Bmessage \e$B$N0lHV>e$N\e(B part \e$B$G$3$l$r9T$J$&$H\e(B Summary
-mode \e$B$KLa$k\e(B (*1)\e$B!K\e(B
-</kd>
-<kt>p<kd>\e$BA0$N\e(B part \e$B$K0\F0$9$k\e(B
-</kd>
-<kt>M-TAB<kd>\e$BA0$N\e(B part \e$B$K0\F0$9$k\e(B
-</kd>
-<kt>n<kd>\e$B<!$N\e(B part \e$B$K0\F0$9$k\e(B
-</kd>
-<kt>TAB<kd>\e$B<!$N\e(B part \e$B$K0\F0$9$k\e(B
-</kd>
-<kt>SPC<kd>scroll up \e$B$9$k\e(B
-</kd>
-<kt>M-SPC<kd>scroll down \e$B$9$k\e(B
-</kd>
-<kt>DEL<kd>scroll down \e$B$9$k\e(B
-</kd>
-<kt>RET<kd>\e$B<!$N9T$K0\F0$9$k\e(B
-</kd>
-<kt>M-RET<kd>\e$BA0$N9T$K0\F0$9$k\e(B
-</kd>
-<kt>v<kd>part \e$B$r:F@8$9$k\e(B (*2)
-</kd>
-<kt>e<kd>part \e$B$+$i\e(B file \e$B$r<h$j=P$9\e(B (*2)
-</kd>
-<kt>C-c C-p<kd>part \e$B$r0u:~$9$k\e(B (*2)
-</kd>
-<kt>mouse-button-2
-<kd>
-preview-buffer \e$BCf$N\e(B mouse button \e$B$r5/F0$9$k\e(B
-<p>
-content-button \e$B$r2!$;$P!"$=$N\e(B part \e$B$,:F@8$5$l$k\e(B(*2)
-<p>
-URL-button \e$B$r2!$;$P!"$=$N\e(B WWW browser \e$B$,5/F0$5$l$k\e(B
-</kd>
-</kl>
-<p>
-<memo title="\e$BCm0U\e(B">
-<p>
-(*1) MUA \e$B$G\e(B mime-view \e$B$N@_Dj$r$7$F$$$J$$>l9g!"\e(BSummary mode \e$B$K$OLa$j$^\e(B
-\e$B$;$s!#\e(B
-<p>
-(*2) \e$B<B:]$NF0:n$OBP1~$9$k\e(B method \e$B$K0M$j$^$9!#\e(B
-</memo>
-
-
-<h1> \e$B35G0:w0z\e(B
-<node> Concept Index
-
-<cindex>
-
-
-<h1> \e$B4X?t:w0z\e(B
-<node> Function Index
-
-<findex>
-
-
-<h1> \e$BJQ?t:w0z\e(B
-<node> Variable Index
-
-<vindex>
-
-</body>
+++ /dev/null
-\input texinfo.tex
-@setfilename mime-view-ja.info
-@settitle{SEMI 1.6 MIME-View \e$B@bL@=q\e(B}
-@titlepage
-@title SEMI 1.6 MIME-View \e$B@bL@=q\e(B
-@author \e$B<i2,\e(B \e$BCNI'\e(B <morioka@@jaist.ac.jp>
-@subtitle 1998/06/15
-@end titlepage
-@node Top, Introduction, (dir), (dir)
-@top SEMI 1.6 MIME-View \e$B@bL@=q\e(B
-
-@ifinfo
-
-This file documents MIME-View, a MIME Viewer for GNU Emacs.@refill
-
-GNU Emacs \e$BMQ$N\e(B MIME Viewer \e$B$G$"$k\e(B MIME-View \e$B$K$D$$$F@bL@$7$^$9!#\e(B
-@end ifinfo
-
-@menu
-* Introduction:: MIME-View \e$B$C$F2?!)\e(B
-* Overview:: MIME-View \e$B35@b\e(B
-* MIME-Preview:: mime-preview-buffer \e$B$N2hLL9=@.\e(B
-* mime-view-mode:: mime-preview-buffer \e$B$G$NA`:n\e(B
-* Concept Index:: \e$B35G0:w0z\e(B
-* Function Index:: \e$B4X?t:w0z\e(B
-* Variable Index:: \e$BJQ?t:w0z\e(B
-@end menu
-
-@node Introduction, Overview, Top, Top
-@chapter MIME-View \e$B$C$F2?!)\e(B
-
-MIME-View \e$B$O\e(B GNU Emacs \e$B$GF0:n$9$kHFMQE*$J\e(B MIME viewer \e$B$G$9!#\e(B@refill
-
-MIME-View \e$B$O\e(B MIME message \e$B$r1\Mw$9$k$?$a$NMxMQ<T3&LL\e(B (user interface)
-\e$B$N3K$G$"$j!"$3$N>e$G\e(B presentation-method \e$B$H8F$P$l$kI=<($r:n$k%W%m%0%i%`\e(B
-\e$B$rF0$+$7$?$j!"\e(Bacting-method \e$B$H8F$P$l$k\e(B entity \e$B$N=hM}%W%m%0%i%`$rF0$+$9\e(B
-\e$B$3$H$,2DG=$G!"$5$^$6$^$J<oN`$N\e(B entity \e$B$r07$&;v$,$G$-$k$h$&$K$J$C$F$$$^$9!#\e(B
-
-
-@node Overview, MIME-Preview, Introduction, Top
-@chapter MIME-View \e$B35@b\e(B
-
-Internet \e$B$NEE;R=q4J!&%M%C%H%K%e!<%9$J$I$N=qLL\e(B (message) \e$B$NI=8=7A<0$O\e(B STD
-11 \e$B$K4p$E$$$F$$$^$9!#\e(BSTD 11 \e$B$N=qLLK\BN\e(B (message body) \e$B$O9T$rM#0l$N9=B$$H\e(B
-\e$B$9$k4J0WJ8LL\e(B (plain text) \e$B$G$"$j!"J8;zId9f$b\e(B us-ascii \e$B$HDj$a$i$l$F$$$^$9!#\e(B
-\e$B<B:]$K$O!"J8;zId9f$r\e(B us-ascii \e$B$NBe$o$j$K$=$N8@8l7w$GMQ$$$i$l$kJ8;zId9f$H\e(B
-\e$B$7$?!XCO0h2=$5$l$?\e(B STD 11\e$B!Y=qLL$bMQ$$$i$l$F$-$^$7$?$,!"$3$N>l9g$b=qLL$N\e(B
-\e$BJ8;zId9f$O#1$D$G$9!#$3$N$?$a!"MxMQ<T3&LL\e(B (Message User Agent) \e$B$O!"$7$P$7\e(B
-\e$B$P!"\e(Bbyte \e$BNs\e(B = us-ascii \e$BJ8;zNs!"$J$$$7$O!"\e(Bbyte \e$BNs\e(B = \e$B$=$N8@8l7w$GMQ$$$kJ8\e(B
-\e$B;zId9f$NJ8;zNs$N$h$&$K8+Jo$7$F$-$^$7$?!#\e(B@refill
-
-\e$B$7$+$7$J$,$i!"\e(BMIME \e$B$G$O=qLL$O\e(B entity \e$B$rC10L$H$9$kLZ9=B$$K$J$j!"$^$?!"#1\e(B
-\e$B$D$N=qLL$GJ#?t$NJ8;zId9f$rMQ$$$k$3$H$,$G$-$^$9!#$^$?!"\e(Bentity \e$B$NFbMF$OJ8\e(B
-\e$BLL$d3($N$h$&$JC1=c$KI=<(2DG=$J$b$N$@$1$G$J$/!"2;@<$dF02h$J$I$N0lDj;~4V:F\e(B
-\e$B@8$5$l$k$h$&$J$b$N$dFCDj$N%"%W%j%1!<%7%g%s$N%G!<%?$d%W%m%0%i%`$N%=!<%9!"\e(B
-\e$B$"$k$$$O!"\e(Bftp \e$B$d\e(B mail service \e$B$NMxMQK!$d\e(B URL \e$B$H$$$C$?7A$GI=$5$l$?30It;2\e(B
-\e$B>H$J$I$N$5$^$6$^$J$b$N$,9M$($i$^$9!#$3$N$?$a!"I=<($@$1$r9M$($F$$$?\e(B STD
-11 \e$B$K$*$1$kMxMQ<T3&LL$NC1=c$J1dD9$G$O\e(B MIME \e$B$NA4$F$N5!G=$r07$&$3$H$O$G$-\e(B
-\e$B$^$;$s!#$D$^$j!"\e(BMIME \e$B$N7A<0$K9g$o$;$FI|9f$9$k$@$1$G$OIT==J,$G$"$j!"MxMQ\e(B
-\e$B<T$H$NBPOCE*$J:F@8=hM}$r9MN8$9$kI,MW$,$"$j$^$9!#\e(BMIME \e$B=qLL$N7A<0$O<+F0=h\e(B
-\e$BM}$,$7$d$9$/@_7W$5$l$F$$$^$9$,!"\e(BMIME \e$B=qLL$K4^$^$l$kFbMF$NCf$K$O%;%-%e%j\e(B
-\e$B%F%#!<>e$NLdBj$+$i<+F0=hM}$r$9$k$Y$-$G$J$$$b$N$,$"$j!"$3$&$$$C$?$b$N$N:F\e(B
-\e$B@8$K4X$7$F$OMxMQ<T$NH=CG$r6D$0$h$&$K@_7W$5$l$k$Y$-$G$7$g$&!#7k6I!"\e(BMIME
-\e$B=qLL$r07$&$?$a$K$O\e(B STD 11 \e$B$*$h$S\e(B MIME \e$B$N9=J8$G5-=R$5$l$?%a%C%;!<%8$N>pJs\e(B
-\e$B8r49MQI=8=$H$=$N2r<a7k2L$G$"$kI=<(2hLL$d:F@8Ey$N=hM}$r6hJL$7$F9M$($kI,MW\e(B
-\e$B$,$"$j$^$9!#$^$?!"MxMQ<T$H$NBPOCE*$J:F@8=hM}$,I,MW$G$9!#\e(B@refill
-
-\e$B$3$N$?$a!"\e(BMIME-View \e$B$O#1$D$N=qLL$KBP$7$F!">pJs8r49MQI=8=$r3JG<$9$k\e(B
-mime-raw-buffer \e$B$HI=<(MQI=8=$r3JG<$9$k\e(B mime-preview-buffer \e$B$N#2$D$N\e(B
-buffer \e$B$rMQ$$$^$9!#\e(B@refill
-
-MIME-View \e$B$O\e(B mime-preview-buffer \e$B$KBP$7$F\e(B mime-view-mode \e$B$H$$$&\e(B MIME
-message \e$B$r1\Mw$9$k$?$a$N\e(B mode \e$B$rDs6!$7$^$9!#MxMQ<T$O$3$3$G3F\e(B entity \e$B$K\e(B
-\e$BBP$7$FA`:n$r9T$&$3$H$,$G$-$^$9!#\e(B
-
-
-@node MIME-Preview, mime-view-mode, Overview, Top
-@chapter mime-preview-buffer \e$B$N2hLL9=@.\e(B
-
-mime-view-mode \e$B$G$O3F\e(B entity \e$B$KBP$7$F\e(B@refill
-
-@example
- [entity-button]
- (header)
-
- (body)
- (separator)
-@end example
-
-@noindent
-\e$B$H$$$&>pJs$rI=<($7$^$9!#$3$l$i$O>r7o$K=>$C$F\e(B design \e$B$rJQ99$7$?$j!"I=<(\e(B
-\e$B$rM^@)$9$k$3$H$b$G$-$^$9!#\e(B
-
-\e$B0J2<$K!"I=<(Nc$r<($7$^$9!#\e(B
-
-
-@example
-From: morioka@@jaist.ac.jp (\e$B<i2,\e(B \e$BCNI'\e(B / MORIOKA Tomohiko)
-Subject: Re: \e$B<ALd!)\e(B
-Newsgroups: zxr.message.mime
-Date: 22 Oct 93 11:02:44
-Mime-Version: 1.0
-Organization: Japan Advanced Institute of Science and Technology,
- Ishikawa, Japan
-
-[1 (text/plain)]
- MIME-Edit mode \e$B$K$*$1$k!"\e(BMIME message \e$B$N:n$jJ}!#\e(B
-
- C-c C-x ? \e$B$r2!$9$H\e(B help \e$B$,=P$F$/$k!#\e(B
-
-C-c C-x C-t insert a text message.
-C-c C-x TAB insert a (binary) file.
-C-c C-x C-e insert a reference to external body.
-C-c C-x C-v insert a voice message.
-C-c C-x C-y insert a mail or news message.
-C-c C-x RET insert a mail message.
-C-c C-x C-s insert a signature file at end.
-C-c C-x t insert a new MIME tag.
-C-c C-x a enclose as multipart/alternative.
-C-c C-x p enclose as multipart/parallel.
-C-c C-x m enclose as multipart/mixed.
-C-c C-x d enclose as multipart/digest.
-C-c C-x s enclose as PGP signed.
-C-c C-x e enclose as PGP encrypted.
-C-c C-x C-k insert PGP public key.
-C-c C-x C-p preview editing MIME message.
-...
-
-\e$B$C$FLu$G!"\e(BC-c C-x C-i \e$B$r2!$7$F!"A^F~$7$?$$\e(B binary file \e$B$r;XDj$7$^$9!#\e(B
-
- binary file \e$B$N\e(B MIME encoding \e$B$K$O!"IaDL!"\e(BBase64 \e$B$r;XDj$7$^$9!#\e(B
-
-[2 (image/gif)]
-
-[3 (text/plain)]
-
- \e$B$3$s$JIw$K!"3(F~$j\e(B message \e$B$N$G$->e$,$j!#\e(B
-
-\e$B".".".".".".".".".".".\e(B \e$B%m%7%"%s!&%F%#!<$r0lGU!#\e(B \e$B".".".".".".".".".".".\e(B
-\e$B".".".".".\e(B \e$B!y\e(B \e$B%8%c%`$G$O$J$/%^!<%^%l!<%I$G$b$J$/K*L*$G\e(B \e$B!y\e(B \e$B".".".".".\e(B
-\e$B".".".".".\e(B \e$B'.'0'2$$'0','!\e(B \e$B'4'0'.'0'7'*','0\e(B \e$B".".".".".\e(B
-\e$B".".".".".".".\e(B Internet E-mail: <morioka@@jaist.ac.jp> \e$B".".".".".".".\e(B
-@end example
-
-
-
-@menu
-* entity-button::
-* entity-header::
-* entity-body::
-@end menu
-
-@node entity-button, entity-header, MIME-Preview, MIME-Preview
-@section entity-button
-@cindex entity-number
-@cindex entity-button
-
-@strong{entity-button} \e$B$O\e(B entity \e$B$N@hF,$K$"$C$F!"$=$N\e(B entity \e$B$K4X$9$kBg\e(B
-\e$B$^$+$J>pJs$rI=<($9$kItJ,$G$9!#\e(B@refill
-
-\e$BI8=`$G$O\e(B
-
-@example
- [1.3 test (text/plain)]
-@end example
-
-@noindent
-\e$B$N$h$&$J46$8$KI=<($5$l$^$9!#\e(B
-
-\e$B:G=i$N?t;z$O\e(B message \e$BCf$N$3$N\e(B entity \e$B$N0LCV$r@aHV9f$N$h$&$KI=$7$?$b$N$G!"\e(B
-@strong{entity-number} \e$B$H8F$S$^$9!#\e(B@refill
-
-\e$B#2HVL\$NJ8;zNs$OI=Bj$rI=$7$^$9!#$3$N>pJs$O!"\e(B
-
-@enumerate
-@item
-Content-Description field \e$B$b$7$/$O\e(B Subject field \e$B$K=q$+$l$?I=Bj\e(B
-@item
-Content-Disposition field \e$B$N\e(B filename parameter \e$B$K=q$+$l$?\e(B file \e$BL>\e(B
-@item
-Content-Type field \e$B$N\e(B name parameter \e$B$K=q$+$l$?\e(B file \e$BL>\e(B
-@item
- uuencode \e$B$N>l9g$N\e(B file \e$BL>\e(B
-@end enumerate
-
-@noindent
-\e$B$+$i:n$j$^$9!#$I$l$bB8:_$7$J$$>l9g$O6uGr$,I=<($5$l$^$9!#\e(B
-
-\e$B#3HVL\$N3g8L$NCf$N>pJs$O$=$N\e(B entity \e$B$N\e(B media-type/subtype \e$B$rI=$7$^$9!#Hs\e(B
-MIME entity \e$B$N>l9g!"\e(B@code{nil} \e$B$,I=<($5$l$^$9!#\e(B@refill
-
-\e$B$3$N\e(B entity-button \e$B$O\e(B entity \e$B$NFbMF$r>]D'$9$k\e(B icon \e$B$N$h$&$JLr3d$r2L$?\e(B
-\e$B$7$^$9!#Nc$($P!"\e(B
-
-@example
- [2 (image/gif)]
-@end example
-
-@noindent
-\e$B$N>e$G\e(B @kbd{v} \e$B$r2!$;$P$3$3$KF~$C$F$$$k3($,I=<($5$l$^$9!#\e(B
-
-\e$B$^$?!"\e(Bmouse \e$BA`:n$,2DG=$J>l9g!"\e(Bentity-button \e$B$rBh#2%\%?%s!J\e(B3 button
-mouse \e$B$N>l9g!"Cf1{$N%\%?%s!K$G2!$;$P!"F1MM$K$=$N3($,I=<($5$l$^$9!#\e(B
-
-
-@node entity-header, entity-body, entity-button, MIME-Preview
-@section entity-header
-@cindex entity-header
-
-@strong{entity-header} \e$B$O$"$k\e(B entity \e$B$N\e(B header \e$B$rI=<($9$kIt\e(B
-\e$BJ,$G$9!J!V$=$N$^$^$d$s$1!W$C$FE\$i$J$$$G!#$=$&$$$&$b$s$J$s$G$9!K!#\e(B
-
-
-@node entity-body, , entity-header, MIME-Preview
-@section entity-body
-@cindex entity-body
-
-@strong{entity-body} \e$B$O\e(B part \e$B$NFbMF$rI=<($9$kItJ,$G$9!#\e(B@refill
-
-\e$B$3$l$b$R$M$j$,B-$j$J$$$G$9$,!"$^$"!"$=$&$$$&$b$s$G$9!#\e(B@refill
-
-\e$B$H$O$$$(!"<B:]$K$O>/$7$R$M$C$F$^$9!#\e(B@refill
-
-text entity \e$B$N>l9g$O\e(B charset \e$B$K1~$8$F\e(B code \e$BJQ49$7$?$j$7$^$9$7!"\e(BXEmacs \e$B$G\e(B
-\e$B$O\e(B image entity \e$B$rJQ49$7$J$$$H$$$1$J$$$7!#\e(B@refill
-
-\e$B>\$7$/$O$^$?8e$G!#\e(B
-
-
-@node mime-view-mode, Concept Index, MIME-Preview, Top
-@chapter mime-preview-buffer \e$B$G$NA`:n\e(B
-
-mime-preview-buffer \e$B$K$O0J2<$N5!G=$,$"$j$^$9!#\e(B@refill
-
-@table @kbd
-@item @key{u}
-\e$B>e$N\e(B part \e$B$KLa$k!J\e(Bmessage \e$B$N0lHV>e$N\e(B part \e$B$G$3$l$r9T$J$&$H\e(B Summary
-mode \e$B$KLa$k\e(B (*1)\e$B!K\e(B
-
-@item @key{p}
-\e$BA0$N\e(B part \e$B$K0\F0$9$k\e(B
-
-@item @key{M-TAB}
-\e$BA0$N\e(B part \e$B$K0\F0$9$k\e(B
-
-@item @key{n}
-\e$B<!$N\e(B part \e$B$K0\F0$9$k\e(B
-
-@item @key{TAB}
-\e$B<!$N\e(B part \e$B$K0\F0$9$k\e(B
-
-@item @key{SPC}
-scroll up \e$B$9$k\e(B
-
-@item @key{M-SPC}
-scroll down \e$B$9$k\e(B
-
-@item @key{DEL}
-scroll down \e$B$9$k\e(B
-
-@item @key{RET}
-\e$B<!$N9T$K0\F0$9$k\e(B
-
-@item @key{M-RET}
-\e$BA0$N9T$K0\F0$9$k\e(B
-
-@item @key{v}
-part \e$B$r:F@8$9$k\e(B (*2)
-
-@item @key{e}
-part \e$B$+$i\e(B file \e$B$r<h$j=P$9\e(B (*2)
-
-@item @key{C-c C-p}
-part \e$B$r0u:~$9$k\e(B (*2)
-
-@item @key{mouse-button-2}
-preview-buffer \e$BCf$N\e(B mouse button \e$B$r5/F0$9$k\e(B
-
-content-button \e$B$r2!$;$P!"$=$N\e(B part \e$B$,:F@8$5$l$k\e(B(*2)@refill
-
-URL-button \e$B$r2!$;$P!"$=$N\e(B WWW browser \e$B$,5/F0$5$l$k\e(B@refill
-
-@end table
-
-@noindent
-@strong{[\e$BCm0U\e(B]}
-@quotation
-
-(*1) MUA \e$B$G\e(B mime-view \e$B$N@_Dj$r$7$F$$$J$$>l9g!"\e(BSummary mode \e$B$K$OLa$j$^$;\e(B
-\e$B$s!#\e(B@refill
-
-(*2) \e$B<B:]$NF0:n$OBP1~$9$k\e(B method \e$B$K0M$j$^$9!#\e(B
-@end quotation
-
-
-
-@node Concept Index, Function Index, mime-view-mode, Top
-@chapter \e$B35G0:w0z\e(B
-
-@printindex cp
-
-@node Function Index, Variable Index, Concept Index, Top
-@chapter \e$B4X?t:w0z\e(B
-
-@printindex fn
-
-@node Variable Index, , Function Index, Top
-@chapter \e$BJQ?t:w0z\e(B
-
-@printindex vr
-@bye
+++ /dev/null
-;;; mime-view.el --- interactive MIME viewer for GNU Emacs
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1994/07/13
-;; Renamed: 1994/08/31 from tm-body.el
-;; Renamed: 1997/02/19 from tm-view.el
-;; Keywords: MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Sophisticated Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mime)
-(require 'semi-def)
-(require 'calist)
-(require 'alist)
-(require 'mailcap)
-
-
-;;; @ version
-;;;
-
-(defconst mime-view-version-string
- `,(concat (car mime-user-interface-version) " MIME-View "
- (mapconcat #'number-to-string
- (cddr mime-user-interface-version) ".")
- " (" (cadr mime-user-interface-version) ")"))
-
-
-;;; @ variables
-;;;
-
-(defgroup mime-view nil
- "MIME view mode"
- :group 'mime)
-
-(defcustom mime-view-find-every-acting-situation t
- "*Find every available acting-situation if non-nil."
- :group 'mime-view
- :type 'boolean)
-
-(defcustom mime-acting-situation-examples-file "~/.mime-example"
- "*File name of example about acting-situation demonstrated by user."
- :group 'mime-view
- :type 'file)
-
-
-;;; @ in raw-buffer (representation space)
-;;;
-
-(defvar mime-preview-buffer nil
- "MIME-preview buffer corresponding with the (raw) buffer.")
-(make-variable-buffer-local 'mime-preview-buffer)
-
-
-(defvar mime-raw-representation-type nil
- "Representation-type of mime-raw-buffer.
-It must be nil, `binary' or `cooked'.
-If it is nil, `mime-raw-representation-type-alist' is used as default
-value.
-Notice that this variable is usually used as buffer local variable in
-raw-buffer.")
-
-(make-variable-buffer-local 'mime-raw-representation-type)
-
-(defvar mime-raw-representation-type-alist
- '((mime-show-message-mode . binary)
- (mime-temp-message-mode . binary)
- (t . cooked)
- )
- "Alist of major-mode vs. representation-type of mime-raw-buffer.
-Each element looks like (SYMBOL . REPRESENTATION-TYPE). SYMBOL is
-major-mode or t. t means default. REPRESENTATION-TYPE must be
-`binary' or `cooked'.
-This value is overridden by buffer local variable
-`mime-raw-representation-type' if it is not nil.")
-
-
-(defun mime-raw-find-entity-from-point (point &optional message-info)
- "Return entity from POINT in mime-raw-buffer.
-If optional argument MESSAGE-INFO is not specified,
-`mime-message-structure' is used."
- (or message-info
- (setq message-info mime-message-structure))
- (if (and (<= (mime-entity-point-min message-info) point)
- (<= point (mime-entity-point-max message-info)))
- (let ((children (mime-entity-children message-info)))
- (catch 'tag
- (while children
- (let ((ret
- (mime-raw-find-entity-from-point point (car children))))
- (if ret
- (throw 'tag ret)
- ))
- (setq children (cdr children)))
- message-info))))
-
-
-;;; @ in preview-buffer (presentation space)
-;;;
-
-(defvar mime-mother-buffer nil
- "Mother buffer corresponding with the (MIME-preview) buffer.
-If current MIME-preview buffer is generated by other buffer, such as
-message/partial, it is called `mother-buffer'.")
-(make-variable-buffer-local 'mime-mother-buffer)
-
-(defvar mime-raw-buffer nil
- "Raw buffer corresponding with the (MIME-preview) buffer.")
-(make-variable-buffer-local 'mime-raw-buffer)
-
-(defvar mime-preview-original-window-configuration nil
- "Window-configuration before mime-view-mode is called.")
-(make-variable-buffer-local 'mime-preview-original-window-configuration)
-
-(defun mime-preview-original-major-mode (&optional recursive)
- "Return major-mode of original buffer.
-If optional argument RECURSIVE is non-nil and current buffer has
-mime-mother-buffer, it returns original major-mode of the
-mother-buffer."
- (if (and recursive mime-mother-buffer)
- (save-excursion
- (set-buffer mime-mother-buffer)
- (mime-preview-original-major-mode recursive)
- )
- (save-excursion
- (set-buffer
- (mime-entity-buffer
- (get-text-property (point-min) 'mime-view-entity)))
- major-mode)))
-
-
-;;; @ entity information
-;;;
-
-(defsubst mime-entity-representation-type (entity)
- (with-current-buffer (mime-entity-buffer entity)
- (or mime-raw-representation-type
- (cdr (or (assq major-mode mime-raw-representation-type-alist)
- (assq t mime-raw-representation-type-alist))))))
-
-(defsubst mime-entity-cooked-p (entity)
- (eq (mime-entity-representation-type entity) 'cooked))
-
-(defun mime-entity-situation (entity)
- "Return situation of ENTITY."
- (append (or (mime-entity-content-type entity)
- (make-mime-content-type 'text 'plain))
- (let ((d (mime-entity-content-disposition entity)))
- (cons (cons 'disposition-type
- (mime-content-disposition-type d))
- (mapcar (function
- (lambda (param)
- (let ((name (car param)))
- (cons (cond ((string= name "filename")
- 'filename)
- ((string= name "creation-date")
- 'creation-date)
- ((string= name "modification-date")
- 'modification-date)
- ((string= name "read-date")
- 'read-date)
- ((string= name "size")
- 'size)
- (t (cons 'disposition (car param))))
- (cdr param)))))
- (mime-content-disposition-parameters d))
- ))
- (list (cons 'encoding (mime-entity-encoding entity))
- (cons 'major-mode
- (save-excursion
- (set-buffer (mime-entity-buffer entity))
- major-mode)))
- ))
-
-
-(defun mime-view-entity-title (entity)
- (or (mime-read-field 'Content-Description entity)
- (mime-read-field 'Subject entity)
- (mime-entity-filename entity)
- ""))
-
-
-(defsubst mime-raw-point-to-entity-node-id (point &optional message-info)
- "Return entity-node-id from POINT in mime-raw-buffer.
-If optional argument MESSAGE-INFO is not specified,
-`mime-message-structure' is used."
- (mime-entity-node-id (mime-raw-find-entity-from-point point message-info)))
-
-(defsubst mime-raw-point-to-entity-number (point &optional message-info)
- "Return entity-number from POINT in mime-raw-buffer.
-If optional argument MESSAGE-INFO is not specified,
-`mime-message-structure' is used."
- (mime-entity-number (mime-raw-find-entity-from-point point message-info)))
-
-(defun mime-raw-flatten-message-info (&optional message-info)
- "Return list of entity in mime-raw-buffer.
-If optional argument MESSAGE-INFO is not specified,
-`mime-message-structure' is used."
- (or message-info
- (setq message-info mime-message-structure))
- (let ((dest (list message-info))
- (rcl (mime-entity-children message-info)))
- (while rcl
- (setq dest (nconc dest (mime-raw-flatten-message-info (car rcl))))
- (setq rcl (cdr rcl)))
- dest))
-
-
-;;; @ presentation of preview
-;;;
-
-;;; @@ entity-button
-;;;
-
-;;; @@@ predicate function
-;;;
-
-(defun mime-view-entity-button-visible-p (entity)
- "Return non-nil if header of ENTITY is visible.
-Please redefine this function if you want to change default setting."
- (let ((media-type (mime-entity-media-type entity))
- (media-subtype (mime-entity-media-subtype entity)))
- (or (not (eq media-type 'application))
- (and (not (eq media-subtype 'x-selection))
- (or (not (eq media-subtype 'octet-stream))
- (let ((mother-entity (mime-entity-parent entity)))
- (or (not (eq (mime-entity-media-type mother-entity)
- 'multipart))
- (not (eq (mime-entity-media-subtype mother-entity)
- 'encrypted)))
- )
- )))))
-
-;;; @@@ entity button generator
-;;;
-
-(defun mime-view-insert-entity-button (entity)
- "Insert entity-button of ENTITY."
- (let ((entity-node-id (mime-entity-node-id entity))
- (params (mime-entity-parameters entity))
- (subject (mime-view-entity-title entity)))
- (mime-insert-button
- (let ((access-type (assoc "access-type" params))
- (num (or (cdr (assoc "x-part-number" params))
- (if (consp entity-node-id)
- (mapconcat (function
- (lambda (num)
- (format "%s" (1+ num))
- ))
- (reverse entity-node-id) ".")
- "0"))
- ))
- (cond (access-type
- (let ((server (assoc "server" params)))
- (setq access-type (cdr access-type))
- (if server
- (format "%s %s ([%s] %s)"
- num subject access-type (cdr server))
- (let ((site (cdr (assoc "site" params)))
- (dir (cdr (assoc "directory" params)))
- )
- (format "%s %s ([%s] %s:%s)"
- num subject access-type site dir)
- )))
- )
- (t
- (let ((media-type (mime-entity-media-type entity))
- (media-subtype (mime-entity-media-subtype entity))
- (charset (cdr (assoc "charset" params)))
- (encoding (mime-entity-encoding entity)))
- (concat
- num " " subject
- (let ((rest
- (format " <%s/%s%s%s>"
- media-type media-subtype
- (if charset
- (concat "; " charset)
- "")
- (if encoding
- (concat " (" encoding ")")
- ""))))
- (if (>= (+ (current-column)(length rest))(window-width))
- "\n\t")
- rest)))
- )))
- (function mime-preview-play-current-entity))
- ))
-
-
-;;; @@ entity-header
-;;;
-
-(defvar mime-header-presentation-method-alist nil
- "Alist of major mode vs. corresponding header-presentation-method functions.
-Each element looks like (SYMBOL . FUNCTION).
-SYMBOL must be major mode in raw-buffer or t. t means default.
-Interface of FUNCTION must be (ENTITY SITUATION).")
-
-(defvar mime-view-ignored-field-list
- '(".*Received" ".*Path" ".*Id" "References"
- "Replied" "Errors-To"
- "Lines" "Sender" ".*Host" "Xref"
- "Content-Type" "Precedence"
- "Status" "X-VM-.*")
- "All fields that match this list will be hidden in MIME preview buffer.
-Each elements are regexp of field-name.")
-
-(defvar mime-view-visible-field-list '("Dnas.*" "Message-Id")
- "All fields that match this list will be displayed in MIME preview buffer.
-Each elements are regexp of field-name.")
-
-
-;;; @@ entity-body
-;;;
-
-;;; @@@ predicate function
-;;;
-
-(defun mime-calist::field-match-method-as-default-rule (calist
- field-type field-value)
- (let ((s-field (assq field-type calist)))
- (cond ((null s-field)
- (cons (cons field-type field-value) calist)
- )
- (t calist))))
-
-(define-calist-field-match-method
- 'header #'mime-calist::field-match-method-as-default-rule)
-
-(define-calist-field-match-method
- 'body #'mime-calist::field-match-method-as-default-rule)
-
-
-(defvar mime-preview-condition nil
- "Condition-tree about how to display entity.")
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . octet-stream)
- (encoding . nil)
- (body . visible)))
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . octet-stream)
- (encoding . "7bit")
- (body . visible)))
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . octet-stream)
- (encoding . "8bit")
- (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . pgp)
- (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . x-latex)
- (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . x-selection)
- (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . x-comment)
- (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . message)(subtype . delivery-status)
- (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((body . visible)
- (body-presentation-method . mime-display-text/plain)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((type . nil)
- (body . visible)
- (body-presentation-method . mime-display-text/plain)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((type . text)(subtype . enriched)
- (body . visible)
- (body-presentation-method . mime-display-text/enriched)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((type . text)(subtype . richtext)
- (body . visible)
- (body-presentation-method . mime-display-text/richtext)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((type . text)(subtype . t)
- (body . visible)
- (body-presentation-method . mime-display-text/plain)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((type . multipart)(subtype . alternative)
- (body . visible)
- (body-presentation-method . mime-display-multipart/alternative)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . message)(subtype . partial)
- (body-presentation-method
- . mime-display-message/partial-button)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . message)(subtype . rfc822)
- (body-presentation-method . nil)
- (childrens-situation (header . visible)
- (entity-button . invisible))))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . message)(subtype . news)
- (body-presentation-method . nil)
- (childrens-situation (header . visible)
- (entity-button . invisible))))
-
-
-;;; @@@ entity presentation
-;;;
-
-(autoload 'mime-display-text/plain "mime-text")
-(autoload 'mime-display-text/enriched "mime-text")
-(autoload 'mime-display-text/richtext "mime-text")
-
-(defvar mime-view-announcement-for-message/partial
- (if (and (>= emacs-major-version 19) window-system)
- "\
-\[[ This is message/partial style split message. ]]
-\[[ Please press `v' key in this buffer ]]
-\[[ or click here by mouse button-2. ]]"
- "\
-\[[ This is message/partial style split message. ]]
-\[[ Please press `v' key in this buffer. ]]"
- ))
-
-(defun mime-display-message/partial-button (&optional entity situation)
- (save-restriction
- (goto-char (point-max))
- (if (not (search-backward "\n\n" nil t))
- (insert "\n")
- )
- (goto-char (point-max))
- (narrow-to-region (point-max)(point-max))
- (insert mime-view-announcement-for-message/partial)
- (mime-add-button (point-min)(point-max)
- #'mime-preview-play-current-entity)
- ))
-
-(defun mime-display-multipart/mixed (entity situation)
- (let ((children (mime-entity-children entity))
- (default-situation
- (cdr (assq 'childrens-situation situation))))
- (while children
- (mime-display-entity (car children) nil default-situation)
- (setq children (cdr children))
- )))
-
-(defcustom mime-view-type-subtype-score-alist
- '(((text . enriched) . 3)
- ((text . richtext) . 2)
- ((text . plain) . 1)
- (t . 0))
- "Alist MEDIA-TYPE vs corresponding score.
-MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t. t means default."
- :group 'mime-view
- :type '(repeat (cons (choice :tag "Media-Type"
- (item :tag "Type/Subtype"
- (cons symbol symbol))
- (item :tag "Type" symbol)
- (item :tag "Default" t))
- integer)))
-
-(defun mime-display-multipart/alternative (entity situation)
- (let* ((children (mime-entity-children entity))
- (default-situation
- (cdr (assq 'childrens-situation situation)))
- (i 0)
- (p 0)
- (max-score 0)
- (situations
- (mapcar (function
- (lambda (child)
- (let ((situation
- (or (ctree-match-calist
- mime-preview-condition
- (append (mime-entity-situation child)
- default-situation))
- default-situation)))
- (if (cdr (assq 'body-presentation-method situation))
- (let ((score
- (cdr
- (or (assoc
- (cons
- (cdr (assq 'type situation))
- (cdr (assq 'subtype situation)))
- mime-view-type-subtype-score-alist)
- (assq
- (cdr (assq 'type situation))
- mime-view-type-subtype-score-alist)
- (assq
- t
- mime-view-type-subtype-score-alist)
- ))))
- (if (> score max-score)
- (setq p i
- max-score score)
- )))
- (setq i (1+ i))
- situation)
- ))
- children)))
- (setq i 0)
- (while children
- (let ((child (car children))
- (situation (car situations)))
- (mime-display-entity child (if (= i p)
- situation
- (del-alist 'body-presentation-method
- (copy-alist situation))))
- )
- (setq children (cdr children)
- situations (cdr situations)
- i (1+ i))
- )))
-
-
-;;; @ acting-condition
-;;;
-
-(defvar mime-acting-condition nil
- "Condition-tree about how to process entity.")
-
-(if (file-readable-p mailcap-file)
- (let ((entries (mailcap-parse-file)))
- (while entries
- (let ((entry (car entries))
- view print shared)
- (while entry
- (let* ((field (car entry))
- (field-type (car field)))
- (cond ((eq field-type 'view) (setq view field))
- ((eq field-type 'print) (setq print field))
- ((memq field-type '(compose composetyped edit)))
- (t (setq shared (cons field shared))))
- )
- (setq entry (cdr entry))
- )
- (setq shared (nreverse shared))
- (ctree-set-calist-with-default
- 'mime-acting-condition
- (append shared (list '(mode . "play")(cons 'method (cdr view)))))
- (if print
- (ctree-set-calist-with-default
- 'mime-acting-condition
- (append shared
- (list '(mode . "print")(cons 'method (cdr view))))
- ))
- )
- (setq entries (cdr entries))
- )))
-
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . application)(subtype . octet-stream)
- (mode . "play")
- (method . mime-detect-content)
- ))
-
-(ctree-set-calist-with-default
- 'mime-acting-condition
- '((mode . "extract")
- (method . mime-save-content)))
-
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . text)(subtype . x-rot13-47)(mode . "play")
- (method . mime-view-caesar)
- ))
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . text)(subtype . x-rot13-47-48)(mode . "play")
- (method . mime-view-caesar)
- ))
-
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . message)(subtype . rfc822)(mode . "play")
- (method . mime-view-message/rfc822)
- ))
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . message)(subtype . partial)(mode . "play")
- (method . mime-store-message/partial-piece)
- ))
-
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . message)(subtype . external-body)
- ("access-type" . "anon-ftp")
- (method . mime-view-message/external-ftp)
- ))
-
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . application)(subtype . octet-stream)
- (method . mime-save-content)
- ))
-
-
-;;; @ quitting method
-;;;
-
-(defvar mime-preview-quitting-method-alist
- '((mime-show-message-mode
- . mime-preview-quitting-method-for-mime-show-message-mode))
- "Alist of major-mode vs. quitting-method of mime-view.")
-
-(defvar mime-preview-over-to-previous-method-alist nil
- "Alist of major-mode vs. over-to-previous-method of mime-view.")
-
-(defvar mime-preview-over-to-next-method-alist nil
- "Alist of major-mode vs. over-to-next-method of mime-view.")
-
-
-;;; @ following method
-;;;
-
-(defvar mime-preview-following-method-alist nil
- "Alist of major-mode vs. following-method of mime-view.")
-
-(defvar mime-view-following-required-fields-list
- '("From"))
-
-
-;;; @ buffer setup
-;;;
-
-(defun mime-display-entity (entity &optional situation
- default-situation preview-buffer)
- (or preview-buffer
- (setq preview-buffer (current-buffer)))
- (let* ((raw-buffer (mime-entity-buffer entity))
- (start (mime-entity-point-min entity))
- e nb ne)
- (set-buffer raw-buffer)
- (goto-char start)
- (or situation
- (setq situation
- (or (ctree-match-calist mime-preview-condition
- (append (mime-entity-situation entity)
- default-situation))
- default-situation)))
- (let ((button-is-invisible
- (eq (cdr (assq 'entity-button situation)) 'invisible))
- (header-is-visible
- (eq (cdr (assq 'header situation)) 'visible))
- (header-presentation-method
- (or (cdr (assq 'header-presentation-method situation))
- (cdr (assq major-mode mime-header-presentation-method-alist))))
- (body-presentation-method
- (cdr (assq 'body-presentation-method situation)))
- (children (mime-entity-children entity)))
- (set-buffer preview-buffer)
- (setq nb (point))
- (narrow-to-region nb nb)
- (or button-is-invisible
- (if (mime-view-entity-button-visible-p entity)
- (mime-view-insert-entity-button entity)
- ))
- (when header-is-visible
- (if header-presentation-method
- (funcall header-presentation-method entity situation)
- (mime-insert-decoded-header entity
- mime-view-ignored-field-list
- mime-view-visible-field-list
- (if (mime-entity-cooked-p entity)
- nil
- default-mime-charset))
- )
- (goto-char (point-max))
- (insert "\n")
- (run-hooks 'mime-display-header-hook)
- )
- (cond (children)
- ((functionp body-presentation-method)
- (funcall body-presentation-method entity situation)
- )
- (t
- (when button-is-invisible
- (goto-char (point-max))
- (mime-view-insert-entity-button entity)
- )
- (or header-is-visible
- (progn
- (goto-char (point-max))
- (insert "\n")
- ))
- ))
- (setq ne (point-max))
- (widen)
- (put-text-property nb ne 'mime-view-entity entity)
- (goto-char ne)
- (if children
- (if (functionp body-presentation-method)
- (funcall body-presentation-method entity situation)
- (mime-display-multipart/mixed entity situation)
- ))
- )))
-
-
-;;; @ MIME viewer mode
-;;;
-
-(defconst mime-view-menu-title "MIME-View")
-(defconst mime-view-menu-list
- '((up "Move to upper entity" mime-preview-move-to-upper)
- (previous "Move to previous entity" mime-preview-move-to-previous)
- (next "Move to next entity" mime-preview-move-to-next)
- (scroll-down "Scroll-down" mime-preview-scroll-down-entity)
- (scroll-up "Scroll-up" mime-preview-scroll-up-entity)
- (play "Play current entity" mime-preview-play-current-entity)
- (extract "Extract current entity" mime-preview-extract-current-entity)
- (print "Print current entity" mime-preview-print-current-entity)
- )
- "Menu for MIME Viewer")
-
-(cond (running-xemacs
- (defvar mime-view-xemacs-popup-menu
- (cons mime-view-menu-title
- (mapcar (function
- (lambda (item)
- (vector (nth 1 item)(nth 2 item) t)
- ))
- mime-view-menu-list)))
- (defun mime-view-xemacs-popup-menu (event)
- "Popup the menu in the MIME Viewer buffer"
- (interactive "e")
- (select-window (event-window event))
- (set-buffer (event-buffer event))
- (popup-menu 'mime-view-xemacs-popup-menu))
- (defvar mouse-button-2 'button2)
- )
- (t
- (defvar mouse-button-2 [mouse-2])
- ))
-
-(defun mime-view-define-keymap (&optional default)
- (let ((mime-view-mode-map (if (keymapp default)
- (copy-keymap default)
- (make-sparse-keymap)
- )))
- (define-key mime-view-mode-map
- "u" (function mime-preview-move-to-upper))
- (define-key mime-view-mode-map
- "p" (function mime-preview-move-to-previous))
- (define-key mime-view-mode-map
- "n" (function mime-preview-move-to-next))
- (define-key mime-view-mode-map
- "\e\t" (function mime-preview-move-to-previous))
- (define-key mime-view-mode-map
- "\t" (function mime-preview-move-to-next))
- (define-key mime-view-mode-map
- " " (function mime-preview-scroll-up-entity))
- (define-key mime-view-mode-map
- "\M- " (function mime-preview-scroll-down-entity))
- (define-key mime-view-mode-map
- "\177" (function mime-preview-scroll-down-entity))
- (define-key mime-view-mode-map
- "\C-m" (function mime-preview-next-line-entity))
- (define-key mime-view-mode-map
- "\C-\M-m" (function mime-preview-previous-line-entity))
- (define-key mime-view-mode-map
- "v" (function mime-preview-play-current-entity))
- (define-key mime-view-mode-map
- "e" (function mime-preview-extract-current-entity))
- (define-key mime-view-mode-map
- "\C-c\C-p" (function mime-preview-print-current-entity))
- (define-key mime-view-mode-map
- "a" (function mime-preview-follow-current-entity))
- (define-key mime-view-mode-map
- "q" (function mime-preview-quit))
- (define-key mime-view-mode-map
- "\C-c\C-x" (function mime-preview-kill-buffer))
- ;; (define-key mime-view-mode-map
- ;; "<" (function beginning-of-buffer))
- ;; (define-key mime-view-mode-map
- ;; ">" (function end-of-buffer))
- (define-key mime-view-mode-map
- "?" (function describe-mode))
- (define-key mime-view-mode-map
- [tab] (function mime-preview-move-to-next))
- (define-key mime-view-mode-map
- [delete] (function mime-preview-scroll-down-entity))
- (define-key mime-view-mode-map
- [backspace] (function mime-preview-scroll-down-entity))
- (if (functionp default)
- (cond (running-xemacs
- (set-keymap-default-binding mime-view-mode-map default)
- )
- (t
- (setq mime-view-mode-map
- (append mime-view-mode-map (list (cons t default))))
- )))
- (if mouse-button-2
- (define-key mime-view-mode-map
- mouse-button-2 (function mime-button-dispatcher))
- )
- (cond (running-xemacs
- (define-key mime-view-mode-map
- mouse-button-3 (function mime-view-xemacs-popup-menu))
- )
- ((>= emacs-major-version 19)
- (define-key mime-view-mode-map [menu-bar mime-view]
- (cons mime-view-menu-title
- (make-sparse-keymap mime-view-menu-title)))
- (mapcar (function
- (lambda (item)
- (define-key mime-view-mode-map
- (vector 'menu-bar 'mime-view (car item))
- (cons (nth 1 item)(nth 2 item))
- )
- ))
- (reverse mime-view-menu-list)
- )
- ))
- (use-local-map mime-view-mode-map)
- (run-hooks 'mime-view-define-keymap-hook)
- ))
-
-(defsubst mime-maybe-hide-echo-buffer ()
- "Clear mime-echo buffer and delete window for it."
- (let ((buf (get-buffer mime-echo-buffer-name)))
- (if buf
- (save-excursion
- (set-buffer buf)
- (erase-buffer)
- (let ((win (get-buffer-window buf)))
- (if win
- (delete-window win)
- ))
- (bury-buffer buf)
- ))))
-
-(defvar mime-view-redisplay nil)
-
-(defun mime-display-message (message &optional preview-buffer
- mother default-keymap-or-function)
- (mime-maybe-hide-echo-buffer)
- (let ((win-conf (current-window-configuration))
- (raw-buffer (mime-entity-buffer message)))
- (or preview-buffer
- (setq preview-buffer
- (concat "*Preview-" (buffer-name raw-buffer) "*")))
- (set-buffer raw-buffer)
- (setq mime-preview-buffer preview-buffer)
- (let ((inhibit-read-only t))
- (set-buffer (get-buffer-create preview-buffer))
- (widen)
- (erase-buffer)
- (setq mime-raw-buffer raw-buffer)
- (if mother
- (setq mime-mother-buffer mother)
- )
- (setq mime-preview-original-window-configuration win-conf)
- (setq major-mode 'mime-view-mode)
- (setq mode-name "MIME-View")
- (mime-display-entity message nil
- '((entity-button . invisible)
- (header . visible))
- preview-buffer)
- (mime-view-define-keymap default-keymap-or-function)
- (let ((point
- (next-single-property-change (point-min) 'mime-view-entity)))
- (if point
- (goto-char point)
- (goto-char (point-min))
- (search-forward "\n\n" nil t)
- ))
- (run-hooks 'mime-view-mode-hook)
- (set-buffer-modified-p nil)
- (setq buffer-read-only t)
- (or (get-buffer-window preview-buffer)
- (let ((r-win (get-buffer-window raw-buffer)))
- (if r-win
- (set-window-buffer r-win preview-buffer)
- (switch-to-buffer preview-buffer)
- )))
- )))
-
-(defun mime-view-buffer (&optional raw-buffer preview-buffer mother
- default-keymap-or-function)
- (interactive)
- (mime-display-message
- (mime-parse-buffer raw-buffer)
- preview-buffer mother default-keymap-or-function))
-
-(defun mime-view-mode (&optional mother ctl encoding
- raw-buffer preview-buffer
- default-keymap-or-function)
- "Major mode for viewing MIME message.
-
-Here is a list of the standard keys for mime-view-mode.
-
-key feature
---- -------
-
-u Move to upper content
-p or M-TAB Move to previous content
-n or TAB Move to next content
-SPC Scroll up or move to next content
-M-SPC or DEL Scroll down or move to previous content
-RET Move to next line
-M-RET Move to previous line
-v Decode current content as `play mode'
-e Decode current content as `extract mode'
-C-c C-p Decode current content as `print mode'
-a Followup to current content.
-q Quit
-button-2 Move to point under the mouse cursor
- and decode current content as `play mode'
-"
- (interactive)
- (mime-display-message
- (save-excursion
- (if raw-buffer (set-buffer raw-buffer))
- (or mime-view-redisplay
- (setq mime-message-structure (mime-parse-message ctl encoding)))
- )
- preview-buffer mother default-keymap-or-function))
-
-
-;;; @@ playing
-;;;
-
-(autoload 'mime-preview-play-current-entity "mime-play"
- "Play current entity." t)
-
-(defun mime-preview-extract-current-entity ()
- "Extract current entity into file (maybe).
-It decodes current entity to call internal or external method as
-\"extract\" mode. The method is selected from variable
-`mime-acting-condition'."
- (interactive)
- (mime-preview-play-current-entity "extract")
- )
-
-(defun mime-preview-print-current-entity ()
- "Print current entity (maybe).
-It decodes current entity to call internal or external method as
-\"print\" mode. The method is selected from variable
-`mime-acting-condition'."
- (interactive)
- (mime-preview-play-current-entity "print")
- )
-
-
-;;; @@ following
-;;;
-
-(defun mime-preview-follow-current-entity ()
- "Write follow message to current entity.
-It calls following-method selected from variable
-`mime-preview-following-method-alist'."
- (interactive)
- (let (entity)
- (while (null (setq entity
- (get-text-property (point) 'mime-view-entity)))
- (backward-char)
- )
- (let* ((p-beg
- (previous-single-property-change (point) 'mime-view-entity))
- p-end
- (entity-node-id (mime-entity-node-id entity))
- (len (length entity-node-id))
- )
- (cond ((null p-beg)
- (setq p-beg
- (if (eq (next-single-property-change (point-min)
- 'mime-view-entity)
- (point))
- (point)
- (point-min)))
- )
- ((eq (next-single-property-change p-beg 'mime-view-entity)
- (point))
- (setq p-beg (point))
- ))
- (setq p-end (next-single-property-change p-beg 'mime-view-entity))
- (cond ((null p-end)
- (setq p-end (point-max))
- )
- ((null entity-node-id)
- (setq p-end (point-max))
- )
- (t
- (save-excursion
- (goto-char p-end)
- (catch 'tag
- (let (e)
- (while (setq e
- (next-single-property-change
- (point) 'mime-view-entity))
- (goto-char e)
- (let ((rc (mime-entity-node-id
- (get-text-property (point)
- 'mime-view-entity))))
- (or (equal entity-node-id
- (nthcdr (- (length rc) len) rc))
- (throw 'tag nil)
- ))
- (setq p-end e)
- ))
- (setq p-end (point-max))
- ))
- ))
- (let* ((mode (mime-preview-original-major-mode 'recursive))
- (new-name
- (format "%s-%s" (buffer-name) (reverse entity-node-id)))
- new-buf
- (the-buf (current-buffer))
- (a-buf mime-raw-buffer)
- fields)
- (save-excursion
- (set-buffer (setq new-buf (get-buffer-create new-name)))
- (erase-buffer)
- (insert-buffer-substring the-buf p-beg p-end)
- (goto-char (point-min))
- (let ((entity-node-id (mime-entity-node-id entity)) ci str)
- (while (progn
- (setq
- str
- (save-excursion
- (set-buffer a-buf)
- (setq ci
- (mime-find-entity-from-node-id entity-node-id))
- (save-restriction
- (narrow-to-region
- (mime-entity-point-min ci)
- (mime-entity-point-max ci)
- )
- (std11-header-string-except
- (concat "^"
- (apply (function regexp-or) fields)
- ":") ""))))
- (if (and
- (eq (mime-entity-media-type ci) 'message)
- (eq (mime-entity-media-subtype ci) 'rfc822))
- nil
- (if str
- (insert str)
- )
- entity-node-id))
- (setq fields (std11-collect-field-names)
- entity-node-id (cdr entity-node-id))
- )
- )
- (let ((rest mime-view-following-required-fields-list))
- (while rest
- (let ((field-name (car rest)))
- (or (std11-field-body field-name)
- (insert
- (format
- (concat field-name
- ": "
- (save-excursion
- (set-buffer the-buf)
- (set-buffer mime-mother-buffer)
- (set-buffer mime-raw-buffer)
- (std11-field-body field-name)
- )
- "\n")))
- ))
- (setq rest (cdr rest))
- ))
- (eword-decode-header)
- )
- (let ((f (cdr (assq mode mime-preview-following-method-alist))))
- (if (functionp f)
- (funcall f new-buf)
- (message
- (format
- "Sorry, following method for %s is not implemented yet."
- mode))
- ))
- ))))
-
-
-;;; @@ moving
-;;;
-
-(defun mime-preview-move-to-upper ()
- "Move to upper entity.
-If there is no upper entity, call function `mime-preview-quit'."
- (interactive)
- (let (cinfo)
- (while (null (setq cinfo
- (get-text-property (point) 'mime-view-entity)))
- (backward-char)
- )
- (let ((r (mime-entity-parent cinfo))
- point)
- (catch 'tag
- (while (setq point (previous-single-property-change
- (point) 'mime-view-entity))
- (goto-char point)
- (if (eq r (get-text-property (point) 'mime-view-entity))
- (throw 'tag t)
- )
- )
- (mime-preview-quit)
- ))))
-
-(defun mime-preview-move-to-previous ()
- "Move to previous entity.
-If there is no previous entity, it calls function registered in
-variable `mime-preview-over-to-previous-method-alist'."
- (interactive)
- (while (null (get-text-property (point) 'mime-view-entity))
- (backward-char)
- )
- (let ((point (previous-single-property-change (point) 'mime-view-entity)))
- (if point
- (if (get-text-property (1- point) 'mime-view-entity)
- (goto-char point)
- (goto-char (1- point))
- (mime-preview-move-to-previous)
- )
- (let ((f (assq (mime-preview-original-major-mode)
- mime-preview-over-to-previous-method-alist)))
- (if f
- (funcall (cdr f))
- ))
- )))
-
-(defun mime-preview-move-to-next ()
- "Move to next entity.
-If there is no previous entity, it calls function registered in
-variable `mime-preview-over-to-next-method-alist'."
- (interactive)
- (while (null (get-text-property (point) 'mime-view-entity))
- (forward-char)
- )
- (let ((point (next-single-property-change (point) 'mime-view-entity)))
- (if point
- (progn
- (goto-char point)
- (if (null (get-text-property point 'mime-view-entity))
- (mime-preview-move-to-next)
- ))
- (let ((f (assq (mime-preview-original-major-mode)
- mime-preview-over-to-next-method-alist)))
- (if f
- (funcall (cdr f))
- ))
- )))
-
-(defun mime-preview-scroll-up-entity (&optional h)
- "Scroll up current entity.
-If reached to (point-max), it calls function registered in variable
-`mime-preview-over-to-next-method-alist'."
- (interactive)
- (or h
- (setq h (1- (window-height)))
- )
- (if (= (point) (point-max))
- (let ((f (assq (mime-preview-original-major-mode)
- mime-preview-over-to-next-method-alist)))
- (if f
- (funcall (cdr f))
- ))
- (let ((point
- (or (next-single-property-change (point) 'mime-view-entity)
- (point-max))))
- (forward-line h)
- (if (> (point) point)
- (goto-char point)
- )
- )))
-
-(defun mime-preview-scroll-down-entity (&optional h)
- "Scroll down current entity.
-If reached to (point-min), it calls function registered in variable
-`mime-preview-over-to-previous-method-alist'."
- (interactive)
- (or h
- (setq h (1- (window-height)))
- )
- (if (= (point) (point-min))
- (let ((f (assq (mime-preview-original-major-mode)
- mime-preview-over-to-previous-method-alist)))
- (if f
- (funcall (cdr f))
- ))
- (let ((point
- (or (previous-single-property-change (point) 'mime-view-entity)
- (point-min))))
- (forward-line (- h))
- (if (< (point) point)
- (goto-char point)
- ))))
-
-(defun mime-preview-next-line-entity ()
- (interactive)
- (mime-preview-scroll-up-entity 1)
- )
-
-(defun mime-preview-previous-line-entity ()
- (interactive)
- (mime-preview-scroll-down-entity 1)
- )
-
-
-;;; @@ quitting
-;;;
-
-(defun mime-preview-quit ()
- "Quit from MIME-preview buffer.
-It calls function registered in variable
-`mime-preview-quitting-method-alist'."
- (interactive)
- (let ((r (assq (mime-preview-original-major-mode)
- mime-preview-quitting-method-alist)))
- (if r
- (funcall (cdr r))
- )))
-
-(defun mime-preview-kill-buffer ()
- (interactive)
- (kill-buffer (current-buffer))
- )
-
-
-;;; @ end
-;;;
-
-(provide 'mime-view)
-
-(run-hooks 'mime-view-load-hook)
-
-;;; mime-view.el ends here
+++ /dev/null
-;;; mime-w3.el --- mime-view content filter for text
-
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: HTML, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Suite of Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'w3)
-(require 'mime-text)
-
-(defmacro mime-put-keymap-region (start end keymap)
- `(put-text-property ,start ,end
- ',(if (featurep 'xemacs)
- 'keymap
- 'local-map)
- ,keymap)
- )
-
-(defmacro mime-save-background-color (&rest body)
- (if (featurep 'xemacs)
- `(let ((color (color-name (face-background 'default))))
- (prog1
- (progn ,@body)
- (font-set-face-background 'default color (current-buffer))
- ))
- (cons 'progn body)))
-
-(defun mime-preview-text/html (entity situation)
- (mime-save-background-color
- (save-restriction
- (narrow-to-region (point-max)(point-max))
- (mime-text-insert-decoded-body entity)
- (let ((beg (point-min)))
- (remove-text-properties beg (point-max) '(face nil))
- (w3-region beg (point-max))
- (mime-put-keymap-region beg (point-max) w3-mode-map)
- ))))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-w3)
-
-;;; mime-w3.el ends here
+++ /dev/null
-;;; semi-def.el --- definition module for REMI
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: definition, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Sample of Emacs MIME Implementation).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'emu)
-
-(eval-when-compile (require 'cl))
-
-(require 'custom)
-
-(defconst mime-user-interface-version '("SEMI" "Toyama" 1 8 0)
- "Implementation name, version name and numbers of MIME-kernel package.")
-
-(autoload 'mule-caesar-region "mule-caesar"
- "Caesar rotation of current region." t)
-
-
-;;; @ constants
-;;;
-
-(defconst mime-echo-buffer-name "*MIME-echo*"
- "Name of buffer to display MIME-playing information.")
-
-(defconst mime-temp-buffer-name " *MIME-temp*")
-
-
-;;; @ button
-;;;
-
-(defcustom mime-button-face 'bold
- "Face used for content-button or URL-button of MIME-Preview buffer."
- :group 'mime
- :type 'face)
-
-(defcustom mime-button-mouse-face 'highlight
- "Face used for MIME-preview buffer mouse highlighting."
- :group 'mime
- :type 'face)
-
-(defsubst mime-add-button (from to function &optional data)
- "Create a button between FROM and TO with callback FUNCTION and DATA."
- (let ((overlay (make-overlay from to)))
- (and mime-button-face
- (overlay-put overlay 'face mime-button-face))
- (and mime-button-mouse-face
- (overlay-put overlay 'mouse-face mime-button-mouse-face))
- (add-text-properties from to (list 'mime-button-callback function))
- (and data
- (add-text-properties from to (list 'mime-button-data data)))
- ))
-
-(defsubst mime-insert-button (string function &optional data)
- "Insert STRING as button with callback FUNCTION and DATA."
- (save-restriction
- (narrow-to-region (point)(point))
- (insert (concat "[" string "]\n"))
- (mime-add-button (point-min)(point-max) function data)
- ))
-
-(defvar mime-button-mother-dispatcher nil)
-
-(defun mime-button-dispatcher (event)
- "Select the button under point."
- (interactive "e")
- (let (buf point func data)
- (save-window-excursion
- (mouse-set-point event)
- (setq buf (current-buffer)
- point (point)
- func (get-text-property (point) 'mime-button-callback)
- data (get-text-property (point) 'mime-button-data)
- ))
- (save-excursion
- (set-buffer buf)
- (goto-char point)
- (if func
- (apply func data)
- (if (fboundp mime-button-mother-dispatcher)
- (funcall mime-button-mother-dispatcher event)
- )
- ))))
-
-
-;;; @ menu
-;;;
-
-(if window-system
- (if (featurep 'xemacs)
- (defun select-menu-alist (title menu-alist)
- (let (ret)
- (popup-menu
- (list* title
- "---"
- (mapcar (function
- (lambda (cell)
- (vector (car cell)
- `(progn
- (setq ret ',(cdr cell))
- (throw 'exit nil)
- )
- t)
- ))
- menu-alist)
- ))
- (recursive-edit)
- ret))
- (defun select-menu-alist (title menu-alist)
- (x-popup-menu
- (list '(1 1) (selected-window))
- (list title (cons title menu-alist))
- ))
- )
- (defun select-menu-alist (title menu-alist)
- (cdr
- (assoc (completing-read (concat title " : ") menu-alist)
- menu-alist)
- ))
- )
-
-
-;;; @ PGP
-;;;
-
-(defvar pgp-function-alist
- '(
- ;; for mime-pgp
- (verify mc-verify "mc-toplev")
- (decrypt mc-decrypt "mc-toplev")
- (fetch-key mc-pgp-fetch-key "mc-pgp")
- (snarf-keys mc-snarf-keys "mc-toplev")
- ;; for mime-edit
- (mime-sign mime-mc-pgp-sign-region "mime-mc")
- (traditional-sign mc-pgp-sign-region "mc-pgp")
- (encrypt mime-mc-pgp-encrypt-region "mime-mc")
- (insert-key mc-insert-public-key "mc-toplev")
- )
- "Alist of service names vs. corresponding functions and its filenames.
-Each element looks like (SERVICE FUNCTION FILE).
-
-SERVICE is a symbol of PGP processing. It allows `verify', `decrypt',
-`fetch-key', `snarf-keys', `mime-sign', `traditional-sign', `encrypt'
-or `insert-key'.
-
-Function is a symbol of function to do specified SERVICE.
-
-FILE is string of filename which has definition of corresponding
-FUNCTION.")
-
-(defmacro pgp-function (method)
- "Return function to do service METHOD."
- `(cadr (assq ,method (symbol-value 'pgp-function-alist))))
-
-(mapcar (function
- (lambda (method)
- (autoload (cadr method)(nth 2 method))
- ))
- pgp-function-alist)
-
-
-;;; @ Other Utility
-;;;
-
-(defvar mime-condition-type-alist
- '((preview . mime-preview-condition)
- (action . mime-acting-condition)))
-
-(defvar mime-condition-mode-alist
- '((with-default . ctree-set-calist-with-default)
- (t . ctree-set-calist-strictly)))
-
-(defun mime-add-condition (target-type condition &optional mode file)
- "Add CONDITION to database specified by TARGET-TYPE.
-TARGET-TYPE must be 'preview or 'action.
-If optional argument MODE is 'strict or nil (omitted), CONDITION is
-added strictly.
-If optional argument MODE is 'with-default, CONDITION is added with
-default rule.
-If optional argument FILE is specified, it is loaded when CONDITION is
-activate."
- (let ((sym (cdr (assq target-type mime-condition-type-alist))))
- (if sym
- (let ((func (cdr (or (assq mode mime-condition-mode-alist)
- (assq t mime-condition-mode-alist)))))
- (if (fboundp func)
- (progn
- (funcall func sym condition)
- (if file
- (let ((method (cdr (assq 'method condition))))
- (autoload method file)
- ))
- )
- (error "Function for mode `%s' is not found." mode)
- ))
- (error "Variable for target-type `%s' is not found." target-type)
- )))
-
-
-;;; @ end
-;;;
-
-(provide 'semi-def)
-
-;;; semi-def.el ends here
+++ /dev/null
-;;; semi-setup.el --- setup file for MIME-View.
-
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: mail, news, MIME, multimedia, multilingual, encoded-word
-
-;; This file is part of SEMI (Setting for Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'semi-def)
-(require 'path-util)
-
-(defun call-after-loaded (module func &optional hook-name)
- "If MODULE is provided, then FUNC is called.
-Otherwise func is set to MODULE-load-hook.
-If optional argument HOOK-NAME is specified,
-it is used as hook to set."
- (if (featurep module)
- (funcall func)
- (or hook-name
- (setq hook-name (intern (concat (symbol-name module) "-load-hook")))
- )
- (add-hook hook-name func)
- ))
-
-
-;; for image/* and X-Face
-(defvar mime-setup-enable-inline-image
- (and window-system
- (or running-xemacs
- (and (featurep 'mule)(module-installed-p 'bitmap))
- ))
- "*If it is non-nil, semi-setup sets up to use mime-image.")
-
-(if mime-setup-enable-inline-image
- (call-after-loaded 'mime-view
- (function
- (lambda ()
- (require 'mime-image)
- )))
- )
-
-
-;; for text/html
-(defvar mime-setup-enable-inline-html
- (module-installed-p 'w3)
- "*If it is non-nil, semi-setup sets up to use mime-w3.")
-
-(if mime-setup-enable-inline-html
- (call-after-loaded
- 'mime-view
- (function
- (lambda ()
- (autoload 'mime-preview-text/html "mime-w3")
-
- (ctree-set-calist-strictly
- 'mime-preview-condition
- '((type . text)(subtype . html)
- (body . visible)
- (body-presentation-method . mime-preview-text/html)))
-
- (set-alist 'mime-view-type-subtype-score-alist
- '(text . html) 3)
- )))
- )
-
-
-;; for PGP
-(defvar mime-setup-enable-pgp
- (module-installed-p 'mailcrypt)
- "*If it is non-nil, semi-setup sets uf to use mime-pgp.")
-
-(if mime-setup-enable-pgp
- (eval-after-load "mime-view"
- '(progn
- (mime-add-condition
- 'preview '((type . application)(subtype . pgp)
- (message-button . visible)))
- (mime-add-condition
- 'action '((type . application)(subtype . pgp)
- (method . mime-view-application/pgp))
- 'strict "mime-pgp")
- (mime-add-condition
- 'action '((type . text)(subtype . x-pgp)
- (method . mime-view-application/pgp)))
-
- (mime-add-condition
- 'action '((type . multipart)(subtype . signed)
- (method . mime-verify-multipart/signed))
- 'strict "mime-pgp")
-
- (mime-add-condition
- 'action
- '((type . application)(subtype . pgp-signature)
- (method . mime-verify-application/pgp-signature))
- 'strict "mime-pgp")
-
- (mime-add-condition
- 'action
- '((type . application)(subtype . pgp-encrypted)
- (method . mime-decrypt-application/pgp-encrypted))
- 'strict "mime-pgp")
-
- (mime-add-condition
- 'action
- '((type . application)(subtype . pgp-keys)
- (method . mime-add-application/pgp-keys))
- 'strict "mime-pgp")
- ))
- )
-
-
-;;; @ for mime-edit
-;;;
-
-(defun mime-setup-decode-message-header ()
- (save-excursion
- (save-restriction
- (goto-char (point-min))
- (narrow-to-region
- (point-min)
- (if (re-search-forward
- (concat "^" (regexp-quote mail-header-separator) "$")
- nil t)
- (match-beginning 0)
- (point-max)
- ))
- (eword-decode-header)
- (set-buffer-modified-p nil)
- )))
-
-(add-hook 'mime-edit-mode-hook 'mime-setup-decode-message-header)
-
-
-;;; @@ variables
-;;;
-
-(defvar mime-setup-use-signature t
- "If it is not nil, mime-setup sets up to use signature.el.")
-
-(defvar mime-setup-default-signature-key "\C-c\C-s"
- "*Key to insert signature.")
-
-(defvar mime-setup-signature-key-alist '((mail-mode . "\C-c\C-w"))
- "Alist of major-mode vs. key to insert signature.")
-
-
-;;; @@ for signature
-;;;
-
-(defun mime-setup-set-signature-key ()
- (let ((keymap (current-local-map)))
- (if keymap
- (let ((key
- (or (cdr (assq major-mode mime-setup-signature-key-alist))
- mime-setup-default-signature-key)))
- (define-key keymap key (function insert-signature))
- ))))
-
-(when mime-setup-use-signature
- (autoload 'insert-signature "signature" "Insert signature" t)
- (add-hook 'mime-edit-mode-hook 'mime-setup-set-signature-key)
- ;; (setq message-signature nil)
- )
-
-
-;;; @ for mu-cite
-;;;
-
-(add-hook 'mu-cite/pre-cite-hook 'eword-decode-header)
-
-
-;;; @ end
-;;;
-
-(provide 'semi-setup)
-
-;;; semi-setup.el ends here
+++ /dev/null
-;;; signature.el --- a signature utility for GNU Emacs
-
-;; Copyright (C) 1994,1995,1996,1997 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; OKABE Yasuo <okabe@kudpc.kyoto-u.ac.jp>
-;; Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Maintainer: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Created: 1994/7/11
-;; Version: $Id: signature.el,v 7.16 1997/09/24 23:17:38 shuhei-k Exp $
-;; Keywords: mail, news, signature
-
-;; This file is part of SEMI (SEMI is Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program; see the file COPYING. If not, write to
-;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'std11)
-
-
-;;; @ valiables
-;;;
-
-(defvar signature-insert-at-eof nil
- "*If non-nil, insert signature at the end of file.")
-
-(defvar signature-delete-blank-lines-at-eof nil
- "*If non-nil, signature-insert-at-eof deletes blank lines at the end
-of file.")
-
-(defvar signature-load-hook nil
- "*List of functions called after signature.el is loaded.")
-
-(defvar signature-separator "-- \n"
- "*String to separate contents and signature.
-It is inserted when signature is inserted at end of file.")
-
-(defvar signature-file-name "~/.signature"
- "*Name of file containing the user's signature.")
-
-(defvar signature-file-alist nil
- "*Alist of the form:
- (((FIELD . PATTERN) . FILENAME)
- ...)
-PATTERN is a string or list of string. If PATTERN matches the contents of
-FIELD, the contents of FILENAME is inserted.")
-
-(defvar signature-file-prefix nil
- "*String containing optional prefix for the signature file names")
-
-(defvar signature-insert-hook nil
- "*List of functions called before inserting a signature.")
-
-(defvar signature-use-bbdb nil
- "*If non-nil, Register sigtype to BBDB.")
-
-(autoload 'signature/get-sigtype-from-bbdb "mime-bbdb")
-
-(defun signature/get-sigtype-interactively (&optional default)
- (read-file-name "Insert your signature: "
- (or default (concat signature-file-name "-"))
- (or default signature-file-name)
- nil))
-
-(defun signature/get-signature-file-name ()
- (save-excursion
- (save-restriction
- (narrow-to-region
- (goto-char (point-min))
- (if (re-search-forward
- (concat "^" (regexp-quote mail-header-separator) "$")
- nil t)
- (match-beginning 0)
- (point-max)
- ))
- (catch 'found
- (let ((alist signature-file-alist) cell field value)
- (while alist
- (setq cell (car alist)
- field (std11-field-body (car (car cell)))
- value (cdr (car cell)))
- (cond ((functionp value)
- (let ((name (apply value field (cdr cell))))
- (if name
- (throw 'found
- (concat signature-file-prefix name))
- )))
- ((stringp field)
- (cond ((consp value)
- (while value
- (if (string-match (car value) field)
- (throw 'found
- (concat
- signature-file-prefix (cdr cell)))
- (setq value (cdr value))
- )))
- ((stringp value)
- (if (string-match value field)
- (throw 'found
- (concat
- signature-file-prefix (cdr cell)))
- )))))
- (setq alist (cdr alist))
- ))
- signature-file-name))))
-
-(defun insert-signature (&optional arg)
- "Insert the file named by signature-file-name.
-It is inserted at the end of file if signature-insert-at-eof is non-nil,
-and otherwise at the current point. A prefix argument enables user to
-specify a file named <signature-file-name>-DISTRIBUTION interactively."
- (interactive "P")
- (let ((signature-file-name
- (expand-file-name
- (or (and signature-use-bbdb
- (signature/get-sigtype-from-bbdb arg))
- (and arg
- (signature/get-sigtype-interactively))
- (signature/get-signature-file-name))
- )))
- (or (file-readable-p signature-file-name)
- (error "Cannot open signature file: %s" signature-file-name))
- (if signature-insert-at-eof
- (progn
- (goto-char (point-max))
- (or (bolp) (insert "\n"))
- (if signature-delete-blank-lines-at-eof (delete-blank-lines))
- ))
- (run-hooks 'signature-insert-hook)
- (if (= (point)(point-max))
- (insert signature-separator)
- )
- (insert-file-contents signature-file-name)
- (force-mode-line-update)
- signature-file-name))
-
-
-;;; @ end
-;;;
-
-(provide 'signature)
-
-(run-hooks 'signature-load-hook)
-
-;;; signature.el ends here