From 65bd5ba3175a2d643115a608d2711231162594e1 Mon Sep 17 00:00:00 2001 From: yamaoka Date: Sun, 24 Jan 1999 22:26:19 +0000 Subject: [PATCH] Sync up with SEMI 1.13.1 and release. --- ChangeLog | 70 ++++++++++++++++ Makefile | 2 +- NEWS | 6 +- README.en | 6 +- README.ja | 258 ---------------------------------------------------------- TODO | 43 +--------- VERSION | 8 +- mime-edit.el | 14 ++-- mime-pgp.el | 11 +-- mime-play.el | 33 +++----- mime-view.el | 117 ++++++++++++++++++-------- mime-w3.el | 20 ++++- semi-def.el | 2 +- 13 files changed, 210 insertions(+), 380 deletions(-) delete mode 100644 README.ja diff --git a/ChangeLog b/ChangeLog index c90d5a0..9b4c546 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,73 @@ +1999-01-24 Katsumi Yamaoka + + * WEMI: Version 1.13.1 (Abekawa) 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 Katsumi Yamaoka * WEMI: Version 1.13.0 (Shizuoka) released. diff --git a/Makefile b/Makefile index 2ce822d..ea38752 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ PACKAGE = wemi API = 1.13 -RELEASE = 0 +RELEASE = 1 TAR = tar RM = /bin/rm -f diff --git a/NEWS b/NEWS index c2301b9..ad678eb 100644 --- a/NEWS +++ b/NEWS @@ -10,8 +10,10 @@ and changed interface. Current interface is: - mime-play-entity (entity &optional situation mode - ignore-examples ignored-method) + 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 diff --git a/README.en b/README.en index 7efa634..ef81d3f 100644 --- a/README.en +++ b/README.en @@ -44,7 +44,7 @@ Required environment 19.14. WEMI also does not support Emacs 19.29 to 19.34, XEmacs 19.15 or XEmacs 20.2 without mule, but WEMI 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.4 or later) package. Please install them before installing it. APEL package is available at: @@ -56,10 +56,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 f6146b0..caacd72 100644 --- a/VERSION +++ b/VERSION @@ -74,6 +74,12 @@ 1.12.0 Nishi-Kanazawa $(B@>6bBt(B ; <=> $(BKLN&E4F;(B $(B?7@>6bBt(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 +------ 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 @@ -136,7 +142,7 @@ 1.12.0 Shimizu $(B@6?e(B 1.12.1 Kusanagi $(BApFe(B 1.13.0 Shizuoka $(B@E2,(B ------- Abekawa $(B0BG\@n(B +1.13.1 Abekawa $(B0BG\@n(B ------ Mochimune $(BMQ=!(B ------ Yaizu $(B>FDE(B ------ Nishi-Yaizu $(B@>>FDE(B diff --git a/mime-edit.el b/mime-edit.el index 89b4655..a5be4fe 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 diff --git a/mime-pgp.el b/mime-pgp.el index 6bc1c13..fd0203a 100644 --- a/mime-pgp.el +++ b/mime-pgp.el @@ -54,8 +54,7 @@ "Internal method to verify multipart/signed." (mime-play-entity (nth 1 (mime-entity-children entity)) ; entity-info of signature - nil - (cdr (assq 'mode situation)) ; play-mode + (list (assq 'mode situation)) ; play-mode )) @@ -64,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))) - (mother mime-preview-buffer) + (mother (current-buffer)) representation-type) (set-buffer (get-buffer-create new-name)) (erase-buffer) - (insert-buffer-substring (mime-entity-buffer entity) - (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)) diff --git a/mime-play.el b/mime-play.el index 6a2fc1a..a78389d 100644 --- a/mime-play.el +++ b/mime-play.el @@ -124,8 +124,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 - (mime-play-entity entity nil (or mode "play") ignore-examples) - ))) + (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 @@ -193,29 +198,19 @@ If MODE is specified, play as it. Default MODE is \"play\"." (cons match example) )) -(defun mime-play-entity (entity &optional situation mode - ignore-examples ignored-method) +(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) @@ -475,8 +470,6 @@ SUBTYPE is symbol to indicate subtype of media-type.") (put-alist 'subtype subtype (del-alist 'method (copy-alist situation)))) - nil - (cdr (assq 'ignore-examples situation)) 'mime-detect-content) )) ) @@ -504,9 +497,7 @@ It is registered to variable `mime-preview-quitting-method-alist'." (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 diff --git a/mime-view.el b/mime-view.el index 1d929c0..b59a27c 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) diff --git a/mime-w3.el b/mime-w3.el index a3d3349..be90783 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") @@ -57,6 +62,19 @@ (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 6fb0d80..d59876e 100644 --- a/semi-def.el +++ b/semi-def.el @@ -30,7 +30,7 @@ (require 'custom) -(defconst mime-user-interface-product ["WEMI" (1 13 0) "Shizuoka"] +(defconst mime-user-interface-product ["WEMI" (1 13 1) "Abekawa"] "Implementation name, version name and numbers of MIME-kernel package.") (autoload 'mule-caesar-region "mule-caesar" -- 1.7.10.4