This file documents SEMI, a MIME user interface for GNU Emacs.
SEMI is a package for GNU Emacs to provide features related with MIME user interface.
SEMI provides two user interfaces: MIME-View and MIME-Edit.
MIME-View is a kernel of user interface to display or operate MIME messages, STD 11 messages or ``localized RFC 822'' messages.
MIME-Edit is a user interface to compose MIME messages.
Each MUA can use powerful MIME features to combine these features.
MIME-View is a MIME viewer for wide use that runs on GNU Emacs.
MIME-View is the kernel of the user interface for browsing MIME messages. You can start some presentation-method which is a program for creating some representation, or some acting-method which is a program for processing the entity. Then you can deal with a variety of entities.
The representation form of the internet messages in electric letters or in net news is based on STD 11. The STD 11 message body is a plain text which consists of lines as its only structure, and the character code is fixed as us-ascii. Actually, there are ``localized STD 11'' messages that use some character code in their linguistic range instead of using us-ascii. Even in that case, the character code in the message is single. Therefore, Message User Agents have considered (byte row) = (us-ascii string), or (byte row) = (string in the character code in the linguistic range).
Although, the MIME message has the tree structure in entity unit. And one message can contain multiple character codes. The content of an entity can be not only a letter or an image that can be displayed simply, but also can be a voice or an animation that are played for some time interval, a data for some specific application, a source code of some program, or an external reference that consists of the usage of ftp or mail service, or some URL. Therefore the simple extension of STD 11 user interface, which only consider displaying the message, cannot treat all of the MIME functionalities. Then it is not sufficient to decode message along its MIME type, but it is also required to consider a playback processing through some dialogue with the user. The format of MIME messages is designed to easily be passed to automatic processing. But some contents in the MIME message should not be passed to automatic processing for security reasons. So it should be designed to ask user in such cases. After all, in order to deal with MIME message, it is required to distinguish the representation for information exchange which is written in STD 11 or MIME construction, and its result after some interpretation which is a display screen or a playback process. It is also needed to converse with user for playback processing.
Therefore, MIME-View uses two buffers for one document, one is the mime-raw-buffer that stores the representation for information exchange, and the other is the mime-preview-buffer that stores the representation for displaying.
MIME-View provides a mode in the mime-preview-buffer for reading MIME message, which is called as mime-view-mode. User can manipulate each entity there.
mime-view-mode displays information about each entity as
See following example
Normally, it appears as
The number on the head describes the place of the entity in the
message (like the section number) and it is called as
The string in the next describes its title. This information is
taken from
The 3rd item in the parenthesis describes media-type/subtype of
the entity. If it is is not MIME entity, it displays
This entity-button plays a role like icon that symbolically
shows the content of the entity. For example, push v on
If the mouse operation is possible, you can display the image
by pushing 2nd button (the middle button for 3 button mouse) too.
Sophistication does not seem enough here also, but it is really such
a thing.
Though, it actually be twisted a little.
The text entity is passed to code conversion according to its charset,
and the image entity should be converted on XEmacs.
Details will be described later.
mime-preview-buffer posesses following functionalities.
on content-button, play current part (*2)
on URL-button, start WWW browser
(*1) Do not go back to Summary mode unless appropriately
configured for mime-view in the MUA.
(*2) actual behavior depends on the associated method
There are 2 kinds of tags:
single-part tag represents single part, this form is following:
TYPE/SUBTYPE and PARAMETERS indicates type/subtype and parameters of
ENCODING indicates
OPTIONAL-FIELDS is to represent another fields except Content-Type
field and Content-Transfer-Encoding field.
multi-part tags represent multi
part. They consist of a pair of
multi-part beginning tag's form is following:
multi-part ending tag's form is following:
A region from multi-part beginning tag to multi-part ending tag is
called as
Operations to make single-part are following:
Operations to make enclosure are following:
There are another operations in mime-edit-mode.
When C-c C-x C-i (
When C-u is followed by it or parameter is not found from
the variable, it asks from user. (When C-u is followed by
it, detected value is used as default value)
If you want to change default value for file names, please change
variable
Specification of default value of tag for file name of inserted file.
It is a list of following list:
Each content inserted in a message is represented by
If a message is translated by 7bit-through
Similarly, if a message is translated by 8bit-through MTA, there is no
need to encode 7bit or 8bit data, but binary data must be encoded to
7bit or 8bit data.
Similarly, I wish ASCII-printable only MTA and code-conversion MTA
disappeared. (^_^;
Maybe there are binary-through MTA, but I think it is not major.
transfer level.
If transfer level of a data is over it, a data is encoded to 7bit.
Currently, 7 or 8 is available. Default value is 7.
In extension plan, EBCDIC will be 5, ASCII printable only will be 6,
binary will be 9. But it will not be implemented.
Split large message if it is non-nil.
Default maximum lines of a message.
Alist of major-mode vs maximum lines of a message.
If it is not specified for a major-mode,
Regular expression to match field-name to be ignored when split
sending.
mime-edit provides PGP encryption, signature and inserting public-key
features based on
This feature requires your pgp command.
Version of PGP or GnuPG command to be used for encryption or sign.
The value should be a symbol. Allowed versions are
Version of PGP or GnuPG command to be used for decryption or verification.
The value should be a symbol. Allowed versions are
The function to fetch public key from the keyserver.
Use Emacs/W3 by the default setting. To use emacs-w3m
instead, set as follows:
Face used for content-button or URL-button of MIME-Preview buffer.
Face used for MIME-preview buffer mouse highlighting.
Function to browse URL.
Add condition to database specified by
target-type.
target-type must be
If optional argument mode is
If optional argument mode is
If optional argument file is specified, it is loaded when
condition is activate.
entity-button
nil
.
entity-header
entity-body
Operation in mime-preview-buffer
MIME message editing
Minor-mode to edit MIME message
Operations for single-part
Operations for enclosure
Other operations
How to detect tag for inserted file
mime-edit-insert-file
) is
pressed, tag parameters for inserted file, such as media-type or
encoding, are detected by variable mime-file-types
.
mime-file-types
.
transfer level
mime-transfer-level
to represent transfer level.
Splitting
mime-edit-message-default-max-lines
is used.
Miscellaneous
PGP
gpg
,
pgp
or pgp5
.
gpg
,
pgp
or pgp5
.
Mouse button
Utility for configuration
preview
or
action
.
strict
or
nil
(omitted), condition is added strictly.
with-default
,
condition is added with default rule.
Concept Index
Function Index
Variable Index