This commit was manufactured by cvs2svn to create branch
authortomo <tomo>
Fri, 26 Jun 1998 07:53:56 +0000 (07:53 +0000)
committertomo <tomo>
Fri, 26 Jun 1998 07:53:56 +0000 (07:53 +0000)
'unlabeled-1.311.2'.

27 files changed:
Makefile [deleted file]
NEWS [deleted file]
README.en [deleted file]
SEMI-CFG [deleted file]
SEMI-ELS [deleted file]
SEMI-MK [deleted file]
SEMI-naming.ol [deleted file]
TODO [deleted file]
VERSION [deleted file]
ftp.in [deleted file]
mail-mime-setup.el [deleted file]
mime-bbdb.el [deleted file]
mime-edit.el [deleted file]
mime-image.el [deleted file]
mime-mc.el [deleted file]
mime-partial.el [deleted file]
mime-pgp.el [deleted file]
mime-play.el [deleted file]
mime-setup.el [deleted file]
mime-text.el [deleted file]
mime-view-ja.sgml [deleted file]
mime-view-ja.texi [deleted file]
mime-view.el [deleted file]
mime-w3.el [deleted file]
semi-def.el [deleted file]
semi-setup.el [deleted file]
signature.el [deleted file]

diff --git a/Makefile b/Makefile
deleted file mode 100644 (file)
index eb229ce..0000000
--- a/Makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-#
-# Makefile for SEMI kernel.
-#
-
-PACKAGE = semi
-VERSION = 1.8.0
-
-SHELL  = /bin/sh
-MAKE   = make
-CC     = gcc
-CFLAGS = -O2
-TAR    = tar
-RM     = /bin/rm -f
-CP     = /bin/cp -p
-EMACS  = emacs
-
-GOMI   = *.elc
-FLAGS   = -batch -q -no-site-file
-
-PREFIX = NONE
-EXEC_PREFIX = NONE
-LISPDIR = NONE
-
-elc:
-       $(EMACS) $(FLAGS) -l SEMI-MK -f compile-semi \
-               $(PREFIX) $(EXEC_PREFIX) $(LISPDIR)
-
-install-elc:   elc
-       $(EMACS) $(FLAGS) -l SEMI-MK -f install-semi \
-               $(PREFIX) $(EXEC_PREFIX) $(LISPDIR)
-
-
-all:   $(UTILS) $(DVI) elc
-
-tex:   ol2
-       cd doc; $(MAKE) tex
-
-dvi:   ol2
-       cd doc; $(MAKE) dvi
-
-ps:    ol2
-       cd doc; $(MAKE) ps
-
-
-install:       install-elc
-
-update-xemacs:
-       $(EMACS) $(FLAGS) -l SEMI-MK -f update-xemacs-source
-
-
-clean:
-       -$(RM) $(GOMI)
-       -cd doc   && $(MAKE) clean
-       -cd gnus  && $(MAKE) clean
-       -cd mh-e  && $(MAKE) clean
-       cd ../mel && $(MAKE) clean
-
-
-tar:
-       cvs commit
-       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 $(PACKAGE)-$(VERSION) \
-               -r $(PACKAGE)-`echo $(VERSION) \
-                       | sed s/\\\\./_/ | sed s/\\\\./_/` semi'
-       $(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
diff --git a/NEWS b/NEWS
deleted file mode 100644 (file)
index ab7b381..0000000
--- a/NEWS
+++ /dev/null
@@ -1,412 +0,0 @@
-SEMI NEWS --- history of major-changes.
-Copyright (C) 1998 Free Software Foundation, Inc.
-
-* Changes in SEMI 1.8
-
-** Abolish external X-Face viewer
-
-
-** Abolish obsolete utility for *-field-list and *-field-regexp
-
-  Abolish function `tm:set-fields', `tm:add-fields' and
-`tm:delete-fields'.
-
-
-** Change MUA interface of automatic message/partial combining
-
-  Abolish variable `mime-view-partial-message-method-alist'.
-
-  Instead of it, `request-partial-message-method' in acting-situation
-is available to specify MUA depended implementation.
-
-  Each element of `mime-view-partial-message-method-alist' were
-required to display message at current summary line, and its return
-value were ignored.  On the other hand,
-`request-partial-message-method' is required to return structure of
-message at current summary line.  Format of it is mime-entity.
-
-\f
-* Changes in SEMI 1.7
-
-** Header-presentation-method
-
-  Now MIME-View uses header-presentation-method instead of
-header-filter.
-
-  - abolish variable `mime-view-content-header-filter-alist'
-
-  - abolish function `mime-view-cut-header'
-
-  - Rename `mime-view-content-header-filter-hook' to
-    `mime-display-header-hook'
-
-
-** Abolish `mime-view-ignored-field-regexp'
-
-  Now mime-view uses `mime-view-ignored-field-list' directly in
-default header-presentation-method.
-
-
-** Abolish body filter support
-
-  Please use body-presentation-method.
-
-
-** Methods for MUAs
-
-  - Rename `mime-view-following-method-alist' to
-    `mime-preview-following-method-alist'
-
-  - Rename `mime-method-to-combine-message/partial-pieces' to
-    `mime-combine-message/partial-pieces-automatically'
-
-\f
-* Changes in SEMI 1.6
-
-** Abolish tm-compatible external method support
-
-  Abolish tm-compatible external method support.  Please use mailcap
-method instead of it.
-
-
-** Abolish `mime-edit-signing-type' and `mime-edit-encrypting-type'
-
-  C-c C-m C-s encloses as "pgp-signed" which means PGP/MIME signature.
-
-  C-c C-m C-e encloses as "pgp-encrypted" which means PGP/MIME
-encryption.
-
-
-** New method to detect content of entity
-
-  Now MIME-View can detect content of entity for
-application/octet-stream in default setting.
-
-  It uses "file" command to detect.  User can customize
-`mime-file-content-type-alist' to specify media-type for output of
-"file" command.  It is an alist of "file" output patterns
-vs. corresponding media-types.  Each element looks like (REGEXP TYPE
-SUBTYPE).  REGEXP is pattern for "file" command output.  TYPE is
-symbol to indicate primary type of media-type.  SUBTYPE is symbol to
-indicate subtype of media-type.
-
-
-** New interface to display message
-
-- Function `mime-view-buffer'
-- Function `mime-view-display-message'
-
-
-** Change interface of internal playback method
-
-  Interface of internal playback method was changed to
-
-       (entity situation)
-
-It is as same as interface of body-presentation-method.
-
-
-** Change interface of `mime-view-entity-button-visible-p'
-
-** Change interface of `mime-view-insert-entity-button'
-
-
-** `mime-preview-original-major-mode'
-
-  Abolish variable `mime-preview-original-major-mode'.
-
-  Please use function `mime-preview-original-major-mode' instead of
-it.
-
-
-** mime-preview-over-to-{previous|next}-method-alist
-
-  `mime-preview-over-to-{previous|next}-method-alist' were renamed
-from `mime-view-over-to-{previous|next}-method-alist'.
-
-\f
-* Changes in SEMI 1.5
-
-** mime-w3
-
-  Add inline text/html preview feature using w3.  If
-`mime-setup-enable-inline-html' is not nil, semi-setup.el sets up it.
-
-
-** `pgp-elkins' -> `pgp-mime'
-
-  Rename `pgp-elkins' -> `pgp-mime'.  Variable
-`mime-edit-signing-type' and `mime-edit-encrypting-type' does not
-allow `pgp-elkins'.
-
-
-** type-subtype-score
-
-  Now MIME-View chooses one entity to display body in
-multipart/alternative.  In this mechanism,
-`mime-view-type-subtype-score-alist' is used to specify priority of
-each entity.
-
-  Variable `mime-view-type-subtype-score-alist' is alist of
-TYPE-SUBTYPE vs. SCORE.  TYPE-SUBTYPE is cons pair (TYPE . SUBTYPE),
-symbol TYPE or t.  TYPE and SUBTYPE are symbol.  `t' means default.
-SCORE is integer.  Larger number is larger priority.
-
-
-** text presentation
-
-  Change text presentation mechanism.  In anything older than SEMI
-1.4, text presentation mechanism is based on filter model.  However it
-has design problem about conversion between byte representation and
-text presentation.  So SEMI was changed to use
-body-presentation-method to display text entity.  In this purpose, old
-text decoding features were abolished and introduces news features
-(cf. next section).
-
-
-** mime-raw-representation-type and mime-raw-representation-type-alist
-
-  Abolish `mime-text-decoder' and `mime-text-decoder-alist' because of
-text presentation mechanism change (cf. previous section).  Instead of
-it, SEMI introduces variable about representation-type of
-mime-raw-buffer.  If it is `binary', mime-raw-buffer is as same as
-network representation.  If it is `cooked', mime-raw-buffer is
-code-converted.
-
-  `mime-raw-representation-type-alist' is an alist of major-mode
-vs. representation-type.  Each element looks like
-
-    (SYMBOL . REPRESENTATION-TYPE).
-
-SYMBOL is major-mode or t.  t means default.
-
-  `mime-raw-representation-type' is a buffer local variable of
-mime-raw-buffer.  If it is non-nil, it overrides
-`mime-raw-representation-type-alist'.
-
-  In addition, `mime-raw-buffer-coding-system-alist' was abolished.
-Because representation-type has enough information.
-
-\f
-* Changes in SEMI 1.4
-
-** mailcap
-
-  mailcap was supported to set up 'mime-acting-condition.
-
-  tm-external-method scripts written by born shell were abolished.
-
-
-** mime-add-condition
-
-  New function to set up 'mime-preview-condition and/or
-'mime-acting-condition.
-
-
-** signature setting in semi-setup.el
-
-  Abolish MUA depended signature setting.
-
-  Setting for mail-mode were moved to mail-mime-setup.el.
-
-\f
-* Changes in SEMI 1.3
-
-** mime-acting-condition
-
-  Format of variable 'mime-acting-condition was changed from `atype'
-to `condition tree'.  Its format is as same as
-'mime-preview-condition.
-
-  If there are two or more conditions are found when matching, menu
-pops up to select method to run.  Selected situation will be added to
-example database. (cf. mime-acting-situation-examples-file)
-
-** New variables
-
-*** mime-view-find-every-acting-situation
-
-       Find every available acting-situation if non-nil.
-
-*** mime-acting-situation-examples-file
-
-       File name of example about acting-situation demonstrated by
-       user.
-
-\f
-* Changes in SEMI 1.2
-
-** User setting
-
-*** hooks
-
-  'mime-view-plain-text-preview-hook was renamed to
-'mime-preview-text/plain-hook.
-
-*** Variable
-
-  Variable 'mime-view-childrens-header-showing-Content-Type-list was
-abolished.  Please use 'mime-preview-condition instead.
-
-*** API about visible-predicates were abolished
-
-  Following functions were abolished:
-
-    mime-view-header-visible-p (entity message-info)
-
-    mime-view-body-visible-p (entity message-info)
-
-    mime-view-entity-separator-visible-p (entity message-info)
-
-Please use 'mime-preview-condition instead.
-
-  Function 'mime-view-entity-button-visible-p is not abolished, but it
-is obsoleted.
-
-*** mime-preview-condition
-
-  Following are added as pre-defined keys:
-
-       'childrens-situation    default preview-situation for children
-       'message-button         to specify to display message-button
-                                   nil:        default (invisible)
-                                   'visible:   visible
-                                   'invisible: invisible
-       'entity-button          to specify to display entity-button
-                                   nil:        default (visible)
-                                   'visible:   visible
-                                   'invisible: invisible
-       'header                 to specify to display header
-                                   nil:        default (invisible)
-                                   'visible:   visible
-                                   'invisible: invisible
-
-** API
-
-*** Interface for body-filter
-
-  'mime-view-filter-for-* was renamed to 'mime-preview-filter-for-*.
-
-
-*** mime-text-decode-body
-
-  Function 'mime-decode-text-body was renamed to
-'mime-text-decode-body and changed interface.  New interface is
-following:
-
-       mime-text-decode-body (SITUATION)
-
-SITUATION is preview-situation.  Content-Transfer-Encoding and
-MIME-charset are specified in field of it.
-
-\f
-* Changes in SEMI 1.1
-
-** User setting
-
-*** Setting variable about visible body
-
-  'mime-view-visible-media-type-list and
-'mime-view-content-filter-alist were abolished.  Please use
-'mime-preview-condition instead.
-
-  Notice that 'mime-preview-condition is not list of
-media-type/subtype string nor association-list.  It uses new
-data-structure `ctree' (condition-tree; it is introduced to replace
-`atype').  Function 'ctree-set-calist-strictly and
-'ctree-set-calist-with-default may be useful to modify it (`calist'
-(condition-alist) is as same as `atype').
-
-
-*** API about visible-predicates
-
-  Interface of visible-predicates for entity elements were changed.
-New interfaces are following:
-
-    mime-view-entity-button-visible-p (entity message-info)
-
-    mime-view-header-visible-p (entity message-info)
-
-    mime-view-body-visible-p (entity message-info)
-
-    mime-view-entity-separator-visible-p (entity message-info)
-
-
-** API
-
-*** entity representation
-
-  Structure 'mime-entity-info was renamed to 'mime-entity.  So various
-functions were renamed too.
-
-
-*** Interface for entity-button generators
-
-  Interface of entity-button generators was changed.  New interfaces
-is following:
-
-    mime-view-insert-entity-button (entity message-info subject)
-
-
-*** mime-preview-condition and preview-situation
-
-  Conditions about preview generation are unified to
-'mime-preview-condition.  Namely other variables, such as
-'mime-view-visible-media-type-list, 'mime-view-content-filter-alist,
-'mime-view-image-converter-alist were abolished.
-
-  Preview-situation is generated from entity information, running
-environment and 'mime-preview-condition.  These elements are checked
-to match with each other. (it is similar to acting-situation)
-
-  Format of preview-situation is association-list.  Following key is
-pre-defined:
-
-       'type                     media-type
-       'subtype                  media-subtype
-       'encoding                 content-transfer-encoding
-       'major-mode               major-mode of MUA
-       <STRING>                  attribute of Content-Type field.
-       'body-presentation-method body-presentation-method
-
-If 'body-presentation-method is 'with-filter, 'body-filter is used to
-specify body-filter function.  If 'body-presentation-method is
-function, it is called to generate presentation of entity body.
-
-Body-filter function 'mime-view-filter-for-image refers 'image-format.
-
-Setting for message/partial button is specified by
-'mime-preview-condition instead of hard-coding.
-
-
-*** Interface for body-filter
-
-  Interface of body-filter was changed.  New interfaces is following:
-
-    <body-filter> (situation)
-
-Current pre-defined filters are following:
-
-       mime-view-filter-for-text/plain (situation)
-       mime-view-filter-for-text/richtext (situation)
-       mime-view-filter-for-text/enriched (situation)
-       mime-view-filter-for-image (situation) ; if available
-
-'mime-view-filter-for-application/postscript was abolished.
-
-
-*** Format of mime-acting-condition (acting-situation)
-
-  Format of `mime-acting-condition' were changed.  `type' and
-`subtype' are separated and changed to symbol.
-
-
-*** Renaming
-
-- mime-view-buffer -> mime-preview-buffer
-
-\f
-Local variables:
-mode: outline
-paragraph-separate: "[         \f]*$"
-end:
diff --git a/README.en b/README.en
deleted file mode 100644 (file)
index 38e14c2..0000000
--- a/README.en
+++ /dev/null
@@ -1,207 +0,0 @@
-[README for SEMI kernel package (English Version)]
-
-What's SEMI?
-============
-
-  SEMI is a library to provide MIME feature for GNU Emacs.  MIME is a
-  proposed internet standard for including content and headers other
-  than (ASCII) plain text in messages.
-
-       RFC 2045 : Internet Message Bodies
-       RFC 2046 : Media Types
-       RFC 2047 : Message Header Extensions
-       RFC 2048 : MIME Registration Procedures
-       RFC 2049 : MIME Conformance
-
-  SEMI has the following features:
-
-       - MIME message viewer   (mime-view-mode) (RFC 2045 .. 2049)
-       - MIME message composer (mime-edit-mode) (RFC 2045 .. 2049)
-
-  MIME message viewer and composer also support following features:
-
-       - filename handling by Content-Disposition field (RFC 1806)
-       - PGP/MIME security Multiparts (RFC 2015)
-       - application/pgp (draft-kazu-pgp-mime-00.txt; obsolete)
-       - text/richtext (RFC 1521; obsolete; preview only)
-       - text/enriched (RFC 1896)
-       - External method configuration by mailcap (RFC 1524)
-
-  Notice that this package does not contain MIME extender for any
-  MUAs.  They are released as separated packages.
-
-
-Required environment
-====================
-
-  SEMI supports XEmacs 20.2 or later with mule, and Emacs 20.
-
-  SEMI does not support anything older than Emacs 19.28 or XEmacs
-  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 (8.7 or later) and FLIM (1.7.0 or later) package.
-  Please install them before installing it.  APEL package is available
-  at:
-
-       ftp://ftp.jaist.ac.jp/pub/GNU/elisp/apel/
-
-  and FLIM package is available at:
-
-       ftp://ftp.jaist.ac.jp/pub/GNU/elisp/flim/
-
-  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
-============
-
-       % make install
-
-  You can specify the emacs command name, for example
-
-       % make install EMACS=xemacs
-
-  If `EMACS=...' is omitted, EMACS=emacs is used.
-
-  You can specify the prefix of the directory tree for Emacs Lisp
-  programs and shell scripts, for example:
-
-       % make install PREFIX=~/
-
-  If `PREFIX=...' is omitted, the prefix of the directory tree of the
-  specified emacs command is used (perhaps /usr/local).
-
-  For example, if PREFIX=/usr/local and EMACS 19.34 is specified, it
-  will create the following directory tree:
-
-       /usr/local/share/emacs/19.34/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
-
-  You can specify site-lisp directory, for example
-
-       % make install LISPDIR=~/share/emacs/lisp
-
-  If `LISPDIR=...' is omitted, site-lisp directory of the specified
-  emacs command is used (perhaps /usr/local/share/emacs/site-lisp or
-  /usr/local/lib/xemacs/site-lisp).
-
-  You can specify other optional settings by editing the file
-  ${archive}/SEMI-CFG.  Please read ${archive}/README.en and comments
-  in ${archive}/SEMI-CFG.
-
-
-Initialization
-==============
-
-(a) load-path
-
-  If you are using Emacs or Mule, please add directory of emu, apel,
-  flim and semi to load-path.  If you install by default setting, you
-  can write subdirs.el for example:
-
-  --------------------------------------------------------------------
-  (normal-top-level-add-to-load-path
-   '("apel" "flim" "semi"))
-  --------------------------------------------------------------------
-
-  If you are using XEmacs, there are no need of setting about
-  load-path.
-
-(b) mime-setup
-
-  Please insert the following into your ~/.emacs:
-
-       (load "mime-setup")
-
-
-Documentation
-=============
-
-  To get started, please read ${archive}/README.en.
-
-  RFC's 822, 1524, 1806, 1847, 1896, 2015, 2045, 2046, 2047, 2048 and
-  2049 are available via anonymous ftp:
-
-       ftp://ftp.merit.edu/internet/documents/rfc/
-
-
-Mailing lists
-=============
-
-  If you write bug-reports and/or suggestions for improvement, please
-  send them to the tm Mailing List:
-
-       bug-tm-en@chamonix.jaist.ac.jp  (English)
-       bug-tm-ja@chamonix.jaist.ac.jp  (Japanese)
-
-  Via the tm ML, you can report SEMI bugs, obtain the latest release
-  of SEMI, and discuss future enhancements to SEMI.  To join the tm
-  ML, send an empty e-mail to
-
-       tm-en-help@chamonix.jaist.ac.jp (English)
-       tm-ja-help@chamonix.jaist.ac.jp (Japanese)
-
-  Notice that you should not send mail to author(s), such as
-  morioka@jaist.ac.jp, directly.  Because your problem may occur in
-  other environments (if not, it might be your problem, not bug of
-  SEMI).  We should discuss in the tm mailing lists.  Anyway
-  direct-mail for authors might be ignored.  Please send mail to the
-  tm mailing lists.
-
-
-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>
diff --git a/SEMI-CFG b/SEMI-CFG
deleted file mode 100644 (file)
index d56c948..0000000
--- a/SEMI-CFG
+++ /dev/null
@@ -1,166 +0,0 @@
-;;; -*-Emacs-Lisp-*-
-
-;; SEMI-CFG: installation setting about SEMI.
-
-;;; Code:
-
-(require 'cl)
-
-(defvar default-load-path load-path)
-
-(add-to-list 'load-path
-            (expand-file-name "../../site-lisp/apel" data-directory))
-(add-to-list 'load-path
-            (expand-file-name "." data-directory))
-
-(when (boundp 'LISPDIR)
-  (add-to-list 'default-load-path LISPDIR)
-  (add-to-list 'load-path LISPDIR)
-  (add-to-list 'load-path (expand-file-name "apel" LISPDIR))
-  )
-
-(condition-case nil
-    (require 'install)
-  (error (error "Please install APEL 8.7 or later.")))
-
-(add-path "bitmap-mule")
-(add-path "flim")
-
-(add-to-list 'load-path (expand-file-name "."))
-
-(or (module-installed-p 'calist)
-    (error "Please install APEL 8.7 or later."))
-(or (module-installed-p 'mime)
-    (error "Please install FLIM 1.6.0 or later."))
-(if (module-installed-p 'tm-view)
-    (message "Please remove tm from load-path."))
-
-
-;;; @ Please specify optional package directory if you use them.
-;;;
-
-;; It is only necessary to use `add-path' if these packages are not
-;; already on the standard load-path of Emacs.
-
-;; Function `get-latest-path' detect latest version of such package
-;; under load-path directories. If you want to use a version of a
-;; package instead of latest version, please specify by argument of
-;; function `add-path'.
-
-;; Function `add-path' finds path under load-path directories. If a
-;; package does not exist in load-path, please specify by absolutely
-;; (`~/' is available), for example
-;;     (add-path "~/lib/elisp/mailcrypt-3.4")
-;; or
-;;     (add-path "/opt/share/xmule/site-lisp/mailcrypt-3.4")
-
-
-;;; @@ Please specify Mailcrypt path.
-;;;
-
-;; Use latest version installed in load-path.
-
-(let ((path (get-latest-path "mailcrypt" 'all-paths)))
-  (if path
-      (add-path path)
-    ))
-
-;; Or please specify path.
-;; (add-path "mailcrypt-3.4" 'all-paths)
-
-
-;;; @@ Please specify BBDB path.
-;;;
-
-(let ((path (get-latest-path "bbdb" 'all-paths)))
-  (when path
-    (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)
-
-
-;;;
-;;; @@ Please specify Emacs/W3 path.
-;;;
-
-(let ((path (get-latest-path "w3" 'all-paths)))
-  (when path
-    (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)
-
-
-;;; @ shell
-;;;
-
-;; Please specify shell command path.
-(setq SHELL
-      (find-if (function file-exists-p)
-              '("/bin/sh" "/usr/bin/sh")
-              ))
-
-;; Please specify shell command option.
-(setq SHELLOPTION "-c")
-
-
-;;; @ Please specify prefix of install directory.
-;;;
-
-;; Please specify install path prefix.
-;; If it is omitted, shared directory (maybe /usr/local is used).
-(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)
-         "emu"
-       ""))
-
-;; Please specify SEMI prefix [optional]
-(setq SEMI_PREFIX "semi")
-
-
-;;; @ 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))
-
-
-\f
-
-;;; @ optional settings
-;;;
-
-;; It is generated by automatically. Please set variable `PREFIX'.
-;; If you don't like default directory tree, please set it.
-(defvar LISPDIR (install-detect-elisp-directory PREFIX))
-;; (setq install-default-elisp-directory "~/lib/emacs/lisp")
-
-(setq SEMI_KERNEL_DIR  (expand-file-name SEMI_PREFIX   LISPDIR))
-(setq SETUP_FILE_DIR   SEMI_KERNEL_DIR)
-
-(setq METHOD_SRC_DIR "methods")
-(setq METHODS
-      '("tm-au" "tm-file" "tm-html" "tm-image" "tm-mpeg"
-       "tm-plain" "tm-ps"
-       "tmdecode"))
-
-;;; SEMI-CFG ends here
diff --git a/SEMI-ELS b/SEMI-ELS
deleted file mode 100644 (file)
index ff195ea..0000000
--- a/SEMI-ELS
+++ /dev/null
@@ -1,40 +0,0 @@
-;;; -*-Emacs-Lisp-*-
-
-;; SEMI-ELS: list of SEMI modules to install
-
-;;; Code:
-
-(setq semi-modules-to-compile
-      '(signature
-       semi-def mime-view mime-text mime-play mime-partial mime-edit
-       semi-setup mail-mime-setup))
-
-(setq semi-modules-not-to-compile nil)
-
-(mapcar (function
-        (lambda (cell)
-          (let ((c-module (car cell))
-                (i-modules (cdr cell))
-                )
-            (if (module-installed-p c-module)
-                (setq semi-modules-to-compile
-                      (nconc semi-modules-to-compile i-modules))
-              (setq semi-modules-not-to-compile
-                    (nconc semi-modules-not-to-compile i-modules))
-              )
-            )))
-       '((mailcrypt    mime-pgp mime-mc)
-         (bbdb         mime-bbdb)
-         (w3           mime-w3)
-         ))
-
-(if (or (string-match "XEmacs" emacs-version)
-       (featurep 'mule))
-    (setq semi-modules-to-compile
-         (nconc semi-modules-to-compile '(mime-image)))
-  )
-
-(setq semi-modules (append semi-modules-to-compile
-                          semi-modules-not-to-compile))
-
-;;; SEMI-ELS ends here
diff --git a/SEMI-MK b/SEMI-MK
deleted file mode 100644 (file)
index 5abe824..0000000
--- a/SEMI-MK
+++ /dev/null
@@ -1,54 +0,0 @@
-;;; -*-Emacs-Lisp-*-
-;;;
-;;; $Id: SEMI-MK,v 1.2 1998-03-13 12:55:52 morioka Exp $
-;;;
-;;; Code:
-
-(defun config-semi ()
-  (let (prefix exec-prefix lisp-dir)
-    (and (setq prefix (car command-line-args-left))
-        (or (string-equal "NONE" 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)
-            ))
-    (setq command-line-args-left (cdr command-line-args-left))
-    )
-  (load-file "SEMI-CFG")
-  (load-file "SEMI-ELS")
-  (princ (format "PREFIX=%s\tEXEC_PREFIX=%s
-LISPDIR=%s\n" PREFIX EXEC_PREFIX LISPDIR))
-  )
-
-(defun directory= (dir1 dir2)
-  (string= (file-name-as-directory dir1)(file-name-as-directory dir2))
-  )
-
-(defun compile-semi ()
-  (config-semi)
-  (print load-path)
-  (compile-elisp-modules semi-modules-to-compile ".")
-  (compile-elisp-module  'mime-setup           ".")
-  )
-
-(defun install-semi ()
-  (config-semi)
-  (princ (format "%s\n" emacs-version))
-  (install-elisp-modules semi-modules   "."    SEMI_KERNEL_DIR)
-  (install-elisp-modules '(mime-setup)  "."    SETUP_FILE_DIR)
-  )
-
-(defun install-execs ()
-  (config-semi)
-  (install-files METHODS METHOD_SRC_DIR METHOD_DIR nil t)
-  )
-
-;;; SEMI-MK ends here
diff --git a/SEMI-naming.ol b/SEMI-naming.ol
deleted file mode 100644 (file)
index 746e1f4..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-* MIME-View
-
-** mime-entity-*
-
-  mime-entity related functions.
-
-
-** mime-raw-*
-
-  mime-raw-buffer related features.
-
-    - buffer local variables in mime-raw-buffer
-
-    - functions expected running in mime-raw-buffer
-
-
-** mime-preview-*
-
-  mime-preview-buffer related features.
-
-    - buffer local variables in mime-preview-buffer
-
-    - functions expected running in mime-preview-buffer
-
-
-** mime-display-*
-
-    - functions to make presentation in mime-preview-buffer from
-      element(s) of mime-raw-buffer
-
-
-** mime-view-*
-
-  MIME-View related general features.
-
-    - variables or functions related with both mime-raw-buffer and
-      mime-preview-buffer
-
-    - customizable variables
-
-    - view something and enter another mode in another buffer
diff --git a/TODO b/TODO
deleted file mode 100644 (file)
index 4a051ff..0000000
--- a/TODO
+++ /dev/null
@@ -1,105 +0,0 @@
-[TODO]
-======
-
-* MIME-View
-
-** dynamic configuration for 'mime-preview-condition
-
-** multipart/related support
-
-** 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.
-
-
-* MIME-Edit
-
-** WYSIWYG editing support
-
-** 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
-
-    For example:
-
-        (a) translate problematic characters to similar representation
-       (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
-
-** Content-ID is mandatory for message/external-body
diff --git a/VERSION b/VERSION
deleted file mode 100644 (file)
index 10f7c90..0000000
--- a/VERSION
+++ /dev/null
@@ -1,172 +0,0 @@
-[SEMI Version names]
-
-0.72   --------                --------
-0.75   --------                --------
-0.83   --------                --------
-0.87   --------                --------
-0.88   --------                --------
-0.91   --------                --------
-0.92   --------                --------
-
-;;-------------------------------------------------------------------------
-;;     Hokuriku Railway        \e$(BKLN&E4F;\e(B
-;;     Ishikawa Line           \e$(B@P@n@~\e(B
-;;-------------------------------------------------------------------------
-0.96   Kaga-Ichinomiya         \e$(B2C2l0l$N5\\e(B       ; \e$(B!JGr;3Hf\e$(D5/\e$(B?@<R!K\e(B
-0.97   Naka-Tsurugi            \e$(BCfDaMh\e(B
-0.112  Tsurugi                 \e$(BDaMh\e(B             ; <=> \e$(B$8$c$$%P%9\e(B
-0.115  Hinomiko                \e$(BF|8f;R\e(B
-0.115.1        Oyanagi                 \e$(B>.Lx\e(B
-0.115.2        Inokuchi                \e$(B0f8}\e(B
-0.116  D\e-Dòhòji\e-A                    \e$(BF;K!;{\e(B
-0.118  Sodani                  \e$(BA>C+\e(B
-0.118.1        Shijima                 \e$(B;M==K|\e(B
-0.118.2        Otomaru                 \e$(B254]\e(B
-1.0.0  Nukaj\e-Dþtaku-mae\e-A            \e$(B3[=;BpA0\e(B
-1.0.1  Magae                   \e$(BGOBX\e(B
-1.0.2  Nonoichi-K\e-Dòdaimae\e-A \e$(BLn!9;T9)BgA0\e(B
-1.1.0  Nonoichi                \e$(BLn!9;T\e(B
-1.1.1  Oshino                  \e$(B2!Ln\e(B
-1.1.2  Shin-Nishikanazawa      \e$(B?7@>6bBt\e(B ; <=> JR \e$(B@>6bBt\e(B
-1.2.0  Nishiizumi              \e$(B@>@t\e(B
-1.2.1  Nomachi                 \e$(BLnD.\e(B
-
-;;-------------------------------------------------------------------------
-;;     West Japan Railway      \e$(B@>F|K\N95RE4F;\e(B   http://www.westjr.co.jp/
-;;     Hokuriku Line           \e$(BKLN&K\@~\e(B
-;;-------------------------------------------------------------------------
-1.2.2  Naoetsu                 \e$(BD>9>DE\e(B           ; = JR \e$(B?.1[K\@~\e(B
-1.2.3  Tanihama                \e$(BC+IM\e(B
-1.2.4  Arimagawa               \e$(BM-4V@n\e(B
-1.3.0  Nadachi                 \e$(BL>N)\e(B
-1.3.1  Tsutsuishi              \e$(BE{@P\e(B
-1.3.2  N\e-Dò\e-A                        \e$(BG=@8\e(B
-1.3.3  Uramoto                 \e$(B1:K\\e(B
-1.3.4  Kajiyashiki             \e$(B3a20I_\e(B
-1.4.0  Itoigawa                \e$(B;e5{@n\e(B           ; = JR \e$(BBg;e@~\e(B
-1.4.1  \e-DÃ’mi\e-A                       \e$(B@D3$\e(B
-1.4.2  Oyashirazu              \e$(B?FITCN\e(B
-1.4.3  Ichiburi                \e$(B;T?6\e(B
-1.4.4  Ecch\e-Dþ-Miyazaki\e-A            \e$(B1[Cf5\:j\e(B
-1.4.5  Tomari                  \e$(BGq\e(B
-1.4.6  Ny\e-Dþzen\e-A                    \e$(BF~A1\e(B
-1.5.0  Nishi-Ny\e-Dþzen\e-A              \e$(B@>F~A1\e(B
-1.5.1  Ikuji                   \e$(B@8CO\e(B
-1.5.2  Kurobe                  \e$(B9uIt\e(B
-1.5.3  Uozu                    \e$(B5{DE\e(B             ; <=> \e$(BIY;3COJ}E4F;\e(B
-1.5.4  Higashi-Namerikawa      \e$(BEl3j@n\e(B
-1.6.0  Namerikawa              \e$(B3j@n\e(B             ; <=> \e$(BIY;3COJ}E4F;\e(B
-1.7.0  Mizuhashi               \e$(B?e66\e(B
-1.7.1  Higashi-Toyama          \e$(BElIY;3\e(B
-1.8.0  Toyama                  \e$(BIY;3\e(B             ; = JR \e$(B9b;3K\@~!"IY;39A@~\e(B
-:      :                       :
--------        Takaoka                 \e$(B9b2,\e(B             ; = JR \e$(BI98+@~!">kC<@~\e(B
-:      :                       :
--------        Higashi-Kanazawa        \e$(BEl6bBt\e(B
--------        Kanazawa                \e$(B6bBt\e(B             ; <=> \e$(BKLN&E4F;\e(B \e$(BKLE46bBt\e(B
--------        Nishi-Kanazawa          \e$(B@>6bBt\e(B           ; <=> \e$(BKLN&E4F;\e(B \e$(B?7@>6bBt\e(B
--------        (JR) Nonoichi           \e$(BLn!9;T\e(B
-:      :                       :
--------        Tsuruga                 \e$(BFX2l\e(B             ; = JR \e$(B>.IM@~\e(B
--------        Shin-Hikida             \e$(B?7I%ED\e(B
--------        \e-DÃ’mi-Shiotsu\e-A               \e$(B6a9>1vDE\e(B ; = JR \e$(B8P@>@~\e(B
--------        Yogo                    \e$(BM>8b\e(B
--------        Kinomoto                \e$(BLZ%NK\\e(B
--------        Takatsuki               \e$(B9b7n\e(B
--------        Kawake                  \e$(B2OLS\e(B
--------        Torahime                \e$(B8WI1\e(B
--------        Nagahama                \e$(BD9IM\e(B
-------- Tamura                 \e$(BEDB<\e(B
--------        Sakata                  \e$(B:dED\e(B
-       (Maibara)               (\e$(BJF86\e(B)           ; = JR \e$(BEl3$F;K\@~\e(B
-
-
-[WEMI version names]
-
-;;-------------------------------------------------------------------------
-;;     East Japan Railway      \e$(BElF|K\N95RE4F;\e(B   http://www.jreast.co.jp/
-;;     T\e-Dòkaidò\e-A Line              \e$(BEl3$F;K\@~\e(B
-;;-------------------------------------------------------------------------
-1.2.0  T\e-Dòkyò\e-A             \e$(BEl5~\e(B
-1.2.1  Shinbashi       \e$(B?766\e(B     ; = JR \e$(B;3<j@~!"2#?\2l@~\e(B
-1.2.2  Shinagawa       \e$(BIJ@n\e(B     ; = JR \e$(B;3<j@~!"2#?\2l@~\e(B
-1.2.3  Kawasaki        \e$(B@n:j\e(B     ; = JR \e$(BFnIp@~\e(B
-1.2.4  Yokohama        \e$(B2#IM\e(B     ; = JR \e$(B5~IMElKL@~!&:,4_@~!"2#?\2l@~\e(B
-1.3.0  Totsuka         \e$(B8MDM\e(B     ; = JR \e$(B2#?\2l@~\e(B
-1.3.1  \e-DÃ’funa\e-A             \e$(BBgA%\e(B     ; = JR \e$(B:,4_@~!"2#?\2l@~\e(B
-1.4.0  Fujisawa        \e$(BF#Bt\e(B     ; <=> \e$(B>.ED5^EEE4\e(B \e$(B9>%NEg@~!"9>%NEgEEE4\e(B
-1.4.1  Tsujid\e-Dò\e-A           \e$(@DT\e$(BF2\e(B ; \e$(B!J!V\e$(@DT\e$(B!W\e(B= J90@B-4454:128b\e$(B!K\e(B
-1.4.2  Chigasaki       \e$(B3}%v:j\e(B   ; = JR \e$(BAjLO@~\e(B
-1.4.3  Hiratsuka       \e$(BJ?DM\e(B
-1.4.4  \e-DÃ’iso\e-A              \e$(BBg0k\e(B
-1.4.5  Ninomiya        \e$(BFs5\\e(B
-1.4.6  K\e-Dòzu\e-A              \e$(B9qI\DE\e(B   ; = JR \e$(B8fEB>l@~\e(B
-1.5.0  Kamonomiya      \e$(B3{5\\e(B
-1.5.1  Odawara         \e$(B>.ED86\e(B   ; <=> \e$(B>.ED5^!"H":,EP;3E4F;!"0KF&H":,E4F;\e(B
-1.5.2  Hayakawa        \e$(BAa@n\e(B
-1.5.3  Nebukawa        \e$(B:,I\@n\e(B
-1.5.4  Manazuru        \e$(B??Da\e(B
-1.6.0  Yugawara        \e$(BEr2O86\e(B
-1.7.0  Atami           \e$(BG.3$\e(B     ; = JR \e$(B0KEl@~\e(B
-;;-------------------------------------------------------------------------
-;;     Central Japan Railway   \e$(BEl3$N95RE4F;\e(B
-;;-------------------------------------------------------------------------
-1.7.1  Kan'nami        \e$(BH!Fn\e(B
------  Mishima         \e$(B;0Eg\e(B     ; = \e$(B0KF&H":,E4F;\e(B
------  Numazu          \e$(B>BDE\e(B     ; = JR \e$(B8fEB>l@~\e(B
------  Katahama        \e$(BJRIM\e(B
------  Hara            \e$(B86\e(B
------  Higashi-Tagonoura       \e$(BElED;R%N1:\e(B
------  Yoshiwara       \e$(B5H86\e(B     ; = \e$(B3YFnE4F;\e(B
------  Fuji            \e$(BIY;N\e(B     ; = JR \e$(B?H1d@~\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
------  Nagoya          \e$(BL>8E20\e(B   ; = JR \e$(B4X@>K\@~!J!&Cf1{K\@~!K\e(B
-:      :               :
------  Gifu            \e$(B4tIl\e(B     ; = JR \e$(B9b;3K\@~\e(B
-:      :               :
------  Samegai         \e$(B@C%v0f\e(B
-;;-------------------------------------------------------------------------
-;;     West Japan Railway      \e$(B@>F|K\N95RE4F;\e(B   http://www.westjr.co.jp/
-;;-------------------------------------------------------------------------
------  Maibara         \e$(BJF86\e(B     ; = JR \e$(BKLN&K\@~\e(B
-:      :               :
------  Kusatsu         \e$(BApDE\e(B     ; = JR \e$(BApDE@~\e(B
-:      :               :
------  Yamashina       \e$(B;32J\e(B     ; = JR \e$(B8P@>@~\e(B
------  Ky\e-Dòto\e-A             \e$(B5~ET\e(B     ; = JR \e$(BF`NI@~!&;31"K\@~\e(B
-                               ;   <=> \e$(B6aE4\e(B \e$(B5~ET@~!"5~ET;T8rDL6I\e(B \e$(B1(4]@~\e(B
-:      :               :
------  \e-DÃ’saka\e-A             \e$(BBg:e\e(B     ; = JR \e$(BBg:e4D>u@~\e(B <=> JR \e$(BEl@>@~\e(B \e$(BKL?7CO\e(B
-                               ;   <=> \e$(BBg:e;T8rDL6I!":e?@!":e5^\e(B \e$(BG_ED\e(B
-:      :               :
------  K\e-Dòbe\e-A              \e$(B?@8M\e(B     ; = JR \e$(B;3M[K\@~\e(B
-
-
-[REMI version names]
-
-;;-------------------------------------------------------------------------
-;;     West Japan Railway      \e$(B@>F|K\N95RE4F;\e(B   http://www.westjr.co.jp/
-;;     Himi Line               \e$(BI98+@~\e(B
-;;-------------------------------------------------------------------------
-1.4.0  Himi                    \e$(BI98+\e(B
-1.5.0  Shimao                  \e$(BEgHx\e(B
-1.6.0  Amaharashi              \e$(B1+@2\e(B
-1.7.0  Ecch\e-Dþ-Kokubu\e-A              \e$(B1[Cf9qJ,\e(B
--------        Fushiki                 \e$(BIzLZ\e(B
--------        Noumachi                \e$(BG=D.\e(B
--------        Ecch\e-Dþ-Nakagawa\e-A            \e$(B1[CfCf@n\e(B
-       (Takaoka)               (\e$(B9b2,\e(B)           ; = JR \e$(BKLN&K\@~!">kC<@~\e(B
-
-
-[etc.]
-
-;;-------------------------------------------------------------------------
-;;     West Japan Railway      \e$(B@>F|K\N95RE4F;\e(B   http://www.westjr.co.jp/
-;;     Kosei Line              \e$(B8P@>@~\e(B
-;;-------------------------------------------------------------------------
--------        (\e-DÃ’mi-Shiotsu)\e-A             (\e$(B6a9>1vDE\e(B)       ; = JR \e$(BKLN&K\@~\e(B
-:      :                       :
--------        Nishi-\e-DÃ’tsu\e-A                \e$(B@>BgDE\e(B
-       (Yamashina)             (\e$(B;32J\e(B)           ; = JR \e$(BEl3$F;K\@~\e(B
diff --git a/ftp.in b/ftp.in
deleted file mode 100644 (file)
index 7cb4860..0000000
--- a/ftp.in
+++ /dev/null
@@ -1,17 +0,0 @@
---<<alternative>>-{
-
-  It is available from
-
-    ftp://ftp.jaist.ac.jp/pub/GNU/elisp/semi/
-
---[[message/external-body;
-       access-type=anon-ftp;
-       site="ftp.jaist.ac.jp";
-       directory="/pub/GNU/elisp/semi";
-       name="semi-VERSION.tar.gz";
-       mode=image]]
-Content-Type: application/octet-stream;
-       name="semi-VERSION.tar.gz";
-       type=tar;
-       conversions=gzip
---}-<<alternative>>
diff --git a/mail-mime-setup.el b/mail-mime-setup.el
deleted file mode 100644 (file)
index 710d15b..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-;;; mail-mime-setup.el --- setup file for mail-mode.
-
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: mail-mode, MIME, multimedia, multilingual, encoded-word
-
-;; This file is part of SEMI (Setting for Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'semi-setup)
-(require 'alist)
-
-
-(autoload 'turn-on-mime-edit "mime-edit"
-  "Unconditionally turn on MIME-Edit minor mode." t)
-
-(autoload 'eword-decode-header "eword-decode"
-  "Decode MIME encoded-words in header fields." t)
-
-
-;;; @ for mail-mode, RMAIL and VM
-;;;
-
-(add-hook 'mail-setup-hook 'eword-decode-header)
-(add-hook 'mail-setup-hook 'turn-on-mime-edit 'append)
-(add-hook 'mail-send-hook  'mime-edit-maybe-translate)
-(set-alist 'mime-edit-split-message-sender-alist
-           'mail-mode (function
-                       (lambda ()
-                         (interactive)
-                         (funcall send-mail-function)
-                         )))
-
-
-;;; @ for signature
-;;;
-
-(if mime-setup-use-signature
-    (setq mail-signature nil)
-  )
-
-
-;;; @ end
-;;;
-
-(provide 'mail-mime-setup)
-
-;;; mail-mime-setup.el ends here
diff --git a/mime-bbdb.el b/mime-bbdb.el
deleted file mode 100644 (file)
index 381655c..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-;;; mime-bbdb.el --- SEMI shared module for BBDB
-
-;; Copyright (C) 1995,1996,1997 Shuhei KOBAYASHI
-;; Copyright (C) 1997,1998 MORIOKA Tomohiko
-
-;; Author: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Maintainer: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Keywords: BBDB, MIME, multimedia, multilingual, mail, news
-
-;; This file is part of SEMI (Suite of Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'path-util)
-(require 'std11)
-(require 'mime-view)
-
-(if (module-installed-p 'bbdb-com)
-    (require 'bbdb-com)
-  (eval-when-compile
-    ;; imported from bbdb-1.51
-    (defmacro bbdb-pop-up-elided-display ()
-      '(if (boundp 'bbdb-pop-up-elided-display)
-          bbdb-pop-up-elided-display
-        bbdb-elided-display))
-    (defmacro bbdb-user-mail-names ()
-      "Returns a regexp matching the address of the logged-in user"
-      '(or bbdb-user-mail-names
-          (setq bbdb-user-mail-names
-                (concat "\\b" (regexp-quote (user-login-name)) "\\b"))))
-    ))
-
-
-;;; @ User Variables
-;;;
-
-(defvar mime-bbdb/use-mail-extr t
-  "*If non-nil, `mail-extract-address-components' is used.
-Otherwise `mime-bbdb/extract-address-components' overrides it.")
-
-(defvar mime-bbdb/auto-create-p nil
-  "*If t, create new BBDB records automatically.
-If function, then it is called with no arguments to decide whether an
-entry should be automatically creaded.
-
-mime-bbdb uses this variable instead of `bbdb/mail-auto-create-p' or
-`bbdb/news-auto-create-p' unless other tm-MUA overrides it.")
-
-(defvar mime-bbdb/delete-empty-window nil
-  "*If non-nil, delete empty BBDB window.
-All bbdb-MUAs but bbdb-gnus display BBDB window even if it is empty.
-If you prefer behavior of bbdb-gnus, set this variable to t.
-
-For framepop users: If empty, `framepop-banish' is used instead.")
-
-;;; @ mail-extr
-;;;
-
-(defun mime-bbdb/extract-address-components (str)
-  (let* ((ret     (std11-extract-address-components str))
-         (phrase  (car ret))
-         (address (car (cdr ret)))
-         (methods mime-bbdb/canonicalize-full-name-methods))
-    (while (and phrase methods)
-      (setq phrase  (funcall (car methods) phrase)
-            methods (cdr methods)))
-    (if (string= address "") (setq address nil))
-    (if (string= phrase "") (setq phrase nil))
-    (list phrase address)
-    ))
-
-(or mime-bbdb/use-mail-extr
-    (progn
-      (require 'mail-extr) ; for `what-domain'
-      (or (fboundp 'tm:mail-extract-address-components)
-          (fset 'tm:mail-extract-address-components
-                (symbol-function 'mail-extract-address-components)))
-      (fset 'mail-extract-address-components
-           (symbol-function 'mime-bbdb/extract-address-components))
-      ))
-
-
-;;; @ bbdb-extract-field-value
-;;;
-
-(or (fboundp 'tm:bbdb-extract-field-value)
-    (progn
-      ;; (require 'bbdb-hooks) ; not provided.
-      ;; (or (fboundp 'bbdb-extract-field-value) ; defined as autoload
-      (or (fboundp 'bbdb-header-start)
-          (load "bbdb-hooks"))
-      (fset 'tm:bbdb-extract-field-value
-            (symbol-function 'bbdb-extract-field-value))
-      (defun bbdb-extract-field-value (field)
-        (let ((value (tm:bbdb-extract-field-value field)))
-          (and value
-               (eword-decode-string value))))
-      ))
-
-
-;;; @ full-name canonicalization methods
-;;;
-
-(defun mime-bbdb/canonicalize-spaces (str)
-  (let (dest)
-    (while (string-match "\\s +" str)
-      (setq dest (cons (substring str 0 (match-beginning 0)) dest))
-      (setq str (substring str (match-end 0)))
-      )
-    (or (string= str "")
-        (setq dest (cons str dest)))
-    (setq dest (nreverse dest))
-    (mapconcat 'identity dest " ")
-    ))
-
-(defun mime-bbdb/canonicalize-dots (str)
-  (let (dest)
-    (while (string-match "\\." str)
-      (setq dest (cons (substring str 0 (match-end 0)) dest))
-      (setq str (substring str (match-end 0)))
-      )
-    (or (string= str "")
-        (setq dest (cons str dest)))
-    (setq dest (nreverse dest))
-    (mapconcat 'identity dest " ")
-    ))
-
-(defvar mime-bbdb/canonicalize-full-name-methods
-  '(eword-decode-string
-    mime-bbdb/canonicalize-dots
-    mime-bbdb/canonicalize-spaces))
-
-
-;;; @ BBDB functions for mime-view-mode
-;;;
-
-(defun mime-bbdb/update-record (&optional offer-to-create)
-  "Return the record corresponding to the current MIME previewing message.
-Creating or modifying it as necessary. A record will be created if
-mime-bbdb/auto-create-p is non-nil, or if OFFER-TO-CREATE is non-nil and
-the user confirms the creation."
-  (save-excursion
-    (if (and mime-preview-buffer
-             (get-buffer mime-preview-buffer))
-        (set-buffer mime-preview-buffer))
-    (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))
-            addr)
-       (if (or (null from)
-                (null (setq addr (car (mime-read-field 'From message))))
-                (string-match (bbdb-user-mail-names)
-                             (std11-address-string addr)))
-            (setq from (or (mime-fetch-field 'To message)
-                          from))
-         )
-        (if from
-            (bbdb-annotate-message-sender
-             (eword-decode-structured-field-body from) t
-             (or (bbdb-invoke-hook-for-value mime-bbdb/auto-create-p)
-                 offer-to-create)
-             offer-to-create))
-        ))))
-
-(defun mime-bbdb/annotate-sender (string)
-  "Add a line to the end of the Notes field of the BBDB record
-corresponding to the sender of this message."
-  (interactive
-   (list (if bbdb-readonly-p
-             (error "The Insidious Big Brother Database is read-only.")
-           (read-string "Comments: "))))
-  (bbdb-annotate-notes (mime-bbdb/update-record t) string))
-
-(defun mime-bbdb/edit-notes (&optional arg)
-  "Edit the notes field or (with a prefix arg) a user-defined field
-of the BBDB record corresponding to the sender of this message."
-  (interactive "P")
-  (let ((record (or (mime-bbdb/update-record t)
-                    (error ""))))
-    (bbdb-display-records (list record))
-    (if arg
-       (bbdb-record-edit-property record nil t)
-      (bbdb-record-edit-notes record t))))
-
-(defun mime-bbdb/show-sender ()
-  "Display the contents of the BBDB for the sender of this message.
-This buffer will be in bbdb-mode, with associated keybindings."
-  (interactive)
-  (let ((record (mime-bbdb/update-record t)))
-    (if record
-       (bbdb-display-records (list record))
-       (error "unperson"))))
-
-(defun mime-bbdb/pop-up-bbdb-buffer (&optional offer-to-create)
-  "Make the *BBDB* buffer be displayed along with the MIME preview window(s),
-displaying the record corresponding to the sender of the current message."
-  (let ((framepop (eq temp-buffer-show-function 'framepop-display-buffer)))
-    (or framepop
-        (bbdb-pop-up-bbdb-buffer
-         (function
-          (lambda (w)
-            (let ((b (current-buffer)))
-              (set-buffer (window-buffer w))
-              (prog1 (eq major-mode 'mime-view-mode)
-                (set-buffer b)))))))
-    (let ((bbdb-gag-messages t)
-          (bbdb-use-pop-up nil)
-          (bbdb-electric-p nil))
-      (let ((record (mime-bbdb/update-record offer-to-create))
-            (bbdb-elided-display (bbdb-pop-up-elided-display))
-            (b (current-buffer)))
-        (if framepop
-            (if record
-                (bbdb-display-records (list record))
-              (framepop-banish))
-          (bbdb-display-records (if record (list record) nil))
-          (if (and (null record)
-                   mime-bbdb/delete-empty-window)
-              (delete-windows-on (get-buffer "*BBDB*"))))
-        (set-buffer b)
-        record))))
-
-(defun mime-bbdb/define-keys ()
-  (let ((mime-view-mode-map (current-local-map)))
-    (define-key mime-view-mode-map ";" 'mime-bbdb/edit-notes)
-    (define-key mime-view-mode-map ":" 'mime-bbdb/show-sender)
-    ))
-
-(add-hook 'mime-view-define-keymap-hook 'mime-bbdb/define-keys)
-
-
-;;; @ for signature.el
-;;;
-
-(defun signature/get-bbdb-sigtype (addr)
-  "Extract sigtype information from BBDB."
-  (let ((record (bbdb-search-simple nil addr)))
-    (and record
-         (bbdb-record-getprop record 'sigtype))
-    ))
-
-(defun signature/set-bbdb-sigtype (sigtype addr)
-  "Add sigtype information to BBDB."
-  (let* ((bbdb-notice-hook nil)
-         (record (bbdb-annotate-message-sender
-                  addr t
-                  (bbdb-invoke-hook-for-value
-                   bbdb/mail-auto-create-p)
-                  t)))
-    (if record
-        (progn
-          (bbdb-record-putprop record 'sigtype sigtype)
-          (bbdb-change-record record nil))
-      )))
-
-(defun signature/get-sigtype-from-bbdb (&optional verbose)
-  (let* ((to (std11-field-body "To"))
-         (addr (and to
-                    (car (cdr (mail-extract-address-components to)))))
-         (sigtype (signature/get-bbdb-sigtype addr))
-         return
-         )
-    (if addr
-        (if verbose
-            (progn
-              (setq return (signature/get-sigtype-interactively sigtype))
-              (if (and (not (string-equal return sigtype))
-                       (y-or-n-p
-                        (format "Register \"%s\" for <%s>? " return addr))
-                       )
-                  (signature/set-bbdb-sigtype return addr)
-                )
-              return)
-          (or sigtype
-              (signature/get-signature-file-name))
-          ))
-    ))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-bbdb)
-
-(run-hooks 'mime-bbdb-load-hook)
-
-;;; end of mime-bbdb.el
diff --git a/mime-edit.el b/mime-edit.el
deleted file mode 100644 (file)
index f911ce2..0000000
+++ /dev/null
@@ -1,2685 +0,0 @@
-;;; mime-edit.el --- Simple MIME Composer for GNU Emacs
-
-;; Copyright (C) 1993,1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: UMEDA Masanobu <umerin@mse.kyutech.ac.jp>
-;;         MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1994/08/21 renamed from mime.el
-;;     Renamed: 1997/2/21 from tm-edit.el
-;; Keywords: MIME, multimedia, multilingual, mail, news
-
-;; This file is part of SEMI (Sophisticated Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;; This is an Emacs minor mode for editing Internet multimedia
-;; messages formatted in MIME (RFC 2045, 2046, 2047, 2048 and 2049).
-;; All messages in this mode are composed in the tagged MIME format,
-;; that are described in the following examples.  The messages
-;; composed in the tagged MIME format are automatically translated
-;; into a MIME compliant message when exiting the mode.
-
-;; Mule (multilingual feature of Emacs 20 and multilingual extension
-;; for XEmacs 20) has a capability of handling multilingual text in
-;; limited ISO-2022 manner that is based on early experiences in
-;; Japanese Internet community and resulted in RFC 1468 (ISO-2022-JP
-;; charset for MIME).  In order to enable multilingual capability in
-;; single text message in MIME, charset of multilingual text written
-;; in Mule is declared as either `ISO-2022-JP-2' [RFC 1554].  Mule is
-;; required for reading the such messages.
-
-;; This MIME composer can work with Mail mode, mh-e letter Mode, and
-;; News mode.  First of all, you need the following autoload
-;; definition to load mime-edit-mode automatically:
-;;
-;; (autoload 'turn-on-mime-edit "mime-edit"
-;;           "Minor mode for editing MIME message." t)
-;;
-;; In case of Mail mode (includes VM mode), you need the following
-;; hook definition:
-;;
-;; (add-hook 'mail-mode-hook 'turn-on-mime-edit)
-;; (add-hook 'mail-send-hook 'mime-edit-maybe-translate)
-;;
-;; In case of MH-E, you need the following hook definition:
-;;
-;; (add-hook 'mh-letter-mode-hook
-;;           (function
-;;            (lambda ()
-;;              (turn-on-mime-edit)
-;;              (make-local-variable 'mail-header-separator)
-;;              (setq mail-header-separator "--------")
-;;              ))))
-;; (add-hook 'mh-before-send-letter-hook 'mime-edit-maybe-translate)
-;;
-;; In case of News mode, you need the following hook definition:
-;;
-;; (add-hook 'news-reply-mode-hook 'turn-on-mime-edit)
-;; (add-hook 'news-inews-hook 'mime-edit-maybe-translate)
-;;
-;; In case of Emacs 19, it is possible to emphasize the message tags
-;; using font-lock mode as follows:
-;;
-;; (add-hook 'mime-edit-mode-hook
-;;           (function
-;;            (lambda ()
-;;              (font-lock-mode 1)
-;;              (setq font-lock-keywords (list mime-edit-tag-regexp))
-;;              ))))
-
-;; The message tag looks like:
-;;
-;;     --[[TYPE/SUBTYPE;PARAMETERS][ENCODING]]
-;;
-;; The tagged MIME message examples:
-;;
-;; This is a conventional plain text.  It should be translated into
-;; text/plain.
-;;
-;;--[[text/plain]]
-;; This is also a plain text.  But, it is explicitly specified as is.
-;;--[[text/plain; charset=ISO-8859-1]]
-;; This is also a plain text.  But charset is specified as iso-8859-1.
-;;
-;; Â¡Hola!  Buenos días.  Â¿Cómo está usted?
-;;--[[text/enriched]]
-;; <center>This is a richtext.</center>
-;;
-;;--[[image/gif][base64]]^M...image encoded in base64 comes here...
-;;
-;;--[[audio/basic][base64]]^M...audio encoded in base64 comes here...
-
-;;; Code:
-
-(require 'emu)
-(require 'sendmail)
-(require 'mail-utils)
-(require 'mel)
-(require 'mime-view)
-(require 'signature)
-(require 'alist)
-
-
-;;; @ version
-;;;
-
-(defconst mime-edit-version-string
-  `,(concat (car mime-user-interface-version) " "
-           (mapconcat #'number-to-string
-                      (cddr mime-user-interface-version) ".")
-           " - \"" (cadr mime-user-interface-version) "\""))
-
-
-;;; @ variables
-;;;
-
-(defgroup mime-edit nil
-  "MIME edit mode"
-  :group 'mime)
-
-(defcustom mime-ignore-preceding-spaces nil
-  "*Ignore preceding white spaces if non-nil."
-  :group 'mime-edit
-  :type 'boolean)
-
-(defcustom mime-ignore-trailing-spaces nil
-  "*Ignore trailing white spaces if non-nil."
-  :group 'mime-edit
-  :type 'boolean)
-
-(defcustom mime-ignore-same-text-tag t
-  "*Ignore preceding text content-type tag that is same with new one.
-If non-nil, the text tag is not inserted unless something different."
-  :group 'mime-edit
-  :type 'boolean)
-
-(defcustom mime-auto-hide-body t
-  "*Hide non-textual body encoded in base64 after insertion if non-nil."
-  :group 'mime-edit
-  :type 'boolean)
-
-(defcustom mime-edit-voice-recorder
-  (function mime-edit-voice-recorder-for-sun)
-  "*Function to record a voice message and encode it."
-  :group 'mime-edit
-  :type 'function)
-
-(defcustom mime-edit-mode-hook nil
-  "*Hook called when enter MIME mode."
-  :group 'mime-edit
-  :type 'hook)
-
-(defcustom mime-edit-translate-hook nil
-  "*Hook called before translating into a MIME compliant message.
-To insert a signature file automatically, call the function
-`mime-edit-insert-signature' from this hook."
-  :group 'mime-edit
-  :type 'hook)
-
-(defcustom mime-edit-exit-hook nil
-  "*Hook called when exit MIME mode."
-  :group 'mime-edit
-  :type 'hook)
-
-(defvar mime-content-types
-  '(("text"
-     ;; Charset parameter need not to be specified, since it is
-     ;; defined automatically while translation.
-     ("plain"
-      ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
-      )
-     ("richtext"
-      ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
-      )
-     ("enriched"
-      ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
-      )
-     ("x-latex"
-      ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
-      )
-     ("html"
-      ;;("charset" "" "ISO-2022-JP" "US-ASCII" "ISO-8859-1" "ISO-8859-8")
-      )
-     ("x-rot13-47-48")
-     )
-    ("message"
-     ("external-body"
-      ("access-type"
-       ("anon-ftp"
-       ("site" "ftp.jaist.ac.jp" "wnoc-fuk.wide.ad.jp" "nic.karrn.ad.jp")
-       ("directory" "/pub/GNU/elisp/mime")
-       ("name")
-       ("mode" "image" "ascii" "local8"))
-       ("ftp"
-       ("site")
-       ("directory")
-       ("name")
-       ("mode" "image" "ascii" "local8"))
-       ("tftp"        ("site") ("name"))
-       ("afs"         ("site") ("name"))
-       ("local-file"  ("site") ("name"))
-       ("mail-server"
-       ("server" "ftpmail@nic.karrn.ad.jp")
-       ("subject"))
-       ("url"         ("url"))
-       ))
-     ("rfc822")
-     ("news")
-     )
-    ("application"
-     ("octet-stream" ("type" "" "tar" "shar"))
-     ("postscript")
-     ("x-kiss" ("x-cnf")))
-    ("image"
-     ("gif")
-     ("jpeg")
-     ("png")
-     ("tiff")
-     ("x-pic")
-     ("x-mag")
-     ("x-xwd")
-     ("x-xbm")
-     )
-    ("audio" ("basic"))
-    ("video" ("mpeg"))
-    )
-  "*Alist of content-type, subtype, parameters and its values.")
-
-(defcustom mime-file-types
-  '(("\\.txt$"
-     "text"    "plain"         nil
-     nil
-     "inline"          (("filename" . file))
-     )
-    ("\\.pln$"
-     "text"    "plain"         nil
-     nil
-     "inline"          (("filename" . file))
-     )
-    ("\\.rtf$"
-     "text"    "richtext"      nil
-     nil
-     nil               nil)
-    ("\\.html$"
-     "text"    "html"          nil
-     nil
-     nil               nil)
-    ("\\.ps$"
-     "application" "postscript"        nil
-     "quoted-printable"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.jpg$"
-     "image"   "jpeg"          nil
-     "base64"
-     "inline"          (("filename" . file))
-     )
-    ("\\.gif$"
-     "image"   "gif"           nil
-     "base64"
-     "inline"          (("filename" . file))
-     )
-    ("\\.png$"
-     "image"   "png"           nil
-     "base64"
-     "inline"          (("filename" . file))
-     )
-    ("\\.tiff$"
-     "image"   "tiff"          nil
-     "base64"
-     "inline"          (("filename" . file))
-     )
-    ("\\.pic$"
-     "image"   "x-pic"         nil
-     "base64"
-     "inline"          (("filename" . file))
-     )
-    ("\\.mag$"
-     "image"   "x-mag"         nil
-     "base64"
-     "inline"          (("filename" . file))
-     )
-    ("\\.xbm$"
-     "image"   "x-xbm"         nil
-     "base64"
-     "inline"          (("filename" . file))
-     )
-    ("\\.xwd$"
-     "image"   "x-xwd"         nil
-     "base64"
-     "inline"          (("filename" . file))
-     )
-    ("\\.au$"
-     "audio"   "basic"         nil
-     "base64"
-     "attachment"              (("filename" . file))
-     )
-    ("\\.mpg$"
-     "video"   "mpeg"          nil
-     "base64"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.el$"
-     "application" "octet-stream" (("type" . "emacs-lisp"))
-     "7bit"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.lsp$"
-     "application" "octet-stream" (("type" . "common-lisp"))
-     "7bit"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.tar\\.gz$"
-     "application" "octet-stream" (("type" . "tar+gzip"))
-     "base64"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.tgz$"
-     "application" "octet-stream" (("type" . "tar+gzip"))
-     "base64"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.tar\\.Z$"
-     "application" "octet-stream" (("type" . "tar+compress"))
-     "base64"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.taz$"
-     "application" "octet-stream" (("type" . "tar+compress"))
-     "base64"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.gz$"
-     "application" "octet-stream" (("type" . "gzip"))
-     "base64"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.Z$"
-     "application" "octet-stream" (("type" . "compress"))
-     "base64"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.lzh$"
-     "application" "octet-stream" (("type" . "lha"))
-     "base64"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.zip$"
-     "application" "zip" nil
-     "base64"
-     "attachment"      (("filename" . file))
-     )
-    ("\\.diff$"
-     "application" "octet-stream" (("type" . "patch"))
-     nil
-     "attachment"      (("filename" . file))
-     )
-    ("\\.patch$"
-     "application" "octet-stream" (("type" . "patch"))
-     nil
-     "attachment"      (("filename" . file))
-     )
-    ("\\.signature"
-     "text"    "plain"         nil     nil     nil     nil)
-    (".*"
-     "application" "octet-stream" nil
-     nil
-     "attachment"      (("filename" . file)))
-    )
-  "*Alist of file name, types, parameters, and default encoding.
-If encoding is nil, it is determined from its contents."
-  :type `(repeat
-         (list regexp
-               ;; primary-type
-               (choice :tag "Primary-Type"
-                       ,@(nconc (mapcar (lambda (cell)
-                                          (list 'item (car cell))
-                                          )
-                                        mime-content-types)
-                                '(string)))
-               ;; subtype
-               (choice :tag "Sub-Type"
-                       ,@(nconc
-                          (apply #'nconc
-                                 (mapcar (lambda (cell)
-                                           (mapcar (lambda (cell)
-                                                     (list 'item (car cell))
-                                                     )
-                                                   (cdr cell)))
-                                         mime-content-types))
-                          '(string)))
-               ;; parameters
-               (repeat :tag "Parameters of Content-Type field"
-                       (cons string (choice string symbol)))
-               ;; content-transfer-encoding
-               (choice :tag "Encoding"
-                       ,@(cons
-                          '(const nil)
-                          (mapcar (lambda (cell)
-                                    (list 'item (car cell))
-                                    )
-                                  mime-file-encoding-method-alist)))
-               ;; disposition-type
-               (choice :tag "Disposition-Type"
-                       (item nil)
-                       (item "inline")
-                       (item "attachment")
-                       string)
-               ;; parameters
-               (repeat :tag "Parameters of Content-Disposition field"
-                       (cons string (choice string symbol)))
-               ))
-  :group 'mime-edit)
-
-
-;;; @@ about charset, encoding and transfer-level
-;;;
-
-(defvar mime-charset-type-list
-  '((us-ascii          7 nil)
-    (iso-8859-1                8 "quoted-printable")
-    (iso-8859-2                8 "quoted-printable")
-    (iso-8859-3                8 "quoted-printable")
-    (iso-8859-4                8 "quoted-printable")
-    (iso-8859-5                8 "quoted-printable")
-    (koi8-r            8 "quoted-printable")
-    (iso-8859-7                8 "quoted-printable")
-    (iso-8859-8                8 "quoted-printable")
-    (iso-8859-9                8 "quoted-printable")
-    (iso-2022-jp       7 "base64")
-    (iso-2022-kr       7 "base64")
-    (euc-kr            8 "base64")
-    (cn-gb2312         8 "base64")
-    (gb2312            8 "base64")
-    (cn-big5           8 "base64")
-    (big5              8 "base64")
-    (shift_jis         8 "base64")
-    (iso-2022-jp-2     7 "base64")
-    (iso-2022-int-1    7 "base64")
-    ))
-
-(defvar mime-transfer-level 7
-  "*A number of network transfer level.  It should be bigger than 7.")
-(make-variable-buffer-local 'mime-transfer-level)
-
-(defsubst mime-encoding-name (transfer-level &optional not-omit)
-  (cond ((> transfer-level 8) "binary")
-       ((= transfer-level 8) "8bit")
-       (not-omit "7bit")
-       ))
-
-(defvar mime-transfer-level-string
-  (mime-encoding-name mime-transfer-level 'not-omit)
-  "A string formatted version of mime-transfer-level")
-(make-variable-buffer-local 'mime-transfer-level-string)
-
-
-;;; @@ about message inserting
-;;;
-
-(defvar mime-edit-yank-ignored-field-list
-  '("Received" "Approved" "Path" "Replied" "Status"
-    "Xref" "X-UIDL" "X-Filter" "X-Gnus-.*" "X-VM-.*")
-  "Delete these fields from original message when it is inserted
-as message/rfc822 part.
-Each elements are regexp of field-name.")
-
-(defvar mime-edit-yank-ignored-field-regexp
-  (concat "^"
-         (apply (function regexp-or) mime-edit-yank-ignored-field-list)
-         ":"))
-
-(defvar mime-edit-message-inserter-alist nil)
-(defvar mime-edit-mail-inserter-alist nil)
-
-
-;;; @@ about message splitting
-;;;
-
-(defcustom mime-edit-split-message t
-  "*Split large message if it is non-nil."
-  :group 'mime-edit
-  :type 'boolean)
-
-(defcustom mime-edit-message-default-max-lines 1000
-  "*Default maximum lines of a message."
-  :group 'mime-edit
-  :type 'integer)
-
-(defcustom mime-edit-message-max-lines-alist
-  '((news-reply-mode . 500))
-  "Alist of major-mode vs maximum lines of a message.
-If it is not specified for a major-mode,
-`mime-edit-message-default-max-lines' is used."
-  :group 'mime-edit
-  :type 'list)
-
-(defconst mime-edit-split-ignored-field-regexp
-  "\\(^Content-\\|^Subject:\\|^Mime-Version:\\|Message-Id:\\)")
-
-(defvar mime-edit-split-blind-field-regexp
-  "\\(^[BDFbdf]cc:\\|^cc:[ \t]*$\\)")
-
-(defvar mime-edit-split-message-sender-alist nil)
-
-(defvar mime-edit-news-reply-mode-server-running nil)
-
-
-;;; @@ about tag
-;;;
-
-(defconst mime-edit-single-part-tag-regexp
-  "--[[][[]\\([^]]*\\)]\\([[]\\([^]]*\\)]\\|\\)]"
-  "*Regexp of MIME tag in the form of [[CONTENT-TYPE][ENCODING]].")
-
-(defconst mime-edit-quoted-single-part-tag-regexp
-  (concat "- " (substring mime-edit-single-part-tag-regexp 1)))
-
-(defconst mime-edit-multipart-beginning-regexp "--<<\\([^<>]+\\)>>-{\n")
-
-(defconst mime-edit-multipart-end-regexp "--}-<<\\([^<>]+\\)>>\n")
-
-(defconst mime-edit-beginning-tag-regexp
-  (regexp-or mime-edit-single-part-tag-regexp
-            mime-edit-multipart-beginning-regexp))
-
-(defconst mime-edit-end-tag-regexp
-  (regexp-or mime-edit-single-part-tag-regexp
-            mime-edit-multipart-end-regexp))
-
-(defconst mime-edit-tag-regexp
-  (regexp-or mime-edit-single-part-tag-regexp
-            mime-edit-multipart-beginning-regexp
-            mime-edit-multipart-end-regexp))
-
-(defvar mime-tag-format "--[[%s]]"
-  "*Control-string making a MIME tag.")
-
-(defvar mime-tag-format-with-encoding "--[[%s][%s]]"
-  "*Control-string making a MIME tag with encoding.")
-
-
-;;; @@ multipart boundary
-;;;
-
-(defvar mime-multipart-boundary "Multipart"
-  "*Boundary of a multipart message.")
-
-
-;;; @@ optional header fields
-;;;
-
-(defvar mime-edit-insert-x-emacs-field t
-  "*If non-nil, insert X-Emacs header field.")
-
-(defvar mime-edit-x-emacs-value
-  (if (featurep 'xemacs)
-      (concat emacs-version (if (featurep 'mule)
-                               " with mule"
-                             " without mule"))
-    (let ((ver (if (string-match "\\.[0-9]+$" emacs-version)
-                  (substring emacs-version 0 (match-beginning 0))
-                emacs-version)))
-      (if (featurep 'mule)
-         (if (boundp 'enable-multibyte-characters)
-             (concat "Emacs " ver
-                     (if enable-multibyte-characters
-                         (concat ", MULE " mule-version)
-                       " (with raw setting)")
-                     (if (featurep 'meadow)
-                         (concat ", " (Meadow-version))
-                       ))
-           (concat "MULE " mule-version " based on Emacs " ver))
-       ver)))
-  "Body of X-Emacs field.
-If variable `mime-edit-insert-x-emacs-field' is not nil, it is
-inserted into message header.")
-
-\f
-;;; @ constants
-;;;
-
-(defconst mime-tspecials-regexp "[][()<>@,;:\\\"/?.= \t]"
-  "*Specify MIME tspecials.
-Tspecials means any character that matches with it in header must be quoted.")
-
-(defconst mime-edit-mime-version-value
-  (concat "1.0 (generated by " mime-edit-version-string ")")
-  "MIME version number.")
-
-(defconst mime-edit-mime-version-field-for-message/partial
-  (concat "MIME-Version: 1.0 (split by " mime-edit-version-string ")\n")
-  "MIME version field for message/partial.")
-
-
-;;; @ keymap and menu
-;;;
-
-(defvar mime-edit-mode-flag nil)
-(make-variable-buffer-local 'mime-edit-mode-flag)
-
-(defvar mime-edit-mode-entity-prefix "\C-c\C-x"
-  "Keymap prefix for MIME-Edit mode commands to insert entity or set status.")
-(defvar mime-edit-mode-entity-map (make-sparse-keymap)
-  "Keymap for MIME-Edit mode commands to insert entity or set status.")
-
-(define-key mime-edit-mode-entity-map "\C-t" 'mime-edit-insert-text)
-(define-key mime-edit-mode-entity-map "\C-i" 'mime-edit-insert-file)
-(define-key mime-edit-mode-entity-map "\C-e" 'mime-edit-insert-external)
-(define-key mime-edit-mode-entity-map "\C-v" 'mime-edit-insert-voice)
-(define-key mime-edit-mode-entity-map "\C-y" 'mime-edit-insert-message)
-(define-key mime-edit-mode-entity-map "\C-m" 'mime-edit-insert-mail)
-(define-key mime-edit-mode-entity-map "\C-w" 'mime-edit-insert-signature)
-(define-key mime-edit-mode-entity-map "\C-s" 'mime-edit-insert-signature)
-(define-key mime-edit-mode-entity-map "\C-k" 'mime-edit-insert-key)
-(define-key mime-edit-mode-entity-map "t"    'mime-edit-insert-tag)
-
-(define-key mime-edit-mode-entity-map "7" 'mime-edit-set-transfer-level-7bit)
-(define-key mime-edit-mode-entity-map "8" 'mime-edit-set-transfer-level-8bit)
-(define-key mime-edit-mode-entity-map "/" 'mime-edit-set-split)
-(define-key mime-edit-mode-entity-map "s" 'mime-edit-set-sign)
-(define-key mime-edit-mode-entity-map "v" 'mime-edit-set-sign)
-(define-key mime-edit-mode-entity-map "e" 'mime-edit-set-encrypt)
-(define-key mime-edit-mode-entity-map "h" 'mime-edit-set-encrypt)
-(define-key mime-edit-mode-entity-map "p" 'mime-edit-preview-message)
-(define-key mime-edit-mode-entity-map "\C-z" 'mime-edit-exit)
-(define-key mime-edit-mode-entity-map "?" 'mime-edit-help)
-
-(defvar mime-edit-mode-enclosure-prefix "\C-c\C-m"
-  "Keymap prefix for MIME-Edit mode commands about enclosure.")
-(defvar mime-edit-mode-enclosure-map (make-sparse-keymap)
-  "Keymap for MIME-Edit mode commands about enclosure.")
-
-(define-key mime-edit-mode-enclosure-map
-  "\C-a" 'mime-edit-enclose-alternative-region)
-(define-key mime-edit-mode-enclosure-map
-  "\C-p" 'mime-edit-enclose-parallel-region)
-(define-key mime-edit-mode-enclosure-map
-  "\C-m" 'mime-edit-enclose-mixed-region)
-(define-key mime-edit-mode-enclosure-map
-  "\C-d" 'mime-edit-enclose-digest-region)
-(define-key mime-edit-mode-enclosure-map
-  "\C-s" 'mime-edit-enclose-pgp-signed-region)
-(define-key mime-edit-mode-enclosure-map
-  "\C-e" 'mime-edit-enclose-pgp-encrypted-region)
-(define-key mime-edit-mode-enclosure-map
-  "\C-q" 'mime-edit-enclose-quote-region)
-
-(defvar mime-edit-mode-map (make-sparse-keymap)
-  "Keymap for MIME-Edit mode commands.")
-(define-key mime-edit-mode-map
-  mime-edit-mode-entity-prefix mime-edit-mode-entity-map)
-(define-key mime-edit-mode-map
-  mime-edit-mode-enclosure-prefix mime-edit-mode-enclosure-map)
-
-(defconst mime-edit-menu-title "MIME-Edit")
-
-(defconst mime-edit-menu-list
-  '((mime-help "Describe MIME editor mode" mime-edit-help)
-    (file      "Insert File"           mime-edit-insert-file)
-    (external  "Insert External"       mime-edit-insert-external)
-    (voice     "Insert Voice"          mime-edit-insert-voice)
-    (message   "Insert Message"        mime-edit-insert-message)
-    (mail      "Insert Mail"           mime-edit-insert-mail)
-    (signature "Insert Signature"      mime-edit-insert-signature)
-    (text      "Insert Text"           mime-edit-insert-text)
-    (tag       "Insert Tag"            mime-edit-insert-tag)
-    (alternative "Enclose as alternative"
-                mime-edit-enclose-alternative-region)
-    (parallel  "Enclose as parallel"   mime-edit-enclose-parallel-region)
-    (mixed     "Enclose as serial"     mime-edit-enclose-mixed-region)
-    (digest    "Enclose as digest"     mime-edit-enclose-digest-region)
-    (signed    "Enclose as signed"     mime-edit-enclose-pgp-signed-region)
-    (encrypted "Enclose as encrypted"  mime-edit-enclose-pgp-encrypted-region)
-    (quote     "Verbatim region"       mime-edit-enclose-quote-region)
-    (key       "Insert Public Key"     mime-edit-insert-key)
-    (split     "About split"           mime-edit-set-split)
-    (sign      "About sign"            mime-edit-set-sign)
-    (encrypt   "About encryption"      mime-edit-set-encrypt)
-    (preview   "Preview Message"       mime-edit-preview-message)
-    (level     "Toggle transfer-level" mime-edit-toggle-transfer-level)
-    )
-  "MIME-edit menubar entry.")
-
-(cond (running-xemacs
-       ;; modified by Pekka Marjola <pema@iki.fi>
-       ;;      1995/9/5 (c.f. [tm-en:69])
-       (defun mime-edit-define-menu-for-xemacs ()
-        "Define menu for XEmacs."
-        (cond ((featurep 'menubar)
-               (make-local-variable 'current-menubar)
-               (set-buffer-menubar current-menubar)
-               (add-submenu
-                nil
-                (cons mime-edit-menu-title
-                      (mapcar (function
-                               (lambda (item)
-                                 (vector (nth 1 item)(nth 2 item)
-                                         mime-edit-mode-flag)
-                                 ))
-                              mime-edit-menu-list)))
-               )))
-
-       ;; modified by Steven L. Baur <steve@miranova.com>
-       ;;      1995/12/6 (c.f. [tm-en:209])
-       (or (boundp 'mime-edit-popup-menu-for-xemacs)
-          (setq mime-edit-popup-menu-for-xemacs
-                (append '("MIME Commands" "---")
-                        (mapcar (function (lambda (item)
-                                            (vector (nth 1 item)
-                                                    (nth 2 item)
-                                                    t)))
-                                mime-edit-menu-list)))
-          )
-       )
-      ((>= emacs-major-version 19)
-       (define-key mime-edit-mode-map [menu-bar mime-edit]
-        (cons mime-edit-menu-title
-              (make-sparse-keymap mime-edit-menu-title)))
-       (mapcar (function
-               (lambda (item)
-                 (define-key mime-edit-mode-map
-                   (vector 'menu-bar 'mime-edit (car item))
-                   (cons (nth 1 item)(nth 2 item))
-                   )
-                 ))
-              (reverse mime-edit-menu-list)
-              )
-       ))
-
-
-;;; @ functions
-;;;
-
-(defvar mime-edit-touched-flag nil)
-
-;;;###autoload
-(defun mime-edit-mode ()
-  "MIME minor mode for editing the tagged MIME message.
-
-In this mode, basically, the message is composed in the tagged MIME
-format. The message tag looks like:
-
-       --[[text/plain; charset=ISO-2022-JP][7bit]]
-
-The tag specifies the MIME content type, subtype, optional parameters
-and transfer encoding of the message following the tag.  Messages
-without any tag are treated as `text/plain' by default.  Charset and
-transfer encoding are automatically defined unless explicitly
-specified.  Binary messages such as audio and image are usually
-hidden.  The messages in the tagged MIME format are automatically
-translated into a MIME compliant message when exiting this mode.
-
-Available charsets depend on Emacs version being used.  The following
-lists the available charsets of each emacs.
-
-Without mule:  US-ASCII and ISO-8859-1 (or other charset) are available.
-With mule:     US-ASCII, ISO-8859-* (except for ISO-8859-5), KOI8-R,
-               ISO-2022-JP, ISO-2022-JP-2, EUC-KR, CN-GB-2312,
-               CN-BIG5 and ISO-2022-INT-1 are available.
-
-ISO-2022-JP-2 and ISO-2022-INT-1 charsets used in mule is expected to
-be used to represent multilingual text in intermixed manner.  Any
-languages that has no registered charset are represented as either
-ISO-2022-JP-2 or ISO-2022-INT-1 in mule.
-
-If you want to use non-ISO-8859-1 charset in Emacs 19 or XEmacs
-without mule, please set variable `default-mime-charset'.  This
-variable must be symbol of which name is a MIME charset.
-
-If you want to add more charsets in mule, please set variable
-`charsets-mime-charset-alist'.  This variable must be alist of which
-key is list of charset and value is symbol of MIME charset.  If name
-of coding-system is different as MIME charset, please set variable
-`mime-charset-coding-system-alist'.  This variable must be alist of
-which key is MIME charset and value is coding-system.
-
-Following commands are available in addition to major mode commands:
-
-\[make single part\]
-\\[mime-edit-insert-text]      insert a text message.
-\\[mime-edit-insert-file]      insert a (binary) file.
-\\[mime-edit-insert-external]  insert a reference to external body.
-\\[mime-edit-insert-voice]     insert a voice message.
-\\[mime-edit-insert-message]   insert a mail or news message.
-\\[mime-edit-insert-mail]      insert a mail message.
-\\[mime-edit-insert-signature] insert a signature file at end.
-\\[mime-edit-insert-key]       insert PGP public key.
-\\[mime-edit-insert-tag]       insert a new MIME tag.
-
-\[make enclosure (maybe multipart)\]
-\\[mime-edit-enclose-alternative-region]   enclose as multipart/alternative.
-\\[mime-edit-enclose-parallel-region]     enclose as multipart/parallel.
-\\[mime-edit-enclose-mixed-region]        enclose as multipart/mixed.
-\\[mime-edit-enclose-digest-region]       enclose as multipart/digest.
-\\[mime-edit-enclose-pgp-signed-region]           enclose as PGP signed.
-\\[mime-edit-enclose-pgp-encrypted-region] enclose as PGP encrypted.
-\\[mime-edit-enclose-quote-region]        enclose as verbose mode
-                                          (to avoid to expand tags)
-
-\[other commands\]
-\\[mime-edit-set-transfer-level-7bit]  set transfer-level as 7.
-\\[mime-edit-set-transfer-level-8bit]  set transfer-level as 8.
-\\[mime-edit-set-split]                        set message splitting mode.
-\\[mime-edit-set-sign]                 set PGP-sign mode.
-\\[mime-edit-set-encrypt]              set PGP-encryption mode.
-\\[mime-edit-preview-message]          preview editing MIME message.
-\\[mime-edit-exit]                     exit and translate into a MIME
-                                       compliant message.
-\\[mime-edit-help]                     show this help.
-\\[mime-edit-maybe-translate]          exit and translate if in MIME mode,
-                                       then split.
-
-Additional commands are available in some major modes:
-C-c C-c                exit, translate and run the original command.
-C-c C-s                exit, translate and run the original command.
-
-The following is a message example written in the tagged MIME format.
-TABs at the beginning of the line are not a part of the message:
-
-       This is a conventional plain text.  It should be translated
-       into text/plain.
-       --[[text/plain]]
-       This is also a plain text.  But, it is explicitly specified as
-       is.
-       --[[text/plain; charset=ISO-8859-1]]
-       This is also a plain text.  But charset is specified as
-       iso-8859-1.
-
-       Â¡Hola!  Buenos días.  Â¿Cómo está usted?
-       --[[text/enriched]]
-       This is a <bold>enriched text</bold>.
-       --[[image/gif][base64]]...image encoded in base64 here...
-       --[[audio/basic][base64]]...audio encoded in base64 here...
-
-User customizable variables (not documented all of them):
- mime-edit-prefix
-    Specifies a key prefix for MIME minor mode commands.
-
- mime-ignore-preceding-spaces
-    Preceding white spaces in a message body are ignored if non-nil.
-
- mime-ignore-trailing-spaces
-    Trailing white spaces in a message body are ignored if non-nil.
-
- mime-auto-hide-body
-    Hide a non-textual body message encoded in base64 after insertion
-    if non-nil.
-
- mime-transfer-level
-    A number of network transfer level.  It should be bigger than 7.
-    If you are in 8bit-through environment, please set 8.
-
- mime-edit-voice-recorder
-    Specifies a function to record a voice message and encode it.
-    The function `mime-edit-voice-recorder-for-sun' is for Sun
-    SparcStations.
-
- mime-edit-mode-hook
-    Turning on MIME mode calls the value of mime-edit-mode-hook, if
-    it is non-nil.
-
- mime-edit-translate-hook
-    The value of mime-edit-translate-hook is called just before translating
-    the tagged MIME format into a MIME compliant message if it is
-    non-nil.  If the hook call the function mime-edit-insert-signature,
-    the signature file will be inserted automatically.
-
- mime-edit-exit-hook
-    Turning off MIME mode calls the value of mime-edit-exit-hook, if it is
-    non-nil."
-  (interactive)
-  (if mime-edit-mode-flag
-      (mime-edit-exit)
-    (if mime-edit-touched-flag
-       (mime-edit-again)
-      (make-local-variable 'mime-edit-touched-flag)
-      (setq mime-edit-touched-flag t)
-      (turn-on-mime-edit)
-      )))
-
-
-(cond (running-xemacs
-       (add-minor-mode 'mime-edit-mode-flag
-                      '((" MIME-Edit "  mime-transfer-level-string))
-                      mime-edit-mode-map
-                      nil
-                      'mime-edit-mode)
-       )
-      (t
-       (set-alist 'minor-mode-alist
-                 'mime-edit-mode-flag
-                 '((" MIME-Edit "  mime-transfer-level-string)))
-       (set-alist 'minor-mode-map-alist
-                 'mime-edit-mode-flag
-                 mime-edit-mode-map)
-       ))
-
-
-;;;###autoload
-(defun turn-on-mime-edit ()
-  "Unconditionally turn on MIME-Edit mode."
-  (interactive)
-  (if mime-edit-mode-flag
-      (error "You are already editing a MIME message.")
-    (setq mime-edit-mode-flag t)
-
-    ;; Set transfer level into mode line
-    ;;
-    (setq mime-transfer-level-string
-         (mime-encoding-name mime-transfer-level 'not-omit))
-    (force-mode-line-update)
-
-    ;; Define menu for XEmacs.
-    (if running-xemacs
-       (mime-edit-define-menu-for-xemacs)
-      )
-
-    (enable-invisible)
-
-    ;; I don't care about saving these.
-    (setq paragraph-start
-         (regexp-or mime-edit-single-part-tag-regexp
-                    paragraph-start))
-    (setq paragraph-separate
-         (regexp-or mime-edit-single-part-tag-regexp
-                    paragraph-separate))
-    (run-hooks 'mime-edit-mode-hook)
-    (message
-     (substitute-command-keys
-      "Type \\[mime-edit-exit] to exit MIME mode, and type \\[mime-edit-help] to get help."))
-    ))
-
-;;;###autoload
-(defalias 'edit-mime 'turn-on-mime-edit) ; for convenience
-
-
-(defun mime-edit-exit (&optional nomime no-error)
-  "Translate the tagged MIME message into a MIME compliant message.
-With no argument encode a message in the buffer into MIME, otherwise
-just return to previous mode."
-  (interactive "P")
-  (if (not mime-edit-mode-flag)
-      (if (null no-error)
-         (error "You aren't editing a MIME message.")
-       )
-    (if (not nomime)
-       (progn
-         (run-hooks 'mime-edit-translate-hook)
-         (mime-edit-translate-buffer)))
-    ;; Restore previous state.
-    (setq mime-edit-mode-flag nil)
-    (if (and running-xemacs
-            (featurep 'menubar))
-       (delete-menu-item (list mime-edit-menu-title))
-      )
-    (end-of-invisible)
-    (set-buffer-modified-p (buffer-modified-p))
-    (run-hooks 'mime-edit-exit-hook)
-    (message "Exit MIME editor mode.")
-    ))
-
-(defun mime-edit-maybe-translate ()
-  (interactive)
-  (mime-edit-exit nil t)
-  (call-interactively 'mime-edit-maybe-split-and-send)
-  )
-
-(defun mime-edit-help ()
-  "Show help message about MIME mode."
-  (interactive)
-  (with-output-to-temp-buffer "*Help*"
-    (princ "MIME editor mode:\n")
-    (princ (documentation 'mime-edit-mode))
-    (print-help-return-message)))
-
-(defun mime-edit-insert-text (&optional subtype)
-  "Insert a text message.
-Charset is automatically obtained from the `charsets-mime-charset-alist'.
-If optional argument SUBTYPE is not nil, text/SUBTYPE tag is inserted."
-  (interactive)
-  (let ((ret (mime-edit-insert-tag "text" subtype nil)))
-    (when ret
-      (if (looking-at mime-edit-single-part-tag-regexp)
-         (progn
-           ;; Make a space between the following message.
-           (insert "\n")
-           (forward-char -1)
-           ))
-      (if (and (member (cadr ret) '("enriched" "richtext"))
-              (fboundp 'enriched-mode)
-              )
-         (enriched-mode t)
-       (if (boundp 'enriched-mode)
-           (enriched-mode -1)
-         ))
-      )))
-
-(defun mime-edit-insert-file (file &optional verbose)
-  "Insert a message from a file."
-  (interactive "fInsert file as MIME message: \nP")
-  (let*  ((guess (mime-find-file-type file))
-         (type (nth 0 guess))
-         (subtype (nth 1 guess))
-         (parameters (nth 2 guess))
-         (encoding (nth 3 guess))
-         (disposition-type (nth 4 guess))
-         (disposition-params (nth 5 guess))
-         )
-    (if verbose
-       (setq type    (mime-prompt-for-type type)
-             subtype (mime-prompt-for-subtype type subtype)
-             ))
-    (if (or (interactive-p) verbose)
-       (setq encoding (mime-prompt-for-encoding encoding))
-      )
-    (if (or (consp parameters) (stringp disposition-type))
-       (let ((rest parameters) cell attribute value)
-         (setq parameters "")
-         (while rest
-           (setq cell (car rest))
-           (setq attribute (car cell))
-           (setq value (cdr cell))
-           (if (eq value 'file)
-               (setq value (std11-wrap-as-quoted-string
-                            (file-name-nondirectory file)))
-             )
-           (setq parameters (concat parameters "; " attribute "=" value))
-           (setq rest (cdr rest))
-           )
-         (if disposition-type
-             (progn
-               (setq parameters
-                     (concat parameters "\n"
-                             "Content-Disposition: " disposition-type))
-               (setq rest disposition-params)
-               (while rest
-                 (setq cell (car rest))
-                 (setq attribute (car cell))
-                 (setq value (cdr cell))
-                 (if (eq value 'file)
-                     (setq value (std11-wrap-as-quoted-string
-                                  (file-name-nondirectory file)))
-                   )
-                 (setq parameters
-                       (concat parameters "; " attribute "=" value))
-                 (setq rest (cdr rest))
-                 )
-               ))
-         ))
-    (mime-edit-insert-tag type subtype parameters)
-    (mime-edit-insert-binary-file file encoding)
-    ))
-
-(defun mime-edit-insert-external ()
-  "Insert a reference to external body."
-  (interactive)
-  (mime-edit-insert-tag "message" "external-body" nil ";\n\t")
-  ;;(forward-char -1)
-  ;;(insert "Content-Description: " (read-string "Content-Description: ") "\n")
-  ;;(forward-line 1)
-  (let* ((pritype (mime-prompt-for-type))
-        (subtype (mime-prompt-for-subtype pritype))
-        (parameters (mime-prompt-for-parameters pritype subtype ";\n\t")))
-    (and pritype
-        subtype
-        (insert "Content-Type: "
-                pritype "/" subtype (or parameters "") "\n")))
-  (if (and (not (eobp))
-          (not (looking-at mime-edit-single-part-tag-regexp)))
-      (insert (mime-make-text-tag) "\n")))
-
-(defun mime-edit-insert-voice ()
-  "Insert a voice message."
-  (interactive)
-  (let ((encoding
-        (completing-read
-         "What transfer encoding: "
-         mime-file-encoding-method-alist nil t nil)))
-    (mime-edit-insert-tag "audio" "basic" nil)
-    (mime-edit-define-encoding encoding)
-    (save-restriction
-      (narrow-to-region (1- (point))(point))
-      (unwind-protect
-         (funcall mime-edit-voice-recorder encoding)
-       (progn
-         (insert "\n")
-         (invisible-region (point-min)(point-max))
-         (goto-char (point-max))
-         )))))
-
-(defun mime-edit-insert-signature (&optional arg)
-  "Insert a signature file."
-  (interactive "P")
-  (let ((signature-insert-hook
-         (function
-          (lambda ()
-           (let ((items (mime-find-file-type signature-file-name)))
-             (apply (function mime-edit-insert-tag)
-                    (car items) (cadr items) (list (caddr items))))
-            )))
-        )
-    (insert-signature arg)
-    ))
-
-\f
-;; Insert a new tag around a point.
-
-(defun mime-edit-insert-tag (&optional pritype subtype parameters delimiter)
-  "Insert new MIME tag and return a list of PRITYPE, SUBTYPE, and PARAMETERS.
-If nothing is inserted, return nil."
-  (interactive)
-  (let ((p (point)))
-    (mime-edit-goto-tag)
-    (if (and (re-search-forward mime-edit-tag-regexp nil t)
-            (< (match-beginning 0) p)
-            (< p (match-end 0))
-            )
-       (goto-char (match-beginning 0))
-      (goto-char p)
-      ))
-  (let ((oldtag nil)
-       (newtag nil)
-       (current (point))
-       )
-    (setq pritype
-         (or pritype
-             (mime-prompt-for-type)))
-    (setq subtype
-         (or subtype
-             (mime-prompt-for-subtype pritype)))
-    (setq parameters
-         (or parameters
-             (mime-prompt-for-parameters pritype subtype delimiter)))
-    ;; Make a new MIME tag.
-    (setq newtag (mime-make-tag pritype subtype parameters))
-    ;; Find an current MIME tag.
-    (setq oldtag
-         (save-excursion
-           (if (mime-edit-goto-tag)
-               (buffer-substring (match-beginning 0) (match-end 0))
-             ;; Assume content type is 'text/plan'.
-             (mime-make-tag "text" "plain")
-             )))
-    ;; We are only interested in TEXT.
-    (if (and oldtag
-            (not (mime-test-content-type
-                  (mime-edit-get-contype oldtag) "text")))
-       (setq oldtag nil))
-    ;; Make a new tag.
-    (if (or (not oldtag)               ;Not text
-           (or mime-ignore-same-text-tag
-               (not (string-equal oldtag newtag))))
-       (progn
-         ;; Mark the beginning of the tag for convenience.
-         (push-mark (point) 'nomsg)
-         (insert newtag "\n")
-         (list pritype subtype parameters) ;New tag is created.
-         )
-      ;; Restore previous point.
-      (goto-char current)
-      nil                              ;Nothing is created.
-      )
-    ))
-
-(defun mime-edit-insert-binary-file (file &optional encoding)
-  "Insert binary FILE at point.
-Optional argument ENCODING specifies an encoding method such as base64."
-  (let* ((tagend (1- (point)))         ;End of the tag
-        (hide-p (and mime-auto-hide-body
-                     (stringp encoding)
-                     (not
-                      (let ((en (downcase encoding)))
-                        (or (string-equal en "7bit")
-                            (string-equal en "8bit")
-                            (string-equal en "binary")
-                            )))))
-        )
-    (save-restriction
-      (narrow-to-region tagend (point))
-      (mime-insert-encoded-file file encoding)
-      (if hide-p
-         (progn
-           (invisible-region (point-min) (point-max))
-           (goto-char (point-max))
-           )
-       (goto-char (point-max))
-       ))
-    (or hide-p
-       (looking-at mime-edit-tag-regexp)
-       (= (point)(point-max))
-       (mime-edit-insert-tag "text" "plain")
-       )
-    ;; Define encoding even if it is 7bit.
-    (if (stringp encoding)
-       (save-excursion
-         (goto-char tagend) ; Make sure which line the tag is on.
-         (mime-edit-define-encoding encoding)
-         ))
-    ))
-
-\f
-;; Commands work on a current message flagment.
-
-(defun mime-edit-goto-tag ()
-  "Search for the beginning of the tagged MIME message."
-  (let ((current (point)))
-    (if (looking-at mime-edit-tag-regexp)
-       t
-      ;; At first, go to the end.
-      (cond ((re-search-forward mime-edit-beginning-tag-regexp nil t)
-            (goto-char (1- (match-beginning 0))) ;For multiline tag
-            )
-           (t
-            (goto-char (point-max))
-            ))
-      ;; Then search for the beginning.
-      (re-search-backward mime-edit-end-tag-regexp nil t)
-      (or (looking-at mime-edit-beginning-tag-regexp)
-         ;; Restore previous point.
-         (progn
-           (goto-char current)
-           nil
-           ))
-      )))
-
-(defun mime-edit-content-beginning ()
-  "Return the point of the beginning of content."
-  (save-excursion
-    (let ((beg (save-excursion
-                (beginning-of-line) (point))))
-      (if (mime-edit-goto-tag)
-         (let ((top (point)))
-           (goto-char (match-end 0))
-           (if (and (= beg top)
-                    (= (following-char) ?\^M))
-               (point)
-             (forward-line 1)
-             (point)))
-       ;; Default text/plain tag.
-       (goto-char (point-min))
-       (re-search-forward
-        (concat "\n" (regexp-quote mail-header-separator)
-                (if mime-ignore-preceding-spaces
-                    "[ \t\n]*\n" "\n")) nil 'move)
-       (point))
-      )))
-
-(defun mime-edit-content-end ()
-  "Return the point of the end of content."
-  (save-excursion
-    (if (mime-edit-goto-tag)
-       (progn
-         (goto-char (match-end 0))
-         (if (invisible-p (point))
-             (next-visible-point (point))
-           ;; Move to the end of this text.
-           (if (re-search-forward mime-edit-tag-regexp nil 'move)
-               ;; Don't forget a multiline tag.
-               (goto-char (match-beginning 0))
-             )
-           (point)
-           ))
-      ;; Assume the message begins with text/plain.
-      (goto-char (mime-edit-content-beginning))
-      (if (re-search-forward mime-edit-tag-regexp nil 'move)
-         ;; Don't forget a multiline tag.
-         (goto-char (match-beginning 0)))
-      (point))
-    ))
-
-(defun mime-edit-define-charset (charset)
-  "Set charset of current tag to CHARSET."
-  (save-excursion
-    (if (mime-edit-goto-tag)
-       (let ((tag (buffer-substring (match-beginning 0) (match-end 0))))
-         (delete-region (match-beginning 0) (match-end 0))
-         (insert
-          (mime-create-tag
-           (mime-edit-set-parameter
-            (mime-edit-get-contype tag)
-            "charset" (upcase (symbol-name charset)))
-           (mime-edit-get-encoding tag)))
-         ))))
-
-(defun mime-edit-define-encoding (encoding)
-  "Set encoding of current tag to ENCODING."
-  (save-excursion
-    (if (mime-edit-goto-tag)
-       (let ((tag (buffer-substring (match-beginning 0) (match-end 0))))
-         (delete-region (match-beginning 0) (match-end 0))
-         (insert (mime-create-tag (mime-edit-get-contype tag) encoding)))
-      )))
-
-(defun mime-edit-choose-charset ()
-  "Choose charset of a text following current point."
-  (detect-mime-charset-region (point) (mime-edit-content-end))
-  )
-
-(defun mime-make-text-tag (&optional subtype)
-  "Make a tag for a text after current point.
-Subtype of text type can be specified by an optional argument SUBTYPE.
-Otherwise, it is obtained from mime-content-types."
-  (let* ((pritype "text")
-        (subtype (or subtype
-                     (car (car (cdr (assoc pritype mime-content-types)))))))
-    ;; Charset should be defined later.
-    (mime-make-tag pritype subtype)))
-
-\f
-;; Tag handling functions
-
-(defun mime-make-tag (pritype subtype &optional parameters encoding)
-  "Make a tag of MIME message of PRITYPE, SUBTYPE and optional PARAMETERS."
-  (mime-create-tag (concat (or pritype "") "/" (or subtype "")
-                          (or parameters ""))
-                  encoding))
-
-(defun mime-create-tag (contype &optional encoding)
-  "Make a tag with CONTENT-TYPE and optional ENCODING."
-  (format (if encoding mime-tag-format-with-encoding mime-tag-format)
-         contype encoding))
-
-(defun mime-edit-get-contype (tag)
-  "Return Content-Type (including parameters) of TAG."
-  (and (stringp tag)
-       (or (string-match mime-edit-single-part-tag-regexp tag)
-          (string-match mime-edit-multipart-beginning-regexp tag)
-          (string-match mime-edit-multipart-end-regexp tag)
-          )
-       (substring tag (match-beginning 1) (match-end 1))
-       ))
-
-(defun mime-edit-get-encoding (tag)
-  "Return encoding of TAG."
-  (and (stringp tag)
-       (string-match mime-edit-single-part-tag-regexp tag)
-       (match-beginning 3)
-       (not (= (match-beginning 3) (match-end 3)))
-       (substring tag (match-beginning 3) (match-end 3))))
-
-(defun mime-get-parameter (contype parameter)
-  "For given CONTYPE return value for PARAMETER.
-Nil if no such parameter."
-  (if (string-match
-       (concat
-       ";[ \t\n]*"
-       (regexp-quote parameter)
-       "[ \t\n]*=[ \t\n]*\\([^\" \t\n;]*\\|\"[^\"]*\"\\)\\([ \t\n]*;\\|$\\)")
-       contype)
-      (substring contype (match-beginning 1) (match-end 1))
-    nil                                        ;No such parameter
-    ))
-
-(defun mime-edit-set-parameter (contype parameter value)
-  "For given CONTYPE set PARAMETER to VALUE."
-  (let (ctype opt-fields)
-    (if (string-match "\n[^ \t\n\r]+:" contype)
-       (setq ctype (substring contype 0 (match-beginning 0))
-             opt-fields (substring contype (match-beginning 0)))
-      (setq ctype contype)
-      )
-    (if (string-match
-        (concat
-         ";[ \t\n]*\\("
-         (regexp-quote parameter)
-         "[ \t\n]*=[ \t\n]*\\([^\" \t\n;]*\\|\"[^\"]*\"\\)\\)[ \t\n]*\\(;\\|$\\)")
-        ctype)
-       ;; Change value
-       (concat (substring ctype 0 (match-beginning 1))
-               parameter "=" value
-               (substring contype (match-end 1))
-               opt-fields)
-      (concat ctype "; " parameter "=" value opt-fields)
-      )))
-
-(defun mime-strip-parameters (contype)
-  "Return primary content-type and subtype without parameters for CONTYPE."
-  (if (string-match "^[ \t]*\\([^; \t\n]*\\)" contype)
-      (substring contype (match-beginning 1) (match-end 1)) nil))
-
-(defun mime-test-content-type (contype type &optional subtype)
-  "Test if CONTYPE is a TYPE and an optional SUBTYPE."
-  (and (stringp contype)
-       (stringp type)
-       (string-match
-       (concat "^[ \t]*" (downcase type) "/" (downcase (or subtype "")))
-       (downcase contype))))
-
-\f
-;; Basic functions
-
-(defun mime-find-file-type (file)
-  "Guess Content-Type, subtype, and parameters from FILE."
-  (let ((guess nil)
-       (guesses mime-file-types))
-    (while (and (not guess) guesses)
-      (if (string-match (car (car guesses)) file)
-         (setq guess (cdr (car guesses))))
-      (setq guesses (cdr guesses)))
-    guess
-    ))
-
-(defun mime-prompt-for-type (&optional default)
-  "Ask for Content-type."
-  (let ((type ""))
-    ;; Repeat until primary content type is specified.
-    (while (string-equal type "")
-      (setq type
-           (completing-read "What content type: "
-                            mime-content-types
-                            nil
-                            'require-match ;Type must be specified.
-                            default
-                            ))
-      (if (string-equal type "")
-         (progn
-           (message "Content type is required.")
-           (beep)
-           (sit-for 1)
-           ))
-      )
-    type))
-
-(defun mime-prompt-for-subtype (type &optional default)
-  "Ask for subtype of media-type TYPE."
-  (let ((subtypes (cdr (assoc type mime-content-types))))
-    (or (and default
-            (assoc default subtypes))
-       (setq default (car (car subtypes)))
-       ))
-  (let* ((answer
-         (completing-read
-          (if default
-              (concat
-               "What content subtype: (default " default ") ")
-            "What content subtype: ")
-          (cdr (assoc type mime-content-types))
-          nil
-          'require-match               ;Subtype must be specified.
-          nil
-          )))
-    (if (string-equal answer "") default answer)))
-
-(defun mime-prompt-for-parameters (pritype subtype &optional delimiter)
-  "Ask for Content-type parameters of Content-Type PRITYPE and SUBTYPE.
-Optional DELIMITER specifies parameter delimiter (';' by default)."
-  (let* ((delimiter (or delimiter "; "))
-        (parameters
-         (mapconcat
-          (function identity)
-          (delq nil
-                (mime-prompt-for-parameters-1
-                 (cdr (assoc subtype
-                             (cdr (assoc pritype mime-content-types))))))
-          delimiter
-          )))
-    (if (and (stringp parameters)
-            (not (string-equal parameters "")))
-       (concat delimiter parameters)
-      ""                               ;"" if no parameters
-      )))
-
-(defun mime-prompt-for-parameters-1 (optlist)
-  (apply (function append)
-        (mapcar (function mime-prompt-for-parameter) optlist)))
-
-(defun mime-prompt-for-parameter (parameter)
-  "Ask for PARAMETER.
-Parameter must be '(PROMPT CHOICE1 (CHOISE2 ...))."
-  (let* ((prompt (car parameter))
-        (choices (mapcar (function
-                          (lambda (e)
-                            (if (consp e) e (list e))))
-                         (cdr parameter)))
-        (default (car (car choices)))
-        (answer nil))
-    (if choices
-       (progn
-         (setq answer
-               (completing-read
-                (concat "What " prompt
-                        ": (default "
-                        (if (string-equal default "") "\"\"" default)
-                        ") ")
-                choices nil nil ""))
-         ;; If nothing is selected, use default.
-         (if (string-equal answer "")
-             (setq answer default)))
-      (setq answer
-           (read-string (concat "What " prompt ": "))))
-    (cons (if (and answer
-                  (not (string-equal answer "")))
-             (concat prompt "="
-                     ;; Note: control characters ignored!
-                     (if (string-match mime-tspecials-regexp answer)
-                         (concat "\"" answer "\"") answer)))
-         (mime-prompt-for-parameters-1 (cdr (assoc answer (cdr parameter)))))
-    ))
-
-(defun mime-prompt-for-encoding (default)
-  "Ask for Content-Transfer-Encoding."
-  (let (encoding)
-    (while (string=
-           (setq encoding
-                 (completing-read
-                  "What transfer encoding: "
-                  mime-file-encoding-method-alist nil t default)
-                 )
-           ""))
-    encoding))
-
-\f
-;;; @ Translate the tagged MIME messages into a MIME compliant message.
-;;;
-
-(defvar mime-edit-translate-buffer-hook
-  '(mime-edit-pgp-enclose-buffer
-    mime-edit-translate-body
-    mime-edit-translate-header))
-
-(defun mime-edit-translate-header ()
-  "Encode the message header into network representation."
-  (eword-encode-header 'code-conversion)
-  (run-hooks 'mime-edit-translate-header-hook)
-  )
-
-(defun mime-edit-translate-buffer ()
-  "Encode the tagged MIME message in current buffer in MIME compliant message."
-  (interactive)
-  (if (catch 'mime-edit-error
-       (save-excursion
-         (run-hooks 'mime-edit-translate-buffer-hook)
-         ))
-      (progn
-       (undo)
-       (error "Translation error!")
-       )))
-
-(defun mime-edit-find-inmost ()
-  (goto-char (point-min))
-  (if (re-search-forward mime-edit-multipart-beginning-regexp nil t)
-      (let ((bb (match-beginning 0))
-           (be (match-end 0))
-           (type (buffer-substring (match-beginning 1)(match-end 1)))
-           end-exp eb)
-       (setq end-exp (format "--}-<<%s>>\n" type))
-       (widen)
-       (if (re-search-forward end-exp nil t)
-           (setq eb (match-beginning 0))
-         (setq eb (point-max))
-         )
-       (narrow-to-region be eb)
-       (goto-char be)
-       (if (re-search-forward mime-edit-multipart-beginning-regexp nil t)
-           (progn
-             (narrow-to-region (match-beginning 0)(point-max))
-             (mime-edit-find-inmost)
-             )
-         (widen)
-         (list type bb be eb)
-         ))))
-
-(defun mime-edit-process-multipart-1 (boundary)
-  (let ((ret (mime-edit-find-inmost)))
-    (if ret
-       (let ((type (car ret))
-             (bb (nth 1 ret))(be (nth 2 ret))
-             (eb (nth 3 ret))
-             )
-         (narrow-to-region bb eb)
-         (delete-region bb be)
-         (setq bb (point-min))
-         (setq eb (point-max))
-         (widen)
-         (goto-char eb)
-         (if (looking-at mime-edit-multipart-end-regexp)
-             (let ((beg (match-beginning 0))
-                   (end (match-end 0))
-                   )
-               (delete-region beg end)
-               (or (looking-at mime-edit-beginning-tag-regexp)
-                   (eobp)
-                   (insert (concat (mime-make-text-tag) "\n"))
-                   )))
-         (cond ((string-equal type "quote")
-                (mime-edit-enquote-region bb eb)
-                )
-               ((string-equal type "pgp-signed")
-                (mime-edit-sign-pgp-mime bb eb boundary)
-                )
-               ((string-equal type "pgp-encrypted")
-                (mime-edit-encrypt-pgp-mime bb eb boundary)
-                )
-               ((string-equal type "kazu-signed")
-                (mime-edit-sign-pgp-kazu bb eb boundary)
-                )
-               ((string-equal type "kazu-encrypted")
-                (mime-edit-encrypt-pgp-kazu bb eb boundary)
-                )
-               (t
-                (setq boundary
-                      (nth 2 (mime-edit-translate-region bb eb
-                                                           boundary t)))
-                (goto-char bb)
-                (insert
-                 (format "--[[multipart/%s;
- boundary=\"%s\"][7bit]]\n"
-                         type boundary))
-                ))
-         boundary))))
-
-(defun mime-edit-enquote-region (beg end)
-  (save-excursion
-    (save-restriction
-      (narrow-to-region beg end)
-      (goto-char beg)
-      (while (re-search-forward mime-edit-single-part-tag-regexp nil t)
-       (let ((tag (buffer-substring (match-beginning 0)(match-end 0))))
-         (replace-match (concat "- " (substring tag 1)))
-         )))))
-
-(defun mime-edit-dequote-region (beg end)
-  (save-excursion
-    (save-restriction
-      (narrow-to-region beg end)
-      (goto-char beg)
-      (while (re-search-forward
-             mime-edit-quoted-single-part-tag-regexp nil t)
-       (let ((tag (buffer-substring (match-beginning 0)(match-end 0))))
-         (replace-match (concat "-" (substring tag 2)))
-         )))))
-
-(defun mime-edit-sign-pgp-mime (beg end boundary)
-  (save-excursion
-    (save-restriction
-      (narrow-to-region beg end)
-      (let* ((ret
-             (mime-edit-translate-region beg end boundary))
-            (ctype    (car ret))
-            (encoding (nth 1 ret))
-            (pgp-boundary (concat "pgp-sign-" boundary)))
-       (goto-char beg)
-       (insert (format "Content-Type: %s\n" ctype))
-       (if encoding
-           (insert (format "Content-Transfer-Encoding: %s\n" encoding))
-         )
-       (insert "\n")
-       (or (as-binary-process
-            (funcall (pgp-function 'mime-sign)
-                     (point-min)(point-max) nil nil pgp-boundary))
-           (throw 'mime-edit-error 'pgp-error)
-           )
-       ))))
-
-(defvar mime-edit-encrypt-recipient-fields-list '("To" "cc"))
-
-(defun mime-edit-make-encrypt-recipient-header ()
-  (let* ((names mime-edit-encrypt-recipient-fields-list)
-        (values
-         (std11-field-bodies (cons "From" names)
-                             nil mail-header-separator))
-        (from (prog1
-                  (car values)
-                (setq values (cdr values))))
-        (header (and (stringp from)
-                     (if (string-equal from "")
-                         ""
-                       (format "From: %s\n" from)
-                       )))
-        recipients)
-    (while (and names values)
-      (let ((name (car names))
-           (value (car values))
-           )
-       (and (stringp value)
-            (or (string-equal value "")
-                (progn
-                  (setq header (concat header name ": " value "\n")
-                        recipients (if recipients
-                                       (concat recipients " ," value)
-                                     value))
-                  ))))
-      (setq names (cdr names)
-           values (cdr values))
-      )
-    (vector from recipients header)
-    ))
-
-(defun mime-edit-encrypt-pgp-mime (beg end boundary)
-  (save-excursion
-    (save-restriction
-      (let (from recipients header)
-       (let ((ret (mime-edit-make-encrypt-recipient-header)))
-         (setq from (aref ret 0)
-               recipients (aref ret 1)
-               header (aref ret 2))
-         )
-       (narrow-to-region beg end)
-       (let* ((ret
-               (mime-edit-translate-region beg end boundary))
-              (ctype    (car ret))
-              (encoding (nth 1 ret))
-              (pgp-boundary (concat "pgp-" boundary)))
-         (goto-char beg)
-         (insert header)
-         (insert (format "Content-Type: %s\n" ctype))
-         (if encoding
-             (insert (format "Content-Transfer-Encoding: %s\n" encoding))
-           )
-         (insert "\n")
-         (or (funcall (pgp-function 'encrypt)
-                      recipients (point-min) (point-max) from)
-             (throw 'mime-edit-error 'pgp-error)
-             )
-         (goto-char beg)
-         (insert (format "--[[multipart/encrypted;
- boundary=\"%s\";
- protocol=\"application/pgp-encrypted\"][7bit]]
---%s
-Content-Type: application/pgp-encrypted
-
---%s
-Content-Type: application/octet-stream
-Content-Transfer-Encoding: 7bit
-
-" pgp-boundary pgp-boundary pgp-boundary))
-         (goto-char (point-max))
-         (insert (format "\n--%s--\n" pgp-boundary))
-         )))))
-
-(defun mime-edit-sign-pgp-kazu (beg end boundary)
-  (save-excursion
-    (save-restriction
-      (narrow-to-region beg end)
-      (let* ((ret
-             (mime-edit-translate-region beg end boundary))
-            (ctype    (car ret))
-            (encoding (nth 1 ret)))
-       (goto-char beg)
-       (insert (format "Content-Type: %s\n" ctype))
-       (if encoding
-           (insert (format "Content-Transfer-Encoding: %s\n" encoding))
-         )
-       (insert "\n")
-       (or (as-binary-process
-            (funcall (pgp-function 'traditional-sign)
-                     beg (point-max)))
-           (throw 'mime-edit-error 'pgp-error)
-           )
-       (goto-char beg)
-       (insert
-        "--[[application/pgp; format=mime][7bit]]\n")
-       ))
-    ))
-
-(defun mime-edit-encrypt-pgp-kazu (beg end boundary)
-  (save-excursion
-    (let (recipients header)
-      (let ((ret (mime-edit-make-encrypt-recipient-header)))
-       (setq recipients (aref ret 1)
-             header (aref ret 2))
-       )
-      (save-restriction
-       (narrow-to-region beg end)
-       (let* ((ret
-               (mime-edit-translate-region beg end boundary))
-              (ctype    (car ret))
-              (encoding (nth 1 ret)))
-         (goto-char beg)
-         (insert header)
-         (insert (format "Content-Type: %s\n" ctype))
-         (if encoding
-             (insert (format "Content-Transfer-Encoding: %s\n" encoding))
-           )
-         (insert "\n")
-         (or (as-binary-process
-              (funcall (pgp-function 'encrypt)
-                       recipients beg (point-max) nil 'maybe)
-              )
-             (throw 'mime-edit-error 'pgp-error)
-             )
-         (goto-char beg)
-         (insert
-          "--[[application/pgp; format=mime][7bit]]\n")
-         ))
-      )))
-
-(defsubst replace-space-with-underline (str)
-  (mapconcat (function
-             (lambda (arg)
-               (char-to-string
-                (if (eq arg ?\ )
-                    ?_
-                  arg)))) str "")
-  )
-
-(defun mime-edit-make-boundary ()
-  (concat mime-multipart-boundary "_"
-         (replace-space-with-underline (current-time-string))
-         ))
-
-(defun mime-edit-translate-body ()
-  "Encode the tagged MIME body in current buffer in MIME compliant message."
-  (interactive)
-  (save-excursion
-    (let ((boundary (mime-edit-make-boundary))
-         (i 1)
-         ret)
-      (while (mime-edit-process-multipart-1
-             (format "%s-%d" boundary i))
-       (setq i (1+ i))
-       )
-      (save-restriction
-       ;; We are interested in message body.
-       (let* ((beg
-               (progn
-                 (goto-char (point-min))
-                 (re-search-forward
-                  (concat "\n" (regexp-quote mail-header-separator)
-                          (if mime-ignore-preceding-spaces
-                              "[ \t\n]*\n" "\n")) nil 'move)
-                 (point)))
-              (end
-               (progn
-                 (goto-char (point-max))
-                 (and mime-ignore-trailing-spaces
-                      (re-search-backward "[^ \t\n]\n" beg t)
-                      (forward-char 1))
-                 (point))))
-         (setq ret (mime-edit-translate-region
-                    beg end
-                    (format "%s-%d" boundary i)))
-         ))
-      (mime-edit-dequote-region (point-min)(point-max))
-      (let ((contype (car ret))                ;Content-Type
-           (encoding (nth 1 ret))      ;Content-Transfer-Encoding
-           )
-       ;; Insert X-Emacs field
-       (and mime-edit-insert-x-emacs-field
-            (or (mail-position-on-field "X-Emacs")
-                (insert mime-edit-x-emacs-value)
-                ))
-       ;; Make primary MIME headers.
-       (or (mail-position-on-field "MIME-Version")
-           (insert mime-edit-mime-version-value))
-       ;; Remove old Content-Type and other fields.
-       (save-restriction
-         (goto-char (point-min))
-         (search-forward (concat "\n" mail-header-separator "\n") nil t)
-         (narrow-to-region (point-min) (point))
-         (goto-char (point-min))
-         (mime-delete-field "Content-Type")
-         (mime-delete-field "Content-Transfer-Encoding"))
-       ;; Then, insert Content-Type and Content-Transfer-Encoding fields.
-       (mail-position-on-field "Content-Type")
-       (insert contype)
-       (if encoding
-           (progn
-             (mail-position-on-field "Content-Transfer-Encoding")
-             (insert encoding)))
-       ))))
-
-(defun mime-edit-translate-single-part-tag (boundary &optional prefix)
-  "Translate single-part-tag to MIME header."
-  (if (re-search-forward mime-edit-single-part-tag-regexp nil t)
-      (let* ((beg (match-beginning 0))
-            (end (match-end 0))
-            (tag (buffer-substring beg end)))
-       (delete-region beg end)
-       (let ((contype (mime-edit-get-contype tag))
-             (encoding (mime-edit-get-encoding tag)))
-         (insert (concat prefix "--" boundary "\n"))
-         (save-restriction
-           (narrow-to-region (point)(point))
-           (insert "Content-Type: " contype "\n")
-           (if encoding
-               (insert "Content-Transfer-Encoding: " encoding "\n"))
-           (eword-encode-header)
-           ))
-       t)))
-
-(defun mime-edit-translate-region (beg end &optional boundary multipart)
-  (or boundary
-      (setq boundary (mime-edit-make-boundary))
-      )
-  (save-excursion
-    (save-restriction
-      (narrow-to-region beg end)
-      (let ((tag nil)                  ;MIME tag
-           (contype nil)               ;Content-Type
-           (encoding nil)              ;Content-Transfer-Encoding
-           (nparts 0))                 ;Number of body parts
-       ;; Normalize the body part by inserting appropriate message
-       ;; tags for every message contents.
-       (mime-edit-normalize-body)
-       ;; Counting the number of Content-Type.
-       (goto-char (point-min))
-       (while (re-search-forward mime-edit-single-part-tag-regexp nil t)
-         (setq nparts (1+ nparts)))
-       ;; Begin translation.
-       (cond
-        ((and (<= nparts 1)(not multipart))
-         ;; It's a singular message.
-         (goto-char (point-min))
-         (while (re-search-forward
-                 mime-edit-single-part-tag-regexp nil t)
-           (setq tag
-                 (buffer-substring (match-beginning 0) (match-end 0)))
-           (delete-region (match-beginning 0) (1+ (match-end 0)))
-           (setq contype (mime-edit-get-contype tag))
-           (setq encoding (mime-edit-get-encoding tag))
-           ))
-        (t
-         ;; It's a multipart message.
-         (goto-char (point-min))
-         (and (mime-edit-translate-single-part-tag boundary)
-              (while (mime-edit-translate-single-part-tag boundary "\n")))
-         ;; Define Content-Type as "multipart/mixed".
-         (setq contype
-               (concat "multipart/mixed;\n boundary=\"" boundary "\""))
-         ;; Content-Transfer-Encoding must be "7bit".
-         ;; The following encoding can be `nil', but is
-         ;; specified as is since there is no way that a user
-         ;; specifies it.
-         (setq encoding "7bit")
-         ;; Insert the trailer.
-         (goto-char (point-max))
-         (insert "\n--" boundary "--\n")
-         ))
-       (list contype encoding boundary nparts)
-       ))))
-
-(defun mime-edit-normalize-body ()
-  "Normalize the body part by inserting appropriate message tags."
-  ;; Insert the first MIME tags if necessary.
-  (goto-char (point-min))
-  (if (not (looking-at mime-edit-single-part-tag-regexp))
-      (insert (mime-make-text-tag) "\n"))
-  ;; Check each tag, and add new tag or correct it if necessary.
-  (goto-char (point-min))
-  (while (re-search-forward mime-edit-single-part-tag-regexp nil t)
-    (let* ((tag (buffer-substring (match-beginning 0) (match-end 0)))
-          (contype (mime-edit-get-contype tag))
-          (charset (mime-get-parameter contype "charset"))
-          (encoding (mime-edit-get-encoding tag)))
-      ;; Remove extra whitespaces after the tag.
-      (if (looking-at "[ \t]+$")
-         (delete-region (match-beginning 0) (match-end 0)))
-      (let ((beg (point))
-           (end (mime-edit-content-end))
-           )
-       (if (= end (point-max))
-           nil
-         (goto-char end)
-         (or (looking-at mime-edit-beginning-tag-regexp)
-             (eobp)
-             (insert (mime-make-text-tag) "\n")
-             ))
-       (visible-region beg end)
-       (goto-char beg)
-       )
-      (cond
-       ((mime-test-content-type contype "message")
-       ;; Content-type "message" should be sent as is.
-       (forward-line 1)
-       )
-       ((mime-test-content-type contype "text")
-       ;; Define charset for text if necessary.
-       (setq charset (if charset
-                         (intern (downcase charset))
-                       (mime-edit-choose-charset)))
-       (mime-edit-define-charset charset)
-       (cond ((string-equal contype "text/x-rot13-47-48")
-              (save-excursion
-                (forward-line)
-                (mule-caesar-region (point) (mime-edit-content-end))
-                ))
-             ((string-equal contype "text/enriched")
-              (save-excursion
-                (let ((beg (progn
-                             (forward-line)
-                             (point)))
-                      (end (mime-edit-content-end))
-                      )
-                  ;; Patch for hard newlines
-                   ;; (save-excursion
-                   ;;   (goto-char beg)
-                   ;;   (while (search-forward "\n" end t)
-                   ;;     (put-text-property (match-beginning 0)
-                   ;;                        (point)
-                   ;;                        'hard t)))
-                  ;; End patch for hard newlines
-                  (enriched-encode beg end)
-                  (goto-char beg)
-                  (if (search-forward "\n\n")
-                      (delete-region beg (match-end 0))
-                    )
-                  ))))
-       ;; Point is now on current tag.
-       ;; Define encoding and encode text if necessary.
-       (or encoding    ;Encoding is not specified.
-           (let* ((encoding
-                   (let (bits conv)
-                     (let ((ret (cdr (assq charset mime-charset-type-list))))
-                       (if ret
-                           (setq bits (car ret)
-                                 conv (nth 1 ret))
-                         (setq bits 8
-                               conv "quoted-printable")))
-                     (if (<= bits mime-transfer-level)
-                         (mime-encoding-name bits)
-                       conv)))
-                  (beg (mime-edit-content-beginning)))
-             (encode-mime-charset-region beg (mime-edit-content-end)
-                                         charset)
-             ;; Protect "From " in beginning of line
-             (save-restriction
-               (narrow-to-region beg (mime-edit-content-end))
-               (goto-char beg)
-               (let (case-fold-search)
-                 (if (re-search-forward "^From " nil t)
-                     (unless encoding
-                       (if (memq charset '(iso-2022-jp
-                                           iso-2022-jp-2
-                                           iso-2022-int-1
-                                           x-ctext))
-                           (while (progn
-                                    (replace-match "\e(BFrom ")
-                                    (re-search-forward "^From " nil t)
-                                    ))
-                         (setq encoding "quoted-printable")
-                         )))))
-             ;; canonicalize line break code
-             (or (member encoding '(nil "7bit" "8bit" "quoted-printable"))
-                 (save-restriction
-                   (narrow-to-region beg (mime-edit-content-end))
-                   (goto-char beg)
-                   (while (re-search-forward "\\([^\r]\\)\n" nil t)
-                     (replace-match
-                      (concat (buffer-substring (match-beginning 0)
-                                                (match-end 1)) "\r\n"))
-                     )))
-             (goto-char beg)
-             (mime-encode-region beg (mime-edit-content-end) encoding)
-             (mime-edit-define-encoding encoding)
-             ))
-       (goto-char (mime-edit-content-end))
-       )
-       ((null encoding)                ;Encoding is not specified.
-       ;; Application, image, audio, video, and any other
-       ;; unknown content-type without encoding should be
-       ;; encoded.
-       (let* ((encoding "base64")      ;Encode in BASE64 by default.
-              (beg (mime-edit-content-beginning))
-              (end (mime-edit-content-end)))
-         (mime-encode-region beg end encoding)
-         (mime-edit-define-encoding encoding))
-       (forward-line 1)
-       ))
-      )))
-
-(defun mime-delete-field (field)
-  "Delete header FIELD."
-  (let ((regexp (format "^%s:[ \t]*" field)))
-    (goto-char (point-min))
-    (while (re-search-forward regexp nil t)
-      (delete-region (match-beginning 0)
-                    (progn (forward-line 1) (point)))
-      )))
-
-\f
-;;;
-;;; Platform dependent functions
-;;;
-
-;; Sun implementations
-
-(defun mime-edit-voice-recorder-for-sun (encoding)
-  "Record voice in a buffer using Sun audio device,
-and insert data encoded as ENCODING."
-  (message "Start the recording on %s.  Type C-g to finish the recording..."
-          (system-name))
-  (mime-insert-encoded-file "/dev/audio" encoding)
-  )
-
-\f
-;;; @ Other useful commands.
-;;;
-
-;; Message forwarding commands as content-type "message/rfc822".
-
-(defun mime-edit-insert-message (&optional message)
-  (interactive)
-  (let ((inserter (cdr (assq major-mode mime-edit-message-inserter-alist))))
-    (if (and inserter (fboundp inserter))
-       (progn
-         (mime-edit-insert-tag "message" "rfc822")
-         (funcall inserter message)
-         )
-      (message "Sorry, I don't have message inserter for your MUA.")
-      )))
-
-(defun mime-edit-insert-mail (&optional message)
-  (interactive)
-  (let ((inserter (cdr (assq major-mode mime-edit-mail-inserter-alist))))
-    (if (and inserter (fboundp inserter))
-       (progn
-         (mime-edit-insert-tag "message" "rfc822")
-         (funcall inserter message)
-         )
-      (message "Sorry, I don't have mail inserter for your MUA.")
-      )))
-
-(defun mime-edit-inserted-message-filter ()
-  (save-excursion
-    (save-restriction
-      (let ((header-start (point))
-           (case-fold-search t)
-           beg end)
-       ;; for Emacs 18
-       ;; (if (re-search-forward "^$" (marker-position (mark-marker)))
-       (if (re-search-forward "^$" (mark t))
-           (narrow-to-region header-start (match-beginning 0))
-         )
-       (goto-char header-start)
-       (while (and (re-search-forward
-                    mime-edit-yank-ignored-field-regexp nil t)
-                   (setq beg (match-beginning 0))
-                   (setq end (1+ (std11-field-end)))
-                   )
-         (delete-region beg end)
-         )
-       ))))
-
-
-;;; @ multipart enclosure
-;;;
-
-(defun mime-edit-enclose-region-internal (type beg end)
-  (save-excursion
-    (goto-char beg)
-    (save-restriction
-      (narrow-to-region beg end)
-      (insert (format "--<<%s>>-{\n" type))
-      (goto-char (point-max))
-      (insert (format "--}-<<%s>>\n" type))
-      (goto-char (point-max))
-      )
-    (or (looking-at mime-edit-beginning-tag-regexp)
-       (eobp)
-       (insert (mime-make-text-tag) "\n")
-       )
-    ))
-
-(defun mime-edit-enclose-quote-region (beg end)
-  (interactive "*r")
-  (mime-edit-enclose-region-internal 'quote beg end)
-  )
-
-(defun mime-edit-enclose-mixed-region (beg end)
-  (interactive "*r")
-  (mime-edit-enclose-region-internal 'mixed beg end)
-  )
-
-(defun mime-edit-enclose-parallel-region (beg end)
-  (interactive "*r")
-  (mime-edit-enclose-region-internal 'parallel beg end)
-  )
-
-(defun mime-edit-enclose-digest-region (beg end)
-  (interactive "*r")
-  (mime-edit-enclose-region-internal 'digest beg end)
-  )
-
-(defun mime-edit-enclose-alternative-region (beg end)
-  (interactive "*r")
-  (mime-edit-enclose-region-internal 'alternative beg end)
-  )
-
-(defun mime-edit-enclose-pgp-signed-region (beg end)
-  (interactive "*r")
-  (mime-edit-enclose-region-internal 'pgp-signed beg end)
-  )
-
-(defun mime-edit-enclose-pgp-encrypted-region (beg end)
-  (interactive "*r")
-  (mime-edit-enclose-region-internal 'pgp-encrypted beg end)
-  )
-
-(defun mime-edit-enclose-kazu-signed-region (beg end)
-  (interactive "*r")
-  (mime-edit-enclose-region-internal 'kazu-signed beg end)
-  )
-
-(defun mime-edit-enclose-kazu-encrypted-region (beg end)
-  (interactive "*r")
-  (mime-edit-enclose-region-internal 'kazu-encrypted beg end)
-  )
-
-(defun mime-edit-insert-key (&optional arg)
-  "Insert a pgp public key."
-  (interactive "P")
-  (mime-edit-insert-tag "application" "pgp-keys")
-  (mime-edit-define-encoding "7bit")
-  (funcall (pgp-function 'insert-key))
-  )
-
-
-;;; @ flag setting
-;;;
-
-(defun mime-edit-set-split (arg)
-  (interactive
-   (list
-    (y-or-n-p "Do you want to enable split? ")
-    ))
-  (setq mime-edit-split-message arg)
-  (if arg
-      (message "This message is enabled to split.")
-    (message "This message is not enabled to split.")
-    ))
-
-(defun mime-edit-toggle-transfer-level (&optional transfer-level)
-  "Toggle transfer-level is 7bit or 8bit through.
-
-Optional TRANSFER-LEVEL is a number of transfer-level, 7 or 8."
-  (interactive)
-  (if (numberp transfer-level)
-      (setq mime-transfer-level transfer-level)
-    (if (< mime-transfer-level 8)
-       (setq mime-transfer-level 8)
-      (setq mime-transfer-level 7)
-      ))
-  (message (format "Current transfer-level is %d bit"
-                  mime-transfer-level))
-  (setq mime-transfer-level-string
-       (mime-encoding-name mime-transfer-level 'not-omit))
-  (force-mode-line-update)
-  )
-
-(defun mime-edit-set-transfer-level-7bit ()
-  (interactive)
-  (mime-edit-toggle-transfer-level 7)
-  )
-
-(defun mime-edit-set-transfer-level-8bit ()
-  (interactive)
-  (mime-edit-toggle-transfer-level 8)
-  )
-
-
-;;; @ pgp
-;;;
-
-(defvar mime-edit-pgp-processing nil)
-(make-variable-buffer-local 'mime-edit-pgp-processing)
-
-(defun mime-edit-set-sign (arg)
-  (interactive
-   (list
-    (y-or-n-p "Do you want to sign? ")
-    ))
-  (if arg
-      (progn
-       (setq mime-edit-pgp-processing 'sign)
-       (message "This message will be signed.")
-       )
-    (if (eq mime-edit-pgp-processing 'sign)
-       (setq mime-edit-pgp-processing nil)
-      )
-    (message "This message will not be signed.")
-    ))
-
-(defun mime-edit-set-encrypt (arg)
-  (interactive
-   (list
-    (y-or-n-p "Do you want to encrypt? ")
-    ))
-  (if arg
-      (progn
-       (setq mime-edit-pgp-processing 'encrypt)
-       (message "This message will be encrypt.")
-       )
-    (if (eq mime-edit-pgp-processing 'encrypt)
-       (setq mime-edit-pgp-processing nil)
-      )
-    (message "This message will not be encrypt.")
-    ))
-
-(defun mime-edit-pgp-enclose-buffer ()
-  (let ((beg (save-excursion
-              (goto-char (point-min))
-              (if (search-forward (concat "\n" mail-header-separator "\n"))
-                  (match-end 0)
-                )))
-       (end (point-max))
-       )
-    (if beg
-       (cond ((eq mime-edit-pgp-processing 'sign)
-              (mime-edit-enclose-pgp-signed-region beg end)
-              )
-             ((eq mime-edit-pgp-processing 'encrypt)
-              (mime-edit-enclose-pgp-encrypted-region beg end)
-              ))
-      )))
-
-
-;;; @ split
-;;;
-
-(defun mime-edit-insert-partial-header (fields subject
-                                              id number total separator)
-  (insert fields)
-  (insert (format "Subject: %s (%d/%d)\n" subject number total))
-  (insert mime-edit-mime-version-field-for-message/partial)
-  (insert (format "\
-Content-Type: message/partial; id=%s; number=%d; total=%d\n%s\n"
-                 id number total separator))
-  )
-
-(defun mime-edit-split-and-send
-  (&optional cmd lines mime-edit-message-max-length)
-  (interactive)
-  (or lines
-      (setq lines
-           (count-lines (point-min) (point-max)))
-      )
-  (or mime-edit-message-max-length
-      (setq mime-edit-message-max-length
-           (or (cdr (assq major-mode mime-edit-message-max-lines-alist))
-               mime-edit-message-default-max-lines))
-      )
-  (let* ((mime-edit-draft-file-name
-         (or (buffer-file-name)
-             (make-temp-name
-              (expand-file-name "mime-draft" mime-temp-directory))))
-        (separator mail-header-separator)
-        (id (concat "\""
-                    (replace-space-with-underline (current-time-string))
-                    "@" (system-name) "\"")))
-    (run-hooks 'mime-edit-before-split-hook)
-    (let ((the-buf (current-buffer))
-         (copy-buf (get-buffer-create " *Original Message*"))
-         (header (std11-header-string-except
-                  mime-edit-split-ignored-field-regexp separator))
-         (subject (mail-fetch-field "subject"))
-         (total (+ (/ lines mime-edit-message-max-length)
-                   (if (> (mod lines mime-edit-message-max-length) 0)
-                       1)))
-         (command
-          (or cmd
-              (cdr
-               (assq major-mode
-                     mime-edit-split-message-sender-alist))
-              (function
-               (lambda ()
-                 (interactive)
-                 (error "Split sender is not specified for `%s'." major-mode)
-                 ))
-              ))
-         (mime-edit-partial-number 1)
-         data)
-      (save-excursion
-       (set-buffer copy-buf)
-       (erase-buffer)
-       (insert-buffer the-buf)
-       (save-restriction
-         (if (re-search-forward
-              (concat "^" (regexp-quote separator) "$") nil t)
-             (let ((he (match-beginning 0)))
-               (replace-match "")
-               (narrow-to-region (point-min) he)
-               ))
-         (goto-char (point-min))
-         (while (re-search-forward mime-edit-split-blind-field-regexp nil t)
-           (delete-region (match-beginning 0)
-                          (1+ (std11-field-end)))
-           )))
-      (while (< mime-edit-partial-number total)
-       (erase-buffer)
-       (save-excursion
-         (set-buffer copy-buf)
-         (setq data (buffer-substring
-                     (point-min)
-                     (progn
-                       (goto-line mime-edit-message-max-length)
-                       (point))
-                     ))
-         (delete-region (point-min)(point))
-         )
-       (mime-edit-insert-partial-header
-        header subject id mime-edit-partial-number total separator)
-       (insert data)
-       (save-excursion
-         (message (format "Sending %d/%d..."
-                          mime-edit-partial-number total))
-         (call-interactively command)
-         (message (format "Sending %d/%d... done"
-                          mime-edit-partial-number total))
-         )
-       (setq mime-edit-partial-number
-             (1+ mime-edit-partial-number))
-       )
-      (erase-buffer)
-      (save-excursion
-       (set-buffer copy-buf)
-       (setq data (buffer-string))
-       (erase-buffer)
-       )
-      (mime-edit-insert-partial-header
-       header subject id mime-edit-partial-number total separator)
-      (insert data)
-      (save-excursion
-       (message (format "Sending %d/%d..."
-                        mime-edit-partial-number total))
-       (message (format "Sending %d/%d... done"
-                        mime-edit-partial-number total))
-       )
-      )))
-
-(defun mime-edit-maybe-split-and-send (&optional cmd)
-  (interactive)
-  (run-hooks 'mime-edit-before-send-hook)
-  (let ((mime-edit-message-max-length
-        (or (cdr (assq major-mode mime-edit-message-max-lines-alist))
-            mime-edit-message-default-max-lines))
-       (lines (count-lines (point-min) (point-max)))
-       )
-    (if (and (> lines mime-edit-message-max-length)
-            mime-edit-split-message)
-       (mime-edit-split-and-send cmd lines mime-edit-message-max-length)
-      )))
-
-
-;;; @ preview message
-;;;
-
-(defvar mime-edit-buffer nil) ; buffer local variable
-
-(defun mime-edit-preview-message ()
-  "preview editing MIME message."
-  (interactive)
-  (let* ((str (buffer-string))
-        (separator mail-header-separator)
-        (the-buf (current-buffer))
-        (buf-name (buffer-name))
-        (temp-buf-name (concat "*temp-article:" buf-name "*"))
-        (buf (get-buffer temp-buf-name))
-        )
-    (if buf
-       (progn
-         (switch-to-buffer buf)
-         (erase-buffer)
-         )
-      (setq buf (get-buffer-create temp-buf-name))
-      (switch-to-buffer buf)
-      )
-    (insert str)
-    (setq major-mode 'mime-temp-message-mode)
-    (make-local-variable 'mail-header-separator)
-    (setq mail-header-separator separator)
-    (make-local-variable 'mime-edit-buffer)
-    (setq mime-edit-buffer the-buf)
-
-    (run-hooks 'mime-edit-translate-hook)
-    (mime-edit-translate-buffer)
-    (goto-char (point-min))
-    (if (re-search-forward
-        (concat "^" (regexp-quote separator) "$"))
-       (replace-match "")
-      )
-    (mime-view-mode)
-    ))
-
-(defun mime-edit-quitting-method ()
-  "Quitting method for mime-view."
-  (let ((temp mime-raw-buffer)
-       buf)
-    (mime-preview-kill-buffer)
-    (set-buffer temp)
-    (setq buf mime-edit-buffer)
-    (kill-buffer temp)
-    (switch-to-buffer buf)
-    ))
-
-(set-alist 'mime-preview-quitting-method-alist
-          'mime-temp-message-mode
-          #'mime-edit-quitting-method)
-
-
-;;; @ edit again
-;;;
-
-(defvar mime-edit-again-ignored-field-regexp
-  (concat "^\\(" "Content-.*\\|Mime-Version"
-         (if mime-edit-insert-x-emacs-field "\\|X-Emacs")
-         "\\):")
-  "Regexp for deleted header fields when `mime-edit-again' is called.")
-
-(defun mime-edit-decode-buffer (not-decode-text)
-  (save-excursion
-    (goto-char (point-min))
-    (let ((ctl (mime-read-Content-Type)))
-      (if 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))
-             )
-            ((eq type 'multipart)
-             (let* ((boundary (cdr (assoc "boundary" params)))
-                    (boundary-pat
-                     (concat "\n--" (regexp-quote boundary) "[ \t]*\n"))
-                    )
-               (re-search-forward boundary-pat nil t)
-               (let ((bb (match-beginning 0)) eb tag)
-                 (setq tag (format "\n--<<%s>>-{\n" stype))
-                 (goto-char bb)
-                 (insert tag)
-                 (setq bb (+ bb (length tag)))
-                 (re-search-forward
-                  (concat "\n--" (regexp-quote boundary) "--[ \t]*\n")
-                  nil t)
-                 (setq eb (match-beginning 0))
-                 (replace-match (format "--}-<<%s>>\n" stype))
-                 (save-restriction
-                   (narrow-to-region bb eb)
-                   (goto-char (point-min))
-                   (while (re-search-forward boundary-pat nil t)
-                     (let ((beg (match-beginning 0))
-                           end)
-                       (delete-region beg (match-end 0))
-                       (save-excursion
-                         (if (re-search-forward boundary-pat nil t)
-                             (setq end (match-beginning 0))
-                           (setq end (point-max))
-                           )
-                         (save-restriction
-                           (narrow-to-region beg end)
-                           (mime-edit-decode-buffer not-decode-text)
-                           (goto-char (point-max))
-                           ))))
-                   ))
-               (goto-char (point-min))
-               (or (= (point-min) 1)
-                   (delete-region (point-min)
-                                  (if (search-forward "\n\n" nil t)
-                                      (match-end 0)
-                                    (point-min)
-                                    )))
-               ))
-            (t
-             (let* ((ctype (format "%s/%s" type stype))
-                    charset
-                    (pstr
-                     (let ((bytes (+ 14 (length ctype))))
-                       (mapconcat (function
-                                   (lambda (attr)
-                                     (if (string= (car attr) "charset")
-                                         (progn
-                                           (setq charset (cdr attr))
-                                           "")
-                                       (let* ((str
-                                               (concat (car attr)
-                                                       "=" (cdr attr))
-                                               )
-                                              (bs (length str))
-                                              )
-                                         (setq bytes (+ bytes bs 2))
-                                         (if (< bytes 76)
-                                             (concat "; " str)
-                                           (setq bytes (+ bs 1))
-                                           (concat ";\n " str)
-                                           )
-                                         ))))
-                                  params "")))
-                    encoding
-                    encoded)
-               (save-excursion
-                 (if (re-search-forward
-                      "Content-Transfer-Encoding:" nil t)
-                     (let ((beg (match-beginning 0))
-                           (hbeg (match-end 0))
-                           (end (std11-field-end)))
-                       (setq encoding
-                             (eliminate-top-spaces
-                              (std11-unfold-string
-                               (buffer-substring hbeg end))))
-                       (if (or charset (eq type 'text))
-                           (progn
-                             (delete-region beg (1+ end))
-                             (goto-char (point-min))
-                             (if (search-forward "\n\n" nil t)
-                                 (progn
-                                   (mime-decode-region
-                                    (match-end 0)(point-max) encoding)
-                                   (setq encoded t
-                                         encoding nil)
-                                   )))))))
-               (if (or encoded (not not-decode-text))
-                   (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)
-                        )))
-                 (if (= (point-min) 1)
-                     (progn
-                       (goto-char he)
-                       (insert
-                        (concat "\n"
-                                (mime-create-tag
-                                 (format "%s/%s%s" type stype pstr)
-                                 encoding)))
-                       )
-                   (delete-region (point-min) he)
-                   (insert
-                    (mime-create-tag
-                     (format "%s/%s%s" type stype pstr)
-                     encoding))
-                   ))
-               ))))
-       (or not-decode-text
-           (decode-mime-charset-region (point-min) (point-max)
-                                       default-mime-charset)
-           )
-       ))))
-
-(defun mime-edit-again (&optional not-decode-text no-separator not-turn-on)
-  "Convert current buffer to MIME-Edit buffer and turn on MIME-Edit mode.
-Content-Type and Content-Transfer-Encoding header fields will be
-converted to MIME-Edit tags."
-  (interactive)
-  (goto-char (point-min))
-  (if (search-forward
-       (concat "\n" (regexp-quote mail-header-separator) "\n")
-       nil t)
-      (replace-match "\n\n")
-    )
-  (mime-edit-decode-buffer not-decode-text)
-  (goto-char (point-min))
-  (save-restriction
-    (std11-narrow-to-header)
-    (goto-char (point-min))
-    (while (re-search-forward mime-edit-again-ignored-field-regexp nil t)
-      (delete-region (match-beginning 0) (1+ (std11-field-end)))
-      ))
-  (or no-separator
-      (and (re-search-forward "^$")
-          (replace-match mail-header-separator)
-          ))
-  (or not-turn-on
-      (turn-on-mime-edit)
-      ))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-edit)
-
-(run-hooks 'mime-edit-load-hook)
-
-;;; mime-edit.el ends here
diff --git a/mime-image.el b/mime-image.el
deleted file mode 100644 (file)
index 1e20ac0..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-;;; mime-image.el --- mime-view filter to display images
-
-;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko
-;; Copyright (C) 1996 Dan Rich
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;;         Dan Rich <drich@morpheus.corp.sgi.com>
-;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1995/12/15
-;;     Renamed: 1997/2/21 from tm-image.el
-
-;; Keywords: image, picture, X-Face, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Showy Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU XEmacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-;;     If you use this program with MULE, please install
-;;     etl8x16-bitmap.bdf font included in tl package.
-
-;;; Code:
-
-(require 'mime-view)
-(require 'alist)
-
-(cond ((featurep 'xemacs)
-       (require 'images)
-       
-       (defun-maybe image-inline-p (format)
-        (or (memq format image-native-formats)
-            (find-if (function
-                      (lambda (native)
-                        (image-converter-chain format native)
-                        ))
-                     image-native-formats)
-            ))
-       
-       (image-register-netpbm-utilities)
-       (image-register-converter 'pic 'ppm "pictoppm")
-       (image-register-converter 'mag 'ppm "magtoppm")
-       
-       (defun bitmap-insert-xbm-file (file)
-        (let ((gl (make-glyph (list (cons 'x file))))
-              (e (make-extent (point) (point)))
-              )
-          (set-extent-end-glyph e gl)
-          ))
-       
-       ;;
-       ;; X-Face
-       ;;
-       (autoload 'highlight-headers "highlight-headers")
-       
-       (defun mime-preview-x-face-function-use-highlight-headers ()
-        (highlight-headers (point-min) (re-search-forward "^$" nil t) t)
-        )
-       
-       (add-hook 'mime-display-header-hook
-                'mime-preview-x-face-function-use-highlight-headers)
-       
-       )
-      ((featurep 'mule)
-       ;; for MULE 2.* or mule merged EMACS
-       (require 'x-face-mule)
-
-       (defvar image-native-formats '(xbm))
-       
-       (defun-maybe image-inline-p (format)
-        (memq format image-native-formats)
-        )
-       
-       (defun-maybe image-normalize (format data)
-        (and (eq format 'xbm)
-             (vector 'xbm ':data data)
-             ))
-       
-       ;;
-       ;; X-Face
-       ;;
-       (if (exec-installed-p uncompface-program exec-path)
-          (add-hook 'mime-display-header-hook
-                    'x-face-decode-message-header)
-        )
-       ))
-
-(or (fboundp 'image-invalid-glyph-p)
-    (defsubst image-invalid-glyph-p (glyph)
-      (or (null (aref glyph 0))
-         (null (aref glyph 2))
-         (equal (aref glyph 2) "")
-         ))
-    )
-
-(mapcar (function
-        (lambda (rule)
-          (let ((type    (car rule))
-                (subtype (nth 1 rule))
-                (format  (nth 2 rule)))
-            (if (image-inline-p format)
-                (ctree-set-calist-strictly
-                 'mime-preview-condition
-                 (list (cons 'type type)(cons 'subtype subtype)
-                       '(body . visible)
-                       (cons 'body-presentation-method #'mime-display-image)
-                       (cons 'image-format format))
-                 )))))
-       '((image jpeg           jpeg)
-         (image gif            gif)
-         (image tiff           tiff)
-         (image x-tiff         tiff)
-         (image xbm            xbm)
-         (image x-xbm          xbm)
-         (image x-xpixmap      xpm)
-         (image x-pic          pic)
-         (image x-mag          mag)
-         (image png            png)
-         ))
-
-
-;;; @ content filter for images
-;;;
-;;    (for XEmacs 19.12 or later)
-
-(defun mime-display-image (entity situation)
-  (message "Decoding image...")
-  (let ((gl (image-normalize (cdr (assq 'image-format situation))
-                            (mime-entity-content entity))))
-    (cond ((image-invalid-glyph-p gl)
-          (setq gl nil)
-          (message "Invalid glyph!")
-          )
-         ((eq (aref gl 0) 'xbm)
-          (let ((xbm-file
-                 (make-temp-name
-                  (expand-file-name "tm" mime-temp-directory))))
-            (with-temp-buffer
-              (insert (aref gl 2))
-              (write-region (point-min)(point-max) xbm-file)
-              )
-            (message "Decoding image...")
-            (bitmap-insert-xbm-file xbm-file)
-            (delete-file xbm-file)
-            )
-          (message "Decoding image... done")
-          )
-         (t
-          (setq gl (make-glyph gl))
-          (let ((e (make-extent (point) (point))))
-            (set-extent-end-glyph e gl)
-            )
-          (message "Decoding image... done")
-          ))
-    )
-  (insert "\n")
-  )
-
-
-;;; @ end
-;;;
-
-(provide 'mime-image)
-
-;;; mime-image.el ends here
diff --git a/mime-mc.el b/mime-mc.el
deleted file mode 100644 (file)
index 7e5cb26..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-;;; mime-mc.el --- Mailcrypt interface for SEMI
-
-;; Copyright (C) 1996,1997,1998 MORIOKA Tomohiko
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: PGP, security, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Secure Emacs MIME Interface).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mailcrypt)
-(eval-and-compile (load "mc-pgp"))
-
-(defun mime-mc-pgp-generic-parser (result)
-  (let ((ret (mc-pgp-generic-parser result)))
-    (if (consp ret)
-       (vector (car ret)(cdr ret))
-      )))
-
-(defun mime-mc-process-region
-  (beg end passwd program args parser &optional buffer boundary)
-  (let ((obuf (current-buffer))
-       (process-connection-type nil)
-       mybuf result rgn proc)
-    (unwind-protect
-       (progn
-         (setq mybuf (or buffer (generate-new-buffer " *mailcrypt temp")))
-         (set-buffer mybuf)
-         (erase-buffer)
-         (set-buffer obuf)
-         (buffer-disable-undo mybuf)
-         (setq proc
-               (apply 'start-process "*PGP*" mybuf program args))
-         (if passwd
-             (progn
-               (process-send-string proc (concat passwd "\n"))
-               (or mc-passwd-timeout (mc-deactivate-passwd t))))
-         (process-send-region proc beg end)
-         (process-send-eof proc)
-         (while (eq 'run (process-status proc))
-           (accept-process-output proc 5))
-         (setq result (process-exit-status proc))
-         ;; Hack to force a status_notify() in Emacs 19.29
-         (delete-process proc)
-         (set-buffer mybuf)
-         (goto-char (point-max))
-         (if (re-search-backward "\nProcess \\*PGP.*\n\\'" nil t)
-             (delete-region (match-beginning 0) (match-end 0)))
-         (goto-char (point-min))
-         ;; CRNL -> NL
-         (while (search-forward "\r\n" nil t)
-           (replace-match "\n"))
-         ;; Hurm.  FIXME; must get better result codes.
-         (if (stringp result)
-             (error "%s exited abnormally: '%s'" program result)
-           (setq rgn (funcall parser result))
-           ;; If the parser found something, migrate it
-           (if (consp rgn)
-               (progn
-                 (set-buffer obuf)
-                 (if boundary
-                     (save-restriction
-                       (narrow-to-region beg end)
-                       (goto-char beg)
-                       (insert (format "--%s\n" boundary))
-                       (goto-char (point-max))
-                       (insert (format "\n--%s
-Content-Type: application/pgp-signature
-Content-Transfer-Encoding: 7bit
-
-" boundary))
-                       (insert-buffer-substring mybuf (car rgn) (cdr rgn))
-                       (goto-char (point-max))
-                       (insert (format "\n--%s--\n" boundary))
-                       )
-                   (delete-region beg end)
-                   (goto-char beg)
-                   (insert-buffer-substring mybuf (car rgn) (cdr rgn))
-                   )
-                 (set-buffer mybuf)
-                 (delete-region (car rgn) (cdr rgn)))))
-         ;; Return nil on failure and exit code on success
-         (if rgn result))
-      ;; Cleanup even on nonlocal exit
-      (if (and proc (eq 'run (process-status proc)))
-         (interrupt-process proc))
-      (set-buffer obuf)
-      (or buffer (null mybuf) (kill-buffer mybuf)))))
-
-(defun mime-mc-pgp-sign-region (start end &optional id unclear boundary)
-  ;; (if (not (boundp 'mc-pgp-user-id))
-  ;;     (load "mc-pgp")
-  ;;   )
-  (let ((process-environment process-environment)
-       (buffer (get-buffer-create mc-buffer-name))
-       passwd args key
-       (parser (function mc-pgp-generic-parser))
-       (pgp-path mc-pgp-path)
-       )
-    (setq key (mc-pgp-lookup-key (or id mc-pgp-user-id)))
-    (setq passwd
-         (mc-activate-passwd
-          (cdr key)
-          (format "PGP passphrase for %s (%s): " (car key) (cdr key))))
-    (setenv "PGPPASSFD" "0")
-    (setq args
-         (cons
-          (if boundary
-              "-fbast"
-            "-fast")
-          (list "+verbose=1" "+language=en"
-                (format "+clearsig=%s" (if unclear "off" "on"))
-                "+batchmode" "-u" (cdr key))))
-    (if mc-pgp-comment
-       (setq args (cons (format "+comment=%s" mc-pgp-comment) args))
-      )
-    (message "Signing as %s ..." (car key))
-    (if (mime-mc-process-region
-        start end passwd pgp-path args parser buffer boundary)
-       (progn
-         (if boundary
-             (progn
-               (goto-char (point-min))
-               (insert
-                (format "\
---[[multipart/signed; protocol=\"application/pgp-signature\";
- boundary=\"%s\"; micalg=pgp-md5][7bit]]\n" boundary))
-               ))
-         (message "Signing as %s ... Done." (car key))
-         t)
-      nil)))
-
-(defun mime-mc-pgp-encrypt-region (recipients start end &optional id sign)
-  (let ((mc-pgp-always-sign (if (eq sign 'maybe)
-                               mc-pgp-always-sign
-                             'never)))
-    (mc-pgp-encrypt-region
-     (mc-split "\\([ \t\n]*,[ \t\n]*\\)+" recipients)
-     start end id nil)
-    ))
-
-               
-;;; @ end
-;;;
-
-(provide 'mime-mc)
-
-;;; mime-mc.el ends here
diff --git a/mime-partial.el b/mime-partial.el
deleted file mode 100644 (file)
index f5378eb..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-;;; mime-partial.el --- Grabbing all MIME "message/partial"s.
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: OKABE Yasuo @ Kyoto University
-;;         MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: message/partial, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Suite of Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mime-view)
-(require 'mime-play)
-
-(defun mime-combine-message/partial-pieces-automatically (entity situation)
-  "Internal method for mime-view to combine message/partial messages
-automatically.  This function refers variable
-`mime-request-partial-message-method-alist' to select function to display
-partial messages using mime-view."
-  (interactive)
-  (let* ((id (cdr (assoc "id" situation)))
-        (target (cdr (assq 'major-mode situation)))
-        (subject-buf (eval (cdr (assq 'summary-buffer-exp situation))))
-        subject-id
-        (root-dir (expand-file-name
-                   (concat "m-prts-" (user-login-name)) mime-temp-directory))
-        (request-partial-message-method
-         (cdr (assq 'request-partial-message-method situation)))
-        full-file)
-    (setq root-dir (concat root-dir "/" (replace-as-filename id)))
-    (setq full-file (concat root-dir "/FULL"))
-    
-    (if (null target)
-       (error "%s is not supported. Sorry." target)
-      )
-    
-    ;; if you can't parse the subject line, try simple decoding method
-    (if (or (file-exists-p full-file)
-           (not (y-or-n-p "Merge partials?"))
-           )
-       (mime-store-message/partial-piece entity situation)
-      (setq subject-id (mime-read-field 'Subject entity))
-      (if (string-match "[0-9\n]+" subject-id)
-         (setq subject-id (substring subject-id 0 (match-beginning 0)))
-       )
-      (save-excursion
-       (set-buffer subject-buf)
-       (while (search-backward subject-id nil t))
-       (catch 'tag
-         (while t
-           (let* ((message
-                   ;; request message at the cursor in Subject buffer.
-                   (save-window-excursion
-                     (funcall request-partial-message-method)
-                     ))
-                  (situation (mime-entity-situation message))
-                  (the-id (cdr (assoc "id" situation))))
-             (when (string= the-id id)
-               (save-excursion
-                 (set-buffer (mime-entity-buffer message))
-                 (mime-store-message/partial-piece message situation)
-                 )
-               (if (file-exists-p full-file)
-                   (throw 'tag nil)
-                 ))
-             (if (not (progn
-                        (end-of-line)
-                        (search-forward subject-id nil t)
-                        ))
-                 (error "not found")
-               )
-             ))
-         )))))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-partial)
-
-(run-hooks 'mime-partial-load-hook)
-
-;;; mime-partial.el ends here
diff --git a/mime-pgp.el b/mime-pgp.el
deleted file mode 100644 (file)
index fe2e1f2..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-;;; mime-pgp.el --- mime-view internal methods for PGP.
-
-;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1995/12/7
-;;     Renamed: 1997/2/27 from tm-pgp.el
-;; Keywords: PGP, security, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Secure Emacs MIME Interface).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;;    This module is based on
-
-;;     [security-multipart] RFC 1847: "Security Multiparts for MIME:
-;;         Multipart/Signed and Multipart/Encrypted" by
-;;          Jim Galvin <galvin@tis.com>, Sandy Murphy <sandy@tis.com>,
-;;         Steve Crocker <crocker@cybercash.com> and
-;;          Ned Freed <ned@innosoft.com> (1995/10)
-
-;;     [PGP/MIME] RFC 2015: "MIME Security with Pretty Good Privacy
-;;         (PGP)" by Michael Elkins <elkins@aero.org> (1996/6)
-
-;;     [PGP-kazu] draft-kazu-pgp-mime-00.txt: "PGP MIME Integration"
-;;         by Kazuhiko Yamamoto <kazu@is.aist-nara.ac.jp> (1995/10;
-;;         expired)
-
-;;; Code:
-
-(require 'mime-play)
-
-
-;;; @ Internal method for multipart/signed
-;;;
-;;; It is based on RFC 1847 (security-multipart).
-
-(defun mime-verify-multipart/signed (entity situation)
-  "Internal method to verify multipart/signed."
-  (mime-raw-play-entity
-   (nth 1 (mime-entity-children entity)) ; entity-info of signature
-   (cdr (assq 'mode situation)) ; play-mode
-   ))
-
-
-;;; @ internal method for application/pgp
-;;;
-;;; It is based on draft-kazu-pgp-mime-00.txt (PGP-kazu).
-
-(defun mime-view-application/pgp (entity situation)
-  (let* ((start (mime-entity-point-min entity))
-        (end (mime-entity-point-max entity))
-        (entity-number (mime-raw-point-to-entity-number start))
-        (p-win (or (get-buffer-window mime-preview-buffer)
-                   (get-largest-window)))
-        (new-name (format "%s-%s" (buffer-name) entity-number))
-        (the-buf (current-buffer))
-        (mother mime-preview-buffer)
-        representation-type)
-    (set-buffer (get-buffer-create new-name))
-    (erase-buffer)
-    (insert-buffer-substring the-buf start end)
-    (cond ((progn
-            (goto-char (point-min))
-            (re-search-forward "^-+BEGIN PGP SIGNED MESSAGE-+$" nil t))
-          (funcall (pgp-function 'verify))
-          (goto-char (point-min))
-          (delete-region
-           (point-min)
-           (and
-            (re-search-forward "^-+BEGIN PGP SIGNED MESSAGE-+\n\n")
-            (match-end 0)))
-          (delete-region
-           (and (re-search-forward "^-+BEGIN PGP SIGNATURE-+")
-                (match-beginning 0))
-           (point-max))
-          (goto-char (point-min))
-          (while (re-search-forward "^- -" nil t)
-            (replace-match "-")
-            )
-          (setq representation-type (mime-entity-representation-type entity))
-          )
-         ((progn
-            (goto-char (point-min))
-            (re-search-forward "^-+BEGIN PGP MESSAGE-+$" nil t))
-          (as-binary-process (funcall (pgp-function 'decrypt)))
-          (goto-char (point-min))
-          (delete-region (point-min)
-                         (and
-                          (search-forward "\n\n")
-                          (match-end 0)))
-          (setq representation-type 'binary)
-          ))
-    (setq major-mode 'mime-show-message-mode)
-    (setq mime-raw-representation-type representation-type)
-    (save-window-excursion (mime-view-mode mother))
-    (set-window-buffer p-win mime-preview-buffer)
-    ))
-
-
-;;; @ Internal method for application/pgp-signature
-;;;
-;;; It is based on RFC 2015 (PGP/MIME).
-
-(defvar mime-pgp-command "pgp"
-  "*Name of the PGP command.")
-
-(defvar mime-pgp-default-language 'en
-  "*Symbol of language for pgp.
-It should be ISO 639 2 letter language code such as en, ja, ...")
-
-(defvar mime-pgp-good-signature-regexp-alist
-  '((en . "Good signature from user.*$"))
-  "Alist of language vs regexp to detect ``Good signature''.")
-
-(defvar mime-pgp-key-expected-regexp-alist
-  '((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)
-  (save-excursion
-    (set-buffer output-buffer)
-    (erase-buffer))
-  (let* ((lang (or mime-pgp-default-language 'en))
-        (status (call-process-region (point-min)(point-max)
-                                     mime-pgp-command
-                                     nil output-buffer nil
-                                     orig-file (format "+language=%s" lang)))
-        (regexp (cdr (assq lang mime-pgp-good-signature-regexp-alist))))
-    (if (= status 0)
-       (save-excursion
-         (set-buffer output-buffer)
-         (goto-char (point-min))
-         (message
-          (cond ((not (stringp regexp))
-                 "Please specify right regexp for specified language")
-                ((re-search-forward regexp nil t)
-                 (buffer-substring (match-beginning 0) (match-end 0)))
-                (t "Bad signature")))
-         ))))
-
-(defun mime-verify-application/pgp-signature (entity situation)
-  "Internal method to check PGP/MIME signature."
-  (let* ((start (mime-entity-point-min entity))
-        (end (mime-entity-point-max entity))
-        (encoding (cdr (assq 'encoding situation)))
-        (entity-node-id (mime-raw-point-to-entity-node-id start))
-        (mother (mime-entity-parent entity))
-        (knum (car entity-node-id))
-        (onum (if (> knum 0)
-                  (1- knum)
-                (1+ knum)))
-        (orig-entity (nth onum (mime-entity-children mother)))
-        (basename (expand-file-name "tm" mime-temp-directory))
-        (orig-file (make-temp-name basename))
-        (sig-file (concat orig-file ".sig"))
-        )
-    (mime-raw-write-region (mime-entity-point-min orig-entity)
-                          (mime-entity-point-max 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)
-       (let (pgp-id)
-         (save-excursion
-           (set-buffer mime-echo-buffer-name)
-           (goto-char (point-min))
-           (let ((regexp (cdr (assq (or mime-pgp-default-language 'en)
-                                    mime-pgp-key-expected-regexp-alist))))
-             (cond ((not (stringp regexp))
-                    (message
-                     "Please specify right regexp for specified language")
-                    )
-                   ((re-search-forward regexp nil t)
-                    (setq pgp-id
-                          (concat "0x" (buffer-substring-no-properties
-                                        (match-beginning 1)
-                                        (match-end 1))))
-                    ))))
-         (if (and pgp-id
-                  (y-or-n-p
-                   (format "Key %s not found; attempt to fetch? " pgp-id))
-                  )
-             (progn
-               (funcall (pgp-function 'fetch-key) (cons nil pgp-id))
-               (mime-pgp-check-signature mime-echo-buffer-name orig-file)
-               ))
-         ))
-    (let ((other-window-scroll-buffer mime-echo-buffer-name))
-      (scroll-other-window 8)
-      )
-    (delete-file orig-file)
-    (delete-file sig-file)
-    ))
-
-
-;;; @ Internal method for application/pgp-encrypted
-;;;
-;;; It is based on RFC 2015 (PGP/MIME).
-
-(defun mime-decrypt-application/pgp-encrypted (entity situation)
-  (let* ((entity-node-id (mime-entity-node-id entity))
-        (mother (mime-entity-parent entity))
-        (knum (car entity-node-id))
-        (onum (if (> knum 0)
-                  (1- knum)
-                (1+ knum)))
-        (orig-entity (nth onum (mime-entity-children mother))))
-    (mime-view-application/pgp orig-entity situation)
-    ))
-
-
-;;; @ Internal method for application/pgp-keys
-;;;
-;;; It is based on RFC 2015 (PGP/MIME).
-
-(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))
-        (new-name (format "%s-%s" (buffer-name) entity-number))
-        (encoding (cdr (assq 'encoding situation)))
-        str)
-    (setq str (buffer-substring start end))
-    (switch-to-buffer new-name)
-    (setq buffer-read-only nil)
-    (erase-buffer)
-    (insert str)
-    (goto-char (point-min))
-    (if (re-search-forward "^\n" nil t)
-       (delete-region (point-min) (match-end 0))
-      )
-    (mime-decode-region (point-min)(point-max) encoding)
-    (funcall (pgp-function 'snarf-keys))
-    (kill-buffer (current-buffer))
-    ))
-
-        
-;;; @ end
-;;;
-
-(provide 'mime-pgp)
-
-(run-hooks 'mime-pgp-load-hook)
-
-;;; mime-pgp.el ends here
diff --git a/mime-play.el b/mime-play.el
deleted file mode 100644 (file)
index f9834bd..0000000
+++ /dev/null
@@ -1,642 +0,0 @@
-;;; mime-play.el --- Playback processing module for mime-view.el
-
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1995/9/26 (separated from tm-view.el)
-;;     Renamed: 1997/2/21 from tm-play.el
-;; Keywords: MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Secretariat of Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mime-view)
-(require 'alist)
-(require 'filename)
-
-(eval-when-compile
-  (require 'mime-text)
-  (condition-case nil
-      (require 'bbdb)
-    (error (defvar bbdb-buffer-name nil)))
-  )
-
-(defvar mime-acting-situation-examples nil)
-
-(defun mime-save-acting-situation-examples ()
-  (let* ((file mime-acting-situation-examples-file)
-        (buffer (get-buffer-create " *mime-example*")))
-    (unwind-protect
-        (save-excursion
-          (set-buffer buffer)
-          (setq buffer-file-name file)
-          (erase-buffer)
-          (insert ";;; " (file-name-nondirectory file) "\n")
-          (insert "\n;; This file is generated automatically by "
-                  mime-view-version-string "\n\n")
-         (insert ";;; Code:\n\n")
-         (pp `(setq mime-acting-situation-examples
-                    ',mime-acting-situation-examples)
-             (current-buffer))
-         (insert "\n;;; "
-                  (file-name-nondirectory file)
-                  " ends here.\n")
-          (save-buffer))
-      (kill-buffer buffer))))
-
-(add-hook 'kill-emacs-hook 'mime-save-acting-situation-examples)
-
-  
-;;; @ content decoder
-;;;
-
-(defvar mime-preview-after-decoded-position nil)
-
-(defun mime-preview-play-current-entity (&optional mode)
-  "Play current entity.
-It decodes current 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\"."
-  (interactive (list "play"))
-  (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 mode)
-         (when (eq (current-buffer) raw-buffer)
-           (set-buffer the-buf)
-           (goto-char mime-preview-after-decoded-position)
-           )))))
-
-(defun mime-sort-situation (situation)
-  (sort situation
-       #'(lambda (a b)
-           (let ((a-t (car a))
-                 (b-t (car b))
-                 (order '((type . 1)
-                          (subtype . 2)
-                          (mode . 3)
-                          (method . 4)
-                          (major-mode . 5)
-                          (disposition-type . 6)
-                          ))
-                 a-order b-order)
-             (if (symbolp a-t)
-                 (let ((ret (assq a-t order)))
-                   (if ret
-                       (setq a-order (cdr ret))
-                     (setq a-order 7)
-                     ))
-               (setq a-order 8)
-               )
-             (if (symbolp b-t)
-                 (let ((ret (assq b-t order)))
-                   (if ret
-                       (setq b-order (cdr ret))
-                     (setq b-order 7)
-                     ))
-               (setq b-order 8)
-               )
-             (if (= a-order b-order)
-                 (string< (format "%s" a-t)(format "%s" b-t))
-               (< a-order b-order))
-             )))
-  )
-
-(defsubst mime-delq-null-situation (situations field)
-  (let (dest)
-    (while situations
-      (let ((situation (car situations)))
-       (if (assq field situation)
-           (setq dest (cons situation dest))
-         ))
-      (setq situations (cdr situations)))
-    dest))
-
-(defun mime-raw-play-entity (entity &optional mode situation)
-  "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))
-      )
-    (setq ret
-         (or (ctree-match-calist mime-acting-situation-examples situation)
-             (ctree-match-calist-partially mime-acting-situation-examples
-                                           situation)
-             situation))
-    (setq ret
-         (or (mime-delq-null-situation
-              (ctree-find-calist mime-acting-condition ret
-                                 mime-view-find-every-acting-situation)
-              'method)
-             (mime-delq-null-situation
-              (ctree-find-calist mime-acting-condition situation
-                                 mime-view-find-every-acting-situation)
-              'method)
-             ))
-    (cond ((cdr ret)
-          (setq ret (select-menu-alist
-                     "Methods"
-                     (mapcar (function
-                              (lambda (situation)
-                                (cons
-                                 (format "%s"
-                                         (cdr (assq 'method situation)))
-                                 situation)))
-                             ret)))
-          (setq ret (mime-sort-situation ret))
-          (ctree-set-calist-strictly 'mime-acting-situation-examples ret)
-          )
-         (t
-          (setq ret (car ret))
-          ))
-    (setq method (cdr (assq 'method ret)))
-    (cond ((and (symbolp method)
-               (fboundp method))
-          (funcall method entity ret)
-          )
-         ((stringp method)
-          (mime-activate-mailcap-method entity ret)
-          )
-          ;; ((and (listp method)(stringp (car method)))
-          ;;  (mime-activate-external-method entity ret)
-          ;;  )
-         (t
-          (mime-show-echo-buffer "No method are specified for %s\n"
-                                 (mime-entity-type/subtype entity))
-          ))
-    ))
-
-
-;;; @ external decoder
-;;;
-
-(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 name
-                   (expand-file-name name mime-temp-directory)
-                 (make-temp-name
-                  (expand-file-name "EMI" mime-temp-directory))
-                 ))
-         (mime-write-decoded-region (mime-entity-body-start entity) end
-                                    name (cdr (assq 'encoding situation)))
-         (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))))
-    (if (file-exists-p file)
-       (delete-file file)
-      ))
-  (remove-alist 'mime-mailcap-method-filename-alist process)
-  (message (format "%s %s" process event)))
-
-(defvar mime-echo-window-is-shared-with-bbdb t
-  "*If non-nil, mime-echo window is shared with BBDB window.")
-
-(defvar mime-echo-window-height
-  (function
-   (lambda ()
-     (/ (window-height) 5)
-     ))
-  "*Size of mime-echo window.
-It allows function or integer.  If it is function,
-`mime-show-echo-buffer' calls it to get height of mime-echo window.
-Otherwise `mime-show-echo-buffer' uses it as height of mime-echo
-window.")
-
-(defun mime-show-echo-buffer (&rest forms)
-  "Show mime-echo buffer to display MIME-playing information."
-  (get-buffer-create mime-echo-buffer-name)
-  (let ((the-win (selected-window))
-       (win (get-buffer-window mime-echo-buffer-name))
-       )
-    (or win
-       (if (and mime-echo-window-is-shared-with-bbdb
-                (boundp 'bbdb-buffer-name)
-                (setq win (get-buffer-window bbdb-buffer-name))
-                )
-           (set-window-buffer win mime-echo-buffer-name)
-         (select-window (get-buffer-window mime-preview-buffer))
-         (setq win (split-window-vertically
-                    (- (window-height)
-                       (if (functionp mime-echo-window-height)
-                           (funcall mime-echo-window-height)
-                         mime-echo-window-height)
-                       )))
-         (set-window-buffer win mime-echo-buffer-name)
-         ))
-    (select-window win)
-    (goto-char (point-max))
-    (if forms
-       (insert (apply (function format) forms))
-      )
-    (select-window the-win)
-    ))
-
-
-;;; @ file name
-;;;
-
-(defvar mime-view-file-name-char-regexp "[A-Za-z0-9+_-]")
-
-(defvar mime-view-file-name-regexp-1
-  (concat mime-view-file-name-char-regexp "+\\."
-         mime-view-file-name-char-regexp "+"))
-
-(defvar mime-view-file-name-regexp-2
-  (concat (regexp-* mime-view-file-name-char-regexp)
-         "\\(\\." mime-view-file-name-char-regexp "+\\)*"))
-
-(defun mime-entity-safe-filename (entity)
-  (let ((filename
-        (or (mime-entity-filename entity)
-            (let ((subj
-                   (or (mime-read-field 'Content-Description entity)
-                       (mime-read-field 'Subject entity))))
-              (if (and subj
-                       (or (string-match mime-view-file-name-regexp-1 subj)
-                           (string-match mime-view-file-name-regexp-2 subj)))
-                  (substring subj (match-beginning 0)(match-end 0))
-                )))))
-    (if filename
-       (replace-as-filename filename)
-      )))
-
-
-;;; @ file extraction
-;;;
-
-(defun mime-save-content (entity situation)
-  (let* ((name (mime-entity-safe-filename entity))
-        (encoding (or (mime-entity-encoding entity) "7bit"))
-        (filename (if (and name (not (string-equal name "")))
-                      (expand-file-name name
-                                        (save-window-excursion
-                                          (call-interactively
-                                           (function
-                                            (lambda (dir)
-                                              (interactive "DDirectory: ")
-                                              dir)))))
-                    (save-window-excursion
-                      (call-interactively
-                       (function
-                        (lambda (file)
-                          (interactive "FFilename: ")
-                          (expand-file-name file)))))))
-        )
-    (if (file-exists-p filename)
-       (or (yes-or-no-p (format "File %s exists. Save anyway? " filename))
-           (error "")))
-    (mime-write-decoded-region (mime-entity-body-start entity)
-                              (mime-entity-body-end entity)
-                              filename encoding)
-    ))
-
-
-;;; @ file detection
-;;;
-
-(defvar mime-file-content-type-alist
-  '(("JPEG"    image jpeg)
-    ("GIF"     image gif)
-    )
-  "*Alist of \"file\" output patterns vs. corresponding media-types.
-Each element looks like (REGEXP TYPE SUBTYPE).
-REGEXP is pattern for \"file\" command output.
-TYPE is symbol to indicate primary type of media-type.
-SUBTYPE is symbol to indicate subtype of media-type.")
-
-(defun mime-detect-content (entity situation)
-  (let ((beg (mime-entity-point-min entity))
-       (end (mime-entity-point-max entity)))
-    (goto-char beg)
-    (let* ((name (save-restriction
-                  (narrow-to-region beg end)
-                  (mime-entity-safe-filename entity)
-                  ))
-          (encoding (or (cdr (assq 'encoding situation)) "7bit"))
-          (filename (if (and name (not (string-equal name "")))
-                        (expand-file-name name mime-temp-directory)
-                      (make-temp-name
-                       (expand-file-name "EMI" mime-temp-directory)))))
-      (mime-write-decoded-region (mime-entity-body-start entity) end
-                                filename encoding)
-      (let (type subtype)
-       (with-temp-buffer
-         (call-process "file" nil t nil filename)
-         (goto-char (point-min))
-         (if (search-forward (concat filename ": ") nil t)
-             (let ((rest mime-file-content-type-alist))
-               (while (not (let ((cell (car rest)))
-                             (if (looking-at (car cell))
-                                 (setq type (nth 1 cell)
-                                       subtype (nth 2 cell))
-                               )))
-                 (setq rest (cdr rest))))))
-       (if type
-           (mime-raw-play-entity
-            entity "play"
-            (put-alist 'type type
-                       (put-alist 'subtype subtype
-                                  (mime-entity-situation entity))))
-         ))
-      )))
-
-
-;;; @ 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)
-    (mime-preview-kill-buffer)
-    (set-window-configuration win-conf)
-    (pop-to-buffer mother)
-    ))
-
-(defun mime-view-message/rfc822 (entity cal)
-  (let* ((beg (mime-entity-point-min entity))
-        (end (mime-entity-point-max entity))
-        (cnum (mime-raw-point-to-entity-number beg))
-        (new-name (format "%s-%s" (buffer-name) cnum))
-        (mother mime-preview-buffer)
-        (representation-type (mime-entity-representation-type entity))
-        str)
-    (setq str (buffer-substring beg end))
-    (switch-to-buffer new-name)
-    (erase-buffer)
-    (insert str)
-    (goto-char (point-min))
-    (if (re-search-forward "^\n" nil t)
-       (delete-region (point-min) (match-end 0))
-      )
-    (setq major-mode 'mime-show-message-mode)
-    (setq mime-raw-representation-type representation-type)
-    (mime-view-mode mother)
-    ))
-
-
-;;; @ message/partial
-;;;
-
-(defun mime-raw-write-region (start end filename)
-  "Write current region into specified file.
-When called from a program, takes three arguments:
-START, END and FILENAME.  START and END are buffer positions.
-It refer `mime-raw-representation-type' or `major-mode
-mime-raw-representation-type-alist'.  If it is `binary', region is
-saved as binary.  Otherwise the region is saved by `write-region'."
-  (let ((presentation-type
-        (or mime-raw-representation-type
-            (cdr (or (assq major-mode mime-raw-representation-type-alist)
-                     (assq t mime-raw-representation-type-alist))))))
-    (if (eq presentation-type 'binary)
-       (write-region-as-binary start end filename)
-      (write-region start end filename)
-      )))
-
-(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)) mime-temp-directory))
-        (id (cdr (assoc "id" cal)))
-        (number (cdr (assoc "number" cal)))
-        (total (cdr (assoc "total" cal)))
-        file
-        (mother mime-preview-buffer)
-        )
-    (or (file-exists-p 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)
-       )
-    (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)))
-             )
-         (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-mode mother)
-           )
-         (set-window-buffer pwin
-                            (save-excursion
-                              (set-buffer full-buf)
-                              mime-preview-buffer))
-         (select-window pwin)
-         )
-      (setq file (concat root-dir "/" number))
-      (mime-raw-write-region (mime-entity-body-start entity)
-                            (mime-entity-body-end entity) file)
-      (let ((total-file (concat root-dir "/CT")))
-       (setq total
-             (if total
-                 (progn
-                   (or (file-exists-p total-file)
-                       (save-excursion
-                         (set-buffer
-                          (get-buffer-create mime-temp-buffer-name))
-                         (erase-buffer)
-                         (insert total)
-                         (write-region (point-min)(point-max) total-file)
-                         (kill-buffer (current-buffer))
-                         ))
-                   (string-to-number total)
-                   )
-               (and (file-exists-p total-file)
-                    (save-excursion
-                      (set-buffer (find-file-noselect total-file))
-                      (prog1
-                          (and (re-search-forward "[0-9]+" nil t)
-                               (string-to-number
-                                (buffer-substring (match-beginning 0)
-                                                  (match-end 0)))
-                               )
-                        (kill-buffer (current-buffer))
-                        )))
-               )))
-      (if (and total (> total 0))
-         (catch 'tag
-           (save-excursion
-             (set-buffer (get-buffer-create mime-temp-buffer-name))
-             (let ((full-buf (current-buffer)))
-               (erase-buffer)
-               (let ((i 1))
-                 (while (<= i total)
-                   (setq file (concat root-dir "/" (int-to-string i)))
-                   (or (file-exists-p file)
-                       (throw 'tag nil)
-                       )
-                   (as-binary-input-file (insert-file-contents file))
-                   (goto-char (point-max))
-                   (setq i (1+ i))
-                   ))
-               (as-binary-output-file
-                (write-region (point-min)(point-max)
-                              (expand-file-name "FULL" root-dir)))
-               (let ((i 1))
-                 (while (<= i total)
-                   (let ((file (format "%s/%d" root-dir i)))
-                     (and (file-exists-p file)
-                          (delete-file file)
-                          ))
-                   (setq i (1+ i))
-                   ))
-               (let ((file (expand-file-name "CT" root-dir)))
-                 (and (file-exists-p file)
-                      (delete-file file)
-                      ))
-               (save-window-excursion
-                 (setq major-mode 'mime-show-message-mode)
-                 (mime-view-mode mother)
-                 )
-               (let ((pwin (or (get-buffer-window mother)
-                               (get-largest-window)
-                               ))
-                     (pbuf (save-excursion
-                             (set-buffer full-buf)
-                             mime-preview-buffer)))
-                 (set-window-buffer pwin pbuf)
-                 (select-window pwin)
-                 )))))
-      )))
-
-
-;;; @ message/external-body
-;;;
-
-(defvar mime-raw-dired-function
-  (if (and (>= emacs-major-version 19) window-system)
-      (function dired-other-frame)
-    (function mime-raw-dired-function-for-one-frame)
-    ))
-
-(defun mime-raw-dired-function-for-one-frame (dir)
-  (let ((win (or (get-buffer-window mime-preview-buffer)
-                (get-largest-window))))
-    (select-window win)
-    (dired dir)
-    ))
-
-(defun mime-view-message/external-anon-ftp (entity cal)
-  (let* ((site (cdr (assoc "site" cal)))
-        (directory (cdr (assoc "directory" cal)))
-        (name (cdr (assoc "name" cal)))
-        (pathname (concat "/anonymous@" site ":" directory)))
-    (message (concat "Accessing " (expand-file-name name pathname) " ..."))
-    (funcall mime-raw-dired-function pathname)
-    (goto-char (point-min))
-    (search-forward name)
-    ))
-
-(defvar mime-raw-browse-url-function (function mime-browse-url))
-
-(defun mime-view-message/external-url (entity cal)
-  (let ((url (cdr (assoc "url" cal))))
-    (message (concat "Accessing " url " ..."))
-    (funcall mime-raw-browse-url-function url)))
-
-
-;;; @ rot13-47
-;;;
-
-(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)
-      )
-    (setq buffer-read-only nil)
-    (erase-buffer)
-    (mime-text-insert-decoded-body entity)
-    (mule-caesar-region (point-min) (point-max))
-    (set-buffer-modified-p nil)
-    (set-buffer mother)
-    (view-buffer new-name)
-    ))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-play)
-
-(let* ((file mime-acting-situation-examples-file)
-       (buffer (get-buffer-create " *mime-example*")))
-  (if (file-readable-p file)
-      (unwind-protect
-         (save-excursion
-           (set-buffer buffer)
-           (erase-buffer)
-           (insert-file-contents file)
-           (eval-buffer)
-           ;; format check
-           (or (eq (car mime-acting-situation-examples) 'type)
-               (setq mime-acting-situation-examples nil))
-           )
-       (kill-buffer buffer))))
-
-;;; mime-play.el ends here
diff --git a/mime-setup.el b/mime-setup.el
deleted file mode 100644 (file)
index dae2871..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-;;; mime-setup.el --- setup file for MIME viewer and composer.
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: MIME, multimedia, multilingual, mail, news
-
-;; This file is part of SEMI (Setting for Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(load "mail-mime-setup")
-
-(condition-case nil
-    (load "gnus-mime-setup")
-  (error (message "gnus-mime-setup is not found."))
-  )
-
-(condition-case nil
-    (load "emh-setup")
-  (error (message "emh-setup is not found."))
-  )
-
-
-;;; @ end
-;;;
-
-(provide 'mime-setup)
-
-(run-hooks 'mime-setup-load-hook)
-
-;;; mime-setup.el ends here
diff --git a/mime-text.el b/mime-text.el
deleted file mode 100644 (file)
index d0860d2..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-;;; mime-text.el --- mime-view content filter for text
-
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: text, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Suite of Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mime-view)
-
-
-;;; @ code conversion
-;;;
-
-(defun mime-text-insert-decoded-body (entity)
-  "Insert text body of ENTITY in SITUATION.
-It decodes MIME-encoding then code-converts as MIME-charset.
-MIME-encoding is value of field 'encoding of SITUATION.  It must be
-'nil or string.  MIME-charset is value of field \"charset\" of
-SITUATION.  It must be symbol."
-  (let ((str (mime-entity-content entity)))
-    (insert
-     (if (and (mime-entity-cooked-p entity)
-             (member (mime-entity-encoding entity)
-                     '(nil "7bit" "8bit" "binary")))
-        str
-       (decode-mime-charset-string str
-                                  (or (mime-content-type-parameter
-                                       (mime-entity-content-type entity)
-                                       "charset")
-                                      default-mime-charset))
-       )))
-  (run-hooks 'mime-text-decode-hook)
-  )
-
-
-;;; @ content filters for mime-text
-;;;
-
-(defun mime-display-text/plain (entity situation)
-  (save-restriction
-    (narrow-to-region (point-max)(point-max))
-    (mime-text-insert-decoded-body entity)
-    (goto-char (point-max))
-    (if (not (eq (char-after (1- (point))) ?\n))
-       (insert "\n")
-      )
-    (mime-add-url-buttons)
-    (run-hooks 'mime-display-text/plain-hook)
-    ))
-
-(defun mime-display-text/richtext (entity situation)
-  (save-restriction
-    (narrow-to-region (point-max)(point-max))
-    (mime-text-insert-decoded-body entity)
-    (let ((beg (point-min)))
-      (remove-text-properties beg (point-max) '(face nil))
-      (richtext-decode beg (point-max))
-      )))
-
-(defun mime-display-text/enriched (entity situation)
-  (save-restriction
-    (narrow-to-region (point-max)(point-max))
-    (mime-text-insert-decoded-body entity)
-    (let ((beg (point-min)))
-      (remove-text-properties beg (point-max) '(face nil))
-      (enriched-decode beg (point-max))
-      )))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-text)
-
-;;; mime-text.el ends here
diff --git a/mime-view-ja.sgml b/mime-view-ja.sgml
deleted file mode 100644 (file)
index e0591a2..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-<!doctype sinfo system>
-<head>
-<title>SEMI 1.6 MIME-View \e$B@bL@=q\e(B
-<author>\e$B<i2,\e(B \e$BCNI'\e(B <mail>morioka@jaist.ac.jp</mail>
-<date>1998/06/15
-
-<toc>
-</head>
-
-<body>
-
-<abstract>
-<p>
-This file documents MIME-View, a MIME Viewer for GNU Emacs.
-<p>
-GNU Emacs \e$BMQ$N\e(B MIME Viewer \e$B$G$"$k\e(B MIME-View \e$B$K$D$$$F@bL@$7$^$9!#\e(B
-</abstract>
-
-
-<h1> MIME-View \e$B$C$F2?!)\e(B
-<node> Introduction
-<p>
-MIME-View \e$B$O\e(B GNU Emacs \e$B$GF0:n$9$kHFMQE*$J\e(B MIME viewer \e$B$G$9!#\e(B
-<p>
-MIME-View \e$B$O\e(B MIME message \e$B$r1\Mw$9$k$?$a$NMxMQ<T3&LL\e(B (user interface) 
-\e$B$N3K$G$"$j!"$3$N>e$G\e(B presentation-method \e$B$H8F$P$l$kI=<($r:n$k%W%m%0%i%`\e(B
-\e$B$rF0$+$7$?$j!"\e(Bacting-method \e$B$H8F$P$l$k\e(B entity \e$B$N=hM}%W%m%0%i%`$rF0$+$9\e(B
-\e$B$3$H$,2DG=$G!"$5$^$6$^$J<oN`$N\e(B entity \e$B$r07$&;v$,$G$-$k$h$&$K$J$C$F$$$^$9!#\e(B
-
-
-<h1> MIME-View \e$B35@b\e(B
-<node> Overview
-<p>
-Internet \e$B$NEE;R=q4J!&%M%C%H%K%e!<%9$J$I$N=qLL\e(B (message) \e$B$NI=8=7A<0$O\e(B 
-STD 11 \e$B$K4p$E$$$F$$$^$9!#\e(BSTD 11 \e$B$N=qLLK\BN\e(B (message body) \e$B$O9T$rM#0l$N\e(B
-\e$B9=B$$H$9$k4J0WJ8LL\e(B (plain text) \e$B$G$"$j!"J8;zId9f$b\e(B us-ascii \e$B$HDj$a$i$l\e(B
-\e$B$F$$$^$9!#<B:]$K$O!"J8;zId9f$r\e(B us-ascii \e$B$NBe$o$j$K$=$N8@8l7w$GMQ$$$i$l\e(B
-\e$B$kJ8;zId9f$H$7$?!XCO0h2=$5$l$?\e(B STD 11\e$B!Y=qLL$bMQ$$$i$l$F$-$^$7$?$,!"$3\e(B
-\e$B$N>l9g$b=qLL$NJ8;zId9f$O#1$D$G$9!#$3$N$?$a!"MxMQ<T3&LL\e(B (Message User
-Agent) \e$B$O!"$7$P$7$P!"\e(Bbyte \e$BNs\e(B = us-ascii \e$BJ8;zNs!"$J$$$7$O!"\e(Bbyte \e$BNs\e(B = \e$B$=\e(B
-\e$B$N8@8l7w$GMQ$$$kJ8;zId9f$NJ8;zNs$N$h$&$K8+Jo$7$F$-$^$7$?!#\e(B
-<p>
-\e$B$7$+$7$J$,$i!"\e(BMIME \e$B$G$O=qLL$O\e(B entity \e$B$rC10L$H$9$kLZ9=B$$K$J$j!"$^$?!"\e(B
-\e$B#1$D$N=qLL$GJ#?t$NJ8;zId9f$rMQ$$$k$3$H$,$G$-$^$9!#$^$?!"\e(Bentity \e$B$NFbMF\e(B
-\e$B$OJ8LL$d3($N$h$&$JC1=c$KI=<(2DG=$J$b$N$@$1$G$J$/!"2;@<$dF02h$J$I$N0lDj\e(B
-\e$B;~4V:F@8$5$l$k$h$&$J$b$N$dFCDj$N%"%W%j%1!<%7%g%s$N%G!<%?$d%W%m%0%i%`$N\e(B
-\e$B%=!<%9!"$"$k$$$O!"\e(Bftp \e$B$d\e(B mail service \e$B$NMxMQK!$d\e(B URL \e$B$H$$$C$?7A$GI=$5\e(B
-\e$B$l$?30It;2>H$J$I$N$5$^$6$^$J$b$N$,9M$($i$^$9!#$3$N$?$a!"I=<($@$1$r9M$(\e(B
-\e$B$F$$$?\e(B STD 11 \e$B$K$*$1$kMxMQ<T3&LL$NC1=c$J1dD9$G$O\e(B MIME \e$B$NA4$F$N5!G=$r07\e(B
-\e$B$&$3$H$O$G$-$^$;$s!#$D$^$j!"\e(BMIME \e$B$N7A<0$K9g$o$;$FI|9f$9$k$@$1$G$OIT==\e(B
-\e$BJ,$G$"$j!"MxMQ<T$H$NBPOCE*$J:F@8=hM}$r9MN8$9$kI,MW$,$"$j$^$9!#\e(BMIME \e$B=q\e(B
-\e$BLL$N7A<0$O<+F0=hM}$,$7$d$9$/@_7W$5$l$F$$$^$9$,!"\e(BMIME \e$B=qLL$K4^$^$l$kFb\e(B
-\e$BMF$NCf$K$O%;%-%e%j%F%#!<>e$NLdBj$+$i<+F0=hM}$r$9$k$Y$-$G$J$$$b$N$,$"$j!"\e(B
-\e$B$3$&$$$C$?$b$N$N:F@8$K4X$7$F$OMxMQ<T$NH=CG$r6D$0$h$&$K@_7W$5$l$k$Y$-$G\e(B
-\e$B$7$g$&!#7k6I!"\e(BMIME \e$B=qLL$r07$&$?$a$K$O\e(B STD 11 \e$B$*$h$S\e(B MIME \e$B$N9=J8$G5-=R\e(B
-\e$B$5$l$?%a%C%;!<%8$N>pJs8r49MQI=8=$H$=$N2r<a7k2L$G$"$kI=<(2hLL$d:F@8Ey$N\e(B
-\e$B=hM}$r6hJL$7$F9M$($kI,MW$,$"$j$^$9!#$^$?!"MxMQ<T$H$NBPOCE*$J:F@8=hM}$,\e(B
-\e$BI,MW$G$9!#\e(B
-<p>
-\e$B$3$N$?$a!"\e(BMIME-View \e$B$O#1$D$N=qLL$KBP$7$F!">pJs8r49MQI=8=$r3JG<$9$k\e(B 
-mime-raw-buffer \e$B$HI=<(MQI=8=$r3JG<$9$k\e(B mime-preview-buffer \e$B$N#2$D$N\e(B 
-buffer \e$B$rMQ$$$^$9!#\e(B
-<p>
-MIME-View \e$B$O\e(B mime-preview-buffer \e$B$KBP$7$F\e(B mime-view-mode \e$B$H$$$&\e(B MIME
-message \e$B$r1\Mw$9$k$?$a$N\e(B mode \e$B$rDs6!$7$^$9!#MxMQ<T$O$3$3$G3F\e(B entity \e$B$K\e(B
-\e$BBP$7$FA`:n$r9T$&$3$H$,$G$-$^$9!#\e(B
-
-
-<h1> mime-preview-buffer \e$B$N2hLL9=@.\e(B
-<node> MIME-Preview
-<p>
-mime-view-mode \e$B$G$O3F\e(B entity \e$B$KBP$7$F\e(B
-<p>
-<verb>
-       [entity-button]
-       (header)
-       
-       (body)
-       (separator)
-</verb>
-<p>
-<noindent>
-\e$B$H$$$&>pJs$rI=<($7$^$9!#$3$l$i$O>r7o$K=>$C$F\e(B design \e$B$rJQ99$7$?$j!"I=<(\e(B
-\e$B$rM^@)$9$k$3$H$b$G$-$^$9!#\e(B
-<p>
-\e$B0J2<$K!"I=<(Nc$r<($7$^$9!#\e(B
-
-
-<verb>
-From: morioka@jaist.ac.jp (\e$B<i2,\e(B \e$BCNI'\e(B / MORIOKA Tomohiko)
-Subject: Re: \e$B<ALd!)\e(B
-Newsgroups: zxr.message.mime
-Date: 22 Oct 93 11:02:44
-Mime-Version: 1.0
-Organization: Japan Advanced Institute of Science and Technology,
-        Ishikawa, Japan
-
-[1  (text/plain)]
-  MIME-Edit mode \e$B$K$*$1$k!"\e(BMIME message \e$B$N:n$jJ}!#\e(B
-
-  C-c C-x ? \e$B$r2!$9$H\e(B help \e$B$,=P$F$/$k!#\e(B
-
-C-c C-x C-t    insert a text message.
-C-c C-x TAB    insert a (binary) file.
-C-c C-x C-e    insert a reference to external body.
-C-c C-x C-v    insert a voice message.
-C-c C-x C-y    insert a mail or news message.
-C-c C-x RET    insert a mail message.
-C-c C-x C-s    insert a signature file at end.
-C-c C-x t      insert a new MIME tag.
-C-c C-x a      enclose as multipart/alternative.
-C-c C-x p      enclose as multipart/parallel.
-C-c C-x m      enclose as multipart/mixed.
-C-c C-x d      enclose as multipart/digest.
-C-c C-x s      enclose as PGP signed.
-C-c C-x e      enclose as PGP encrypted.
-C-c C-x C-k    insert PGP public key.
-C-c C-x C-p    preview editing MIME message.
-...
-
-\e$B$C$FLu$G!"\e(BC-c C-x C-i \e$B$r2!$7$F!"A^F~$7$?$$\e(B binary file \e$B$r;XDj$7$^$9!#\e(B
-
-  binary file \e$B$N\e(B MIME encoding \e$B$K$O!"IaDL!"\e(BBase64 \e$B$r;XDj$7$^$9!#\e(B
-
-[2  (image/gif)]
-
-[3  (text/plain)]
-
-  \e$B$3$s$JIw$K!"3(F~$j\e(B message \e$B$N$G$->e$,$j!#\e(B
-
-\e$B".".".".".".".".".".".\e(B \e$B%m%7%"%s!&%F%#!<$r0lGU!#\e(B \e$B".".".".".".".".".".".\e(B
-\e$B".".".".".\e(B  \e$B!y\e(B \e$B%8%c%`$G$O$J$/%^!<%^%l!<%I$G$b$J$/K*L*$G\e(B \e$B!y\e(B  \e$B".".".".".\e(B
-\e$B".".".".".\e(B         \e$B'.'0'2$$'0','!\e(B  \e$B'4'0'.'0'7'*','0\e(B         \e$B".".".".".\e(B
-\e$B".".".".".".".\e(B  Internet E-mail: &lt;morioka@jaist.ac.jp&gt;  \e$B".".".".".".".\e(B
-</verb>
-
-
-<h2> entity-button
-<node> entity-button
-<p>
-<concept>entity-button</concept> \e$B$O\e(B entity \e$B$N@hF,$K$"$C$F!"$=$N\e(B entity 
-\e$B$K4X$9$kBg$^$+$J>pJs$rI=<($9$kItJ,$G$9!#\e(B
-<p>
-\e$BI8=`$G$O\e(B
-
-<verb>
-        [1.3 test (text/plain)]
-</verb>
-
-<noindent>
-\e$B$N$h$&$J46$8$KI=<($5$l$^$9!#\e(B
-<p>
-\e$B:G=i$N?t;z$O\e(B message \e$BCf$N$3$N\e(B entity \e$B$N0LCV$r@aHV9f$N$h$&$KI=$7$?$b$N\e(B
-\e$B$G!"\e(B<concept>entity-number</concept> \e$B$H8F$S$^$9!#\e(B
-<p>
-\e$B#2HVL\$NJ8;zNs$OI=Bj$rI=$7$^$9!#$3$N>pJs$O!"\e(B
-
-<ol>
-<li>Content-Description field \e$B$b$7$/$O\e(B Subject field \e$B$K=q$+$l$?I=Bj\e(B
-<li>Content-Disposition field \e$B$N\e(B filename parameter \e$B$K=q$+$l$?\e(B file \e$BL>\e(B
-<li>Content-Type field \e$B$N\e(B name parameter \e$B$K=q$+$l$?\e(B file \e$BL>\e(B
-<li> uuencode \e$B$N>l9g$N\e(B file \e$BL>\e(B
-</ol>
-
-<noindent>
-\e$B$+$i:n$j$^$9!#$I$l$bB8:_$7$J$$>l9g$O6uGr$,I=<($5$l$^$9!#\e(B
-<p>
-\e$B#3HVL\$N3g8L$NCf$N>pJs$O$=$N\e(B entity \e$B$N\e(B media-type/subtype \e$B$rI=$7$^$9!#\e(B
-\e$BHs\e(B MIME entity \e$B$N>l9g!"\e(B<code>nil</code> \e$B$,I=<($5$l$^$9!#\e(B
-<p>
-\e$B$3$N\e(B entity-button \e$B$O\e(B entity \e$B$NFbMF$r>]D'$9$k\e(B icon \e$B$N$h$&$JLr3d$r2L$?\e(B
-\e$B$7$^$9!#Nc$($P!"\e(B
-
-<verb>
-        [2  (image/gif)]
-</verb>
-
-<noindent>
-\e$B$N>e$G\e(B <kbd>v</kbd> \e$B$r2!$;$P$3$3$KF~$C$F$$$k3($,I=<($5$l$^$9!#\e(B
-<p>
-\e$B$^$?!"\e(Bmouse \e$BA`:n$,2DG=$J>l9g!"\e(Bentity-button \e$B$rBh#2%\%?%s!J\e(B3 button
-mouse \e$B$N>l9g!"Cf1{$N%\%?%s!K$G2!$;$P!"F1MM$K$=$N3($,I=<($5$l$^$9!#\e(B
-
-
-<h2> entity-header
-<node> entity-header
-<p>
-<concept>entity-header</concept> \e$B$O$"$k\e(B entity \e$B$N\e(B header \e$B$rI=<($9$kIt\e(B
-\e$BJ,$G$9!J!V$=$N$^$^$d$s$1!W$C$FE\$i$J$$$G!#$=$&$$$&$b$s$J$s$G$9!K!#\e(B
-
-
-<h2> entity-body
-<node> entity-body
-<p>
-<concept>entity-body</concept> \e$B$O\e(B part \e$B$NFbMF$rI=<($9$kItJ,$G$9!#\e(B
-<p>
-\e$B$3$l$b$R$M$j$,B-$j$J$$$G$9$,!"$^$"!"$=$&$$$&$b$s$G$9!#\e(B
-<p>
-\e$B$H$O$$$(!"<B:]$K$O>/$7$R$M$C$F$^$9!#\e(B
-<p>
-text entity \e$B$N>l9g$O\e(B charset \e$B$K1~$8$F\e(B code \e$BJQ49$7$?$j$7$^$9$7!"\e(BXEmacs 
-\e$B$G$O\e(B image entity \e$B$rJQ49$7$J$$$H$$$1$J$$$7!#\e(B
-<p>
-\e$B>\$7$/$O$^$?8e$G!#\e(B
-
-
-<h1> mime-preview-buffer \e$B$G$NA`:n\e(B
-<node> mime-view-mode
-<p>
-mime-preview-buffer \e$B$K$O0J2<$N5!G=$,$"$j$^$9!#\e(B
-<p>
-<kl>
-<kt>u
-<kd>
-\e$B>e$N\e(B part \e$B$KLa$k!J\e(Bmessage \e$B$N0lHV>e$N\e(B part \e$B$G$3$l$r9T$J$&$H\e(B Summary
-mode \e$B$KLa$k\e(B (*1)\e$B!K\e(B
-</kd>
-<kt>p<kd>\e$BA0$N\e(B part \e$B$K0\F0$9$k\e(B
-</kd>
-<kt>M-TAB<kd>\e$BA0$N\e(B part \e$B$K0\F0$9$k\e(B
-</kd>
-<kt>n<kd>\e$B<!$N\e(B part \e$B$K0\F0$9$k\e(B
-</kd>
-<kt>TAB<kd>\e$B<!$N\e(B part \e$B$K0\F0$9$k\e(B
-</kd>
-<kt>SPC<kd>scroll up \e$B$9$k\e(B
-</kd>
-<kt>M-SPC<kd>scroll down \e$B$9$k\e(B
-</kd>
-<kt>DEL<kd>scroll down \e$B$9$k\e(B
-</kd>
-<kt>RET<kd>\e$B<!$N9T$K0\F0$9$k\e(B
-</kd>
-<kt>M-RET<kd>\e$BA0$N9T$K0\F0$9$k\e(B
-</kd>
-<kt>v<kd>part \e$B$r:F@8$9$k\e(B (*2)
-</kd>
-<kt>e<kd>part \e$B$+$i\e(B file \e$B$r<h$j=P$9\e(B (*2)
-</kd>
-<kt>C-c C-p<kd>part \e$B$r0u:~$9$k\e(B (*2)
-</kd>
-<kt>mouse-button-2
-<kd>
-preview-buffer \e$BCf$N\e(B mouse button \e$B$r5/F0$9$k\e(B
-<p>
-content-button \e$B$r2!$;$P!"$=$N\e(B part \e$B$,:F@8$5$l$k\e(B(*2)
-<p>
-URL-button \e$B$r2!$;$P!"$=$N\e(B WWW browser \e$B$,5/F0$5$l$k\e(B
-</kd>
-</kl>
-<p>
-<memo title="\e$BCm0U\e(B">
-<p>
-(*1) MUA \e$B$G\e(B mime-view \e$B$N@_Dj$r$7$F$$$J$$>l9g!"\e(BSummary mode \e$B$K$OLa$j$^\e(B
-\e$B$;$s!#\e(B
-<p>
-(*2) \e$B<B:]$NF0:n$OBP1~$9$k\e(B method \e$B$K0M$j$^$9!#\e(B
-</memo>
-
-
-<h1> \e$B35G0:w0z\e(B
-<node> Concept Index
-
-<cindex>
-
-
-<h1> \e$B4X?t:w0z\e(B
-<node> Function Index
-
-<findex>
-
-
-<h1> \e$BJQ?t:w0z\e(B
-<node> Variable Index
-
-<vindex>
-
-</body>
diff --git a/mime-view-ja.texi b/mime-view-ja.texi
deleted file mode 100644 (file)
index 3ee2adc..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-\input texinfo.tex
-@setfilename mime-view-ja.info
-@settitle{SEMI 1.6 MIME-View \e$B@bL@=q\e(B}
-@titlepage
-@title SEMI 1.6 MIME-View \e$B@bL@=q\e(B
-@author \e$B<i2,\e(B \e$BCNI'\e(B <morioka@@jaist.ac.jp>
-@subtitle 1998/06/15
-@end titlepage
-@node Top, Introduction, (dir), (dir)
-@top SEMI 1.6 MIME-View \e$B@bL@=q\e(B
-
-@ifinfo
-
-This file documents MIME-View, a MIME Viewer for GNU Emacs.@refill
-
-GNU Emacs \e$BMQ$N\e(B MIME Viewer \e$B$G$"$k\e(B MIME-View \e$B$K$D$$$F@bL@$7$^$9!#\e(B
-@end ifinfo
-
-@menu
-* Introduction::                MIME-View \e$B$C$F2?!)\e(B
-* Overview::                    MIME-View \e$B35@b\e(B
-* MIME-Preview::                mime-preview-buffer \e$B$N2hLL9=@.\e(B
-* mime-view-mode::              mime-preview-buffer \e$B$G$NA`:n\e(B
-* Concept Index::               \e$B35G0:w0z\e(B
-* Function Index::              \e$B4X?t:w0z\e(B
-* Variable Index::              \e$BJQ?t:w0z\e(B
-@end menu
-
-@node Introduction, Overview, Top, Top
-@chapter MIME-View \e$B$C$F2?!)\e(B
-
-MIME-View \e$B$O\e(B GNU Emacs \e$B$GF0:n$9$kHFMQE*$J\e(B MIME viewer \e$B$G$9!#\e(B@refill
-
-MIME-View \e$B$O\e(B MIME message \e$B$r1\Mw$9$k$?$a$NMxMQ<T3&LL\e(B (user interface) 
-\e$B$N3K$G$"$j!"$3$N>e$G\e(B presentation-method \e$B$H8F$P$l$kI=<($r:n$k%W%m%0%i%`\e(B
-\e$B$rF0$+$7$?$j!"\e(Bacting-method \e$B$H8F$P$l$k\e(B entity \e$B$N=hM}%W%m%0%i%`$rF0$+$9\e(B
-\e$B$3$H$,2DG=$G!"$5$^$6$^$J<oN`$N\e(B entity \e$B$r07$&;v$,$G$-$k$h$&$K$J$C$F$$$^$9!#\e(B
-
-
-@node Overview, MIME-Preview, Introduction, Top
-@chapter MIME-View \e$B35@b\e(B
-
-Internet \e$B$NEE;R=q4J!&%M%C%H%K%e!<%9$J$I$N=qLL\e(B (message) \e$B$NI=8=7A<0$O\e(B STD
-11 \e$B$K4p$E$$$F$$$^$9!#\e(BSTD 11 \e$B$N=qLLK\BN\e(B (message body) \e$B$O9T$rM#0l$N9=B$$H\e(B
-\e$B$9$k4J0WJ8LL\e(B (plain text) \e$B$G$"$j!"J8;zId9f$b\e(B us-ascii \e$B$HDj$a$i$l$F$$$^$9!#\e(B
-\e$B<B:]$K$O!"J8;zId9f$r\e(B us-ascii \e$B$NBe$o$j$K$=$N8@8l7w$GMQ$$$i$l$kJ8;zId9f$H\e(B
-\e$B$7$?!XCO0h2=$5$l$?\e(B STD 11\e$B!Y=qLL$bMQ$$$i$l$F$-$^$7$?$,!"$3$N>l9g$b=qLL$N\e(B
-\e$BJ8;zId9f$O#1$D$G$9!#$3$N$?$a!"MxMQ<T3&LL\e(B (Message User Agent) \e$B$O!"$7$P$7\e(B
-\e$B$P!"\e(Bbyte \e$BNs\e(B = us-ascii \e$BJ8;zNs!"$J$$$7$O!"\e(Bbyte \e$BNs\e(B = \e$B$=$N8@8l7w$GMQ$$$kJ8\e(B
-\e$B;zId9f$NJ8;zNs$N$h$&$K8+Jo$7$F$-$^$7$?!#\e(B@refill
-
-\e$B$7$+$7$J$,$i!"\e(BMIME \e$B$G$O=qLL$O\e(B entity \e$B$rC10L$H$9$kLZ9=B$$K$J$j!"$^$?!"#1\e(B
-\e$B$D$N=qLL$GJ#?t$NJ8;zId9f$rMQ$$$k$3$H$,$G$-$^$9!#$^$?!"\e(Bentity \e$B$NFbMF$OJ8\e(B
-\e$BLL$d3($N$h$&$JC1=c$KI=<(2DG=$J$b$N$@$1$G$J$/!"2;@<$dF02h$J$I$N0lDj;~4V:F\e(B
-\e$B@8$5$l$k$h$&$J$b$N$dFCDj$N%"%W%j%1!<%7%g%s$N%G!<%?$d%W%m%0%i%`$N%=!<%9!"\e(B
-\e$B$"$k$$$O!"\e(Bftp \e$B$d\e(B mail service \e$B$NMxMQK!$d\e(B URL \e$B$H$$$C$?7A$GI=$5$l$?30It;2\e(B
-\e$B>H$J$I$N$5$^$6$^$J$b$N$,9M$($i$^$9!#$3$N$?$a!"I=<($@$1$r9M$($F$$$?\e(B STD
-11 \e$B$K$*$1$kMxMQ<T3&LL$NC1=c$J1dD9$G$O\e(B MIME \e$B$NA4$F$N5!G=$r07$&$3$H$O$G$-\e(B
-\e$B$^$;$s!#$D$^$j!"\e(BMIME \e$B$N7A<0$K9g$o$;$FI|9f$9$k$@$1$G$OIT==J,$G$"$j!"MxMQ\e(B
-\e$B<T$H$NBPOCE*$J:F@8=hM}$r9MN8$9$kI,MW$,$"$j$^$9!#\e(BMIME \e$B=qLL$N7A<0$O<+F0=h\e(B
-\e$BM}$,$7$d$9$/@_7W$5$l$F$$$^$9$,!"\e(BMIME \e$B=qLL$K4^$^$l$kFbMF$NCf$K$O%;%-%e%j\e(B
-\e$B%F%#!<>e$NLdBj$+$i<+F0=hM}$r$9$k$Y$-$G$J$$$b$N$,$"$j!"$3$&$$$C$?$b$N$N:F\e(B
-\e$B@8$K4X$7$F$OMxMQ<T$NH=CG$r6D$0$h$&$K@_7W$5$l$k$Y$-$G$7$g$&!#7k6I!"\e(BMIME 
-\e$B=qLL$r07$&$?$a$K$O\e(B STD 11 \e$B$*$h$S\e(B MIME \e$B$N9=J8$G5-=R$5$l$?%a%C%;!<%8$N>pJs\e(B
-\e$B8r49MQI=8=$H$=$N2r<a7k2L$G$"$kI=<(2hLL$d:F@8Ey$N=hM}$r6hJL$7$F9M$($kI,MW\e(B
-\e$B$,$"$j$^$9!#$^$?!"MxMQ<T$H$NBPOCE*$J:F@8=hM}$,I,MW$G$9!#\e(B@refill
-
-\e$B$3$N$?$a!"\e(BMIME-View \e$B$O#1$D$N=qLL$KBP$7$F!">pJs8r49MQI=8=$r3JG<$9$k\e(B 
-mime-raw-buffer \e$B$HI=<(MQI=8=$r3JG<$9$k\e(B mime-preview-buffer \e$B$N#2$D$N\e(B 
-buffer \e$B$rMQ$$$^$9!#\e(B@refill
-
-MIME-View \e$B$O\e(B mime-preview-buffer \e$B$KBP$7$F\e(B mime-view-mode \e$B$H$$$&\e(B MIME
-message \e$B$r1\Mw$9$k$?$a$N\e(B mode \e$B$rDs6!$7$^$9!#MxMQ<T$O$3$3$G3F\e(B entity \e$B$K\e(B
-\e$BBP$7$FA`:n$r9T$&$3$H$,$G$-$^$9!#\e(B
-
-
-@node MIME-Preview, mime-view-mode, Overview, Top
-@chapter mime-preview-buffer \e$B$N2hLL9=@.\e(B
-
-mime-view-mode \e$B$G$O3F\e(B entity \e$B$KBP$7$F\e(B@refill
-
-@example
-       [entity-button]
-       (header)
-       
-       (body)
-       (separator)
-@end example
-
-@noindent
-\e$B$H$$$&>pJs$rI=<($7$^$9!#$3$l$i$O>r7o$K=>$C$F\e(B design \e$B$rJQ99$7$?$j!"I=<(\e(B
-\e$B$rM^@)$9$k$3$H$b$G$-$^$9!#\e(B
-
-\e$B0J2<$K!"I=<(Nc$r<($7$^$9!#\e(B
-
-
-@example
-From: morioka@@jaist.ac.jp (\e$B<i2,\e(B \e$BCNI'\e(B / MORIOKA Tomohiko)
-Subject: Re: \e$B<ALd!)\e(B
-Newsgroups: zxr.message.mime
-Date: 22 Oct 93 11:02:44
-Mime-Version: 1.0
-Organization: Japan Advanced Institute of Science and Technology,
-        Ishikawa, Japan
-
-[1  (text/plain)]
-  MIME-Edit mode \e$B$K$*$1$k!"\e(BMIME message \e$B$N:n$jJ}!#\e(B
-
-  C-c C-x ? \e$B$r2!$9$H\e(B help \e$B$,=P$F$/$k!#\e(B
-
-C-c C-x C-t    insert a text message.
-C-c C-x TAB    insert a (binary) file.
-C-c C-x C-e    insert a reference to external body.
-C-c C-x C-v    insert a voice message.
-C-c C-x C-y    insert a mail or news message.
-C-c C-x RET    insert a mail message.
-C-c C-x C-s    insert a signature file at end.
-C-c C-x t      insert a new MIME tag.
-C-c C-x a      enclose as multipart/alternative.
-C-c C-x p      enclose as multipart/parallel.
-C-c C-x m      enclose as multipart/mixed.
-C-c C-x d      enclose as multipart/digest.
-C-c C-x s      enclose as PGP signed.
-C-c C-x e      enclose as PGP encrypted.
-C-c C-x C-k    insert PGP public key.
-C-c C-x C-p    preview editing MIME message.
-...
-
-\e$B$C$FLu$G!"\e(BC-c C-x C-i \e$B$r2!$7$F!"A^F~$7$?$$\e(B binary file \e$B$r;XDj$7$^$9!#\e(B
-
-  binary file \e$B$N\e(B MIME encoding \e$B$K$O!"IaDL!"\e(BBase64 \e$B$r;XDj$7$^$9!#\e(B
-
-[2  (image/gif)]
-
-[3  (text/plain)]
-
-  \e$B$3$s$JIw$K!"3(F~$j\e(B message \e$B$N$G$->e$,$j!#\e(B
-
-\e$B".".".".".".".".".".".\e(B \e$B%m%7%"%s!&%F%#!<$r0lGU!#\e(B \e$B".".".".".".".".".".".\e(B
-\e$B".".".".".\e(B  \e$B!y\e(B \e$B%8%c%`$G$O$J$/%^!<%^%l!<%I$G$b$J$/K*L*$G\e(B \e$B!y\e(B  \e$B".".".".".\e(B
-\e$B".".".".".\e(B         \e$B'.'0'2$$'0','!\e(B  \e$B'4'0'.'0'7'*','0\e(B         \e$B".".".".".\e(B
-\e$B".".".".".".".\e(B  Internet E-mail: <morioka@@jaist.ac.jp>  \e$B".".".".".".".\e(B
-@end example
-
-
-
-@menu
-* entity-button::               
-* entity-header::               
-* entity-body::                 
-@end menu
-
-@node entity-button, entity-header, MIME-Preview, MIME-Preview
-@section entity-button
-@cindex entity-number
-@cindex entity-button
-
-@strong{entity-button} \e$B$O\e(B entity \e$B$N@hF,$K$"$C$F!"$=$N\e(B entity \e$B$K4X$9$kBg\e(B
-\e$B$^$+$J>pJs$rI=<($9$kItJ,$G$9!#\e(B@refill
-
-\e$BI8=`$G$O\e(B
-
-@example
-        [1.3 test (text/plain)]
-@end example
-
-@noindent
-\e$B$N$h$&$J46$8$KI=<($5$l$^$9!#\e(B
-
-\e$B:G=i$N?t;z$O\e(B message \e$BCf$N$3$N\e(B entity \e$B$N0LCV$r@aHV9f$N$h$&$KI=$7$?$b$N$G!"\e(B
-@strong{entity-number} \e$B$H8F$S$^$9!#\e(B@refill
-
-\e$B#2HVL\$NJ8;zNs$OI=Bj$rI=$7$^$9!#$3$N>pJs$O!"\e(B
-
-@enumerate
-@item
-Content-Description field \e$B$b$7$/$O\e(B Subject field \e$B$K=q$+$l$?I=Bj\e(B
-@item
-Content-Disposition field \e$B$N\e(B filename parameter \e$B$K=q$+$l$?\e(B file \e$BL>\e(B
-@item
-Content-Type field \e$B$N\e(B name parameter \e$B$K=q$+$l$?\e(B file \e$BL>\e(B
-@item
- uuencode \e$B$N>l9g$N\e(B file \e$BL>\e(B
-@end enumerate
-
-@noindent
-\e$B$+$i:n$j$^$9!#$I$l$bB8:_$7$J$$>l9g$O6uGr$,I=<($5$l$^$9!#\e(B
-
-\e$B#3HVL\$N3g8L$NCf$N>pJs$O$=$N\e(B entity \e$B$N\e(B media-type/subtype \e$B$rI=$7$^$9!#Hs\e(B 
-MIME entity \e$B$N>l9g!"\e(B@code{nil} \e$B$,I=<($5$l$^$9!#\e(B@refill
-
-\e$B$3$N\e(B entity-button \e$B$O\e(B entity \e$B$NFbMF$r>]D'$9$k\e(B icon \e$B$N$h$&$JLr3d$r2L$?\e(B
-\e$B$7$^$9!#Nc$($P!"\e(B
-
-@example
-        [2  (image/gif)]
-@end example
-
-@noindent
-\e$B$N>e$G\e(B @kbd{v} \e$B$r2!$;$P$3$3$KF~$C$F$$$k3($,I=<($5$l$^$9!#\e(B
-
-\e$B$^$?!"\e(Bmouse \e$BA`:n$,2DG=$J>l9g!"\e(Bentity-button \e$B$rBh#2%\%?%s!J\e(B3 button
-mouse \e$B$N>l9g!"Cf1{$N%\%?%s!K$G2!$;$P!"F1MM$K$=$N3($,I=<($5$l$^$9!#\e(B
-
-
-@node entity-header, entity-body, entity-button, MIME-Preview
-@section entity-header
-@cindex entity-header
-
-@strong{entity-header} \e$B$O$"$k\e(B entity \e$B$N\e(B header \e$B$rI=<($9$kIt\e(B
-\e$BJ,$G$9!J!V$=$N$^$^$d$s$1!W$C$FE\$i$J$$$G!#$=$&$$$&$b$s$J$s$G$9!K!#\e(B
-
-
-@node entity-body,  , entity-header, MIME-Preview
-@section entity-body
-@cindex entity-body
-
-@strong{entity-body} \e$B$O\e(B part \e$B$NFbMF$rI=<($9$kItJ,$G$9!#\e(B@refill
-
-\e$B$3$l$b$R$M$j$,B-$j$J$$$G$9$,!"$^$"!"$=$&$$$&$b$s$G$9!#\e(B@refill
-
-\e$B$H$O$$$(!"<B:]$K$O>/$7$R$M$C$F$^$9!#\e(B@refill
-
-text entity \e$B$N>l9g$O\e(B charset \e$B$K1~$8$F\e(B code \e$BJQ49$7$?$j$7$^$9$7!"\e(BXEmacs \e$B$G\e(B
-\e$B$O\e(B image entity \e$B$rJQ49$7$J$$$H$$$1$J$$$7!#\e(B@refill
-
-\e$B>\$7$/$O$^$?8e$G!#\e(B
-
-
-@node mime-view-mode, Concept Index, MIME-Preview, Top
-@chapter mime-preview-buffer \e$B$G$NA`:n\e(B
-
-mime-preview-buffer \e$B$K$O0J2<$N5!G=$,$"$j$^$9!#\e(B@refill
-
-@table @kbd
-@item @key{u}
-\e$B>e$N\e(B part \e$B$KLa$k!J\e(Bmessage \e$B$N0lHV>e$N\e(B part \e$B$G$3$l$r9T$J$&$H\e(B Summary
-mode \e$B$KLa$k\e(B (*1)\e$B!K\e(B
-
-@item @key{p}
-\e$BA0$N\e(B part \e$B$K0\F0$9$k\e(B
-
-@item @key{M-TAB}
-\e$BA0$N\e(B part \e$B$K0\F0$9$k\e(B
-
-@item @key{n}
-\e$B<!$N\e(B part \e$B$K0\F0$9$k\e(B
-
-@item @key{TAB}
-\e$B<!$N\e(B part \e$B$K0\F0$9$k\e(B
-
-@item @key{SPC}
-scroll up \e$B$9$k\e(B
-
-@item @key{M-SPC}
-scroll down \e$B$9$k\e(B
-
-@item @key{DEL}
-scroll down \e$B$9$k\e(B
-
-@item @key{RET}
-\e$B<!$N9T$K0\F0$9$k\e(B
-
-@item @key{M-RET}
-\e$BA0$N9T$K0\F0$9$k\e(B
-
-@item @key{v}
-part \e$B$r:F@8$9$k\e(B (*2)
-
-@item @key{e}
-part \e$B$+$i\e(B file \e$B$r<h$j=P$9\e(B (*2)
-
-@item @key{C-c C-p}
-part \e$B$r0u:~$9$k\e(B (*2)
-
-@item @key{mouse-button-2}
-preview-buffer \e$BCf$N\e(B mouse button \e$B$r5/F0$9$k\e(B
-
-content-button \e$B$r2!$;$P!"$=$N\e(B part \e$B$,:F@8$5$l$k\e(B(*2)@refill
-
-URL-button \e$B$r2!$;$P!"$=$N\e(B WWW browser \e$B$,5/F0$5$l$k\e(B@refill
-
-@end table
-
-@noindent
-@strong{[\e$BCm0U\e(B]}
-@quotation
-
-(*1) MUA \e$B$G\e(B mime-view \e$B$N@_Dj$r$7$F$$$J$$>l9g!"\e(BSummary mode \e$B$K$OLa$j$^$;\e(B
-\e$B$s!#\e(B@refill
-
-(*2) \e$B<B:]$NF0:n$OBP1~$9$k\e(B method \e$B$K0M$j$^$9!#\e(B
-@end quotation
-
-
-
-@node Concept Index, Function Index, mime-view-mode, Top
-@chapter \e$B35G0:w0z\e(B
-
-@printindex cp
-
-@node Function Index, Variable Index, Concept Index, Top
-@chapter \e$B4X?t:w0z\e(B
-
-@printindex fn
-
-@node Variable Index,  , Function Index, Top
-@chapter \e$BJQ?t:w0z\e(B
-
-@printindex vr
-@bye
diff --git a/mime-view.el b/mime-view.el
deleted file mode 100644 (file)
index 1e0fe3f..0000000
+++ /dev/null
@@ -1,1274 +0,0 @@
-;;; mime-view.el --- interactive MIME viewer for GNU Emacs
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1994/07/13
-;;     Renamed: 1994/08/31 from tm-body.el
-;;     Renamed: 1997/02/19 from tm-view.el
-;; Keywords: MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Sophisticated Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mime)
-(require 'semi-def)
-(require 'calist)
-(require 'alist)
-(require 'mailcap)
-
-
-;;; @ version
-;;;
-
-(defconst mime-view-version-string
-  `,(concat (car mime-user-interface-version) " MIME-View "
-           (mapconcat #'number-to-string
-                      (cddr mime-user-interface-version) ".")
-           " (" (cadr mime-user-interface-version) ")"))
-
-
-;;; @ variables
-;;;
-
-(defgroup mime-view nil
-  "MIME view mode"
-  :group 'mime)
-
-(defcustom mime-view-find-every-acting-situation t
-  "*Find every available acting-situation if non-nil."
-  :group 'mime-view
-  :type 'boolean)
-
-(defcustom mime-acting-situation-examples-file "~/.mime-example"
-  "*File name of example about acting-situation demonstrated by user."
-  :group 'mime-view
-  :type 'file)
-
-
-;;; @ in raw-buffer (representation space)
-;;;
-
-(defvar mime-preview-buffer nil
-  "MIME-preview buffer corresponding with the (raw) buffer.")
-(make-variable-buffer-local 'mime-preview-buffer)
-
-
-(defvar mime-raw-representation-type nil
-  "Representation-type of mime-raw-buffer.
-It must be nil, `binary' or `cooked'.
-If it is nil, `mime-raw-representation-type-alist' is used as default
-value.
-Notice that this variable is usually used as buffer local variable in
-raw-buffer.")
-
-(make-variable-buffer-local 'mime-raw-representation-type)
-
-(defvar mime-raw-representation-type-alist
-  '((mime-show-message-mode     . binary)
-    (mime-temp-message-mode     . binary)
-    (t                          . cooked)
-    )
-  "Alist of major-mode vs. representation-type of mime-raw-buffer.
-Each element looks like (SYMBOL . REPRESENTATION-TYPE).  SYMBOL is
-major-mode or t.  t means default.  REPRESENTATION-TYPE must be
-`binary' or `cooked'.
-This value is overridden by buffer local variable
-`mime-raw-representation-type' if it is not nil.")
-
-
-(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))))
-
-
-;;; @ in preview-buffer (presentation space)
-;;;
-
-(defvar mime-mother-buffer nil
-  "Mother buffer corresponding with the (MIME-preview) buffer.
-If current MIME-preview buffer is generated by other buffer, such as
-message/partial, it is called `mother-buffer'.")
-(make-variable-buffer-local 'mime-mother-buffer)
-
-(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)
-  "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
-mother-buffer."
-  (if (and recursive mime-mother-buffer)
-      (save-excursion
-       (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)))
-
-
-;;; @ entity information
-;;;
-
-(defsubst mime-entity-representation-type (entity)
-  (with-current-buffer (mime-entity-buffer entity)
-    (or mime-raw-representation-type
-       (cdr (or (assq major-mode mime-raw-representation-type-alist)
-                (assq t mime-raw-representation-type-alist))))))
-
-(defsubst mime-entity-cooked-p (entity)
-  (eq (mime-entity-representation-type entity) 'cooked))
-
-(defun mime-entity-situation (entity)
-  "Return situation of ENTITY."
-  (append (or (mime-entity-content-type entity)
-             (make-mime-content-type 'text 'plain))
-         (let ((d (mime-entity-content-disposition entity)))
-           (cons (cons 'disposition-type
-                       (mime-content-disposition-type d))
-                 (mapcar (function
-                          (lambda (param)
-                            (let ((name (car param)))
-                              (cons (cond ((string= name "filename")
-                                           'filename)
-                                          ((string= name "creation-date")
-                                           'creation-date)
-                                          ((string= name "modification-date")
-                                           'modification-date)
-                                          ((string= name "read-date")
-                                           'read-date)
-                                          ((string= name "size")
-                                           'size)
-                                          (t (cons 'disposition (car param))))
-                                    (cdr param)))))
-                         (mime-content-disposition-parameters d))
-                 ))
-         (list (cons 'encoding (mime-entity-encoding entity))
-               (cons 'major-mode
-                     (save-excursion
-                       (set-buffer (mime-entity-buffer entity))
-                       major-mode)))
-         ))
-
-
-(defun mime-view-entity-title (entity)
-  (or (mime-read-field 'Content-Description entity)
-      (mime-read-field 'Subject entity)
-      (mime-entity-filename entity)
-      ""))
-
-
-(defsubst mime-raw-point-to-entity-node-id (point &optional message-info)
-  "Return entity-node-id from POINT in mime-raw-buffer.
-If optional argument MESSAGE-INFO is not specified,
-`mime-message-structure' is used."
-  (mime-entity-node-id (mime-raw-find-entity-from-point point message-info)))
-
-(defsubst mime-raw-point-to-entity-number (point &optional message-info)
-  "Return entity-number from POINT in mime-raw-buffer.
-If optional argument MESSAGE-INFO is not specified,
-`mime-message-structure' is used."
-  (mime-entity-number (mime-raw-find-entity-from-point point message-info)))
-
-(defun mime-raw-flatten-message-info (&optional message-info)
-  "Return list of entity in mime-raw-buffer.
-If optional argument MESSAGE-INFO is not specified,
-`mime-message-structure' is used."
-  (or message-info
-      (setq message-info mime-message-structure))
-  (let ((dest (list message-info))
-       (rcl (mime-entity-children message-info)))
-    (while rcl
-      (setq dest (nconc dest (mime-raw-flatten-message-info (car rcl))))
-      (setq rcl (cdr rcl)))
-    dest))
-
-
-;;; @ presentation of preview
-;;;
-
-;;; @@ entity-button
-;;;
-
-;;; @@@ predicate function
-;;;
-
-(defun mime-view-entity-button-visible-p (entity)
-  "Return non-nil if header of ENTITY is visible.
-Please redefine this function if you want to change default setting."
-  (let ((media-type (mime-entity-media-type entity))
-       (media-subtype (mime-entity-media-subtype entity)))
-    (or (not (eq media-type 'application))
-       (and (not (eq media-subtype 'x-selection))
-            (or (not (eq media-subtype 'octet-stream))
-                (let ((mother-entity (mime-entity-parent entity)))
-                  (or (not (eq (mime-entity-media-type mother-entity)
-                               'multipart))
-                      (not (eq (mime-entity-media-subtype mother-entity)
-                               'encrypted)))
-                  )
-                )))))
-
-;;; @@@ entity button generator
-;;;
-
-(defun mime-view-insert-entity-button (entity)
-  "Insert entity-button of ENTITY."
-  (let ((entity-node-id (mime-entity-node-id entity))
-       (params (mime-entity-parameters entity))
-       (subject (mime-view-entity-title entity)))
-    (mime-insert-button
-     (let ((access-type (assoc "access-type" params))
-          (num (or (cdr (assoc "x-part-number" params))
-                   (if (consp entity-node-id)
-                       (mapconcat (function
-                                   (lambda (num)
-                                     (format "%s" (1+ num))
-                                     ))
-                                  (reverse entity-node-id) ".")
-                     "0"))
-               ))
-       (cond (access-type
-             (let ((server (assoc "server" params)))
-               (setq access-type (cdr access-type))
-               (if server
-                   (format "%s %s ([%s] %s)"
-                           num subject access-type (cdr server))
-               (let ((site (cdr (assoc "site" params)))
-                     (dir (cdr (assoc "directory" params)))
-                     )
-                 (format "%s %s ([%s] %s:%s)"
-                         num subject access-type site dir)
-                 )))
-           )
-          (t
-           (let ((media-type (mime-entity-media-type entity))
-                 (media-subtype (mime-entity-media-subtype entity))
-                 (charset (cdr (assoc "charset" params)))
-                 (encoding (mime-entity-encoding entity)))
-             (concat
-              num " " subject
-              (let ((rest
-                     (format " <%s/%s%s%s>"
-                             media-type media-subtype
-                             (if charset
-                                 (concat "; " charset)
-                               "")
-                             (if encoding
-                                 (concat " (" encoding ")")
-                               ""))))
-                (if (>= (+ (current-column)(length rest))(window-width))
-                    "\n\t")
-                rest)))
-           )))
-     (function mime-preview-play-current-entity))
-    ))
-
-
-;;; @@ entity-header
-;;;
-
-(defvar mime-header-presentation-method-alist nil
-  "Alist of major mode vs. corresponding header-presentation-method functions.
-Each element looks like (SYMBOL . FUNCTION).
-SYMBOL must be major mode in raw-buffer or t.  t means default.
-Interface of FUNCTION must be (ENTITY SITUATION).")
-
-(defvar mime-view-ignored-field-list
-  '(".*Received" ".*Path" ".*Id" "References"
-    "Replied" "Errors-To"
-    "Lines" "Sender" ".*Host" "Xref"
-    "Content-Type" "Precedence"
-    "Status" "X-VM-.*")
-  "All fields that match this list will be hidden in MIME preview buffer.
-Each elements are regexp of field-name.")
-
-(defvar mime-view-visible-field-list '("Dnas.*" "Message-Id")
-  "All fields that match this list will be displayed in MIME preview buffer.
-Each elements are regexp of field-name.")
-
-
-;;; @@ entity-body
-;;;
-
-;;; @@@ predicate function
-;;;
-
-(defun mime-calist::field-match-method-as-default-rule (calist
-                                                       field-type field-value)
-  (let ((s-field (assq field-type calist)))
-    (cond ((null s-field)
-          (cons (cons field-type field-value) calist)
-          )
-         (t calist))))
-
-(define-calist-field-match-method
-  'header #'mime-calist::field-match-method-as-default-rule)
-
-(define-calist-field-match-method
-  'body #'mime-calist::field-match-method-as-default-rule)
-
-
-(defvar mime-preview-condition nil
-  "Condition-tree about how to display entity.")
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . octet-stream)
-                          (encoding . nil)
-                          (body . visible)))
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . octet-stream)
-                          (encoding . "7bit")
-                          (body . visible)))
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . octet-stream)
-                          (encoding . "8bit")
-                          (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . pgp)
-                          (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . x-latex)
-                          (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . x-selection)
-                          (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . application)(subtype . x-comment)
-                          (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . message)(subtype . delivery-status)
-                          (body . visible)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((body . visible)
-   (body-presentation-method . mime-display-text/plain)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((type . nil)
-   (body . visible)
-   (body-presentation-method . mime-display-text/plain)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((type . text)(subtype . enriched)
-   (body . visible)
-   (body-presentation-method . mime-display-text/enriched)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((type . text)(subtype . richtext)
-   (body . visible)
-   (body-presentation-method . mime-display-text/richtext)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((type . text)(subtype . t)
-   (body . visible)
-   (body-presentation-method . mime-display-text/plain)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition
- '((type . multipart)(subtype . alternative)
-   (body . visible)
-   (body-presentation-method . mime-display-multipart/alternative)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . message)(subtype . partial)
-                          (body-presentation-method
-                           . mime-display-message/partial-button)))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . message)(subtype . rfc822)
-                          (body-presentation-method . nil)
-                          (childrens-situation (header . visible)
-                                               (entity-button . invisible))))
-
-(ctree-set-calist-strictly
- 'mime-preview-condition '((type . message)(subtype . news)
-                          (body-presentation-method . nil)
-                          (childrens-situation (header . visible)
-                                               (entity-button . invisible))))
-
-
-;;; @@@ entity presentation
-;;;
-
-(autoload 'mime-display-text/plain "mime-text")
-(autoload 'mime-display-text/enriched "mime-text")
-(autoload 'mime-display-text/richtext "mime-text")
-
-(defvar mime-view-announcement-for-message/partial
-  (if (and (>= emacs-major-version 19) window-system)
-      "\
-\[[ This is message/partial style split message. ]]
-\[[ Please press `v' key in this buffer          ]]
-\[[ or click here by mouse button-2.             ]]"
-    "\
-\[[ This is message/partial style split message. ]]
-\[[ Please press `v' key in this buffer.         ]]"
-    ))
-
-(defun mime-display-message/partial-button (&optional entity situation)
-  (save-restriction
-    (goto-char (point-max))
-    (if (not (search-backward "\n\n" nil t))
-       (insert "\n")
-      )
-    (goto-char (point-max))
-    (narrow-to-region (point-max)(point-max))
-    (insert mime-view-announcement-for-message/partial)
-    (mime-add-button (point-min)(point-max)
-                    #'mime-preview-play-current-entity)
-    ))
-
-(defun mime-display-multipart/mixed (entity situation)
-  (let ((children (mime-entity-children entity))
-       (default-situation
-         (cdr (assq 'childrens-situation situation))))
-    (while children
-      (mime-display-entity (car children) nil default-situation)
-      (setq children (cdr children))
-      )))
-
-(defcustom mime-view-type-subtype-score-alist
-  '(((text . enriched) . 3)
-    ((text . richtext) . 2)
-    ((text . plain)    . 1)
-    (t . 0))
-  "Alist MEDIA-TYPE vs corresponding score.
-MEDIA-TYPE must be (TYPE . SUBTYPE), TYPE or t.  t means default."
-  :group 'mime-view
-  :type '(repeat (cons (choice :tag "Media-Type"
-                              (item :tag "Type/Subtype"
-                                    (cons symbol symbol))
-                              (item :tag "Type" symbol)
-                              (item :tag "Default" t))
-                      integer)))
-
-(defun mime-display-multipart/alternative (entity situation)
-  (let* ((children (mime-entity-children entity))
-        (default-situation
-          (cdr (assq 'childrens-situation situation)))
-        (i 0)
-        (p 0)
-        (max-score 0)
-        (situations
-         (mapcar (function
-                  (lambda (child)
-                    (let ((situation
-                           (or (ctree-match-calist
-                                mime-preview-condition
-                                (append (mime-entity-situation child)
-                                        default-situation))
-                               default-situation)))
-                      (if (cdr (assq 'body-presentation-method situation))
-                          (let ((score
-                                 (cdr
-                                  (or (assoc
-                                       (cons
-                                        (cdr (assq 'type situation))
-                                        (cdr (assq 'subtype situation)))
-                                       mime-view-type-subtype-score-alist)
-                                      (assq
-                                       (cdr (assq 'type situation))
-                                       mime-view-type-subtype-score-alist)
-                                      (assq
-                                       t
-                                       mime-view-type-subtype-score-alist)
-                                      ))))
-                            (if (> score max-score)
-                                (setq p i
-                                      max-score score)
-                              )))
-                      (setq i (1+ i))
-                      situation)
-                    ))
-                 children)))
-    (setq i 0)
-    (while children
-      (let ((child (car children))
-           (situation (car situations)))
-       (mime-display-entity child (if (= i p)
-                                      situation
-                                    (del-alist 'body-presentation-method
-                                               (copy-alist situation))))
-       )
-      (setq children (cdr children)
-           situations (cdr situations)
-           i (1+ i))
-      )))
-
-
-;;; @ acting-condition
-;;;
-
-(defvar mime-acting-condition nil
-  "Condition-tree about how to process entity.")
-
-(if (file-readable-p mailcap-file)
-    (let ((entries (mailcap-parse-file)))
-      (while entries
-       (let ((entry (car entries))
-             view print shared)
-         (while entry
-           (let* ((field (car entry))
-                  (field-type (car field)))
-             (cond ((eq field-type 'view)  (setq view field))
-                   ((eq field-type 'print) (setq print field))
-                   ((memq field-type '(compose composetyped edit)))
-                   (t (setq shared (cons field shared))))
-             )
-           (setq entry (cdr entry))
-           )
-         (setq shared (nreverse shared))
-         (ctree-set-calist-with-default
-          'mime-acting-condition
-          (append shared (list '(mode . "play")(cons 'method (cdr view)))))
-         (if print
-             (ctree-set-calist-with-default
-              'mime-acting-condition
-              (append shared
-                      (list '(mode . "print")(cons 'method (cdr view))))
-              ))
-         )
-       (setq entries (cdr entries))
-       )))
-
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . application)(subtype . octet-stream)
-   (mode . "play")
-   (method . mime-detect-content)
-   ))
-
-(ctree-set-calist-with-default
- 'mime-acting-condition
- '((mode . "extract")
-   (method . mime-save-content)))
-
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . text)(subtype . x-rot13-47)(mode . "play")
-   (method . mime-view-caesar)
-   ))
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . text)(subtype . x-rot13-47-48)(mode . "play")
-   (method . mime-view-caesar)
-   ))
-
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . message)(subtype . rfc822)(mode . "play")
-   (method . mime-view-message/rfc822)
-   ))
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . message)(subtype . partial)(mode . "play")
-   (method . mime-store-message/partial-piece)
-   ))
-
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . message)(subtype . external-body)
-   ("access-type" . "anon-ftp")
-   (method . mime-view-message/external-anon-ftp)
-   ))
-
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . message)(subtype . external-body)
-   ("access-type" . "url")
-   (method . mime-view-message/external-url)
-   ))
-
-(ctree-set-calist-strictly
- 'mime-acting-condition
- '((type . application)(subtype . octet-stream)
-   (method . mime-save-content)
-   ))
-
-
-;;; @ quitting method
-;;;
-
-(defvar mime-preview-quitting-method-alist
-  '((mime-show-message-mode
-     . mime-preview-quitting-method-for-mime-show-message-mode))
-  "Alist of major-mode vs. quitting-method of mime-view.")
-
-(defvar mime-preview-over-to-previous-method-alist nil
-  "Alist of major-mode vs. over-to-previous-method of mime-view.")
-
-(defvar mime-preview-over-to-next-method-alist nil
-  "Alist of major-mode vs. over-to-next-method of mime-view.")
-
-
-;;; @ following method
-;;;
-
-(defvar mime-preview-following-method-alist nil
-  "Alist of major-mode vs. following-method of mime-view.")
-
-(defvar mime-view-following-required-fields-list
-  '("From"))
-
-
-;;; @ buffer setup
-;;;
-
-(defun mime-display-entity (entity &optional situation
-                                  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)
-    (or situation
-       (setq situation
-             (or (ctree-match-calist mime-preview-condition
-                                     (append (mime-entity-situation entity)
-                                             default-situation))
-                 default-situation)))
-    (let ((button-is-invisible
-          (eq (cdr (assq 'entity-button situation)) 'invisible))
-         (header-is-visible
-          (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))))
-         (body-presentation-method
-          (cdr (assq 'body-presentation-method situation)))
-         (children (mime-entity-children entity)))
-      (set-buffer preview-buffer)
-      (setq nb (point))
-      (narrow-to-region nb nb)
-      (or button-is-invisible
-         (if (mime-view-entity-button-visible-p entity)
-             (mime-view-insert-entity-button entity)
-           ))
-      (when header-is-visible
-       (if header-presentation-method
-           (funcall header-presentation-method entity situation)
-         (mime-insert-decoded-header entity
-                                     mime-view-ignored-field-list
-                                     mime-view-visible-field-list
-                                     (if (mime-entity-cooked-p entity)
-                                         nil
-                                       default-mime-charset))
-         )
-       (goto-char (point-max))
-       (insert "\n")
-       (run-hooks 'mime-display-header-hook)
-       )
-      (cond (children)
-            ((functionp body-presentation-method)
-            (funcall body-presentation-method entity situation)
-            )
-           (t
-            (when button-is-invisible
-              (goto-char (point-max))
-              (mime-view-insert-entity-button entity)
-              )
-            (or header-is-visible
-                (progn
-                  (goto-char (point-max))
-                  (insert "\n")
-                  ))
-            ))
-      (setq ne (point-max))
-      (widen)
-      (put-text-property nb ne 'mime-view-entity entity)
-      (goto-char ne)
-      (if children
-         (if (functionp body-presentation-method)
-             (funcall body-presentation-method entity situation)
-           (mime-display-multipart/mixed entity situation)
-           ))
-      )))
-
-
-;;; @ MIME viewer mode
-;;;
-
-(defconst mime-view-menu-title "MIME-View")
-(defconst mime-view-menu-list
-  '((up                 "Move to upper entity"    mime-preview-move-to-upper)
-    (previous   "Move to previous entity" mime-preview-move-to-previous)
-    (next       "Move to next entity"     mime-preview-move-to-next)
-    (scroll-down "Scroll-down"             mime-preview-scroll-down-entity)
-    (scroll-up  "Scroll-up"               mime-preview-scroll-up-entity)
-    (play       "Play current entity"     mime-preview-play-current-entity)
-    (extract    "Extract current entity"  mime-preview-extract-current-entity)
-    (print      "Print current entity"    mime-preview-print-current-entity)
-    )
-  "Menu for MIME Viewer")
-
-(cond (running-xemacs
-       (defvar mime-view-xemacs-popup-menu
-        (cons mime-view-menu-title
-              (mapcar (function
-                       (lambda (item)
-                         (vector (nth 1 item)(nth 2 item) t)
-                         ))
-                      mime-view-menu-list)))
-       (defun mime-view-xemacs-popup-menu (event)
-        "Popup the menu in the MIME Viewer buffer"
-        (interactive "e")
-        (select-window (event-window event))
-        (set-buffer (event-buffer event))
-        (popup-menu 'mime-view-xemacs-popup-menu))
-       (defvar mouse-button-2 'button2)
-       )
-      (t
-       (defvar mouse-button-2 [mouse-2])
-       ))
-
-(defun mime-view-define-keymap (&optional default)
-  (let ((mime-view-mode-map (if (keymapp default)
-                               (copy-keymap default)
-                             (make-sparse-keymap)
-                             )))
-    (define-key mime-view-mode-map
-      "u"        (function mime-preview-move-to-upper))
-    (define-key mime-view-mode-map
-      "p"        (function mime-preview-move-to-previous))
-    (define-key mime-view-mode-map
-      "n"        (function mime-preview-move-to-next))
-    (define-key mime-view-mode-map
-      "\e\t"     (function mime-preview-move-to-previous))
-    (define-key mime-view-mode-map
-      "\t"       (function mime-preview-move-to-next))
-    (define-key mime-view-mode-map
-      " "        (function mime-preview-scroll-up-entity))
-    (define-key mime-view-mode-map
-      "\M- "     (function mime-preview-scroll-down-entity))
-    (define-key mime-view-mode-map
-      "\177"     (function mime-preview-scroll-down-entity))
-    (define-key mime-view-mode-map
-      "\C-m"     (function mime-preview-next-line-entity))
-    (define-key mime-view-mode-map
-      "\C-\M-m"  (function mime-preview-previous-line-entity))
-    (define-key mime-view-mode-map
-      "v"        (function mime-preview-play-current-entity))
-    (define-key mime-view-mode-map
-      "e"        (function mime-preview-extract-current-entity))
-    (define-key mime-view-mode-map
-      "\C-c\C-p" (function mime-preview-print-current-entity))
-    (define-key mime-view-mode-map
-      "a"        (function mime-preview-follow-current-entity))
-    (define-key mime-view-mode-map
-      "q"        (function mime-preview-quit))
-    (define-key mime-view-mode-map
-      "\C-c\C-x" (function mime-preview-kill-buffer))
-    ;; (define-key mime-view-mode-map
-    ;;   "<"        (function beginning-of-buffer))
-    ;; (define-key mime-view-mode-map
-    ;;   ">"        (function end-of-buffer))
-    (define-key mime-view-mode-map
-      "?"        (function describe-mode))
-    (define-key mime-view-mode-map
-      [tab] (function mime-preview-move-to-next))
-    (define-key mime-view-mode-map
-      [delete] (function mime-preview-scroll-down-entity))
-    (define-key mime-view-mode-map
-      [backspace] (function mime-preview-scroll-down-entity))
-    (if (functionp default)
-       (cond (running-xemacs
-              (set-keymap-default-binding mime-view-mode-map default)
-              )
-             (t
-              (setq mime-view-mode-map
-                    (append mime-view-mode-map (list (cons t default))))
-              )))
-    (if mouse-button-2
-       (define-key mime-view-mode-map
-         mouse-button-2 (function mime-button-dispatcher))
-      )
-    (cond (running-xemacs
-          (define-key mime-view-mode-map
-            mouse-button-3 (function mime-view-xemacs-popup-menu))
-          )
-         ((>= emacs-major-version 19)
-          (define-key mime-view-mode-map [menu-bar mime-view]
-            (cons mime-view-menu-title
-                  (make-sparse-keymap mime-view-menu-title)))
-          (mapcar (function
-                   (lambda (item)
-                     (define-key mime-view-mode-map
-                       (vector 'menu-bar 'mime-view (car item))
-                       (cons (nth 1 item)(nth 2 item))
-                       )
-                     ))
-                  (reverse mime-view-menu-list)
-                  )
-          ))
-    (use-local-map mime-view-mode-map)
-    (run-hooks 'mime-view-define-keymap-hook)
-    ))
-
-(defsubst mime-maybe-hide-echo-buffer ()
-  "Clear mime-echo buffer and delete window for it."
-  (let ((buf (get-buffer mime-echo-buffer-name)))
-    (if buf
-       (save-excursion
-         (set-buffer buf)
-         (erase-buffer)
-         (let ((win (get-buffer-window buf)))
-           (if win
-               (delete-window win)
-             ))
-         (bury-buffer buf)
-         ))))
-
-(defvar mime-view-redisplay nil)
-
-(defun mime-display-message (message &optional preview-buffer
-                                    mother default-keymap-or-function)
-  (mime-maybe-hide-echo-buffer)
-  (let ((win-conf (current-window-configuration))
-       (raw-buffer (mime-entity-buffer message)))
-    (or preview-buffer
-       (setq preview-buffer
-             (concat "*Preview-" (buffer-name raw-buffer) "*")))
-    (set-buffer raw-buffer)
-    (setq mime-preview-buffer preview-buffer)
-    (let ((inhibit-read-only t))
-      (set-buffer (get-buffer-create preview-buffer))
-      (widen)
-      (erase-buffer)
-      (setq mime-raw-buffer raw-buffer)
-      (if mother
-         (setq mime-mother-buffer mother)
-       )
-      (setq mime-preview-original-window-configuration win-conf)
-      (setq major-mode 'mime-view-mode)
-      (setq mode-name "MIME-View")
-      (mime-display-entity message nil
-                          '((entity-button . invisible)
-                            (header . visible))
-                          preview-buffer)
-      (mime-view-define-keymap default-keymap-or-function)
-      (let ((point
-            (next-single-property-change (point-min) 'mime-view-entity)))
-       (if point
-           (goto-char point)
-         (goto-char (point-min))
-         (search-forward "\n\n" nil t)
-         ))
-      (run-hooks 'mime-view-mode-hook)
-      (set-buffer-modified-p nil)
-      (setq buffer-read-only t)
-      (or (get-buffer-window preview-buffer)
-         (let ((r-win (get-buffer-window raw-buffer)))
-           (if r-win
-               (set-window-buffer r-win preview-buffer)
-             (switch-to-buffer preview-buffer)
-             )))
-      )))
-
-(defun mime-view-buffer (&optional raw-buffer preview-buffer mother
-                                  default-keymap-or-function)
-  (interactive)
-  (mime-display-message
-   (mime-parse-buffer raw-buffer)
-   preview-buffer mother default-keymap-or-function))
-
-(defun mime-view-mode (&optional mother ctl encoding
-                                raw-buffer preview-buffer
-                                default-keymap-or-function)
-  "Major mode for viewing MIME message.
-
-Here is a list of the standard keys for mime-view-mode.
-
-key            feature
----            -------
-
-u              Move to upper content
-p or M-TAB     Move to previous content
-n or TAB       Move to next content
-SPC            Scroll up or move to next content
-M-SPC or DEL   Scroll down or move to previous content
-RET            Move to next line
-M-RET          Move to previous line
-v              Decode current content as `play mode'
-e              Decode current content as `extract mode'
-C-c C-p                Decode current content as `print mode'
-a              Followup to current content.
-q              Quit
-button-2       Move to point under the mouse cursor
-               and decode current content as `play mode'
-"
-  (interactive)
-  (let ((message
-        (save-excursion
-          (if raw-buffer (set-buffer raw-buffer))
-          (or mime-view-redisplay
-              (setq mime-message-structure (mime-parse-message ctl)))
-          )))
-    (or (mime-entity-encoding message)
-       (mime-entity-set-encoding-internal message encoding))
-    (mime-display-message message preview-buffer
-                         mother default-keymap-or-function)
-    ))
-
-
-;;; @@ playing
-;;;
-
-(autoload 'mime-preview-play-current-entity "mime-play"
-  "Play current entity." t)
-
-(defun mime-preview-extract-current-entity ()
-  "Extract current entity into file (maybe).
-It decodes current entity to call internal or external method as
-\"extract\" mode.  The method is selected from variable
-`mime-acting-condition'."
-  (interactive)
-  (mime-preview-play-current-entity "extract")
-  )
-
-(defun mime-preview-print-current-entity ()
-  "Print current entity (maybe).
-It decodes current entity to call internal or external method as
-\"print\" mode.  The method is selected from variable
-`mime-acting-condition'."
-  (interactive)
-  (mime-preview-play-current-entity "print")
-  )
-
-
-;;; @@ following
-;;;
-
-(defun mime-preview-follow-current-entity ()
-  "Write follow message to current entity.
-It calls following-method selected from variable
-`mime-preview-following-method-alist'."
-  (interactive)
-  (let (entity)
-    (while (null (setq entity
-                      (get-text-property (point) 'mime-view-entity)))
-      (backward-char)
-      )
-    (let* ((p-beg
-           (previous-single-property-change (point) 'mime-view-entity))
-          p-end
-          (entity-node-id (mime-entity-node-id entity))
-          (len (length entity-node-id))
-          )
-      (cond ((null p-beg)
-            (setq p-beg
-                  (if (eq (next-single-property-change (point-min)
-                                                       'mime-view-entity)
-                          (point))
-                      (point)
-                    (point-min)))
-            )
-           ((eq (next-single-property-change p-beg 'mime-view-entity)
-                (point))
-            (setq p-beg (point))
-            ))
-      (setq p-end (next-single-property-change p-beg 'mime-view-entity))
-      (cond ((null p-end)
-            (setq p-end (point-max))
-            )
-           ((null entity-node-id)
-            (setq p-end (point-max))
-            )
-           (t
-            (save-excursion
-              (goto-char p-end)
-              (catch 'tag
-                (let (e)
-                  (while (setq e
-                               (next-single-property-change
-                                (point) 'mime-view-entity))
-                    (goto-char e)
-                    (let ((rc (mime-entity-node-id
-                               (get-text-property (point)
-                                                  'mime-view-entity))))
-                      (or (equal entity-node-id
-                                 (nthcdr (- (length rc) len) rc))
-                          (throw 'tag nil)
-                          ))
-                    (setq p-end e)
-                    ))
-                (setq p-end (point-max))
-                ))
-            ))
-      (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)
-         (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))
-             (setq fields (std11-collect-field-names)
-                   entity-node-id (cdr entity-node-id))
-             )
-           )
-         (let ((rest mime-view-following-required-fields-list))
-           (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 rest (cdr rest))
-             ))
-         (eword-decode-header)
-         )
-       (let ((f (cdr (assq mode mime-preview-following-method-alist))))
-         (if (functionp f)
-             (funcall f new-buf)
-           (message
-            (format
-             "Sorry, following method for %s is not implemented yet."
-             mode))
-           ))
-       ))))
-
-
-;;; @@ moving
-;;;
-
-(defun mime-preview-move-to-upper ()
-  "Move to upper entity.
-If there is no upper entity, call function `mime-preview-quit'."
-  (interactive)
-  (let (cinfo)
-    (while (null (setq cinfo
-                      (get-text-property (point) 'mime-view-entity)))
-      (backward-char)
-      )
-    (let ((r (mime-entity-parent cinfo))
-         point)
-      (catch 'tag
-       (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)
-           )
-         )
-       (mime-preview-quit)
-       ))))
-
-(defun mime-preview-move-to-previous ()
-  "Move to previous entity.
-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))
-    (backward-char)
-    )
-  (let ((point (previous-single-property-change (point) 'mime-view-entity)))
-    (if point
-       (if (get-text-property (1- point) 'mime-view-entity)
-           (goto-char point)
-         (goto-char (1- point))
-         (mime-preview-move-to-previous)
-         )
-      (let ((f (assq (mime-preview-original-major-mode)
-                    mime-preview-over-to-previous-method-alist)))
-       (if f
-           (funcall (cdr f))
-         ))
-      )))
-
-(defun mime-preview-move-to-next ()
-  "Move to next entity.
-If there is no previous entity, it calls function registered in
-variable `mime-preview-over-to-next-method-alist'."
-  (interactive)
-  (while (null (get-text-property (point) 'mime-view-entity))
-    (forward-char)
-    )
-  (let ((point (next-single-property-change (point) 'mime-view-entity)))
-    (if point
-       (progn
-         (goto-char point)
-         (if (null (get-text-property point 'mime-view-entity))
-             (mime-preview-move-to-next)
-           ))
-      (let ((f (assq (mime-preview-original-major-mode)
-                    mime-preview-over-to-next-method-alist)))
-       (if f
-           (funcall (cdr f))
-         ))
-      )))
-
-(defun mime-preview-scroll-up-entity (&optional h)
-  "Scroll up current entity.
-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))
-      (let ((f (assq (mime-preview-original-major-mode)
-                     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)
-        )
-      )))
-
-(defun mime-preview-scroll-down-entity (&optional h)
-  "Scroll down current entity.
-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))
-      (let ((f (assq (mime-preview-original-major-mode)
-                    mime-preview-over-to-previous-method-alist)))
-        (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)
-        ))))
-
-(defun mime-preview-next-line-entity ()
-  (interactive)
-  (mime-preview-scroll-up-entity 1)
-  )
-
-(defun mime-preview-previous-line-entity ()
-  (interactive)
-  (mime-preview-scroll-down-entity 1)
-  )
-
-
-;;; @@ quitting
-;;;
-
-(defun mime-preview-quit ()
-  "Quit from MIME-preview buffer.
-It calls function registered in variable
-`mime-preview-quitting-method-alist'."
-  (interactive)
-  (let ((r (assq (mime-preview-original-major-mode)
-                mime-preview-quitting-method-alist)))
-    (if r
-       (funcall (cdr r))
-      )))
-
-(defun mime-preview-kill-buffer ()
-  (interactive)
-  (kill-buffer (current-buffer))
-  )
-
-
-;;; @ end
-;;;
-
-(provide 'mime-view)
-
-(run-hooks 'mime-view-load-hook)
-
-;;; mime-view.el ends here
diff --git a/mime-w3.el b/mime-w3.el
deleted file mode 100644 (file)
index 2c0655b..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-;;; mime-w3.el --- mime-view content filter for text
-
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: HTML, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Suite of Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'w3)
-(require 'mime-text)
-
-(defmacro mime-put-keymap-region (start end keymap)
-  `(put-text-property ,start ,end
-                     ',(if (featurep 'xemacs)
-                           'keymap
-                         'local-map)
-                     ,keymap)
-  )
-
-(defmacro mime-save-background-color (&rest body)
-  (if (featurep 'xemacs)
-      `(let ((color (color-name (face-background 'default))))
-        (prog1
-            (progn ,@body)
-          (font-set-face-background 'default color (current-buffer))
-          ))
-    (cons 'progn body)))
-
-(defun mime-preview-text/html (entity situation)
-  (mime-save-background-color
-   (save-restriction
-     (narrow-to-region (point-max)(point-max))
-     (mime-text-insert-decoded-body entity)
-     (let ((beg (point-min)))
-       (remove-text-properties beg (point-max) '(face nil))
-       (w3-region beg (point-max))
-       (mime-put-keymap-region beg (point-max) w3-mode-map)
-       ))))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-w3)
-
-;;; mime-w3.el ends here
diff --git a/semi-def.el b/semi-def.el
deleted file mode 100644 (file)
index 38508b0..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-;;; semi-def.el --- definition module for REMI
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: definition, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Sample of Emacs MIME Implementation).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'emu)
-
-(eval-when-compile (require 'cl))
-
-(require 'custom)
-
-(defconst mime-user-interface-version '("SEMI" "Toyama" 1 8 0)
-  "Implementation name, version name and numbers of MIME-kernel package.")
-
-(autoload 'mule-caesar-region "mule-caesar"
-  "Caesar rotation of current region." t)
-
-
-;;; @ constants
-;;;
-
-(defconst mime-echo-buffer-name "*MIME-echo*"
-  "Name of buffer to display MIME-playing information.")
-
-(defconst mime-temp-buffer-name " *MIME-temp*")
-
-
-;;; @ button
-;;;
-
-(defcustom mime-button-face 'bold
-  "Face used for content-button or URL-button of MIME-Preview buffer."
-  :group 'mime
-  :type 'face)
-
-(defcustom mime-button-mouse-face 'highlight
-  "Face used for MIME-preview buffer mouse highlighting."
-  :group 'mime
-  :type 'face)
-
-(defsubst mime-add-button (from to function &optional data)
-  "Create a button between FROM and TO with callback FUNCTION and DATA."
-  (let ((overlay (make-overlay from to)))
-    (and mime-button-face
-        (overlay-put overlay 'face mime-button-face))
-    (and mime-button-mouse-face
-        (overlay-put overlay 'mouse-face mime-button-mouse-face))
-    (add-text-properties from to (list 'mime-button-callback function))
-    (and data
-        (add-text-properties from to (list 'mime-button-data data)))
-    ))
-
-(defsubst mime-insert-button (string function &optional data)
-  "Insert STRING as button with callback FUNCTION and DATA."
-  (save-restriction
-    (narrow-to-region (point)(point))
-    (insert (concat "[" string "]\n"))
-    (mime-add-button (point-min)(point-max) function data)
-    ))
-
-(defvar mime-button-mother-dispatcher nil)
-
-(defun mime-button-dispatcher (event)
-  "Select the button under point."
-  (interactive "e")
-  (let (buf point func data)
-    (save-window-excursion
-      (mouse-set-point event)
-      (setq buf (current-buffer)
-           point (point)
-           func (get-text-property (point) 'mime-button-callback)
-           data (get-text-property (point) 'mime-button-data)
-           ))
-    (save-excursion
-      (set-buffer buf)
-      (goto-char point)
-      (if func
-         (apply func data)
-       (if (fboundp mime-button-mother-dispatcher)
-           (funcall mime-button-mother-dispatcher event)
-         )))))
-
-
-;;; @ for URL
-;;;
-
-(defcustom mime-browse-url-regexp
-  (concat "\\(http\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):"
-         "\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?"
-         "[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,]*[-a-zA-Z0-9_=#$@~`%&*+|\\/]")
-  "*Regexp to match URL in text body."
-  :group 'mime
-  :type 'regexp)
-
-(defcustom mime-browse-url-function (function browse-url)
-  "*Function to browse URL."
-  :group 'mime
-  :type 'function)
-
-(defsubst mime-add-url-buttons ()
-  "Add URL-buttons for text body."
-  (goto-char (point-min))
-  (while (re-search-forward mime-browse-url-regexp nil t)
-    (let ((beg (match-beginning 0))
-         (end (match-end 0)))
-      (mime-add-button beg end mime-browse-url-function
-                      (list (buffer-substring beg end))))))
-
-
-;;; @ menu
-;;;
-
-(if window-system
-    (if (featurep 'xemacs)
-       (defun select-menu-alist (title menu-alist)
-         (let (ret)
-           (popup-menu
-            (list* title
-                   "---"
-                   (mapcar (function
-                            (lambda (cell)
-                              (vector (car cell)
-                                      `(progn
-                                         (setq ret ',(cdr cell))
-                                         (throw 'exit nil)
-                                         )
-                                      t)
-                              ))
-                           menu-alist)
-                   ))
-           (recursive-edit)
-           ret))
-      (defun select-menu-alist (title menu-alist)
-       (x-popup-menu
-        (list '(1 1) (selected-window))
-        (list title (cons title menu-alist))
-        ))
-      )
-  (defun select-menu-alist (title menu-alist)
-    (cdr
-     (assoc (completing-read (concat title " : ") menu-alist)
-           menu-alist)
-     ))
-  )
-
-
-;;; @ PGP
-;;;
-
-(defvar pgp-function-alist
-  '(
-    ;; for mime-pgp
-    (verify            mc-verify                       "mc-toplev")
-    (decrypt           mc-decrypt                      "mc-toplev")
-    (fetch-key         mc-pgp-fetch-key                "mc-pgp")
-    (snarf-keys                mc-snarf-keys                   "mc-toplev")
-    ;; for mime-edit
-    (mime-sign         mime-mc-pgp-sign-region         "mime-mc")
-    (traditional-sign  mc-pgp-sign-region              "mc-pgp")
-    (encrypt           mime-mc-pgp-encrypt-region      "mime-mc")
-    (insert-key                mc-insert-public-key            "mc-toplev")
-    )
-  "Alist of service names vs. corresponding functions and its filenames.
-Each element looks like (SERVICE FUNCTION FILE).
-
-SERVICE is a symbol of PGP processing.  It allows `verify', `decrypt',
-`fetch-key', `snarf-keys', `mime-sign', `traditional-sign', `encrypt'
-or `insert-key'.
-
-Function is a symbol of function to do specified SERVICE.
-
-FILE is string of filename which has definition of corresponding
-FUNCTION.")
-
-(defmacro pgp-function (method)
-  "Return function to do service METHOD."
-  `(cadr (assq ,method (symbol-value 'pgp-function-alist))))
-
-(mapcar (function
-        (lambda (method)
-          (autoload (cadr method)(nth 2 method))
-          ))
-       pgp-function-alist)
-
-
-;;; @ Other Utility
-;;;
-
-(defvar mime-condition-type-alist
-  '((preview . mime-preview-condition)
-    (action . mime-acting-condition)))
-
-(defvar mime-condition-mode-alist
-  '((with-default . ctree-set-calist-with-default)
-    (t . ctree-set-calist-strictly)))
-
-(defun mime-add-condition (target-type condition &optional mode file)
-  "Add CONDITION to database specified by TARGET-TYPE.
-TARGET-TYPE must be 'preview or 'action.  
-If optional argument MODE is 'strict or nil (omitted), CONDITION is
-added strictly.
-If optional argument MODE is 'with-default, CONDITION is added with
-default rule.
-If optional argument FILE is specified, it is loaded when CONDITION is
-activate."
-  (let ((sym (cdr (assq target-type mime-condition-type-alist))))
-    (if sym
-       (let ((func (cdr (or (assq mode mime-condition-mode-alist)
-                            (assq t mime-condition-mode-alist)))))
-         (if (fboundp func)
-             (progn
-               (funcall func sym condition)
-               (if file
-                   (let ((method (cdr (assq 'method condition))))
-                     (autoload method file)
-                     ))
-               )
-           (error "Function for mode `%s' is not found." mode)
-           ))
-      (error "Variable for target-type `%s' is not found." target-type)
-      )))
-
-
-;;; @ end
-;;;
-
-(provide 'semi-def)
-
-;;; semi-def.el ends here
diff --git a/semi-setup.el b/semi-setup.el
deleted file mode 100644 (file)
index e7decc8..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-;;; semi-setup.el --- setup file for MIME-View.
-
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: mail, news, MIME, multimedia, multilingual, encoded-word
-
-;; This file is part of SEMI (Setting for Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'semi-def)
-(require 'path-util)
-
-(defun call-after-loaded (module func &optional hook-name)
-  "If MODULE is provided, then FUNC is called.
-Otherwise func is set to MODULE-load-hook.
-If optional argument HOOK-NAME is specified,
-it is used as hook to set."
-  (if (featurep module)
-      (funcall func)
-    (or hook-name
-       (setq hook-name (intern (concat (symbol-name module) "-load-hook")))
-       )
-    (add-hook hook-name func)
-    ))
-
-
-;; for image/* and X-Face
-(defvar mime-setup-enable-inline-image
-  (and window-system
-       (or running-xemacs
-          (and (featurep 'mule)(module-installed-p 'bitmap))
-          ))
-  "*If it is non-nil, semi-setup sets up to use mime-image.")
-
-(if mime-setup-enable-inline-image
-    (call-after-loaded 'mime-view
-                      (function
-                       (lambda ()
-                         (require 'mime-image)
-                         )))
-  )
-
-
-;; for text/html
-(defvar mime-setup-enable-inline-html
-  (module-installed-p 'w3)
-  "*If it is non-nil, semi-setup sets up to use mime-w3.")
-
-(if mime-setup-enable-inline-html
-    (call-after-loaded
-     'mime-view
-     (function
-      (lambda ()
-       (autoload 'mime-preview-text/html "mime-w3")
-       
-       (ctree-set-calist-strictly
-        'mime-preview-condition
-        '((type . text)(subtype . html)
-          (body . visible)
-          (body-presentation-method . mime-preview-text/html)))
-       
-       (set-alist 'mime-view-type-subtype-score-alist
-                  '(text . html) 3)
-       )))
-  )
-
-
-;; for PGP
-(defvar mime-setup-enable-pgp
-  (module-installed-p 'mailcrypt)
-  "*If it is non-nil, semi-setup sets uf to use mime-pgp.")
-
-(if mime-setup-enable-pgp
-    (eval-after-load "mime-view"
-      '(progn
-        (mime-add-condition
-         'preview '((type . application)(subtype . pgp)
-                    (message-button . visible)))
-        (mime-add-condition
-         'action '((type . application)(subtype . pgp)
-                   (method . mime-view-application/pgp))
-         'strict "mime-pgp")
-        (mime-add-condition
-         'action '((type . text)(subtype . x-pgp)
-                   (method . mime-view-application/pgp)))
-        
-        (mime-add-condition
-         'action '((type . multipart)(subtype . signed)
-                   (method . mime-verify-multipart/signed))
-         'strict "mime-pgp")
-        
-        (mime-add-condition
-         'action
-         '((type . application)(subtype . pgp-signature)
-           (method . mime-verify-application/pgp-signature))
-         'strict "mime-pgp")
-        
-        (mime-add-condition
-         'action
-         '((type . application)(subtype . pgp-encrypted)
-           (method . mime-decrypt-application/pgp-encrypted))
-         'strict "mime-pgp")
-        
-        (mime-add-condition
-         'action
-         '((type . application)(subtype . pgp-keys)
-           (method . mime-add-application/pgp-keys))
-         'strict "mime-pgp")
-        ))
-  )
-
-
-;;; @ for mime-edit
-;;;
-
-(defun mime-setup-decode-message-header ()
-  (save-excursion
-    (save-restriction
-      (goto-char (point-min))
-      (narrow-to-region
-       (point-min)
-       (if (re-search-forward
-           (concat "^" (regexp-quote mail-header-separator) "$")
-           nil t)
-          (match-beginning 0)
-        (point-max)
-        ))
-      (eword-decode-header)
-      (set-buffer-modified-p nil)
-      )))
-
-(add-hook 'mime-edit-mode-hook 'mime-setup-decode-message-header)
-
-
-;;; @@ variables
-;;;
-
-(defvar mime-setup-use-signature t
-  "If it is not nil, mime-setup sets up to use signature.el.")
-
-(defvar mime-setup-default-signature-key "\C-c\C-s"
-  "*Key to insert signature.")
-
-(defvar mime-setup-signature-key-alist '((mail-mode . "\C-c\C-w"))
-  "Alist of major-mode vs. key to insert signature.")
-
-
-;;; @@ for signature
-;;;
-
-(defun mime-setup-set-signature-key ()
-  (let ((keymap (current-local-map)))
-    (if keymap
-       (let ((key
-              (or (cdr (assq major-mode mime-setup-signature-key-alist))
-                  mime-setup-default-signature-key)))
-         (define-key keymap key (function insert-signature))
-         ))))
-
-(when mime-setup-use-signature
-  (autoload 'insert-signature "signature" "Insert signature" t)
-  (add-hook 'mime-edit-mode-hook 'mime-setup-set-signature-key)
-  ;; (setq message-signature nil)
-  )
-
-
-;;; @ for mu-cite
-;;;
-
-(add-hook 'mu-cite/pre-cite-hook 'eword-decode-header)
-
-
-;;; @ end
-;;;
-
-(provide 'semi-setup)
-
-;;; semi-setup.el ends here
diff --git a/signature.el b/signature.el
deleted file mode 100644 (file)
index f06f53c..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-;;; signature.el --- a signature utility for GNU Emacs
-
-;; Copyright (C) 1994,1995,1996,1997 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;;         OKABE Yasuo <okabe@kudpc.kyoto-u.ac.jp>
-;;         Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Maintainer: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Created: 1994/7/11
-;; Version: $Id: signature.el,v 7.16 1997/09/24 23:17:38 shuhei-k Exp $
-;; Keywords: mail, news, signature
-
-;; This file is part of SEMI (SEMI is Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program; see the file COPYING.  If not, write to
-;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'std11)
-
-
-;;; @ valiables
-;;;
-
-(defvar signature-insert-at-eof nil
-  "*If non-nil, insert signature at the end of file.")
-
-(defvar signature-delete-blank-lines-at-eof nil
-  "*If non-nil, signature-insert-at-eof deletes blank lines at the end
-of file.")
-
-(defvar signature-load-hook nil
-  "*List of functions called after signature.el is loaded.")
-
-(defvar signature-separator "-- \n"
-  "*String to separate contents and signature.
-It is inserted when signature is inserted at end of file.")
-
-(defvar signature-file-name "~/.signature"
-  "*Name of file containing the user's signature.")
-
-(defvar signature-file-alist nil
-  "*Alist of the form:
-    (((FIELD . PATTERN) . FILENAME)
-     ...)
-PATTERN is a string or list of string. If PATTERN matches the contents of
-FIELD, the contents of FILENAME is inserted.")
-
-(defvar signature-file-prefix nil
-  "*String containing optional prefix for the signature file names")
-
-(defvar signature-insert-hook nil
-  "*List of functions called before inserting a signature.")
-
-(defvar signature-use-bbdb nil
-  "*If non-nil, Register sigtype to BBDB.")
-
-(autoload 'signature/get-sigtype-from-bbdb "mime-bbdb")
-
-(defun signature/get-sigtype-interactively (&optional default)
-  (read-file-name "Insert your signature: "
-                  (or default (concat signature-file-name "-"))
-                  (or default signature-file-name)
-                  nil))
-
-(defun signature/get-signature-file-name ()
-  (save-excursion
-    (save-restriction
-      (narrow-to-region
-       (goto-char (point-min))
-       (if (re-search-forward
-            (concat "^" (regexp-quote mail-header-separator) "$")
-            nil t)
-           (match-beginning 0)
-         (point-max)
-         ))
-      (catch 'found
-        (let ((alist signature-file-alist) cell field value)
-          (while alist
-            (setq cell  (car alist)
-                  field (std11-field-body (car (car cell)))
-                  value (cdr (car cell)))
-            (cond ((functionp value)
-                  (let ((name (apply value field (cdr cell))))
-                    (if name
-                        (throw 'found
-                               (concat signature-file-prefix name))
-                      )))
-                 ((stringp field)
-                  (cond ((consp value)
-                         (while value
-                           (if (string-match (car value) field)
-                               (throw 'found
-                                      (concat
-                                       signature-file-prefix (cdr cell)))
-                             (setq value (cdr value))
-                             )))
-                        ((stringp value)
-                         (if (string-match value field)
-                             (throw 'found
-                                    (concat
-                                     signature-file-prefix (cdr cell)))
-                           )))))
-            (setq alist (cdr alist))
-            ))
-        signature-file-name))))
-
-(defun insert-signature (&optional arg)
-  "Insert the file named by signature-file-name.
-It is inserted at the end of file if signature-insert-at-eof is non-nil,
-and otherwise at the current point.  A prefix argument enables user to
-specify a file named <signature-file-name>-DISTRIBUTION interactively."
-  (interactive "P")
-  (let ((signature-file-name
-         (expand-file-name
-          (or (and signature-use-bbdb
-                   (signature/get-sigtype-from-bbdb arg))
-              (and arg
-                   (signature/get-sigtype-interactively))
-              (signature/get-signature-file-name))
-          )))
-    (or (file-readable-p signature-file-name)
-        (error "Cannot open signature file: %s" signature-file-name))
-    (if signature-insert-at-eof
-        (progn
-          (goto-char (point-max))
-          (or (bolp) (insert "\n"))
-          (if signature-delete-blank-lines-at-eof (delete-blank-lines))
-          ))
-    (run-hooks 'signature-insert-hook)
-    (if (= (point)(point-max))
-       (insert signature-separator)
-      )
-    (insert-file-contents signature-file-name)
-    (force-mode-line-update)
-    signature-file-name))
-
-
-;;; @ end
-;;;
-
-(provide 'signature)
-
-(run-hooks 'signature-load-hook)
-
-;;; signature.el ends here