From 177c83599e0bdc55e189e9165b9dbb5138dea076 Mon Sep 17 00:00:00 2001 From: akr Date: Thu, 18 Feb 1999 16:16:27 +0000 Subject: [PATCH] * Sync up with semi-1_13_2. * semi-def.el (mime-user-interface-product): Bump up to AKEMI 1.13.1. --- AKEMI-VERSION | 2 +- ChangeLog | 201 ++++++++++++++++++++++++++++++++++--- Makefile | 7 +- NEWS | 34 ++++++- README.en | 6 +- README.ja | 258 ------------------------------------------------ TODO | 43 +------- VERSION | 28 +++++- mime-edit.el | 16 ++- mime-pgp.el | 25 ++--- mime-play.el | 305 +++++++++++++++++++++++++++++---------------------------- mime-view.el | 130 +++++++++++++++++------- mime-w3.el | 24 ++++- semi-def.el | 4 +- 14 files changed, 542 insertions(+), 541 deletions(-) delete mode 100644 README.ja diff --git a/AKEMI-VERSION b/AKEMI-VERSION index c38e919..808a23e 100644 --- a/AKEMI-VERSION +++ b/AKEMI-VERSION @@ -1,5 +1,5 @@ $B>K;RBN(B AKEMI 1.12.1 -$B?e>=BN(B +$B?e>=BN(B AKEMI 1.13.1 $BA04cK<(B $B3QKl(B $BFz:L(B diff --git a/ChangeLog b/ChangeLog index 2051186..6ac354f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +1999-02-18 Tanaka Akira + + * Sync up with semi-1_13_2. + + * semi-def.el (mime-user-interface-product): Bump up to + AKEMI 1.13.1. + 1999-02-17 Tanaka Akira * mime-edit.el (mime-edit-define-charset): Check `mime-charset-comment' @@ -62,6 +69,174 @@ * mime-view.el (mime-display-text/x-vcard): New function. (mime-preview-condition): Set up for 'mime-preview-text/x-vcard. + +1999-01-27 MORIOKA Tomohiko + + * SEMI: Version 1.13.2 (Mikawa) released. + +1999-01-26 Katsumi Yamaoka + + * README.en: Notice that 1.12.5 or later of FLIM is required. + +1999-01-26 MORIOKA Tomohiko + + * 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 + + * mime-play.el (mime-reduce-acting-situation-examples): New + implementation. + +1999-01-26 MORIOKA Tomohiko + + * mime-play.el (mime-view-caesar): Select window which displays + current-buffer if it is not selected . + +1999-01-26 Katsumi Yamaoka + + * 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 + + * mime-play.el (mime-view-caesar): New implementation. + +1999-01-26 MORIOKA Tomohiko + + * mime-play.el (mime-view-caesar): Don't expect called in + raw-buffer; use `mime-insert-entity'. + +1999-01-25 MORIOKA Tomohiko + + * 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'. + + +1999-01-24 MORIOKA Tomohiko + + * SEMI: Version 1.13.1 (Kaga-Kasama) released. + +1999-01-24 MORIOKA Tomohiko + + * 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 + + * 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 + + * 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 + + * 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 + + * 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. + + +1999-01-21 MORIOKA Tomohiko + + * SEMI: Version 1.13.0 (Matt-Dò)-A released. + +1999-01-21 MORIOKA Tomohiko + + * mime-play.el (mime-view-message/rfc822): Don't expect called in + raw-buffer. + +1999-01-21 MORIOKA Tomohiko + + * 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 + + * NEWS (Changes in SEMI 1.13): New section. + + * NEWS (Changes in SEMI 1.12): New section. + +1999-01-21 MORIOKA Tomohiko + + * 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. + + +1999-01-21 MORIOKA Tomohiko + + * SEMI: Version 1.12.1 ([JR] Nonoichi) released. + + * mime-play.el (mime-detect-content): Use `mime-entity-content' + not to refer to buffer directly. + 1999-01-15 MORIOKA Tomohiko * mime-view.el: Must require `emu'. @@ -517,7 +692,7 @@ 1998-07-08 MORIOKA Tomohiko - * REMI: Version 1.8.3 (Ecch.DŽþ-Nakagawa) released. + * REMI: Version 1.8.3 (Ecch-Dþ-Nakagawa)-A released. * mime-play.el (mime-delq-null-situation): Add new optional argument `ignored-value'. @@ -546,7 +721,7 @@ 1998-07-08 MORIOKA Tomohiko - * REMI: Version 1.8.2 (NŽòmachi) released. + * REMI: Version 1.8.2 (N-Dòmachi)-A released. 1998-07-07 MORIOKA Tomohiko @@ -665,7 +840,7 @@ 1998-06-28 MORIOKA Tomohiko - * REMI: Version 1.8.0 (EcchŽþ-Kokubu) released. + * REMI: Version 1.8.0 (Ecch-Dþ-Kokubu)-A released. 1998-06-26 MORIOKA Tomohiko @@ -1501,7 +1676,7 @@ 1998-06-04 MORIOKA Tomohiko - * SEMI: Version 1.5.0 (Nishi-NyŽþzen) released. + * SEMI: Version 1.5.0 (Nishi-Ny-Dþzen)-A released. * README.en (Required environment): Modify for FLIM 1.3.0. @@ -1553,7 +1728,7 @@ 1998-06-01 MORIOKA Tomohiko - * SEMI: Version 1.4.6 (NyŽþzen) released. + * SEMI: Version 1.4.6 (Ny-Dþzen)-A released. 1998-05-28 MORIOKA Tomohiko @@ -1766,7 +1941,7 @@ 1998-05-15 MORIOKA Tomohiko - * SEMI: Version 1.4.4 (EcchŽþ-Miyazaki) released. + * SEMI: Version 1.4.4 (Ecch-Dþ-Miyazaki)-A released. * mime-play.el (mime-mailcap-method-filename-alist): New variable. (mime-mailcap-method-sentinel): New function. @@ -1892,7 +2067,7 @@ 1998-05-06 MORIOKA Tomohiko - * SEMI: Version 1.4.1 (ŽÒmi) released. + * SEMI: Version 1.4.1 (-DÒmi)-A released. * README.en (Required environment): Modify for FLIM 1.2.0. @@ -2052,7 +2227,7 @@ 1998-04-25 MORIOKA Tomohiko - * SEMI: Version 1.3.2 (NŽò) was released. + * SEMI: Version 1.3.2 (N-Dò)-A was released. * mime-edit.el (mime-edit-mode-entity-prefix): New variable. (mime-edit-mode-entity-map): New variable. @@ -2707,7 +2882,7 @@ 1998-03-13 MORIOKA Tomohiko - * SEMI: Version 1.0.2 (Nonoichi-KŽòdaimae) was released. + * SEMI: Version 1.0.2 (Nonoichi-K-Dòdaimae)-A was released. 1998-03-12 MORIOKA Tomohiko @@ -2790,7 +2965,7 @@ * mime-file.el: Rename `mime-article/extract-file' -> `mime-extract-current-entity'. -1998-03-03 Fran.AŽçois Pinard +1998-03-03 François Pinard * mime-edit.el (mime-edit-insert-signature): Function `mime-edit-insert-tag' is sometimes called with more arguments @@ -2819,7 +2994,7 @@ 1998-02-25 MORIOKA Tomohiko - * SEMI: Version 1.0.0 (Nukaj.DŽþtaku-mae) was released. + * SEMI: Version 1.0.0 (Nukaj-Dþtaku-mae)-A was released. * SEMI-ELS: Remove mime-tar.el. @@ -2956,14 +3131,14 @@ 1997-11-16 MORIOKA Tomohiko - * SEMI: Version 0.116 (DŽòhŽòji) was released. + * SEMI: Version 0.116 (D-Dòhòji)-A was released. 1997-11-15 MORIOKA Tomohiko * mime-view.el, mime-pgp.el, mime-partial.el: Rename `mime::article/content-info' -> `mime-raw-content-info'. -1997-11-11 Fran.AŽçois Pinard +1997-11-11 François Pinard * mime-edit.el: Modify space in prompt and removespurious trailing spaces in the files. (cf. [tm-en:1507]) diff --git a/Makefile b/Makefile index a60d1dc..a5c9677 100644 --- a/Makefile +++ b/Makefile @@ -3,8 +3,8 @@ # PACKAGE = semi -API = 1.12 -RELEASE = 0 +API = 1.13 +RELEASE = 2 TAR = tar RM = /bin/rm -f @@ -61,7 +61,8 @@ tar: $(RM) /tmp/$(PACKAGE)-$(VERSION)/ftp.in 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)/" > ftp + sed "s/VERSION/$(VERSION)/" < ftp.in | sed "s/API/$(API)/" \ + | sed "s/PACKAGE/$(PACKAGE)/" > ftp release: -$(RM) $(ARC_DIR)/$(PACKAGE)-$(VERSION).tar.gz diff --git a/NEWS b/NEWS index f4c2d8e..ad678eb 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,38 @@ 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 + +** 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'. + + +** 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. + + + +* Changes in SEMI 1.12 + +There are no user-visible changes. + +** New function `eliminate-top-spaces' + +Now mime-edit has it. + + * Changes in SEMI 1.11 ** New function `mime-edit-decode-message-in-buffer' diff --git a/README.en b/README.en index 54a01ff..363cc58 100644 --- a/README.en +++ b/README.en @@ -40,7 +40,7 @@ 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. - SEMI requires APEL (9.11 or later) and FLIM (1.12.0 or later) + SEMI requires APEL (9.11 or later) and FLIM (1.12.5 or later) package. Please install them before installing it. APEL package is available at: @@ -52,10 +52,6 @@ Required environment 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 ============ diff --git a/README.ja b/README.ja deleted file mode 100644 index d313b38..0000000 --- a/README.ja +++ /dev/null @@ -1,258 +0,0 @@ -[SEMI $B$N3K%Q%C%1!<%8$N(B README ($BF|K\8lHG(B)] - -SEMI $B$H$O!)(B -============ - - SEMI $B$O(B GNU Emacs $B$K(B MIME $B5!G=$rDs6!$9$k%i%$%V%i%j!<$G$9!#(BMIME $B$O%a%C(B - $B%;!<%8$K(B (ASCII) plain text $B0J30$NFbMF$d%X%C%@!<$r4^$a$i$l$k$h$&$K$9(B - $B$k$?$a$KDs0F$5$l$F$$$k(B internet standard $B$G$9!#(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 $B$O0J2<$N5!G=$,$"$j$^$9!#(B - - - MIME $B%a%C%;!<%81\Mw(B (mime-view-mode) (RFC 2045 .. 2049) - - MIME $B%a%C%;!<%8:n@.(B (mime-edit-mode) (RFC 2045 .. 2049) - - MIME $B%a%C%;!<%81\Mw$H:n@.$O0J2<$N5!G=$bDs6!$7$F$$$^$9(B: - - - Content-Disposition $B%U%#!<%k%I$K$h$k%U%!%$%kL>$N07$$(B (RFC - - 1806) - - PGP/MIME $B0BA4$J(B Multipart (RFC 2015) - - application/pgp (draft-kazu-pgp-mime-00.txt; obsolete) - - text/richtext (RFC 1521; obsolete; $B1\Mw$N$_(B) - - text/enriched (RFC 1896) - - mailcap $B$K$h$k30ItJ}K!@_Dj(B (RFC 1524) - - $B$3$N%Q%C%1!<%8$O(B MUA $B$N$?$a$N(B MIME $B3HD%$r4^$s$G$$$J$$$3$H$KCm0U$7$F(B - $B$/$@$5$$!#$=$l$i$OJL$N%Q%C%1!<%8$H$7$F%j%j!<%9$5$l$^$9!#(B - - -$BI,MW$J4D6-(B -========== - - SEMI $B$O(B mule $B5!G=$D$-$N(B XEmacs 20.2 $B0J9_$H(B Emacs 20 $B$r%5%]!<%H$7$^$9!#(B - - SEMI $B$O(B Emacs 19.28 $B$d(B XEmacs 19.14 $B0JA0$O%5%]!<%H$7$^$;$s!#(BSEMI $B$O(B - Emacs 19.29 $B$+$i(B Emacs 19.34$B!"(BXEmacs 19.15 $B$+$i(B mule $B5!G=$N$J$$(B - XEmacs 20.2 $B$^$G$O%5%]!<%H$7$^$;$s$,!"(BSEMI $B$O$=$l$i$GF0:n$9$k$+$b$7(B - $B$l$^$;$s!#(B - - SEMI $B$O(B APEL (9.11 $B0J9_(B) $B$H(B FLIM (1.12.0 $B0J9_(B) $B$rI,MW$H$7$^$9!#(BSEMI - $B$r%$%s%9%H!<%k$9$kA0$K$^$:$=$l$i$r%$%s%9%H!<%k$7$F$/$@$5$$!#(BAPEL $B%Q%C(B - $B%1!<%8$O0J2<$N$H$3$m$Gl=j$G$N%G%#%l%/%H%j!<$K%$%s%9%H!<%k$7$?$/$J$$$J$i!"0J2<$N$3$H$@$1$r$d$C(B - $B$F$/$@$5$$(B: - - % make - - emacs $B$N%3%^%s%IL>$r;XDj$9$k$3$H$,$G$-$^$9!#Nc$($P!"(B - - % make EMACS=xemacs - - `EMACS=...' $B$,>JN,$5$l$k$H!"(BEmacs=emacs $B$,;H$o$l$^$9!#(B - -(b) make install - - $BB>$N%G%#%l%/%H%j!<$K%$%s%9%H!<%k$7$?$$$J$i!"0J2<$N$3$H$r$7$F$/$@$5$$(B: - - % make install - - emacs $B$N%3%^%s%IL>$r;XDj$9$k$3$H$,$G$-$^$9!#Nc$($P!"(B - - % make install EMACS=xemacs - - `EMACS=...' $B$,>JN,$5$l$k$H!"(BEmacs=emacs $B$,;H$o$l$^$9!#(B - - Emacs Lisp $B%W%m%0%i%`$H%7%'%k%9%/%j%W%H$N$?$a$N%G%#%l%/%H%j!JN,$5$l$k$H!";XDj$5$l$?(B emacs $B%3%^%s%I$N%G%#%l%/%H%j!<(B - $BLZ$N@\F,<-$,;HMQ$5$l$^$9(B ($B$*$=$i$/(B /usr/local $B$G$9(B)$B!#(B - - $BNc$($P!"(BPREFIX=/usr/local $B$H(B Emacs 19.34 $B$,;XDj$5$l$l$P!"0J2<$N%G%#(B - $B%l%/%H%j!JN,$5$l$k$H!";XDj$5$l$?(B emacs $B$N%3%^%s%I$N(B - site-lisp $B%G%#%l%/%H%j!<$,;H$o$l$^$9(B ($B$*$=$i$/(B - /usr/local/share/emacs/site-lisp $B$+(B /usr/local/lib/xemacs/site-lisp) - $B$G$9!#(B - - emu $B%b%8%e!<%k(B (APEL $B%Q%C%1!<%8$KF~$C$F$$$^$9(B) $B$,I8=`$G$J$$%G%#%l%/(B - $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(B - $B$,$"$j$^$9!#Nc$($P!"(B: - - % make install VERSION_SPECIFIC_LISPDIR=~/elisp - -(c) XEmacs $B$N%Q%C%1!<%8$H$7$F%$%s%9%H!<%k$9$k(B - - XEmacs $B$N%Q%C%1!<%8%G%#%l%/%H%j!<$K%$%s%9%H!<%k$9$k>l9g$O!"0J2<$N$3(B - $B$H$r$7$F$/$@$5$$(B: - - % make install-package - - emacs $B$N%3%^%s%IL>$r;XDj$9$k$3$H$,$G$-$^$9!#Nc$($P!"(B - - % make install-package XEMACS=xemacs-21 - - `XEMACS=...' $B$,>JN,$5$l$k$H!"(BXEMACS=xemacs $B$,;HMQ$5$l$^$9!#(B - - $B%Q%C%1!<%8$N%G%#%l%/%H%j!<$r;XDj$9$k$3$H$,$G$-$^$9!#Nc$($P(B: - - % make install PACKAGEDIR=~/.xemacs - - `PACKAGEDIR=...' $B$,>JN,$5$l$k$H!"B8:_$9$k%Q%C%1!<%8%G%#%l%/%H%j!<$N(B - $B:G=i$N$b$N$,;H$o$l$^$9!#(B - - XEmacs $B$N%Q%C%1!<%8%7%9%F%`$O(B XEmacs 21.0 $B$+$=$l0J9_$rMW5a$9$k$3$H$K(B - $BCm0U$7$F$/$@$5$$!#(B - -(a,b,c) - - $BB>$N>JN,2DG=$J@_Dj$r%U%!%$%k(B ${archive}/SEMI-CFG $B$rJT=8$9$k$3$H$G;X(B - $BDj$G$-$^$9!#(B${archive}/README.ja $B$H(B ${archive}/SEMI/CFG $B$N%3%a%s%H$r(B - $BFI$s$G$/$@$5$$!#(B - -$B=i4|2=(B -============== - -(a) load-path - - Emacs $B$+(B Mule $B$r;H$C$F$$$k$J$i!"(BFLIM $B$N%G%#%l%/%H%j!<$r(B - load-path $B$KDI2C$7$F$/$@$5$$!#=i4|@_Dj$G%$%s%9%H!<%k$7$?$J$i!"-Mh$N3HD%$N5DO@$r$7$?$j$9$k$3$H$,$G$-$^$9!#(Btm ML $B$K(B - $B;22C$9$k$K$O!"6u$NEE;R%a!<%k$r(B - - tm-en-help@chamonix.jaist.ac.jp ($B1Q8l(B) - tm-ja-help@chamonix.jaist.ac.jp ($BF|K\8l(B) - - $B$KAw$C$F$/$@$5$$!#(B - - morioka@jaist.ac.jp $B$N$h$&$J!":n@\%a!<%k$rAw$i$J$$$h$&$KCm0U$7(B - $B$F$/$@$5$$!#$=$l$O!"H/@8$7$?LdBj$OB>$N4D6-$G$b5/$3$C$F$$$k$O$:$@$+$i(B - $B$G$9(B ($B$b$7$=$&$G$J$1$l$P!"$=$l$O@_Dj$NLdBj$G!"(BSEMI $B$N%P%0$G$O$"$j$^(B - $B$;$s(B)$B!#(B tm $B%a!<%j%s%0%j%9%H$G5DO@$9$Y$-$G$9!#$H$K$+$/!":n@\(B - $B$N%a!<%k$OH?1~$,$J$$$+$b$7$l$^$;$s!#%a!<%k$O(B tm $B%a!<%j%s%0%j%9%H$XAw$C(B - $B$F$/$@$5$$!#(B - - -CVS $B$K$h$k3+H/(B -===================== - - CVS $B$K$h$k3+H/$K;22C$7$?$$$H$-$O!"%"%+%&%s%HL>$H(B UNIX $BMM<0$G0E9f2=$5(B - $B$l$?%Q%9%o!<%I$r(B - - cvs@chamonix.jaist.ac.jp - - $B$KAw$C$F$/$@$5$$!#3+H/$K;22C$5$l$k$3$H$r4|BT$7$F$$$^$9!#(B - - -$B:n - (the author of mime-view and various parts of SEMI) - UMEDA Masanobu - (the author of mime.el of emacs-mime-tools. mime.el is the - origin of mime-edit.el of SEMI) - -$BB>$N:n - (a major author of signature.el and a lot of codes) - MASUTANI Yasuhiro - (anonymous ftp codes of mime-play.el) - OKABE Yasuo - (a major author of mime-partial.el and signature.el) - - Steinar Bang - Steven L. Baur - Kevin Broadey - Alastair Burt - Eric Ding - Thierry Emery - Simon Josefsson - Jens Lautenbacher - Carsten Leonhardt - Pekka Marjola - Hisashi Miyashita - Kazuhiro Ohta - Alexandre Oliva - Fran,Ag(Bois Pinard - Artur Pioro - Dan Rich - (contribute to evolve mime-image.el with XEmacs) - Katsumi Yamaoka diff --git a/TODO b/TODO index 4a051ff..4be8a0e 100644 --- a/TODO +++ b/TODO @@ -5,48 +5,9 @@ ** 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 diff --git a/VERSION b/VERSION index 12069ca..54312ec 100644 --- a/VERSION +++ b/VERSION @@ -72,7 +72,14 @@ 1.10.2 Higashi-Kanazawa $(BEl6bBt(B 1.11.0 Kanazawa $(B6bBt(B ; <=> $(BKLN&E4F;(B $(BKLE46bBt(B 1.12.0 Nishi-Kanazawa $(B@>6bBt(B ; <=> $(BKLN&E4F;(B $(B?7@>6bBt(B -1.12.1 [JR] Nonoichi $(BLn!9;T(B +1.12.1 [JR] Nonoichi [JR] $(BLn!9;T(B +1.13.0 Matt-Dò-A $(B>>G$(B +1.13.1 Kaga-Kasama $(B2C2l3^4V(B +1.13.2 Mikawa $(BH~@n(B +------ Komaiko $(B>.Iq;R(B +------ Terai $(B;{0f(B +------ Meih-Dò-A $(BL@Jv(B +------ Komatsu $(B>.>>(B : : : ------- Tsuruga $(BFX2l(B ; = JR $(B>.IM@~(B ------- Shin-Hikida $(B?7I%ED(B @@ -134,9 +141,9 @@ 1.11.0 Okitsu $(B6=DE(B 1.12.0 Shimizu $(B@6?e(B 1.12.1 Kusanagi $(BApFe(B ------- Shizuoka $(B@E2,(B ------- Abekawa $(B0BG\@n(B ------- Mochimune $(BMQ=!(B +1.13.0 Shizuoka $(B@E2,(B +1.13.1 Abekawa $(B0BG\@n(B +1.13.2 Mochimune $(BMQ=!(B ------ Yaizu $(B>FDE(B ------ Nishi-Yaizu $(B@>>FDE(B ------ Fijieda $(BF#;^(B @@ -145,6 +152,19 @@ ------ Kanaya $(B6bC+(B ; = $(BBg0f@nE4F;(B ------ Kikugawa $(B5F@n(B ------ Kakegawa $(B3]@n(B ; = $(BE7N5IML>8PE4F;(B +------ Fukuroi $(BB^0f(B +------ Iwata $(BHXED(B +------ Toyodach-Dò-A $(BK-EDD.(B +------ Tenry-Dþgawa-A $(BE7N5@n(B +------ Hamamatsu $(BIM>>(B ; = $(B1s=#E4F;(B +------ Takatsuka $(B9bDM(B +------ Maisaka $(BIq:e(B +------ Bentenjima $(BJ[E7Eg(B +------ Araimachi $(B?75oD.(B +------ Wasizu $(BOIDE(B +------ Shinjohara $(B?7=j86(B ; = $(BE7N5IML>8PE4F;(B +------ Futagawa $(BFs2O(B +------ Toyohashi $(BK-66(B ; = JR $(BHSED@~(B : : : ------ Kanayama $(B6b;3(B ; =$(B!J(BJR $(BCf1{K\@~!K(B ------ Ot-Dòbashi-A $(BHxF,66(B diff --git a/mime-edit.el b/mime-edit.el index 9f9f0b1..9a81844 100644 --- a/mime-edit.el +++ b/mime-edit.el @@ -1,6 +1,6 @@ ;;; 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 ;; MORIOKA Tomohiko @@ -120,13 +120,11 @@ (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 @@ -2687,7 +2685,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)) - (end (std11-field-end))) + (end (std11-field-end limit))) (setq encoding (downcase (eliminate-top-spaces diff --git a/mime-pgp.el b/mime-pgp.el index 0facca0..fd0203a 100644 --- a/mime-pgp.el +++ b/mime-pgp.el @@ -1,6 +1,6 @@ ;;; 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 ;; Created: 1995/12/7 @@ -52,9 +52,9 @@ (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 )) @@ -63,17 +63,15 @@ ;;; 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)) @@ -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." - (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) @@ -172,11 +167,7 @@ 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-decoded-region (save-excursion - (goto-char start) - (and (search-forward "\n\n") - (match-end 0)) - ) end sig-file encoding) + (mime-write-entity-content entity sig-file) (or (mime-pgp-check-signature mime-echo-buffer-name orig-file) (let (pgp-id) (save-excursion diff --git a/mime-play.el b/mime-play.el index 7cccb51..47ea860 100644 --- a/mime-play.el +++ b/mime-play.el @@ -1,6 +1,6 @@ ;;; mime-play.el --- Playback processing module for mime-view.el -;; 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 ;; Created: 1995/9/26 (separated from tm-view.el) @@ -65,58 +65,91 @@ (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 @@ -127,15 +160,13 @@ If MODE is specified, play as it. Default MODE is \"play\"." (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 (list (cons 'mode (or mode "play"))))) + (if ignore-examples + (setq situation + (cons (cons 'ignore-examples ignore-examples) + situation))) + (mime-play-entity entity situation) + )))) (defun mime-sort-situation (situation) (sort situation @@ -203,29 +234,20 @@ If MODE is specified, play as it. Default MODE is \"play\"." (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))) - ) (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) @@ -315,34 +337,28 @@ specified, play as it. Default MODE is \"play\"." (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)))) @@ -377,7 +393,8 @@ window.") (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) @@ -473,16 +490,7 @@ SUBTYPE is symbol to indicate subtype of media-type.") (defun mime-detect-content (entity situation) (let (type subtype) - (let ((mdata (save-excursion - ;;(set-buffer (mime-entity-buffer entity)) - (let* ((start (mime-entity-body-start entity)) - (end (progn - (goto-char start) - (end-of-line) - (point)))) - (mime-decode-string (buffer-substring start end) - (mime-entity-encoding entity)) - ))) + (let ((mdata (mime-entity-content entity)) (rest mime-magic-type-alist)) (while (not (let ((cell (car rest))) (if cell @@ -493,13 +501,12 @@ SUBTYPE is symbol to indicate subtype of media-type.") t))) (setq rest (cdr rest)))) (if type - (mime-raw-play-entity - entity nil + (mime-play-entity + entity (put-alist 'type type (put-alist 'subtype subtype (del-alist 'method (copy-alist situation)))) - (cdr (assq 'ignore-examples situation)) 'mime-detect-content) )) ) @@ -523,13 +530,11 @@ 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))) - (mother mime-preview-buffer) + (mother (current-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)) + (mime-insert-entity children) (setq mime-message-structure children) (setq major-mode 'mime-show-message-mode) (mime-view-buffer (current-buffer) nil mother @@ -701,42 +706,40 @@ 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." - (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) + (let ((enable-character-translation nil)) + (mime-insert-text-content entity)) + (mule-caesar-region (point-min) (point-max)) + (let ((str (buffer-string)) + (status (make-vector 9 nil)) + (table + (catch 'tbl + (let ((i 0) e) + (while (and (< i (length translation-table-vector)) + (setq e (aref translation-table-vector i))) + (if (eq (cdr e) standard-translation-table-for-decode) + (throw 'tbl i)) + (setq i (1+ i))) + nil)))) + (when table + (aset status 0 table) + (delete-region (point-min) (point-max)) + (insert (ccl-execute-on-string + 'translate-string + status + str)))) + (set-buffer-modified-p nil) ) - (setq buffer-read-only nil) - (erase-buffer) - (let ((enable-character-translation nil)) - (mime-insert-text-content entity)) - (mule-caesar-region (point-min) (point-max)) - (let ((str (buffer-string)) - (status (make-vector 9 nil)) - (table - (catch 'tbl - (let ((i 0) e) - (while (and (< i (length translation-table-vector)) - (setq e (aref translation-table-vector i))) - (if (eq (cdr e) standard-translation-table-for-decode) - (throw 'tbl i)) - (setq i (1+ i))) - nil)))) - (when table - (aset status 0 table) - (delete-region (point-min) (point-max)) - (insert (ccl-execute-on-string - 'translate-string - status - str)))) - (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)) )) diff --git a/mime-view.el b/mime-view.el index 7b91b1e..e55aca6 100644 --- a/mime-view.el +++ b/mime-view.el @@ -39,11 +39,10 @@ ;;; (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 @@ -140,37 +139,87 @@ mother-buffer." ;;; @ 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))) + ;; major-mode + (or (assq 'major-mode situation) + (setq situation + (cons (cons 'major-mode + (with-current-buffer (mime-entity-buffer entity) + major-mode)) + situation))) + + situation)) (defun mime-view-entity-title (entity) (or (mime-read-field 'Content-Description entity) @@ -915,8 +964,20 @@ MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t. t means default." (defvar mime-view-redisplay nil) +;;;###autoload (defun mime-display-message (message &optional preview-buffer mother default-keymap-or-function) + "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))) @@ -962,6 +1023,7 @@ MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t. t means default." ))))) ))) +;;;###autoload (defun mime-view-buffer (&optional raw-buffer preview-buffer mother default-keymap-or-function representation-type) diff --git a/mime-w3.el b/mime-w3.el index a3d3349..6ce9927 100644 --- a/mime-w3.el +++ b/mime-w3.el @@ -1,6 +1,6 @@ ;;; 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 ;; Keywords: HTML, MIME, multimedia, mail, news @@ -43,7 +43,12 @@ )) (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") @@ -53,10 +58,25 @@ (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 ;;; diff --git a/semi-def.el b/semi-def.el index 138df95..df215ad 100644 --- a/semi-def.el +++ b/semi-def.el @@ -1,6 +1,6 @@ ;;; semi-def.el --- definition module for SEMI -;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. +;; Copyright (C) 1995,1996,1997,1998,1999 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko ;; Keywords: definition, MIME, multimedia, mail, news @@ -30,7 +30,7 @@ (require 'custom) -(defconst mime-user-interface-product ["AKEMI" (1 12 1) "$B>K;RBN(B"] +(defconst mime-user-interface-product ["AKEMI" (1 13 1) "$B?e>=BN(B"] "Product name, version number and code name of MIME-kernel package.") (autoload 'mule-caesar-region "mule-caesar" -- 1.7.10.4