From: morioka Date: Mon, 9 Mar 1998 12:26:02 +0000 (+0000) Subject: tm 7.36. X-Git-Tag: tm7_36~1 X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=dd258a793c3c7c88ad91d59192ab55bbf1082a8f;p=elisp%2Ftm.git tm 7.36. --- diff --git a/Changes-7.36.en b/Changes-7.36.en new file mode 100644 index 0000000..7d06eb6 --- /dev/null +++ b/Changes-7.36.en @@ -0,0 +1,41 @@ +Mon Dec 18 11:16:18 1995 Morioka Tomohiko + + * tm: Version 7.36 was released. + * tm/gnus: Version 7.25 was released. + + * methods/tm-au: new implementation + +Mon Dec 18 10:45:02 1995 Morioka Tomohiko + + * tm-view.el (mime-viewer/quit): New implementation + + * tm-view.el (mime-viewer/show-summary): New function: + it is bound with `h' key. + + * tm-view.el (mime-viewer/show-summary-method): New variable + +Mon Dec 18 01:32:23 1995 Morioka Tomohiko + + * methods/tmdecode, methods/tm-plain: + replaced by NAGIRA Naoki 's code. + +Sun Dec 17 14:35:01 1995 Morioka Tomohiko + + * tm-view.el: setting for "image/x-mag" + +Sun Dec 17 14:29:17 1995 Morioka Tomohiko + + * tm-pgp.el: application/pgp-encrypted support + + * tm-pgp.el (mime-article/check-pgp-signature): bug fix + + * tm-pgp.el: setting for "text/x-pgp" + + * tm-setup.el: setting for tm-image.el when XEmacs is running. + + * tm-image.el: + Filters were merged to function `mime-preview/filter-for-image'. + +Sat Dec 16 14:59:29 1995 Morioka Tomohiko + + * tm-image.el: Initial revision diff --git a/Makefile b/Makefile index 03c5e84..ec7fbfe 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,8 @@ TM_FILES = tm/README.en tm/Changes* \ tm/config.tm tm/Makefile tm/mk-tm \ tm/tm-mule.el tm/tm-nemacs.el tm/tm-orig.el tm/tm-def.el \ tm/tm-eword.el tm/tm-ew-d.el tm/tm-ew-e.el \ - tm/tm-view.el tm/tm-parse.el tm/tm-rich.el \ + tm/tm-view.el tm/tm-parse.el \ + tm/tm-rich.el tm/tm-image.el \ tm/tm-play.el tm/tm-partial.el tm/tm-pgp.el \ tm/tm-ftp.el tm/tm-latex.el tm/tm-html.el tm/tm-file.el \ tm/tm-tar.el \ @@ -37,7 +38,7 @@ TL_FILES = tl/README.en tl/Makefile tl/mk-tl tl/*.el tl/doc/*.texi \ FILES = $(TM_FILES) $(TM_MUA_FILES) $(MEL_FILES) $(TL_FILES) -TARFILE = tm7.35.tar.gz +TARFILE = tm7.36.tar.gz 18: diff --git a/README.en b/README.en index 9c2ec10..5c5e962 100644 --- a/README.en +++ b/README.en @@ -1,7 +1,7 @@ [README for tm (English Version)] by MORIOKA Tomohiko and KOBAYASHI Shuhei -$Id: README.en,v 7.5 1995/12/07 11:24:57 morioka Exp morioka $ +$Id: README.en,v 7.6 1995/12/18 11:16:18 morioka Exp $ 1 What's tm? @@ -372,9 +372,9 @@ and its mirrors: 10 TODO -- automatic MIME preview support for another MUA -- better XEmacs support (e.g. inline image) +- MUA specific key bind system for mime/viewer-mode +- better identification calculus system as successor of atype system - development of internal method for message/external-body based on tm-ftp -- development good MIME composer +- better automatic MIME preview support - etc. diff --git a/doc/Makefile b/doc/Makefile index 4ffb176..34fbfdf 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,25 +1,27 @@ # -# $Id: Makefile,v 1.1 1995/07/17 16:41:30 morioka Exp morioka $ +# $Id: Makefile,v 2.0 1995/12/17 17:58:43 morioka Exp morioka $ # EMACS=mule -MAKEINFO=$(EMACS) -batch -q -no-site-file $< -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer +MAKEINFO=$(EMACS) -batch -q -no-site-file $< -l texinfmt -f texinfo-format-buffer -f save-buffer +# MAKEINFO=$(EMACS) -batch -q -no-site-file $< -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer # MAKEINFO=makeinfo $< INFO_JA = tm_ja.info tm-gnus_ja.info tm-mh-e_ja.info -INFO_EN = tm_en.info tm-gnus_en.info +INFO_EN = tm_en.info tm-gnus_en.info tm-mh-e_en.info -OLFILES = # tiny-mime-eng.ol -TEXFILES= signature-jp.tex # tiny-mime-eng.tex -DVIFILES= tm-eng.dvi signature-jp.dvi # tiny-mime-eng.dvi -PSFILES = signature-jp.# ps tiny-mime-eng.ps +TEXFILES= signature-jp.tex +DVIFILES= signature-jp.dvi GOMI = *.aux *.toc *.log \ *.cp *.cps *.fn *.fns *.vr *.vrs *.ky *.pg *.tp \ $(DVIFILES) *.ps *~ -.SUFFIXES: .ol .tex .dvi .ps .texi .info +.SUFFIXES: .texi .info .dvi .ol .tex + +.texi.info: + $(MAKEINFO) .ol.tex: ol2 < $< | plain2 -tex -tstyle=a4j > $@ @@ -28,23 +30,12 @@ GOMI = *.aux *.toc *.log \ jlatex $< jlatex $< -.texi.info: - $(MAKEINFO) - -.dvi.ps: - dvi2ps $< > $@ - all: $(DVI) info: $(INFO_JA) $(INFO_EN) -tm_en.info: - -tm-gnus_en.info: - makeinfo $< - tex: $(TEXFILES) @@ -55,9 +46,5 @@ dvi: $(DVIFILES) $(DVIFILES): $(TEXFILES) -ps: $(PSFILES) - -$(PSFILES): $(DVIFILES) - clean: rm $(GOMI) diff --git a/doc/tm-ew-d=en.texi b/doc/tm-ew-d=en.texi new file mode 100644 index 0000000..db8d620 --- /dev/null +++ b/doc/tm-ew-d=en.texi @@ -0,0 +1,32 @@ +@c $Id: tm-ew-d=en.texi,v 2.0 1995/12/17 16:15:57 morioka Exp $ + +@node encoded-word decoding, article-buffer, function to preview, Functions of tm-view +@comment node-name, next, previous, up +@subsection encoded-word decoding +@cindex encoded-word +@cindex non-ASCII field +@cindex message header + +tm-view can decode encoded-word defined in RFC 1522. + + +@deffn{Command} mime/decode-message-header + +It decodes encoded-words in message header of current buffer. +@end deffn + + +@deffn{Command} mime-eword/decode-region beg end &optional unfolding + +It decodes encoded-words in region @var{beg} to @var{end}. + +If @var{unfolding} is non-nil, folded fields are unfolded. +@end deffn + + +@deffn{Function} mime-eword/decode-string str + +It decodes encoded-words in @var{str}. + +Folded string is unfolded. +@end deffn diff --git a/doc/tm-ew-d=ja.texi b/doc/tm-ew-d=ja.texi new file mode 100644 index 0000000..31858cf --- /dev/null +++ b/doc/tm-ew-d=ja.texi @@ -0,0 +1,35 @@ +@c $Id: tm-ew-d=ja.texi,v 2.0 1995/12/17 22:54:40 morioka Exp $ + +@node encoded-word decoding, , function to preview, Functions of tm-view +@comment node-name, next, previous, up +@subsection encoded-word decoding +@cindex encoded-word +@cindex non-ASCII field +@cindex message header + +tm-view ¤Ï RFC 1522 ¤Çµ¬Äꤵ¤ì¤¿ encoded-word ¤ò decode ¤¹¤ë¤¿¤á¤Î´Ø¿ô +¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ + + +@deffn{Command} mime/decode-message-header + +current buffer ¤Î message header Ãæ¤Î encoded-word ¤ò decode ¤·¤Þ¤¹¡£ +@end deffn + + +@deffn{Command} mime-eword/decode-region beg end &optional unfolding + +@var{beg} ¤È @var{end} ¤Ç°Ï¤Þ¤ì¤¿ÎΰèÃæ¤Î encoded-word ¤ò decode ¤·¤Þ +¤¹¡£ + +@var{unfolding} ¤¬ non-nil ¤Î¾ì¹ç¡¢fold ¤µ¤ì¤¿ field ¤ò unfolding ¤·¤Þ +¤¹¡£ +@end deffn + + +@deffn{Function} mime-eword/decode-string str + +@var{str} ¤Î encoded-word ¤ò decode ¤·¤Þ¤¹¡£ + +fold ¤µ¤ì¤¿Ê¸»úÎó¤Ï unfolding ¤µ¤ì¤Þ¤¹¡£ +@end deffn diff --git a/doc/tm-ew=en.texi b/doc/tm-ew=en.texi new file mode 100644 index 0000000..d3b5646 --- /dev/null +++ b/doc/tm-ew=en.texi @@ -0,0 +1,55 @@ +@c $Id: tm-ew_en.texi,v 1.1 1995/12/13 09:27:39 morioka Exp $ + +@node encoded-word, customize, tm-view, Top +@comment node-name, next, previous, up +@chapter encoded-word +@cindex encoded-word +@cindex non-ASCII field +@cindex message header + +tm has some functions about encoded-word defined in RFC 1522. + +@menu +* encoded-word decoding:: decode +* encoded-word encoding:: encode +* encoded-word utility:: +@end menu + + +@node encoded-word encoding, encoded-word utility, encoded-word, encoded-word +@comment node-name, next, previous, up +@section encoded-word encoding + +@deffn{Command} mime/encode-message-header + +It encodes non-ASCII characters in message header of current buffer. +@end deffn + + +@deffn{Function} mime/encode-field str + +It encodes @var{str} as a field. +@end deffn + + +@deffn{Function} mime-eword/encode-string str &optional column mode + +It encodes @var{str}. + +@var{column} specifies start column. Default value is 0. + +@var{mode} specifies where @var{str} is in. Available values are +@code{text}, @code{comment}, @code{phrase}. Default value is +@code{phrase}. +@end deffn + + +@node encoded-word utility, , encoded-word encoding, encoded-word +@comment node-name, next, previous, up +@section encoded-word utility + +@deffn{Function} mime/exist-encoded-word-in-subject + +If there are encoded-words in Subject: field in current buffer, +it returns field-body of the Subject: field. +@end deffn diff --git a/doc/tm-ew=ja.texi b/doc/tm-ew=ja.texi new file mode 100644 index 0000000..5b72cbd --- /dev/null +++ b/doc/tm-ew=ja.texi @@ -0,0 +1,58 @@ +@c $Id: tm-ew=ja.texi,v 4.0 1995/12/17 22:55:44 morioka Exp $ + +@node encoded-word, customize, tm-view, Top +@comment node-name, next, previous, up +@chapter encoded-word +@cindex encoded-word +@cindex non-ASCII field +@cindex message header + +tm ¤Ï RFC 1522¡ÊÈó ASCII text ¤Î¤¿¤á¤Î message header ¤Î³ÈÄ¥¡Ë¤Çµ¬Äꤵ +¤ì¤¿ encoded-word ¤ò°·¤¦¤¿¤á¤Î´Ø¿ô¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ + +@menu +* encoded-word decoding:: decode +* encoded-word encoding:: encode +* encoded-word utility:: +@end menu + + +@node encoded-word encoding, encoded-word utility, encoded-word, encoded-word +@comment node-name, next, previous, up +@section encoded-word encoding + +@deffn{Command} mime/encode-message-header + +current buffer ¤Î message header Ãæ¤ÎÈó ASCII ʸ»úÎó¤ò encoded-word ¤È +¤·¤Æ encode ¤·¤Þ¤¹¡£ +@end deffn + + +@deffn{Function} mime/encode-field str + +@var{str} ¤ò field ¤È¤·¤Æ encode ¤·¤Þ¤¹¡£ +@end deffn + + +@deffn{Function} mime-eword/encode-string str &optional column mode + +@var{str} ¤ò encoded-word ¤È¤·¤Æ encode ¤·¤Þ¤¹¡£ + +@var{column} ¤Ï¤³¤Îʸ»úÎ󤬲¿·åÌܤ«¤é»Ï¤Þ¤Ã¤Æ¤¤¤ë¤«¤ò»ØÄꤷ¤Þ¤¹¡£´ûÄê +ÃÍ¤Ï 0 ¤Ç¤¹¡£ + +@var{mode} ¤Ï¤³¤Îʸ»úÎ󤬤ɤ¦¤¤¤¦Éôʬ¤Ç»È¤ï¤ì¤Æ¤¤¤ë¤«¤ò¼¨¤·¤Þ¤¹¡£»ØÄê +¤Ç¤­¤ëÃͤȤ·¤Æ¤Ï @code{text}, @code{comment}, @code{phrase} ¤¬¤¢¤ê¤Þ¤¹¡£ +´ûÄêÃÍ¤Ï @code{phrase} ¤Ç¤¹¡£ +@end deffn + + +@node encoded-word utility, , encoded-word encoding, encoded-word +@comment node-name, next, previous, up +@section encoded-word utility + +@deffn{Function} mime/exist-encoded-word-in-subject + +current buffer ¤Î Subject: field ¤Ë encoded-word ¤¬Â¸ºß¤¹¤ë¾ì¹ç¡¢ +Subject: field ¤Î field-body ¤òÊÖ¤·¤Þ¤¹¡£ +@end deffn diff --git a/doc/tm-gnus_en.texi b/doc/tm-gnus_en.texi index ea98aa0..42a6814 100644 --- a/doc/tm-gnus_en.texi +++ b/doc/tm-gnus_en.texi @@ -6,23 +6,20 @@ @titlepage @title{tm-gnus} @author{MORIOKA Tomohiko} -@code{$Id: tm-gnus_en.texi,v 3.0 1995/09/05 10:19:13 morioka Exp $} +@code{$Id: tm-gnus_en.texi,v 4.0 1995/12/18 12:04:00 morioka Exp morioka $} @end titlepage @node Top, Introduction, (tm_en.info)tm-MUA, (tm_en.info)tm-MUA @comment node-name, next, previous, up @ifinfo -@top tm-gnus 6.20 Reference manual +@top tm-gnus 7.25 Reference manual @end ifinfo @menu -* Introduction:: modules of tm-gnus -* Features:: Features of tm-gnus -* Customize:: Customize of tm-gnus -* Concept Index:: -* Command Index:: -* Variable Index:: +* Introduction:: +* Features:: +* Index:: @end menu @@ -38,24 +35,26 @@ tm-gnus extends MIME features to GNUS. tm-gnus decodes RFC 1522 MIME encoded-word in summary buffer and article buffer, and adds a command to preview MIME message using tm-view in summary mode. -In (ding) GNUS and GNUS 5.*, tm-gnus can display MIME preview buffer -instead of article buffer if you apply a patch to support this -feature. It is useful for heavy MIME user. +In GNUS 3.15 or later and Gnus, tm-gnus can display MIME preview +buffer instead of article buffer. It is useful for heavy MIME user. + +Note: September Gnus has some features to support tm-gnus. So it is +better choice if you don't dislike alpha version. tm-gnus has following modules: @itemize @minus -@item @strong{tm-gnus}: setting module for GNUS. -@item @strong{tm-gnus3}: setting module for GNUS 3.*. -@item @strong{tm-gnus4}: setting module for GNUS 4.*. -@item @strong{tm-ognus}: common part for tm-gnus3 and tm-gnus4. -@item @strong{tm-dgnus}: setting module for (ding) GNUS. -@item @strong{tm-gnus5}: setting module for GNUS 5.*. +@item @strong{tm-gnus.el}: main module of tm-gnus +@item @strong{tm-gnus3.el}: module for GNUS 3.*. +@item @strong{tm-gnus4.el}: module for GNUS 4.*, Gnus 5.0 and 5.1 +@item @strong{tm-gd3.el}: common part for GNUS +@item @strong{tm-gd5.el}: common part for Gnus +@item @strong{tm-sgnus.el}: module for September Gnus @end itemize -@node Features, Customize, Introduction, Top +@node Features, Index, Introduction, Top @comment node-name, next, previous, up @chapter Features @cindex features @@ -76,13 +75,9 @@ tm-gnus expands following features to GNUS. @cindex RFC 1522 @cindex summary buffer -tm-gnus decodes MIME encoded-word in summary buffer using tiny-mime -(@inforef{Top, , tm-eword_en}) functions. However if an encoded-word -has unsupported charset, it is not decoded. - -@menu -* (tm-eword_en.info)Charsets:: supported charsets -@end menu +tm-gnus decodes MIME encoded-word in summary buffer using tm-view +(@inforef{encoded-word decoding, , tm-eword_en}) functions. However if +an encoded-word has unsupported charset, it is not decoded. @node Summary mode, Automatic MIME Preview, Summary buffer, Features @@ -103,7 +98,7 @@ mime/viewer-mode is a mode to view MIME messages. You can move in a message, or play each contents included in a message. @menu -* (tm-view_en.info)Commands:: Commands of mime/viewer-mode. +* (tm_en.info)MIME navigation:: Commands of mime/viewer-mode. @end menu @@ -112,14 +107,10 @@ message, or play each contents included in a message. @section Automatic MIME Preview @cindex automatic MIME preview -``Automatic MIME preview'' feature is available to apply ``with tm -patch'' for (ding) GNUS and GNUS 5.*. This patch is in -ftp.jaist.ac.jp:/pub/GNU/elisp/dgnus/, current version is -dgnus-0.99.23-tm.diff (as of 2 September 1995). - -If this feature is available, when reading an article in summary mode, -tm-gnus displays preview buffer processed by tm-view (@inforef{Top, , -tm-view_en.info}) instead of raw article buffer. +``Automatic MIME preview'' feature is available in GNUS 3.15 or later +and Gnus. If this feature is available, when reading an article in +summary mode, tm-gnus displays preview buffer processed by tm-view +instead of raw article buffer. Therefore if an article is encoded by Quoted-Printable or Base64, decoded article is displays. In addition, if using tm-rich, rich text @@ -136,121 +127,42 @@ However if you use a slow machine, or are just really impatient, you can stop automatic MIME preview. -@defvar tm-gnus/decode-all +@defvar tm-gnus/automatic-mime-preview If it is t, tm-gnus is in automatic MIME preview mode. @end defvar - -@deffn{Command} tm-gnus/toggle-mime arg - -It switches normal mode and automatic MIME preview mode. Namely, it -switches value of the variable @code{tm-gnus/decode-all}. - -If @var{arg} is @code{t}, it set the variable -@code{tm-gnus/decode-all} to @code{t}. -@end deffn - - -If ``withd tm patch'' is applied, semantics of variable -@code{gnus-article-buffer} is changed, its semantics is divided into -following two variables. +In September Gnus, semantics of variable @code{gnus-article-buffer} is +changed, its semantics is divided into following two variables. @defvar gnus-article-buffer It indicates the buffer to display. In automatic MIME preview mode, it -indicates preview buffer processed by tm-view. In normal mode, it -indicates raw article buffer. In this case, it is equal to variable -@code{gnus-clean-article-buffer}. +indicates preview-buffer "*Article*" processed by tm-view. @end defvar -@defvar gnus-clean-article-buffer - -It indicates raw article buffer even if tm-gnus is in automatic MIME -preview mode. -@end defvar +@defvar gnus-original-article-buffer +It indicates raw article-buffer " *Original Article*" even if tm-gnus +is in automatic MIME preview mode. -@node Customize, Concept Index, Features, Top -@comment node-name, next, previous, up -@chapter Customize of tm-gnus -@cindex customize - -@defvar tm-gnus/original-article-display-hook - -tm-gnus uses @code{gnus-article-display-hook}, forbids to use for -users customize. Therefore tm-gnus has this variable instead of -@code{gnus-article-display-hook}. - -Notice: it is available after tm-gnus is loaded. Therefore you had -better to set in @code{call-after-loaded} like following: - -@lisp -@cartouche -(call-after-loaded - 'tm-view - (function - (lambda () - (add-hook 'tm-gnus/original-article-display-hook - ...) - ))) -@end cartouche -@end lisp +GNUS and Gnus 5.1 or earlier don't have it, but tm-gnus4 emulate +it. In this case, it indicates nil if there is not preview-buffer. @end defvar -In addition, you can customize preview buffer to set tm-view -setting. For instance, following is a example to add faces using -hilit19. - -@lisp -@cartouche -(cond (window-system - (let* ((header-patterns '(("^Subject:.*$" nil msg-subject) - ("^From:.*$" nil msg-from) - ("^--text follows this line--$" - nil msg-separator) - ("^[A-Za-z][A-Za-z0-9-]+:" nil msg-header) - )) - (body-patterns '(("^\\(In article\\|[ \t]*\\w*[]<>@}|]\\).*$" - nil msg-quote))) - (message-patterns (append header-patterns body-patterns)) - ) - (hilit-set-mode-patterns 'msg-header header-patterns) - (hilit-set-mode-patterns 'msg-body body-patterns) - (hilit-set-mode-patterns 'mime/viewer-mode - message-patterns - 'hilit-rehighlight-message) - ) - (add-hook 'mime-viewer/content-header-filter-hook - (function hilit-rehighlight-buffer-quietly)) - (add-hook 'mime-viewer/plain-text-preview-hook - (function hilit-rehighlight-buffer-quietly)) - )) -@end cartouche -@end lisp @menu -* (tm-view_en.info):: tm-view +* (tm_en.info)tm-view:: @end menu -@node Concept Index, Command Index, Customize, Top -@unnumbered Concept Index +@node Index, , Features, Top +@unnumbered Index @printindex cp - - -@node Command Index, Variable Index, Concept Index, Top -@unnumbered Command and Function Index - @printindex fn - - -@node Variable Index, , Command Index, Top -@unnumbered Variable Index - @printindex vr @bye diff --git a/doc/tm-gnus_ja.texi b/doc/tm-gnus_ja.texi index e39e816..58b549f 100644 --- a/doc/tm-gnus_ja.texi +++ b/doc/tm-gnus_ja.texi @@ -6,14 +6,14 @@ @titlepage @title{tm-gnus} @author{¼é²¬ ÃÎɧ} -@code{$Id: tm-gnus_ja.texi,v 4.0 1995/12/11 08:30:16 morioka Exp morioka $} +@code{$Id: tm-gnus_ja.texi,v 4.1 1995/12/18 12:04:38 morioka Exp morioka $} @end titlepage @node Top, Introduction, (tm_ja.info)tm-MUA, (tm_ja.info)tm-MUA @comment node-name, next, previous, up @ifinfo -@top tm-gnus 7.21 Reference manual +@top tm-gnus 7.25 Reference manual @end ifinfo @menu @@ -47,7 +47,7 @@ Note: September Gnus °Ê²¼¤Ë tm-gnus ¤Ë´Þ¤Þ¤ì¤ë module ¤ò¼¨¤·¤Þ¤¹¡£ @itemize @minus -@item @strong{tm-gnus.el}: GNUS ÍѤΠmodule +@item @strong{tm-gnus.el}: tm-gnus ¤Î main module @item @strong{tm-gnus3.el}: GNUS 3.* ÍѤΠmodule @item @strong{tm-gnus4.el}: GNUS 4.*, Gnus 5.0.*, 5.1 ÍѤΠmodule @item @strong{tm-gd3.el}: GNUS ÍѤΠlibrary module @@ -78,10 +78,11 @@ tm-gnus @cindex RFC 1522 @cindex summary buffer -tm-gnus ¤òÍѤ¤¤ë¤È¡¢tm-view (@inforef{encoded-word decoding, , -tm-ja.info}) ¤Îµ¡Ç½¤ò»È¤Ã¤Æ Summary buffer Ãæ¤Î MIME encoded-word ¤ò -decode ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤·¤«¤·¡¢encoded-word ¤Î¤¦¤Á¡¢¤½¤Î emacs ¤Ç -support ¤µ¤ì¤Ê¤¤ charset ¤Ï decode ¤µ¤ì¤Þ¤»¤ó¡£ +tm-gnus ¤òÍѤ¤¤ë¤È¡¢tm-view +(@inforef{encoded-word decoding, , tm-ja.info}) ¤Îµ¡Ç½¤ò»È¤Ã¤Æ Summary +buffer Ãæ¤Î MIME encoded-word ¤òdecode ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤·¤«¤·¡¢ +encoded-word ¤Î¤¦¤Á¡¢¤½¤Î emacs ¤Ç support ¤µ¤ì¤Ê¤¤ charset ¤Ï decode +¤µ¤ì¤Þ¤»¤ó¡£ @node Summary mode, Automatic MIME Preview, Summary buffer, Features diff --git a/doc/tm-mh-e_en.texi b/doc/tm-mh-e_en.texi new file mode 100644 index 0000000..fab0dd0 --- /dev/null +++ b/doc/tm-mh-e_en.texi @@ -0,0 +1,116 @@ +\input texinfo.tex +@c{-*-tm-mh-e manual-*-} +@setfilename tm-mh-e_en.info +@settitle{tm-mh-e manual} + +@titlepage +@title{tm-mh-e} +@author{MORIOKA Tomohiko} +@code{$Id: $} +@end titlepage + + +@node Top, Introduction, (tm_ja.info)tm-MUA, (tm_ja.info)tm-MUA +@comment node-name, next, previous, up +@ifinfo +@top tm-mh-e 7.44 Reference manual +@end ifinfo + +@menu +* Introduction:: +* mh-folder-mode:: +* Automatic MIME Preview:: +* Index:: +@end menu + + +@node Introduction, mh-folder-mode, Top, Top +@comment node-name, next, previous, up +@chapter Introduction +@cindex components + +tm-mh-e is a mh-e extender to use tm, it is a tm-MUA. + +tm-mh-e extends MIME features to mh-e. tm-mh-e provides automatic MIME +preview feature using tm-view. + + +tm-mh-e has following modules: + +@itemize @minus +@item @strong{tm-mh-e.el}: tm-mh-e main module +@item @strong{tm-mh-e3.el}: library module for mh-e 3.* +@end itemize + + +@node mh-folder-mode, Automatic MIME Preview, Introduction, Top +@comment node-name, next, previous, up +@chapter folder-mode +@cindex mh-folder-mode + +@table @kbd +@item @key{M-t} +It is the toggle whether to do automatic MIME preview or not. + +@item @key{v} +Enter @code{mime/viewer-mode} to view a message. + +@item @key{.} +Display current message. + +@item @key{,} +Display current message with showing all fields. + +@item @key{M-,} +Display current raw message. +@end table + +@code{mime/viewer-mode} is a major-mode to view and navigate MIME +message. In this mode, you can move in a message or play a content, +interactively. + + +@node Automatic MIME Preview, Index, mh-folder-mode, Top +@comment node-name, next, previous, up +@chapter Automatic MIME Preview +@cindex automatic MIME preview + +``Automatic MIME preview'' feature is available in tm-mh-e. In +automatic MIME preview mode, when reading an article in summary mode, +tm-mh-e displays preview buffer processed by tm-view instead of raw +show buffer. + +Therefore if an article is encoded by Quoted-Printable or Base64, +decoded article is displays. In addition, if using tm-rich, rich text +article is automatic formated. Of course, multipart article is dealt +with correctly. + +Different from using metamail, speaker does not roar just then read an +article includes audio content, video player does not play just then +read an article includes video content, it does not do anonymous ftp +or send mail when read an article includes external-message. These +contents are played when you do decoding command in preview buffer. + +However if you use a slow machine, or are just really impatient, you +can stop automatic MIME preview. + + +@defvar tm-mh-e/automatic-mime-preview + +If it is t, tm-mh-e is in automatic MIME preview mode. +@end defvar + + +@menu +* (tm_en.info)tm-view:: +@end menu + + +@node Index, , Automatic MIME Preview, Top +@unnumbered Index + +@printindex cp +@printindex fn +@printindex vr + +@bye diff --git a/doc/tm-util=en.texi b/doc/tm-util=en.texi new file mode 100644 index 0000000..c033309 --- /dev/null +++ b/doc/tm-util=en.texi @@ -0,0 +1,141 @@ +@c $Id: tm-util_en.texi,v 1.1 1995/12/13 09:27:55 morioka Exp $ + +@node customize, Bug report, encoded-word, Top +@comment node-name, next, previous, up +@chapter customize + +@menu +* fields:: +* available functions:: +* example:: +@end menu + +@node fields, available functions, customize, customize +@comment node-name, next, previous, up +@section fields +@cindex field-list +@cindex field-regexp + +tm-view.el and tm-edit.el uses pair of @strong{field-list} and +@strong{field-regexp} to display or choose fields of message header. + +tm has functions to set such pair. + + +@defun tm:add-fields sym field-list &optional regexp-sym + +It adds @var{field-list} to field-list indicated by symbol @var{sym}. +@end defun + + +@defun tm:delete-fields sym field-list &optional regexp-sym + +It removes @var{field-list} from field-list indicated by symbol +@var{sym}. +@end defun + + +@node available functions, example, fields, customize +@comment node-name, next, previous, up +@section available functions + + +@defun add-path path &rest options + +It adds @var{path} to @code{load-path}. + +In default, it adds expanded path to top of @code{load-path} if there +is @var{path} under @code{default-load-path}. + +If @code{'all-paths} is specified in @var{options}, it searches +@var{path} from all of @code{load-path} instead of +only @code{default-load-path}. + +If @code{'append} is specifies in @var{options}, it adds to end of +@code{load-path}. +@end defun + + +@defun call-after-loaded module func &optional hook-name + +It calls function @var{func} if @var{module} is already provided. + +Otherwise, it add-hooks to @var{hook-name}. + +Default value of @var{hook-name} is @code{MODULE-load-hook}. +@end defun + + +@node example, , available functions, customize +@comment node-name, next, previous, up +@section example + +@subsection message header display (1) + +If you want not to display "Mail-From", "Expires", "Xref", "Approved", +"Sender" and "X-.*", please specify: + +@lisp +(call-after-loaded + 'tm-view + (lambda () + (tm:add-fields + 'mime-viewer/ignored-field-list + '("Mail-From" "Expires" "Xref" "Approved" "Sender" "X-.*") + ))) +@end lisp + +@subsection message header display (2) + +If you want to display only "From", ".*To", "Subject", ".*Date" and +"Newsgroups" , please specify: + +@lisp +(setq mime-viewer/ignored-field-list '(".+")) +(setq mime-viewer/visible-field-list + '("From" ".*To" "Subject" ".*Date" "Newsgroups")) +@end lisp + + +@subsection hilit19 + +example to add faces using hilit19. + +@lisp +(cond (window-system + (let* ((header-patterns '(("^Subject:.*$" nil msg-subject) + ("^From:.*$" nil msg-from) + ("^--text follows this line--$" + nil msg-separator) + ("^[A-Za-z][A-Za-z0-9-]+:" nil msg-header) + )) + (body-patterns '(("^\\(In article\\|[ \t]*\\w*[]<>@}|]\\).*$" + nil msg-quote))) + (message-patterns (append header-patterns body-patterns)) + ) + (hilit-set-mode-patterns 'msg-header header-patterns) + (hilit-set-mode-patterns 'msg-body body-patterns) + (hilit-set-mode-patterns 'mime/viewer-mode + message-patterns + 'hilit-rehighlight-message) + ) + (add-hook 'mime-viewer/content-header-filter-hook + (function hilit-rehighlight-buffer-quietly)) + (add-hook 'mime-viewer/plain-text-preview-hook + (function hilit-rehighlight-buffer-quietly)) + )) +@end lisp + + +@subsection browse-url + +setting example for browse-url.el included in Gnus. + +@lisp +(setq browse-url-browser-function + (if (eq window-system 'x) + 'browse-url-netscape + 'browse-url-w3)) +(autoload browse-url-browser-function "browse-url" + "Ask a WWW browser to show a URL." t) +@end lisp diff --git a/doc/tm-util=ja.texi b/doc/tm-util=ja.texi new file mode 100644 index 0000000..3119a19 --- /dev/null +++ b/doc/tm-util=ja.texi @@ -0,0 +1,147 @@ +@c $Id: tm-util=ja.texi,v 3.0 1995/12/17 22:56:52 morioka Exp $ + +@node customize, Bug report, encoded-word, Top +@comment node-name, next, previous, up +@chapter tm ¤Î customize + +tm ¤Î customize, ¤ª¤è¤Ó¡¢customize ¤ò¹Ô¤¦¤Î¤ËÍ­ÍѤʴؿô¤Ë¤Ä¤¤¤ÆÀâÌÀ¤· +¤Þ¤¹¡£ + +@menu +* fields:: +* available functions:: +* example:: +@end menu + + +@node fields, available functions, customize, customize +@comment node-name, next, previous, up +@section fields +@cindex field-list +@cindex field-regexp + +tm-view.el ¤ä tm-edit.el ¤Ç¤Ï message header field ¤Îɽ¼¨¡¦ÁªÂò¤Ë +@strong{field-list} ¤È @strong{field-regexp} ¤È¤¤¤¦ÂФòÍѤ¤¤Þ¤¹¡£ + +¤³¤³¤Ç¤Ï¤³¤ÎÂФòÁàºî¤¹¤ë¤¿¤á¤Î´Ø¿ô¤ò¾Ò²ð¤·¤Þ¤¹¡£ + + +@defun tm:set-fields sym field-list &optional regexp-sym + +symbol @var{sym} ¤Ç»Ø¤µ¤ì¤¿ field-list ¤Ë @var{field-list} ¤ò set ¤·¤Þ +¤¹¡£ +@end defun + + +@defun tm:add-fields sym field-list &optional regexp-sym + +symbol @var{sym} ¤Ç»Ø¤µ¤ì¤¿ field-list ¤Ë @var{field-list} ¤òÄɲä·¤Þ +¤¹¡£ +@end defun + + +@defun tm:delete-fields sym field-list &optional regexp-sym + +symbol @var{sym} ¤Ç»Ø¤µ¤ì¤¿ field-list ¤«¤é @var{field-list} ¤òºï½ü¤· +¤Þ¤¹¡£ +@end defun + + +@node available functions, example, fields, customize +@comment node-name, next, previous, up +@section Í­ÍѤʴؿô + +tm ¤ÎÀßÄê¤ËÍ­ÍѤʴؿô¤ò¾Ò²ð¤·¤Þ¤¹¡£ + + +@defun add-path path &rest options + +@code{load-path} ¤Ë @var{path} ¤òÄɲä·¤Þ¤¹¡£ + +ɸ½à¤Ç¤Ï @code{default-load-path} ¤Îľ²¼¤Î¤É¤³¤«¤Ë @var{path} ¤¬Â¸ºß¤· +¤Æ¤¤¤ë»þ¤Î¤ß¡¢@code{load-path} ¤ÎÀèƬ¤ËŸ³«¤·¤¿·Á¤ÇÄɲä·¤Þ¤¹¡£ + +@var{options} ¤Ë @code{'all-paths} ¤¬Â¸ºß¤¹¤ë¾ì¹ç¡¢@code{load-path} Á´ +ÂΤ«¤é @var{path} ¤òõº÷¤·¤Þ¤¹¡£ + +@var{options} ¤Ë @code{'append} ¤¬Â¸ºß¤¹¤ë¾ì¹ç¡¢@code{load-path} ¤ÎËö +Èø¤ËÄɲä·¤Þ¤¹¡£ +@end defun + + +@defun call-after-loaded module func &optional hook-name + +@var{module} ¤¬ provide ¤µ¤ì¤Æ¤¤¤ì¤Ð @var{func} ¤ò¤¹¤°¤Ë¸Æ¤Ó¡¢¤½¤¦¤Ç¤Ê +¤±¤ì¤Ð¡¢@var{module} ¤¬ load ¤µ¤ì¤¿»þ¤Ë @var{func} ¤¬¸Æ¤Ð¤ì¤ë¤è¤¦¤Ë¡¢ +@var{hook-name} ¤Ë add-hook ¤·¤Þ¤¹¡£ + +@var{hook-name} ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¡¢@code{MODULE-load-hook} ¤¬ÍѤ¤¤é¤ì¤Þ +¤¹¡£ +@end defun + + +@node example, , available functions, customize +@comment node-name, next, previous, up +@section example + +tm ¤Î customize ¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£ + + +@subsection preview-buffer ¤Çɽ¼¨¤µ¤ì¤ë field ¤ÎÊѹ¹ + +ɸ½àÀßÄê¤Ë²Ã¤¨¡¢"Mail-From", "Expires", "Xref", "Approved", "Sender", +"X-.*" ¤âɽ¼¨¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£ + +@lisp +(call-after-loaded + 'tm-view + (lambda () + (tm:add-fields + 'mime-viewer/ignored-field-list + '("Mail-From" "Expires" "Xref" "Approved" "Sender" "X-.*") + ))) +@end lisp + + +@subsection hilit19 + +hilit19 ¤ò»È¤Ã¤¿ face ¤ÎÀßÄêÎã + +@lisp +(cond (window-system + (let* ((header-patterns '(("^Subject:.*$" nil msg-subject) + ("^From:.*$" nil msg-from) + ("^--text follows this line--$" + nil msg-separator) + ("^[A-Za-z][A-Za-z0-9-]+:" nil msg-header) + )) + (body-patterns '(("^\\(In article\\|[ \t]*\\w*[]<>@}|]\\).*$" + nil msg-quote))) + (message-patterns (append header-patterns body-patterns)) + ) + (hilit-set-mode-patterns 'msg-header header-patterns) + (hilit-set-mode-patterns 'msg-body body-patterns) + (hilit-set-mode-patterns 'mime/viewer-mode + message-patterns + 'hilit-rehighlight-message) + ) + (add-hook 'mime-viewer/content-header-filter-hook + (function hilit-rehighlight-buffer-quietly)) + (add-hook 'mime-viewer/plain-text-preview-hook + (function hilit-rehighlight-buffer-quietly)) + )) +@end lisp + + +@subsection browse-url + +Gnus ÉÕ°¤Î browse-url.el ¤ÎÀßÄêÎã + +@lisp +(setq browse-url-browser-function + (if (eq window-system 'x) + 'browse-url-netscape + 'browse-url-w3)) +(autoload browse-url-browser-function "browse-url" + "Ask a WWW browser to show a URL." t) +@end lisp diff --git a/doc/tm-view-a=en.texi b/doc/tm-view-a=en.texi new file mode 100644 index 0000000..1f4c2cd --- /dev/null +++ b/doc/tm-view-a=en.texi @@ -0,0 +1,86 @@ +@c $Id: tm-view-a=en.texi,v 2.0 1995/12/17 16:16:25 morioka Exp $ + +@node article-buffer, preview-buffer, encoded-word decoding, Mechanism of tm-view +@comment node-name, next, previous, up +@subsection article-buffer + +@defvr{Structure} mime::content-info rcnum point-min point-max type parameters encoding children + +structure to represent MIME content in article-buffer. It is called by +@strong{content-info}. + +@table @var +@item rcnum +@strong{reversed content-number} (list) + +@item point-min +region beginning point in article-buffer + +@item point-max +region end point in 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 +list of content-info included in this content +@end table + +Please use reference function `@code{mime::content-info/SLOT-NAME}' to +reference slot of content-info. Their argument is only content-info. + +@end defvr + + +@defvar mime::article/content-info + +result of MIME parsing of 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}. + +Default value of @var{cinfo} is @code{mime::article/content-info}. +@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}. + +Default value of @var{cinfo} is @code{mime::article/content-info}. +@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{cnum}. + +Default value of @var{cinfo} is @code{mime::article/content-info}. +@end defun + + +@defun mime/flatten-content-info &optional cinfo + +It returns flatten list of content-info from content-info @var{cinfo} +tree. + +Default value of @var{cinfo} is @code{mime::article/content-info}. +@end defun diff --git a/doc/tm-view-a=ja.texi b/doc/tm-view-a=ja.texi new file mode 100644 index 0000000..0c0e1b9 --- /dev/null +++ b/doc/tm-view-a=ja.texi @@ -0,0 +1,94 @@ +@c $Id: tm-view-a=ja.texi,v 2.0 1995/12/17 22:57:24 morioka Exp $ + +@node article-buffer, preview-buffer, Mechanism of tm-view, Mechanism of tm-view +@comment node-name, next, previous, up +@subsection article-buffer + +@defvr{Structure} mime::content-info rcnum point-min point-max type parameters encoding children + +article-buffer ¤Ë¤ª¤±¤ë MIME content ¤Ë´Ø¤¹¤ë¾ðÊó¤ò³ÊǼ¤¹¤ë¤¿¤á¤Î¹½Â¤ +ÂΡ£Ã±¤Ë @strong{content-info} ¤È¤â¸Æ¤Ö¡£ + +@table @var +@item rcnum +@strong{reversed content-number} (list) + +@item point-min +article-buffer ¤Ë¤ª¤±¤ëÀèƬ point + +@item point-max +article-buffer ¤Ë¤ª¤±¤ëËöÈø point + +@item type +content-type/sub-type¡Êʸ»úÎ󡢤ޤ¿¤Ï¡¢nil¡Ë + +@item parameters +Content-Type field ¤Î parameter ¡ÊÏ¢ÁÛ list¡Ë + +@item encoding +Content-Transfer-Encoding¡Êʸ»úÎ󡢤ޤ¿¤Ï¡¢nil¡Ë + +@item children +¤³¤Î content ¤Ë´Þ¤Þ¤ì¤ë contents¡Êcontent-info ¤Î list¡Ë +@end table + +¤¢¤ë content ¤¬ multipart ¤â¤·¤¯¤Ï message/rfc822 ¤Ê¤É¤ÎÊ̤Πcontent +¤ò´Þ¤à¤è¤¦¤Ê content ¤Ç¤¢¤Ã¤¿¾ì¹ç¡¢@var{children} ¤ËÊ̤Πcontent ¤Î +content-info ¤¬´Þ¤Þ¤ì¤ë»ö¤Ë¤è¤Ã¤Æ¡¢content-info ¤ÏÌÚ¹½Â¤¤Ë¤Ê¤ë¡£ + +¤³¤Î¹½Â¤ÂΤò»²¾È¤¹¤ë¤Ë¤Ï¡¢@code{mime::content-info/¥¹¥í¥Ã¥È̾} ¤È¤¤¤¦ +content-info ¤ò°ú¿ô¤Ë¤È¤ë´Ø¿ô¤òÍѤ¤¤ë¡£ + +@end defvr + + +@defvar mime::article/content-info + +article-buffer ¤ò MIME message ¤È¤·¤Æ²òÀϤ·¤¿·ë²Ì (content-info) +@end defvar + + +@defvar mime::article/preview-buffer + +article-buffer ¤ËÂбþ¤¹¤ë preview-buffer. +@end defvar + + +@defun mime-article/point-content-number point &optional cinfo + +content-info @var{cinfo} ¤Ç´ÉÍý¤µ¤ì¤ëÎΰè¤Ë¤ª¤¤¤Æ¡¢@var{point} ¤ËÂбþ +¤¹¤ë content-number ¤òÊÖ¤¹¡£ + +@var{cinfo} ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¢@code{mime::article/content-info} ¤¬ÍÑ +¤¤¤é¤ì¤ë¡£ +@end defun + + +@defun mime-article/rcnum-to-cinfo rcnum &optional cinfo + +content-info @var{cinfo} ¤Ç´ÉÍý¤µ¤ì¤ëÎΰè¤Ë¤ª¤¤¤Æ¡¢ +reversed-content-number @var{rcnum} ¤ËÂбþ¤¹¤ë content-info ¤òÊÖ¤¹¡£ + +@var{cinfo} ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¢@code{mime::article/content-info} ¤¬ÍÑ +¤¤¤é¤ì¤ë¡£ +@end defun + + +@defun mime-article/cnum-to-cinfo rcnum &optional cinfo + +content-info @var{cinfo} ¤Ç´ÉÍý¤µ¤ì¤ëÎΰè¤Ë¤ª¤¤¤Æ¡¢content-number +@var{rcnum} ¤ËÂбþ¤¹¤ë content-info ¤òÊÖ¤¹¡£ + +@var{cinfo} ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¢@code{mime::article/content-info} ¤¬ÍÑ +¤¤¤é¤ì¤ë¡£ +@end defun + + +@defun mime/flatten-content-info &optional cinfo + +content-info @var{cinfo} Ãæ¤ËǼ¤á¤é¤ì¤¿Á´ contents ¤Î content-info ¤Î +list ¤òÊÖ¤¹¡£ + +@var{cinfo} ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¢@code{mime::article/content-info} ¤¬ÍÑ +¤¤¤é¤ì¤ë¡£ +@end defun diff --git a/doc/tm-view-cb=en.texi b/doc/tm-view-cb=en.texi new file mode 100644 index 0000000..5fda349 --- /dev/null +++ b/doc/tm-view-cb=en.texi @@ -0,0 +1,57 @@ +@c $Id: tm-view-cb_en.texi,v 1.1 1995/12/13 09:28:29 morioka Exp $ + +@node content-body, content-separator, content-header, MIME display +@comment node-name, next, previous, up +@subsubsection content-body +@cindex content-body + +Content-body represents content of the message. tm-view does not +display raw content body. For example, if a content has binary, it is +hidden. If a content has richtext, it is formated. Namely content body +is hidden or formated. + +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 content is a member of variable +@code{mime-viewer/default-showing-Content-Type-list}. + +When content-body of a content is displayed, content-body is formated +by content-filter. Content-filter is searched from variable +@code{mime-viewer/content-filter-alist}. At this time, major-mode of +the 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 content is a member of this +variable, its body is displayed. +@end defvar + + +@deffn{Function} mime-viewer/body-visible-p rcnum cinfo &optional ctype + +Return non-@code{nil}, if content-type of a content is displayed. +@var{rcnum} is reversed-content-number of a content. @var{cinfo} is +content-info of the message. If you know content-type of a content, +you can specify it as argument @var{ctype}. +@end deffn + + +@defvar mime-viewer/content-filter-alist + +Association-list whose key is major-mode of a article buffer, value is +content-filter. +@end defvar + + +@deffn{Function} mime-viewer/default-content-filter rcnum cinfo ctype params subj + +It is called when content-body of a content should be displayed and +content-filter is not found in @code{mime-viewer/content-filter-alist}. + +In default, it does nothing. +@end deffn diff --git a/doc/tm-view-cb=ja.texi b/doc/tm-view-cb=ja.texi new file mode 100644 index 0000000..73e72db --- /dev/null +++ b/doc/tm-view-cb=ja.texi @@ -0,0 +1,50 @@ +@c $Id: tm-view-cb=ja.texi,v 2.0 1995/12/17 16:22:33 morioka Exp $ + +@node content-body, content-separator, content-header, MIME display +@comment node-name, next, previous, up +@subsubsection content-body +@cindex content-body + +¤¢¤ë content ¤Î content-body ¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«¤Ï¡¢´Ø¿ô +@code{mime-viewer/body-visible-p} ¤¬ @code{t} ¤Ë¤Ê¤ë¤«¤É¤¦¤«¤Ç·è¤Þ¤ê¤Þ +¤¹¡£É¸½à¤Ç¤Ï¡¢¤¢¤ë content ¤Î content-type ¤¬ÊÑ¿ô +@code{mime-viewer/default-showing-Content-Type-list} ¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë +»þ¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£ + +¤¢¤ë content ¤Î content-body ¤¬É½¼¨¤µ¤ì¤ë»þ¡¢preview buffer ¤Ë¤Ï +content-body ¤ò content-filter ¤Ë¤è¤Ã¤ÆÀ°·Á¤µ¤ì¤¿¤â¤Î¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ +¸Æ¤Ð¤ì¤ë content-filter ¤Ï article buffer ¤Î major-mode ¤ò key ¤È¤·¤Æ +ÊÑ¿ô @code{mime-viewer/content-filter-alist} ¤«¤éõ¤µ¤ì¤Þ¤¹¡£¤â¤·¡¢¤³ +¤ÎÊÑ¿ô¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¾ì¹ç¡¢´Ø¿ô +@code{mime-viewer/default-content-filter} ¤¬¸Æ¤Ð¤ì¤Þ¤¹¡£ + + +@defvar mime-viewer/default-showing-Content-Type-list + +content-body ¤òɽ¼¨¤¹¤Ù¤­ content-type ¤òÍ×ÁǤȤ¹¤ë list. +@end defvar + + +@deffn{Function} mime-viewer/body-visible-p rcnum cinfo &optional ctype + +reversed-content-number ¤¬ @var{rcnum} ¤Ç¤¢¤ë content ¤¬É½¼¨¤µ¤ì¤ë¾ì¹ç¡¢ +@code{t} ¤òÊÖ¤¹¡£¤½¤Î content ¤Î content-type ¤¬¤¢¤é¤«¤¸¤á¤ï¤«¤Ã¤Æ¤¤¤ë +¾ì¹ç¡¢@var{ctype} ¤Ë°ú¿ô¤È¤·¤ÆÅϤ¹¤³¤È¤¬¤Ç¤­¤ë¡£ +@end deffn + + +@defvar mime-viewer/content-filter-alist + +article buffer ¤Î major-mode ¤ò key ¤È¤·¤¿Ï¢Áۥꥹ¥È¤Ç¡¢ÃÍÉô¤Ë¤Ï +content-filter ¤¬Æþ¤Ã¤Æ¤¤¤ë¡£ +@end defvar + + +@deffn{Function} mime-viewer/default-content-filter rcnum cinfo ctype params subj + +¤¢¤ë content ¤Î content-body ¤òɽ¼¨¤¹¤Ù¤­»þ¡¢ÊÑ¿ô +@code{mime-viewer/content-filter-alist} ¤ÎÃæ¤Ë content-filter ¤¬¸«¤Ä¤« +¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¡£ + +ɸ½à¤Ç¤Ï²¿¤â¤·¤Ê¤¤¡£ +@end deffn diff --git a/doc/tm-view-ch=en.texi b/doc/tm-view-ch=en.texi new file mode 100644 index 0000000..87e6a0a --- /dev/null +++ b/doc/tm-view-ch=en.texi @@ -0,0 +1,68 @@ +@c $Id: tm-view-ch_en.texi,v 1.1 1995/12/13 09:28:43 morioka Exp $ + +@node content-header, content-body, content-subject, MIME display +@comment node-name, next, previous, up +@subsubsection content-header +@cindex content-header + +A content header shows the header portion of a content in the preview +buffer. + +When the function @code{mime-viewer/header-visible-p} returns @code{t} +for content-number of a content, content-header is displayed. This +judge function returns @code{t} when a content is root or content-type +of its parent is a member of the variable +@code{mime-viewer/childrens-header-showing-Content-Type-list}. + +If you want to change this condition, please redefine it. + +When content-header is displayed, content-header are formated by +content-header-filter. Content-header-filter is searched from variable +@code{mime-viewer/content-header-filter-alist}. Its key is major-mode +of the article buffer. If not found, function +@code{mime-viewer/default-content-header-filter} is called. + + +@defvar mime-viewer/childrens-header-showing-Content-Type-list + +List of content-type. If content-type of parent of a content is a +member of this variable, its content-header is displayed. Default +value is "message/rfc822". + +This variable is referred by the function +@code{mime-viewer/header-visible-p}. +@end defvar + + +@deffn{Function} mime-viewer/header-visible-p rcnum cinfo &optional ctype + +Returns @code{t} if a content is displayed. + +@var{cnum} is content-number. @var{cinfo} is content-info. If you know +content-type, you can specify by @var{ctype}. +@end deffn + + +@defvar mime-viewer/content-header-filter-alist + +Association-list whose key is major-mode of a article buffer, value is +content-header-filter. +@end defvar + + +@deffn{Function} 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}. +@end deffn + + +@defvar mime-viewer/ignored-field-list + +List of regular expression to represent invisible fields. + +Variable @code{mime-viewer/ignored-field-regexp} is created from it. + +Please use function @code{tm:add-fields} or @code{tm:delete-fields} to +set it. +@end defvar diff --git a/doc/tm-view-ch=ja.texi b/doc/tm-view-ch=ja.texi new file mode 100644 index 0000000..68ffdda --- /dev/null +++ b/doc/tm-view-ch=ja.texi @@ -0,0 +1,72 @@ +@c $Id: tm-view-ch=ja.texi,v 2.0 1995/12/17 22:58:11 morioka Exp $ + +@node content-header, content-body, content-subject, MIME display +@comment node-name, next, previous, up +@subsubsection content-header +@cindex content-header + +¤¢¤ë content ¤Î reversed-content-number ¤ò´Ø¿ô +@code{mime-viewer/header-visible-p} Í¿¤¨¤¿»þ¤ÎÊÖ¤êÃͤ¬ @code{t} ¤Ë¤Ê¤ë +¾ì¹ç¡¢¤½¤Î content ¤Î content-header ¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¤³¤ÎȽÄê´Ø¿ô¤Ï¡¢ +°ìÈÖ¾å¤Î content ¤Ç¤Ê¤¯¡¢¤½¤Î content ¤Î¿Æ¤Î content-type ¤¬ÊÑ¿ô +@code{mime-viewer/childrens-header-showing-Content-Type-list} ¤Ç»ØÄꤵ +¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë @code{t} ¤òÊÖ¤·¤Þ¤¹¡£ + +¤³¤Î¾ò·ï¤òÊѤ¨¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤Î´Ø¿ô¤òºÆÄêµÁ¤·¤Æ²¼¤µ¤¤¡£Ã¢¤·¡¢É¸½à¤Ç¤Ï¡¢ +ÊÑ¿ô @code{mime-viewer/childrens-header-showing-Content-Type-list} ¤ò +»²¾È¤·¤Þ¤¹¤¬¡¢ºÆÄêµÁ¤·¤¿¾ì¹ç¡¢¤³¤ÎÊÑ¿ô¤ÎÍ­¸úÀ­¤ÏÊݾڤµ¤ì¤Ê¤¤¤Î¤ÇÃí°Õ¤· +¤Æ²¼¤µ¤¤¡£ + +content-header ¤¬É½¼¨¤µ¤ì¤ë¾ì¹ç¡¢content-header ¤Ï +content-header-filter ¤Ë¤è¤Ã¤ÆÀ°·Á¤µ¤ì¤Þ¤¹¡£¸Æ¤Ð¤ì¤ë +content-header-filter ¤Ï article buffer ¤Î major-mode ¤ò key ¤È¤·¤ÆÊÑ +¿ô @code{mime-viewer/content-header-filter-alist} ¤«¤éõ¤µ¤ì¤Þ¤¹¡£¤â¤·¡¢ +content-header-filter ¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¡¢´Ø¿ô +@code{mime-viewer/default-content-header-filter} ¤¬¸Æ¤Ð¤ì¤Þ¤¹¡£ + + +@defvar mime-viewer/childrens-header-showing-Content-Type-list + +¤¢¤ë content ¤Î»Ò¤ËÅö¤¿¤ë content ¤Î content-header ¤òɽ¼¨¤¹¤Ù¤­ +Content-Type ¤ò¼ý¤á¤¿ list. ´ûÄêÃÍ¤Ï "message/rfc822" ¤Ç¤¢¤ë¡£ + +¤³¤ÎÊÑ¿ô¤Ï´Ø¿ô @code{mime-viewer/header-visible-p} ¤Ë¤è¤Ã¤Æ»²¾È¤µ¤ì¤ë¡£ +@end defvar + + +@deffn{Function} mime-viewer/header-visible-p rcnum cinfo &optional ctype + +content-info @var{cinfo} Ãæ¤Î reversed-content-number ¤¬ @var{rcnum} +¤Ç¤¢¤ë content ¤Î header ¤¬É½¼¨¤µ¤ì¤ë¾ì¹ç¡¢t ¤òÊÖ¤¹¡£¤½¤Î content ¤Î +content-type ¤¬¤¢¤é¤«¤¸¤á¤ï¤«¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢@var{ctype} ¤Ë°ú¿ô¤È¤·¤ÆÅÏ +¤¹¤³¤È¤¬¤Ç¤­¤ë¡£ +@end deffn + + +@defvar mime-viewer/content-header-filter-alist + +article-buffer ¤Î major-mode ¤ò key ¤È¤·¤¿Ï¢Áۥꥹ¥È¤Ç¡¢ÃÍÉô¤Ë¤Ï +content-header-filter ¤¬Æþ¤Ã¤Æ¤¤¤ë¡£ +@end defvar + + +@deffn{Function} mime-viewer/default-content-header-filter + +¤¢¤ë content ¤Î content-header ¤òɽ¼¨¤¹¤Ù¤­»þ¡¢ÊÑ¿ô +@code{mime-viewer/content-header-filter-alist} ¤ÎÃæ¤Ë +content-header-filter ¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¡£ + +ÊÑ¿ô @code{mime-viewer/ignored-field-regexp} ¤ò»²¾È¤¹¤ë¡£ +@end deffn + + +@defvar mime-viewer/ignored-field-list + +content-header ¤òɽ¼¨¤¹¤ë»þ¤Ë¡¢É½¼¨¤·¤Ê¤¤ field ¤ò»ØÄꤹ¤ë¡£ + +Àµµ¬É½¸½¤Î list ¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢¤³¤ÎÃͤò¸µ¤ËÊÑ¿ô +@code{mime-viewer/ignored-field-regexp} ¤¬ºî¤é¤ì¤ë¡£ + +¤³¤ÎÊÑ¿ô¤ÏľÀÜÁàºî¤»¤º¡¢´Ø¿ô @code{tm:add-fields} ¤ä +@code{tm:delete-fields} ¤ò»È¤Ã¤ÆÁàºî¤¹¤ë¡£ +@end defvar diff --git a/doc/tm-view-cs=en.texi b/doc/tm-view-cs=en.texi new file mode 100644 index 0000000..7918e2f --- /dev/null +++ b/doc/tm-view-cs=en.texi @@ -0,0 +1,66 @@ +@c $Id: tm-view-cs_en.texi,v 1.1 1995/12/13 09:29:00 morioka Exp $ + +@node content-subject, content-header, MIME display, MIME display +@comment node-name, next, previous, up +@subsubsection content-subject +@cindex content-subject + +content-subject is a part to display abstract for the content. It is +placed in top of content. + +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 message. It +is called `content-number'. It can be considered as the chapter number +in the message. + +Second string part represents title. It is created by following: + +@itemize @bullet +@item name paramater or x-name parameter in Content-Type field +@item Content-Description field or Subject field +@item filename of uuencode +@end itemize + +If they are not exists, space is displayed. + +Third parenthesis part represents content-type/subtype of the content. +If it is non-MIME part, @code{nil} is displayed. + +Content-subject is used like icon when content-header and content-body +are hidden. For example, + +@example + [2 (image/gif)] +@end example + +if you press `v' key, GIF image is displayed. + + +@defvr{Variable} mime-viewer/content-subject-omitting-Content-Type-list + +List of content-type. If content-type of a content is a member of this +list, its content-subject is not displayed. + +This variable is referenced by function +@code{mime-viewer/default-content-subject-function}. +@end defvr + + +@deffn{Function} mime-viewer/default-content-subject-function rcnum cinfo ctype params subj + +Default value of the variable +@code{mime-viewer/content-subject-function}. It refers variable +@code{mime-viewer/content-subject-omitting-Content-Type-list}. +@end deffn + + +@defvar mime-viewer/content-subject-function rcnum cinfo ctype params subj + +Variable to specify content-subject display function. Default value is +the function @code{mime-viewer/default-content-subject-function}. +@end defvar diff --git a/doc/tm-view-cs=ja.texi b/doc/tm-view-cs=ja.texi new file mode 100644 index 0000000..767afc2 --- /dev/null +++ b/doc/tm-view-cs=ja.texi @@ -0,0 +1,70 @@ +@c $Id: tm-view-cs=ja.texi,v 2.0 1995/12/17 22:58:36 morioka Exp $ + +@node content-subject, content-header, MIME display, MIME display +@comment node-name, next, previous, up +@subsubsection content-subject +@cindex content-subject + +``content-subject'' ¤Ï content ¤ÎÀèƬ¤Ë¤¢¤Ã¤Æ¡¢¤½¤Î content ¤Ë´Ø¤¹¤ëÂç +¤Þ¤«¤Ê¾ðÊó¤òɽ¼¨¤¹¤ëÉôʬ¤Ç¤¹¡£ + +ɸ½à¤Ç¤Ï + +@example + [1.3 test (text/plain)] +@end example + +¤Î¤è¤¦¤Ê´¶¤¸¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£ + +ºÇ½é¤Î¿ô»ú¤Ï message Ãæ¤Î¤³¤Î content ¤Î°ÌÃÖ¤òÀáÈÖ¹æ¤Î¤è¤¦¤Ëɽ¤·¤¿¤â¤Î +¤Ç¡¢``content-number'' ¤È¸Æ¤Ó¤Þ¤¹¡£ + +£²ÈÖÌܤÎʸ»úÎó¤ÏɽÂê¤òɽ¤·¤Þ¤¹¡£¤³¤Î¾ðÊó¤Ï¡¢ + +@itemize @bullet +@item Content-Type field ¤Î name paramater ¤â¤·¤¯¤Ï x-name parameter +¤Ë½ñ¤«¤ì¤¿ file ̾ +@item Content-Description field ¤â¤·¤¯¤Ï Subject field ¤Ë½ñ¤«¤ì¤¿É½Âê +@item uuencode ¤Î¾ì¹ç¤Î file ̾ +@end itemize + +¤«¤éºî¤ê¤Þ¤¹¡£¤É¤ì¤â¸ºß¤·¤Ê¤¤¾ì¹ç¤Ï¶õÇò¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ + +£³ÈÖÌܤγç¸Ì¤ÎÃæ¤Î¾ðÊó¤Ï¤½¤Î content ¤Î content-type/subtype ¤òɽ¤·¤Þ +¤¹¡£Èó MIME part ¤Î¾ì¹ç¡¢@code{nil} ¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ + +¤³¤Î content-subject ¤Ï content-header, content-body ¤òɽ¼¨¤·¤Ê¤¤¾ì¹ç¡¢ +icon ¤Î¤è¤¦¤ÊÌò³ä¤ò²Ì¤¿¤·¤Þ¤¹¡£Î㤨¤Ð¡¢ + +@example + [2 (image/gif)] +@end example + +¤Î¾å¤Ç `v' ¤ò²¡¤»¤Ð¤³¤³¤ËÆþ¤Ã¤Æ¤¤¤ë³¨¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ + + +@defvr{Variable} mime-viewer/content-subject-omitting-Content-Type-list + +ɽ¼¨¤·¤Ê¤¤ Content-Type ¤òÍ×ÁǤȤ¹¤ë list. ´Ø¿ô +@code{mime-viewer/default-content-subject-function} ¤Ë¤è¤Ã¤Æ»²¾È¤µ¤ì¤ë¡£ +@end defvr + + +@deffn{Function} mime-viewer/default-content-subject-function rcnum cinfo ctype params subj + +ɸ½à¤Î content-subject ɽ¼¨´Ø¿ô¡£ÊÑ¿ô +@code{mime-viewer/content-subject-omitting-Content-Type-list} ¤ò»²¾È¤· +¤Æ¤¤¤ë¡£ +@end deffn + + +@defvar mime-viewer/content-subject-function rcnum cinfo ctype params subj + +content-subject ɽ¼¨´Ø¿ô¤òÀßÄꤹ¤ë¤¿¤á¤ÎÊÑ¿ô¡£´ûÄêÃͤϴؿô +@code{mime-viewer/default-content-subject-function} ¤Ç¤¢¤ë¡£ + +¤³¤ÎÊÑ¿ô¤Ë¡¢´Ø¿ô @code{mime-viewer/default-content-subject-function} +°Ê³°¤Î´Ø¿ô¤òÀßÄꤷ¤¿¾ì¹ç¡¢ÊÑ¿ô +@code{mime-viewer/content-subject-omitting-Content-Type-list} ¤ÎÍ­¸úÀ­ +¤ÏÊݾڤµ¤ì¤Ê¤¤¤Î¤ÇÃí°Õ¤¹¤ë¤³¤È¡£ +@end defvar diff --git a/doc/tm-view-m=en.texi b/doc/tm-view-m=en.texi new file mode 100644 index 0000000..ca32fd8 --- /dev/null +++ b/doc/tm-view-m=en.texi @@ -0,0 +1,262 @@ +@c $Id: tm-view-m=en.texi,v 3.0 1995/12/17 23:02:56 morioka Exp $ + +@node method, Mechanism of tm-view, mime/viewer-mode, tm-view +@comment node-name, next, previous, up +@section method +@cindex method + +In @code{mime/viewer-mode}, you can do play (@key{v}), extract +(@key{e}), or print (@key{C-c C-p}) for each content. These operations +are called ``decoding operation(s) (for a content)''. And kind of +decoding operations are called @strong{decoding-mode}. + +When decoding operation is driven, tm-view calls a procedure matched +for the condition, such as content-type. This procedure is called +@strong{method}. + +There are two kinds of method. One is Emacs Lisp function, called +@strong{internal method}. Another one is external program, called +@strong{external method}. + +Internal method operates in Emacs, so it can do carefully. + +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 of content decoding condition +* Format of method value:: +* Example of decoding-condition:: +* environment variables:: +@end menu + + +@node decoding-condition, Format of method value, method, method +@comment node-name, next, previous, up +@subsection Setting of content decoding condition +@cindex content decoding condition + +When decoding operation is driven, tm-view calls a method matched for +the condition searched from the variable +@code{mime/content-decoding-condition}. + +Variable @code{mime/content-decoding-condition} is defined as a list +with the following syntax: + +@lisp + (condition1 condition2 ...) +@end lisp + +Each condition are association-list with the following syntax: + +@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 type content, you can define the condition +like + +@lisp + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)) +@end lisp + +As you notice, now you can define the arguments to pass to a external +method. Refer to @xref{Format of method value} section for more +explanation. + +This condition definition will match all contents whose types are +text/plain. Here is an another example: + +@lisp + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name) + (mode . "play")) +@end lisp + +This will match the content whose type is text/plain and the mode is +play. + +@lisp + ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file) + (mode . "play")) +@end lisp + +This will match all contents which have a mode of play. + +The conditions defined in a mime/content-decoding-condition variable +are examined from top to bottom. The first matching condition becomes +valid and the method specified in that condition definition will be +executed. + + +@node Format of method value, Example of decoding-condition, decoding-condition, method +@comment node-name, next, previous, up +@subsection Format of method value part +@cindex Format of method value part + +You can specify the method field of the decoding-condition definition +in two different ways, + +@lisp + (method . SYMBOL) +@end lisp + +or + +@lisp + (method STRING FLAG ARGUMENT1 ARGUMENT2 ...) +@end lisp + +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. + +When a list is specified in the method field, it will be called as an +external method. + +The list below shows the meaning of the parameters when the external +method is specified in the method field. + +@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 nil, only the content body is + passed to an external method. +@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: + +@table @samp +@item STRING + string itself +@item 'SYMBOL + value gotten using SYMBOL as a key (see below) +@item 'STRING + value gotten using STRING as a key (see below) +@end table + +'SYMBOL can be one of the following: + +@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 + +'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, environment variables, Format of method value, method +@comment node-name, next, previous, up +@subsection Examples of decoding-condition +@cindex Examples of decoding-condition + +The default definition of a mime/content-decoding-condition variable +is shown below. + +@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 + +will work. + +A mime/content-decoding-condition variable 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. + +Following function may be useful to set decoding-condition. It is a +function of tl-atype.el. + + +@deffn{Function} set-atype symbol alist + +Add condition @var{alist} to symbol @var{symbol}. + +Example: + +@lisp +(set-atype 'mime/content-decoding-condition + '((type . "message/external-body") + ("access-type" . "anon-ftp") + (method . mime/decode-message/external-ftp) + )) +@end lisp +@end deffn + + +@node environment variables, , Example of decoding-condition, method +@comment node-name, next, previous, up +@subsection environment variables +@cindex 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. Default value is +`/tmp/'. + +@item VIDEO_DITHER +Dither for mpeg_play. Default value is `gray'. + +@item TM_WWW_BROWSER +WWW browser name. Default value is `netscape'. +@end table diff --git a/doc/tm-view-m=ja.texi b/doc/tm-view-m=ja.texi new file mode 100644 index 0000000..9a9d570 --- /dev/null +++ b/doc/tm-view-m=ja.texi @@ -0,0 +1,249 @@ +@c $Id: tm-view-m=ja.texi,v 2.0 1995/12/17 22:59:35 morioka Exp $ + +@node method, Mechanism of tm-view, mime/viewer-mode, tm-view +@comment node-name, next, previous, up +@section method +@cindex method + +@code{mime/viewer-mode} ¤Ç¤Ï¡¢³Æ content ¤ËÂФ·¤Æ¡¢play (@key{v}), +extract (@key{e}), print (@key{C-c C-p}) ¤È¤¤¤¦Áàºî¤ò¹Ô¤Ê¤¦¤³¤È¤¬¤Ç¤­ +¤Þ¤¹¡£¤³¤¦¤·¤¿Áàºî¤Î¤³¤È¤ò¡Ø¡Êcontent ¤ËÂФ¹¤ë¡Ëdecode Áàºî¡Ù¤È¸Æ¤Ö¤³ +¤È¤Ë¤·¤Þ¤¹¡£¤Þ¤¿¡¢@strong{play}, @strong{extract}, @strong{print} ¤È¤¤ +¤¦ decode Áàºî¤Î¼ïÎà¤Î¤³¤È¤ò @strong{decoding-mode} ¤È¸Æ¤Ö¤³¤È¤Ë¤·¤Þ¤¹¡£ + +decode Áàºî¤¬¹Ô¤Ê¤ï¤ì¤¿»þ¡¢¤½¤Î content ¤Î content-type ¤Ê¤É¤Î¾ò·ï¤ä¤½ +¤Î¾ì¤Î´Ä¶­¤Ë±þ¤¸¤Æ¼ÂºÝ¤Ë¤½¤ÎÁàºî¤ò¼Â¹Ô¤¹¤ë¼ê³¤­¤¬¸Æ¤Ð¤ì¤Þ¤¹¡£¤³¤Î¼ê³ +¤­¤Î¤³¤È¤ò @strong{method} ¤È¸Æ¤Ó¤Þ¤¹¡£ + +method ¤Ë¤Ï¡¢Emacs Lisp ¤Ç½ñ¤«¤ì¤¿ @strong{ÆâÉô method} ¤È¡¢³°Éô +program ¤Ç¼Â¸½¤µ¤ì¤¿ @strong{³°Éô method} ¤¬¤¢¤ê¤Þ¤¹¡£ÆâÉô method ¤Ï +Emacs ¤Îµ¡Ç½¤ò»È¤Ã¤Æ¤­¤áºÙ¤«¤¤½èÍý¤ò¹Ô¤Ê¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£³°Éô method +¤ÏÈóƱ´ü¥×¥í¥»¥¹¸Æ¤Ó½Ð¤·¤ò»È¤Ã¤Æ¼Â¸½¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¼Â¹ÔÃæÂÔ¤¿¤µ¤ì¤º¤Ë +¤¹¤ß¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢ÀŻ߲è¤äÆ°²è¤Ê¤É¤ÎµðÂç¤Ê data ¤òºÆÀ¸¤¹¤ë¤Î¤ËÎɤ¤¤Ç +¤·¤ç¤¦¡£ + +@menu +* decoding-condition:: content ¤Î decode ¾ò·ï¤ÎÀßÄê +* Format of method value:: method ¤ÎÃÍÉô¤Î½ñ¼° +* Example of decoding-condition:: ÀßÄêÎã +* environment variables:: ´Ä¶­ÊÑ¿ô +@end menu + + +@node decoding-condition, Format of method value, method, method +@comment node-name, next, previous, up +@subsection content ¤Î decode ¾ò·ï¤ÎÀßÄê +@cindex content decoding condition + +tm-view ¤Ï decode Áàºî¤¬¹Ô¤Ê¤ï¤ì¤ë¤È¡¢ÊÑ¿ô +@code{mime/content-decoding-condition} ¤«¤é¤½¤Î»þ¤Î¾ò·ï¤Ë¹çÃפ·¤¿ +method ¤òÁܤ·½Ð¤·¤Æ¡¢¤½¤ì¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ + +ÊÑ¿ô @code{mime/content-decoding-condition} ¤Ï + +@lisp + (¾ò·ï1 ¾ò·ï2 ...) +@end lisp + +¤È¤¤¤¦·Á¤ò¤·¤¿ list ¤Ç¡¢³Æ¾ò·ï¤Ï + +@lisp + ((field-type_1 . value_1) + (field-type_2 . value_2) + ...) +@end lisp + +¤È¤¤¤¦·Á¤ÎÏ¢ÁÛ list ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ + +Î㤨¤Ð¡¢text/plain ¤Î»þ¡¢tm-plain ¤òµ¯Æ°¤¹¤ë»þ¡¢ + +@lisp + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)) +@end lisp + +¤È¤¤¤¦¾ò·ï¤ò½ñ¤­¤Þ¤¹¡£¤³¤Î method ¤Î value Éô¤Î½ñ¼°¤Ë¤Ä¤¤¤Æ¤Ï¸å¤Ç¾Ü¤· +¤¯½Ò¤Ù¤Þ¤¹¡£ + +¤³¤Î¾ò·ï¤Ï content-type ¤¬ text/plain ¤Ç¤¢¤ë content ¤Ê¤éÁ´¤Æ¤Î +decoding-mode ¤ÇÍ­¸ú¤Ç¤¹¡£¤·¤«¤·¡¢ + +@lisp + ((type . "text/plain") + (method "tm-plain" nil 'file 'type 'encoding 'mode 'name) + (mode . "play")) +@end lisp + +¤Ê¤é¡¢play mode ¤Î»þ¤·¤«Í­¸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ + +µÕ¤Ë¡¢ + +@lisp + ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file) + (mode . "play")) +@end lisp + +¤Ê¤é¡¢Á´¤Æ¤Î content-type ¤Î play mode ¤ÇÍ­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£ + +¤³¤¦¤·¤Æ³Æ¾ò·ï¤òÁ°¤«¤é¸«¤Æ¹Ô¤­¡¢ºÇ½é¤ËÍ­¸ú¤Ë¤Ê¤Ã¤¿¾ò·ï¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£ + + +@node Format of method value, Example of decoding-condition, decoding-condition, method +@comment node-name, next, previous, up +@subsection method ¤ÎÃÍÉô¤Î½ñ¼° +@cindex method ¤ÎÃÍÉô¤Î½ñ¼° + +decode-condition ¤Î method field ¤Ï + +@lisp + (method . SYMBOL) +@end lisp + +¤« + +@lisp + (method ʸ»úÎó FLAG °ú¿ô1 °ú¿ô2 ...) +@end lisp + +¤È¤¤¤¦·Á¤ò¤·¤Æ¤¤¤Þ¤¹¡£ + +Á°¼Ô¤ÏÆâÉô method ¤ò»ØÄꤹ¤ë¤¿¤á¤Î·Á¼°¤Ç¡¢decode Áàºî¤¬¹Ô¤Ê¤ï¤ì¤¿»þ¡¢ +SYMBOL ¤È¤¤¤¦´Ø¿ô¤¬´Ø¿ô¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤ÆÆâÉô method ¤È¤·¤Æ¸Æ¤Ó½Ð¤µ¤ì¤Þ +¤¹¡£ + +¸å¼Ô¤Ï³°Éô method ¤ò»ØÄꤹ¤ë¤¿¤á¤Î·Á¼°¤Ç¡¢decode Áàºî¤¬¹Ô¤Ê¤ï¤ì¤¿»þ¡¢ +ʸ»úÎó¤Ç»ØÄꤵ¤ì¤¿³°Éô program ¤¬ÈóƱ´ü¥×¥í¥»¥¹¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ³°Éô +method ¤È¤·¤Æ¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£ + + +³°Éô method ¤ò»ØÄꤹ¤ë¾ì¹ç¤Î method field ¤Î½ñ¼°¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£ + +@table @samp +@item ʸ»úÎó + ³°Éô method ¤Î̾Á° +@item FLAG + @code{t} ¤Ê¤é content-header ¤â³°Éô method ¤ËÅϤ¹¡£@code{nil} + ¤Ê¤é content-body ¤Î¤ß¤òÅϤ¹¡£ +@item °ú¿ôÎó + ³°Éô method ¤Î°ú¿ô +@end table + +¤Þ¤¿¡¢³°Éô method ¤Î°ú¿ô¤Ï¼¡¤Î¤è¤¦¤Ê·Á¼°¤Ç½ñ¤­¤Þ¤¹¡£ + +@table @samp +@item ʸ»úÎó + ¤½¤Îʸ»úÎó¤òÅϤ¹ +@item 'SYMBOL + SYMBOL ¤ò key ¤È¤·¤¿ decoding-condition ¤ÎÃͤòÅϤ¹ +@item 'ʸ»úÎó + ʸ»úÎó¤ò key ¤È¤·¤¿ decoding-condition ¤ÎÃͤòÅϤ¹ +@end table + +'SYMBOL ¤Ç»ØÄê¤Ç¤­¤ë¤â¤Î¤Ë¤Ï¡¢ + +@table @samp +@item 'file + content ¤òÅϤ¹¤¿¤á¤Î file ̾ +@item 'type + Content-Type field ¤Î content-type/subtype +@item 'encoding + Content-Transfer-Encoding field ¤Î field body +@item 'mode + decoding-mode +@item 'name + file ¤ËÍ¾ì¹ç¤Î file ̾ +@end table + +¤Ê¤É¤¬¤¢¤ê¡¢'ʸ»úÎó ¤Ç¤Ï Content-Type field ¤Î parameter ¤ÎÃͤ¬»ØÄê¤Ç +¤­¤Þ¤¹¡£ + + +@node Example of decoding-condition, environment variables, Format of method value, method +@comment node-name, next, previous, up +@subsection decoding-condition ¤ÎÎã +@cindex decoding-condition ¤ÎÎã + +°Ê²¼¤Ë 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 + +Î㤨¤Ð¡¢¡ÖÁ´Éô metamail »È¤¦¤ó¤ä¡×¤È¤¤¤¦¾ì¹ç¡¢ + +@lisp +(setq mime/content-decoding-condition + '( + ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)) + )) +@end lisp + +¤È¤¹¤ì¤Ð OK ¤Ç¤¹¡£ + +¹©Éפ¹¤ì¤Ð¡¢¤«¤Ê¤êÊ£»¨¤Ê¾ò·ï¤¬½ñ¤±¤ë¤Ç¤·¤ç¤¦¡£ + + +°Ê²¼¤Ë¡¢decoding-condition ¤òÀßÄꤹ¤ë¤¿¤á¤ÎÍ­ÍѤʴؿô¤ò¾Ò²ð¤·¤Þ¤¹¡£ + + +@deffn{Function} set-atype symbol alist + +@var{symbol} ¤Ë¾ò·ï @var{alist} ¤òÄɲä·¤Þ¤¹¡£ + +Î㡧 + +@lisp +(set-atype 'mime/content-decoding-condition + '((type . "message/external-body") + ("access-type" . "anon-ftp") + (method . mime/decode-message/external-ftp) + )) +@end lisp +@end deffn + + +@node environment variables, , Example of decoding-condition, method +@comment node-name, next, previous, up +@subsection ´Ä¶­ÊÑ¿ô +@cindex environment variables + +°Ê²¼¤Ë tm-view ¤Îɸ½à method ¤¬»²¾È¤¹¤ë´Ä¶­ÊÑ¿ô¤ò¼¨¤·¤Þ¤¹¡£ + +@table @var +@item TM_TMP_DIR +°ì»þŪ¤ËºîÀ®¤µ¤ì¤ë file ¤ä file ½ÐÎϤ¹¤ë¾ì¹ç¤Î default ¤Î½ÐÎÏÀè¤È¤·¤Æ +ÍѤ¤¤é¤ì¤ë directory ¤ò»ØÄꤹ¤ë¡£¾Êά¤µ¤ì¤¿¾ì¹ç¡¢/tmp/ ¤¬ÍѤ¤¤é¤ì¤ë¡£ + +@item VIDEO_DITHER +mpeg_play ¤Ç¤Î dither ¤Î¤«¤±Êý¤ò»ØÄꤹ¤ë¡£´ûÄêÃÍ¤Ï `gray'. + +@item TM_WWW_BROWSER +WWW browser ¤ò»ØÄꤹ¤ë¡£´ûÄêÃÍ¤Ï `netscape'. +@end table diff --git a/doc/tm-view-p=en.texi b/doc/tm-view-p=en.texi new file mode 100644 index 0000000..6973930 --- /dev/null +++ b/doc/tm-view-p=en.texi @@ -0,0 +1,45 @@ +@c $Id: tm-view-p=en.texi,v 2.0 1995/12/17 23:03:24 morioka Exp $ + +@node preview-buffer, , article-buffer, Mechanism of tm-view +@comment node-name, next, previous, up +@subsection preview-buffer + +@defvar mime::preview/mother-buffer + +Mother buffer of this preview-buffer. +@end defvar + + +@defvar mime::preview/content-list + +List of preview-content-info to represent structure of this +preview-buffer. +@end defvar + + +@defvar mime::preview/article-buffer + +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}. + +Default value of @var{cinfo} is @code{mime::preview/content-list}. +@end defun diff --git a/doc/tm-view-p=ja.texi b/doc/tm-view-p=ja.texi new file mode 100644 index 0000000..b6265f6 --- /dev/null +++ b/doc/tm-view-p=ja.texi @@ -0,0 +1,67 @@ +@c $Id: tm-view-p=ja.texi,v 2.0 1995/12/17 23:00:03 morioka Exp $ + +@node preview-buffer, , article-buffer, Mechanism of tm-view +@comment node-name, next, previous, up +@subsection preview-buffer + +@defvar mime::preview/mother-buffer + +¤³¤Î preview-buffer ¤Î¿Æ¤ËÁêÅö¤¹¤ë buffer. +@end defvar + + +@defvr{Structure} mime::preview-content-info point-min point-max buffer content-info + +preview-buffer ¤Ë¤ª¤±¤ë MIME content ¤Ë´Ø¤¹¤ë¾ðÊó¤ò³ÊǼ¤¹¤ë¤¿¤á¤Î¹½Â¤ +ÂΡ£Ã±¤Ë @strong{preview-content-info} ¤È¤â¸Æ¤Ö¡£ + +@table @var +@item point-min +preview-buffer ¤Ë¤ª¤±¤ëÀèƬ point + +@item point-max +preview-buffer ¤Ë¤ª¤±¤ëËöÈø point + +@item buffer +¤³¤Î content ¤ËÂбþ¤¹¤ë article-buffer + +@item content-info +¤³¤Î content ¤ËÂбþ¤¹¤ë content-info +@end table + +@end defvr + + +@defvar mime::preview/content-list + +¤³¤Î preview-buffer ¤Î¹½Â¤¤ò¤¢¤é¤ï¤¹ preview-content-info ¤Î list. +@end defvar + + +@defvar mime::preview/article-buffer + +¤³¤Î preview-buffer ¤ËÂбþ¤¹¤ë article-buffer. +@end defvar + + +@defvar mime::preview/original-major-mode + +¤³¤Î preview-buffer ¤Î¤â¤È¤Ë¤Ê¤Ã¤¿ buffer ¤Î major-mode. +@end defvar + + +@defvar mime::preview/original-window-configuration + +@code{mime/viewer-mode} ¤ò¼Â¹Ô¤·¤Æ¡¢¤³¤Î preview-buffer ºî¤ëľÁ°¤Î +window-configuration. +@end defvar + + +@defun mime-preview/point-pcinfo point &optional pcl + +preview-content-info @var{pcl} ¤Ç´ÉÍý¤µ¤ì¤ë preview-buffer Ãæ¤ÎÎΰè¤Ë +¤ª¤¤¤Æ¡¢@var{point} ¤ËÂбþ¤¹¤ë content ¤Î preview-content-info ¤òÊÖ¤¹¡£ + +@var{cinfo} ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¢@code{mime::preview/content-list} ¤¬ÍÑ +¤¤¤é¤ì¤ë¡£ +@end defun diff --git a/doc/tm-view=en.texi b/doc/tm-view=en.texi new file mode 100644 index 0000000..50b7bc8 --- /dev/null +++ b/doc/tm-view=en.texi @@ -0,0 +1,281 @@ +@c{$Id: tm-view=en.texi,v 7.6 1995/12/17 23:03:47 morioka Exp $} + +@node tm-view, encoded-word, tm-MUA, Top +@comment node-name, next, previous, up +@chapter tm-view +@cindex tm-view + +The tm-view is a general MIME viewer running on GNU Emacs. + +tm-view provides the major-mode called @code{mime/viewer-mode} to read +MIME message for MUA. MUA implementer can use it to add MIME function. + +tm-view is a user interface kernel to view and navigate MIME message. +tm-view drives some programs to navigate each content-type/sub-types, +they are called @strong{method}. tm-view calls some programs to +display each content-type/sub-types in preview buffer, they are called +@strong{filter}. @strong{method} and @strong{filter} are tm-view +application program. They expand tm-view to treat various kinds of +MIME types. + +@menu +* mime/viewer-mode:: +* Mechanism of tm-view:: +* method:: decoding mechanism +* Functions of tm-view:: +@end menu + + +@node mime/viewer-mode, method, tm-view, tm-view +@comment node-name, next, previous, up +@section mime/viewer-mode +@cindex mime/viewer-mode + +@code{mime/viewer-mode} is a major-mode to preview MIME message. In +MIME viewer mode, you can navigate MIME message interactively. + +@menu +* MIME display:: +* MIME navigation:: +@end menu + +@node MIME display, MIME navigation, mime/viewer-mode, mime/viewer-mode +@comment node-name, next, previous, up +@subsection Screen design of preview buffer +@cindex Screen design of preview buffer + +In preview buffer, following are displayed for each content: + +@example + [content-subject] + (content-header) + + (content-body) + (content-separator) +@end example + +You can change design or stop to display if you specify for each +content-types. + +Example: + +@example +From: MORIOKA Tomohiko +Newsgroups: zxr.comp.emacs.tm-english +Subject: tm6.63.tar.gz +Date: Mon, 26 Jun 1995 17:39:50 JST +Organization: Chamonix, JAIST, Tatsunokuchi, Ishikawa, Japan +Reply-To: tm-eng@@chamonix.jaist.ac.jp +To: tm-eng@@chamonix.jaist.ac.jp +In-Reply-To: Your message of "Sun, 25 Jun 1995 23:20:49 MST" +X-Mua: mh-e 4.1 + tm 6.63 / Mule 2.2 (WAKAMURASAKI) PL02 +X-Mime-Composer: mime.el + tiny-mime 5.12 +X-Ml-Count: 32 + +[1 (text/plain)] + I put tm6.63.tar.gz in ftp.jaist.ac.jp. + + In this version, tm-view uses new MIME encoding/decoding engine +``mel (MIME encoding library''. This library has internal/external +encoding/decoding engine. If data is smaller than a limit, tm-view +uses internal decoder, otherwise external decoder. + +[2 tm6.63.tar.gz ([anon-ftp] ftp.jaist.ac.jp:/pub/GNU/elisp/mime/alpha)] + +[3 (text/plain)] +---- +MORIOKA, Tomohiko +@end example + + +@menu +* content-subject:: +* content-header:: +* content-body:: +* content-separator:: +@end menu + +@include tm-view-cs=en.texi +@include tm-view-ch=en.texi +@include tm-view-cb=en.texi + + +@node content-separator, , content-body, MIME display +@comment node-name, next, previous, up +@subsubsection content-separator +@cindex content-separator + +Content-separator is displayed to represent boundary of contents. + +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. + +If you want to change this condition, please redefine this function. + + +@deffn{Function} mime-viewer/default-content-separator cnum 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. + +In default, it displays line-break when content-header and +content-body are not displayed. +@end deffn + + +@node MIME navigation, , MIME display, mime/viewer-mode +@comment node-name, next, previous, up +@subsection Commands of mime/viewer-mode +@cindex Commands of mime/viewer-mode + +@code{mime/viewer-mode} has following functions: + +@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 content (*2) + +@item @key{e} +extracts a file from a content (*2) + +@item @key{C-c C-p} +prints a content (*2) + +@item @key{f} +displays X-Face in the message + +@item @key{mouse-button-2} +drives mouse button. + +If you press content-subject, it playbacks the content. (*2) + +If you press URL-button, it runs WWW browser. +@end table + + +@b{[Notice]} +@enumerate +@item +Not return to the Summary mode unless tm-view has been setup using +tm-mh-e, tm-gnus, tm-rmail etc. + +@item +Actual playback/extract/print will be performed by a method. +@end enumerate + + +@include tm-view-m=en.texi + + +@node Mechanism of tm-view, Functions of tm-view, method, tm-view +@comment node-name, next, previous, up +@section Mechanism of tm-view +@cindex mechanism of tm-view + +tm-view managements two buffers, one is for raw message called +@strong{article buffer}, another one is to preview for user called +@strong{preview buffer}. + +When called @code{mime/viewer-mode}, tm-view analyzes article buffer, +and sets its result to the variable @code{mime::article/content-info}. + +After that, tm-view create a preview buffer corresponded to the +article buffer. As this time, tm-view modifies header and body of each +contents of the message. It is done by definition for Content-Types. + +On the preview buffer created by tm-view, user can manipulate a +message to decode, such as run external vewer, extract files, or +print. + +Notice: In this document, I call @strong{content-type} as +content-type/subtype of Content-Type field. + + +@menu +* article-buffer:: +* preview-buffer:: +@end menu + +@include tm-view-a=en.texi + +@include tm-view-p=en.texi + + +@node Functions of tm-view, , Mechanism of tm-view, tm-view +@comment node-name, next, previous, up +@section Functions of tm-view + +tm-view provides some available functions to decode and navigate MIME +message to each MUAs. + +There are 2 kinds of functions, one is for MIME preview, another one +is to decode RFC 1522 encoded-word. + +Memo: Old tiny-mime.el was abolished. Functions to decode RFC 1522 +encoded-word are took over to tm-view. + + +@menu +* function to preview:: +* encoded-word decoding:: +@end menu + + +@node function to preview, encoded-word decoding, Functions of tm-view, Functions of tm-view +@comment node-name, next, previous, up +@subsection function to preview MIME message +@cindex mime/viewer-mode + +@deffn{Command} mime/viewer-mode &optional mother ctl encoding + +Parse current-buffer as a MIME message, and create preview buffer to +display to user, then enter @code{mime/viewer-mode}. + +@var{mother} is used to specify original article buffer. It may be +useful when an article buffer is assembled from message/partial. + +@var{ctl} is used to specify 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 +article buffer. + +@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 article buffer. +@end deffn + + +@include tm-ew-d=en.texi diff --git a/doc/tm-view=ja.texi b/doc/tm-view=ja.texi new file mode 100644 index 0000000..2a53dcd --- /dev/null +++ b/doc/tm-view=ja.texi @@ -0,0 +1,292 @@ +@c $Id: tm-view=ja.texi,v 7.9 1995/12/17 23:00:33 morioka Exp $ + +@node tm-view, encoded-word, tm-MUA, Top +@comment node-name, next, previous, up +@chapter tm-view +@cindex tm-view + +tm-view ¤Ï GNU Emacs ¤ÇÆ°ºî¤¹¤ëÈÆÍÑŪ¤Ê MIME viewer ¤Ç¤¹¡£ + +tm-view ¤Ï @code{mime/viewer-mode} ¤È¤¤¤¦ MIME message ¤ò¸«¤ë¤¿¤á¤Î +major-mode ¤ò MUA ¤ËÂФ·¤ÆÄ󶡤·¤Þ¤¹¡£MUA ¤ÎÀ߷׼ԤϤ³¤Î mode ¤òÍøÍѤ¹ +¤ë¤³¤È¤Ç¤½¤Î MUA ¤Ë MIME µ¡Ç½¤òÉղ乤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ + +tm-view ¤Ï MIME message ¤ò±ÜÍ÷¤¹¤ë¤¿¤á¤Î user interface ¤Î³Ë¤Ç¤¢¤ê¡¢¤½ +¤Î¾å¤Ç³Æ content-type/sub-type ¤ò°·¤¦¤¿¤á¤Î @strong{method} ¤È¸Æ¤Ð¤ì¤ë +¥×¥í¥°¥é¥à¤òÆ°ºî¤µ¤»¤Þ¤¹¡£¤Þ¤¿¡¢MIME message ¤Îɽ¼¨¤Î»ÅÊý¤ò·è¤á¤ë +@strong{filter} ¤È¸Æ¤Ð¤ì¤ë¥×¥í¥°¥é¥à¤òµ¯Æ°»þ¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +@strong{method} ¤È @strong{filter} ¤ò tm-view ¤ËÁȤ߹þ¤à»ö¤Ë¤è¤Ã¤Æ¡¢ +@code{mime/viewer-mode} ¤Ç¤µ¤Þ¤¶¤Þ¤Ê MIME type ¤ò°·¤¦»ö¤¬¤Ç¤­¤Þ¤¹¡£ + +@menu +* mime/viewer-mode:: mime/viewer-mode +* method:: decoding Áàºî¤Î¼Â¸½ +* Mechanism of tm-view:: tm-view ¤Î»ÅÁÈ¤ß +* Functions of tm-view:: tm-view ¤Î´Ø¿ô +@end menu + + +@node mime/viewer-mode, method, tm-view, tm-view +@comment node-name, next, previous, up +@section mime/viewer-mode +@cindex mime/viewer-mode + +@code{mime/viewer-mode} ¤Ï MIME message ¤ò±ÜÍ÷¤¹¤ë¤¿¤á¤Î major-mode ¤Ç +¤¹¡£MIME viewer mode ¤Ç¤ÏÂÐÏÃŪ¤Ë MIME message ¤òÁàºî¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ +¤¹¡£ + +@menu +* MIME display:: mime/viewer-mode ¤Î²èÌ̹½À® +* MIME navigation:: mime/viewer-mode ¤Ç¤ÎÁàºî +@end menu + + +@node MIME display, MIME navigation, mime/viewer-mode, mime/viewer-mode +@comment node-name, next, previous, up +@subsection mime/viewer-mode ¤Î²èÌ̹½À® + +mime/viewer-mode ¤Ç¤Ï³Æ content ¤ËÂФ·¤Æ + +@example + [content-subject] + (content-header) + + (content-body) + (content-separator) +@end example + +¤È¤¤¤¦¾ðÊó¤òɽ¼¨¤·¤Þ¤¹¡£¤³¤ì¤é¤Ï content-type Ëè¤Ë design ¤òÊѹ¹¤·¤¿¤ê¡¢ +ɽ¼¨¤òÍÞÀ©¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ + +°Ê²¼¤Ë¡¢É½¼¨Îã¤ò¼¨¤·¤Þ¤¹¡£ + + +@example +From: ¼é²¬ ÃÎɧ (MORIOKA Tomohiko) +Newsgroups: zxr.comp.emacs.tm-english +Subject: tm6.63.tar.gz +Date: Mon, 26 Jun 1995 17:39:50 JST +Organization: Chamonix, JAIST, Tatsunokuchi, Ishikawa, Japan +Reply-To: tm-eng@@chamonix.jaist.ac.jp +To: tm-eng@@chamonix.jaist.ac.jp +In-Reply-To: Your message of "Sun, 25 Jun 1995 23:20:49 MST" +X-Mua: mh-e 4.1 + tm 6.63 / Mule 2.2 ( ¼ã»ç ) PL02 +X-Mime-Composer: mime.el + tiny-mime 5.12 +X-Ml-Count: 32 + +[1 (text/plain)] + I put tm6.63.tar.gz in ftp.jaist.ac.jp. + + In this version, tm-view uses new MIME encoding/decoding engine +``mel (MIME encoding library''. This library has internal/external +encoding/decoding engine. If data is smaller than a limit, tm-view +uses internal decoder, otherwise external decoder. + +[2 tm6.63.tar.gz ([anon-ftp] ftp.jaist.ac.jp:/pub/GNU/elisp/mime/alpha)] + +[3 (text/plain)] +---- +MORIOKA, Tomohiko +@end example + + +@menu +* content-subject:: +* content-header:: +* content-body:: +* content-separator:: +@end menu + +@include tm-view-cs=ja.texi +@include tm-view-ch=ja.texi +@include tm-view-cb=ja.texi + + +@node content-separator, , content-body, MIME display +@comment node-name, next, previous, up +@subsubsection content-separator +@cindex content-separator + +content-separator ¤Ï content ¤Î°ìÈֺǸå¤Ë content ´Ö¤Î¶­ÌܤòÌÀ¤é¤«¤Ë¤¹ +¤ë¤¿¤á¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£ + +content-separator ¤Ï´Ø¿ô @code{mime-viewer/default-content-separator} +¤Ë¤è¤Ã¤Æɽ¼¨¤µ¤ì¤Þ¤¹¡£É¸½à¤Ç¤Ï¡¢content-header ¤â content-body ¤âɽ¼¨ +¤µ¤ì¤Ê¤¤¾ì¹ç¤Î¤ß¡¢²þ¹Ô¤òɽ¼¨¤·¤Þ¤¹¡£ + +content-separator ¤ÎÀßÄê¤òÊѹ¹¤·¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤Î´Ø¿ô¤òºÆÄêµÁ¤·¤Æ²¼¤µ¤¤¡£ + + +@deffn{Function} mime-viewer/default-content-separator rcnum cinfo ctype params subj + +content-number ¤¬ @var{cnum} ¤Ç¤¢¤ë content ¤Î content-separator ¤òɽ +¼¨¤¹¤ë¡£É¸½à¤Ç¤Ï¡¢content-header ¤â content-body ¤âɽ¼¨¤µ¤ì¤Ê¤¤¾ì¹ç¤Î +¤ß¡¢²þ¹Ô¤òɽ¼¨¤¹¤ë¡£ +@end deffn + + +@node MIME navigation, , MIME display, mime/viewer-mode +@comment node-name, next, previous, up +@subsection mime/viewer-mode ¤Ç¤ÎÁàºî + +mime/viewer-mode ¤Ë¤Ï°Ê²¼¤Îµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¡£ + +@table @kbd +@item @key{u} +¾å¤Î content ¤ËÌá¤ë¡Êmessage ¤Î°ìÈÖ¾å¤Î content ¤Ç¤³¤ì¤ò¹Ô¤Ê¤¦¤È +Summary mode ¤ËÌá¤ë (*1)¡Ë + +@item @key{p} +Á°¤Î content ¤Ë°ÜÆ°¤¹¤ë + +@item @key{n} +¼¡¤Î content ¤Ë°ÜÆ°¤¹¤ë + +@item @key{SPC} +scroll up ¤¹¤ë + +@item @key{M-SPC} +scroll down ¤¹¤ë + +@item @key{DEL} +scroll down ¤¹¤ë + +@item @key{RET} +¼¡¤Î¹Ô¤Ë°ÜÆ°¤¹¤ë + +@item @key{M-RET} +Á°¤Î¹Ô¤Ë°ÜÆ°¤¹¤ë + +@item @key{M-RET} +Á°¤Î¹Ô¤Ë°ÜÆ°¤¹¤ë + +@item @key{<} +message ¤ÎÀèƬ¤Ë°ÜÆ°¤¹¤ë + +@item @key{>} +message ¤ÎËöÈø¤Ë°ÜÆ°¤¹¤ë + +@item @key{v} +content ¤òºÆÀ¸¤¹¤ë (*2) + +@item @key{e} +content ¤«¤é file ¤ò¼è¤ê½Ð¤¹ (*2) + +@item @key{C-c C-p} +content ¤ò°õºþ¤¹¤ë (*2) + +@item @key{f} +message Ãæ¤Î X-Face ¤òɽ¼¨¤¹¤ë + +@item @key{mouse-button-2} +preview-buffer Ãæ¤Î mouse button ¤òµ¯Æ°¤¹¤ë + +content-subject ¤ò²¡¤»¤Ð¡¢¤½¤Î content ¤¬ºÆÀ¸¤µ¤ì¤ë(*2) + +URL-button ¤ò²¡¤»¤Ð¡¢¤½¤Î WWW browser ¤¬µ¯Æ°¤µ¤ì¤ë +@end table + + +@b{¡ÎÃí°Õ¡Ï} +@enumerate +@item +tm-MUA ¤Ç tm-view ¤ÎÀßÄê¤ò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢Summary mode ¤Ë¤ÏÌá¤ê¤Þ¤»¤ó¡£ + +@item +¼ÂºÝ¤ÎÆ°ºî¤ÏÂбþ¤¹¤ë method ¤Ë°Í¤ê¤Þ¤¹¡£ +@end enumerate + + +@include tm-view-m=ja.texi + + +@node Mechanism of tm-view, Functions of tm-view, method, tm-view +@comment node-name, next, previous, up +@section tm-view ¤Î»ÅÁÈ¤ß + +tm-view ¤Ï¡¢MIME ½èÍý¤ò¹Ô¤Ê¤¦Á°¤ÎÀ¸¤Î message ¤¬Æþ¤Ã¤Æ¤¤¤ë +@strong{article-buffer} ¤È¤½¤ÎÆâÍƤò user ¤Ë´Ê·é¤Ëɽ¼¨¤·¡¢user ¤¬Áàºî +¤¹¤ë¤¿¤á¤Î @strong{preview-buffer} ¤È¤¤¤¦£²¤Ä¤Î buffer ¤ò´ÉÍý¤·¤Þ¤¹¡£ +article-buffer ¤Î major-mode ¤Ï¤â¤È¤â¤È¤Î MUA ¤Î article ɽ¼¨ÍѤΠ+major-mode ¤Ç¤¢¤ê¡¢preview-buffer ¤Î major-mode ¤Ï mime/viewer-mode ¤È +¤Ê¤ê¤Þ¤¹¡£ + +@code{mime/viewer-mode} ¤ò¼Â¹Ô¤¹¤ë¤È¡¢tm-view ¤Ï¤Þ¤º article-buffer ¤Î +ÆâÍƤò²òÀϤ·¡¢¤½¤Î message ¤Î¹½Â¤¤ò article-buffer ¤Î buffer local ÊÑ +¿ô @code{mime::article/content-info} ¤Ëµ­Ï¿¤·¤Þ¤¹¡£ + +¼¡¤Ë¡¢¤³¤Î·ë²Ì¤ò¸µ¤Ë article-buffer ¤ËÂбþ¤¹¤ë preview-buffer ¤òºî¤ê¤Þ +¤¹¡£¤³¤ÎºÝ¡¢content-type ¤Ë±þ¤¸¤Æ¡¢content ñ°Ì¤Ç header ¤ä body ¤ò²Ã +¹©¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î header ¤ò²Ã¹©¤¹¤ë¥×¥í¥°¥é¥à¤ò +@strong{header-filter}, body ¤ò²Ã¹©¤¹¤ë¥×¥í¥°¥é¥à¤ò +@strong{content-filter} ¤È¸Æ¤Ó¡¢¤³¤ì¤é¤òÁí¾Î¤·¤Æ @strong{filter} ¤È¸Æ +¤Ó¤Þ¤¹¡£ + +preview-buffer ¤òºîÀ®¤¹¤ë»þ¤Ë¡¢message ¤Îɽ¼¨¾å¤Î¹½Â¤¤òµ­Ï¿¤·¤¿ +preview-buffer ¤Î buffer local ÊÑ¿ô @code{mime::preview/content-list} +¤¬ºî¤é¤ì¤Þ¤¹¡£tm-view ¤Ï article-buffer ¾å¤Î +@code{mime::article/content-info} ¤È preview-buffer ¾å¤Î +@code{mime::preview/content-list} ¤òÍѤ¤¤Æ message ¤ò´ÉÍý¤·¤Þ¤¹¡£ + + +Ãí°Õ¡§ ¤³¤ÎÀâÌÀ½ñ¤Ç¤Ï¡¢Content-Type field ¤Î content-type/subtype ¤Î¤³ +¤È¤ò¾Î¤·¤Æ @strong{content-type} ¤È¸Æ¤Ó¤Þ¤¹¡£ + + +@menu +* article-buffer:: article-buffer +* preview-buffer:: preview-buffer +@end menu + +@include tm-view-a=ja.texi + +@include tm-view-p=ja.texi + + +@node Functions of tm-view, , Mechanism of tm-view, tm-view +@comment node-name, next, previous, up +@section MIME message ¤Î decode ¤Ë´Ø¤¹¤ë´Ø¿ô + +tm-view ¤ÎÄ󶡤¹¤ë´Ø¿ô¤ò³Æ MUA ¤ËÁȤ߹þ¤à»ö¤Ë¤è¤Ã¤Æ¡¢³Æ MUA ¤Ë MIME ºÆ +À¸µ¡Ç½¤òÉղ乤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£ + +tm-view ¤¬³Æ MUA ¤ËÄ󶡤¹¤ë´Ø¿ô¤Ï¡¢MIME preview ¤ò¹Ô¤¦¤¿¤á¤Î´Ø¿ô +@code{mime/viewer-mode} ¤È RFC 1522 encoded-word ¤ò decode ¤¹¤ë¤¿¤á¤Î +´Ø¿ô·²¤Ç¤¹¡£ + +Memo: µì tiny-mime.el ¤Ë¤¢¤Ã¤¿ RFC 1522 encoded-word ¤ò decode ¤¹¤ë¤¿ +¤á¤Î´Ø¿ô·²¤Ï tm-view ¤Ë°ú¤­·Ñ¤¬¤ì¤Þ¤·¤¿¡£ + + +@menu +* function to preview:: MIME message ¤ò preview ¤¹¤ë¤¿¤á¤Î´Ø¿ô +* encoded-word decoding:: encoded-word ¤ò decode ¤¹¤ë¤¿¤á¤Î´Ø¿ô +@end menu + + +@node function to preview, encoded-word decoding, Functions of tm-view, Functions of tm-view +@comment node-name, next, previous, up +@subsection MIME message ¤ò±ÜÍ÷¤¹¤ë¤¿¤á¤Î´Ø¿ô +@cindex mime/viewer-mode + +@deffn{Command} mime/viewer-mode &optional mother ctl encoding + +current-buffer ¤ò MIME message ¤È¤·¤Æ²òÀϤ·¤Æ¡¢¤½¤ÎÆâÍƤò±ÜÍ÷¤¹¤ë¤¿¤á +¤Î preview-buffer ¤òºîÀ®¤·¡¢@code{mime/viewer-mode} ¤ËÆþ¤ê¤Þ¤¹¡£ + +@var{mother} ¤Ï¡¢²òÀϤÎÂоݤȤ¹¤ë article-buffer ¤¬ message/partial ·Á +¼°¤Îʬ³ä¤µ¤ì¤¿ message ¤ò·ë¹ç¤·¤ÆºîÀ®¤·¤¿¾ì¹ç¤Ê¤É¤Ë¤ª¤±¤ë¸µ¤Î buffer +¤ò»ØÄꤹ¤ë¤¿¤á¤Ë»È¤¤¤Þ¤¹¡£ + +@var{ctl} ¤Ï Content-Type field ¤Î field-body ¤ò +@code{mime/Content-Type} ¤Î½ÐÎÏÀµ¼°¤Ë¤·¤¿¤â¤Î¤òÆþ¤ì¤Þ¤¹¡£¤³¤Î°ú¿ô¤¬¤¢ +¤ë¾ì¹ç¡¢article-buffer ¤Î Content-Type field ¤è¤ê¤â¤³¤Î°ú¿ô¤òÍ¥À褷¤Þ +¤¹¡£ + +@var{encoding} ¤Ï Content-Transfer-Encoding field ¤Î field-body ¤òÆþ¤ì +¤Þ¤¹¡£¤³¤Î°ú¿ô¤¬¤¢¤ë¾ì¹ç¡¢article-buffer ¤Î Content-Transfer-Encoding +field ¤è¤ê¤â¤³¤Î°ú¿ô¤òÍ¥À褷¤Þ¤¹¡£ +@end deffn + + +@include tm-ew-d=ja.texi diff --git a/doc/tm_en.texi b/doc/tm_en.texi index cbbfb0c..4109592 100644 --- a/doc/tm_en.texi +++ b/doc/tm_en.texi @@ -6,7 +6,7 @@ @titlepage @title tm Manual (English Version) @author by MORIOKA Tomohiko -@code{$Id: tm_en.texi,v 7.4 1995/12/15 05:34:44 morioka Exp morioka $} +@code{$Id: tm_en.texi,v 7.6 1995/12/17 16:16:53 morioka Exp morioka $} @end titlepage @@ -82,7 +82,7 @@ The tm package includes the modules listed below. @end menu -@node Emacs Versions, Install, Introduction, Top +@node Emacs Versions, Setting, Introduction, Top @comment node-name, next, previous, up @chapter Considerations for each emacs variants @cindex Considerations for each emacs variants @@ -123,7 +123,7 @@ US-ASCII and ISO-8859-1 can be used if you use the XEmacs. In future, we will support inline image. -@node Setting, tm-MUA, Install, Top +@node Setting, tm-MUA, Emacs Versions, Top @comment node-name, next, previous, up @chapter Setting @cindex Setting @@ -327,11 +327,11 @@ automatically in default setting. @end menu -@include tm-view_en.texi +@include tm-view=en.texi -@include tm-ew_en.texi +@include tm-ew=en.texi -@include tm-util_en.texi +@include tm-util=en.texi @node Bug report, Concept Index, customize, Top diff --git a/doc/tm_ja.texi b/doc/tm_ja.texi index fbf6148..325b3e5 100644 --- a/doc/tm_ja.texi +++ b/doc/tm_ja.texi @@ -6,7 +6,7 @@ @titlepage @title{tm Manual¡ÊÆüËܸìÈÇ¡Ë} @author{¼é²¬ ÃÎɧ Ãø} -@code{$Id: tm_ja.texi,v 7.3 1995/12/15 05:36:34 morioka Exp morioka $} +@code{$Id: tm_ja.texi,v 7.4 1995/12/17 15:17:49 morioka Exp morioka $} @end titlepage @@ -382,11 +382,11 @@ mime-setup.el support ¤µ¤ì¤Þ¤¹¡£ -@include tm-view_ja.texi +@include tm-view=ja.texi -@include tm-ew_ja.texi +@include tm-ew=ja.texi -@include tm-util_ja.texi +@include tm-util=ja.texi @node Bug report, Concept Index, customize, Top diff --git a/gnus/ChangeLog-7.25.en b/gnus/ChangeLog-7.25.en new file mode 100644 index 0000000..f60d89a --- /dev/null +++ b/gnus/ChangeLog-7.25.en @@ -0,0 +1,10 @@ +Mon Dec 18 12:06:27 1995 Morioka Tomohiko + + * tm/gnus: Version 7.25 was released. + +Sat Dec 16 14:54:31 1995 Morioka Tomohiko + + * tm-gnus4.el: + (tm-gnus/view-message, tm-gnus/preview-article-if-you-need): + enclose `(run-hooks 'tm-gnus/article-prepare-hook)' by + `(let (buffer-read-only) ...)'. (cf. [tm-ja:1350]) diff --git a/gnus/Makefile b/gnus/Makefile index 68a7466..8e9bd81 100644 --- a/gnus/Makefile +++ b/gnus/Makefile @@ -27,7 +27,7 @@ TMDIR19_29 = $(DATADIR19_29)/$(EMACS_PREFIX)/site-lisp FILES = tm/gnus/*.el tm/doc/tm-gnus*.texi -TARFILE = tm-gnus7.24.tar +TARFILE = tm-gnus7.25.tar gnus: diff --git a/gnus/s-path b/gnus/s-path index 711cba2..2c64d98 100644 --- a/gnus/s-path +++ b/gnus/s-path @@ -7,4 +7,4 @@ ;;; ;; please edit -(add-path "sgnus-0.22/lisp" 'all-paths) +(add-path "sgnus-0.24/lisp" 'all-paths) diff --git a/gnus/tm-gnus4.el b/gnus/tm-gnus4.el index 8b26e45..d416d59 100644 --- a/gnus/tm-gnus4.el +++ b/gnus/tm-gnus4.el @@ -8,7 +8,7 @@ ;;; modified by OKABE Yasuo ;;; Maintainer: MORIOKA Tomohiko ;;; Created: 1993/11/20 (merged tm-gnus5.el) -;;; Version: $Revision: 7.12 $ +;;; Version: $Revision: 7.14 $ ;;; Keywords: news, MIME, multimedia, multilingual, encoded-word ;;; ;;; This file is part of tm (Tools for MIME). @@ -26,6 +26,8 @@ ;;; You should have received a copy of the GNU General Public License ;;; along with This program. If not, write to the Free Software ;;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +;;; +;;; Code: (require 'tl-str) (require 'tl-misc) @@ -35,7 +37,7 @@ ;;; (defconst tm-gnus/RCS-ID - "$Id: tm-gnus4.el,v 7.12 1995/12/07 08:44:12 morioka Exp $") + "$Id: tm-gnus4.el,v 7.14 1995/12/18 11:08:33 morioka Exp $") (defconst tm-gnus/version (concat (get-version-string tm-gnus/RCS-ID) " for 3.15 .. 5.1")) @@ -86,7 +88,9 @@ This variable is set to `gnus-show-mime'.") (function gnus-article-push-button)) (mime/viewer-mode nil nil nil tm-gnus/original-article-buffer gnus-article-buffer) - (run-hooks 'tm-gnus/article-prepare-hook) + (let (buffer-read-only) + (run-hooks 'tm-gnus/article-prepare-hook) + ) )) (defun tm-gnus/summary-scroll-down () @@ -113,6 +117,9 @@ This variable is set to `gnus-show-mime'.") (set-alist 'mime-viewer/quitting-method-alist 'gnus-article-mode (function mime-viewer/quitting-method-for-gnus4)) + (set-alist 'mime-viewer/show-summary-method + 'gnus-article-mode + (function mime-viewer/quitting-method-for-gnus4)) ))) @@ -188,7 +195,9 @@ This variable is set to `gnus-show-mime'.") (gnus-article-show-summary) (setq tm-gnus/automatic-mime-preview t) (setq gnus-original-article-buffer tm-gnus/original-article-buffer) - (run-hooks 'tm-gnus/article-prepare-hook) + (let (buffer-read-only) + (run-hooks 'tm-gnus/article-prepare-hook) + ) ))) (setq gnus-show-mime-method @@ -219,4 +228,3 @@ This variable is set to `gnus-show-mime'.") ;;; (provide 'tm-gnus4) - diff --git a/gnus/tm-sgnus.el b/gnus/tm-sgnus.el index 555f41e..70c5673 100644 --- a/gnus/tm-sgnus.el +++ b/gnus/tm-sgnus.el @@ -7,7 +7,7 @@ ;;; Author: MORIOKA Tomohiko ;;; Maintainer: MORIOKA Tomohiko ;;; Created: 1995/09/24 -;;; Version: $Revision: 7.24 $ +;;; Version: $Revision: 7.25 $ ;;; Keywords: news, MIME, multimedia, multilingual, encoded-word ;;; ;;; This file is part of tm (Tools for MIME). @@ -40,7 +40,7 @@ ;;; (defconst tm-gnus/RCS-ID - "$Id: tm-sgnus.el,v 7.24 1995/12/15 13:47:36 morioka Exp $") + "$Id: tm-sgnus.el,v 7.25 1995/12/18 11:08:07 morioka Exp $") (defconst tm-gnus/version (concat (get-version-string tm-gnus/RCS-ID) " for September")) @@ -141,6 +141,9 @@ This variable is set to `gnus-show-mime'.") (set-alist 'mime-viewer/quitting-method-alist 'gnus-original-article-mode (function mime-viewer/quitting-method-for-sgnus)) + (set-alist 'mime-viewer/show-summary-method + 'gnus-original-article-mode + (function mime-viewer/quitting-method-for-sgnus)) )) diff --git a/methods/tm-au b/methods/tm-au index fe65855..79ce71b 100755 --- a/methods/tm-au +++ b/methods/tm-au @@ -1,4 +1,8 @@ -#!/bin/sh +#!/bin/sh - +# +# $Id: tm-au,v 3.1 1995/12/18 11:34:57 morioka Exp $ +# + if [ "$TM_TMP_DIR" = "" ]; then TM_TMP_DIR=/tmp export TM_TMP_DIR @@ -10,20 +14,21 @@ else filename="$TM_TMP_DIR/$5" fi -echo "$2; $3 -> $filename" - -tmdecode $3 $1 $filename - case "$4" in "play") + echo "$2; $3 ->" if [ "$AUDIOSERVER" = "" ]; then - cat $filename >/dev/audio + tmdecode $3 $1 /dev/audio else - autool -v 40 $filename + tmdecode $3 $1 $filename + autool -v 40 $filename + trap 'rm -f $filename' 0 1 2 3 13 15 fi ;; "extract") - echo "extract to $filename" + echo "$2; $3 -> $filename" + echo "extract to $filename" + tmdecode $3 $1 $filename ;; esac diff --git a/methods/tm-file b/methods/tm-file index 4f85b7c..bac4bfa 100755 --- a/methods/tm-file +++ b/methods/tm-file @@ -1,14 +1,20 @@ -#!/bin/sh +#!/bin/sh - +# +# $Id: tm-file,v 3.0 1995/12/18 11:39:26 morioka Exp $ +# + if [ "$TM_TMP_DIR" = "" ]; then TM_TMP_DIR=/tmp export TM_TMP_DIR fi + if [ "$5" = "" ]; then filename="$TM_TMP_DIR/mime$$" else filename="$TM_TMP_DIR/$5" fi + echo "$2; $3 -> $filename" tmdecode $3 $1 $filename diff --git a/methods/tm-image b/methods/tm-image index 76ae5e3..4a0336b 100755 --- a/methods/tm-image +++ b/methods/tm-image @@ -23,6 +23,9 @@ if [ "$5" = "" ]; then "image/x-pic") filename="$TM_TMP_DIR/mime$$.pic" ;; + "image/x-mag") + filename="$TM_TMP_DIR/mime$$.mag" + ;; *) filename="$TM_TMP_DIR/mime$$.img" ;; diff --git a/methods/tm-plain b/methods/tm-plain index da0c14e..d53741e 100755 --- a/methods/tm-plain +++ b/methods/tm-plain @@ -1,4 +1,8 @@ -#!/bin/sh +#!/bin/sh - +# +# $Id: tm-plain,v 3.0 1995/12/18 11:37:12 morioka Exp $ +# + if [ "$TM_TMP_DIR" = "" ]; then TM_TMP_DIR=/tmp export TM_TMP_DIR @@ -9,20 +13,18 @@ else filename="$TM_TMP_DIR/$5" fi -echo "$2; $3 -> $filename" - -tmdecode $3 $1 $filename - case "$4" in "play") - cat $filename - /bin/rm $filename + echo "$2; $3 ->" + tmdecode "$3" "$1" /dev/stdout ;; "extract") + echo "$2; $3 -> $filename" echo "extract to $filename" + tmdecode "$3" "$1" $filename ;; "print") - txt2ps -n $filename | lpr - /bin/rm $filename + echo "$2; $3 ->" + tmdecode "$3" "$1" /dev/stdout | lpr ;; -esac +esac \ No newline at end of file diff --git a/methods/tmdecode b/methods/tmdecode index 4c4ac0b..d720bfc 100755 --- a/methods/tmdecode +++ b/methods/tmdecode @@ -1,15 +1,29 @@ -#!/bin/sh +#!/bin/sh - +# +# $Id: tmdecode,v 3.0 1995/12/18 11:36:36 morioka Exp $ +# + +trap 'rm -f $2' 0 1 2 3 13 15 + +case "$3" in +/dev/stdout) + OUTPUT= + ;; +*) + OUTPUT='> $3' + ;; +esac case "$1" in -"7bit"|"8bit"|"binary") - /bin/cp $2 $3 +""|"7bit"|"8bit"|"binary") + eval "cat $2 $OUTPUT" ;; "base64") #decode-b < $2 > $3 - mmencode -u $2 > $3 + eval "mmencode -u $2 $OUTPUT" ;; "quoted-printable") - mmencode -q -u $2 > $3 + eval "mmencode -q -u $2 $OUTPUT" ;; "x-uue"|"x-uuencode") (cd $TM_TMP_DIR ; uudecode $2) @@ -20,6 +34,5 @@ case "$1" in ;; esac -/bin/rm $2 - echo "$2 was removed." + diff --git a/mk-tm b/mk-tm index 27221b1..8fa3384 100644 --- a/mk-tm +++ b/mk-tm @@ -93,6 +93,10 @@ (setq tm-modules (append tm-modules '("tm-evs"))) ) +(if (string-match "XEmacs" emacs-version) + (setq tm-modules (append tm-modules '("tm-image"))) + ) + (setq tm-el-files (mapcar (function (lambda (module) (concat module ".el") diff --git a/tm-edit.el b/tm-edit.el index 5d2efdc..909d2f1 100644 --- a/tm-edit.el +++ b/tm-edit.el @@ -7,7 +7,7 @@ ;; Author: UMEDA Masanobu ;; MORIOKA Tomohiko -;; Version: $Revision: 7.35 $ +;; Version: $Revision: 7.36 $ ;; Keywords: mail, news, MIME, multimedia, multilingual ;; This file is not part of GNU Emacs. @@ -108,7 +108,7 @@ ;; LCD Archive Entry: ;; mime|Masanobu UMEDA|umerin@mse.kyutech.ac.jp| ;; Simple MIME Composer| -;; $Date: 1995/12/15 15:02:14 $|$Revision: 7.35 $|~/misc/mime.el.Z| +;; $Date: 1995/12/17 14:37:28 $|$Revision: 7.36 $|~/misc/mime.el.Z| ;;; Code: @@ -126,7 +126,7 @@ ;;; (defconst mime-editor/RCS-ID - "$Id: tm-edit.el,v 7.35 1995/12/15 15:02:14 morioka Exp $") + "$Id: tm-edit.el,v 7.36 1995/12/17 14:37:28 morioka Exp $") (defconst mime-editor/version (get-version-string mime-editor/RCS-ID)) @@ -247,6 +247,7 @@ To insert a signature file specified by mime-signature-file ("jpeg") ("tiff") ("x-pic") + ("x-mag") ("x-xwd") ("x-xbm") ) @@ -261,27 +262,42 @@ To insert a signature file specified by mime-signature-file ("\\.html$" "text" "html" nil nil) ("\\.ps$" - "application" "postscript" nil "quoted-printable") + "application" "postscript" nil "quoted-printable" + (("Content-Description" . file)) + ) + ("\\.jpg$" + "image" "jpeg" nil "base64" + (("Content-Description" . file)) + ) ("\\.gif$" "image" "gif" nil "base64" (("Content-Description" . file)) ) - ("\\.jpg$" - "image" "jpeg" nil "base64") - ("\\.xwd$" - "image" "x-xwd" nil "base64") - ("\\.xbm$" - "image" "x-xbm" nil "base64") + ("\\.tiff$" + "image" "tiff" nil "base64" + (("Content-Description" . file)) + ) ("\\.pic$" "image" "x-pic" nil "base64" + (("Content-Description" . file))) + ("\\.mag$" + "image" "x-mag" nil "base64" + (("Content-Description" . file)) + ) + ("\\.xbm$" + "image" "x-xbm" nil "base64" + (("Content-Description" . file)) + ) + ("\\.xwd$" + "image" "x-xwd" nil "base64" (("Content-Description" . file)) ) - ("\\.tiff$" - "image" "tiff" nil "base64") ("\\.au$" "audio" "basic" nil "base64") ("\\.mpg$" - "video" "mpeg" nil "base64") + "video" "mpeg" nil "base64" + (("Content-Description" . file)) + ) ("\\.el$" "application" "octet-stream" (("name" . file) ("type" . "emacs-lisp")) "7bit") @@ -398,8 +414,7 @@ Each elements are regexp of field-name. [tm-edit.el]") "*PGP signing type (pgp-elkins, pgp-kazu or nil). [tm-edit.el]") (defvar mime-editor/encrypting-type nil - "*PGP encrypting type (pgp-elkins, pgp-kazu or nil). -Sorry `pgp-elkins' is not supported yet. [tm-edit.el]") + "*PGP encrypting type (pgp-elkins, pgp-kazu or nil). [tm-edit.el]") (if (or mime-editor/signing-type mime-editor/encrypting-type) (require 'mailcrypt) @@ -1494,7 +1509,7 @@ while if FLAG is `\\^M' (control-M) the text is hidden." )) ((string= type "encrypted") (cond ((eq mime-editor/signing-type 'pgp-elkins) - (message "Sorry, it is not supported yet") + (mime-editor/encrypt-pgp-elkins bb eb boundary) ) ((eq mime-editor/signing-type 'pgp-kazu) (mime-editor/process-pgp-kazu 'mc-encrypt @@ -1610,6 +1625,53 @@ Content-Transfer-Encoding: base64 ) )))) +(defun mime-editor/encrypt-pgp-elkins (beg end boundary) + (save-excursion + (save-restriction + (narrow-to-region beg end) + (let* ((ret + (mime-editor/translate-region beg end boundary)) + (ctype (car ret)) + (encoding (nth 1 ret)) + (parts (nth 3 ret)) + (pgp-boundary (concat "pgp-" boundary)) + ) + (goto-char beg) + (insert (format "Content-Type: %s\n" ctype)) + (if encoding + (insert (format "Content-Transfer-Encoding: %s\n" encoding)) + ) + (insert "\n") + (if (null + (progn + (goto-char beg) + (insert "=\n") + (prog1 + (let ((mail-header-separator "=")) + (call-interactively 'mc-encrypt) + ) + (goto-char beg) + (and (search-forward "=\n") + (replace-match "")) + ))) + (throw 'mime-editor/error 'pgp-error) + ) + (goto-char beg) + (insert (format "--[[multipart/encrypted; + boundary=\"%s\"; protocol=\"application/pgp-encrypted\"][7bit]] +--%s +Content-Type: application/pgp-encrypted + +--%s +Content-Type: application/octet-stream +Content-Transfer-Encoding: 7bit + +" pgp-boundary pgp-boundary pgp-boundary)) + (goto-char (point-max)) + (insert (format "\n--%s--\n" pgp-boundary)) + )) + )) + (defun mime-editor/process-pgp-kazu (type beg end boundary) (save-excursion (save-restriction diff --git a/tm-image.el b/tm-image.el new file mode 100644 index 0000000..b81bf86 --- /dev/null +++ b/tm-image.el @@ -0,0 +1,146 @@ +;;; +;;; tm-image.el --- a tm-view content filter to display images in +;;; XEmacs buffers +;;; +;;; Copyright (C) 1995 MORIOKA Tomohiko +;;; +;;; Author: MORIOKA Tomohiko +;;; Maintainer: MORIOKA Tomohiko +;;; Created: 1995/12/15 +;;; Version: +;;; $Id: tm-image.el,v 2.0 1995/12/17 12:50:26 morioka Exp $ +;;; +;;; Keywords: mail, news, MIME, multimedia, image, picture +;;; +;;; This file is part of tm (Tools for MIME). +;;; +;;; This program is free software; you can redistribute it and/or +;;; modify it under the terms of the GNU General Public License as +;;; published by the Free Software Foundation; either version 2, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with This program. If not, write to the Free Software +;;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +;;; +;;; Code: + +(require 'tm-view) +(require 'xpm) +(require 'annotations) + +(defvar mime-viewer/shell-command "/bin/sh") +(defvar mime-viewer/shell-arguments '("-c")) + +(setq mime-viewer/graphic-converter-alist + '(("image/jpeg" . "djpeg -color 256 < %s | ppmtoxpm > %s") + ("image/gif" . "giftopnm < %s | ppmtoxpm > %s") + ("image/tiff" . "tifftopnm < %s | ppmquant 256 | ppmtoxpm > %s") + ("image/x-tiff" . "tifftopnm < %s | ppmquant 256 | ppmtoxpm > %s") + ("image/x-pic" . "pictoppm < %s | ppmquant 256 | ppmtoxpm > %s") + ("image/x-mag" . "magtoppm < %s | ppmtoxpm > %s") + )) + + +;;; @ content filter for JPEG +;;; + +(defun mime-preview/filter-for-image (ctype params encoding) + (let* ((mode mime::preview/original-major-mode) + (m (assq mode mime-viewer/code-converter-alist)) + (filter (assoc-value ctype mime-viewer/graphic-converter-alist)) + ) + (if filter + (let* ((beg (point-min)) (end (point-max)) + (orig-file + (make-temp-name (expand-file-name "tm" mime/tmp-dir))) + (xbm-file (concat orig-file ".xbm")) + gl annot) + ;;(remove-text-properties beg end '(face nil)) + (mime/decode-region encoding beg end) + (write-region (point-min)(point-max) orig-file) + (delete-region (point-min)(point-max)) + (message "Now translating, please wait...") + (apply (function call-process) + mime-viewer/shell-command nil nil nil + (append mime-viewer/shell-arguments + (list (format filter orig-file xbm-file))) + ) + (setq gl (make-glyph xbm-file)) + (setq annot (make-annotation gl (point) 'text)) + (delete-file orig-file) + (delete-file xbm-file) + (goto-char (point-max)) + (insert "\n") + (message "Translation done.") + ) + (message (format "%s is not supported." ctype)) + ))) + +(set-alist 'mime-viewer/content-filter-alist + "image/jpeg" (function mime-preview/filter-for-image)) + +(set-alist 'mime-viewer/content-filter-alist + "image/gif" (function mime-preview/filter-for-image)) + +(set-alist 'mime-viewer/content-filter-alist + "image/tiff" (function mime-preview/filter-for-image)) +(set-alist 'mime-viewer/content-filter-alist + "image/x-tiff" (function mime-preview/filter-for-image)) + +(set-alist 'mime-viewer/content-filter-alist + "image/x-pic" (function mime-preview/filter-for-image)) + +(set-alist 'mime-viewer/content-filter-alist + "image/x-mag" (function mime-preview/filter-for-image)) + + +;;; @ content filter for xbm +;;; + +(defun mime-preview/filter-for-image/xbm (ctype params encoding) + (let* ((mode mime::preview/original-major-mode) + (m (assq mode mime-viewer/code-converter-alist)) + (charset (assoc "charset" params)) + (beg (point-min)) (end (point-max)) + (xbm-file (make-temp-name (expand-file-name "tm" mime/tmp-dir))) + gl annot) + (remove-text-properties beg end '(face nil)) + (mime/decode-region encoding beg end) + (write-region (point-min)(point-max) xbm-file) + (delete-region (point-min)(point-max)) + (setq gl (make-glyph xbm-file)) + (setq annot (make-annotation gl (point) 'text)) + (delete-file xbm-file) + )) + +(set-alist 'mime-viewer/content-filter-alist + "image/xbm" (function mime-preview/filter-for-image/xbm)) + +(set-alist 'mime-viewer/content-filter-alist + "image/x-xbm" (function mime-preview/filter-for-image/xbm)) + + +;;; @ setting +;;; + +(mapcar + (lambda (ctype) + (or (member ctype mime-viewer/default-showing-Content-Type-list) + (setq mime-viewer/default-showing-Content-Type-list + (cons ctype + mime-viewer/default-showing-Content-Type-list)) + )) + '("image/jpeg" "image/gif" "image/tiff" + "image/x-tiff" "image/x-pic" "image/x-mag" "image/x-xbm")) + + +;;; @ end +;;; + +(provide 'tm-image) diff --git a/tm-pgp.el b/tm-pgp.el index 107e848..1d2c1f0 100644 --- a/tm-pgp.el +++ b/tm-pgp.el @@ -8,7 +8,7 @@ ;;; Maintainer: MORIOKA Tomohiko ;;; Created: 1995/12/7 ;;; Version: -;;; $Id: tm-pgp.el,v 7.0 1995/12/15 15:40:10 morioka Exp $ +;;; $Id: tm-pgp.el,v 7.2 1995/12/17 14:29:17 morioka Exp $ ;;; Keywords: mail, news, MIME, multimedia, PGP, security ;;; ;;; This file is part of tm (Tools for MIME). @@ -104,6 +104,11 @@ (method . mime-article/view-application/pgp) )) +(set-atype 'mime/content-decoding-condition + '((type . "text/x-pgp") + (method . mime-article/view-application/pgp) + )) + ;;; @ Internal method for application/pgp-signature ;;; @@ -114,7 +119,7 @@ (rcnum (reverse cnum)) (rmcnum (cdr rcnum)) (knum (car rcnum)) - (onum (if (>= knum 0) + (onum (if (> knum 0) (1- knum) (1+ knum))) (oinfo (mime-article/rcnum-to-cinfo (cons onum rmcnum) @@ -183,6 +188,32 @@ )) +;;; @ Internal method for application/pgp-encrypted +;;; +;;; It is based on draft-elkins-pem-pgp-01.txt + +(defun mime-article/decrypt-pgp (beg end cal) + (let* ((cnum (mime-article/point-content-number beg)) + (rcnum (reverse cnum)) + (rmcnum (cdr rcnum)) + (knum (car rcnum)) + (onum (if (> knum 0) + (1- knum) + (1+ knum))) + (oinfo (mime-article/rcnum-to-cinfo (cons onum rmcnum) + mime::article/content-info)) + (obeg (mime::content-info/point-min oinfo)) + (oend (mime::content-info/point-max oinfo)) + ) + (mime-article/view-application/pgp obeg oend cal) + )) + +(set-atype 'mime/content-decoding-condition + '((type . "application/pgp-encrypted") + (method . mime-article/decrypt-pgp) + )) + + ;;; @ Internal method for application/pgp-keys ;;; ;;; It is based on draft-elkins-pem-pgp-01.txt diff --git a/tm-setup.el b/tm-setup.el index f6e23bc..1e1ec65 100644 --- a/tm-setup.el +++ b/tm-setup.el @@ -1,5 +1,5 @@ ;;; -;;; $Id: tm-setup.el,v 6.4 1995/10/24 00:24:48 morioka Exp $ +;;; $Id: tm-setup.el,v 7.0 1995/12/17 13:02:30 morioka Exp $ ;;; (require 'tl-misc) @@ -32,6 +32,11 @@ (set-alist 'mime-viewer/content-filter-alist "text/enriched" (function mime-viewer/filter-text/enriched)) (autoload 'mime-viewer/filter-text/enriched "tm-rich") + + ;; for image/* + (if (string-match "XEmacs" emacs-version) + (require 'tm-image) + ) ;; for LaTeX (set-atype 'mime/content-decoding-condition diff --git a/tm-view.el b/tm-view.el index badb800..5c27012 100644 --- a/tm-view.el +++ b/tm-view.el @@ -8,7 +8,7 @@ ;;; modified by Steven L. Baur ;;; Maintainer: MORIOKA Tomohiko ;;; Created: 1994/7/13 (1994/8/31 obsolete tm-body.el) -;;; Version: $Revision: 7.34 $ +;;; Version: $Revision: 7.36 $ ;;; Keywords: mail, news, MIME, multimedia ;;; ;;; This file is part of tm (Tools for MIME). @@ -44,7 +44,7 @@ ;;; (defconst mime-viewer/RCS-ID - "$Id: tm-view.el,v 7.34 1995/12/15 15:08:28 morioka Exp $") + "$Id: tm-view.el,v 7.36 1995/12/18 10:45:02 morioka Exp $") (defconst mime-viewer/version (get-version-string mime-viewer/RCS-ID)) (defconst mime/viewer-version mime-viewer/version) @@ -65,10 +65,10 @@ ((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/gif") + (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") @@ -77,6 +77,8 @@ (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) ((type . "image/x-pic") (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) + ((type . "image/x-mag") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name)) ((type . "video/mpeg") (method "tm-mpeg" nil 'file 'type 'encoding 'mode 'name)) @@ -103,10 +105,10 @@ '("message/rfc822" "message/news")) (defvar mime-viewer/default-showing-Content-Type-list - '("text/plain" "text/richtext" "text/enriched" + '("text/plain" nil "text/richtext" "text/enriched" "text/x-latex" "application/x-latex" - "application/octet-stream" nil - "application/pgp" + "application/pgp" "text/x-pgp" + "application/octet-stream" "application/x-selection" "application/x-comment")) (defvar mime-viewer/content-subject-omitting-Content-Type-list @@ -322,6 +324,8 @@ Each elements are regexp of field-name. [tm-view.el]") (defvar mime-viewer/over-to-previous-method-alist nil) (defvar mime-viewer/over-to-next-method-alist nil) +(defvar mime-viewer/show-summary-method nil) + ;;; @@ X-Face ;;; @@ -739,6 +743,8 @@ The compressed face will be piped to this command.") (define-key mime/viewer-mode-map "q" (function mime-viewer/quit)) (define-key mime/viewer-mode-map + "h" (function mime-viewer/show-summary)) + (define-key mime/viewer-mode-map "\C-c\C-x" (function mime-viewer/kill-buffer)) (define-key mime/viewer-mode-map "<" (function beginning-of-buffer)) @@ -1037,25 +1043,29 @@ listed in key order: (mime-viewer/scroll-down-content 1) ) -(defun mime-viewer/quit (&optional the-buf buf) +(defun mime-viewer/quit () (interactive) - (or the-buf - (setq the-buf (current-buffer)) - ) - (or buf - (setq buf (mime::preview-content-info/buffer - (mime-preview/point-pcinfo (point)))) - ) - (let ((r (progn - (switch-to-buffer buf) + (let ((r (save-excursion + (set-buffer (mime::preview-content-info/buffer + (mime-preview/point-pcinfo (point)))) (assq major-mode mime-viewer/quitting-method-alist) ))) (if r - (progn - (switch-to-buffer the-buf) - (funcall (cdr r)) - )) - )) + (funcall (cdr r)) + ))) + +(defun mime-viewer/show-summary () + (interactive) + (let ((r (save-excursion + (set-buffer + (mime::preview-content-info/buffer + (mime-preview/point-pcinfo (point))) + ) + (assq major-mode mime-viewer/show-summary-method) + ))) + (if r + (funcall (cdr r)) + ))) (defun mime-viewer/kill-buffer () (interactive)