+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.
#
PACKAGE = semi
-API = 1.12
-RELEASE = 1
+API = 1.13
+RELEASE = 7
+
+FLIM_API= 1.13
TAR = tar
RM = /bin/rm -f
FLAGS = -batch -q -no-site-file -l SEMI-MK
PREFIX = NONE
-EXEC_PREFIX = NONE
LISPDIR = NONE
PACKAGEDIR = NONE
VERSION_SPECIFIC_LISPDIR = NONE
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 \
- $(PREFIX) $(EXEC_PREFIX) $(LISPDIR) \
- $(VERSION_SPECIFIC_LISPDIR)
+ $(PREFIX) $(LISPDIR) $(VERSION_SPECIFIC_LISPDIR)
install-elc: elc
$(EMACS) $(FLAGS) -f install-semi \
- $(PREFIX) $(EXEC_PREFIX) $(LISPDIR) \
- $(VERSION_SPECIFIC_LISPDIR)
+ $(PREFIX) $(LISPDIR) $(VERSION_SPECIFIC_LISPDIR)
install: install-elc
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
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'
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:
- ftp://ftp.jaist.ac.jp/pub/GNU/elisp/apel/
+ ftp://ftp.etl.go.jp/pub/mule/apel/
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.
- 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
============
+++ /dev/null
-[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>
;;;
(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)
;;;
(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)
(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)
;;; @ 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))
(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)
)
(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)
(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
- '(mime auto-autoloads custom-load))
+ '(mime-setup auto-autoloads custom-load))
"./"
(expand-file-name SEMI_PREFIX
(expand-file-name "lisp"
** 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
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
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
+------ 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
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.]
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;
- 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;
(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)
- (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)))
- (setq from (or (mime-fetch-field 'To message)
+ (setq from (or (mime-entity-fetch-field message 'To)
from))
)
(if from
;;; 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>
(require 'sendmail)
(require 'mail-utils)
(require 'mel)
+(require 'eword-encode) ; eword-encode-field-body
(require 'mime-view)
(require 'signature)
(require 'alist)
(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
("css") ; rfc2318
("xml") ; rfc2376
("x-latex")
- ("x-rot13-47-48")
+ ;; ("x-rot13-47-48")
)
("message"
("external-body"
("application"
("octet-stream" ("type" "" "tar" "shar"))
("postscript")
+ ("vnd.ms-powerpoint")
("x-kiss" ("x-cnf")))
("image"
("gif")
"base64"
"attachment" (("filename" . file))
)
+ ("\\.ppt$" ; MS Power Point
+ "application" "vnd.ms-powerpoint" nil
+ "base64"
+ "attachment" (("filename" . file))
+ )
("\\.pln$"
"text" "plain" nil
(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")
))
(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"
- (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))
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
- (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.")
(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
;;;
(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)
"^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
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* ((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))
(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)))
)
(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-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
(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
- (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)
- (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)))
- (the-buf (current-buffer))
- (mother mime-preview-buffer)
+ (mother (current-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))
'((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))
(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
(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)
)
(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)
(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)
(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
;;;
-(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
(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
(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)
- (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
- (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))
- (or ignore-examples
+ (or (assq 'ignore-examples situation)
(if (cdr ret)
(let ((rest ret)
(max-score 0)
;; )
(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))
))
))
(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))))
(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)
(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)
))
(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)))
)
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
(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)
(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)
- (goto-char (mime-entity-point-min entity))
(let* ((root-dir
(expand-file-name
(concat "m-prts-" (user-login-name)) temporary-file-directory))
(number (cdr (assoc "number" cal)))
(total (cdr (assoc "total" cal)))
file
- (mother mime-preview-buffer)
- )
+ (mother (current-buffer)))
(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)
- (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)))
- )
+ 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)
+ (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))
(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))
(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)))
- (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)
)))))
(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))
))
;;;
(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
: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)
;;;
`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)
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)
-(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
(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
;;;
-(defun mime-entity-situation (entity)
+(defun mime-entity-situation (entity &optional situation)
"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)
- (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)
""))
-(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
;;; @@@ 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-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))))
+ (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))
(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)
- (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
(setq i (1+ i))
situation)
))
- children)))
+ children))
(setq i 0)
(while children
(let ((child (car children))
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
(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)))
(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))
+ (run-hooks 'mime-display-header-hook)
+ (put-text-property nhb (point-max) 'mime-view-entity-header entity)
(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)
(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)
(defvar mime-view-redisplay nil)
+;;;###autoload
(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)
- (let ((win-conf (current-window-configuration))
- (raw-buffer (mime-entity-buffer message)))
+ (let ((win-conf (current-window-configuration)))
(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)
- (setq mime-raw-buffer raw-buffer)
(if mother
(setq mime-mother-buffer mother)
)
(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
(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)
(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
(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))
)
(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))
- (a-buf mime-raw-buffer)
fields)
(save-excursion
(set-buffer (setq new-buf (get-buffer-create new-name)))
(erase-buffer)
- (insert-buffer-substring the-buf p-beg p-end)
+ (insert-buffer-substring the-buf ph-end p-end)
+ (when (= ph-end p-beg)
+ (goto-char (point-min))
+ (insert ?\n))
(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)
- 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
- (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)
(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)
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)))
- (if point
+ (if (and point
+ (>= point (point-min)))
(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)
)
(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)
+ (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)))
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)
- 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)
- (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)
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)))
- (if f
- (funcall (cdr f))
- ))
+ (if f
+ (funcall (cdr f))
+ ))
(let ((point
(or (previous-single-property-change (point) 'mime-view-entity)
- (point-min))))
- (forward-line (- h))
- (if (< (point) point)
- (goto-char point)
- ))))
+ (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
;;;
;;; 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
))
(cons 'progn body)))
+(defvar mime-w3-message-structure nil)
+
(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")
(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)
))))
+(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
;;;
-;;; 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).
(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"