Mercurial > hg > xemacs-beta
diff man/tm/tm-view-en.sgml @ 74:54cc21c15cbb r20-0b32
Import from CVS: tag r20-0b32
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:04:33 +0200 |
parents | |
children | c0c698873ce1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/man/tm/tm-view-en.sgml Mon Aug 13 09:04:33 2007 +0200 @@ -0,0 +1,994 @@ +<!doctype sinfo system> +<!-- $Id: tm-view-en.sgml,v 1.1.1.1 1996/12/21 20:51:39 steve Exp $ --> +<head> +<title>tm-view 7.77 Reference Manual (English Version) +<author>MORIOKA Tomohiko <mail>morioka@jaist.ac.jp</mail> +<date>1996/10/11 + +<toc> +</head> + +<body> + +<abstract> +<p> +This file documents tm-view, a MIME Viewer for GNU Emacs. +</abstract> + + +<h1> What is tm-view? +<node> Introduction +<p> +The tm-view is a general MIME viewer running on GNU Emacs. +<p> +tm-view provides the major-mode called <a +node="mime/viewer-mode"><code>mime/viewer-mode</code> </a> to read +MIME message for MUA. <a file="tm-en" node="MUA">MUA</a> implementer +can use it to add MIME function. +<p> +tm-view is a user interface kernel to view and navigate MIME message. +tm-view drives some programs to navigate each <dref +file="tm-en">content-type</dref>s, they are called <a +node="method"><concept>method</concept></a>. tm-view calls some +programs to display each contents and headers in preview buffer, they +are called <a node="Two buffers for an +article"><concept>filter</concept></a>. Method and filters are +tm-view application program. They expand tm-view to treat various +kinds of MIME types. + + +<h1> Structure of display in mime/viewer-mode +<node> MIME display +<p> +In <a node="mime/viewer-mode">mime/viewer-mode</a>, following are +displayed for each parts: +<p> +<verb> + [content-button] + (content-header) + + (content-body) + (content-separator) +</verb> +<p> +You can change design or stop to display if you specify for each +conditions, such as content-types. +<p> +Example: + +<verb> +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> =============== +</verb> + + +<h2> content-button +<node> content-button +<p> +content-subject displays abstract for the part. It is placed in top +of the part. +<p> +In default, it is displayed following design: + +<verb> + [1.3 test (text/plain)] +</verb> + +<p> +First number field represents position of a content in the part. It +is called <concept>content-number</concept>. It can be considered as +the chapter number in the message. +<p> +Second string part represents title. It is created by following: + +<ol> +<li>name paramater or x-name parameter in <dref +file="tm-en">Content-Type field</dref> +</li> +<li><dref file="tm-en">Content-Description field</dref> or Subject +field +</li> +<li> filename of uuencode +</ol> + +<p> +If they are not exists, space is displayed. +<p> +Third parenthesis part represents content-type/subtype of the part. +If it is non-MIME part, <code>nil</code> is displayed. +<p> +Content-button is used like icon when <dref>content-header</dref> and +<dref>content-body</dref> are hidden. For example: + +<verb> + [2 (image/gif)] +</verb> + +<noindent> +if you press <kbd>v</kbd> key, GIF image is displayed. +<p> +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</kbd> key. <cf node="mime/viewer-mode"> +<p> +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 name="mime-viewer/content-button-ignored-ctype-list"> +<p> +List of content-types. +<p> +If content-type of a part is a member of this list, its content-button +is not displayed. +</defvar> + + +<h2> content-header +<node> content-header +<p> +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. +<p> +When the function <code>mime-viewer/header-visible-p</code> returns +<code>t</code> for reversed-content-number of a part, content-header +is displayed. +<p> +This judge function returns <code>t</code> 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</code>. +<p> +If you want to change this condition, please redefine it. Notice that +it refers variable +<code>mime-viewer/childrens-header-showing-Content-Type-list</code>, +however if you redefine function +<code>mime-viewer/header-visible-p</code>, 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</code>. +<p> +When content-header is displayed, content-header are formated by the +program called by <concept>content-header-filter</concept>. +Content-header-filter is searched from variable +<code>mime-viewer/content-header-filter-alist</code>. Its key is +major-mode of the <a node="raw-article-buffer">raw-article-buffer</a>. +If not found, function +<code>mime-viewer/default-content-header-filter</code> is called. +<p> + +<defvar name="mime-viewer/childrens-header-showing-Content-Type-list"> +<p> +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")</code>. +<p> +This variable is referred by the function +<code>mime-viewer/header-visible-p</code>. +</defvar> + + +<defun name="mime-viewer/header-visible-p"> +<args> rcnum cinfo <opts> ctype +<p> +Returns <code>t</code> if a part which reversed-content-number is +<var>rcnum</var> in content-info <var>cinfo</var> is displayed. +<p> +If you know content-type, you can specify by <var>ctype</var>. +</defun> + + +<defvar name="mime-viewer/content-header-filter-alist"> +<p> +Association-list whose key is major-mode of a raw-article-buffer, +value is content-header-filter. +</defvar> + + +<defun name="mime-viewer/default-content-header-filter"> +<p> +It is called when content-header-filter is not found in variable +<code>mime-viewer/content-header-filter-alist</code>. +<p> +It refers <code>mime-viewer/ignored-field-regexp</code>. +</defun> + + +<defvar name="mime-viewer/ignored-field-list"> +<p> +List of regular expression to represent invisible fields even if +content-header is displayed. +<p> +Variable <code>mime-viewer/ignored-field-regexp</code> is created from +it. +<p> +Please use function <code>tm:add-fields</code> or +<code>tm:delete-fields</code> to set it. +</defvar> + + +<h2> content-body +<node> content-body +<p> +<concept>content-body</concept> represents content of the part. +<p> +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. +<p> +Function <code>mime-viewer/body-visible-p</code> is a judge function +whether content-body of a content is displayed. If it returns +<code>nil</code>, content-body is hidden. In default, it returns +non-<code>nil</code> when content-type of a part is a member of +variable <code>mime-viewer/default-showing-Content-Type-list</code>. +<p> +When content-body of a content is displayed, content-body is formated +by <concept>content-filter</concept>. Content-filter is searched from +variable <code>mime-viewer/content-filter-alist</code>. At this time, +major-mode of the <dref>raw-article-buffer</dref> is used as the key. + +If it is not found, function +<code>mime-viewer/default-content-filter</code> is called. + + +<defvar name="mime-viewer/default-showing-Content-Type-list"> +<p> +List of content-type. If content-type of a part is a member of this +variable, its body is displayed. +</defvar> + + +<defun name="mime-viewer/body-visible-p"> +<args> rcnum cinfo <opts> ctype +<p> +Return non-<code>nil</code>, if content-type of a part is displayed. +<var>rcnum</var> is reversed-content-number of a part. +<var>cinfo</var> is content-info of the message. If you know +content-type of a part, you can specify it as argument +<var>ctype</var>. +</defun> + + +<defvar name="mime-viewer/content-filter-alist"> +<p> +Association-list whose key is major-mode of a raw-article-buffer, +value is content-filter. +</defvar> + + +<defun name="mime-viewer/default-content-filter"> +<args> rcnum cinfo ctype params subj +<p> +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</code>. +<p> +In default, it does nothing. +</defun> + + +<h2> content-separator +<node> content-separator +<p> +<concept>content-separator</concept> is displayed to represent +boundary of contents. +<p> +Content-separator is displayed by function +<code>mime-viewer/default-content-separator</code>. In default, it +displays line-break when content-header and content-body are not +displayed. +<p> +If you want to change this condition, please redefine this function. + + +<defun name="mime-viewer/default-content-separator"> +<args> rcnum cinfo ctype params subj +<p> +Display content-separator. <var>cnum</var> is content-number of a +content. <var>cinfo</var> is content-info of the message. +<var>ctype</var> is content-type of a content. <var>params</var> is +Content-Type field parameters of a content. <var>subj</var> is +subject. +<p> +In default, it displays line-break when content-header and +content-body are not displayed. +</defun> + + +<h1> Navigation in mime/viewer-mode +<node> mime/viewer-mode +<p> +<code>mime/viewer-mode</code> has following functions: +<p> +<kl> +<kt>u +<kd> +goes to the upper content (returns to the Summary mode if the cursor +is sitting on the top content (*1)) +</kd> +<kt>p +<kd> +goes to the previous content +</kd> +<kt>n +<kd> +goes to the next content +</kd> +<kt>SPC +<kd> +scrolls up +</kd> +<kt>M-SPC +<kd> +scrolls down +</kd> +<kt>DEL +<kd> +scrolls down +</kd> +<kt>RET +<kd> +goes to the next line +</kd> +<kt>M-RET +<kd> +goes to the previous line +</kd> +<kt>< +<kd> +goes to the beginning of message +</kd> +<kt>> +<kd> +goes to the end of message +</kd> +<kt>v +<kd> +playbacks a part (*2) +</kd> +<kt>e +<kd> +extracts a file from a part (*2) +</kd> +<kt>C-c C-p +<kd> +prints a part (*2) +</kd> +<kt>f +<kd> +displays X-Face in the message +</kd> +<kt>mouse-button-2 +<kd> +drives mouse button in preview-buffer. +<p> +For content-button, it playbacks a part (*2) +<p> +For URL-button, it drives WWW browser +</kd> +</kl> +<p> +<memo title="Notice"> +<p> +(*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. +<p> +(*2) Actual playback/extract/print will be performed by a method. +</memo> + + +<h1> Mechanism of decoding +<node> method +<p> +In <code>mime/viewer-mode</code>, you can do play (<kbd>v</kbd>), +extract (<kbd>e</kbd>), or print (<kbd>C-c C-p</kbd>) for each parts. +These operations are called <concept>decoding operation(s) (for a +part)</concept>. And kind of decoding operations are called +<concept>decoding-mode</concept>. +<p> +When decoding operation is driven, tm-view calls a procedure matched +for the condition, such as <dref file="tm-en">content-type</dref> of +the part or its environment. This procedure is called +<concept>method</concept>. +<p> +There are two kinds of methods. One is Emacs Lisp function, called +<concept>internal method</concept>. Another one is external program, +called <concept>external method</concept>. +<p> +Internal method operates in Emacs, so it can do carefully. +<p> +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. + + +<h2> Setting decoding condition for parts +<node> decoding-condition +<p> +When decoding operation is driven, tm-view calls a method matched for +the condition searched from the variable +<code>mime/content-decoding-condition</code>. +<p> +Variable <code>mime/content-decoding-condition</code> is defined as a +list with the following syntax: +<p> +<lisp> + (condition_1 condition_2 ...) +</lisp> +<p> +Each condition are association-list with the following syntax: +<p> +<lisp> + ((field-type_1 . value_1) + (field-type_2 . value_2) + ...) +</lisp> +<p> +For example, if you want to call the external method named tm-plain to +decode every <dref file="tm-en">text/plain</dref> type parts, you can +define the condition like: +<p> +<lisp> + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)) +</lisp> +<p> +This condition definition will match all parts whose <dref +file="tm-en">content-type</dref> are text/plain. Here is an another +example: +<p> +<lisp> + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name) + (mode . "play")) +</lisp> +<p> +This will match the part whose type is text/plain and the mode is +play. +<p> +Here is an another example: +<p> +<lisp> + ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file) + (mode . "play")) +</lisp> +<p> +This will match all parts which have a mode of play. +<p> +The conditions defined in a variable +<code>mime/content-decoding-condition</code> are examined from top to +bottom. The first matching condition becomes valid and the method +specified in that condition definition will be executed. + + +<h3> Format of method value +<node> method value +<p> +You can specify the method field of the decoding-condition definition +in two different ways, +<p> +<lisp> + (method . SYMBOL) +</lisp> +<p> +<noindent> +or +<p> +<lisp> + (method STRING FLAG arg1 arg2 ...) +</lisp> +<p> +<noindent> +can be accepted. +<p> +When a symbol is specified in the method field, a function whose name +is SYMBOL will be called as an internal method. +<p> +When a list is specified in the method field, it will be called as an +external method. +<p> +The list below shows the meaning of the parameters when the external +method is specified in the method field. +<p> +<dl> +<dt>STRING +<dd>name of an external method +</dd> +<dt>FLAG +<dd>If <code>t</code>, both the content-header and the content-body +are passed to an external method. +<p> +If <code>nil</code>, only the content-body is passed to an external +method. +</dd> +<dt>ARGUMENTs +<dd>list of arguments passed to an external method +</dd> +</dl> +<p> +An argument passed to an external method can be in one of the +following formats: +<p> +<dl> +<dt>STRING +<dd>string itself +</dd> +<dt>'SYMBOL +<dd>value gotten using SYMBOL as a key from decoding-condition +</dd> +<dt>'STRING +<dd>value gotten using STRING as a key from decoding-condition +</dd> +</dl> +<p> +<code>'SYMBOL</code> can be one of the following: +<p> +<dl> +<dt>'file +<dd>name of a file holding the original content +</dd> +<dt>'type +<dd>content-type/sub-type of Content-Type field +</dd> +<dt>'encoding +<dd>field body of Content-Transfer-Encoding field +</dd> +<dt>'mode +<dd>decoding-mode +</dd> +<dt>'name +<dd>name of a file created by decode operation +</dd> +</dl> + +<p> +<code>'STRING</code> 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. + + +<h3> Example of decoding-condition +<node> Example of decoding-condition +<p> +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")) + )) +</lisp> + +<p> +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)) + )) +</lisp> + +<noindent> +will work. +<p> +Variable <code>mime/content-decoding-condition</code> 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. +<p> +Following function may be useful to set decoding-condition. It is a +function of <file>tl-atype.el</file>. + + +<defun name="set-atype"> +<args> symbol alist +<p> +Add condition <var>alist</var> to <var>symbol</var>. + +<memo title="Example"> +<p> +<lisp> +(set-atype 'mime/content-decoding-condition + '((type . "message/external-body") + ("access-type" . "anon-ftp") + (method . mime/decode-message/external-ftp) + )) +</lisp> +</memo> +</defun> + + +<h2> Environment variables +<node> environment variables +<p> +Standard methods of tm-view reference some environment variables. You +can specify them to customize. + +<vl> +<dt>TM_TMP_DIR +<dd> +Directory for temporary files or extracted files. If it is omitted, +<file>/tmp/</file> is used. +</dd> +<dt>VIDEO_DITHER +<dd> +Dither for mpeg_play. If it is omitted, `gray' is used. +</dd> +<dt>TM_WWW_BROWSER +<dd> +WWW browser name. If it is omitted, `netscape' is used. +</vl> + + +<h1> raw-article-buffer and preview-buffer +<node> Two buffers for an article +<p> +tm-view managements two buffers, one is for raw message called +<concept>raw-article-buffer</concept>, another one is to preview for +user called <concept>preview-buffer</concept>. major-mode of +raw-article-buffer is same as major-mode for article of original MUA, +major-mode of preview-buffer is <a +node="mime/viewer-mode"><code>mime/viewer-mode</code></a>. +<p> +When called <code>mime/viewer-mode</code>, tm-view analyzes +raw-article-buffer, and sets its result to the variable +<code>mime::article/content-info</code>. +<p> +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 <a +node="content-header"><concept>header-filter</concept></a>, filter +program for body is called <a +node="content-body"><concept>content-filter</concept></a>, and they +are called <concept>filter</concept>. +<p> +When preview-buffer is made, buffer local variable of preview-buffer +<code>mime::preview/content-list</code> is made to register structure +of preview-buffer. tm-view manages message by +<code>mime::article/content-info</code> in raw-article-buffer and +<code>mime::preview/content-list</code> in preview-buffer. +<p> +<memo title="Notice"> +In this document, I call ``content-type'' as content-type/subtype of +Content-Type field. +</memo> + + +<h2> buffer local variables of raw-article-buffer +<node> raw-article-buffer +<p> +<define type="Structure" name="mime::content-info"> +<args> rcnum point-min point-max type parameters encoding children +<p> +structure to represent MIME content in raw-article-buffer. It is +called by <concept>content-info</concept>. +<p> +Please use reference function +<code>mime::content-info/SLOT-NAME</code> to reference slot of +content-info. Their argument is only content-info. +<p> +Following is a list of slots of the structure: + +<vl> +<dt>rcnum<dd>``reversed content-number'' (list) +</dd> +<dt>point-min<dd>beginning point of region in raw-article-buffer +</dd> +<dt>point-max<dd>end point of region in raw-article-buffer +</dd> +<dt>type<dd>content-type/sub-type (string or nil) +</dd> +<dt>parameters<dd>parameter of Content-Type field (association list) +</dd> +<dt>encoding<dd>Content-Transfer-Encoding (string or nil) +</dd> +<dt>children<dd>parts included in this part (list of content-infos) +</dd> +</vl> +<p> +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</var>, so content-info become a tree. +</define> + +<defvar name="mime::article/content-info"> +<p> +result of MIME parsing of raw-article-buffer (content-info) +</defvar> + +<defvar name="mime::article/preview-buffer"> +<p> +preview-buffer corresponded by this buffer +</defvar> + +<defun name="mime-article/point-content-number"> +<args> point <opts> cinfo +<p> +In a region managed by content-info <var>cinfo</var>, it returns +content-number corresponded by <var>point</var>. +<p> +If <var>cinfo</var> is omitted, +<code>mime::article/content-info</code> is used as default value. +</defun> + +<defun name="mime-article/rcnum-to-cinfo"> +<args> rcnum <opts> cinfo +<p> +In a region managed by content-info <var>cinfo</var>, it returns +content-info corresponded by reversed-content-number <var>rcnum</var>. +<p> +If <var>cinfo</var> is omitted, +<code>mime::article/content-info</code> is used as default value. +</defun> + +<defun name="mime-article/cnum-to-cinfo"> +<args> rcnum <opts> cinfo +<p> +In a region managed by content-info <var>cinfo</var>, it returns +content-info corresponded by content-number <var>rcnum</var>. +<p> +If <var>cinfo</var> is omitted, +<code>mime::article/content-info</code> is used as default value. +</defun> + +<defun name="mime/flatten-content-info"> +<args> <opts> cinfo +<p> +It returns flatten list of content-info from content-info +<var>cinfo</var> tree. +<p> +If <var>cinfo</var> is omitted, +<code>mime::article/content-info</code> is used as default value. +</defun> + + +<h2> Buffer local variables of preview-buffer +<node> preview-buffer +<p> +<defvar name="mime::preview/mother-buffer"> +<p> +Mother buffer of this preview-buffer. +</defvar> + +<define type="Structure" name="mime::preview-content-info"> +<args> point-min point-max buffer content-info +<p> +structure to represent MIME content in preview-buffer. It is called +by <concept>preview-content-info</concept>. +<p> +Please use reference function +<code>mime::preview-content-info/SLOT-NAME</code> to reference slot of +preview-content-info. Their argument is only preview-content-info. +<p> +Following is a list of slots of the structure: + +<vl> +<dt>point-min<dd>beginning point of region in preview-buffer +</dd> +<dt> point-max<dd>end point of region in preview-buffer +</dd> +<dt>buffer<dd>raw-article-buffer corresponding a part +</dd> +<dt>content-info<dd>content-info corresponding a part +</dd> +</vl> +</define> + + +<defvar name="mime::preview/content-list"> +<p> +List of preview-content-info to represent structure of this +preview-buffer. +</defvar> + + +<defvar name="mime::preview/article-buffer"> +<p> +raw-article-buffer corresponded by this preview-buffer. +</defvar> + + +<defvar name="mime::preview/original-major-mode"> +<p> +major-mode of original buffer. +</defvar> + + +<defvar name="mime::preview/original-window-configuration"> +<p> +window-configuration just before made this preview-buffer. +</defvar> + + +<defun name="mime-preview/point-pcinfo"> +<args> point <opts> pcl +<p> +In a region of preview-buffer managed by preview-content-info +<var>pcl</var>, it returns preview-content-info corresponded by +<var>point</var>. +<p> +If <var>cinfo</var> is omitted, +<code>mime::preview/content-list</code> is used. +</defun> + + +<h1> Functions to decode MIME message +<node> API +<p> +tm-view provides some available functions to decode and navigate MIME +message to each <a file="tm-en" node="MUA">MUA</a>s. +<p> +There are 2 kinds of functions, one is for MIME preview, another one +is to decode RFC 1522 <dref file="tm-en">encoded-word</dref>. + + +<h2> Function to preview MIME message +<node> API about MIME preview +<p> + +<define type="Command" name="mime/viewer-mode"> +<opts> mother ctl encoding ibuf obuf mother-keymap +<p> +Parse <var>ibuf</var> as a MIME message, and create preview-buffer +into <var>obuf</var> to display to user, then enter <a +node="mime/viewer-mode"><code>mime/viewer-mode</code></a>. +<p> +If <var>ibuf</var> is omitted, current buffer is used. +<p> +<var>mother</var> is used to specify original raw-article-buffer. It +may be useful when a raw-article-buffer is assembled from +message/partial messages. +<p> +<var>ctl</var> is used to specify <dref file="tm-en">Content-Type +field</dref> information. Its format is output format of +<code>mime/Content-Type</code>. When <var>ctl</var> is specified, +tm-view uses it instead of Content-Type field of the +raw-article-buffer. +<p> +<var>encoding</var> 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. +<p> +If <var>mother-keymap</var> is specified, keymap of +<code>mime/viewer-mode</code> includes it. +</define> + + +<h2> encoded-word decoder +<node> encoded-word decoding +<p> +tm-view has functions to decode RFC 1522 <dref +file="tm-en">encoded-word</dref>. + + +<define type="Command" name="mime/decode-message-header"> +<p> +It decodes encoded-words in message header of current buffer. +<p> +If an encoded-word is broken or invalid, or it has non supported <a +file="tm-en" node="MIME charset">MIME charset</a>, it is not decoded. +</define> + + +<define type="Command" name="mime-eword/decode-region"> +<args> start end <opts> unfolding must-unfold +<p> +It decodes encoded-words in region <var>start</var> to <var>end</var>. +<p> +If an encoded-word is broken or invalid, or it has non supported <a +file="tm-en" node="MIME charset">MIME charset</a>, it is not decoded. +<p> +If <var>unfolding</var> is non-nil, it unfolds folded fields. +<p> +If <var>must-fold</var> 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. +</define> + + +<defun name="mime-eword/decode-string"> +<args> string <opts> must-unfold +<p> +It decodes encoded-words in <var>string</var> and returns decoded +string. +<p> +If an encoded-word is broken or invalid, or it has non supported <a +file="tm-en" node="MIME charset">MIME charset</a>, it is not decoded. +<p> +If <var>string</var> is folded, it unfolds <var>string</var> before +decoding. +<p> +If <var>must-fold</var> 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. +</defun> + + +<h1> Concept Index +<node> Concept Index + +<cindex> + + +<h1> Function Index +<node> Function Index + +<findex> + + +<h1> Variable Index +<node> Variable Index + +<vindex> + +</body>