Mercurial > hg > xemacs-beta
comparison man/tm/tm-view-m=en.texi @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
69:804d1389bcd6 | 70:131b0175ea99 |
---|---|
1 @c $Id: tm-view-m=en.texi,v 1.1.1.1 1996/12/18 22:43:52 steve Exp $ | |
2 | |
3 @node method, Mechanism of tm-view, mime/viewer-mode, tm-view | |
4 @comment node-name, next, previous, up | |
5 @section method | |
6 @cindex method | |
7 | |
8 In @code{mime/viewer-mode}, you can do play (@key{v}), extract | |
9 (@key{e}), or print (@key{C-c C-p}) for each content. These operations | |
10 are called ``decoding operation(s) (for a content)''. And kind of | |
11 decoding operations are called @strong{decoding-mode}. | |
12 | |
13 When decoding operation is driven, tm-view calls a procedure matched | |
14 for the condition, such as content-type. This procedure is called | |
15 @strong{method}. | |
16 | |
17 There are two kinds of method. One is Emacs Lisp function, called | |
18 @strong{internal method}. Another one is external program, called | |
19 @strong{external method}. | |
20 | |
21 Internal method operates in Emacs, so it can do carefully. | |
22 | |
23 External method is called as asynchronous process, so Emacs does not | |
24 wait while method is running. So it is good for big data, such as | |
25 audio, image or video. | |
26 | |
27 @menu | |
28 * decoding-condition:: Setting of content decoding condition | |
29 * Format of method value:: | |
30 * Example of decoding-condition:: | |
31 * environment variables:: | |
32 @end menu | |
33 | |
34 | |
35 @node decoding-condition, Format of method value, method, method | |
36 @comment node-name, next, previous, up | |
37 @subsection Setting of content decoding condition | |
38 @cindex content decoding condition | |
39 | |
40 When decoding operation is driven, tm-view calls a method matched for | |
41 the condition searched from the variable | |
42 @code{mime/content-decoding-condition}. | |
43 | |
44 Variable @code{mime/content-decoding-condition} is defined as a list | |
45 with the following syntax: | |
46 | |
47 @lisp | |
48 (condition1 condition2 ...) | |
49 @end lisp | |
50 | |
51 Each condition are association-list with the following syntax: | |
52 | |
53 @lisp | |
54 ((field-type_1 . value_1) | |
55 (field-type_2 . value_2) | |
56 ...) | |
57 @end lisp | |
58 | |
59 For example, if you want to call the external method named tm-plain to | |
60 decode every text/plain type content, you can define the condition | |
61 like | |
62 | |
63 @lisp | |
64 ((type . "text/plain") | |
65 (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)) | |
66 @end lisp | |
67 | |
68 As you notice, now you can define the arguments to pass to a external | |
69 method. Refer to @xref{Format of method value} section for more | |
70 explanation. | |
71 | |
72 This condition definition will match all contents whose types are | |
73 text/plain. Here is an another example: | |
74 | |
75 @lisp | |
76 ((type . "text/plain") | |
77 (method "tm-plain" nil 'file 'type 'encoding 'mode 'name) | |
78 (mode . "play")) | |
79 @end lisp | |
80 | |
81 This will match the content whose type is text/plain and the mode is | |
82 play. | |
83 | |
84 @lisp | |
85 ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file) | |
86 (mode . "play")) | |
87 @end lisp | |
88 | |
89 This will match all contents which have a mode of play. | |
90 | |
91 The conditions defined in a mime/content-decoding-condition variable | |
92 are examined from top to bottom. The first matching condition becomes | |
93 valid and the method specified in that condition definition will be | |
94 executed. | |
95 | |
96 | |
97 @node Format of method value, Example of decoding-condition, decoding-condition, method | |
98 @comment node-name, next, previous, up | |
99 @subsection Format of method value part | |
100 @cindex Format of method value part | |
101 | |
102 You can specify the method field of the decoding-condition definition | |
103 in two different ways, | |
104 | |
105 @lisp | |
106 (method . SYMBOL) | |
107 @end lisp | |
108 | |
109 or | |
110 | |
111 @lisp | |
112 (method STRING FLAG ARGUMENT1 ARGUMENT2 ...) | |
113 @end lisp | |
114 | |
115 can be accepted. | |
116 | |
117 When a symbol is specified in the method field, a function whose name | |
118 is SYMBOL will be called as an internal method. | |
119 | |
120 When a list is specified in the method field, it will be called as an | |
121 external method. | |
122 | |
123 The list below shows the meaning of the parameters when the external | |
124 method is specified in the method field. | |
125 | |
126 @table @samp | |
127 @item STRING | |
128 name of an external method | |
129 @item FLAG | |
130 If @code{t}, both the content header and the content body are | |
131 passed to an external method. if nil, only the content body is | |
132 passed to an external method. | |
133 @item ARGUMENTs | |
134 list of arguments passed to an external method | |
135 @end table | |
136 | |
137 An argument passed to an external method can be in one of the | |
138 following formats: | |
139 | |
140 @table @samp | |
141 @item STRING | |
142 string itself | |
143 @item 'SYMBOL | |
144 value gotten using SYMBOL as a key (see below) | |
145 @item 'STRING | |
146 value gotten using STRING as a key (see below) | |
147 @end table | |
148 | |
149 'SYMBOL can be one of the following: | |
150 | |
151 @table @samp | |
152 @item 'file | |
153 name of a file holding the original content | |
154 @item 'type | |
155 content-type/sub-type of Content-Type field | |
156 @item 'encoding | |
157 field body of Content-Transfer-Encoding field | |
158 @item 'mode | |
159 decoding-mode | |
160 @item 'name | |
161 name of a file created by decode operation | |
162 @end table | |
163 | |
164 'STRING is used to search a parameter of the Content-Type field whose | |
165 name matches with it, and pass the value of that parameter to the | |
166 external method. | |
167 | |
168 | |
169 @node Example of decoding-condition, environment variables, Format of method value, method | |
170 @comment node-name, next, previous, up | |
171 @subsection Examples of decoding-condition | |
172 @cindex Examples of decoding-condition | |
173 | |
174 The default definition of a mime/content-decoding-condition variable | |
175 is shown below. | |
176 | |
177 @lisp | |
178 (defvar mime/content-decoding-condition | |
179 '(((type . "text/plain") | |
180 (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)) | |
181 ((type . "text/x-latex") | |
182 (method "tm-latex" nil 'file 'type 'encoding 'mode 'name)) | |
183 ((type . "audio/basic") | |
184 (method "tm-au" nil 'file 'type 'encoding 'mode 'name)) | |
185 ((type . "image/gif") | |
186 (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) | |
187 ((type . "image/jpeg") | |
188 (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) | |
189 ((type . "image/tiff") | |
190 (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) | |
191 ((type . "image/x-tiff") | |
192 (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) | |
193 ((type . "image/x-xbm") | |
194 (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) | |
195 ((type . "image/x-pic") | |
196 (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) | |
197 ((type . "video/mpeg")` | |
198 (method "tm-mpeg" nil 'file 'type 'encoding 'mode 'name)) | |
199 ((type . "application/octet-stream") | |
200 (method "tm-file" nil 'file 'type 'encoding 'mode 'name)) | |
201 ((type . "message/partial") | |
202 (method . mime/decode-message/partial-region)) | |
203 ((method "metamail" t | |
204 "-m" "tm" "-x" "-d" "-z" "-e" 'file)(mode . "play")) | |
205 )) | |
206 @end lisp | |
207 | |
208 For example, if you want to use metamail to decode any contents, | |
209 | |
210 @lisp | |
211 (setq mime/content-decoding-condition | |
212 '( | |
213 ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)) | |
214 )) | |
215 @end lisp | |
216 | |
217 will work. | |
218 | |
219 A mime/content-decoding-condition variable provides you of very flexible | |
220 way to define the conditions of decoding. It can be simple if you only | |
221 need the a few decoding methods, while it can be very complicated if you | |
222 want to use the separate decoding method for each type/mode combination. | |
223 | |
224 Following function may be useful to set decoding-condition. It is a | |
225 function of tl-atype.el. | |
226 | |
227 | |
228 @deffn{Function} set-atype symbol alist | |
229 | |
230 Add condition @var{alist} to symbol @var{symbol}. | |
231 | |
232 Example: | |
233 | |
234 @lisp | |
235 (set-atype 'mime/content-decoding-condition | |
236 '((type . "message/external-body") | |
237 ("access-type" . "anon-ftp") | |
238 (method . mime/decode-message/external-ftp) | |
239 )) | |
240 @end lisp | |
241 @end deffn | |
242 | |
243 | |
244 @node environment variables, , Example of decoding-condition, method | |
245 @comment node-name, next, previous, up | |
246 @subsection environment variables | |
247 @cindex environment variables | |
248 | |
249 Standard methods of tm-view reference some environment variables. You | |
250 can specify them to customize. | |
251 | |
252 @table @var | |
253 @item TM_TMP_DIR | |
254 Directory for temporary files or extracted files. Default value is | |
255 `/tmp/'. | |
256 | |
257 @item VIDEO_DITHER | |
258 Dither for mpeg_play. Default value is `gray'. | |
259 | |
260 @item TM_WWW_BROWSER | |
261 WWW browser name. Default value is `netscape'. | |
262 @end table |