+1998-05-12 Kazuhiro Ohta <ohta@ele.cst.nihon-u.ac.jp>
+
+ * mime-partial.el: start and end of the region fixed.
+
+1998-05-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * mime-parse.el (make-mime-content-type): New function.
+ (mime-parse-Content-Type): Use 'make-mime-content-type.
+ (mime-parse-multipart): Use 'make-mime-content-type.
+
+1998-05-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * mime-parse.el: Change data format of mime-content-disposition.
+
+1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * mime-parse.el: Rename 'mime/Content-Transfer-Encoding ->
+ 'mime-read-Content-Transfer-Encoding.
+
+1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * mime-view.el (mime-raw-get-subject): Use
+ 'mime-content-disposition-parameters.
+
+ * mime-play.el (mime-raw-get-original-filename): Use
+ 'mime-content-disposition-parameters.
+
+ * mime-parse.el (mime-content-disposition-type): New function.
+ (mime-content-disposition-parameters): New function.
+
+1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * mime-parse.el, mime-play.el, mime-view.el: Rename
+ 'mime/Content-Disposition -> 'mime-read-Content-Disposition.
+
+1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * Makefile (PACKAGE): New variable.
+ (tar): Use $(PACKAGE).
+
+1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * mime-parse.el: Change data format of mime-content-type.
+
+1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * mime-edit.el (mime-edit-decode-buffer): Use
+ 'mime-content-type-primary-type, 'mime-content-type-subtype and
+ 'mime-content-type-parameters.
+
+1998-05-11 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * mime-parse.el (mime-content-type-primary-type): New function.
+ (mime-content-type-subtype): New function.
+ (mime-content-type-parameters): New function.
+ (mime-parse-message): Use 'mime-content-type-primary-type,
+ 'mime-content-type-subtype and 'mime-content-type-parameters.
+
+1998-05-10 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * mime-parse.el: Abolish function 'symbol-concat because it is not
+ used.
+
+1998-05-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * README.en (Authors): New section.
+
+ * README.en (CVS based development): New section.
+
+\f
1998-05-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
* WEMI: Version 1.4.2 (Chigasaki) released.
\f
1998-05-06 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * WEMI: Version 1.4.1 (Tsujid\e-Dò) was released.\e-A
+ * WEMI: Version 1.4.1 (Tsujid\e-Dò)\e-A was released.
* README.en (Required environment): Modify for FLIM 1.2.0.
\f
1998-05-02 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * WEMI: Version 1.3.1 (\e-DÒfuna) was released.\e-A
+ * WEMI: Version 1.3.1 (\e-DÒfuna)\e-A was released.
1998-05-02 MORIOKA Tomohiko <morioka@jaist.ac.jp>
\f
1998-04-07 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * WEMI: Version 1.2.0 (T\e-Dòkyò) was released.\e-A
+ * WEMI: Version 1.2.0 (T\e-Dòkyò)\e-A was released.
* README.en: Modify for WEMI.
\f
1998-03-13 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * SEMI: Version 1.0.2 (Nonoichi-K\e-Dòdaimae) was released.\e-A
+ * SEMI: Version 1.0.2 (Nonoichi-K\e-Dòdaimae)\e-A was released.
1998-03-12 MORIOKA Tomohiko <morioka@jaist.ac.jp>
\f
1998-02-25 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * SEMI: Version 1.0.0 (Nukaj\e-Dþtaku-mae) was released.\e-A
+ * SEMI: Version 1.0.0 (Nukaj\e-Dþtaku-mae)\e-A was released.
* SEMI-ELS: Remove mime-tar.el.
\f
1997-11-16 MORIOKA Tomohiko <morioka@jaist.ac.jp>
- * SEMI: Version 0.116 (D\e-Dòhòji) was released.\e-A
+ * SEMI: Version 0.116 (D\e-Dòhòji)\e-A was released.
1997-11-15 MORIOKA Tomohiko <morioka@jaist.ac.jp>
# Makefile for WEMI.
#
-VERSION = 1.4.2
+VERSION = 1.4.3
+PACKAGE = wemi
SHELL = /bin/sh
MAKE = make
tar:
cvs commit
- sh -c 'cvs tag -RF wemi-`echo $(VERSION) \
+ sh -c 'cvs tag -RF $(PACKAGE)-`echo $(VERSION) \
| sed s/\\\\./_/ | sed s/\\\\./_/`; \
cd /tmp; \
cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
- export -d wemi-$(VERSION) \
- -r wemi-`echo $(VERSION) \
+ export -d $(PACKAGE)-$(VERSION) \
+ -r $(PACKAGE)-`echo $(VERSION) \
| sed s/\\\\./_/ | sed s/\\\\./_/` semi'
- $(RM) /tmp/wemi-$(VERSION)/ftp.in
- cd /tmp; $(TAR) cvzf wemi-$(VERSION).tar.gz wemi-$(VERSION)
- cd /tmp; $(RM) -r wemi-$(VERSION)
+ $(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 > ftp
[README for WEMI kernel package (English Version)]
-by MORIOKA Tomohiko <morioka@jaist.ac.jp>
What's WEMI?
-------------
+============
WEMI is a branch of SEMI kernel package using widget. It is a
library to provide MIME feature for GNU Emacs based on SEMI API.
Required environment
---------------------
+====================
WEMI supports XEmacs 20.3 or later with mule, and Emacs 20.2.
Installation
-------------
+============
% make install
Initialization
---------------
+==============
(a) load-path
Documentation
--------------
+=============
To get started, please read ${archive}/README.en.
ftp://ftp.merit.edu/internet/documents/rfc/
-Bug reports
------------
+Mailing lists
+=============
If you write bug-reports and/or suggestions for improvement, please
send them to the tm Mailing List:
tm-en-help@chamonix.jaist.ac.jp (English)
tm-ja-help@chamonix.jaist.ac.jp (Japanese)
+
+
+CVS based development
+=====================
+
+ If you would like to join CVS based development, please send mail to
+
+ cvs@chamonix.jaist.ac.jp
+
+ with your account name and UNIX style crypted password. We hope you
+ will join the open development.
+
+
+Authors
+=======
+
+Original authors
+
+ MORIOKA Tomohiko <morioka@jaist.ac.jp>
+ (the author of mime-view and various parts of SEMI)
+ UMEDA Masanobu <umerin@mse.kyutech.ac.jp>
+ (the author of mime.el of emacs-mime-tools. mime.el is the
+ origin of mime-edit.el of SEMI)
+
+Other authors
+
+ Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
+ (a major author of signature.el and a lot of codes)
+ MASUTANI Yasuhiro <masutani@me.es.osaka-u.ac.jp>
+ (anonymous ftp codes of mime-play.el)
+ OKABE Yasuo <okabe@kudpc.kyoto-u.ac.jp>
+ (a major author of mime-partial.el and signature.el)
+
+ Steinar Bang <sb@metis.no>
+ Steven L. Baur <steve@miranova.com>
+ Kevin Broadey <KevinB@bartley.demon.co.uk>
+ Alastair Burt <burt@dfki.uni-kl.de>
+ Eric Ding <ericding@San-Jose.ate.slb.com>
+ Thierry Emery <Thierry.Emery@aar.alcatel-alsthom.fr>
+ Simon Josefsson <jas@pdc.kth.se>
+ Jens Lautenbacher <jtl@tkm.physik.uni-karlsruhe.de>
+ Carsten Leonhardt <leo@arioch.tng.oche.de>
+ Pekka Marjola <marjola@bilbo.ntc.nokia.com>
+ Hisashi Miyashita <himi@bird.scphys.kyoto-u.ac.jp>
+ Kazuhiro Ohta <ohta@ele.cst.nihon-u.ac.jp>
+ Alexandre Oliva <oliva@dcc.unicamp.br>
+ François Pinard <pinard@iro.umontreal.ca>
+ Artur Pioro <artur@flugor.if.uj.edu.pl>
+ Dan Rich <drich@morpheus.corp.sgi.com>
+ (contribute to evolve mime-image.el with XEmacs)
+ Katsumi Yamaoka <yamaoka@ga.sony.co.jp>
+[TODO]
+======
+
* MIME-View
** Mother entity should modify preview-situation of children
** Use MIME-Preview like tag and display
+** Redesign to use two buffers for one message
+
+ MIME-View is based on "Multiple Representation Space (layer) Model".
+In this model, network representation and its presentation are
+distinguished. Thus MIME-View uses two buffers for one message,
+'mime-raw-buffer (for network representation) and
+'mime-preview-buffer. MIME-View manages them based on information of
+entities. According to experience of MIME-View, this model is good to
+treat complex structured data, such as MIME.
+
+ MIME-Edit was designed to use one buffer for one message. So it is
+hard to edit like WYSIWYG style. Format of tag is limited by
+translation. Content of forwarded message is unreadable. It is
+better to introduce "Multiple Representation Space Model" to resolve
+these problems.
+
** Check available MIME-charset
MIME-charset \e$B0J30$,@8@.$5$l$k>l9g$N=hM}$r;XDj$G$-$k$h$&$K$9$k!#\e(B
(b) display warning message
(e.g. "`x-ctext' is generated. Do you send it? (yes/no)")
(c) stop sending
+
+** Don't use buffer-local variables
+
+ Don't use buffer-local variables to control behavior about
+translating to network representation, such as 'mime-transfer-level,
+'mime-transfer-level-string,
+'mime-edit-charset-default-encoding-alist, 'mime-edit-pgp-processing.
+Because they have problem with Semi-gnus.
+
+
+* Etc.
+
+** Write manual
+
+
+
+[Known Bugs]
+============
+
+* MIME-Edit
(goto-char (point-min))
(let ((ctl (mime-read-Content-Type)))
(if ctl
- (let ((type (car ctl))
- (stype (car (cdr ctl)))
- (params (cdr (cdr ctl)))
- )
+ (let ((type (mime-content-type-primary-type ctl))
+ (stype (mime-content-type-subtype ctl))
+ (params (mime-content-type-parameters ctl)))
(cond
((and (eq type 'application)(eq stype 'pgp-signature))
(delete-region (point-min)(point-max))
(require 'std11)
(require 'mime-def)
-(defsubst symbol-concat (&rest args)
- "Return a symbol whose name is concatenation of arguments ARGS
-which are string or symbol."
- (intern (mapconcat (function
- (lambda (s)
- (cond ((symbolp s) (symbol-name s))
- ((stringp s) s)
- )))
- args "")))
-
;;; @ field parser
;;;
(substring str e)
))))
+
+;;; @ Content-Type
+;;;
+
+(defsubst make-mime-content-type (type subtype &optional parameters)
+ (list* (cons 'type type)
+ (cons 'subtype subtype)
+ (nreverse parameters))
+ )
+
(defun mime-parse-Content-Type (string)
"Parse STRING as field-body of Content-Type field.
Return value is
(setq dest (cons (car ret) dest)
string (cdr ret))
)
- (cons (intern type) (cons (intern subtype) (nreverse dest)))
+ (make-mime-content-type (intern type)(intern subtype)
+ (nreverse dest))
)))
+(defun mime-read-Content-Type ()
+ "Read field-body of Content-Type field from current-buffer,
+and return parsed it. Format of return value is as same as
+`mime-parse-Content-Type'."
+ (let ((str (std11-field-body "Content-Type")))
+ (if str
+ (mime-parse-Content-Type str)
+ )))
+
+(defsubst mime-content-type-primary-type (content-type)
+ "Return primary-type of CONTENT-TYPE."
+ (cdr (car content-type)))
+
+(defsubst mime-content-type-subtype (content-type)
+ "Return primary-type of CONTENT-TYPE."
+ (cdr (cadr content-type)))
+
+(defsubst mime-content-type-parameters (content-type)
+ "Return primary-type of CONTENT-TYPE."
+ (cddr content-type))
+
+
+;;; @ Content-Disposition
+;;;
(defconst mime-disposition-type-regexp mime-token-regexp)
(setq string (std11-unfold-string string))
(if (string-match `,(concat "^" mime-disposition-type-regexp) string)
(let* ((e (match-end 0))
- (ctype (downcase (substring string 0 e)))
+ (type (downcase (substring string 0 e)))
ret dest)
(setq string (substring string e))
(while (setq ret (mime-parse-parameter string))
(setq dest (cons (car ret) dest)
string (cdr ret))
)
- (cons ctype (nreverse dest))
+ (cons (cons 'type (intern type))
+ (nreverse dest))
)))
-
-;;; @ field reader
-;;;
-
-(defun mime-read-Content-Type ()
- "Read field-body of Content-Type field from current-buffer,
-and return parsed it. Format of return value is as same as
-`mime-parse-Content-Type'."
- (let ((str (std11-field-body "Content-Type")))
+(defun mime-read-Content-Disposition ()
+ "Read field-body of Content-Disposition field from current-buffer,
+and return parsed it."
+ (let ((str (std11-field-body "Content-Disposition")))
(if str
- (mime-parse-Content-Type str)
+ (mime-parse-Content-Disposition str)
)))
-(defun mime/Content-Transfer-Encoding (&optional default-encoding)
+(defsubst mime-content-disposition-type (content-disposition)
+ "Return disposition-type of CONTENT-DISPOSITION."
+ (cdr (car content-disposition)))
+
+(defsubst mime-content-disposition-parameters (content-disposition)
+ "Return disposition-parameters of CONTENT-DISPOSITION."
+ (cdr content-disposition))
+
+
+;;; @ Content-Transfer-Encoding
+;;;
+
+(defun mime-read-Content-Transfer-Encoding (&optional default-encoding)
"Read field-body of Content-Transfer-Encoding field from
current-buffer, and return it.
-If is is not found, return DEFAULT-ENCODING. [mime-parse.el]"
+If is is not found, return DEFAULT-ENCODING."
(let ((str (std11-field-body "Content-Transfer-Encoding")))
(if str
(progn
)
(downcase str)
)
- default-encoding)
- ))
-
-(defun mime/Content-Disposition ()
- "Read field-body of Content-Disposition field from current-buffer,
-and return parsed it. [mime-parse.el]"
- (let ((str (std11-field-body "Content-Disposition")))
- (if str
- (mime-parse-Content-Disposition str)
- )))
+ default-encoding)))
;;; @ message parser
(rsep (concat delimiter "[ \t]*\n"))
(dc-ctl
(if (eq subtype 'digest)
- '(message rfc822)
- '(text plain)
+ (make-mime-content-type 'message 'rfc822)
+ (make-mime-content-type 'text 'plain)
))
cb ce ret ncb children (i 0))
(save-restriction
field. Its format must be as same as return value of
mime-{parse|read}-Content-Type."
(setq default-ctl (or (mime-read-Content-Type) default-ctl))
- (let ((primtype (car default-ctl))
- (subtype (car (cdr default-ctl)))
- (params (cdr (cdr default-ctl)))
- (encoding (or (mime/Content-Transfer-Encoding) default-encoding))
- )
+ (let ((primtype (mime-content-type-primary-type default-ctl))
+ (subtype (mime-content-type-subtype default-ctl))
+ (params (mime-content-type-parameters default-ctl))
+ (encoding (mime-read-Content-Transfer-Encoding default-encoding)))
(let ((boundary (assoc "boundary" params)))
(cond (boundary
(setq boundary (std11-strip-quoted-string (cdr boundary)))
(if (string= the-id id)
(progn
(mime-method-to-store-message/partial
- (point-min)(point-max) parameters)
+ (mime-entity-point-min mime-raw-message-info)
+ (mime-entity-point-max mime-raw-message-info)
+ parameters)
(if (file-exists-p full-file)
(throw 'tag nil)
)
(defun mime-raw-get-original-filename (param &optional encoding)
(or (mime-raw-get-uu-filename param encoding)
(let (ret)
- (or (if (or (and (setq ret (mime/Content-Disposition))
- (setq ret (assoc "filename" (cdr ret)))
+ (or (if (or (and (setq ret (mime-read-Content-Disposition))
+ (setq ret
+ (assoc
+ "filename"
+ (mime-content-disposition-parameters ret)))
)
(setq ret (assoc "name" param))
(setq ret (assoc "x-name" param))
(defun mime-raw-get-subject (param &optional encoding)
(or (std11-find-field-body '("Content-Description" "Subject"))
(let (ret)
- (if (or (and (setq ret (mime/Content-Disposition))
- (setq ret (assoc "filename" (cdr ret)))
+ (if (or (and (setq ret (mime-read-Content-Disposition))
+ (setq ret
+ (assoc "filename"
+ (mime-content-disposition-parameters ret)))
)
(setq ret (assoc "name" param))
(setq ret (assoc "x-name" param))
(eval-when-compile (require 'cl))
-(defconst mime-module-version '("WEMI" "Chigasaki" 1 4 2)
+(defconst mime-module-version '("WEMI" "Hiratsuka" 1 4 3)
"Implementation name, version name and numbers of MIME-kernel package.")
(autoload 'mule-caesar-region "mule-caesar"