diff man/tm/tm-view-en.texi @ 8:4b173ad71786 r19-15b5

Import from CVS: tag r19-15b5
author cvs
date Mon, 13 Aug 2007 08:47:35 +0200
parents
children 49a24b4fd526
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/tm/tm-view-en.texi	Mon Aug 13 08:47:35 2007 +0200
@@ -0,0 +1,1045 @@
+\input texinfo.tex
+@setfilename tm-view-en.info
+@settitle{tm-view 7.77 Reference Manual (English Version)}
+@titlepage
+@title tm-view 7.77 Reference Manual (English Version)
+@author MORIOKA Tomohiko <morioka@@jaist.ac.jp>
+@subtitle 1996/10/11
+@end titlepage
+@node Top, Introduction, (dir), (dir)
+@top tm-view 7.77 Reference Manual (English Version)
+
+@ifinfo
+
+This file documents tm-view, a MIME Viewer for GNU Emacs.
+@end ifinfo
+
+@menu
+* Introduction::                What is tm-view?
+* MIME display::                Structure of display in mime/viewer-mode
+* mime/viewer-mode::            Navigation in mime/viewer-mode
+* method::                      Mechanism of decoding
+* Two buffers for an article::  raw-article-buffer and preview-buffer
+* API::                         Functions to decode MIME message
+* Concept Index::               
+* Function Index::              
+* Variable Index::              
+@end menu
+
+@node Introduction, MIME display, Top, Top
+@chapter What is tm-view?
+
+The tm-view is a general MIME viewer running on GNU Emacs.@refill
+
+tm-view provides the major-mode called @code{mime/viewer-mode}
+(@ref{mime/viewer-mode}) to read MIME message for MUA.  MUA
+(@ref{(tm-en)MUA}) implementer can use it to add MIME function.@refill
+
+tm-view is a user interface kernel to view and navigate MIME message.
+tm-view drives some programs to navigate each content-type
+(@ref{(tm-en)content-type})s, they are called
+@cindex{method}@strong{method} (@ref{method}).  tm-view calls some
+programs to display each contents and headers in preview buffer, they
+are called @cindex{filter}@strong{filter} (@ref{Two buffers for an
+article}).  Method and filters are tm-view application program.  They
+expand tm-view to treat various kinds of MIME types.
+
+
+@node MIME display, mime/viewer-mode, Introduction, Top
+@chapter Structure of display in mime/viewer-mode
+
+In mime/viewer-mode (@ref{mime/viewer-mode}), following are displayed
+for each parts:@refill
+
+@example
+	[content-button]
+	(content-header)
+	
+	(content-body)
+	(content-separator)
+@end example
+
+You can change design or stop to display if you specify for each
+conditions, such as content-types.@refill
+
+Example:
+
+@example
+From: morioka@@jaist.ac.jp (MORIOKA Tomohiko)
+Subject: Re: Question
+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)]
+  How to compose MIME message in MIME-Edit mode.
+
+  Press `C-c C-x ?' then help message will be displayed:
+
+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.
+...
+
+So press `C-c C-x C-i' and specify file name you want to include.
+
+  MIME encoding for binary file is normally Base64.
+
+[2  (image/gif)]
+
+[3  (text/plain)]
+
+  In this way, it is finish a message attaching a picture.
+
+======================== A cup of Russian tea ========================
+============  * not by jam, not by marmalade, by honey *  ============
+============               MORIOKA Tomohiko               ============
+=============== Internet E-mail: <morioka@@jaist.ac.jp> ===============
+@end example
+
+
+
+@menu
+* content-button::              
+* content-header::              
+* content-body::                
+* content-separator::           
+@end menu
+
+@node content-button, content-header, MIME display, MIME display
+@section content-button
+
+content-subject displays abstract for the part.  It is placed in top of
+the part.@refill
+
+In default, it is displayed following design:
+
+@example
+        [1.3 test (text/plain)]
+@end example
+
+
+First number field represents position of a content in the part.  It is
+called @cindex{content-number}@strong{content-number}.  It can be
+considered as the chapter number in the message.@refill
+
+Second string part represents title.  It is created by following:
+
+@enumerate
+@item
+name paramater or x-name parameter in Content-Type field
+(@ref{(tm-en)Content-Type field})
+@item
+Content-Description field (@ref{(tm-en)Content-Description field}) or
+Subject field
+@item
+ filename of uuencode
+@end enumerate
+
+
+If they are not exists, space is displayed.@refill
+
+Third parenthesis part represents content-type/subtype of the part.  If
+it is non-MIME part, @code{nil} is displayed.@refill
+
+Content-button is used like icon when content-header
+(@ref{content-header}) and content-body (@ref{content-body}) are hidden.
+For example:
+
+@example
+        [2  (image/gif)]
+@end example
+
+@noindent
+if you press @kbd{v} key, GIF image is displayed.
+
+If mouse operations are available, you can press content-button by mouse
+button-2 (center button of 3 button-mouse) to play, similarly to press
+@kbd{v} key. (cf. @ref{mime/viewer-mode}) @refill
+
+By the way, it is annoying to display content-button if content-header
+is displayed.  So tm-view provides a mechanism to specify conditions
+to display content-button.
+
+
+@defvar mime-viewer/content-button-ignored-ctype-list
+
+List of content-types.@refill
+
+If content-type of a part is a member of this list, its content-button
+is not displayed.
+@end defvar
+
+
+
+@node content-header, content-body, content-button, MIME display
+@section content-header
+
+A content header displays the header portion of a part in the
+preview-buffer.  However it is annoying to display header for every
+parts, so tm-view provides a mechanism to specify its condition.@refill
+
+When the function @code{mime-viewer/header-visible-p} returns @code{t}
+for reversed-content-number of a part, content-header is
+displayed.@refill
+
+This judge function returns @code{t} when a part is root or content-type
+of its parent is a member of the variable
+@code{mime-viewer/childrens-header-showing-Content-Type-list}.@refill
+
+If you want to change this condition, please redefine it.  Notice that
+it refers variable
+@code{mime-viewer/childrens-header-showing-Content-Type-list}, however
+if you redefine function @code{mime-viewer/header-visible-p}, it may not
+work.  So if you want to redefine it, it should be refer variable
+@code{mime-viewer/childrens-header-showing-Content-Type-list}.@refill
+
+When content-header is displayed, content-header are formated by the
+program called by
+@cindex{content-header-filter}@strong{content-header-filter}.
+Content-header-filter is searched from variable
+@code{mime-viewer/content-header-filter-alist}.  Its key is major-mode
+of the raw-article-buffer (@ref{raw-article-buffer}).  If not found,
+function @code{mime-viewer/default-content-header-filter} is
+called.@refill
+
+
+@defvar mime-viewer/childrens-header-showing-Content-Type-list
+
+List of content-types.  If content-type of parent of a part is a member
+of this variable, its content-header is displayed.  Default value is
+@code{'("message/rfc822" "message/news")}.@refill
+
+This variable is referred by the function
+@code{mime-viewer/header-visible-p}.
+@end defvar
+
+
+
+@defun mime-viewer/header-visible-p rcnum cinfo  &optional  ctype
+
+Returns @code{t} if a part which reversed-content-number is @var{rcnum}
+in content-info @var{cinfo} is displayed.@refill
+
+If you know content-type, you can specify by @var{ctype}.
+@end defun
+
+
+
+@defvar mime-viewer/content-header-filter-alist
+
+Association-list whose key is major-mode of a raw-article-buffer, value
+is content-header-filter.
+@end defvar
+
+
+
+@defun mime-viewer/default-content-header-filter
+
+It is called when content-header-filter is not found in variable
+@code{mime-viewer/content-header-filter-alist}.@refill
+
+It refers @code{mime-viewer/ignored-field-regexp}.
+@end defun
+
+
+
+@defvar mime-viewer/ignored-field-list
+
+List of regular expression to represent invisible fields even if
+content-header is displayed.@refill
+
+Variable @code{mime-viewer/ignored-field-regexp} is created from
+it.@refill
+
+Please use function @code{tm:add-fields} or @code{tm:delete-fields} to
+set it.
+@end defvar
+
+
+
+@node content-body, content-separator, content-header, MIME display
+@section content-body
+
+@cindex{content-body}@strong{content-body} represents content of the
+part.@refill
+
+tm-view does not display raw content body.  For example, if a content
+has binary, it is hidden.  If a content has text/enriched, it is
+formated.  Namely content body is hidden or formated.@refill
+
+Function @code{mime-viewer/body-visible-p} is a judge function whether
+content-body of a content is displayed.  If it returns @code{nil},
+content-body is hidden.  In default, it returns non-@code{nil} when
+content-type of a part is a member of variable
+@code{mime-viewer/default-showing-Content-Type-list}.@refill
+
+When content-body of a content is displayed, content-body is formated by
+@cindex{content-filter}@strong{content-filter}.  Content-filter is
+searched from variable @code{mime-viewer/content-filter-alist}.  At this
+time, major-mode of the raw-article-buffer (@ref{raw-article-buffer}) is
+used as the key.
+
+If it is not found, function
+@code{mime-viewer/default-content-filter} is called.
+
+
+@defvar mime-viewer/default-showing-Content-Type-list
+
+List of content-type.  If content-type of a part is a member of this
+variable, its body is displayed.
+@end defvar
+
+
+
+@defun mime-viewer/body-visible-p rcnum cinfo  &optional  ctype
+
+Return non-@code{nil}, if content-type of a part is displayed.
+@var{rcnum} is reversed-content-number of a part.  @var{cinfo} is
+content-info of the message.  If you know content-type of a part, you
+can specify it as argument @var{ctype}.
+@end defun
+
+
+
+@defvar mime-viewer/content-filter-alist
+
+Association-list whose key is major-mode of a raw-article-buffer, value
+is content-filter.
+@end defvar
+
+
+
+@defun mime-viewer/default-content-filter rcnum cinfo ctype params subj
+
+It is called when content-body of a part should be displayed and
+content-filter is not found in
+@code{mime-viewer/content-filter-alist}.@refill
+
+In default, it does nothing.
+@end defun
+
+
+
+@node content-separator,  , content-body, MIME display
+@section content-separator
+
+@cindex{content-separator}@strong{content-separator} is displayed to
+represent boundary of contents.@refill
+
+Content-separator is displayed by function
+@code{mime-viewer/default-content-separator}.  In default, it displays
+line-break when content-header and content-body are not
+displayed.@refill
+
+If you want to change this condition, please redefine this function.
+
+
+@defun mime-viewer/default-content-separator rcnum cinfo ctype params subj
+
+Display content-separator.  @var{cnum} is content-number of a content.
+@var{cinfo} is content-info of the message.  @var{ctype} is content-type
+of a content.  @var{params} is Content-Type field parameters of a
+content.  @var{subj} is subject.@refill
+
+In default, it displays line-break when content-header and content-body
+are not displayed.
+@end defun
+
+
+
+@node mime/viewer-mode, method, MIME display, Top
+@chapter Navigation in mime/viewer-mode
+
+@code{mime/viewer-mode} has following functions:@refill
+
+@table @kbd
+@item @key{u}
+goes to the upper content (returns to the Summary mode if the cursor
+is sitting on the top content (*1))
+
+@item @key{p}
+goes to the previous content
+
+@item @key{n}
+goes to the next content
+
+@item @key{SPC}
+scrolls up
+
+@item @key{M-SPC}
+scrolls down
+
+@item @key{DEL}
+scrolls down
+
+@item @key{RET}
+goes to the next line
+
+@item @key{M-RET}
+goes to the previous line
+
+@item @key{<}
+goes to the beginning of message
+
+@item @key{>}
+goes to the end of message
+
+@item @key{v}
+playbacks a part (*2)
+
+@item @key{e}
+extracts a file from a part (*2)
+
+@item @key{C-c C-p}
+prints a part (*2)
+
+@item @key{f}
+displays X-Face in the message
+
+@item @key{mouse-button-2}
+drives mouse button in preview-buffer.
+
+For content-button, it playbacks a part (*2)@refill
+
+For URL-button, it drives WWW browser@refill
+
+@end table
+
+@noindent
+@strong{[Notice]}
+@quotation
+
+(*1) Not return to the Summary mode unless tm-view has been setup using
+tm-mh-e, tm-vm, gnus-mime, tm-gnus, tm-rmail etc.@refill
+
+(*2) Actual playback/extract/print will be performed by a method.
+@end quotation
+
+
+
+@node method, Two buffers for an article, mime/viewer-mode, Top
+@chapter Mechanism of decoding
+
+In @code{mime/viewer-mode}, you can do play (@kbd{v}), extract
+(@kbd{e}), or print (@kbd{C-c C-p}) for each parts.  These operations
+are called @cindex{decoding operation(s) (for a part)}@strong{decoding
+operation(s) (for a part)}.  And kind of decoding operations are called
+@cindex{decoding-mode}@strong{decoding-mode}.@refill
+
+When decoding operation is driven, tm-view calls a procedure matched for
+the condition, such as content-type (@ref{(tm-en)content-type}) of the
+part or its environment.  This procedure is called
+@cindex{method}@strong{method}.@refill
+
+There are two kinds of methods.  One is Emacs Lisp function, called
+@cindex{internal method}@strong{internal method}.  Another one is
+external program, called @cindex{external method}@strong{external
+method}.@refill
+
+Internal method operates in Emacs, so it can do carefully.@refill
+
+External method is called as asynchronous process, so Emacs does not
+wait while method is running.  So it is good for big data, such as
+audio, image or video.
+
+
+@menu
+* decoding-condition::          Setting decoding condition for parts
+* environment variables::       Environment variables
+@end menu
+
+@node decoding-condition, environment variables, method, method
+@section Setting decoding condition for parts
+
+When decoding operation is driven, tm-view calls a method matched for
+the condition searched from the variable
+@code{mime/content-decoding-condition}.@refill
+
+Variable @code{mime/content-decoding-condition} is defined as a list
+with the following syntax:@refill
+
+@lisp
+        (condition_1 condition_2 ...)
+@end lisp
+
+Each condition are association-list with the following syntax:@refill
+
+@lisp
+        ((field-type_1 . value_1)
+         (field-type_2 . value_2)
+         ...)
+@end lisp
+
+For example, if you want to call the external method named tm-plain to
+decode every text/plain (@ref{(tm-en)text/plain}) type parts, you can
+define the condition like:@refill
+
+@lisp
+        ((type . "text/plain")
+         (method "tm-plain" nil 'file 'type 'encoding 'mode 'name))
+@end lisp
+
+This condition definition will match all parts whose content-type
+(@ref{(tm-en)content-type}) are text/plain.  Here is an another
+example:@refill
+
+@lisp
+        ((type . "text/plain")
+         (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)
+         (mode . "play"))
+@end lisp
+
+This will match the part whose type is text/plain and the mode is
+play.@refill
+
+Here is an another example:@refill
+
+@lisp
+        ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)
+         (mode . "play"))
+@end lisp
+
+This will match all parts which have a mode of play.@refill
+
+The conditions defined in a variable
+@code{mime/content-decoding-condition} are examined from top to
+bottom.  The first matching condition becomes valid and the method
+specified in that condition definition will be executed.
+
+
+@menu
+* method value::                Format of method value
+* Example of decoding-condition::  
+@end menu
+
+@node method value, Example of decoding-condition, decoding-condition, decoding-condition
+@subsection Format of method value
+
+You can specify the method field of the decoding-condition definition in
+two different ways,@refill
+
+@lisp
+        (method . SYMBOL)
+@end lisp
+
+@noindent
+or
+
+@lisp
+        (method  STRING  FLAG  arg1  arg2  ...)
+@end lisp
+
+@noindent
+can be accepted.
+
+When a symbol is specified in the method field, a function whose name is
+SYMBOL will be called as an internal method.@refill
+
+When a list is specified in the method field, it will be called as an
+external method.@refill
+
+The list below shows the meaning of the parameters when the external
+method is specified in the method field.@refill
+
+@table @samp
+@item STRING
+name of an external method
+
+@item FLAG
+If @code{t}, both the content-header and the content-body
+are passed to an external method.
+
+If @code{nil}, only the content-body is passed to an external
+method.@refill
+
+@item ARGUMENTs
+list of arguments passed to an external method
+
+@end table
+
+An argument passed to an external method can be in one of the following
+formats:@refill
+
+@table @samp
+@item STRING
+string itself
+
+@item 'SYMBOL
+value gotten using SYMBOL as a key from decoding-condition
+
+@item 'STRING
+value gotten using STRING as a key from decoding-condition
+
+@end table
+
+@code{'SYMBOL} can be one of the following:@refill
+
+@table @samp
+@item 'file
+name of a file holding the original content
+
+@item 'type
+content-type/sub-type of Content-Type field
+
+@item 'encoding
+field body of Content-Transfer-Encoding field
+
+@item 'mode
+decoding-mode
+
+@item 'name
+name of a file created by decode operation
+
+@end table
+
+
+@code{'STRING} is used to search a parameter of the Content-Type
+field whose name matches with it, and pass the value of that parameter
+to the external method.
+
+
+@node Example of decoding-condition,  , method value, decoding-condition
+@subsection Example of decoding-condition
+
+Following is an example of decoding-condition:
+
+@lisp
+(defvar mime/content-decoding-condition
+  '(((type . "text/plain")
+     (method "tm-plain" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "text/x-latex")
+     (method "tm-latex" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "audio/basic")
+     (method "tm-au"    nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/gif")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/jpeg")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/tiff")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/x-tiff")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/x-xbm")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "image/x-pic")
+     (method "tm-image" nil 'file 'type 'encoding 'mode 'name))
+    ((type . "video/mpeg")`
+     (method "tm-mpeg"  nil 'file 'type 'encoding 'mode 'name))
+    ((type . "application/octet-stream")
+     (method "tm-file"  nil 'file 'type 'encoding 'mode 'name))
+    ((type . "message/partial")
+     (method . mime/decode-message/partial-region))
+    ((method "metamail" t
+             "-m" "tm" "-x" "-d" "-z" "-e" 'file)(mode . "play"))
+    ))
+@end lisp
+
+
+For example, if you want to use metamail to decode any contents,
+
+@lisp
+(setq mime/content-decoding-condition
+      '(
+        ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file))
+       ))
+@end lisp
+
+@noindent
+will work.
+
+Variable @code{mime/content-decoding-condition} provides you of very
+flexible way to define the conditions of decoding.  It can be simple if
+you only need the a few decoding methods, while it can be very
+complicated if you want to use the separate decoding method for each
+type/mode combination.@refill
+
+Following function may be useful to set decoding-condition.  It is a
+function of @file{tl-atype.el}.
+
+
+@defun set-atype symbol alist
+
+Add condition @var{alist} to @var{symbol}.
+
+@noindent
+@strong{[Example]}
+@quotation
+
+@lisp
+(set-atype 'mime/content-decoding-condition
+	   '((type . "message/external-body")
+	     ("access-type" . "anon-ftp")
+	     (method . mime/decode-message/external-ftp)
+	     ))
+@end lisp
+@end quotation
+@end defun
+
+
+
+@node environment variables,  , decoding-condition, method
+@section Environment variables
+
+Standard methods of tm-view reference some environment variables.  You
+can specify them to customize.
+
+@table @var
+@item TM_TMP_DIR
+Directory for temporary files or extracted files.  If it is omitted,
+@file{/tmp/} is used.
+
+@item VIDEO_DITHER
+Dither for mpeg_play.  If it is omitted, `gray' is used.
+
+@item TM_WWW_BROWSER
+WWW browser name.  If it is omitted, `netscape' is used.
+
+@end table
+
+
+
+@node Two buffers for an article, API, method, Top
+@chapter raw-article-buffer and preview-buffer
+
+tm-view managements two buffers, one is for raw message called
+@cindex{raw-article-buffer}@strong{raw-article-buffer}, another one is
+to preview for user called
+@cindex{preview-buffer}@strong{preview-buffer}.  major-mode of
+raw-article-buffer is same as major-mode for article of original MUA,
+major-mode of preview-buffer is @code{mime/viewer-mode}
+(@ref{mime/viewer-mode}).@refill
+
+When called @code{mime/viewer-mode}, tm-view analyzes
+raw-article-buffer, and sets its result to the variable
+@code{mime::article/content-info}.@refill
+
+After that, tm-view create a preview-buffer corresponded to the
+raw-article-buffer.  As this time, tm-view modifies header and body of
+each parts of the message by specified conditions.  Filter program for
+header is called @cindex{header-filter}@strong{header-filter}
+(@ref{content-header}), filter program for body is called
+@cindex{content-filter}@strong{content-filter} (@ref{content-body}), and
+they are called @cindex{filter}@strong{filter}.@refill
+
+When preview-buffer is made, buffer local variable of preview-buffer
+@code{mime::preview/content-list} is made to register structure of
+preview-buffer.  tm-view manages message by
+@code{mime::article/content-info} in raw-article-buffer and
+@code{mime::preview/content-list} in preview-buffer.@refill
+
+@noindent
+@strong{[Notice]}
+@quotation
+In this document, I call ``content-type'' as content-type/subtype of
+Content-Type field.
+@end quotation
+
+
+
+@menu
+* raw-article-buffer::          buffer local variables of raw-article-buffer
+* preview-buffer::              Buffer local variables of preview-buffer
+@end menu
+
+@node raw-article-buffer, preview-buffer, Two buffers for an article, Two buffers for an article
+@section buffer local variables of raw-article-buffer
+
+@deffn{Structure} mime::content-info rcnum point-min point-max type parameters encoding children
+
+structure to represent MIME content in raw-article-buffer.  It is called
+by @cindex{content-info}@strong{content-info}.@refill
+
+Please use reference function @code{mime::content-info/SLOT-NAME} to
+reference slot of content-info.  Their argument is only
+content-info.@refill
+
+Following is a list of slots of the structure:
+
+@table @var
+@item rcnum
+``reversed content-number'' (list)
+
+@item point-min
+beginning point of region in raw-article-buffer
+
+@item point-max
+end point of region in raw-article-buffer
+
+@item type
+content-type/sub-type (string or nil)
+
+@item parameters
+parameter of Content-Type field (association list)
+
+@item encoding
+Content-Transfer-Encoding (string or nil)
+
+@item children
+parts included in this part (list of content-infos)
+
+@end table
+
+If a part includes other parts in its contents, such as multipart or
+message/rfc822, content-infos of other parts are included in
+@var{children}, so content-info become a tree.
+@end deffn
+
+
+@defvar mime::article/content-info
+
+result of MIME parsing of raw-article-buffer (content-info)
+@end defvar
+
+
+@defvar mime::article/preview-buffer
+
+preview-buffer corresponded by this buffer
+@end defvar
+
+
+@defun mime-article/point-content-number point  &optional  cinfo
+
+In a region managed by content-info @var{cinfo}, it returns
+content-number corresponded by @var{point}.@refill
+
+If @var{cinfo} is omitted, @code{mime::article/content-info} is used as
+default value.
+@end defun
+
+
+@defun mime-article/rcnum-to-cinfo rcnum  &optional  cinfo
+
+In a region managed by content-info @var{cinfo}, it returns content-info
+corresponded by reversed-content-number @var{rcnum}.@refill
+
+If @var{cinfo} is omitted, @code{mime::article/content-info} is used as
+default value.
+@end defun
+
+
+@defun mime-article/cnum-to-cinfo rcnum  &optional  cinfo
+
+In a region managed by content-info @var{cinfo}, it returns content-info
+corresponded by content-number @var{rcnum}.@refill
+
+If @var{cinfo} is omitted, @code{mime::article/content-info} is used as
+default value.
+@end defun
+
+
+@defun mime/flatten-content-info  &optional  cinfo
+
+It returns flatten list of content-info from content-info @var{cinfo}
+tree.@refill
+
+If @var{cinfo} is omitted, @code{mime::article/content-info} is used as
+default value.
+@end defun
+
+
+
+@node preview-buffer,  , raw-article-buffer, Two buffers for an article
+@section Buffer local variables of preview-buffer
+
+@defvar mime::preview/mother-buffer
+
+Mother buffer of this preview-buffer.
+@end defvar
+
+
+@deffn{Structure} mime::preview-content-info point-min point-max buffer content-info
+
+structure to represent MIME content in preview-buffer.  It is called by
+@cindex{preview-content-info}@strong{preview-content-info}.@refill
+
+Please use reference function
+@code{mime::preview-content-info/SLOT-NAME} to reference slot of
+preview-content-info.  Their argument is only
+preview-content-info.@refill
+
+Following is a list of slots of the structure:
+
+@table @var
+@item point-min
+beginning point of region in preview-buffer
+
+@item  point-max
+end point of region in preview-buffer
+
+@item buffer
+raw-article-buffer corresponding a part
+
+@item content-info
+content-info corresponding a part
+
+@end table
+@end deffn
+
+
+
+@defvar mime::preview/content-list
+
+List of preview-content-info to represent structure of this
+preview-buffer.
+@end defvar
+
+
+
+@defvar mime::preview/article-buffer
+
+raw-article-buffer corresponded by this preview-buffer.
+@end defvar
+
+
+
+@defvar mime::preview/original-major-mode
+
+major-mode of original buffer.
+@end defvar
+
+
+
+@defvar mime::preview/original-window-configuration
+
+window-configuration just before made this preview-buffer.
+@end defvar
+
+
+
+@defun mime-preview/point-pcinfo point  &optional  pcl
+
+In a region of preview-buffer managed by preview-content-info @var{pcl},
+it returns preview-content-info corresponded by @var{point}.@refill
+
+If @var{cinfo} is omitted, @code{mime::preview/content-list} is used.
+@end defun
+
+
+
+@node API, Concept Index, Two buffers for an article, Top
+@chapter Functions to decode MIME message
+
+tm-view provides some available functions to decode and navigate MIME
+message to each MUA (@ref{(tm-en)MUA})s.@refill
+
+There are 2 kinds of functions, one is for MIME preview, another one is
+to decode RFC 1522 encoded-word (@ref{(tm-en)encoded-word}).
+
+
+@menu
+* API about MIME preview::      Function to preview MIME message
+* encoded-word decoding::       encoded-word decoder
+@end menu
+
+@node API about MIME preview, encoded-word decoding, API, API
+@section Function to preview MIME message
+
+
+@deffn{Command} mime/viewer-mode &optional  mother ctl encoding ibuf obuf mother-keymap
+
+Parse @var{ibuf} as a MIME message, and create preview-buffer into
+@var{obuf} to display to user, then enter @code{mime/viewer-mode}
+(@ref{mime/viewer-mode}).@refill
+
+If @var{ibuf} is omitted, current buffer is used.@refill
+
+@var{mother} is used to specify original raw-article-buffer.  It may be
+useful when a raw-article-buffer is assembled from message/partial
+messages.@refill
+
+@var{ctl} is used to specify Content-Type field
+(@ref{(tm-en)Content-Type field}) information.  Its format is output
+format of @code{mime/Content-Type}.  When @var{ctl} is specified,
+tm-view uses it instead of Content-Type field of the
+raw-article-buffer.@refill
+
+@var{encoding} is used to specify field-body of
+Content-Transfer-Encoding field.  When is is specified, tm-view uses it
+instead of Content-Type field of the raw-article-buffer.@refill
+
+If @var{mother-keymap} is specified, keymap of @code{mime/viewer-mode}
+includes it.
+@end deffn
+
+
+
+@node encoded-word decoding,  , API about MIME preview, API
+@section encoded-word decoder
+
+tm-view has functions to decode RFC 1522 encoded-word
+(@ref{(tm-en)encoded-word}).
+
+
+@deffn{Command} mime/decode-message-header
+
+It decodes encoded-words in message header of current buffer.@refill
+
+If an encoded-word is broken or invalid, or it has non supported MIME
+charset (@ref{(tm-en)MIME charset}), it is not decoded.
+@end deffn
+
+
+
+@deffn{Command} mime-eword/decode-region start end  &optional  unfolding must-unfold
+
+It decodes encoded-words in region @var{start} to @var{end}.@refill
+
+If an encoded-word is broken or invalid, or it has non supported MIME
+charset (@ref{(tm-en)MIME charset}), it is not decoded.@refill
+
+If @var{unfolding} is non-nil, it unfolds folded fields.@refill
+
+If @var{must-fold} is non-nil and decoded result of an encoded-word has
+folding or raw CR or LF, it unfolds or delete raw CR or LF.
+@end deffn
+
+
+
+@defun mime-eword/decode-string string  &optional  must-unfold
+
+It decodes encoded-words in @var{string} and returns decoded
+string.@refill
+
+If an encoded-word is broken or invalid, or it has non supported MIME
+charset (@ref{(tm-en)MIME charset}), it is not decoded.@refill
+
+If @var{string} is folded, it unfolds @var{string} before
+decoding.@refill
+
+If @var{must-fold} is non-nil and decoded result of an encoded-word has
+folding or raw CR or LF, it unfolds or delete raw CR or LF.
+@end defun
+
+
+
+@node Concept Index, Function Index, API, Top
+@chapter Concept Index
+
+@printindex cp
+
+@node Function Index, Variable Index, Concept Index, Top
+@chapter Function Index
+
+@printindex fn
+
+@node Variable Index,  , Function Index, Top
+@chapter Variable Index
+
+@printindex vr
+@bye