2 @setfilename mime-ui-en.info
3 @settitle{SEMI 1.14 Manual}
5 @title SEMI 1.14 Manual
6 @author MORIOKA Tomohiko <morioka@@jaist.ac.jp>
9 @node Top, Introduction, (dir), (dir)
14 This file documents SEMI, a MIME user interface for GNU Emacs.
18 * Introduction:: What is SEMI?
19 * MIME-View:: MIME message viewing
20 * MIME-Edit:: MIME message editing
21 * Various:: Miscellaneous
27 @node Introduction, MIME-View, Top, Top
28 @chapter What is SEMI?
30 SEMI is a package for GNU Emacs to provide features related with MIME
31 user interface.@refill
33 SEMI provides two user interfaces: MIME-View and MIME-Edit.@refill
36 MIME-View is a kernel of user interface to display or operate MIME
37 messages, STD 11 messages or ``localized RFC 822'' messages.@refill
39 MIME-Edit is a user interface to compose MIME messages.@refill
41 Each MUA can use powerful MIME features to combine these features.
44 @node MIME-View, MIME-Edit, Introduction, Top
45 @chapter MIME message viewing
47 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
49 MIME-View
\e$B$O
\e(B MIME message
\e$B$r1\Mw$9$k$?$a$NMxMQ<T3&LL
\e(B (user interface)
50 \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
51 \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
52 \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
56 * Overview of MIME-View:: Basic design
57 * MIME-Preview:: Presentation of mime-preview-buffer
58 * mime-view-mode:: Operation in mime-preview-buffer
61 @node Overview of MIME-View, MIME-Preview, MIME-View, MIME-View
64 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
65 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
66 \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
67 \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
68 \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
69 \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
70 \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
71 \e$B;zId9f$NJ8;zNs$N$h$&$K8+Jo$7$F$-$^$7$?!#
\e(B@refill
73 \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
74 \e$B$D$N=qLL$GJ#?t$NJ8;zId9f$rMQ$$$k$3$H$,$G$-$^$9!#$^$?!"
\e(Bentity
\e$B$NFbMF$OJ8
\e(B
75 \e$BLL$d3($N$h$&$JC1=c$KI=<(2DG=$J$b$N$@$1$G$J$/!"2;@<$dF02h$J$I$N0lDj;~4V:F
\e(B
76 \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
77 \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
78 \e$B>H$J$I$N$5$^$6$^$J$b$N$,9M$($i$^$9!#$3$N$?$a!"I=<($@$1$r9M$($F$$$?
\e(B STD
79 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
80 \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
81 \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
82 \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
83 \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
84 \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
85 \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
86 \e$B8r49MQI=8=$H$=$N2r<a7k2L$G$"$kI=<(2hLL$d:F@8Ey$N=hM}$r6hJL$7$F9M$($kI,MW
\e(B
87 \e$B$,$"$j$^$9!#$^$?!"MxMQ<T$H$NBPOCE*$J:F@8=hM}$,I,MW$G$9!#
\e(B@refill
89 \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
90 mime-raw-buffer
\e$B$HI=<(MQI=8=$r3JG<$9$k
\e(B mime-preview-buffer
\e$B$N#2$D$N
\e(B
91 buffer
\e$B$rMQ$$$^$9!#
\e(B@refill
93 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
94 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
95 \e$BBP$7$FA`:n$r9T$&$3$H$,$G$-$^$9!#
\e(B
98 @node MIME-Preview, mime-view-mode, Overview of MIME-View, MIME-View
99 @section Presentation of mime-preview-buffer
101 mime-view-mode displays information about each entity as@refill
112 You can change their design or inhibit showing some of them, according
115 See following example
119 From: morioka@@jaist.ac.jp (MORIOKA Tomohiko)
120 Subject: Re: question?
121 Newsgroups: zxr.message.mime
122 Date: 22 Oct 93 11:02:44
124 Organization: Japan Advanced Institute of Science and Technology,
128 How to compose MIME message in MIME-Edit mode.
130 C-c C-x ? shows its help.
132 C-c C-x C-t insert a text message.
133 C-c C-x TAB insert a (binary) file.
134 C-c C-x C-e insert a reference to external body.
135 C-c C-x C-v insert a voice message.
136 C-c C-x C-y insert a mail or news message.
137 C-c C-x RET insert a mail message.
138 C-c C-x C-s insert a signature file at end.
139 C-c C-x t insert a new MIME tag.
140 C-c C-x a enclose as multipart/alternative.
141 C-c C-x p enclose as multipart/parallel.
142 C-c C-x m enclose as multipart/mixed.
143 C-c C-x d enclose as multipart/digest.
144 C-c C-x s enclose as PGP signed.
145 C-c C-x e enclose as PGP encrypted.
146 C-c C-x C-k insert PGP public key.
147 C-c C-x C-p preview editing MIME message.
150 therefore, you should type C-c C-x C-i and specify the binary file
151 which you want to insert.
153 You should select Base64 as MIME encoding for binary file.
159 Like above, you can compose the message with image.
161 \e$B".".".".".".".".".".".
\e(B
\e$B%m%7%"%s!&%F%#!<$r0lGU!#
\e(B
\e$B".".".".".".".".".".".
\e(B
162 \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
163 \e$B".".".".".
\e(B
\e$B'.'0'2$$'0','!
\e(B
\e$B'4'0'.'0'7'*','0
\e(B
\e$B".".".".".
\e(B
164 \e$B".".".".".".".
\e(B Internet E-mail: <morioka@@jaist.ac.jp>
\e$B".".".".".".".
\e(B
175 @node entity-button, entity-header, MIME-Preview, MIME-Preview
176 @subsection entity-button
177 @cindex entity-number
178 @cindex entity-button
180 @strong{entity-button} is a tag on the top of the entity
181 which shows brief information of the part.@refill
183 Normally, it appears as
186 [1.3 test (text/plain)]
191 The number on the head describes the place of the entity in the
192 message (like the section number) and it is called as
193 @strong{entity-number}.@refill
195 The string in the next describes its title. This information is
200 Title described in Content-Description field or Subject field
202 File name specified by filename parameter in Content-Disposition field
204 File name specified by name parameter in Content-Type field
206 File name for uuencode'ing
210 If none of them are specified, displays a blank.
212 The 3rd item in the parenthesis describes media-type/subtype of
213 the entity. If it is is not MIME entity, it displays @code{nil}.
216 This entity-button plays a role like icon that symbolically
217 shows the content of the entity. For example, push @kbd{v} on
224 shows up the image contained there.
226 If the mouse operation is possible, you can display the image
227 by pushing 2nd button (the middle button for 3 button mouse) too.
230 @node entity-header, entity-body, entity-button, MIME-Preview
231 @subsection entity-header
232 @cindex entity-header
234 @strong{entity-header} is the header of the entity.
235 \e$B!J!V$=$N$^$^$d$s$1!W$C$FE\$i$J$$$G!#$=$&$$$&$b$s$J$s$G$9!K!#
\e(B
238 @node entity-body, , entity-header, MIME-Preview
239 @subsection entity-body
242 @strong{entity-body} is the content of the part.@refill
244 \e$B$3$l$b$R$M$j$,B-$j$J$$$G$9$,!"$^$"!"$=$&$$$&$b$s$G$9!#
\e(B@refill
246 \e$B$H$O$$$(!"<B:]$K$O>/$7$R$M$C$F$^$9!#
\e(B@refill
248 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
249 \e$B$O
\e(B image entity
\e$B$rJQ49$7$J$$$H$$$1$J$$$7!#
\e(B@refill
251 Details will be described later.
254 @node mime-view-mode, , MIME-Preview, MIME-View
255 @section Operation in mime-preview-buffer
257 mime-preview-buffer posesses following functionalities.@refill
261 go back to upper part (in the first part of the message,
262 go back to the Summary mode (*1))
292 play current part (*2)
295 extract file from current part (*2)
298 print current part (*2)
300 @item @key{mouse-button-2}
301 start the mouse button in preview-buffer
303 on content-button, play current part (*2)@refill
305 on URL-button, start WWW browser@refill
313 (*1) Do not go back to Summary mode unless appropriately
314 configured for mime-view in the MUA.@refill
316 (*2) actual behavior depends on the associated method
321 @node MIME-Edit, Various, MIME-View, Top
322 @chapter MIME message editing
325 @strong{MIME-Edit} is a general MIME composer for GNU Emacs.
329 * mime-edit-mode:: Minor-mode to edit MIME message
330 * single-part tags:: Operations for single-part
331 * enclosure tags:: Operations for enclosure
332 * other MIME-Edit operations:: Other operations
333 * file-type specification:: How to detect tag for inserted file
335 * message/partial sending:: Splitting
338 @node mime-edit-mode, single-part tags, MIME-Edit, MIME-Edit
339 @section Minor-mode to edit MIME message
341 @cindex multi-part ending tag
342 @cindex multi-part beginning tag
344 @cindex mime-edit-mode
346 @strong{mime-edit-mode} is a minor mode to compose MIME message. In
347 this mode, @strong{tag} represents various kinds of data, so you can
348 edit multi part message consists of various kinds of data, such as text,
349 image, audio, etc.@refill
351 There are 2 kinds of tags:
360 single-part tag represents single part, this form is following:@refill
363 --[[TYPE/SUBTYPE;PARAMETERS][ENCODING]
367 TYPE/SUBTYPE and PARAMETERS indicates type/subtype and parameters of
368 Content-Type (@ref{(mime-en)Content-Type}) field. TYPE/SUBTYPE is
369 required, PARAMETERS is optional.@refill
371 ENCODING indicates Content-Transfer-Encoding
372 (@ref{(mime-ja)Content-Transfer-Encoding}) field. It is optional
375 OPTIONAL-FIELDS is to represent another fields except Content-Type field
376 and Content-Transfer-Encoding field.@refill
378 multi-part tags represent multi part (@ref{(mime-en)multipart}). They
379 consist of a pair of @strong{multi-part beginning tag} and
380 @strong{multi-part ending tag}.@refill
382 multi-part beginning tag's form is following:
388 multi-part ending tag's form is following:
394 A region from multi-part beginning tag to multi-part ending tag is
395 called as @strong{enclosure}.
398 @node single-part tags, enclosure tags, mime-edit-mode, MIME-Edit
399 @section Operations for single-part
401 Operations to make single-part are following:
404 @item @key{C-c C-x C-t}
405 Insert single-part tag indicates text part.
407 @item @key{C-c C-x C-i}
408 Insert file as a MIME attachment. If @kbd{C-u} is followed by it, it
409 asks media-type, subtype or encoding even if their default values are
410 specified. (cf. @ref{tag specification for inserted file})
412 @item @key{C-c C-x C-e}
413 Insert external part.
415 @item @key{C-c C-x C-v}
416 Record audio input until @kbd{C-g} is pressed, and insert as a
417 audio part. (It requires /dev/audio in default.)
419 @item @key{C-c C-x C-y}
420 Insert current (mail or news) message. (It is MUA depended.)
422 @item @key{C-c C-x C-m}
423 Insert mail message. (It is MUA depended.)
425 @item @key{C-c C-x C-w}, @key{C-c C-x C-s}
428 @item @key{C-c C-x C-k}
429 Insert PGP (@ref{PGP}) public key. (It requires Mailcrypt package.)
431 @item @key{C-c C-x t}
432 Insert any single-part tag.
438 @node enclosure tags, other MIME-Edit operations, single-part tags, MIME-Edit
439 @section Operations for enclosure
441 Operations to make enclosure are following:
444 @item @key{C-c C-m C-a}
445 Enclose specified region as multipart/alternative.
447 @item @key{C-c C-x C-p}
448 Enclose specified region as multipart/parallel.
450 @item @key{C-c C-x C-m}
451 Enclose specified region as multipart/mixed.
453 @item @key{C-c C-x C-d}
454 Enclose specified region as multipart/digest.
456 @item @key{C-c C-x C-s}
457 Digital-sign to specified region. (cf. @ref{PGP})
459 @item @key{C-c C-x C-e}
460 Encrypt to specified region. (cf. @ref{PGP})
462 @item @key{C-c C-x C-q}
463 avoid to encode tags in specified region. In other words, tags is
464 interpreted as such string. (In current version, it may be
465 incomplete. Maybe PGP-signature does not work for this enclosure.)
471 @node other MIME-Edit operations, file-type specification, enclosure tags, MIME-Edit
472 @section Other operations
474 There are another operations in mime-edit-mode.
478 Send current editing message.
480 @item @key{C-c C-x p}
481 Preview current editing message. (cf. @ref{MIME-View})
483 @item @key{C-c C-x C-z}
484 Exit mime-edit-mode without sending.
486 @item @key{C-c C-x /}
487 Set current editing message to enable automatic splitting or not.
488 Form of automatic split messages is message/partial.
490 @item @key{C-c C-x 7}
491 Set 7bit (@ref{(mime-en)7bit}) to transfer level (@ref{transfer level}).
493 @item @key{C-c C-x 8}
494 Set 8bit (@ref{(mime-en)8bit}) to transfer level (@ref{transfer level}).
496 @item @key{C-c C-x v}
497 Set current editing message to digital-sign or not. (cf. @ref{PGP})
499 @item @key{C-c C-x h}
500 Set current editing message to encrypt or not. (cf. @ref{PGP})
502 @item @key{C-c C-x ?}
503 Display help message.
509 @node file-type specification, transfer level, other MIME-Edit operations, MIME-Edit
510 @section How to detect tag for inserted file
512 When @kbd{C-c C-x C-i} (@code{mime-edit-insert-file}) is pressed, tag
513 parameters for inserted file, such as media-type or encoding, are
514 detected by variable @code{mime-file-types}.@refill
516 When @kbd{C-u} is followed by it or parameter is not found from the
517 variable, it asks from user. (When @kbd{C-u} is followed by it,
518 detected value is used as default value)@refill
520 If you want to change default value for file names, please change
521 variable @code{mime-file-types}.
523 @defvar mime-file-types
525 Specification of default value of tag for file name of inserted
528 It is a list of following list:
531 (FILE_PAT TYPE SUBTYPE PARAMS ENCODING
532 DISPOSITION_TYPE DISPOSITION_PARAMS)
536 Each element of the list is following:
540 regular expression of file name
543 primary-type of media-type
546 subtype of media-type
549 parameters of Content-Type field
552 Content-Transfer-Encoding
554 @item DISPOSITION_TYPE
557 @item DISPOSITION_PARAMS
558 parameters of Content-Disposition field
563 Example: Specify application/rtf as default media type for
569 '(set-alist 'mime-file-types
571 '("application" "rtf" nil nil
572 "attachment" (("filename" . file)))
579 @node transfer level, message/partial sending, file-type specification, MIME-Edit
580 @section transfer level
581 @cindex transfer level
583 Each content inserted in a message is represented by 7bit
584 (@ref{(mime-en)7bit}), 8bit (@ref{(mime-en)8bit}) or binary
585 (@ref{(mime-en)binary}).@refill
587 If a message is translated by 7bit-through MTA (@ref{(mime-en)MTA}),
588 there is no need to encode 7bit data, but 8bit and binary data must be
589 encoded to 7bit data.@refill
591 Similarly, if a message is translated by 8bit-through MTA, there is no
592 need to encode 7bit or 8bit data, but binary data must be encoded to
593 7bit or 8bit data.@refill
598 EBCDIC MTA breaks 7bit data, so in this case, 7bit data must be
599 encoded by base64. But I don't know EBCDIC. (^_^;
601 Similarly, I wish ASCII-printable only MTA and code-conversion MTA
602 disappeared. (^_^;@refill
604 Maybe there are binary-through MTA, but I think it is not major.
607 @strong{transfer level} represents how range data are
608 available. mime-edit has a variable @code{mime-transfer-level}
609 to represent transfer level.
612 @defvar mime-transfer-level
614 transfer level.@refill
616 If transfer level of a data is over it, a data is encoded to
619 Currently, 7 or 8 is available. Default value is 7.@refill
621 In extension plan, EBCDIC will be 5, ASCII printable only will be 6,
622 binary will be 9. But it will not be implemented.
630 transfer level is only for body, not for message header (@ref{header}).
631 MIME extends RFC 822 (@ref{(mime-en)RFC 822}) to use 8bit data in body,
632 but it requires to use us-ascii (@ref{(mime-en)us-ascii}) in header.
637 @node message/partial sending, , transfer level, MIME-Edit
640 @defvar mime-edit-split-message
642 Split large message if it is non-nil.
646 @defvar mime-edit-message-default-max-lines
648 Default maximum lines of a message.
652 @defvar mime-edit-message-max-lines-alist
654 Alist of major-mode vs maximum lines of a message.@refill
656 If it is not specified for a major-mode,
657 @code{mime-edit-message-default-max-lines} is used.
661 @defvar mime-edit-split-blind-field-regexp
663 Regular expression to match field-name to be ignored when split sending.
668 @node Various, Concept Index, MIME-Edit, Top
669 @chapter Miscellaneous
673 * PGP:: Encryption, Sign
674 * Buttons:: Mouse button
675 * Acting-condition configuration:: Utility for configuration
678 @node PGP, Buttons, Various, Various
683 mime-edit provides PGP encryption, signature and inserting public-key
684 features based on @strong{PGP/MIME} (RFC 2015) or @strong{PGP-kazu}
685 (draft-kazu-pgp-mime-00.txt).@refill
687 This feature requires your pgp command.
689 @defvar pgg-default-scheme
691 Version of PGP or GnuPG command to be used for encryption or sign.
692 The value should be a symbol. Allowed versions are @code{gpg},
693 @code{pgp} or @code{pgp5}.@refill
699 Version of PGP or GnuPG command to be used for decryption or verification.
700 The value should be a symbol. Allowed versions are @code{gpg},
701 @code{pgp} or @code{pgp5}.@refill
706 @node Buttons, Acting-condition configuration, PGP, Various
707 @section Mouse button
709 @defvar mime-button-face
711 Face used for content-button or URL-button of MIME-Preview buffer.
715 @defvar mime-button-mouse-face
717 Face used for MIME-preview buffer mouse highlighting.
721 @defvar mime-browse-url-function
723 Function to browse URL.
728 @node Acting-condition configuration, , Buttons, Various
729 @section Utility for configuration
731 @defun mime-add-condition target-type condition &optional mode file
733 Add @var{condition} to database specified by @var{target-type}.@refill
735 @var{target-type} must be @code{preview} or @code{action}.@refill
737 If optional argument @var{mode} is @code{strict} or @code{nil}
738 (omitted), @var{condition} is added strictly.@refill
740 If optional argument @var{mode} is @code{with-default}, @var{condition}
741 is added with default rule.@refill
743 If optional argument @var{file} is specified, it is loaded when
744 @var{condition} is activate.
749 @node Concept Index, Function Index, Various, Top
750 @chapter Concept Index
754 @node Function Index, Variable Index, Concept Index, Top
755 @chapter Function Index
759 @node Variable Index, , Function Index, Top
760 @chapter Variable Index