Merge semi-1_13_7.
authormorioka <morioka>
Mon, 18 Oct 1999 00:00:37 +0000 (00:00 +0000)
committermorioka <morioka>
Mon, 18 Oct 1999 00:00:37 +0000 (00:00 +0000)
18 files changed:
ChangeLog
Makefile
NEWS
README.en
README.ja [deleted file]
SEMI-CFG
SEMI-MK
TODO
VERSION
ftp.in
mime-bbdb.el
mime-edit.el
mime-partial.el
mime-pgp.el
mime-play.el
mime-view.el
mime-w3.el
semi-def.el

index d9b2a51..7591d3e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,501 @@
+1999-10-16  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * SEMI: Version 1.13.7 (Awazu) released.
+
+1999-10-06  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+       * mime-view.el (mime-preview-move-to-upper): Scroll
+       according to mime-preview-move-scroll.
+
+1999-10-05  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+       * mime-view.el (mime-preview-scroll-down-entity,
+       mime-preview-scroll-up-entity): Recenter when moving to
+       a next entity.
+       (mime-preview-move-scroll): New variable.
+       (mime-preview-move-to-previous, mime-preview-move-to-next):
+       Recenter according to the variable mime-preview-move-scroll.
+
+1999-10-04  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+       * mime-view.el (mime-preview-move-to-next): Attempt to go to the
+       next page if the return value of `next-single-property-change' is
+       greater than `point-max'.
+       (mime-preview-move-to-previous): Don't move backward at the
+       beginning of the buffer; attempt to go to the previous page if the
+       return value of `previous-single-property-change' is less than
+       `point-min'.
+
+1999-09-29  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-view.el (mime-display-multipart/mixed): Share cell of
+       `major-mode'.
+       (mime-display-multipart/alternative): Likewise.
+       (mime-display-entity): Refer `major-mode' value of a situation
+       instead of buffer-local-variable `major-mode'.
+
+1999-09-29  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-play.el (mime-preview-play-current-entity): Use
+       text-property `mime-view-situation' as the initial value of
+       acting-situation to add major-mode.
+
+1999-09-29  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-edit.el (mime-content-types): Delete text/x-rot13-47-48 in
+       default definition. [cf. <tm-ja:4904>, <tm-ja:4907>]
+
+1999-09-27  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+       * mime-edit.el (mime-edit-user-agent-value): Include
+       `emacs-patch-level'.  It exists in XEmacs 21.1.1 or later.
+
+1999-09-20  Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
+
+       * mime-view.el (mime-preview-scroll-up-entitiy,
+       mime-preview-scroll-down-entity): Use scroll-up and scroll-down
+       instead of forward-line.
+       (mime-preview-next-line-entity,
+       mime-preview-previous-line-entity): Add optional argument LINES
+       and scroll LINES lines if specified. Add doc-string.
+
+\f
+1999-09-13  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * SEMI: Version 1.13.6 (Komatsu) released.
+
+1999-08-30  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-edit.el (mime-edit-mime-version-field-for-message/partial):
+       Encode `mime-edit-version'.
+
+1999-08-28  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-play.el (mime-store-message/partial-piece): Use
+       `directory-files' to check number of pieces.
+
+1999-08-26  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-play.el (mime-store-message/partial-piece): Don't refer
+       `mime-preview-buffer'.
+
+1999-08-25  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+       * SEMI-CFG: Use `if' instead of `when'.
+
+\f
+1999-08-18  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * REMI: Version 1.13.2 (\e-DÒike-Ikoinomori)\e-A released.
+
+1999-08-17  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+       * mime-view.el (mime-preview-original-major-mode): Modify the way
+       of checking for the end of the buffer.
+
+1999-08-17  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+       * mime-view.el (mime-preview-original-major-mode): Don't use
+       `get-text-property' at the end of the buffer.
+
+1999-08-02  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-view.el (mime-preview-follow-current-entity): Don't use
+       `mime-entity-buffer'.
+
+1999-05-17  KOSEKI Yoshinori  <kose@yk.NetLaputa.ne.jp>
+
+       * mime-pgp.el (mime-verify-application/pgp-signature): Specify the
+       name of `sig-file' explicitly for `mime-pgp-check-signature'.
+       (mime-pgp-check-signature): Accept new arg `sig-file' and feed its
+       value to the verify command.
+
+1999-07-29  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-play.el (mime-play-entity): Get media-type from situation
+       instead of entity; display prompt and call `mime-save-content' if
+       method is not found.
+       (mime-detect-content): Call `mime-play-entity' even if media-type
+       specification is not found in `mime-magic-type-alist'.
+
+1999-07-28  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-view.el (mime-view-entity-title): Use
+       `mime-entity-read-field' instead of `mime-read-field'.
+       (mime-display-message): Use `major-mode' of
+       mime-entity-header-buffer as the default value of
+       original-major-mode.
+
+       * mime-play.el (mime-entity-safe-filename): Use
+       `mime-entity-read-field' instead of `mime-read-field'.
+       (mime-view-message/rfc822): New implementation.
+
+       * mime-pgp.el (mime-add-application/pgp-keys): Use
+       `mime-entity-number' instead of `mime-raw-point-to-entity-number'.
+
+       * mime-partial.el
+       (mime-combine-message/partial-pieces-automatically): Use
+       `mime-entity-read-field' instead of `mime-read-field'.
+
+       * mime-bbdb.el (mime-bbdb/update-record): Use
+       `mime-entity-read-field' instead of `mime-read-field'; use
+       `mime-entity-fetch-field' instead of `mime-fetch-field'.
+
+1999-07-28  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-view.el (mime-raw-find-entity-from-point): Deleted.
+       (mime-raw-buffer): Deleted.
+       (mime-preview-original-major-mode): Add new optional argument
+       `point'; refer text-property `mime-view-situation' instead of
+       using `mime-entity-buffer'.
+       (mime-raw-point-to-entity-node-id): Deleted.
+       (mime-raw-point-to-entity-number): Deleted.
+       (mime-raw-flatten-message-info): Deleted.
+       (mime-display-entity): Add text-property `mime-view-situation' to
+       each entity.
+
+\f
+1999-07-27  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * SEMI: Version 1.13.5 (Meih\e-Dò)\e-A released.
+
+1999-07-27  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * NEWS (Don't expect raw-buffer): New subsection.
+       (Now acting-method must not expect to run in raw-buffer): Changed
+       as a subsubsection of subsection `Don't expect raw-buffer'.
+       (Don't refer variable `mime-raw-buffer'): New subsubsection.
+       (Don't refer variable `mime-preview-buffer'): New subsubsection.
+
+       * NEWS (Requires FLIM 1.13 API): New subsection.
+
+1999-07-23  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * README.en (Required environment): Change required FLIM to
+       1.13.1; change location of APEL and FLIM.
+
+\f
+1999-07-22  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * REMI: Version 1.13.1 (Kubiki) released.
+
+1999-07-22  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-play.el
+       (mime-preview-quitting-method-for-mime-show-message-mode): Don't
+       refer `mime-raw-buffer'.
+
+1999-07-21  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-play.el (mime-store-message/partial-piece): Don't refer
+       `mime-preview-buffer'.
+
+\f
+1999-07-21  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * REMI: Version 1.13.0 (Saigata) released.
+
+1999-07-21  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * Makefile (EXEC_PREFIX): Deleted.
+       (elc): Change command-line interface to delete `EXEC_PREFIX'.
+       (install-elc): Likewise.
+
+       * SEMI-MK (config-semi): Change command-line interface to delete
+       `EXEC_PREFIX'.
+
+       * SEMI-CFG (EXEC_PREFIX): Deleted.
+
+1999-07-07  Daiki Ueno  <ueno@ueda.info.waseda.ac.jp>
+
+       * mime-edit.el (mime-edit-quitting-method): Don't refer
+       `mime-raw-buffer'.
+
+       * mime-view.el (mime-preview-follow-current-entity): Don't refer
+       `mime-raw-buffer'.
+
+1999-06-17  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-edit.el (mime-edit-user-agent-value): Modify for XEmacs
+       UTF-2000-MULE.
+
+1999-06-04  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-edit.el (mime-edit-user-agent-value): Modify code to get
+       version number of XEmacs. [cf. <tm-ja:4561>]
+
+1999-05-22  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-view.el (mime-entity-situation): Don't refer `major-mode'
+       of a mime-entity-buffer.
+       (mime-display-multipart/mixed): Add `major-mode' of SITUATION to
+       default-situation of children.
+       (mime-display-multipart/alternative): Likewise.
+       (mime-display-entity): Don't refer `raw-buffer'; use
+       `mime-goto-header-start-point'.
+       (mime-display-message): Add new optional argument
+       `original-major-mode'; don't refer `raw-buffer'; use
+       `mime-entity-name' to make name of `preview-buffer'; don't set up
+       `mime-raw-buffer' of `preview-buffer'; use `original-major-mode'
+       as value of `major-mode' field of default-situation; don't pop up
+       `preview-buffer' in suitable window; return `preview-buffer'.
+       (mime-view-buffer): Pop up `preview-buffer' in suitable window.
+
+1999-05-31  Keiichi Suzuki  <keiichi@nanap.org>
+
+       * mime-play.el (mime-show-echo-buffer): Bind `buffer-read-only' to
+       nil, while insert messages.
+
+1999-05-28  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * README.en (Required environment): Require APEL 9.20.
+
+1999-05-27  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-play.el (mime-play-entity): Enter to the calist-package
+       `mime-view' before call `ctree-find-calist'.
+
+       * mime-view.el (mime-view): New calist-package.
+       (mime-display-entity): Enter to the calist-package `mime-view'
+       before call `ctree-match-calist'.
+
+1999-05-23  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-edit.el (mime-edit-mime-version-value): Don't use
+       `eval-when-compile' to avoid problem with XEmacs-MULE.
+       (mime-edit-mime-version-field-for-message/partial): Likewise.
+
+1999-05-20  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * NEWS (Text property `mime-view-entity-{header|body}'): New
+       subsection.
+       (Behavior change about `mime-display-header-hook'): Likewise.
+
+       * mime-view.el (mime-display-entity): Don't move to (point-max)
+       before run `mime-display-header-hook)'.
+
+1999-05-19  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-view.el (mime-display-entity): Put text-property
+       `mime-view-entity-header' and `mime-view-entity-body' to header
+       and body; run `mime-display-header-hook' before insert "\n".
+       (mime-preview-follow-current-entity): Use text-property
+       `mime-view-entity-header'.
+
+\f
+1999-05-12  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * SEMI: Version 1.13.4 (Terai) released.
+
+1999-04-06  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+       * mime-edit.el (mime-delete-field): Use `std11-field-end'.
+
+1999-03-30  Keiichi Suzuki  <kei-suzu@mail.wbs.ne.jp>
+
+       * mime-edit.el (mime-edit-decode-single-part-in-buffer): Normalize
+       EOL code in MIME encoded text part.
+
+1999-03-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-view.el (mime-preview-follow-current-entity): Don't copy
+       header if current entity is root.
+
+1999-03-11  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-edit.el (mime-charset-type-list): Add `tis-620'.
+
+\f
+1999-02-28  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * SEMI: Version 1.13.3 (Komaiko) released.
+
+1999-02-26  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+       * SEMI-MK (install-semi-package): Install mime-setup.el(c).
+       (compile-semi-package): Compile mime-setup.el as well.
+
+1999-02-08  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-edit.el (mime-content-types): Add definition of
+       application/vnd.ms-powerpoint for myself :-P
+       (mime-file-types): Add setting of *.ppt for
+       application/vnd.ms-powerpoint.
+
+1999-02-08  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-partial.el
+       (mime-combine-message/partial-pieces-automatically): Call
+       `mime-store-message/partial-piece' in the buffer when it is
+       called.
+
+       * mime-play.el (mime-store-message/partial-piece): Don't move to
+       point-min.
+
+       * mime-play.el (mime-store-message/partial-piece): Don't expect
+       called in raw-buffer.
+
+\f
+1999-01-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * SEMI: Version 1.13.2 (Mikawa) released.
+
+1999-01-26  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+       * README.en: Notice that 1.12.5 or later of FLIM is required.
+
+1999-01-26  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-play.el (mime-preview-play-current-entity): Add autoload
+       cookie.
+       (mime-play-entity): Likewise.
+
+       * mime-view.el (mime-display-message): Add autoload cookie; add
+       DOC-string.
+       (mime-view-buffer): Add autoload cookie.
+
+1999-01-26  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-play.el (mime-reduce-acting-situation-examples): New
+       implementation.
+
+1999-01-26  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-play.el (mime-view-caesar): Select window which displays
+       current-buffer if it is not selected <to fix problem with mouse
+       operations>.
+
+1999-01-26  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+       * mime-edit.el (mime-edit-decode-single-part-in-buffer): Limit the
+       search bound for the end of "Content-Transfer-Encoding" field.
+
+1999-01-26  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-play.el (mime-view-caesar): New implementation.
+
+1999-01-26  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-play.el (mime-view-caesar): Don't expect called in
+       raw-buffer; use `mime-insert-entity'.
+
+1999-01-25  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-w3.el (mime-preview-text/html): Display err if error occurs
+       in `w3-region'.
+
+       * mime-w3.el (mime-preview-text/html): Guard from error of
+       `w3-region'.
+
+\f
+1999-01-24  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * SEMI: Version 1.13.1 (Kaga-Kasama) released.
+
+1999-01-24  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * TODO (Don't expect raw-buffer): New item.
+       (lazy generating of situations from mime-entity information): New
+       item.
+
+       * TODO (Don't use filter-model): finished.
+
+       * TODO (multipart/related support): virtually finished.
+
+1999-01-24  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * Delete README.ja until it is fixed.
+
+       * mime-w3.el (url-cid): Use `mime-insert-entity-content'.
+
+       * README.ja, README.en (Required environment): Require FLIM
+       1.12.4.
+
+       * mime-w3.el (mime-w3-message-structure): New variable.
+       (mime-preview-text/html): Set up `mime-w3-message-structure'.
+       (url-cid): New function; set up as registered-protocol of url.
+
+1999-01-23  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * README.ja: Modify title.
+
+       * README.ja: Add notice about translation.
+
+       * README.ja, README.en (Required environment): Require FLIM
+       1.12.3; delete description about enriched.el because anything
+       older than Emacs 19.28 are not supported.
+
+       * mime-pgp.el (mime-view-application/pgp): Don't expect called in
+       raw-buffer; use `mime-insert-entity'.
+
+       * mime-play.el (mime-view-message/rfc822): Use
+       `mime-insert-entity'.
+
+1999-01-22  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * NEWS (Function `mime-play-entity'): Sync with latest
+       specification.
+
+       * mime-pgp.el (mime-verify-multipart/signed): Modify for interface
+       change of `mime-play-entity'.
+
+       * mime-play.el (mime-preview-play-current-entity): Modify for
+       interface change of `mime-play-entity'.
+       (mime-play-entity): Change interface; abolish optional arguments
+       `mode' and `ignore-example'.
+       (mime-detect-content): Modify for interface change of
+       `mime-play-entity'.
+
+       * mime-view.el (mime-entity-situation): Add new optional argument
+       `situation'; it is preferred to attributes of entity.
+
+1999-01-22  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-view.el (mime-view-version): Don't use `eval-when-compile'
+       to avoid to break product-code-name.
+
+       * mime-edit.el (mime-edit-version): Don't use `eval-when-compile'
+       to avoid to break product-code-name.
+
+\f
+1999-01-21  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * SEMI: Version 1.13.0 (Matt\e-Dò)\e-A released.
+
+1999-01-21  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-play.el (mime-view-message/rfc822): Don't expect called in
+       raw-buffer.
+
+1999-01-21  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * NEWS (Function `mime-play-entity'): Add description about
+       interface change of `mime-play-entity'.
+
+       * mime-play.el (mime-play-entity): Change interface.
+
+1999-01-21  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * NEWS (Changes in SEMI 1.13): New section.
+
+       * NEWS (Changes in SEMI 1.12): New section.
+
+1999-01-21  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-pgp.el (mime-view-application/pgp): Don't expect called in
+       raw-buffer.
+       (mime-verify-application/pgp-signature): Likewise.
+
+       * mime-play.el: Abolish variable
+       `mime-preview-after-decoded-position'.
+       (mime-preview-play-current-entity): Use `mime-play-entity' simply;
+       don't switch to raw-buffer.
+       (mime-play-entity): renamed from `mime-raw-play-entity'; don't
+       expect called in raw-buffer.
+       (mime-activate-mailcap-method): Don't expect called in raw-buffer.
+       (mime-show-echo-buffer): Permit to run in preview-buffer.
+
+\f
 1999-01-21  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
        * SEMI: Version 1.12.1 ([JR] Nonoichi) released.
 1999-01-21  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
        * SEMI: Version 1.12.1 ([JR] Nonoichi) released.
index 0b459b5..84d8c26 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,8 +3,10 @@
 #
 
 PACKAGE = semi
 #
 
 PACKAGE = semi
-API    = 1.12
-RELEASE = 1
+API    = 1.13
+RELEASE = 7
+
+FLIM_API= 1.13
 
 TAR    = tar
 RM     = /bin/rm -f
 
 TAR    = tar
 RM     = /bin/rm -f
@@ -15,7 +17,6 @@ XEMACS        = xemacs
 FLAGS   = -batch -q -no-site-file -l SEMI-MK
 
 PREFIX = NONE
 FLAGS   = -batch -q -no-site-file -l SEMI-MK
 
 PREFIX = NONE
-EXEC_PREFIX = NONE
 LISPDIR = NONE
 PACKAGEDIR = NONE
 VERSION_SPECIFIC_LISPDIR = NONE
 LISPDIR = NONE
 PACKAGEDIR = NONE
 VERSION_SPECIFIC_LISPDIR = NONE
@@ -23,18 +24,16 @@ VERSION_SPECIFIC_LISPDIR = NONE
 GOMI   = *.elc
 
 VERSION        = $(API).$(RELEASE)
 GOMI   = *.elc
 
 VERSION        = $(API).$(RELEASE)
-ARC_DIR = /pub/GNU/elisp/semi/semi-$(API)-for-flim-1.12
+ARC_DIR = /pub/mule/semi/semi-$(API)-for-flim-$(FLIM_API)
 
 
 elc:
        $(EMACS) $(FLAGS) -f compile-semi \
 
 
 elc:
        $(EMACS) $(FLAGS) -f compile-semi \
-               $(PREFIX) $(EXEC_PREFIX) $(LISPDIR) \
-               $(VERSION_SPECIFIC_LISPDIR)
+               $(PREFIX) $(LISPDIR) $(VERSION_SPECIFIC_LISPDIR)
 
 install-elc:   elc
        $(EMACS) $(FLAGS) -f install-semi \
 
 install-elc:   elc
        $(EMACS) $(FLAGS) -f install-semi \
-               $(PREFIX) $(EXEC_PREFIX) $(LISPDIR) \
-               $(VERSION_SPECIFIC_LISPDIR)
+               $(PREFIX) $(LISPDIR) $(VERSION_SPECIFIC_LISPDIR)
 
 install:       install-elc
 
 
 install:       install-elc
 
@@ -62,7 +61,8 @@ tar:
        cd /tmp; $(TAR) cvzf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)
        cd /tmp; $(RM) -r $(PACKAGE)-$(VERSION)
        sed "s/VERSION/$(VERSION)/" < ftp.in | sed "s/API/$(API)/" \
        cd /tmp; $(TAR) cvzf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)
        cd /tmp; $(RM) -r $(PACKAGE)-$(VERSION)
        sed "s/VERSION/$(VERSION)/" < ftp.in | sed "s/API/$(API)/" \
-               | sed "s/PACKAGE/$(PACKAGE)/" > ftp
+               | sed "s/PACKAGE/$(PACKAGE)/" \
+               | sed "s/FLIM_API/$(FLIM_API)/" > ftp
 
 release:
        -$(RM) $(ARC_DIR)/$(PACKAGE)-$(VERSION).tar.gz
 
 release:
        -$(RM) $(ARC_DIR)/$(PACKAGE)-$(VERSION).tar.gz
diff --git a/NEWS b/NEWS
index f4c2d8e..529574f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,80 @@
 SEMI NEWS --- history of major-changes.
 SEMI NEWS --- history of major-changes.
-Copyright (C) 1998 Free Software Foundation, Inc.
+Copyright (C) 1998,1999 Free Software Foundation, Inc.
 
 
+* Changes in SEMI 1.13
+
+** Requires FLIM 1.13 API
+
+
+** Don't expect raw-buffer
+
+In FLIM 1.13 API, existence of a raw-buffer corresponding to each
+entity is not guaranteed.
+
+*** Now acting-method must not expect to run in raw-buffer
+
+Function `mime-play-entity' was changed to permit to run in any buffer
+(may be called in preview-buffer).  So each acting-method is called in
+any buffer.
+
+*** Don't refer variable `mime-raw-buffer'
+
+Preview-buffer's local variable `mime-raw-buffer' is deleted.  So
+don't refer it.
+
+*** Don't refer variable `mime-preview-buffer'
+
+There are no guarantee about existence of a raw-buffer corresponding
+to each entity, so don't refer buffer local variables of the
+raw-buffer, e.g. `mime-preview-buffer'.
+
+
+** Function `mime-play-entity'
+
+Function `mime-play-entity' was renamed from `mime-raw-play-entity'
+and changed interface.
+
+Current interface is:
+
+    mime-play-entity (entity &optional situation ignored-method)
+
+Please use `situation' if you would like to specify `mode' and
+`ignore-examples'.
+
+
+** Text property `mime-view-entity-{header|body}'
+
+Now mime-view put text property `mime-view-entity-header' and
+`mime-view-entity-body' in header and body of each entity.
+
+
+** Behavior change about `mime-display-header-hook'
+
+Function `mime-display-entity' runs `mime-display-header-hook' before
+it inserts "\n".
+
+In addition, now it is cleared that current point means beginning of
+header when `mime-display-entity' runs `mime-display-header-hook'.
+Therefore header-presentation-method must not change current point.
+
+
+** New variable `mime-preview-move-scroll'
+
+This variables decides how to scroll in the MIME-View-mode
+when mime-preview-move-upper, mime-preview-move-previous,
+mime-preview-move-next is called. Those are bound to `u', `p', `n',
+respectively.
+
+\f
+* Changes in SEMI 1.12
+
+There are no user-visible changes.
+
+** New function `eliminate-top-spaces'
+
+Now mime-edit has it.
+
+\f
 * Changes in SEMI 1.11
 
 ** New function `mime-edit-decode-message-in-buffer'
 * Changes in SEMI 1.11
 
 ** New function `mime-edit-decode-message-in-buffer'
index 54a01ff..7f2d51b 100644 (file)
--- a/README.en
+++ b/README.en
@@ -40,22 +40,18 @@ Required environment
   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.
 
   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 (9.11 or later) and FLIM (1.12.0 or later)
+  SEMI requires APEL (9.20 or later) and FLIM (1.13.1 or later)
   package.  Please install them before installing it.  APEL package is
   available at:
 
   package.  Please install them before installing it.  APEL package is
   available at:
 
-       ftp://ftp.jaist.ac.jp/pub/GNU/elisp/apel/
+       ftp://ftp.etl.go.jp/pub/mule/apel/
 
   and FLIM package is available at:
 
 
   and FLIM package is available at:
 
-       ftp://ftp.jaist.ac.jp/pub/GNU/elisp/flim/
+       ftp://ftp.etl.go.jp/pub/mule/flim/flim-1.13/
 
   PGP/MIME and application/pgp require mailcrypt or tiny-pgp package.
 
 
   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
 ============
 
 Installation
 ============
diff --git a/README.ja b/README.ja
deleted file mode 100644 (file)
index d313b38..0000000
--- a/README.ja
+++ /dev/null
@@ -1,258 +0,0 @@
-[SEMI \e$B$N3K%Q%C%1!<%8$N\e(B README (\e$BF|K\8lHG\e(B)]
-
-SEMI \e$B$H$O!)\e(B
-============
-
-  SEMI \e$B$O\e(B GNU Emacs \e$B$K\e(B MIME \e$B5!G=$rDs6!$9$k%i%$%V%i%j!<$G$9!#\e(BMIME  \e$B$O%a%C\e(B
-  \e$B%;!<%8$K\e(B (ASCII) plain text \e$B0J30$NFbMF$d%X%C%@!<$r4^$a$i$l$k$h$&$K$9\e(B
-  \e$B$k$?$a$KDs0F$5$l$F$$$k\e(B internet standard \e$B$G$9!#\e(B
-
-       RFC 2045 : Internet Message Bodies
-       RFC 2046 : Media Types
-       RFC 2047 : Message Header Extensions
-       RFC 2048 : MIME Registration Procedures
-       RFC 2049 : MIME Conformance
-
-  SEMI \e$B$O0J2<$N5!G=$,$"$j$^$9!#\e(B
-
-       - MIME \e$B%a%C%;!<%81\Mw\e(B (mime-view-mode) (RFC 2045 .. 2049)
-       - MIME \e$B%a%C%;!<%8:n@.\e(B (mime-edit-mode) (RFC 2045 .. 2049)
-
-  MIME \e$B%a%C%;!<%81\Mw$H:n@.$O0J2<$N5!G=$bDs6!$7$F$$$^$9\e(B:
-
-       - Content-Disposition \e$B%U%#!<%k%I$K$h$k%U%!%$%kL>$N07$$\e(B (RFC
-       - 1806)
-       - PGP/MIME \e$B0BA4$J\e(B Multipart (RFC 2015)
-       - application/pgp (draft-kazu-pgp-mime-00.txt; obsolete)
-       - text/richtext (RFC 1521; obsolete; \e$B1\Mw$N$_\e(B)
-       - text/enriched (RFC 1896)
-       - mailcap \e$B$K$h$k30ItJ}K!@_Dj\e(B (RFC 1524)
-
-  \e$B$3$N%Q%C%1!<%8$O\e(B MUA \e$B$N$?$a$N\e(B MIME \e$B3HD%$r4^$s$G$$$J$$$3$H$KCm0U$7$F\e(B
-  \e$B$/$@$5$$!#$=$l$i$OJL$N%Q%C%1!<%8$H$7$F%j%j!<%9$5$l$^$9!#\e(B
-
-
-\e$BI,MW$J4D6-\e(B
-==========
-
-  SEMI \e$B$O\e(B mule \e$B5!G=$D$-$N\e(B XEmacs 20.2 \e$B0J9_$H\e(B Emacs 20 \e$B$r%5%]!<%H$7$^$9!#\e(B
-
-  SEMI \e$B$O\e(B Emacs 19.28 \e$B$d\e(B XEmacs 19.14 \e$B0JA0$O%5%]!<%H$7$^$;$s!#\e(BSEMI \e$B$O\e(B
-  Emacs 19.29 \e$B$+$i\e(B Emacs 19.34\e$B!"\e(BXEmacs 19.15 \e$B$+$i\e(B mule \e$B5!G=$N$J$$\e(B
-  XEmacs 20.2 \e$B$^$G$O%5%]!<%H$7$^$;$s$,!"\e(BSEMI \e$B$O$=$l$i$GF0:n$9$k$+$b$7\e(B
-  \e$B$l$^$;$s!#\e(B
-
-  SEMI \e$B$O\e(B APEL (9.11 \e$B0J9_\e(B) \e$B$H\e(B FLIM (1.12.0 \e$B0J9_\e(B) \e$B$rI,MW$H$7$^$9!#\e(BSEMI 
-  \e$B$r%$%s%9%H!<%k$9$kA0$K$^$:$=$l$i$r%$%s%9%H!<%k$7$F$/$@$5$$!#\e(BAPEL \e$B%Q%C\e(B
-  \e$B%1!<%8$O0J2<$N$H$3$m$G<hF@2DG=$G$9\e(B:
-
-       ftp://ftp.jaist.ac.jp/pub/GNU/elisp/apel/
-
-  FLIM \e$B%Q%C%1!<%8$O0J2<$N$H$3$m$G<hF@2DG=$G$9!#\e(B
-
-       ftp://ftp.jaist.ac.jp/pub/GNU/elisp/flim/
-
-  PGP/MIME \e$B$H\e(B application/pgp \e$B$O\e(B mailcrypt \e$B$+\e(B tiny-pgp \e$B%Q%C%1!<%8$rI,\e(B
-  \e$BMW$H$7$^$9!#\e(B
-
-  \e$B%Q%C%1!<%8\e(B enriched.el \e$B$O\e(B text/enriched \e$B$r:n@.$9$k$?$a$KI,MW$G$9$N$G!"\e(B
-  Emacs 19.28 \e$B0JA0\e(B (\e$B8x<0HG$N\e(B MULE 2.3 \e$B$r4^$`\e(B) \e$B$G$O!"\e(Btext/enriched \e$B$N\e(B
-  WYSIWYG \e$B:n@.$O;HMQ$G$-$^$;$s!#\e(B
-
-\e$B%$%s%9%H!<%k\e(B
-============
-
-(a) \e$BE83+$7$?>l=j$G<B9T\e(B
-
-  \e$BB>$N%G%#%l%/%H%j!<$K%$%s%9%H!<%k$7$?$/$J$$$J$i!"0J2<$N$3$H$@$1$r$d$C\e(B
-  \e$B$F$/$@$5$$\e(B:
-
-       % make
-
-  emacs \e$B$N%3%^%s%IL>$r;XDj$9$k$3$H$,$G$-$^$9!#Nc$($P!"\e(B
-
-       % make EMACS=xemacs
-
-  `EMACS=...' \e$B$,>JN,$5$l$k$H!"\e(BEmacs=emacs \e$B$,;H$o$l$^$9!#\e(B
-
-(b) make install
-
-  \e$BB>$N%G%#%l%/%H%j!<$K%$%s%9%H!<%k$7$?$$$J$i!"0J2<$N$3$H$r$7$F$/$@$5$$\e(B:
-
-       % make install
-
-  emacs \e$B$N%3%^%s%IL>$r;XDj$9$k$3$H$,$G$-$^$9!#Nc$($P!"\e(B
-
-       % make install EMACS=xemacs
-
-  `EMACS=...' \e$B$,>JN,$5$l$k$H!"\e(BEmacs=emacs \e$B$,;H$o$l$^$9!#\e(B
-
-  Emacs Lisp \e$B%W%m%0%i%`$H%7%'%k%9%/%j%W%H$N$?$a$N%G%#%l%/%H%j!<LZ$N@\\e(B
-  \e$BF,<-\e(B (prefix) \e$B$r;XDj$9$k$3$H$,$G$-$^$9!#Nc$($P!"\e(B
-
-       % make install PREFIX=~/
-
-  `PREFIX=...' \e$B$,>JN,$5$l$k$H!";XDj$5$l$?\e(B emacs \e$B%3%^%s%I$N%G%#%l%/%H%j!<\e(B
-  \e$BLZ$N@\F,<-$,;HMQ$5$l$^$9\e(B (\e$B$*$=$i$/\e(B /usr/local \e$B$G$9\e(B)\e$B!#\e(B
-
-  \e$BNc$($P!"\e(BPREFIX=/usr/local \e$B$H\e(B Emacs 19.34 \e$B$,;XDj$5$l$l$P!"0J2<$N%G%#\e(B
-  \e$B%l%/%H%j!<LZ$,:n@.$5$l$^$9!#\e(B
-
-       /usr/local/share/emacs/20.2/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
-
-  site-lisp \e$B%G%#%l%/%H%j!<$r;XDj$9$k$3$H$,$G$-$^$9!#Nc$($P!"\e(B:
-
-    % make install LISPDIR=~/share/emacs/lisp
-
-  `LISPDIR=...' \e$B$,>JN,$5$l$k$H!";XDj$5$l$?\e(B emacs \e$B$N%3%^%s%I$N\e(B
-  site-lisp \e$B%G%#%l%/%H%j!<$,;H$o$l$^$9\e(B (\e$B$*$=$i$/\e(B
-  /usr/local/share/emacs/site-lisp \e$B$+\e(B /usr/local/lib/xemacs/site-lisp)
-  \e$B$G$9!#\e(B
-
-  emu \e$B%b%8%e!<%k\e(B (APEL \e$B%Q%C%1!<%8$KF~$C$F$$$^$9\e(B) \e$B$,I8=`$G$J$$%G%#%l%/\e(B
-  \e$B%H%j!<$K%$%s%9%H!<%k$5$l$F$$$k>l9g$O!"$=$l$i$N$"$k>l=j$r;XDj$9$kI,MW\e(B
-  \e$B$,$"$j$^$9!#Nc$($P!"\e(B:
-
-    % make install VERSION_SPECIFIC_LISPDIR=~/elisp
-
-(c) XEmacs \e$B$N%Q%C%1!<%8$H$7$F%$%s%9%H!<%k$9$k\e(B
-
-  XEmacs \e$B$N%Q%C%1!<%8%G%#%l%/%H%j!<$K%$%s%9%H!<%k$9$k>l9g$O!"0J2<$N$3\e(B
-  \e$B$H$r$7$F$/$@$5$$\e(B:
-
-       % make install-package
-
-  emacs \e$B$N%3%^%s%IL>$r;XDj$9$k$3$H$,$G$-$^$9!#Nc$($P!"\e(B
-
-       % make install-package XEMACS=xemacs-21
-
-  `XEMACS=...' \e$B$,>JN,$5$l$k$H!"\e(BXEMACS=xemacs \e$B$,;HMQ$5$l$^$9!#\e(B
-
-  \e$B%Q%C%1!<%8$N%G%#%l%/%H%j!<$r;XDj$9$k$3$H$,$G$-$^$9!#Nc$($P\e(B:
-
-       % make install PACKAGEDIR=~/.xemacs
-
-  `PACKAGEDIR=...' \e$B$,>JN,$5$l$k$H!"B8:_$9$k%Q%C%1!<%8%G%#%l%/%H%j!<$N\e(B
-  \e$B:G=i$N$b$N$,;H$o$l$^$9!#\e(B
-
-  XEmacs \e$B$N%Q%C%1!<%8%7%9%F%`$O\e(B XEmacs 21.0 \e$B$+$=$l0J9_$rMW5a$9$k$3$H$K\e(B
-  \e$BCm0U$7$F$/$@$5$$!#\e(B
-
-(a,b,c)
-
-  \e$BB>$N>JN,2DG=$J@_Dj$r%U%!%$%k\e(B ${archive}/SEMI-CFG \e$B$rJT=8$9$k$3$H$G;X\e(B
-  \e$BDj$G$-$^$9!#\e(B${archive}/README.ja \e$B$H\e(B ${archive}/SEMI/CFG \e$B$N%3%a%s%H$r\e(B
-  \e$BFI$s$G$/$@$5$$!#\e(B
-
-\e$B=i4|2=\e(B
-==============
-
-(a) load-path
-
-  Emacs \e$B$+\e(B Mule \e$B$r;H$C$F$$$k$J$i!"\e(BFLIM \e$B$N%G%#%l%/%H%j!<$r\e(B
-  load-path \e$B$KDI2C$7$F$/$@$5$$!#=i4|@_Dj$G%$%s%9%H!<%k$7$?$J$i!"<!$N$h\e(B
-  \e$B$&$K\e(B subdirs.el \e$B$r=q$/$3$H$,$G$-$^$9!#Nc\e(B:
-
-  --------------------------------------------------------------------
-  (normal-top-level-add-to-load-path
-   '("apel" "flim" "semi"))
-  --------------------------------------------------------------------
-
-  XEmacs \e$B$r;H$C$F$$$k$J$i!"\e(Bload-path \e$B$r@_Dj$9$kI,MW$O$"$j$^$;$s!#\e(B
-
-(b) mime-setup
-
-  \e$B0J2<$N$b$N$r\e(B ~/.emacs \e$B$KF~$l$F$/$@$5$$!#\e(B
-
-       (load "mime-setup")
-
-
-\e$B@bL@J8=q\e(B
-=============
-
-  \e$B=i$a$K!"\e(B${archive}/README.en \e$B$rFI$s$G$/$@$5$$!#\e(B
-
-  RFC 822, 1524, 1806, 1847, 1896, 2015, 2045, 2046, 2047, 2048, 2049
-  \e$B$O\e(B anonymous ftp \e$B$G0J2<$N$H$3$m$+$i<hF@2DG=$G$9!#\e(B
-
-       ftp://ftp.merit.edu/internet/documents/rfc/
-
-
-\e$B%a!<%j%s%0%j%9%H\e(B
-===========
-
-  \e$B%P%0Js9p$d2~A1$NDs0F$r=q$$$?$H$-$O!"@'Hs\e(B tm \e$B%a!<%j%s%0%j%9%H$KAw$C$F\e(B
-  \e$B$/$@$5$$\e(B:
-
-       bug-tm-en@chamonix.jaist.ac.jp  (\e$B1Q8l\e(B)
-       bug-tm-ja@chamonix.jaist.ac.jp  (\e$BF|K\8l\e(B)
-
-  tm ML \e$B$rDL$7$F!"\e(BSEMI\e$B$N%P%0$rJs9p$7$?$j!"\e(BSEMI \e$B$N:G?7$N%j%j!<%9$r<hF@\e(B
-  \e$B$7$?$j!"\e(BSEMI \e$B$N>-Mh$N3HD%$N5DO@$r$7$?$j$9$k$3$H$,$G$-$^$9!#\e(Btm ML \e$B$K\e(B
-  \e$B;22C$9$k$K$O!"6u$NEE;R%a!<%k$r\e(B
-
-       tm-en-help@chamonix.jaist.ac.jp (\e$B1Q8l\e(B)
-       tm-ja-help@chamonix.jaist.ac.jp (\e$BF|K\8l\e(B)
-
-  \e$B$KAw$C$F$/$@$5$$!#\e(B
-
-  morioka@jaist.ac.jp \e$B$N$h$&$J!":n<T$KD>@\%a!<%k$rAw$i$J$$$h$&$KCm0U$7\e(B
-  \e$B$F$/$@$5$$!#$=$l$O!"H/@8$7$?LdBj$OB>$N4D6-$G$b5/$3$C$F$$$k$O$:$@$+$i\e(B
-  \e$B$G$9\e(B (\e$B$b$7$=$&$G$J$1$l$P!"$=$l$O@_Dj$NLdBj$G!"\e(BSEMI \e$B$N%P%0$G$O$"$j$^\e(B
-  \e$B$;$s\e(B)\e$B!#\e(B tm \e$B%a!<%j%s%0%j%9%H$G5DO@$9$Y$-$G$9!#$H$K$+$/!":n<T$X$ND>@\\e(B
-  \e$B$N%a!<%k$OH?1~$,$J$$$+$b$7$l$^$;$s!#%a!<%k$O\e(B tm \e$B%a!<%j%s%0%j%9%H$XAw$C\e(B
-  \e$B$F$/$@$5$$!#\e(B
-
-
-CVS \e$B$K$h$k3+H/\e(B
-=====================
-
-  CVS \e$B$K$h$k3+H/$K;22C$7$?$$$H$-$O!"%"%+%&%s%HL>$H\e(B UNIX \e$BMM<0$G0E9f2=$5\e(B
-  \e$B$l$?%Q%9%o!<%I$r\e(B
-
-       cvs@chamonix.jaist.ac.jp
-
-  \e$B$KAw$C$F$/$@$5$$!#3+H/$K;22C$5$l$k$3$H$r4|BT$7$F$$$^$9!#\e(B
-
-
-\e$B:n<T\e(B
-=======
-
-\e$B:,K\ItJ,$N:n<T\e(B
-
-    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)
-
-\e$BB>$N:n<T\e(B
-
-    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\e,Ag\e(Bois 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@jpl.org>
index c05df10..7485f10 100644 (file)
--- a/SEMI-CFG
+++ b/SEMI-CFG
 ;;;
 
 (let ((path (get-latest-path "bbdb" 'all-paths)))
 ;;;
 
 (let ((path (get-latest-path "bbdb" 'all-paths)))
-  (when path
-    (add-path path)
-    (add-path (expand-file-name "lisp" path)) ; run-in-place installation
-    ))
+  (if path
+      (progn
+       (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)
 
 ;; Or please specify path.
 ;; (add-path "bbdb-1.50" 'all-paths)
 ;;;
 
 (let ((path (get-latest-path "w3" 'all-paths)))
 ;;;
 
 (let ((path (get-latest-path "w3" 'all-paths)))
-  (when path
-    (add-path path)
-    (add-path (expand-file-name "lisp" path)) ; run-in-place installation
-    ))
+  (if path
+      (progn
+       (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)
 
 ;; Or please specify path.
 ;; (add-path "w3-4.0pre.20" 'all-paths)
 (defvar PREFIX install-prefix)
 ;;(setq PREFIX "~/")
 
 (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)
 ;; Please specify emu prefix [optional]
 (setq EMU_PREFIX
       (if (string-match "XEmacs" emacs-version)
 ;;; @ executables
 ;;;
 
 ;;; @ 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))
 
 ;; Please specify binary path. (for external method scripts)
 (setq METHOD_DIR (expand-file-name "share/semi" PREFIX))
 
diff --git a/SEMI-MK b/SEMI-MK
index 6a0de68..bd5f525 100644 (file)
--- a/SEMI-MK
+++ b/SEMI-MK
             (defvar PREFIX prefix)
             ))
     (setq command-line-args-left (cdr command-line-args-left))
             (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)
     (and (setq lisp-dir (car command-line-args-left))
         (or (string-equal "NONE" lisp-dir)
             (defvar LISPDIR lisp-dir)
@@ -32,8 +27,8 @@
     )
   (load-file "SEMI-CFG")
   (load-file "SEMI-ELS")
     )
   (load-file "SEMI-CFG")
   (load-file "SEMI-ELS")
-  (princ (format "PREFIX=%s\tEXEC_PREFIX=%s
-LISPDIR=%s\n" PREFIX EXEC_PREFIX LISPDIR))
+  (princ (format "PREFIX=%s
+LISPDIR=%s\n" PREFIX LISPDIR))
   )
 
 (defun directory= (dir1 dir2)
   )
 
 (defun directory= (dir1 dir2)
@@ -83,14 +78,14 @@ LISPDIR=%s\n" PREFIX EXEC_PREFIX LISPDIR))
   (Custom-make-dependencies)
 
   (compile-elisp-modules (append semi-modules-to-compile
   (Custom-make-dependencies)
 
   (compile-elisp-modules (append semi-modules-to-compile
-                                '(auto-autoloads custom-load))
+                                '(mime-setup auto-autoloads custom-load))
                         ".")
   )
 
 (defun install-semi-package ()
   (config-semi-package)
   (install-elisp-modules (append semi-modules
                         ".")
   )
 
 (defun install-semi-package ()
   (config-semi-package)
   (install-elisp-modules (append semi-modules
-                                '(mime auto-autoloads custom-load))
+                                '(mime-setup auto-autoloads custom-load))
                         "./"
                         (expand-file-name SEMI_PREFIX
                                           (expand-file-name "lisp"
                         "./"
                         (expand-file-name SEMI_PREFIX
                                           (expand-file-name "lisp"
diff --git a/TODO b/TODO
index 4a051ff..4be8a0e 100644 (file)
--- a/TODO
+++ b/TODO
@@ -5,48 +5,9 @@
 
 ** dynamic configuration for 'mime-preview-condition
 
 
 ** dynamic configuration for 'mime-preview-condition
 
-** multipart/related support
+** Don't expect raw-buffer
 
 
-** 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.
+** lazy generating of situations from mime-entity information
 
 
 * MIME-Edit
 
 
 * MIME-Edit
diff --git a/VERSION b/VERSION
index e103fee..9c1fa27 100644 (file)
--- a/VERSION
+++ b/VERSION
 1.11.0 Kanazawa                \e$(B6bBt\e(B             ; <=> \e$(BKLN&E4F;\e(B \e$(BKLE46bBt\e(B
 1.12.0 Nishi-Kanazawa          \e$(B@>6bBt\e(B           ; <=> \e$(BKLN&E4F;\e(B \e$(B?7@>6bBt\e(B
 1.12.1 [JR] Nonoichi           [JR] \e$(BLn!9;T\e(B
 1.11.0 Kanazawa                \e$(B6bBt\e(B             ; <=> \e$(BKLN&E4F;\e(B \e$(BKLE46bBt\e(B
 1.12.0 Nishi-Kanazawa          \e$(B@>6bBt\e(B           ; <=> \e$(BKLN&E4F;\e(B \e$(B?7@>6bBt\e(B
 1.12.1 [JR] Nonoichi           [JR] \e$(BLn!9;T\e(B
------- Matt\e-Dò\e-A                     \e$(B>>G$\e(B
+1.13.0 Matt\e-Dò\e-A                     \e$(B>>G$\e(B
+1.13.1 Kaga-Kasama             \e$(B2C2l3^4V\e(B
+1.13.2 Mikawa                  \e$(BH~@n\e(B
+1.13.3 Komaiko                 \e$(B>.Iq;R\e(B
+1.13.4 Terai                   \e$(B;{0f\e(B
+1.13.5 Meih\e-Dò\e-A                     \e$(BL@Jv\e(B
+1.13.6 Komatsu                 \e$(B>.>>\e(B
+1.13.7 Awazu                   \e$(B0@DE\e(B
 :      :                       :
 -------        Tsuruga                 \e$(BFX2l\e(B             ; = JR \e$(B>.IM@~\e(B
 -------        Shin-Hikida             \e$(B?7I%ED\e(B
 :      :                       :
 -------        Tsuruga                 \e$(BFX2l\e(B             ; = JR \e$(B>.IM@~\e(B
 -------        Shin-Hikida             \e$(B?7I%ED\e(B
 1.11.0 Okitsu                  \e$(B6=DE\e(B
 1.12.0 Shimizu                 \e$(B@6?e\e(B
 1.12.1 Kusanagi                \e$(BApFe\e(B
 1.11.0 Okitsu                  \e$(B6=DE\e(B
 1.12.0 Shimizu                 \e$(B@6?e\e(B
 1.12.1 Kusanagi                \e$(BApFe\e(B
------- Shizuoka                \e$(B@E2,\e(B
------- Abekawa                 \e$(B0BG\@n\e(B
------- Mochimune               \e$(BMQ=!\e(B
------- Yaizu                   \e$(B>FDE\e(B
------- Nishi-Yaizu             \e$(B@>>FDE\e(B
------- Fijieda                 \e$(BF#;^\e(B
------- Rokug\e-Dò\e-A                    \e$(BO;9g\e(B
------- Shimada                 \e$(BEgED\e(B
+1.13.0 Shizuoka                \e$(B@E2,\e(B
+1.13.1 Abekawa                 \e$(B0BG\@n\e(B
+1.13.2 Mochimune               \e$(BMQ=!\e(B
+1.13.3 Yaizu                   \e$(B>FDE\e(B
+1.13.4 Nishi-Yaizu             \e$(B@>>FDE\e(B
+1.13.5 Fijieda                 \e$(BF#;^\e(B
+1.13.6 Rokug\e-Dò\e-A                    \e$(BO;9g\e(B
+1.13.7 Shimada                 \e$(BEgED\e(B
 ------ Kanaya                  \e$(B6bC+\e(B     ; = \e$(BBg0f@nE4F;\e(B
 ------ Kikugawa                \e$(B5F@n\e(B
 ------ Kakegawa                \e$(B3]@n\e(B     ; = \e$(BE7N5IML>8PE4F;\e(B
 ------ Kanaya                  \e$(B6bC+\e(B     ; = \e$(BBg0f@nE4F;\e(B
 ------ Kikugawa                \e$(B5F@n\e(B
 ------ Kakegawa                \e$(B3]@n\e(B     ; = \e$(BE7N5IML>8PE4F;\e(B
+------ Fukuroi                 \e$(BB^0f\e(B
+------ Iwata                   \e$(BHXED\e(B
+------ Toyodach\e-Dò\e-A         \e$(BK-EDD.\e(B
+------ Tenry\e-Dþgawa\e-A                \e$(BE7N5@n\e(B
+------ Hamamatsu               \e$(BIM>>\e(B     ; = \e$(B1s=#E4F;\e(B
+------ Takatsuka               \e$(B9bDM\e(B
+------ Maisaka                 \e$(BIq:e\e(B
+------ Bentenjima              \e$(BJ[E7Eg\e(B
+------ Araimachi               \e$(B?75oD.\e(B
+------ Wasizu                  \e$(BOIDE\e(B
+------ Shinjohara              \e$(B?7=j86\e(B   ; = \e$(BE7N5IML>8PE4F;\e(B
+------ Futagawa                \e$(BFs2O\e(B
+------ Toyohashi               \e$(BK-66\e(B     ; = JR \e$(BHSED@~\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
 :      :                       :
 ------ 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
 1.8.3  Ecch\e-Dþ-Nakagawa\e-A            \e$(B1[CfCf@n\e(B
 1.8.4  Takaoka                 \e$(B9b2,\e(B     ; = JR \e$(BKLN&K\@~!">kC<@~\e(B
 
 1.8.3  Ecch\e-Dþ-Nakagawa\e-A            \e$(B1[CfCf@n\e(B
 1.8.4  Takaoka                 \e$(B9b2,\e(B     ; = JR \e$(BKLN&K\@~!">kC<@~\e(B
 
+;;-------------------------------------------------------------------------
+;;     Hokuetsu Express        \e$(BKL1[5^9T\e(B
+;;             http://www.tiara.or.jp/~tokamaci/hokuhoku/hokuhoku.html
+;;     Hokuhoku Line           \e$(B$[$/$[$/@~\e(B
+;;-------------------------------------------------------------------------
+1.13.0 Saigata                 \e$(B:T3c\e(B     ; = JR \e$(B?.1[K\@~\e(B
+1.13.1 Kubiki                  \e$(B$/$S$-\e(B
+1.13.2 \e-DÒike-Ikoinomori\e-A           \e$(BBgCS$$$3$$$N?9\e(B
+
 
 [etc.]
 
 
 [etc.]
 
diff --git a/ftp.in b/ftp.in
index 6c3ad02..848fbe2 100644 (file)
--- a/ftp.in
+++ b/ftp.in
@@ -2,12 +2,16 @@
 
   It is available from
 
 
   It is available from
 
-    ftp://ftp.jaist.ac.jp/pub/GNU/elisp/semi/semi-API-for-flim-1.12
+    ftp://ftp.m17n.org/pub/mule/semi/semi-API-for-flim-FLIM_API
+
+or
+
+    ftp://ftp.etl.go.jp/pub/mule/semi/semi-API-for-flim-FLIM_API
 
 --[[message/external-body;
        access-type=anon-ftp;
 
 --[[message/external-body;
        access-type=anon-ftp;
-       site="ftp.jaist.ac.jp";
-       directory="/pub/GNU/elisp/semi/semi-API-for-flim-1.12";
+       site="ftp.m17n.org";
+       directory="/pub/mule/semi/semi-API-for-flim-FLIM_API";
        name="PACKAGE-VERSION.tar.gz";
        mode=image]]
 Content-Type: application/octet-stream;
        name="PACKAGE-VERSION.tar.gz";
        mode=image]]
 Content-Type: application/octet-stream;
index 62bc191..1b61d64 100644 (file)
@@ -161,13 +161,13 @@ the user confirms the creation."
     (if bbdb-use-pop-up
         (mime-bbdb/pop-up-bbdb-buffer offer-to-create)
       (let* ((message (get-text-property (point-min) 'mime-view-entity))
     (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))
+            (from (mime-entity-fetch-field message 'From))
             addr)
        (if (or (null from)
             addr)
        (if (or (null from)
-                (null (setq addr (car (mime-read-field 'From message))))
+                (null (setq addr (car (mime-entity-read-field message 'From))))
                 (string-match (bbdb-user-mail-names)
                              (std11-address-string addr)))
                 (string-match (bbdb-user-mail-names)
                              (std11-address-string addr)))
-            (setq from (or (mime-fetch-field 'To message)
+            (setq from (or (mime-entity-fetch-field message 'To)
                           from))
          )
         (if from
                           from))
          )
         (if from
index 89b4655..81b7613 100644 (file)
@@ -1,6 +1,6 @@
 ;;; mime-edit.el --- Simple MIME Composer for GNU Emacs
 
 ;;; mime-edit.el --- Simple MIME Composer for GNU Emacs
 
-;; Copyright (C) 1993,1994,1995,1996,1997,1998 Free Software Foundation, Inc.
+;; Copyright (C) 1993,94,95,96,97,98,99 Free Software Foundation, Inc.
 
 ;; Author: UMEDA Masanobu <umerin@mse.kyutech.ac.jp>
 ;;         MORIOKA Tomohiko <morioka@jaist.ac.jp>
 
 ;; Author: UMEDA Masanobu <umerin@mse.kyutech.ac.jp>
 ;;         MORIOKA Tomohiko <morioka@jaist.ac.jp>
 (require 'sendmail)
 (require 'mail-utils)
 (require 'mel)
 (require 'sendmail)
 (require 'mail-utils)
 (require 'mel)
+(require 'eword-encode) ; eword-encode-field-body
 (require 'mime-view)
 (require 'signature)
 (require 'alist)
 (require 'mime-view)
 (require 'signature)
 (require 'alist)
 
 (eval-and-compile
   (defconst mime-edit-version
 
 (eval-and-compile
   (defconst mime-edit-version
-    (eval-when-compile
-      (concat
-       (mime-product-name mime-user-interface-product) " "
-       (mapconcat #'number-to-string
-                 (mime-product-version mime-user-interface-product) ".")
-       " - \"" (mime-product-code-name mime-user-interface-product) "\"")))
-  )
+    (concat
+     (mime-product-name mime-user-interface-product) " "
+     (mapconcat #'number-to-string
+               (mime-product-version mime-user-interface-product) ".")
+     " - \"" (mime-product-code-name mime-user-interface-product) "\"")))
 
 
 ;;; @ variables
 
 
 ;;; @ variables
@@ -192,7 +191,7 @@ To insert a signature file automatically, call the function
      ("css") ; rfc2318
      ("xml") ; rfc2376
      ("x-latex")
      ("css") ; rfc2318
      ("xml") ; rfc2376
      ("x-latex")
-     ("x-rot13-47-48")
+     ;; ("x-rot13-47-48")
      )
     ("message"
      ("external-body"
      )
     ("message"
      ("external-body"
@@ -221,6 +220,7 @@ To insert a signature file automatically, call the function
     ("application"
      ("octet-stream" ("type" "" "tar" "shar"))
      ("postscript")
     ("application"
      ("octet-stream" ("type" "" "tar" "shar"))
      ("postscript")
+     ("vnd.ms-powerpoint")
      ("x-kiss" ("x-cnf")))
     ("image"
      ("gif")
      ("x-kiss" ("x-cnf")))
     ("image"
      ("gif")
@@ -305,6 +305,11 @@ To insert a signature file automatically, call the function
      "base64"
      "attachment" (("filename" . file))
      )
      "base64"
      "attachment" (("filename" . file))
      )
+    ("\\.ppt$"                         ; MS Power Point
+     "application" "vnd.ms-powerpoint" nil
+     "base64"
+     "attachment" (("filename" . file))
+     )
 
     ("\\.pln$"
      "text"    "plain"         nil
 
     ("\\.pln$"
      "text"    "plain"         nil
@@ -485,6 +490,7 @@ If encoding is nil, it is determined from its contents."
     (cn-big5           8 "base64")
     (big5              8 "base64")
     (shift_jis         8 "base64")
     (cn-big5           8 "base64")
     (big5              8 "base64")
     (shift_jis         8 "base64")
+    (tis-620           8 "base64")
     (iso-2022-jp-2     7 "base64")
     (iso-2022-int-1    7 "base64")
     ))
     (iso-2022-jp-2     7 "base64")
     (iso-2022-int-1    7 "base64")
     ))
@@ -627,20 +633,27 @@ If it is not specified for a major-mode,
          (mime-product-code-name mime-library-product)
          ") "
          (if (featurep 'xemacs)
          (mime-product-code-name mime-library-product)
          ") "
          (if (featurep 'xemacs)
-             (concat (if (featurep 'mule) "MULE")
+             (concat (cond ((featurep 'utf-2000)
+                            (concat "UTF-2000-MULE/" utf-2000-version))
+                           ((featurep 'mule) "MULE"))
                      " XEmacs"
                      " XEmacs"
-                     (if (string-match "\\s +\\\"" emacs-version)
-                         (concat "/"
-                                 (substring emacs-version 0
-                                            (match-beginning 0))
-                                 (if (and (boundp 'xemacs-betaname)
-                                          ;; It does not exist in XEmacs
-                                          ;; versions prior to 20.3.
-                                          xemacs-betaname)
-                                     (concat " " xemacs-betaname)
-                                   "")
-                                 " (" xemacs-codename ") ("
-                                 system-configuration ")")
+                     (if (string-match "^[0-9]+\\(\\.[0-9]+\\)" emacs-version)
+                         (concat
+                          "/"
+                          (substring emacs-version 0 (match-end 0))
+                          (cond ((and (boundp 'xemacs-betaname)
+                                      xemacs-betaname)
+                                 ;; It does not exist in XEmacs
+                                 ;; versions prior to 20.3.
+                                 (concat " " xemacs-betaname))
+                                ((and (boundp 'emacs-patch-level)
+                                      emacs-patch-level)
+                                 ;; It does not exist in FSF Emacs or in
+                                 ;; XEmacs versions earlier than 21.1.1.
+                                 (format " (patch %d)" emacs-patch-level))
+                                (t ""))
+                          " (" xemacs-codename ") ("
+                          system-configuration ")")
                        " (" emacs-version ")"))
            (let ((ver (if (string-match "\\.[0-9]+$" emacs-version)
                           (substring emacs-version 0 (match-beginning 0))
                        " (" emacs-version ")"))
            (let ((ver (if (string-match "\\.[0-9]+$" emacs-version)
                           (substring emacs-version 0 (match-beginning 0))
@@ -675,13 +688,14 @@ inserted into message header.")
 Tspecials means any character that matches with it in header must be quoted.")
 
 (defconst mime-edit-mime-version-value
 Tspecials means any character that matches with it in header must be quoted.")
 
 (defconst mime-edit-mime-version-value
-  (eval-when-compile
-    (concat "1.0 (generated by " mime-edit-version ")"))
+  (concat "1.0 (generated by " mime-edit-version ")")
   "MIME version number.")
 
 (defconst mime-edit-mime-version-field-for-message/partial
   "MIME version number.")
 
 (defconst mime-edit-mime-version-field-for-message/partial
-  (eval-when-compile
-    (concat "MIME-Version: 1.0 (split by " mime-edit-version ")\n"))
+  (concat "MIME-Version:"
+         (eword-encode-field-body
+          (concat " 1.0 (split by " mime-edit-version ")\n")
+          "MIME-Version:"))
   "MIME version field for message/partial.")
 
 
   "MIME version field for message/partial.")
 
 
@@ -2163,8 +2177,7 @@ Content-Transfer-Encoding: 7bit
     (goto-char (point-min))
     (while (re-search-forward regexp nil t)
       (delete-region (match-beginning 0)
     (goto-char (point-min))
     (while (re-search-forward regexp nil t)
       (delete-region (match-beginning 0)
-                    (progn (forward-line 1) (point)))
-      )))
+                    (1+ (std11-field-end))))))
 
 \f
 ;;;
 
 \f
 ;;;
@@ -2572,8 +2585,9 @@ Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n"
 
 (defun mime-edit-quitting-method ()
   "Quitting method for mime-view."
 
 (defun mime-edit-quitting-method ()
   "Quitting method for mime-view."
-  (let ((temp mime-raw-buffer)
-       buf)
+  (let* ((entity (get-text-property (point-min) 'mime-view-entity))
+        (temp (mime-entity-buffer entity))
+        buf)
     (mime-preview-kill-buffer)
     (set-buffer temp)
     (setq buf mime-edit-buffer)
     (mime-preview-kill-buffer)
     (set-buffer temp)
     (setq buf mime-edit-buffer)
@@ -2681,7 +2695,7 @@ Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n"
           "^Content-Transfer-Encoding:" limit t)
          (let ((beg (match-beginning 0))
                (hbeg (match-end 0))
           "^Content-Transfer-Encoding:" limit t)
          (let ((beg (match-beginning 0))
                (hbeg (match-end 0))
-               (end (std11-field-end)))
+               (end (std11-field-end limit)))
            (setq encoding
                  (downcase
                   (eliminate-top-spaces
            (setq encoding
                  (downcase
                   (eliminate-top-spaces
@@ -2699,9 +2713,15 @@ Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n"
                              encoding nil)
                        )))))))
     (if (or encoded (not not-decode-text))
                              encoding nil)
                        )))))))
     (if (or encoded (not not-decode-text))
-       (decode-mime-charset-region (point-min)(point-max)
-                                   (or charset default-mime-charset))
-      )
+       (progn
+         (save-excursion
+           (goto-char (point-min))
+           (while (re-search-forward "\r\n" nil t)
+             (replace-match "\n")
+             ))
+         (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)
     (let ((he (if (re-search-forward "^$" nil t)
                  (match-end 0)
                (point-min)
index 14b3ff9..618c5a6 100644 (file)
@@ -35,6 +35,7 @@ automatically."
   (let* ((id (cdr (assoc "id" situation)))
         (target (cdr (assq 'major-mode situation)))
         (subject-buf (eval (cdr (assq 'summary-buffer-exp situation))))
   (let* ((id (cdr (assoc "id" situation)))
         (target (cdr (assq 'major-mode situation)))
         (subject-buf (eval (cdr (assq 'summary-buffer-exp situation))))
+        (mother (current-buffer))
         subject-id
         (root-dir (expand-file-name
                    (concat "m-prts-" (user-login-name))
         subject-id
         (root-dir (expand-file-name
                    (concat "m-prts-" (user-login-name))
@@ -54,7 +55,7 @@ automatically."
            (not (y-or-n-p "Merge partials?"))
            )
        (mime-store-message/partial-piece entity situation)
            (not (y-or-n-p "Merge partials?"))
            )
        (mime-store-message/partial-piece entity situation)
-      (setq subject-id (mime-read-field 'Subject entity))
+      (setq subject-id (mime-entity-read-field entity 'Subject))
       (if (string-match "[0-9\n]+" subject-id)
          (setq subject-id (substring subject-id 0 (match-beginning 0)))
        )
       (if (string-match "[0-9\n]+" subject-id)
          (setq subject-id (substring subject-id 0 (match-beginning 0)))
        )
@@ -71,8 +72,7 @@ automatically."
                   (situation (mime-entity-situation message))
                   (the-id (cdr (assoc "id" situation))))
              (when (string= the-id id)
                   (situation (mime-entity-situation message))
                   (the-id (cdr (assoc "id" situation))))
              (when (string= the-id id)
-               (save-excursion
-                 (set-buffer (mime-entity-buffer message))
+               (with-current-buffer mother
                  (mime-store-message/partial-piece message situation)
                  )
                (if (file-exists-p full-file)
                  (mime-store-message/partial-piece message situation)
                  )
                (if (file-exists-p full-file)
index 0facca0..fb76f45 100644 (file)
@@ -1,6 +1,6 @@
 ;;; mime-pgp.el --- mime-view internal methods for PGP.
 
 ;;; mime-pgp.el --- mime-view internal methods for PGP.
 
-;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko
+;; Copyright (C) 1995,1996,1997,1998,1999 MORIOKA Tomohiko
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/12/7
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/12/7
@@ -52,9 +52,9 @@
 
 (defun mime-verify-multipart/signed (entity situation)
   "Internal method to verify multipart/signed."
 
 (defun mime-verify-multipart/signed (entity situation)
   "Internal method to verify multipart/signed."
-  (mime-raw-play-entity
+  (mime-play-entity
    (nth 1 (mime-entity-children entity)) ; entity-info of signature
    (nth 1 (mime-entity-children entity)) ; entity-info of signature
-   (cdr (assq 'mode situation)) ; play-mode
+   (list (assq 'mode situation)) ; play-mode
    ))
 
 
    ))
 
 
 ;;; It is based on draft-kazu-pgp-mime-00.txt (PGP-kazu).
 
 (defun mime-view-application/pgp (entity situation)
 ;;; It is based on draft-kazu-pgp-mime-00.txt (PGP-kazu).
 
 (defun mime-view-application/pgp (entity situation)
-  (let* ((p-win (or (get-buffer-window mime-preview-buffer)
+  (let* ((p-win (or (get-buffer-window (current-buffer))
                    (get-largest-window)))
         (new-name
          (format "%s-%s" (buffer-name) (mime-entity-number entity)))
                    (get-largest-window)))
         (new-name
          (format "%s-%s" (buffer-name) (mime-entity-number entity)))
-        (the-buf (current-buffer))
-        (mother mime-preview-buffer)
+        (mother (current-buffer))
         representation-type)
     (set-buffer (get-buffer-create new-name))
     (erase-buffer)
         representation-type)
     (set-buffer (get-buffer-create new-name))
     (erase-buffer)
-    (insert-buffer-substring
-     the-buf (mime-entity-point-min entity) (mime-entity-point-max entity))
+    (mime-insert-entity entity)
     (cond ((progn
             (goto-char (point-min))
             (re-search-forward "^-+BEGIN PGP SIGNED MESSAGE-+$" nil t))
     (cond ((progn
             (goto-char (point-min))
             (re-search-forward "^-+BEGIN PGP SIGNED MESSAGE-+$" nil t))
@@ -132,7 +130,7 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
   '((en . "Key matching expected Key ID \\(\\S +\\) not found"))
   "Alist of language vs regexp to detect ``Key expected''.")
 
   '((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)
+(defun mime-pgp-check-signature (output-buffer sig-file orig-file)
   (save-excursion
     (set-buffer output-buffer)
     (erase-buffer))
   (save-excursion
     (set-buffer output-buffer)
     (erase-buffer))
@@ -140,7 +138,7 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
         (status (call-process-region (point-min)(point-max)
                                      mime-pgp-command
                                      nil output-buffer nil
         (status (call-process-region (point-min)(point-max)
                                      mime-pgp-command
                                      nil output-buffer nil
-                                     orig-file (format "+language=%s" lang)))
+                                     sig-file orig-file (format "+language=%s" lang)))
         (regexp (cdr (assq lang mime-pgp-good-signature-regexp-alist))))
     (if (= status 0)
        (save-excursion
         (regexp (cdr (assq lang mime-pgp-good-signature-regexp-alist))))
     (if (= status 0)
        (save-excursion
@@ -156,10 +154,7 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
 
 (defun mime-verify-application/pgp-signature (entity situation)
   "Internal method to check PGP/MIME 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))
+  (let* ((entity-node-id (mime-entity-node-id entity))
         (mother (mime-entity-parent entity))
         (knum (car entity-node-id))
         (onum (if (> knum 0)
         (mother (mime-entity-parent entity))
         (knum (car entity-node-id))
         (onum (if (> knum 0)
@@ -172,12 +167,8 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
         )
     (mime-write-entity orig-entity orig-file)
     (save-excursion (mime-show-echo-buffer))
         )
     (mime-write-entity 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)
+    (mime-write-entity-content entity sig-file)
+    (or (mime-pgp-check-signature mime-echo-buffer-name sig-file orig-file)
        (let (pgp-id)
          (save-excursion
            (set-buffer mime-echo-buffer-name)
        (let (pgp-id)
          (save-excursion
            (set-buffer mime-echo-buffer-name)
@@ -234,7 +225,7 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
 (defun mime-add-application/pgp-keys (entity situation)
   (let* ((start (mime-entity-point-min entity))
         (end (mime-entity-point-max entity))
 (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))
+        (entity-number (mime-entity-number entity))
         (new-name (format "%s-%s" (buffer-name) entity-number))
         (encoding (cdr (assq 'encoding situation)))
         str)
         (new-name (format "%s-%s" (buffer-name) entity-number))
         (encoding (cdr (assq 'encoding situation)))
         str)
index 65949f3..b4a03a2 100644 (file)
 (add-hook 'kill-emacs-hook 'mime-save-acting-situation-examples)
 
 (defun mime-reduce-acting-situation-examples ()
 (add-hook 'kill-emacs-hook 'mime-save-acting-situation-examples)
 
 (defun mime-reduce-acting-situation-examples ()
-  (let* ((rest mime-acting-situation-example-list)
-        (min-example (car rest))
-        (min-score (cdr min-example)))
-    (while rest
-      (let* ((example (car rest))
-            (score (cdr example)))
-       (cond ((< score min-score)
-              (setq min-score score
-                    min-example example)
-              )
-             ((= score min-score)
-              (if (<= (length (car example))(length (car min-example)))
-                  (setq min-example example)
-                ))
-             ))
-      (setq rest (cdr rest)))
-    (setq mime-acting-situation-example-list
-         (delq min-example mime-acting-situation-example-list))
-    (setq min-example (car min-example))
-    (let ((examples mime-acting-situation-example-list)
-         (max-score 0)
-         max-examples)
-      (while examples
-       (let* ((ret (mime-compare-situation-with-example min-example
-                                                        (caar examples)))
-              (ret-score (car ret)))
-         (cond ((> ret-score max-score)
-                (setq max-score ret-score
-                      max-examples (list (cdr ret)))
+  (let ((len (length mime-acting-situation-example-list))
+       i ir ic j jr jc ret
+       dest d-i d-j
+       (max-sim 0) sim
+       min-det-ret det-ret
+       min-det-org det-org
+       min-freq freq)
+    (setq i 0
+         ir mime-acting-situation-example-list)
+    (while (< i len)
+      (setq ic (car ir)
+           j 0
+           jr mime-acting-situation-example-list)
+      (while (< j len)
+       (unless (= i j)
+         (setq jc (car jr))
+         (setq ret (mime-compare-situation-with-example (car ic)(car jc))
+               sim (car ret)
+               det-ret (+ (length (car ic))(length (car jc)))
+               det-org (length (cdr ret))
+               freq (+ (cdr ic)(cdr jc)))
+         (cond ((< max-sim sim)
+                (setq max-sim sim
+                      min-det-ret det-ret
+                      min-det-org det-org
+                      min-freq freq
+                      d-i i
+                      d-j j
+                      dest (cons (cdr ret) freq))
                 )
                 )
-               ((= ret-score max-score)
-                (setq max-examples (cons (cdr ret) max-examples))
-                )))
-       (setq examples (cdr examples)))
-      (while max-examples
-       (let* ((example (car max-examples))
-              (cell (assoc example mime-acting-situation-example-list)))
-         (if cell
-             (setcdr cell (1+ (cdr cell)))
-           (setq mime-acting-situation-example-list
-                 (cons (cons example 0)
-                       mime-acting-situation-example-list))
-           ))
-       (setq max-examples (cdr max-examples))
-       ))))
+               ((= max-sim sim)
+                (cond ((> min-det-ret det-ret)
+                       (setq min-det-ret det-ret
+                             min-det-org det-org
+                             min-freq freq
+                             d-i i
+                             d-j j
+                             dest (cons (cdr ret) freq))
+                       )
+                      ((= min-det-ret det-ret)
+                       (cond ((> min-det-org det-org)
+                              (setq min-det-org det-org
+                                    min-freq freq
+                                    d-i i
+                                    d-j j
+                                    dest (cons (cdr ret) freq))
+                              )
+                             ((= min-det-org det-org)
+                              (cond ((> min-freq freq)
+                                     (setq min-freq freq
+                                           d-i i
+                                           d-j j
+                                           dest (cons (cdr ret) freq))
+                                     ))
+                              ))
+                       ))
+                ))
+         )
+       (setq jr (cdr jr)
+             j (1+ j)))
+      (setq ir (cdr ir)
+           i (1+ i)))
+    (if (> d-i d-j)
+       (setq i d-i
+             d-i d-j
+             d-j i))
+    (setq jr (nthcdr (1- d-j) mime-acting-situation-example-list))
+    (setcdr jr (cddr jr))
+    (if (= d-i 0)
+       (setq mime-acting-situation-example-list
+             (cdr mime-acting-situation-example-list))
+      (setq ir (nthcdr (1- d-i) mime-acting-situation-example-list))
+      (setcdr ir (cddr ir))
+      )
+    (if (setq ir (assoc (car dest) mime-acting-situation-example-list))
+       (setcdr ir (+ (cdr ir)(cdr dest)))
+      (setq mime-acting-situation-example-list
+           (cons dest mime-acting-situation-example-list))
+      )))
 
 
 ;;; @ content decoder
 ;;;
 
 
 
 ;;; @ content decoder
 ;;;
 
-(defvar mime-preview-after-decoded-position nil)
-
+;;;###autoload
 (defun mime-preview-play-current-entity (&optional ignore-examples mode)
   "Play current entity.
 It decodes current entity to call internal or external method.  The
 (defun mime-preview-play-current-entity (&optional ignore-examples mode)
   "Play current entity.
 It decodes current entity to call internal or external method.  The
@@ -126,15 +159,21 @@ If MODE is specified, play as it.  Default MODE is \"play\"."
   (interactive "P")
   (let ((entity (get-text-property (point) 'mime-view-entity)))
     (if entity
   (interactive "P")
   (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 (or mode "play") nil ignore-examples)
-         (when (eq (current-buffer) raw-buffer)
-           (set-buffer the-buf)
-           (goto-char mime-preview-after-decoded-position)
-           )))))
+       (let ((situation
+              (get-text-property (point) 'mime-view-situation)))
+         (or mode
+             (setq mode "play"))
+         (setq situation 
+               (if (assq 'mode situation)
+                   (put-alist 'mode mode (copy-alist situation))
+                 (cons (cons 'mode mode)
+                       situation)))
+         (if ignore-examples
+             (setq situation
+                   (cons (cons 'ignore-examples ignore-examples)
+                         situation)))
+         (mime-play-entity entity situation)
+         ))))
 
 (defun mime-sort-situation (situation)
   (sort situation
 
 (defun mime-sort-situation (situation)
   (sort situation
@@ -202,29 +241,21 @@ If MODE is specified, play as it.  Default MODE is \"play\"."
     (cons match example)
     ))
 
     (cons match example)
     ))
 
-(defun mime-raw-play-entity (entity &optional mode situation ignore-examples
-                                   ignored-method)
+;;;###autoload
+(defun mime-play-entity (entity &optional situation ignored-method)
   "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)
   "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))
-      )
-    (if ignore-examples
-       (or (assq 'ignore-examples situation)
-           (setq situation
-                 (cons (cons 'ignore-examples ignore-examples) situation)))
-      )
+    (in-calist-package 'mime-view)
     (setq ret
          (mime-delq-null-situation
     (setq ret
          (mime-delq-null-situation
-          (ctree-find-calist mime-acting-condition situation
+          (ctree-find-calist mime-acting-condition
+                             (mime-entity-situation entity situation)
                              mime-view-find-every-acting-situation)
           'method ignored-method))
                              mime-view-find-every-acting-situation)
           'method ignored-method))
-    (or ignore-examples
+    (or (assq 'ignore-examples situation)
        (if (cdr ret)
            (let ((rest ret)
                  (max-score 0)
        (if (cdr ret)
            (let ((rest ret)
                  (max-score 0)
@@ -303,7 +334,11 @@ specified, play as it.  Default MODE is \"play\"."
           ;;  )
          (t
           (mime-show-echo-buffer "No method are specified for %s\n"
           ;;  )
          (t
           (mime-show-echo-buffer "No method are specified for %s\n"
-                                 (mime-entity-type/subtype entity))
+                                 (mime-type/subtype-string
+                                  (cdr (assq 'type situation))
+                                  (cdr (assq 'subtype situation))))
+          (if (y-or-n-p "Do you want to save current entity to disk?")
+              (mime-save-content entity situation))
           ))
     ))
 
           ))
     ))
 
@@ -314,34 +349,28 @@ specified, play as it.  Default MODE is \"play\"."
 (defvar mime-mailcap-method-filename-alist nil)
 
 (defun mime-activate-mailcap-method (entity situation)
 (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 (and name (not (string= name "")))
-                   (expand-file-name name temporary-file-directory)
-                 (make-temp-name
-                  (expand-file-name "EMI" temporary-file-directory))
-                 ))
-          (mime-write-entity-content entity name)
-         (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)
-           )
-         )))))
+  (let ((method (cdr (assoc 'method situation)))
+       (name (mime-entity-safe-filename entity)))
+    (setq name
+         (if (and name (not (string= name "")))
+             (expand-file-name name temporary-file-directory)
+           (make-temp-name
+            (expand-file-name "EMI" temporary-file-directory))
+           ))
+    (mime-write-entity-content entity name)
+    (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))))
 
 (defun mime-mailcap-method-sentinel (process event)
   (let ((file (cdr (assq process mime-mailcap-method-filename-alist))))
@@ -376,7 +405,8 @@ window.")
                   (condition-case nil
                       (setq win (get-buffer-window bbdb-buffer-name))
                     (error nil)))
                   (condition-case nil
                       (setq win (get-buffer-window bbdb-buffer-name))
                     (error nil)))
-       (select-window (get-buffer-window mime-preview-buffer))
+       (select-window (get-buffer-window (or mime-preview-buffer
+                                             (current-buffer))))
        (setq win (split-window-vertically
                   (- (window-height)
                      (if (functionp mime-echo-window-height)
        (setq win (split-window-vertically
                   (- (window-height)
                      (if (functionp mime-echo-window-height)
@@ -389,8 +419,9 @@ window.")
     (select-window win)
     (goto-char (point-max))
     (if forms
     (select-window win)
     (goto-char (point-max))
     (if forms
-       (insert (apply (function format) forms))
-      )
+       (let ((buffer-read-only nil))
+         (insert (apply (function format) forms))
+         ))
     (select-window the-win)
     ))
 
     (select-window the-win)
     ))
 
@@ -412,8 +443,8 @@ window.")
   (let ((filename
         (or (mime-entity-filename entity)
             (let ((subj
   (let ((filename
         (or (mime-entity-filename entity)
             (let ((subj
-                   (or (mime-read-field 'Content-Description entity)
-                       (mime-read-field 'Subject entity))))
+                   (or (mime-entity-read-field entity 'Content-Description)
+                       (mime-entity-read-field entity 'Subject))))
               (if (and subj
                        (or (string-match mime-view-file-name-regexp-1 subj)
                            (string-match mime-view-file-name-regexp-2 subj)))
               (if (and subj
                        (or (string-match mime-view-file-name-regexp-1 subj)
                            (string-match mime-view-file-name-regexp-2 subj)))
@@ -482,17 +513,14 @@ SUBTYPE is symbol to indicate subtype of media-type.")
                          )
                      t)))
        (setq rest (cdr rest))))
                          )
                      t)))
        (setq rest (cdr rest))))
-    (if type
-       (mime-raw-play-entity
-        entity nil
-        (put-alist 'type type
-                   (put-alist 'subtype subtype
-                              (del-alist 'method
-                                         (copy-alist situation))))
-        (cdr (assq 'ignore-examples situation))
-        'mime-detect-content)
-      ))
-  )
+    (setq situation (del-alist 'method (copy-alist situation)))
+    (mime-play-entity entity
+                     (if type
+                         (put-alist 'type type
+                                    (put-alist 'subtype subtype
+                                               situation))
+                       situation)
+                     'mime-detect-content)))
 
 
 ;;; @ mail/news message
 
 
 ;;; @ mail/news message
@@ -501,10 +529,11 @@ SUBTYPE is symbol to indicate subtype of media-type.")
 (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'."
 (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)
+  (let ((raw-buffer (mime-entity-buffer
+                    (get-text-property (point-min) 'mime-view-entity)))
+       (mother mime-mother-buffer)
+       (win-conf mime-preview-original-window-configuration))
+    (kill-buffer raw-buffer)
     (mime-preview-kill-buffer)
     (set-window-configuration win-conf)
     (pop-to-buffer mother)
     (mime-preview-kill-buffer)
     (set-window-configuration win-conf)
     (pop-to-buffer mother)
@@ -513,25 +542,25 @@ It is registered to variable `mime-preview-quitting-method-alist'."
 (defun mime-view-message/rfc822 (entity situation)
   (let* ((new-name
          (format "%s-%s" (buffer-name) (mime-entity-number entity)))
 (defun mime-view-message/rfc822 (entity situation)
   (let* ((new-name
          (format "%s-%s" (buffer-name) (mime-entity-number entity)))
-        (mother mime-preview-buffer)
-        (children (car (mime-entity-children entity))))
-    (set-buffer (get-buffer-create new-name))
-    (erase-buffer)
-    (insert-buffer-substring (mime-entity-buffer children)
-                            (mime-entity-point-min children)
-                            (mime-entity-point-max children))
-    (setq mime-message-structure children)
-    (setq major-mode 'mime-show-message-mode)
-    (mime-view-buffer (current-buffer) nil mother
-                     nil (if (mime-entity-cooked-p entity) 'cooked))
-    ))
+        (mother (current-buffer))
+        (children (car (mime-entity-children entity)))
+        (preview-buffer
+         (mime-display-message
+          children new-name mother nil
+          (cdr (assq 'major-mode
+                     (get-text-property (point) 'mime-view-situation))))))
+    (or (get-buffer-window preview-buffer)
+       (let ((m-win (get-buffer-window mother)))
+         (if m-win
+             (set-window-buffer m-win preview-buffer)
+           (switch-to-buffer preview-buffer)
+           )))))
 
 
 ;;; @ message/partial
 ;;;
 
 (defun mime-store-message/partial-piece (entity cal)
 
 
 ;;; @ message/partial
 ;;;
 
 (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)) temporary-file-directory))
   (let* ((root-dir
          (expand-file-name
           (concat "m-prts-" (user-login-name)) temporary-file-directory))
@@ -539,33 +568,28 @@ It is registered to variable `mime-preview-quitting-method-alist'."
         (number (cdr (assoc "number" cal)))
         (total (cdr (assoc "total" cal)))
         file
         (number (cdr (assoc "number" cal)))
         (total (cdr (assoc "total" cal)))
         file
-        (mother mime-preview-buffer)
-        )
+        (mother (current-buffer)))
     (or (file-exists-p root-dir)
     (or (file-exists-p root-dir)
-       (make-directory 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)
     (setq id (replace-as-filename id))
     (setq root-dir (concat root-dir "/" id))
     (or (file-exists-p root-dir)
-       (make-directory 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)))
     (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)))
-             )
+             pbuf)
          (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-buffer (current-buffer) nil mother)
          (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-buffer (current-buffer) nil mother)
+           (setq pbuf (current-buffer))
            )
            )
-         (set-window-buffer pwin
-                            (save-excursion
-                              (set-buffer full-buf)
-                              mime-preview-buffer))
+         (set-window-buffer pwin pbuf)
          (select-window pwin)
          )
       (setq file (concat root-dir "/" number))
          (select-window pwin)
          )
       (setq file (concat root-dir "/" number))
@@ -597,7 +621,9 @@ It is registered to variable `mime-preview-quitting-method-alist'."
                         (kill-buffer (current-buffer))
                         )))
                )))
                         (kill-buffer (current-buffer))
                         )))
                )))
-      (if (and total (> total 0))
+      (if (and total (> total 0)
+              (>= (length (directory-files root-dir nil "^[0-9]+$" t))
+                  total))
          (catch 'tag
            (save-excursion
              (set-buffer (get-buffer-create mime-temp-buffer-name))
          (catch 'tag
            (save-excursion
              (set-buffer (get-buffer-create mime-temp-buffer-name))
@@ -628,15 +654,11 @@ It is registered to variable `mime-preview-quitting-method-alist'."
                  (and (file-exists-p file)
                       (delete-file file)
                       ))
                  (and (file-exists-p file)
                       (delete-file file)
                       ))
-               (save-window-excursion
-                 (setq major-mode 'mime-show-message-mode)
-                 (mime-view-buffer (current-buffer) nil mother)
-                 )
                (let ((pwin (or (get-buffer-window mother)
                                (get-largest-window)))
                (let ((pwin (or (get-buffer-window mother)
                                (get-largest-window)))
-                     (pbuf (save-excursion
-                             (set-buffer full-buf)
-                             mime-preview-buffer)))
+                     (pbuf (mime-display-message
+                            (mime-open-entity 'buffer (current-buffer))
+                            nil mother nil 'mime-show-message-mode)))
                  (set-window-buffer pwin pbuf)
                  (select-window pwin)
                  )))))
                  (set-window-buffer pwin pbuf)
                  (select-window pwin)
                  )))))
@@ -683,23 +705,21 @@ It is registered to variable `mime-preview-quitting-method-alist'."
 
 (defun mime-view-caesar (entity situation)
   "Internal method for mime-view to display ROT13-47-48 message."
 
 (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)
+  (let ((buf (get-buffer-create
+             (format "%s-%s" (buffer-name) (mime-entity-number entity)))))
+    (with-current-buffer buf
+      (setq buffer-read-only nil)
+      (erase-buffer)
+      (mime-insert-text-content entity)
+      (mule-caesar-region (point-min) (point-max))
+      (set-buffer-modified-p nil)
       )
       )
-    (setq buffer-read-only nil)
-    (erase-buffer)
-    (mime-insert-text-content entity)
-    (mule-caesar-region (point-min) (point-max))
-    (set-buffer-modified-p nil)
-    (set-buffer mother)
-    (view-buffer new-name)
+    (let ((win (get-buffer-window (current-buffer))))
+      (or (eq (selected-window) win)
+         (select-window (or win (get-largest-window)))
+         ))
+    (view-buffer buf)
+    (goto-char (point-min))
     ))
 
 
     ))
 
 
index 763b20e..119d972 100644 (file)
 ;;;
 
 (defconst mime-view-version
 ;;;
 
 (defconst mime-view-version
-  (eval-when-compile
-    (concat (mime-product-name mime-user-interface-product) " MIME-View "
-           (mapconcat #'number-to-string
-                      (mime-product-version mime-user-interface-product) ".")
-           " (" (mime-product-code-name mime-user-interface-product) ")")))
+  (concat (mime-product-name mime-user-interface-product) " MIME-View "
+         (mapconcat #'number-to-string
+                    (mime-product-version mime-user-interface-product) ".")
+         " (" (mime-product-code-name mime-user-interface-product) ")"))
 
 
 ;;; @ variables
 
 
 ;;; @ variables
   :group 'mime-view
   :type 'file)
 
   :group 'mime-view
   :type 'file)
 
+(defcustom mime-preview-move-scroll nil
+  "*Decides whether to scroll when moving to next entity.
+When t, scroll the buffer. Non-nil but not t means scroll when
+the next entity is within next-screen-context-lines from top or
+buttom. Nil means don't scroll at all."
+  :group 'mime-view
+  :type '(choice (const :tag "Off" nil)
+                (const :tag "On" t)
+                (sexp :tag "Situation" 1)))
 
 ;;; @ in raw-buffer (representation space)
 ;;;
 
 ;;; @ in raw-buffer (representation space)
 ;;;
@@ -83,24 +91,25 @@ major-mode or t.  t means default.  REPRESENTATION-TYPE must be
 `binary' or `cooked'.")
 
 
 `binary' or `cooked'.")
 
 
-(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))))
+;; (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))))
+;; (make-obsolete 'mime-raw-find-entity-from-point "don't use it.")
 
 
 ;;; @ in preview-buffer (presentation space)
 
 
 ;;; @ in preview-buffer (presentation space)
@@ -112,15 +121,15 @@ 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)
 
 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-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)
 
 
 (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)
+(defun mime-preview-original-major-mode (&optional recursive point)
   "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
   "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
@@ -130,79 +139,126 @@ mother-buffer."
        (set-buffer mime-mother-buffer)
        (mime-preview-original-major-mode recursive)
        )
        (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)))
+    (cdr (assq 'major-mode
+              (get-text-property (or point
+                                     (if (> (point) (buffer-size))
+                                         (max (1- (point-max)) (point-min))
+                                       (point)))
+                                 'mime-view-situation)))))
 
 
 ;;; @ entity information
 ;;;
 
 
 
 ;;; @ entity information
 ;;;
 
-(defun mime-entity-situation (entity)
+(defun mime-entity-situation (entity &optional situation)
   "Return situation of 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)))
-         ))
-
+  (let (rest param name)
+    ;; Content-Type
+    (unless (assq 'type situation)
+      (setq rest (or (mime-entity-content-type entity)
+                    (make-mime-content-type 'text 'plain))
+           situation (cons (car rest) situation)
+           rest (cdr rest))
+      )
+    (unless (assq 'subtype situation)
+      (or rest
+         (setq rest (or (cdr (mime-entity-content-type entity))
+                        '((subtype . plain)))))
+      (setq situation (cons (car rest) situation)
+           rest (cdr rest))
+      )
+    (while rest
+      (setq param (car rest))
+      (or (assoc (car param) situation)
+         (setq situation (cons param situation)))
+      (setq rest (cdr rest)))
+    
+    ;; Content-Disposition
+    (setq rest nil)
+    (unless (assq 'disposition-type situation)
+      (setq rest (mime-entity-content-disposition entity))
+      (if rest
+         (setq situation (cons (cons 'disposition-type
+                                     (mime-content-disposition-type rest))
+                               situation)
+               rest (mime-content-disposition-parameters rest))
+       ))
+    (while rest
+      (setq param (car rest)
+           name (car param))
+      (if (cond ((string= name "filename")
+                (if (assq 'filename situation)
+                    nil
+                  (setq name 'filename)))
+               ((string= name "creation-date")
+                (if (assq 'creation-date situation)
+                    nil
+                  (setq name 'creation-date)))
+               ((string= name "modification-date")
+                (if (assq 'modification-date situation)
+                    nil
+                  (setq name 'modification-date)))
+               ((string= name "read-date")
+                (if (assq 'read-date situation)
+                    nil
+                  (setq name 'read-date)))
+               ((string= name "size")
+                (if (assq 'size situation)
+                    nil
+                  (setq name 'size)))
+               (t (setq name (cons 'disposition name))
+                  (if (assoc name situation)
+                      nil
+                    name)))
+         (setq situation
+               (cons (cons name (cdr param))
+                     situation)))
+      (setq rest (cdr rest)))
+    
+    ;; Content-Transfer-Encoding
+    (or (assq 'encoding situation)
+       (setq situation
+             (cons (cons 'encoding (or (mime-entity-encoding entity)
+                                       "7bit"))
+                   situation)))
+    
+    situation))
 
 (defun mime-view-entity-title (entity)
 
 (defun mime-view-entity-title (entity)
-  (or (mime-read-field 'Content-Description entity)
-      (mime-read-field 'Subject entity)
+  (or (mime-entity-read-field entity 'Content-Description)
+      (mime-entity-read-field entity 'Subject)
       (mime-entity-filename 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))
+;; (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)))
+
+;; (make-obsolete 'mime-raw-point-to-entity-node-id "don't use it.")
+
+;; (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)))
+
+;; (make-obsolete 'mime-raw-point-to-entity-number "don't use it.")
+
+;; (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
 
 
 ;;; @ presentation of preview
@@ -319,6 +375,8 @@ Each elements are regexp of field-name.")
 ;;; @@@ predicate function
 ;;;
 
 ;;; @@@ predicate function
 ;;;
 
+(in-calist-package 'mime-view)
+
 (defun mime-calist::field-match-method-as-default-rule (calist
                                                        field-type field-value)
   (let ((s-field (assq field-type calist)))
 (defun mime-calist::field-match-method-as-default-rule (calist
                                                        field-type field-value)
   (let ((s-field (assq field-type calist)))
@@ -485,8 +543,12 @@ Each elements are regexp of field-name.")
 
 (defun mime-display-multipart/mixed (entity situation)
   (let ((children (mime-entity-children entity))
 
 (defun mime-display-multipart/mixed (entity situation)
   (let ((children (mime-entity-children entity))
+       (original-major-mode-cell (assq 'major-mode situation))
        (default-situation
          (cdr (assq 'childrens-situation situation))))
        (default-situation
          (cdr (assq 'childrens-situation situation))))
+    (if original-major-mode-cell
+       (setq default-situation
+             (cons original-major-mode-cell default-situation)))
     (while children
       (mime-display-entity (car children) nil default-situation)
       (setq children (cdr children))
     (while children
       (mime-display-entity (car children) nil default-situation)
       (setq children (cdr children))
@@ -510,12 +572,17 @@ MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t.  t means default."
 
 (defun mime-display-multipart/alternative (entity situation)
   (let* ((children (mime-entity-children entity))
 
 (defun mime-display-multipart/alternative (entity situation)
   (let* ((children (mime-entity-children entity))
+        (original-major-mode-cell (assq 'major-mode situation))
         (default-situation
           (cdr (assq 'childrens-situation situation)))
         (i 0)
         (p 0)
         (max-score 0)
         (default-situation
           (cdr (assq 'childrens-situation situation)))
         (i 0)
         (p 0)
         (max-score 0)
-        (situations
+        situations)
+    (if original-major-mode-cell
+       (setq default-situation
+             (cons original-major-mode-cell default-situation)))
+    (setq situations
          (mapcar (function
                   (lambda (child)
                     (let ((situation
          (mapcar (function
                   (lambda (child)
                     (let ((situation
@@ -546,7 +613,7 @@ MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t.  t means default."
                       (setq i (1+ i))
                       situation)
                     ))
                       (setq i (1+ i))
                       situation)
                     ))
-                 children)))
+                 children))
     (setq i 0)
     (while children
       (let ((child (car children))
     (setq i 0)
     (while children
       (let ((child (car children))
@@ -684,11 +751,9 @@ MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t.  t means default."
                                   default-situation preview-buffer)
   (or preview-buffer
       (setq preview-buffer (current-buffer)))
                                   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)
+  (let* (e nb ne nhb nbb)
+    (mime-goto-header-start-point entity)
+    (in-calist-package 'mime-view)
     (or situation
        (setq situation
              (or (ctree-match-calist mime-preview-condition
     (or situation
        (setq situation
              (or (ctree-match-calist mime-preview-condition
@@ -701,7 +766,8 @@ MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t.  t means default."
           (eq (cdr (assq 'header situation)) 'visible))
          (header-presentation-method
           (or (cdr (assq 'header-presentation-method situation))
           (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))))
+              (cdr (assq (cdr (assq 'major-mode situation))
+                         mime-header-presentation-method-alist))))
          (body-presentation-method
           (cdr (assq 'body-presentation-method situation)))
          (children (mime-entity-children entity)))
          (body-presentation-method
           (cdr (assq 'body-presentation-method situation)))
          (children (mime-entity-children entity)))
@@ -713,15 +779,18 @@ MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t.  t means default."
              (mime-view-insert-entity-button entity)
            ))
       (when header-is-visible
              (mime-view-insert-entity-button entity)
            ))
       (when header-is-visible
+       (setq nhb (point))
        (if header-presentation-method
            (funcall header-presentation-method entity situation)
          (mime-insert-header entity
                              mime-view-ignored-field-list
                              mime-view-visible-field-list))
        (if header-presentation-method
            (funcall header-presentation-method entity situation)
          (mime-insert-header entity
                              mime-view-ignored-field-list
                              mime-view-visible-field-list))
+       (run-hooks 'mime-display-header-hook)
+       (put-text-property nhb (point-max) 'mime-view-entity-header entity)
        (goto-char (point-max))
        (insert "\n")
        (goto-char (point-max))
        (insert "\n")
-       (run-hooks 'mime-display-header-hook)
        )
        )
+      (setq nbb (point))
       (cond (children)
             ((functionp body-presentation-method)
             (funcall body-presentation-method entity situation)
       (cond (children)
             ((functionp body-presentation-method)
             (funcall body-presentation-method entity situation)
@@ -740,6 +809,8 @@ MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t.  t means default."
       (setq ne (point-max))
       (widen)
       (put-text-property nb ne 'mime-view-entity entity)
       (setq ne (point-max))
       (widen)
       (put-text-property nb ne 'mime-view-entity entity)
+      (put-text-property nb ne 'mime-view-situation situation)
+      (put-text-property nbb ne 'mime-view-entity-body entity)
       (goto-char ne)
       (if children
          (if (functionp body-presentation-method)
       (goto-char ne)
       (if children
          (if (functionp body-presentation-method)
@@ -884,21 +955,34 @@ MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t.  t means default."
 
 (defvar mime-view-redisplay nil)
 
 
 (defvar mime-view-redisplay nil)
 
+;;;###autoload
 (defun mime-display-message (message &optional preview-buffer
 (defun mime-display-message (message &optional preview-buffer
-                                    mother default-keymap-or-function)
+                                    mother default-keymap-or-function
+                                    original-major-mode)
+  "View MESSAGE in MIME-View mode.
+
+Optional argument PREVIEW-BUFFER specifies the buffer of the
+presentation.  It must be either nil or a name of preview buffer.
+
+Optional argument MOTHER specifies mother-buffer of the preview-buffer.
+
+Optional argument DEFAULT-KEYMAP-OR-FUNCTION is nil, keymap or
+function.  If it is a keymap, keymap of MIME-View mode will be added
+to it.  If it is a function, it will be bound as default binding of
+keymap of MIME-View mode."
   (mime-maybe-hide-echo-buffer)
   (mime-maybe-hide-echo-buffer)
-  (let ((win-conf (current-window-configuration))
-       (raw-buffer (mime-entity-buffer message)))
+  (let ((win-conf (current-window-configuration)))
     (or preview-buffer
        (setq preview-buffer
     (or preview-buffer
        (setq preview-buffer
-             (concat "*Preview-" (buffer-name raw-buffer) "*")))
-    (set-buffer raw-buffer)
-    (setq mime-preview-buffer preview-buffer)
+             (concat "*Preview-" (mime-entity-name message) "*")))
+    (or original-major-mode
+       (setq original-major-mode
+             (with-current-buffer (mime-entity-header-buffer message)
+               major-mode)))
     (let ((inhibit-read-only t))
       (set-buffer (get-buffer-create preview-buffer))
       (widen)
       (erase-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)
        )
       (if mother
          (setq mime-mother-buffer mother)
        )
@@ -906,8 +990,9 @@ MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t.  t means default."
       (setq major-mode 'mime-view-mode)
       (setq mode-name "MIME-View")
       (mime-display-entity message nil
       (setq major-mode 'mime-view-mode)
       (setq mode-name "MIME-View")
       (mime-display-entity message nil
-                          '((entity-button . invisible)
-                            (header . visible))
+                          `((entity-button . invisible)
+                            (header . visible)
+                            (major-mode . ,original-major-mode))
                           preview-buffer)
       (mime-view-define-keymap default-keymap-or-function)
       (let ((point
                           preview-buffer)
       (mime-view-define-keymap default-keymap-or-function)
       (let ((point
@@ -920,17 +1005,9 @@ MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t.  t means default."
       (run-hooks 'mime-view-mode-hook)
       (set-buffer-modified-p nil)
       (setq buffer-read-only 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)
-             (let ((m-win (and mother (get-buffer-window mother))))
-               (if m-win
-                   (set-window-buffer m-win preview-buffer)
-                 (switch-to-buffer preview-buffer)
-                 )))))
-      )))
+      preview-buffer)))
 
 
+;;;###autoload
 (defun mime-view-buffer (&optional raw-buffer preview-buffer mother
                                   default-keymap-or-function
                                   representation-type)
 (defun mime-view-buffer (&optional raw-buffer preview-buffer mother
                                   default-keymap-or-function
                                   representation-type)
@@ -957,9 +1034,18 @@ message.  It must be nil, `binary' or `cooked'.  If it is nil,
   (if (eq representation-type 'binary)
       (setq representation-type 'buffer)
     )
   (if (eq representation-type 'binary)
       (setq representation-type 'buffer)
     )
-  (mime-display-message
-   (mime-open-entity representation-type raw-buffer)
-   preview-buffer mother default-keymap-or-function))
+  (setq preview-buffer (mime-display-message
+                       (mime-open-entity representation-type raw-buffer)
+                       preview-buffer mother default-keymap-or-function))
+  (or (get-buffer-window preview-buffer)
+      (let ((r-win (get-buffer-window raw-buffer)))
+       (if r-win
+           (set-window-buffer r-win preview-buffer)
+         (let ((m-win (and mother (get-buffer-window mother))))
+           (if m-win
+               (set-window-buffer m-win preview-buffer)
+             (switch-to-buffer preview-buffer)
+             ))))))
 
 (defun mime-view-mode (&optional mother ctl encoding
                                 raw-buffer preview-buffer
 
 (defun mime-view-mode (&optional mother ctl encoding
                                 raw-buffer preview-buffer
@@ -1051,6 +1137,7 @@ It calls following-method selected from variable
     (let* ((p-beg
            (previous-single-property-change (point) 'mime-view-entity))
           p-end
     (let* ((p-beg
            (previous-single-property-change (point) 'mime-view-entity))
           p-end
+          ph-end
           (entity-node-id (mime-entity-node-id entity))
           (len (length entity-node-id))
           )
           (entity-node-id (mime-entity-node-id entity))
           (len (length entity-node-id))
           )
@@ -1094,63 +1181,79 @@ It calls following-method selected from variable
                 (setq p-end (point-max))
                 ))
             ))
                 (setq p-end (point-max))
                 ))
             ))
+      (setq ph-end
+           (previous-single-property-change p-end 'mime-view-entity-header))
+      (if (or (null ph-end)
+             (< ph-end p-beg))
+         (setq ph-end p-beg)
+       )
       (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))
       (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)
             fields)
        (save-excursion
          (set-buffer (setq new-buf (get-buffer-create new-name)))
          (erase-buffer)
-         (insert-buffer-substring the-buf p-beg p-end)
+         (insert-buffer-substring the-buf ph-end p-end)
+         (when (= ph-end p-beg)
+           (goto-char (point-min))
+           (insert ?\n))
          (goto-char (point-min))
          (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))
+          (let ((current-entity
+                (if (and (eq (mime-entity-media-type entity) 'message)
+                         (eq (mime-entity-media-subtype entity) 'rfc822))
+                    (mime-entity-children entity)
+                  entity))
+               str)
+           (while (and current-entity
+                       (progn
+                         (setq str
+                               (with-current-buffer
+                                   (mime-entity-header-buffer current-entity)
+                                 (save-restriction
+                                   (narrow-to-region
+                                    (mime-entity-header-start-point
+                                     current-entity)
+                                    (mime-entity-header-end-point
+                                     current-entity))
+                                   (std11-header-string-except
+                                    (concat
+                                     "^"
+                                     (apply (function regexp-or) fields)
+                                     ":") ""))))
+                         (if (and (eq (mime-entity-media-type
+                                       current-entity) 'message)
+                                  (eq (mime-entity-media-subtype
+                                       current-entity) 'rfc822))
+                             nil
+                           (if str
+                               (insert str)
+                             )
+                           t)))
              (setq fields (std11-collect-field-names)
              (setq fields (std11-collect-field-names)
-                   entity-node-id (cdr entity-node-id))
+                   current-entity (mime-entity-parent current-entity))
              )
            )
              )
            )
-         (let ((rest mime-view-following-required-fields-list))
+         (let ((rest mime-view-following-required-fields-list)
+               field-name ret)
            (while rest
            (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 field-name (car rest))
+             (or (std11-field-body field-name)
+                 (progn
+                   (save-excursion
+                     (set-buffer the-buf)
+                     (setq ret
+                           (when mime-mother-buffer
+                             (set-buffer mime-mother-buffer)
+                             (mime-entity-fetch-field
+                              (get-text-property (point)
+                                                 'mime-view-entity)
+                              field-name))))
+                   (if ret
+                       (insert (concat field-name ": " ret "\n"))
+                     )))
              (setq rest (cdr rest))
              ))
          (mime-decode-header-in-buffer)
              (setq rest (cdr rest))
              ))
          (mime-decode-header-in-buffer)
@@ -1184,8 +1287,17 @@ If there is no upper entity, call function `mime-preview-quit'."
        (while (setq point (previous-single-property-change
                            (point) 'mime-view-entity))
          (goto-char point)
        (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)
+         (when (eq r (get-text-property (point) 'mime-view-entity))
+           (if (or (eq mime-preview-move-scroll t)
+                   (and mime-preview-move-scroll
+                        (>= point
+                            (save-excursion
+                              (move-to-window-line -1)
+                              (forward-line (* -1 next-screen-context-lines))
+                              (beginning-of-line)
+                              (point)))))
+               (recenter next-screen-context-lines))
+           (throw 'tag t)
            )
          )
        (mime-preview-quit)
            )
          )
        (mime-preview-quit)
@@ -1196,13 +1308,25 @@ If there is no upper entity, call function `mime-preview-quit'."
 If there is no previous entity, it calls function registered in
 variable `mime-preview-over-to-previous-method-alist'."
   (interactive)
 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))
+  (while (and (not (bobp))
+             (null (get-text-property (point) 'mime-view-entity)))
     (backward-char)
     )
   (let ((point (previous-single-property-change (point) 'mime-view-entity)))
     (backward-char)
     )
   (let ((point (previous-single-property-change (point) 'mime-view-entity)))
-    (if point
+    (if (and point
+            (>= point (point-min)))
        (if (get-text-property (1- point) 'mime-view-entity)
        (if (get-text-property (1- point) 'mime-view-entity)
-           (goto-char point)
+           (progn (goto-char point)
+                  (if
+                   (or (eq mime-preview-move-scroll t)
+                       (and mime-preview-move-scroll
+                            (<= point
+                               (save-excursion
+                                 (move-to-window-line 0)
+                                 (forward-line next-screen-context-lines)
+                                 (end-of-line)
+                                 (point)))))
+                       (recenter (* -1 next-screen-context-lines))))
          (goto-char (1- point))
          (mime-preview-move-to-previous)
          )
          (goto-char (1- point))
          (mime-preview-move-to-previous)
          )
@@ -1223,11 +1347,23 @@ variable `mime-preview-over-to-next-method-alist'."
     (forward-char)
     )
   (let ((point (next-single-property-change (point) 'mime-view-entity)))
     (forward-char)
     )
   (let ((point (next-single-property-change (point) 'mime-view-entity)))
-    (if point
+    (if (and point
+            (<= point (point-max)))
        (progn
          (goto-char point)
          (if (null (get-text-property point 'mime-view-entity))
              (mime-preview-move-to-next)
        (progn
          (goto-char point)
          (if (null (get-text-property point 'mime-view-entity))
              (mime-preview-move-to-next)
+           (and
+            (or (eq mime-preview-move-scroll t)
+                (and mime-preview-move-scroll
+                     (>= point
+                        (save-excursion
+                          (move-to-window-line -1)
+                          (forward-line
+                           (* -1 next-screen-context-lines))
+                          (beginning-of-line)
+                          (point)))))
+                (recenter next-screen-context-lines))
            ))
       (let ((f (assq (mime-preview-original-major-mode)
                     mime-preview-over-to-next-method-alist)))
            ))
       (let ((f (assq (mime-preview-original-major-mode)
                     mime-preview-over-to-next-method-alist)))
@@ -1241,22 +1377,24 @@ variable `mime-preview-over-to-next-method-alist'."
 If reached to (point-max), it calls function registered in variable
 `mime-preview-over-to-next-method-alist'."
   (interactive)
 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))
+  (if (eobp)
       (let ((f (assq (mime-preview-original-major-mode)
       (let ((f (assq (mime-preview-original-major-mode)
-                     mime-preview-over-to-next-method-alist)))
-        (if f
-            (funcall (cdr f))
-          ))
+                    mime-preview-over-to-next-method-alist)))
+       (if f
+           (funcall (cdr f))
+         ))
     (let ((point
           (or (next-single-property-change (point) 'mime-view-entity)
     (let ((point
           (or (next-single-property-change (point) 'mime-view-entity)
-              (point-max))))
-      (forward-line h)
-      (if (> (point) point)
-          (goto-char point)
-        )
+              (point-max)))
+         (bottom (window-end (selected-window))))
+      (if (and (not h)
+              (> bottom point))
+         (progn (goto-char point)
+                (recenter next-screen-context-lines))
+       (condition-case nil
+           (scroll-up h)
+         (end-of-buffer
+          (goto-char (point-max)))))
       )))
 
 (defun mime-preview-scroll-down-entity (&optional h)
       )))
 
 (defun mime-preview-scroll-down-entity (&optional h)
@@ -1264,34 +1402,40 @@ If reached to (point-max), it calls function registered in variable
 If reached to (point-min), it calls function registered in variable
 `mime-preview-over-to-previous-method-alist'."
   (interactive)
 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))
+  (if (bobp)
       (let ((f (assq (mime-preview-original-major-mode)
                     mime-preview-over-to-previous-method-alist)))
       (let ((f (assq (mime-preview-original-major-mode)
                     mime-preview-over-to-previous-method-alist)))
-        (if f
-            (funcall (cdr f))
-          ))
+       (if f
+           (funcall (cdr f))
+         ))
     (let ((point
           (or (previous-single-property-change (point) 'mime-view-entity)
     (let ((point
           (or (previous-single-property-change (point) 'mime-view-entity)
-              (point-min))))
-      (forward-line (- h))
-      (if (< (point) point)
-          (goto-char point)
-        ))))
+              (point-min)))
+         (top (window-start (selected-window))))
+      (if (and (not h)
+              (< top point))
+         (progn (goto-char point)
+                (recenter (* -1 next-screen-context-lines)))
+       (condition-case nil
+           (scroll-down h)
+         (beginning-of-buffer
+          (goto-char (point-min)))))
+      )))
 
 
-(defun mime-preview-next-line-entity ()
-  (interactive)
-  (mime-preview-scroll-up-entity 1)
+(defun mime-preview-next-line-entity (&optional lines)
+  "Scroll up one line (or prefix LINES lines).
+If LINES is negative, scroll down LINES lines."
+  (interactive "p")
+  (mime-preview-scroll-up-entity (or lines 1))
   )
 
   )
 
-(defun mime-preview-previous-line-entity ()
-  (interactive)
-  (mime-preview-scroll-down-entity 1)
+(defun mime-preview-previous-line-entity (&optional lines)
+  "Scrroll down one line (or prefix LINES lines).
+If LINES is negative, scroll up LINES lines."
+  (interactive "p")
+  (mime-preview-scroll-down-entity (or lines 1))
   )
 
   )
 
-
 ;;; @@ quitting
 ;;;
 
 ;;; @@ quitting
 ;;;
 
index a3d3349..6ce9927 100644 (file)
@@ -1,6 +1,6 @@
 ;;; mime-w3.el --- mime-view content filter for text
 
 ;;; mime-w3.el --- mime-view content filter for text
 
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
+;; Copyright (C) 1994,1995,1996,1997,1998,1999 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Keywords: HTML, MIME, multimedia, mail, news
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Keywords: HTML, MIME, multimedia, mail, news
           ))
     (cons 'progn body)))
 
           ))
     (cons 'progn body)))
 
+(defvar mime-w3-message-structure nil)
+
 (defun mime-preview-text/html (entity situation)
 (defun mime-preview-text/html (entity situation)
+  (setq mime-w3-message-structure
+       (with-current-buffer (mime-entity-buffer entity)
+         mime-message-structure))
   (goto-char (point-max))
   (let ((p (point)))
     (insert "\n")
   (goto-char (point-max))
   (let ((p (point)))
     (insert "\n")
        (narrow-to-region p p)
        (mime-insert-text-content entity)
        (run-hooks 'mime-text-decode-hook)
        (narrow-to-region p p)
        (mime-insert-text-content entity)
        (run-hooks 'mime-text-decode-hook)
-       (w3-region p (point-max))
+       (condition-case err
+          (w3-region p (point-max))
+        (error (message (format "%s" err))))
        (mime-put-keymap-region p (point-max) w3-mode-map)
        ))))
 
        (mime-put-keymap-region p (point-max) w3-mode-map)
        ))))
 
+(defun url-cid (url &optional proxy-info)
+  (let ((entity
+        (mime-find-entity-from-content-id (mime-uri-parse-cid url)
+                                          mime-w3-message-structure)))
+    (when entity
+      (mime-insert-entity-content entity)
+      (setq url-current-mime-type (mime-entity-type/subtype entity))
+      )))
+
+(url-register-protocol "cid"
+                      'url-cid
+                      'url-identity-expander)
+
 
 ;;; @ end
 ;;;
 
 ;;; @ end
 ;;;
index 12311dd..62baefd 100644 (file)
@@ -1,8 +1,8 @@
-;;; semi-def.el --- definition module for SEMI
+;;; semi-def.el --- definition module for SEMI -*- coding: iso-8859-4; -*-
 
 
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997,1998,1999 Free Software Foundation, Inc.
 
 
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; Author: MORIOKA Tomohiko <tomo@m17n.org>
 ;; Keywords: definition, MIME, multimedia, mail, news
 
 ;; This file is part of SEMI (Sample of Emacs MIME Implementation).
 ;; Keywords: definition, MIME, multimedia, mail, news
 
 ;; This file is part of SEMI (Sample of Emacs MIME Implementation).
@@ -30,7 +30,7 @@
 
 (require 'custom)
 
 
 (require 'custom)
 
-(defconst mime-user-interface-product ["SEMI" (1 12 1) "[JR] Nonoichi"]
+(defconst mime-user-interface-product ["SEMI" (1 13 7) "Awazu"]
   "Product name, version number and code name of MIME-kernel package.")
 
 (autoload 'mule-caesar-region "mule-caesar"
   "Product name, version number and code name of MIME-kernel package.")
 
 (autoload 'mule-caesar-region "mule-caesar"