This commit was generated by cvs2svn to compensate for changes in r542,
[elisp/tm.git] / doc / tm-eng.tex
1 \documentstyle{report}
2
3 \title{tm Reference Manual (English Edition)}
4 \author{{\Large Morioka Tomohiko} \\
5   {\normalsize $<$morioka@jaist.ac.jp$>$}\\
6   \\
7   {\large translated by \Large Ueno Hiroshi} \\
8   {\normalsize $<$jl07715@yamato.ibm.co.jp$>$}
9   }
10 \date{\verb$Id: tm-eng.tex,v 5.7 1995/06/26 06:03:21 morioka Exp $}
11
12 \begin{document}
13
14 \maketitle
15 \tableofcontents
16
17 \chapter{Overview}
18
19 The tm package is a set of modules to enjoy MIME on GNU Emacs.  Using tm,
20 you can
21
22 \begin{itemize}
23 \item playback or view the MIME messages using new mime/viewer-mode
24 \item encode and decode the multi-lingual headers
25 \item use the enhanced MIME functions with mh-e, GNUS, and RMAIL
26 \end{itemize}
27
28 \noindent and more.
29
30
31 \section{Module List}
32
33 The tm package includes the modules listed below.
34
35 \begin{itemize}
36 \item {\bf tiny-mime} : MIME header encoder/decoder
37 \item {\bf tm-view} : MIME message viewer
38 \item {\bf tm-misc} : common part of tm-MUAs
39 \item {\bf tm-MUAs} : MIME function enhancer for MUAs
40   \begin{itemize}
41   \item {\bf tm-mh-e} : tm-MUA for mh-e
42   \item {\bf tm-gnus} : tm-MUA for GNUS
43   \item {\bf tm-rmail} : tm-MUA for RMAIL
44   \item {\bf tm-vm} : tm-MUA for vm
45   \end{itemize}
46 \item {\bf tm-setup} tm-MUA setup module
47 \item {\bf mime-setup} MIME setup module
48 \end{itemize}
49
50
51 \chapter{Considerations for Each Version of Emacs}
52
53 \section{Emacs (original)}
54
55 US-ASCII and ISO-8859-1 can be used if you use the original Emacs.
56
57
58 \section{NEmacs, NEpoch}
59
60 ISO-2022-JP and US-ASCII can be used if you use NEmacs.
61
62
63 \section{Mule}
64
65 Mule can handle the multi-lingual text.  With Mule, tiny-mime supports
66 ISO-2022-JP, ISO-2022-JP-2, US-ASCII, ISO-8859-1..9, ISO-2022-CN,
67 ISO-2022-KR, EUC-KR, etc.  You can also add or change
68 encoding/decoding for character sets by mime/set-charset-and-encoding
69 function.
70
71
72 \chapter{Installation and Setup}
73
74 \section{Installation}
75
76 You can install tm by following the procedures below.
77
78 \begin{enumerate}
79 \item modify bindir definition in Makefile according to your build
80   environment.
81 \item modify the method scripts in methods/ directory so that it
82   can work in your environment.  Refer to \ref{sec:method} section
83   for how you can suit the method scripts to your environment.
84 \item make all
85 \item make install
86 \item copy all files with .el suffix into the directory pointed by Emacs
87   load-path variable.
88 \end{enumerate}
89
90 \noindent{\bf [Notes]}
91 \begin{itemize}
92 \item Make sure mh-e version 3.x has been loaded before byte-compiling
93   tm-mh-e3.el.
94 \item Make sure GNUS 3 has been loaded before byte-compiling tm-gnus3.el.
95 \item Use Emacs 18 when you byte-compile tl-18.el.
96 \item Use the original Emacs when you byte-compile tl-orig.el.
97 \item Use NEmacs when you byte-compile tl-nemacs.el.
98 \item Use Mule when you byte-compile tl-mule.el.
99 \item Modules byte-compiled by Emacs 19 do not work with Emacs 18.
100 \end{itemize}
101
102
103 \section{Setup}
104
105 In the tm package, two files, mime-setup.el and tm-setup.el, are provided
106 to ease the setup. A mime-setup.el is used for the whole MIME related
107 setup including MIME encoding, while tm-setup is used to set up tm-MUA
108 only.
109
110
111 \subsection{mime-setup}
112
113 \begin{verbatim}
114 (load "mime-setup")
115 \end{verbatim}
116
117 \noindent will perform various settings of MIME.  As mime-setup loads
118 tm-setup, you do not need to load tm-setup when you use mime-setup.
119
120 You can also set up the "automatic signature selection tool" using
121 mime-setup.  If you want to automatically select the signature file
122 depending on how the message headers show, add lines like shown below
123 to your .emacs (Refer to the reference manual of signature.el for
124 more details).
125
126 \begin{verbatim}
127 (setq signature-file-alist
128       '((("Newsgroups" . "jokes")       . "~/.signature-jokes")
129         (("Newsgroups" . ("zxr" "nzr")) . "~/.signature-sun")
130         (("To" . ("ishimaru" "z-suzuki")) . "~/.signature-sun")
131         (("To" . "tea")                 . "~/.signature-jokes")
132         (("To" . ("sim" "oku" "takuo")) . "~/.signature-formal")
133         ))
134 \end{verbatim}
135
136 mime-setup requires mime.el. if you set up SuperCite via mime-setup,
137 you need the SuperCite package also.
138
139
140 \subsection{tm-setup}
141
142 tm-setup only sets up tm-MUAs.  You do not need to explicitly load
143 tm-setup if you are using mime-setup for your setup.  tm-setup is useful
144 when you do not want to use mime-setup but want to set up tm-MUAs.
145
146 \begin{verbatim}
147 (load "tm-setup")
148 \end{verbatim}
149
150
151 \subsection{vm}
152
153 If you want use vm, please insert following in .vm or .emacs:
154
155 \begin{verbatim}
156 (load "tm-vm")
157 \end{verbatim}
158
159
160 \subsection{setting up without loading provided setup files}
161
162 You may find the valuable hints in tm-setup.el if you want to set up
163 MIME environment without loading the tm-provided setup files.
164
165
166 \subsection{setting up MH}
167
168 If you are using MH-6.8JP2, add the following lines to your
169 .mh\_profile.
170
171 \begin{verbatim}
172 scan:   -form scan.mime
173 inc:    -form inc.mime
174 repl:   -form replcomps.mime
175 showproc: mhl
176 \end{verbatim}
177
178 \noindent Emacs will handle the most part of MH processing.  You
179 should not specify further options in your MH profile to avoid any
180 possible conflict between MH and Emacs.
181
182
183
184 \chapter{tm-MUA}
185
186 ``tm-MUA'' is a generic name of the modules which enhance the MIME
187 functions of MUA like mh-e, GNUS, and RMAIL etc.
188
189 The current version of tm provides the following tm-MUA.
190
191 \begin{itemize}
192 \item {\bf tm-mh-e} : tm-MUA for mh-e
193 \item {\bf tm-gnus} : tm-MUA for GNUS
194 \item {\bf tm-rmail} : tm-MUA for RAMIL
195 \end{itemize}
196
197 \noindent You can find the detailed explanations of these modules in
198 the following sections.
199
200
201 \section{Summary Mode}
202
203 If you are using tm-MUA, the following functions are added to the Summary
204 mode of the MUA.
205
206 \medskip
207 \begin{center}
208   \begin{tabular}{|l|l|}\hline
209     key & function \\ \hline
210     M-t & toggles decoding of MIME headers \\
211     v   & enters mime/view-mode \\ \hline
212   \end{tabular}
213 \end{center}
214 \medskip
215
216
217 \section{mime/viewer-mode}
218 \label{sec:mime/viewer-mode}
219
220 If you are using tm-MUA, mime/viewer-mode becomes active by pressing
221 {\bf v} key in the Summary mode.  In mime/viewer-mode, you can manipulate
222 the MIME messages by the simple key operations.  The following list shows
223 the functions and their key bindings which can be used in mime/viewer-mode.
224
225 \medskip
226 \begin{center}
227   \begin{tabular}{|l|l|}\hline
228     key     & function \\ \hline
229     u       & goes to the upper content \\
230             & returns to the Summary mode if the cursor is sitting on
231               the top content (*1) \\
232     p       & goes to the previous content \\
233     n       & goes to the next content \\
234     SPC     & scrolls up \\
235     M-SPC   & scrolls down \\
236     DEL     & scrolls down \\
237     RET     & goes to the next line \\
238     M-RET   & goes to the previous line \\
239     v       & playbacks a content            (*2) \\
240     e       & extracts a file from a content (*2) \\
241     C-c C-p & prints a content               (*2) \\ \hline
242   \end{tabular}
243 \end{center}
244 \medskip
245
246 \bigskip
247
248 \newcounter{asteriskcount}
249 \noindent{\bf [Note]}
250 \vspace{-1ex}
251 {\list{(*\arabic{asteriskcount})}{\usecounter{asteriskcount}\leftmargin=8ex}
252 \item Not return to the Summary mode unless tm-view has been setup using
253 tm-mh-e, tm-gnus, tm-rmail etc.
254 \item Actual playback/extract/print will be performed by a method.
255 \endlist}
256
257
258 \section{Customizing tm-gnus}
259
260 \subsection{saving articles without decoding}
261
262 By default, The articles will be saved as they appear in the buffer
263 at that time.
264
265 You can save the articles always without decoding by setting a
266 tm-gnus/set-mime-header-decoding-mode variable to nil then call a
267 function which saves the articles.
268
269 The following example shows how you can save an article without
270 decoding, preserving the current MIME header decoding mode.
271
272 \begin{verbatim}
273         (let ((mm mime/header-decoding-mode))
274           (tm-gnus/set-mime-header-decoding-mode nil)
275           (article save function)
276           (tm-gnus/set-mime-header-decoding-mode mm)
277           )
278 \end{verbatim}
279
280 The following is an example that saves the articles to a folder
281 of mh-e.
282
283 \begin{verbatim}
284 (add-hook 'gnus-Startup-hook
285           (function
286            (lambda ()
287              (setq gnus-default-article-saver
288                    (function
289                     (lambda ()
290                       (interactive)
291                       (let ((mm mime/header-decoding-mode))
292                         (tm-gnus/set-mime-header-decoding-mode nil)
293                         (gnus-Subject-save-in-folder)
294                         (tm-gnus/set-mime-header-decoding-mode mm)
295                         )))))))
296 (add-hook 'gnus-startup-hook
297           (function
298            (lambda ()
299              (setq gnus-default-article-saver
300                    (function
301                     (lambda ()
302                       (interactive)
303                       (let ((mm mime/header-decoding-mode))
304                         (tm-gnus/set-mime-header-decoding-mode nil)
305                         (gnus-summary-save-in-folder)
306                         (tm-gnus/set-mime-header-decoding-mode mm)
307                         )))))))
308 \end{verbatim}
309
310 \subsection{replying with encoded subject to an article with encoded subject}
311
312 When you reply to an article, you may want to encode the Subject field only
313 when the original article has an encoded Subject.  It can be done by
314 defining a hook as shown below.
315
316 \begin{verbatim}
317 (add-hook 'gnus-article-prepare-hook
318           (function
319            (lambda ()
320              (if (mime/exist-encoded-word-in-subject)
321                  (setq mime/no-encoding-header-fields '("X-Nsubject"))
322                (setq mime/no-encoding-header-fields '("X-Nsubject" "Subject"))
323                ))))
324 \end{verbatim}
325
326
327 \chapter{tm-view}
328
329 tm-view is a module which is used to examine the MIME messages.
330 It provides a mime/viewer-mode for that purpose.
331
332 Regarding the functions of mime/viewer-mode, refer to
333 \ref{sec:mime/viewer-mode} section.
334
335 \section{Defining Conditions of Decoding}
336
337 A mime/content-decoding-condition variable is used to define the methods
338 which will be called at decoding.  It replaces a
339 mime/content-decoding-method-alist variable of tm-view version 4.x.
340
341 A mime/content-decoding-method-alist only allowed you to define a
342 method used for each content-type/subtype.  Now a 
343 mime/content-decoding-condition variable allows you to write more
344 complicated statements to describe the more detailed conditions to determine 
345 which method is to be use.
346
347 A mime/content-decoding-condition variable is defined as a list with the
348 following syntax.
349
350 \begin{eqnarray*}
351   (condition_1 \;\; condition_2 \;\; ...)
352 \end{eqnarray*}
353
354 \noindent Each condition is an association list with the following 
355 syntax.
356
357 \begin{eqnarray*}
358   ((field-type_1 \; . \; value_1) \;\;
359   (field-type_2 \; . \; value_2) \;\; ...)
360 \end{eqnarray*}
361
362 \noindent 
363
364 For example, if you want to call the external method named tm-plain
365 to decode every text/plain type content, you can define the condition like
366
367 \begin{quote}
368   ((type . "text/plain")
369   (method "tm-plain" nil 'file 'type 'encoding 'mode 'name))
370 \end{quote}
371
372 \noindent As you notice, now you can define the arguments to pass to a
373 external method.  Refer to \ref{sec:method-arguments} section for more
374 explanation.
375
376 This condition definition will match all contents whose types are text/plain.
377 Here is an another example.
378
379 \begin{quote}
380   ((type . "text/plain")
381   (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)
382   (mode . "play"))
383 \end{quote}
384
385 \noindent This will match the content whose type is text/plain and
386 the mode is play.
387
388
389 \begin{quote}
390   ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)
391   (mode . "play"))
392 \end{quote}
393
394 \noindent This will match all contents which have a mode of play.
395
396 The conditions defined in a mime/content-decoding-condition variable
397 are examined from top to bottom.  The first matching condition
398 becomes valid and the method specified in that condition definition
399 will be executed.
400
401
402 \subsection{arguments of method}
403 \label{sec:method-arguments}
404
405 You can specify the method field of the condition definition in two 
406 different ways.
407
408 \begin{eqnarray*}
409   (method \; . \; SYMBOL)
410 \end{eqnarray*}
411
412 \noindent or
413
414 \begin{eqnarray*}
415   (method \; STRING \; FLAG \; ARGUMENT_1 \; ARGUMENT_2 \; ...)
416 \end{eqnarray*}
417
418 \noindent can be accepted.
419
420 When a symbol is specified in the method field, it will be called as
421 an internal method.
422
423 When a list is specified in the method field, it will be called as an
424 external method.  The list below shows the meaning of the parameters 
425 when the external method is specified in the method field.
426
427 \begin{description}
428 \item [STRING] name of an external method
429 \item [FLAG] if t, both the content header and the content body are
430   passed to an external method. if nil, only the content body is
431   passed to an external method.
432 \item [ARGUMENT$_x$] list of arguments passed to an external method
433 \end{description}
434
435 An argument passed to an external method can be in one of the following
436 formats.
437
438 \begin{quote}
439   \begin{tabular}{lcl}
440     STRING&:&string itself \\
441     'SYMBOL&:&value gotten using SYMBOL as a key (see below) \\
442     'STRING&:&value gotten using STRING as a key (see below)
443   \end{tabular}
444 \end{quote}
445
446 'SYMBOL can be one of the following.
447
448 \begin{quote}
449   \begin{tabular}{lcl}
450     'file&:&name of a file holding the original content \\
451     'type&:&content-type/sub-type \\
452     'encoding&:&content-transfer-encoding \\
453     'mode&:&decoding mode \\
454     'name&:&name of a file created by decode operation
455   \end{tabular}
456 \end{quote}
457
458 \noindent 'STRING is used to search a parameter of the Content-Type
459 field whose name matches with it, and pass the value of that parameter
460 to the external method. 
461
462
463 \subsection{examples}
464
465 The default definition of a mime/content-decoding-condition variable is
466 shown below.
467
468 \begin{verbatim}
469 (defvar mime/content-decoding-condition
470   '(((type . "text/plain")
471      (method "tm-plain" nil 'file 'type 'encoding 'mode 'name))
472     ((type . "text/x-latex")
473      (method "tm-latex" nil 'file 'type 'encoding 'mode 'name))
474     ((type . "audio/basic")
475      (method "tm-au"    nil 'file 'type 'encoding 'mode 'name))
476     ((type . "image/gif")
477      (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
478     ((type . "image/jpeg")
479      (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
480     ((type . "image/tiff")
481      (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
482     ((type . "image/x-tiff")
483      (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
484     ((type . "image/x-xbm")
485      (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
486     ((type . "image/x-pic")
487      (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
488     ((type . "video/mpeg")`
489      (method "tm-mpeg"  nil 'file 'type 'encoding 'mode 'name))
490     ((type . "application/octet-stream")
491      (method "tm-file"  nil 'file 'type 'encoding 'mode 'name))
492     ((type . "message/partial")
493      (method . mime/decode-message/partial-region))
494     ((method "metamail" t
495              "-m" "tm" "-x" "-d" "-z" "-e" 'file)(mode . "play"))
496     ))
497 \end{verbatim}
498
499 For example, if you want to use metamail to decode any contents,
500
501 \begin{verbatim}
502 (setq mime/content-decoding-condition
503       '(
504         ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file))
505        ))
506 \end{verbatim}
507
508 \noindent will work.
509
510 A mime/content-decoding-condition variable provides you of very flexible
511 way to define the conditions of decoding.  It can be simple if you only
512 need the a few decoding methods, while it can be very complicated if you
513 want to use the separate decoding method for each type/mode combination.
514
515
516 \section{Method Script}
517 \label{sec:method}
518
519 The methods are written in shell script.  The arguments passed from tm-view.el
520 to each method can be customized using mime/content-decoding-condition
521 variable.  If you use the tm-provided setting of
522 mime/content-decoding-condition variable, the following arguments are
523 passed to the method.
524
525 \medskip
526 \begin{center}
527   \begin{tabular}{|c|l|} \hline
528     argument & \multicolumn{1}{|c|}{ meaning }\\ \hline
529     \$1      & file name before decoded     \\
530     \$2      & Content-Type (type/sub-type) \\
531     \$3      & encoding
532     \{7bit / quoted-printable / base64 / 8bit / binary / ...\}\\
533     \$4      & decoding-mode \{play / extract / print\}           \\
534     \$5      & file name after decoded                            \\ \hline
535   \end{tabular}
536 \end{center}
537 \medskip
538
539 Exceptionally, no method is used to restore message/partial messages
540 into one message.  It is done by tm-view.el itself.
541
542
543 \section{Changing Appearance}
544
545 Each content in the preview buffer is shown in the following format.
546
547 \begin{verbatim}
548 [1 (text/plain)]
549
550 body
551 \end{verbatim}
552
553 \noindent tm-view shows one content in three separate portions.
554
555 \begin{itemize}
556 \item content subject
557 \item content header
558 \item content body
559 \end{itemize}
560
561 \noindent
562
563
564 \subsection{content subject}
565
566 A content subject indicates the beginning of a content in the preview
567 buffer.  By default, it will be shown as below.
568
569 \begin{quote}
570   [cid title (type)]
571 \end{quote}
572
573 \noindent The cid field shows the position of a content in the message.
574 It can be considered as the chapter number in the message.  The title
575 field is composed of the text string from the Subject and the
576 Content-Description field.  The type field is a copy of a
577 text string specified in the type/subtype field of the content.
578
579 You can customize how the content subject appears in the preview
580 buffer by modifying a definition of mime/make-content-subject-function
581 variable.  The tm-view provides a following definition as a default.
582
583 \begin{verbatim}
584 (defvar mime/make-content-subject-function
585   (function
586    (lambda (cid subj ctype)
587      (insert
588       (format "[%s %s (%s)]\n"
589               (if (listp cid)
590                   (mapconcat (function
591                               (lambda (num)
592                                 (format "%s" (+ num 1))
593                                 ))
594                              cid ".")
595                 "0")
596               subj (car ctype)))
597      )))
598 \end{verbatim}
599
600 \noindent The following is an example of the customization.
601
602 \begin{verbatim}
603 (setq mime/make-content-subject-function
604       (function
605        (lambda (cid subj ctype)
606          (if (not (member (car ctype) mime/default-showing-Content-Type-list))
607              (insert
608               (format "[%s %s (%s)]\n"
609                       (if (listp cid)
610                           (mapconcat (function
611                                       (lambda (num)
612                                         (format "%s" (+ num 1))
613                                         ))
614                                      cid ".")
615                         "0")
616                       subj (car ctype))))
617          )))
618 \end{verbatim}
619
620 \noindent This will show the content subjects only for the contents whose body
621 portions are to be hidden.
622
623
624 \subsection{content header}
625
626 A content header shows the header portion of a content in the preview
627 buffer.  The default setup will show no content headers.
628
629 You can customize how the content header appears in the preview
630 buffer by modifying a definition of mime/make-content-header-filter
631 variable.  The tm-view provides a following default definition.
632
633
634 \begin{verbatim}
635 (defvar mime/make-content-header-filter
636   (function
637    (lambda (cid)
638      (if (listp cid)
639          (delete-region (goto-char (point-min))
640                         (or (and (re-search-forward "^$" nil t)
641                                  (match-end 0))
642                             (point-max))
643                         )
644        )
645      )))
646 \end{verbatim}
647
648 \noindent The default setting removes all content headers
649 until it detects a blank line delimiting the headers and the body.
650 If you change a mime/make-content-header-filter variable like
651
652 \begin{verbatim}
653 (setq mime/make-content-header-filter
654   (function
655    (lambda (cid)
656     )))
657 \end{verbatim}
658
659 \noindent you will see all headers in the content header portion.
660
661
662 \subsection{content body}
663
664 According to the type of content, the body portion of the content
665 is managed by tm-view using
666
667 \begin{enumerate}
668 \item Hide
669 \item Process
670 \end{enumerate}
671
672 \noindent techniques before it is put in the preview buffer.
673
674 'Hide' is performed to prevent showing the non-text type content body
675 in the preview buffer. A mime/default-showing-Content-Type-list
676 variable defines which type of contents will NOT be hidden.  It has
677 the following default value.
678
679 \begin{verbatim}
680 (defvar mime/default-showing-Content-Type-list
681   '("text/plain" "text/richtext" "text/enriched" "text/x-latex" nil))
682 \end{verbatim}
683
684 \noindent All contents are hidden except text/plain, text/richtext,
685 text/enriched, text/x-latex, and non-MIME contents.
686
687 A content body which was not "hidden" is then "processed".  A list
688 in a mime/content-filter-alist variable will be searched looking up
689 an entry which matches with the content-type of a content.  If a matching
690 entry is found, the function defined in that entry will be called
691 to "process" a content body.
692
693 A mime/content-filter-alist variable has nil as a default value.  It
694 will have non-nil after loading tm-rich.el which contains the following
695 lines.
696
697 \begin{verbatim}
698 (aput 'mime/content-filter-alist
699       "text/enriched" (function mime/decode-text/enriched-body))
700 \end{verbatim}
701
702 \noindent This is defining a process to be done to the text/enriched
703 type content body.  A function mime/decode-text/enriched-body will
704 be called if a text/enriched body need to be "processed".
705
706
707 \section{Restrictions}
708
709 A decode-b.c file in the tm package is the source of the BASE64
710 decoder.  As it was not thoroughly tested, it may not work for you.
711 But at least you can see what it wants to do so that you can correct
712 errors in the source code. (\verb+^+\_\verb+^+;
713
714 Or you can use mmencode in the metamail package to decode the BASE64
715 encoded messages.
716
717 Use mmencode to decode the Quoted-Printable messages.  The tm package
718 does not include the decoder for Quoted-Printable.
719
720
721 \chapter{tiny-mime}
722
723 tiny-mime is a multi-lingual MIME style message header
724 encoder/decoder based on RFC 1522 for Mule, NEmacs, and NEpoch. It
725 is based on Mr. Enami's ISO-2022-JP Base64 MIME header decoder which
726 could decode only ISO-2022-JP Base64-encoded headers.   The following list 
727 shows some of the functional enhancemets I made in tiny-mime.
728
729 \begin{itemize}
730 \item unfolding at decoding
731 \item encoding/decoding multilingual character sets, such as,
732   ISO-2022-JP, ISO-2022-JP-2, ISO-2022-CN, ISO-2022-KR, ISO-8859-*,
733   US-ASCII, EUC-KR
734 \item Q-encoding
735 \item compliance with RFC 1522
736 \end{itemize}
737
738 \noindent and more.
739
740 tiny-mime is a MIME headers encoder/decoder in the tm package and used
741 by tm-view and tm-MUAs.
742
743
744 \section{mime/decode-message-header}
745
746 {\tt mime/decode-message-header} is a command to decode the MIME headers.
747 You need to load tiny-mime before you can use this command.
748
749 {\list{}{\leftmargin=8ex}\item[]
750 \par
751 M-x {\tt mime/decode-message-header}
752 \endlist}
753
754 \noindent will decode the MIME headers in the current buffer.
755
756 tm-MUAs and tm-view use this command to decode the MIME headers.
757 Therefore, it may not be required to explicitly execute this command if
758 you are using them.
759
760
761 \section{mime/decode-region}
762
763 You can decode the MIME messages within the specified region by executing
764
765 {\list{}{\leftmargin=8ex}\item[]
766 \par
767 M-x {\tt mime/decode-region}
768 \endlist}
769
770 \noindent This is useful when you want to decode the MIME headers
771 which are yanked from the referenced article.
772
773
774 \chapter{Reporting Bugs}
775
776 Please report tm bugs you find to fj.editor.emacs or send a mail to
777 tm ML:
778 \begin{center}
779   \begin{tabular}{ll}
780     tm@chamonix.jaist.ac.jp     & (Japanese or English) \\
781     tm-eng@chamonix.jaist.ac.jp & (English)
782   \end{tabular}
783 \end{center}
784
785 Via tm ML, You can report bugs of tm, obtain the latest release of tm
786 package, and discuss the future enhancements to tm.  To join tm ML,
787 send a mail to
788
789 \begin{center}
790   \begin{tabular}{ll}
791     tm-admin@chamonix.jaist.ac.jp     & (Japanese or English) \\
792     tm-eng-admin@chamonix.jaist.ac.jp & (English)
793   \end{tabular}
794 \end{center}
795
796 \noindent Since the user registration is manually done, please write
797 the mail body in human-recognizable language (\verb+^+\_\verb+^+).
798
799 \end{document}