From ef0035d27cdabdbcd3c17bdcd442e33f336ee09e Mon Sep 17 00:00:00 2001 From: morioka Date: Mon, 2 Mar 1998 14:38:58 +0000 Subject: [PATCH] tm 6.18 --- Makefile | 36 ++++-- doc/Makefile | 2 +- doc/tm-jp.texi | 334 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ gnus/Makefile | 14 ++- gnus/Makefile.bc | 5 +- mh-e/Makefile | 2 + mh-e/Makefile.bc | 8 +- mh-e/tm-mh-e.el | 22 ++-- tm-mule.el | 13 ++- tm-setup.el | 103 +++++++++-------- tm-view.el | 105 +++++++++-------- 11 files changed, 511 insertions(+), 133 deletions(-) create mode 100644 doc/tm-jp.texi diff --git a/Makefile b/Makefile index a96d5ca..2700535 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # -# $Id: Makefile,v 5.0 1995/04/19 02:12:17 morioka Exp morioka $ +# $Id: Makefile,v 6.0 1995/04/20 13:08:16 morioka Exp morioka $ # # Please specify emacs executables: @@ -13,7 +13,7 @@ ORIG19 = emacs19 MULE2 = mule2 -# Please specfy Emacs Lisp install directory: +# Please specify Emacs Lisp install directory: # TMDIR18 = for Emacs 18.* (NEMACS, NEpoch or MULE 1) # TMDIR19 = for Emacs 19.* (FSF original, XEmacs or MULE 2) @@ -25,6 +25,9 @@ TLSRCDIR = ../tl +# Please specify GNUS type (`gnus3' or `gnus4') if you use Emacs 18.* + EMACS18_GNUS = gnus3 +# EMACS18_GNUS = gnus4 bindir = $(HOME)/bin CC = gcc @@ -39,15 +42,17 @@ FILES = tm/README.eng tm/rel-*.ol tm/Makefile tm/Makefile.bc \ tm/mh-e/Makefile tm/mh-e/Makefile.bc tm/mh-e/*.el \ tl/README.eng tl/Makefile tl/Makefile.bc tl/*.el tl/doc/*.texi -TARFILE = tm6.16.tar +TARFILE = tm6.18.tar nemacs: make -f Makefile.bc all \ OPT='-l $(TLSRCDIR)/tl-18.el' \ EMACS=$(NEMACS) EMACS_TYPE=nemacs TLSRCDIR=$(TLSRCDIR) - -install-nemacs: nemacs + (cd gnus; make nemacs NEMACS=$(NEMACS) EMACS18_GNUS=$(EMACS18_GNUS)) + (cd mh-e; make nemacs NEMACS=$(NEMACS)) + +install-nemacs: nemacs install-mua-18 make -f Makefile.bc install TMDIR=$(TMDIR18) EMACS_TYPE=nemacs @@ -55,18 +60,24 @@ mule1: make -f Makefile.bc all \ OPT='-l $(TLSRCDIR)/tl-18.el' \ EMACS=$(MULE1) EMACS_TYPE=mule TLSRCDIR=$(TLSRCDIR) + (cd gnus; make mule1 MULE1=$(MULE1) EMACS18_GNUS=$(EMACS18_GNUS)) + (cd mh-e; make mule1 MULE1=$(MULE1)) -install-mule1: mule1 +install-mule1: mule1 install-mua-18 make -f Makefile.bc install TMDIR=$(TMDIR18) EMACS_TYPE=mule - +install-mua-18: + (cd gnus; make install-18 TMDIR18=$(TMDIR18)) + (cd mh-e; make install-18 TMDIR18=$(TMDIR18)) + + orig19: make -f Makefile.bc all \ EMACS=$(ORIG19) EMACS_TYPE=orig TLSRCDIR=$(TLSRCDIR) (cd gnus; make orig19 ORIG19=$(ORIG19)) (cd mh-e; make orig19 ORIG19=$(ORIG19)) - -install-orig19: orig19 install-gnus4-mh-e4 + +install-orig19: orig19 install-mua-19 make -f Makefile.bc install TMDIR=$(TMDIR19) EMACS_TYPE=orig @@ -76,11 +87,10 @@ mule2: (cd gnus; make mule2 MULE2=$(MULE2)) (cd mh-e; make mule2 MULE2=$(MULE2)) -install-mule2: mule2 install-gnus4-mh-e4 +install-mule2: mule2 install-mua-19 make -f Makefile.bc install TMDIR=$(TMDIR19) EMACS_TYPE=mule - -install-gnus4-mh-e4: +install-mua-19: (cd gnus; make install-19 TMDIR19=$(TMDIR19)) (cd mh-e; make install-19 TMDIR19=$(TMDIR19)) @@ -112,6 +122,8 @@ install: $(UTILS) methods clean: -rm $(GOMI) -(cd doc; make clean) + -(cd gnus; make clean) + -(cd mh-e; make clean) tar: diff --git a/doc/Makefile b/doc/Makefile index 409403b..a78c712 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -4,7 +4,7 @@ DVIFILES= tm-jp.dvi tm-eng.dvi \ tiny-mime-jp.dvi signature-jp.dvi tiny-mime-eng.dvi PSFILES = tm-jp.ps \ tiny-mime-jp.ps signature-jp.ps tiny-mime-eng.ps -GOMI = *.aux *.toc *.log $(TEXFILES) $(DVIFILES) *.ps *~ +GOMI = *.aux *.toc *.log $(DVIFILES) *.ps *~ .SUFFIXES: .ol .tex .dvi .ps diff --git a/doc/tm-jp.texi b/doc/tm-jp.texi new file mode 100644 index 0000000..e2be40f --- /dev/null +++ b/doc/tm-jp.texi @@ -0,0 +1,334 @@ +\input texinfo.tex +@c{-*-tm manual-*-} +@setfilename tm-jp.info +@settitle{tm manual} + +@titlepage +@sp{5} +@center{@titlefont{tm}} +@sp{15} +@center{@titlefont{守岡 知彦}} +@sp{1} +@center{$Id$} + +@end titlepage + + +@menu +@end menu + +@node Top, Abstract, (dir), (dir) +@comment node-name, next, previous, up + +@ifinfo +GNU Emacs で MIME を楽しむための package である `tm' について説明しま +す。 +@end ifinfo + +@menu +* Abstract:: +* Emacs-Versions:: +* Install:: +* Setting:: +* tm-MUA:: +* Concept Index:: +* Command Index:: +* Variable Index:: +@end menu + + +@node Abstract, Emacs-Versions, Top, Top +@comment node-name, next, previous, up +@chapter{tm とは} +@cindex{tm とは} + +tm は GNU Emacs で MIME を楽しむための package です。tm を使うと、 +@itemize +@item tm-view による MIME message の閲覧・再生 +@item tiny-mime による多言語 header の encode/decode +@item mh-e, GNUS, RMAIL, VM での MIME 機能の強化 +@end itemize +というようなことが行なえます。 + + +@section{Module 一覧} + +tm は以下の module からなります。 + +@itemize +@item @emph{tiny-mime:} MIME header encoder/decoder +@item @emph{tm-view:} MIME viewer +@item @emph{tm-misc:} tm-MUA の共通 module + @item @emph{tm-mh-e:} mh-e 用の tm-MUA + @item @emph{tm-gnus:} GNUS 用の tm-MUA + @item @emph{tm-rmail:} RMAIL 用の tm-MUA + @item @emph{tm-vm:} VM 用の tm-MUA +@item @emph{tm-setup:} tm-MUA 全般の設定 module +@item @emph{mime-setup:} MIME 関係全般の設定 module +@end itemize + + +@node Emacs-Versions, Install, Abstract, Top +@comment node-name, next, previous, up +@chapter{Emacs version 別の機能および制限} +@cindex{Emacs version 別の機能および制限} + +@section{original GNU Emacs 18} + +動作は保証しません。しかしながら、US-ASCII の範囲では動作すると思われ +ます。 + +@section{NEmacs, NEpoch} + +ISO-2022-JP, US-ASCII が使えます。 + +@section{original GNU Emacs 19} + +US-ASCII および ISO-8859-1 をサポートします。 + +また、X window 上の独立した window として動作させる場合、tm-rich によ +る multi face 表示が行なえます。 + +@section{Mule} + +ISO-2022-JP, US-ASCII, ISO-8859-1..9, ISO-2022-CN, ISO-2022-KR, EUC-KR +などの多くの charset をサポートします。また、関数 +mime/set-charset-and-encoding で追加・変更ができます。 + +また、Mule 2.* を X window 上の独立した window として動作させる場合、 +tm-rich による multi face 表示が行なえます。 + +@section{XEmacs} + +US-ASCII および ISO-8859-1 をサポートします。 + +今のところ、tm-rich による multi face 表示はサポートされていませんが、 +将来的には、multi face 表示と inline image の表示がサポートされる予定 +です。 + + +@node Install, How-to-use, Emacs-Versions, Top +@comment node-name, next, previous, up +@chapter{Install} +@cindex{Install} + +Install は次の手順で行ないます。 + +@section{tl の install} + +tm は Emacs Lisp library ``tl'' を利用しています。よって、まず最初に、 +これを install して下さい。 + +tl の install の仕方は tl/README.eng に書いてありますので、これを読ん +で適切に install して下さい。 + + +@section{Makefile} + +Makefile を自分の環境に合わせて書き換えて下さい。 + +@subsection{Emacs の実行 file 名の指定} + +Emacs の実行 file 名を指定して下さい。 + +@itemize +@item NEMACS = for NEMACS (or NEpoch) +@item MULE1 = for Mule 1.* (based on Emacs 18.*) +@item ORIG19 = for Emacs 19.* (FSF original or XEmacs) +@item MULE2 = for MULE 2.* (based on Emacs 19.*) +@end itemize + +@subsection{load-path の指定} + +Emacs Lisp program を install する directory を指定して下さい。 + +@itemize +@item TLDIR18 = for Emacs 18.* (NEMACS, NEpoch or MULE 1) +@item TLDIR19 = for Emacs 19.* (FSF original, XEmacs or MULE 2) +@end itemize + + +@section{外部 method} + +methods/ 以下にある method script を sec:method 節を参照して、自分の環 +境に合うように書き換えて下さい。 + + +@section{make} + +`make all' して下さい。 + + +@section{install} + +`make install' して下さい。 + + +@section{Emacs Lisp program の install} + +NEmacs もしくは NEpoch を使っている場合、`make install-nemacs' を実行 +して下さい。 + +Mule 1.* を使っている場合、`install-mule1' を実行して下さい。 + +Original Emacs 19.* もしくは XEmacs を使っている場合、`make +install-orig19' を実行して下さい。 + +Mule 2.* を使っている場合、`make install-mule2' を実行して下さい。 + +あるいは、これらがうまくいかなかった場合でも、*.el を load-path で指定 +された directory に copy すれば OK です。 + + +@node Setting, tm-MUA, Install, Top +@comment node-name, next, previous, up +@chapter{設定} +@cindex{設定} + +この package には mime-setup.el と tm-setup.el という簡易設定 file が +附属しています。mime-setup.el では encoding も含めた MIME 全般の設定を +行ない、tm-setup では tm-MUA に関する設定のみを行ないます。 + +@section{mime-setup} + +@example +(load "mime-setup") +@end example +とすると MIME に関する各種設定を行ないます。mime-setup は tm-setup を +読んでいるので、mime-setup を使う場合、tm-setup を load する必要はあり +ません。 + +mime-setup では signature の自動切替え tool も附属しています。 +message header の field に合わせて signature の自動切替を行ないたい場 +合は .emacs に以下のようなものを入れて下さい。(詳しくは signature.el +の説明書を参照して下さい) + +@example +(setq signature-file-alist + '((("Newsgroups" . "jokes") . "~/.signature-jokes") + (("Newsgroups" . ("zxr" "nzr")) . "~/.signature-sun") + (("To" . ("ishimaru" "z-suzuki")) . "~/.signature-sun") + (("To" . "tea") . "~/.signature-jokes") + (("To" . ("sim" "oku" "takuo")) . "~/.signature-formal") + )) +@end example + +mime-setup を使う場合は、mime.el が必要です。また、SuperCite を使う場 +合は、SuperCite も必要です。 + + +@section{tm-setup} + +tm-setup は tm-MUA の設定のみを行なう module です。mime-setup を load +している場合、これを陽に load する必要はありませんが、mime-setup を使 +いたくない場合、以下のようにこれを load して下さい。 + +@example +(load "tm-setup") +@end example + + +@section{vm} + +vm を使う場合は .vm か .emacs に +@example +(load "tm-vm") +@end example +を入れて下さい。 + + +@section{設定 file を使わない場合} + +tm-setup.el を参考にして下さい。 + + +@node tm-MUA, Concept Index, Setting, Top +@comment node-name, next, previous, up +@chapter{tm-MUA} +@cindex{tm-MUA} + +``tm-MUA'' というのは、mh-e, GNUS, RMAIL などの MUA のための MIME 機能 +強化 module の総称です。 + +現在、tm-MUA には、 +@itemize +@item @emph{tm-mh-e:} mh-e 用の tm-MUA +@item @emph{tm-gnus:} GNUS 用の tm-MUA +@item @emph{tm-rmail:} RMAIL 用の tm-MUA +@item @emph{tm-vm:} VM 用の tm-MUA +@end itemize +があります。この章ではこれらの module に関して説明します。 + +@section{Summary mode} + +tm-MUA を使うと、元の MUA の Summary mode に対して以下の機能が追加され +ます。 + +@table @kbd +@item @key{M-t} + RFC 1522 MIME encoded-word の decode に関する toggle +@item v + mime/viewer-mode に入り、message を閲覧する +@end table + + +@section{mime/viewer-mode} + +tm-MUA を使うと、Summary mode で @kbd{v}(vm では @kbd{Z})を押すこと +によって、mime/viewer-mode という MIME message を閲覧するための mode +に入ります。mime/viewer-mode には以下の機能があります。 + +@table @kbd +@item u + 上の content に戻る(message の一番上の content でこれを行なう + と Summary mode に戻る (*1)) +@item p + 前の content に移動する +@item 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 v + content を再生する (*2) +@item e + content から file を取り出す (*2) +@item C-c C-p + content を印刷する (*2) +@end table + +@noindent @b{[注意]} +@enumerate +@item +tm-MUA で tm-view の設定をしていない場合、Summary mode には戻りません。 + +@item +実際の動作は対応する method に依ります。 +@end enumerate + + +@node Concept Index, Command Index, tm-MUA, Top +@unnumbered 概念索引 + +@printindex cp + + +@node Command Index, Variable Index, Concept Index, Top +@unnumbered 関数・コマンド索引 + +@printindex fn + + +@node Variable Index, Top, Command Index, Top +@unnumbered 変数索引 + +@printindex vr + +@bye diff --git a/gnus/Makefile b/gnus/Makefile index 95de0b3..f5d83a1 100644 --- a/gnus/Makefile +++ b/gnus/Makefile @@ -1,5 +1,5 @@ # -# $Id: Makefile,v 2.0 1995/03/26 16:49:12 morioka Exp morioka $ +# $Id: Makefile,v 5.0 1995/04/20 12:53:54 morioka Exp $ # # Please specify emacs executables: @@ -26,6 +26,8 @@ TMSRCDIR = .. TLSRCDIR = ../../tl + EMACS18_GNUS = gnus3 + EMACS18_GNUS3 = gnus EMACS18_NNTP3 = nntp @@ -34,28 +36,36 @@ EMACS19_GNUS = gnus EMACS19_NNTP = nntp - + +nemacs: nemacs-$(EMACS18_GNUS) + nemacs-gnus3: make -f Makefile.bc all \ EMACS=$(NEMACS) EMACS_TYPE=nemacs GNUS_TYPE=gnus3 \ + OPT='-l $(TLSRCDIR)/tl-18.el' \ GNUS=$(EMACS18_GNUS3) NNTP=$(EMACS18_NNTP3) \ TLDIR=$(TLSRCDIR) TMDIR=$(TMSRCDIR) nemacs-gnus4: make -f Makefile.bc all \ EMACS=$(NEMACS) EMACS_TYPE=nemacs GNUS_TYPE=gnus4 \ + OPT='-l $(TLSRCDIR)/tl-18.el' \ GNUS=$(EMACS18_GNUS4) NNTP=$(EMACS18_NNTP4) \ TLDIR=$(TLSRCDIR) TMDIR=$(TMSRCDIR) +mule1: mule1-$(EMACS18_GNUS) + mule1-gnus3: make -f Makefile.bc all \ EMACS=$(MULE1) EMACS_TYPE=mule GNUS_TYPE=gnus3 \ + OPT='-l $(TLSRCDIR)/tl-18.el' \ GNUS=$(EMACS18_GNUS3) NNTP=$(EMACS18_NNTP3) \ TLDIR=$(TLSRCDIR) TMDIR=$(TMSRCDIR) mule1-gnus4: make -f Makefile.bc all \ EMACS=$(MULE1) EMACS_TYPE=mule GNUS_TYPE=gnus4 \ + OPT='-l $(TLSRCDIR)/tl-18.el' \ GNUS=$(EMACS18_GNUS4) NNTP=$(EMACS18_NNTP4) \ TLDIR=$(TLSRCDIR) TMDIR=$(TMSRCDIR) diff --git a/gnus/Makefile.bc b/gnus/Makefile.bc index 13c2c83..f89e115 100644 --- a/gnus/Makefile.bc +++ b/gnus/Makefile.bc @@ -1,5 +1,5 @@ # -# $Id: Makefile.bc,v 2.0 1995/03/26 16:49:33 morioka Exp morioka $ +# $Id: Makefile.bc,v 4.0 1995/04/20 12:31:10 morioka Exp $ # .SUFFIXES: .el .elc @@ -8,10 +8,11 @@ $(EMACS) -batch -q . \ -l $(TLDIR)/tl-str.el -l $(TLDIR)/tl-list.el \ -l $(TLDIR)/tl-header.el -l $(TLDIR)/tl-$(EMACS_TYPE).el \ + $(OPT) \ -l $(TMDIR)/tm-$(EMACS_TYPE).el \ -l $(TMDIR)/tiny-mime.el -l $(TMDIR)/tm-misc.el \ -l $(TMDIR)/tm-view.el \ - -l $(GNUS) -l $(NNTP) \ + -l $(NNTP) -l $(GNUS) \ -l tm-$(GNUS_TYPE).el -l tm-gnus.el \ -f batch-byte-compile $< diff --git a/mh-e/Makefile b/mh-e/Makefile index bf44b36..2217faa 100644 --- a/mh-e/Makefile +++ b/mh-e/Makefile @@ -28,11 +28,13 @@ nemacs: make -f Makefile.bc tm-mh-e.elc \ EMACS=$(NEMACS) EMACS_TYPE=nemacs \ + OPT='-l $(TLSRCDIR)/tl-18.el' \ TLDIR=$(TLSRCDIR) TMDIR=$(TMSRCDIR) mule1: make -f Makefile.bc tm-mh-e.elc \ EMACS=$(MULE1) EMACS_TYPE=mule \ + OPT='-l $(TLSRCDIR)/tl-18.el' \ TLDIR=$(TLSRCDIR) TMDIR=$(TMSRCDIR) install-18: diff --git a/mh-e/Makefile.bc b/mh-e/Makefile.bc index 38d14c2..a0b57d8 100644 --- a/mh-e/Makefile.bc +++ b/mh-e/Makefile.bc @@ -1,5 +1,5 @@ # -# $Id: Makefile.bc,v 1.1 1995/01/10 12:28:22 morioka Exp $ +# $Id: Makefile.bc,v 1.1 1995/01/10 12:28:22 morioka Exp morioka $ # .SUFFIXES: .el .elc @@ -14,8 +14,10 @@ mh-e4: tm-mh-e.elc tm-mh-e.elc: tm-mh-e.el - $(EMACS) -batch -q . -l $(TLDIR)/tl-str.el -l $(TLDIR)/tl-list.el \ - -l $(TLDIR)/tl-header.el -l $(TLDIR)/tl-$(EMACS_TYPE).el \ + $(EMACS) -batch -q . \ + $(OPT) -l $(TLDIR)/tl-$(EMACS_TYPE).el \ + -l $(TLDIR)/tl-str.el -l $(TLDIR)/tl-list.el \ + -l $(TLDIR)/tl-header.el -l $(TLDIR)/tl-misc.el \ -l $(TMDIR)/tm-$(EMACS_TYPE).el -l $(TMDIR)/tiny-mime.el \ -l $(TMDIR)/tm-misc.el -l mh-e \ -f batch-byte-compile $< diff --git a/mh-e/tm-mh-e.el b/mh-e/tm-mh-e.el index 985e4ed..48d700f 100644 --- a/mh-e/tm-mh-e.el +++ b/mh-e/tm-mh-e.el @@ -9,6 +9,7 @@ ;;; @ require modules ;;; (require 'tl-str) +(require 'tl-misc) (require 'tm-misc) (require 'mh-e) (if (not (boundp 'mh-e-version)) @@ -20,7 +21,7 @@ ;;; @ version ;;; (defconst tm-mh-e/RCS-ID - "$Id: tm-mh-e.el,v 6.1 1995/04/18 16:49:45 morioka Exp $") + "$Id: tm-mh-e.el,v 6.3 1995/04/23 20:59:27 morioka Exp $") (defconst tm-mh-e/version (get-version-string tm-mh-e/RCS-ID)) @@ -107,17 +108,14 @@ With arg, turn MIME processing on if arg is positive." (insert-file (tm-mh-e::message/file-name message)) ) -(if (featurep 'tm-comp) - (set-alist 'tm-comp/message-inserter-alist - 'mh-letter-mode (function tm-mh-e::insert-message)) - (add-hook 'tm-comp-load-hook - (function - (lambda () - (set-alist - 'tm-comp/message-inserter-alist - 'mh-letter-mode (function tm-mh-e::insert-message)) - ))) - ) +(call-after-loaded + 'tm-comp + (function + (lambda () + (set-alist + 'tm-comp/message-inserter-alist + 'mh-letter-mode (function tm-mh-e::insert-message)) + ))) ;;; @ set up diff --git a/tm-mule.el b/tm-mule.el index 957f731..dfc6241 100644 --- a/tm-mule.el +++ b/tm-mule.el @@ -1,5 +1,5 @@ ;;; -;;; $Id: tm-mule.el,v 5.3 1995/01/27 14:53:01 morioka Exp $ +;;; $Id: tm-mule.el,v 5.4 1995/04/20 13:57:31 morioka Exp $ ;;; (provide 'tm-mule) @@ -27,7 +27,7 @@ (cons lc-ltn3 '("ISO-8859-3" . "Q")) (cons lc-ltn4 '("ISO-8859-4" . "Q")) (cons lc-crl '("ISO-8859-5" . "B")) - (cons lc-arb '("ISO-8859-6" . "B")) +;;;(cons lc-arb '("ISO-8859-6" . "B")) (cons lc-grk '("ISO-8859-7" . "B")) (cons lc-hbw '("ISO-8859-8" . "B")) (cons lc-ltn5 '("ISO-8859-9" . "Q")) @@ -44,6 +44,13 @@ ("ISO-2022-KR" . *iso-2022-kr*) ("EUC-KR" . *euc-kr*) ("ISO-8859-1" . *ctext*) + ("ISO-8859-2" . *iso-8859-2*) + ("ISO-8859-3" . *iso-8859-3*) + ("ISO-8859-4" . *iso-8859-4*) + ("ISO-8859-5" . *iso-8859-5*) + ("ISO-8859-7" . *iso-8859-7*) + ("ISO-8859-8" . *iso-8859-8*) + ("ISO-8859-9" . *iso-8859-9*) )) (defvar mime/charset-lc-alist @@ -53,7 +60,7 @@ (cons "ISO-8859-3" lc-ltn3) ; Latin-3 (cons "ISO-8859-4" lc-ltn4) ; Latin-4 (cons "ISO-8859-5" lc-crl ) ; Cyrillic - (cons "ISO-8859-6" lc-arb ) ; Arabic +;;;(cons "ISO-8859-6" lc-arb ) ; Arabic (cons "ISO-8859-7" lc-grk ) ; Greek (cons "ISO-8859-8" lc-hbw ) ; Hebrew (cons "ISO-8859-9" lc-ltn5) ; Latin-5 diff --git a/tm-setup.el b/tm-setup.el index 5101186..0bd479a 100644 --- a/tm-setup.el +++ b/tm-setup.el @@ -1,56 +1,50 @@ ;;; -;;; $Id: tm-setup.el,v 6.0 1995/04/18 19:40:11 morioka Exp $ +;;; $Id: tm-setup.el,v 6.1 1995/04/23 18:09:07 morioka Exp $ ;;; -(provide 'tm-setup) - -;;; @ for Emacs 18 -;;; -(if (< (string-to-int emacs-version) 19) - (progn - (require 'tl-18) - (defvar buffer-undo-list nil) - )) +(require 'tl-misc) ;;; @ for LaTeX ;;; -(add-hook 'tm-view-load-hook - (function - (lambda () - ;; for message/partial - (require 'tm-partial) - - ;; for LaTeX - (set-atype 'mime/content-decoding-condition - '((type . "text/x-latex") - (method . mime/decode-text/latex) - )) - (set-atype 'mime/content-decoding-condition - '((type . "application/x-latex") - (method . mime/decode-text/latex) - )) - ;;(set-atype 'mime/content-decoding-condition - ;; '((type . "application/octet-stream") - ;; ("type" . "latex") - ;; (method . mime/decode-text/latex) - ;; )) - (autoload 'mime/decode-text/latex "tm-latex") - ))) +(call-after-loaded + 'tm-view + (function + (lambda () + ;; for message/partial + (require 'tm-partial) + + ;; for LaTeX + (set-atype 'mime/content-decoding-condition + '((type . "text/x-latex") + (method . mime/decode-text/latex) + )) + (set-atype 'mime/content-decoding-condition + '((type . "application/x-latex") + (method . mime/decode-text/latex) + )) + ;;(set-atype 'mime/content-decoding-condition + ;; '((type . "application/octet-stream") + ;; ("type" . "latex") + ;; (method . mime/decode-text/latex) + ;; )) + (autoload 'mime/decode-text/latex "tm-latex") + ))) ;;; @ for Anonymous FTP (need of ange-ftp) ;;; -(add-hook 'tm-view-load-hook - (function - (lambda () - (set-atype 'mime/content-decoding-condition - '((type . "message/external-body") - ("access-type" . "anon-ftp") - (method . mime/decode-message/external-ftp) - )) - (autoload 'mime/decode-message/external-ftp "tm-ftp") - ))) +(call-after-loaded + 'tm-view + (function + (lambda () + (set-atype 'mime/content-decoding-condition + '((type . "message/external-body") + ("access-type" . "anon-ftp") + (method . mime/decode-message/external-ftp) + )) + (autoload 'mime/decode-message/external-ftp "tm-ftp") + ))) ;;; @ for RMAIL @@ -60,16 +54,15 @@ ;;; @ for mh-e ;;; -(add-hook 'mh-folder-mode-hook - (function - (lambda () - (require 'tm-mh-e) - ))) -(add-hook 'mh-letter-mode-hook - (function +(let ((le (function (lambda () (require 'tm-mh-e) - ))) + )) + )) + (call-after-loaded 'mh-e le 'mh-folder-mode-hook) + (if (not (featurep 'mh-e)) + (add-hook 'mh-letter-mode-hook le) + )) ;;; @ for GNUS @@ -77,8 +70,8 @@ (let ((le (function (lambda () (require 'tm-gnus) - ))) - ) + )) + )) (if (boundp 'MULE) (progn (add-hook 'gnus-Group-mode-hook (function gnusutil-initialize)) @@ -92,6 +85,12 @@ (add-hook 'gnus-startup-hook le) ))) + +;;; @ end +;;; + +(provide 'tm-setup) + ;;; Local Variables: ;;; mode: emacs-lisp ;;; mode: outline-minor diff --git a/tm-view.el b/tm-view.el index f93890d..0a484e7 100644 --- a/tm-view.el +++ b/tm-view.el @@ -21,7 +21,7 @@ ;;; (defconst mime-viewer/RCS-ID - "$Id: tm-view.el,v 6.16 1995/04/19 04:43:09 morioka Exp $") + "$Id: tm-view.el,v 6.18 1995/04/23 15:51:19 morioka Exp $") (defconst mime-viewer/version (get-version-string mime-viewer/RCS-ID)) (defconst mime/viewer-version mime-viewer/version) @@ -77,6 +77,8 @@ ;; 'file '"access-type" '"name" '"site" '"directory")) ((type . "message/partial") (method . mime/decode-message/partial-region)) + ((type . "message/rfc822") + (method "tm-file" nil 'file 'type 'encoding 'mode 'name)) ((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)(mode . "play")) )) @@ -299,47 +301,45 @@ (defun mime-viewer/parse (&optional ctl encoding) (save-excursion (save-restriction - (if (null ctl) - (setq ctl (progn - (goto-char (point-min)) - (mime/Content-Type) - )) - ) - (if (null encoding) - (setq encoding (progn - (goto-char (point-min)) - (mime/Content-Transfer-Encoding) - )) - ) + (setq ctl (or (mime/Content-Type) + ctl)) + (setq encoding (or (mime/Content-Transfer-Encoding) + encoding)) (let ((ctype (car ctl)) (params (cdr ctl)) ) - (if (stringp ctype) - (setq ctype (downcase ctype)) - ) - (if (stringp encoding) - (setq encoding (downcase encoding)) - ) (let ((boundary (assoc "boundary" params))) + (goto-char (point-min)) (search-forward "\n\n" nil t) (cond (boundary - (setq boundary - (message/strip-quoted-string (cdr boundary))) - (mime-viewer/parse-multipart - (match-end 0) - (progn - (search-forward (concat "--" boundary "--\n") nil t) - (match-beginning 0) - ) - boundary ctype params encoding) - ) + (save-excursion + (save-restriction + (setq boundary + (message/strip-quoted-string (cdr boundary))) + (narrow-to-region + (point-min) + (if (search-forward (concat "--" boundary "--\n") nil t) + (match-beginning 0) + (point-max) + )) + (mime-viewer/parse-multipart + (point-min) + (point-max) + boundary ctype params encoding) + ))) ((string= ctype "message/rfc822") (mime::make-content-info (point-min) (point-max) ctype params encoding (save-excursion (save-restriction - (narrow-to-region (match-end 0) (point-max)) + (narrow-to-region (progn + (goto-char (point-min)) + (if (re-search-forward "^$" nil t) + (+ (match-end 0) 1) + (point-min) + )) + (point-max)) (list (mime-viewer/parse)) )) ) @@ -351,7 +351,7 @@ ))))) (defun mime-viewer/parse-multipart (beg end boundary ctype params encoding) - (let ((sep (concat "^--" boundary "$")) + (let ((sep (concat "^--" (regexp-quote boundary) "$")) cb ce ct ret ncb children) (save-excursion (save-restriction @@ -365,7 +365,14 @@ (save-excursion (save-restriction (narrow-to-region cb ce) - (setq ret (mime-viewer/parse)) + (setq ret (apply (function mime-viewer/parse) + (cond ((string= ctype "multipart/mixed") + '(("text/plain") "7bit") + ) + ((string= ctype "multipart/digest") + '(("message/rfc822") "7bit") + )) + )) )) (setq children (nconc children (list ret))) (goto-char (mime::content-info/point-max ret)) @@ -376,7 +383,14 @@ (save-excursion (save-restriction (narrow-to-region cb ce) - (setq ret (mime-viewer/parse)) + (setq ret (apply (function mime-viewer/parse) + (cond ((string= ctype "multipart/mixed") + '(("text/plain") "7bit") + ) + ((string= ctype "multipart/digest") + '(("message/rfc822") "7bit") + )) + )) )) (setq children (nconc children (list ret))) )) @@ -429,14 +443,11 @@ ))) (defun mime/Content-Transfer-Encoding (&optional default-encoding) - (save-excursion - (save-restriction - (if (and (re-search-forward "^Content-Transfer-Encoding:[ \t]*" nil t) - (re-search-forward mime/token-regexp nil t) - ) - (downcase (buffer-substring (match-beginning 0) (match-end 0))) - default-encoding) - ))) + (let ((str (message/get-field-body "Content-Transfer-Encoding"))) + (if str + (downcase str) + default-encoding) + )) (defun mime/get-subject (param) (save-excursion @@ -503,8 +514,8 @@ (save-excursion (save-restriction (goto-char beg) - (search-forward "\n\n" nil t) - (match-end 0) + (re-search-forward "^$" nil t) + (+ (match-end 0) 1) )) end)) (if (> e (point-max)) @@ -683,8 +694,11 @@ b args) (if (nth 1 method) (setq b beg) - (search-forward "\n\n" nil t) - (setq b (match-end 0)) + (setq b + (if (re-search-forward "^$" nil t) + (+ (match-end 0) 1) + (point-min) + )) ) (goto-char b) (write-region b end file) @@ -767,7 +781,6 @@ ) (defun mime::article/decode-content-region (cinfo) - (interactive "*r") (let ((beg (mime::content-info/point-min cinfo)) (end (mime::content-info/point-max cinfo)) (ctype (mime::content-info/type cinfo)) -- 1.7.10.4