tm 7.80.
[elisp/tm.git] / tiny-mime-jp.ol
1 \e$B!X\e(Btiny-mime.el \e$B@bL@=q!Y\e(B
2 by. \e$B<i2,\e(B \e$BCNI'\e(B
3 1994\e$BG/\e(B7\e$B7n\e(B27\e$BF|\e(B
4
5   \e$B$3$N@bL@=q$O\e(B ol2 \e$B$H\e(B plain2 \e$B$rMQ$$$k$3$H$K$h$C$F\e(B LaTeX \e$B7A<0$KJQ49$9$k\e(B
6 \e$B$3$H$,$G$-$^$9!#\e(B
7
8
9 * tiny-mime.el \e$B$H$O\e(B
10
11   tiny-mime.el \e$B$O\e(B Mule, NEmacs, NEpoch \e$B>e$GF0:n$9$k\e(B MIME message
12 header \e$B$N\e(B encoder/decoder \e$B$G$9!#%*%j%8%J%k$O!"@N!"$($J$_\e(B \e$B$D$0$H$b\e(B \e$B$5$s\e(B
13 \e$B$,\e(B fj.editor.emacs \e$B$KEj9F$5$l$?\e(B MIME message header \e$B$N\e(B decoder \e$B$G$9!#\e(B
14
15   \e$B8=:_$G$O!"Ev;~$N$b$N$KHf$Y!"\e(B
16
17  \e$B!&\e(Bdecoding \e$B;~$K$*$1$k\e(B unfolding \e$B5!G=\e(B
18  \e$B!&\e(BISO-2022-JP \e$B$K2C$(!"\e(BISO-8859-*, US-ASCII \e$B$J$I$N\e(B encoding/decoding
19  \e$B!&\e(BQ-encoding \e$B$N\e(B decoding
20
21 \e$B$H$$$C$?5!G=$r;}$C$F$$$^$9!#\e(B
22
23
24 * tiny-mime.el \e$B$N%5%]!<%H$9$k\e(B character set, encoding
25
26   tiny-mime.el \e$B$O!"<!$N\e(B character set, encoding \e$B$r%5%]!<%H$7$^$9!#\e(B
27
28 ** Mule
29
30   ISO-2022-JP, US-ASCII, ISO-8859-1..9, ISO-2022-CN, ISO-2022-KR,
31 EUC-KR \e$B$J$I$N\e(B encoding/decoding \e$B$r%5%]!<%H$7$^$9!#$^$?!"4X?t\e(B 
32 mime/set-charset-and-encoding \e$B$GDI2C!&JQ99$,$G$-$^$9!#\e(B
33
34 ** NEmacs, NEpoch
35
36   ISO-2022-JP, US-ASCII \e$B$N\e(B encoding/decoding \e$B$r%5%]!<%H$7$^$9!#\e(B
37
38   \e$B$^$?!"\e(BISO-8859-*\e$B$G$"$C$F$b!"\e(Bencoded-text \e$B$K4^$^$l$kJ8;zNs$,<B:]$K$O\e(B 
39 ASCII \e$B$GI=$;$kHO0O$J$iI=<($7$^$9!#\e(B
40
41
42 * tiny-mime.el \e$B$N4JC1$J;H$$J}\e(B
43
44 ** decode
45
46   tiny-mime.el \e$B$r\e(B load \e$B$7$F!"\e(Bdecode \e$B$7$?$$\e(B buffer \e$B>e$G!"\e(B
47
48         M-x mime/decode-message-header
49
50 \e$B$r<B9T$7$^$9!#\e(B
51
52   \e$B$^$?!"\e(Bdecode \e$B$7$?$$\e(B region \e$B$r\e(B
53
54         M-x mime/decode-region
55
56 \e$B$G\e(B decode \e$B$9$k$3$H$,$G$-$^$9!#0zMQ$J$I$G\e(B body-part \e$B$K;D$C$?\e(B 
57 encoded-word \e$B$r\e(B decode \e$B$9$k$N$KJXMx$G$7$g$&!#\e(B
58
59 ** encode
60
61   tiny-mime.el \e$B$r\e(B load \e$B$7$F!"\e(Bencode \e$B$7$?$$\e(B buffer \e$B>e$G!"\e(B
62
63         M-x mime/encode-message-header
64
65 \e$B$r<B9T$7$^$9!#\e(B
66
67
68 * tiny-mime.el \e$B$NJQ?t\e(B
69
70 ** mime/no-encoding-header-fields
71
72   tiny-mime.el \e$B$G\e(B encode \e$B$7$J$$\e(B message header \e$B$N\e(B field \e$B$r;XDj$7$^$9!#\e(B
73
74   default \e$B$G$O\e(B X-Nsubject \e$B$,;XDj$5$l$F$$$^$9!#\e(B
75
76 \e$BNc!'\e(B X-Nsubject \e$B$H\e(B Subject \e$B$r\e(B encode \e$B$7$J$$$h$&$K$9$k!#\e(B
77
78 [[E
79 ----------------------------------------------------------------------
80 (setq mime/no-encoding-header-fields '("X-Nsubject" "Subject"))
81 ----------------------------------------------------------------------
82 ]]E
83
84 \e$B!NCm0U!O\e(B mime.el \e$B$HJ;MQ$9$k>l9g!"\e(Btiny-mime.el \e$B$,\e(B encode \e$B$7$J$/$F$b!"\e(B
85 mime.el \e$B$,\e(B encode \e$B$9$k$N$G!"\e(Bmime.el \e$B$N\e(B message header encoder \e$B$,F/$+$J\e(B
86 \e$B$$$h$&$K$K@_Dj$7$^$9!#\e(B
87
88 ** mime/use-X-Nsubject
89
90   \e$B$3$NJQ?t$NCM$,\e(B t \e$B$N>l9g!"\e(Bmessage header \e$B$r\e(B encode \e$B$9$k;~!"\e(Bencode \e$B$7\e(B
91 \e$B$?7k2L!"\e(BSubject \e$B$K\e(B encoded-word \e$B$,4^$^$l$k>l9g!"\e(BSubject \e$B$r\e(B decode \e$B$7$?\e(B
92 \e$B$b$N$rF~$l$?\e(B X-Nsubject \e$B$r:n@.$7$^$9!#\e(B
93
94   default \e$B$G$O\e(B nil \e$B$,;XDj$5$l$F$$$^$9!#\e(B
95
96 \e$B!NCm0U!O\e(BMule \e$B$G\e(B ISO-2022-JP \e$B$K4^$^$l$k$b$N0J30$NJ8;z=89g$r;H$&>l9g$O!"\e(B
97 \e$B$3$l$r;XDj$7$J$$J}$,8-L@$G$9!#\e(B
98
99 ** mail-header-separator
100
101   \e$B4X?t\e(B mime/encode-message-header \e$B$K$*$1$k\e(B message header \e$B$H\e(B body part
102 \e$B$N6h@Z$j$rI=$9JQ?t$G$9!#Nc$($P!"\e(BGNUS \e$B$G$O\e(B "--text follows this line--" 
103 \e$B$,;XDj$5$l$^$9!#\e(B
104
105 \e$B!NCm0U!O$3$NJQ?t$NJ8;zNs$O!"\e(Bversion 2.6 \e$B$h$j@55,I=8=$G$O$J$/$J$j$^$7$?!#\e(B
106
107
108 * mailer, news reader \e$B$X$NAH$_9~$_\e(B
109
110   \e$BF|>oE*$K!"L50U<1$K\e(B MIME header \e$B$rK\Mh$N8@8l$G8+$?$$$H$$$&$N$OEvA3$N\e(B
111 \e$BM_5a$G$9!#$=$3$G!"\e(Btiny-mime.el \e$B$r\e(B mailer \e$B$d\e(B news reader \e$B$KAH$_9~$`$H<+\e(B
112 \e$BF0E*$K\e(B MIME header \e$B$N\e(B encode/decode \e$B$,$G$-$^$9!#\e(B
113
114   \e$B$^$?!"\e(Bmetamail \e$B$r;H$C$F$*$i$l$kJ}$G$b!"IaCJ$O\e(B message header \e$B$N\e(B 
115 decode \e$B$@$1$GNI$/$F!"3($d2;$J$I$r:F@8$9$k;~$@$1\e(B metamail \e$B$r;H$&$H$$$&\e(B
116 \e$B$h$&$J;H$$J}$b$G$-$^$9!#\e(B
117
118   \e$B$3$NL\E*$r<B8=$9$k$K$O!"\e(Bmailer \e$B$d\e(B news reader \e$B$NE,@Z$J\e(B hook \e$B$K\e(B 
119 mime/decode-message-header \e$B$rF~$l$l$PNI$$$G$7$g$&!#$^$?!"J8;zNs$N\e(B 
120 decode \e$B$r$7$?$$>l9g$N$?$a$K!"\e(B
121
122         (mime/decode-string \e$BJ8;zNs\e(B)
123
124 \e$B$H$$$&4X?t$bMQ0U$7$F$$$^$9!#\e(B
125
126   GNUS \e$B$H\e(B mh-e \e$B$K4X$7$F$O!"\e(Btm-gnus, tm-mh-e \e$B$H$$$&\e(B MIME \e$BBP1~2=%b%8%e!<\e(B
127 \e$B%k$rMQ0U$7$F$$$^$9!#\e(B
128
129   \e$B$3$l$i$N!"3F\e(B MUA \e$B$KBP1~$9$k%b%8%e!<%k$r\e(B load \e$B$9$k$H\e(B tiny-mime.el \e$B$K\e(B
130 \e$B$h$k\e(B MIME header \e$B$NI|85$H\e(B tm-body \e$B$rMxMQ$7$?\e(B MIME body \e$B$N:F@8$,9T$J$(\e(B
131 \e$B$^$9!#\e(B
132
133   \e$B>\$7$/$O!"$=$l$>$l$N@bL@=q$r$*FI$_2<$5$$!#\e(B
134
135
136 * mime.el \e$B$H$NJ;MQ\e(B
137
138   mime.el \e$B$HJ;MQ$9$kNc$r<($7$^$9!#$3$NNc$N>l9g!"\e(BISO-2022-JP \e$BJ8;zNs$N\e(B 
139 encode \e$B$O\e(B tiny-mime.el \e$B$,9T$J$$!"$=$l0J30$NJ8;z=89g$KB0$9$kJ8;zNs$O\e(B 
140 mime.el \e$B$,\e(B encode \e$B$7$^$9!#\e(B
141
142   \e$B$^$?!"\e(Btiny-mime.el \e$B$,\e(B encode \e$B$7$J$+$C$?J8;zNs$b\e(B mime.el \e$B$,\e(B encode \e$B$9\e(B
143 \e$B$k$N$G!"7k2LE*$K!"I,$:A4$F$N\e(B field \e$B$,\e(B encode \e$B$5$l$k$3$H$KCm0U$7$F2<$5\e(B
144 \e$B$$!#\e(B
145
146 [[E
147 ----------------------------------------------------------------------
148 ;;;
149 ;;; for Edit MIME mode
150 ;;;
151 (autoload 'mime-mode "mime" "Edit MIME message." t)
152 (autoload 'mime-convert-buffer "mime" "convert to MIME." t)
153 (autoload 'insert-signature "signature" "Insert signature" t)
154 (add-hook 'mime-mode-hook
155           (function
156            (lambda ()
157              (define-key (current-local-map)
158                "\C-c\C-s" (function insert-signature))
159              )))
160
161 ;; MIME header \e$B$N\e(B encoder \e$B$r\e(B tiny-mime \e$B$N$b$N$r;H$&!#\e(B
162 (setq mime-translate-hook 'mime/encode-message-header)
163
164 ;;;
165 ;;; for GNUS
166 ;;;
167 (add-hook 'news-reply-mode-hook (function mime-mode))
168 (setq gnus-signature-file nil)
169
170 ;;;
171 ;;; for mh-e
172 ;;;
173 (add-hook 'mh-letter-mode-hook
174           (function
175            (lambda ()
176              (mime/decode-message-header)
177              (mime-mode)
178              (make-local-variable 'mail-header-separator)
179              (setq mail-header-separator "--------"))
180            ))
181 ----------------------------------------------------------------------
182 ]]E
183
184 ** \e$BFCDj$N\e(B field \e$B$r\e(B encode \e$B$7$?$/$J$$>l9g\e(B
185
186   \e$BFCDj$N\e(B field \e$B$r\e(B encode \e$B$7$?$/$J$$>l9g!"\e(Btiny-mime.el \e$B$NJQ?t\e(B 
187 mime/no-encoding-header-fields \e$B$K$h$C$F!"\e(Btiny-mime.el \e$B$K$h$k\e(B encode \e$B$r\e(B
188 \e$B$d$a$k$3$H$,$G$-$^$9$,!"\e(Bmime.el \e$B$,\e(B encode \e$B$9$k$N$G$O0UL#$,$"$j$^$;$s!#\e(B
189 \e$B$=$3$G!"<!$N$h$&$K@_Dj$9$k$3$H$G!"\e(Bmime.el \e$B$G$b\e(B encode \e$B$7$J$$$h$&$K$G$-\e(B
190 \e$B$^$9!#\e(B
191
192 [[E
193 ----------------------------------------------------------------------
194 (if (boundp 'MULE)
195     (progn
196       (defun mime-header-charset-chooser-for-mule-no-encode-ISO-2022-JP (begin end)
197         (let ((lclist (find-charset-region begin end)))
198           (cond ((null lclist) nil)             ;US-ASCII requres no encoding.
199                 ((memq lc-ltn1 lclist)
200                  '("ISO-8859-1" . "Q"))
201                 ((memq lc-ltn2 lclist)
202                  '("ISO-8859-2" . "Q"))
203                 ((memq lc-ltn3 lclist)
204                  '("ISO-8859-3" . "Q"))
205                 ((memq lc-ltn4 lclist)
206                  '("ISO-8859-4" . "Q"))
207                 ((memq lc-crl lclist)
208                  '("ISO-8859-5" . "Q"))
209                 ;;((memq lc-arb lclist)
210                 ;; '("ISO-8859-6" . "Q"))
211                 ((memq lc-grk lclist)
212                  '("ISO-8859-7" . "Q"))
213                 ((memq lc-hbw lclist)
214                  '("ISO-8859-8" . "Q"))
215                 ((memq lc-ltn5 lclist)
216                  '("ISO-8859-9" . "Q"))
217                 ((memq lc-jp lclist) nil)
218                 (t                              ;Unknown charset.  It must be Mule!
219                  '("ISO-2022-JP-2" . "B"))
220                 )))
221       (setq mime-header-charset-chooser
222             'mime-header-charset-chooser-for-mule-no-encode-ISO-2022-JP)
223       )
224   (progn
225     (defun mime-header-charset-chooser-for-nemacs-no-encode-ISO-2022-JP (begin end))
226     (setq mime-header-charset-chooser
227           'mime-header-charset-chooser-for-nemacs-no-encode-ISO-2022-JP)
228     ))
229 ----------------------------------------------------------------------
230 ]]E
231
232   \e$BMW$9$k$K!"\e(BISO-2022-JP \e$BJ8;zNs$N\e(B encode \e$B$r\e(B mime.el \e$B$K$5$;$J$/$9$kLu$G\e(B
233 \e$B$9!#\e(B
234
235
236 * charset \e$B$NDI2C!&JQ99\e(B
237
238   Mule \e$B$G$O!"4X?t\e(B mime/set-charset-and-encoding \e$B$G!"\e(Bcharset \e$B$NDI2C!&JQ\e(B
239 \e$B99$,$G$-$^$9!#\e(B
240
241   \e$B4X?t\e(B: mime/set-charset-and-encoding lc cs charset encoding
242
243         lc: charset \e$B$KBP1~$9$k\e(B leading-char \e$B$r;XDj$9$k!#\e(B
244         cs: charset \e$B$KBP1~$9$k\e(B coding-system \e$B$r;XDj$9$k!#\e(B1 octet \e$BJ8;z\e(B
245             \e$B=89g$G\e(B coding-system \e$B$r:n$i$J$$>l9g$O!"\e(Bnil \e$B$r;XDj$9$k!#\e(B
246         charset: MIME \e$B$N\e(B charset.
247         encoding: encode \e$B$9$k:]$N\e(B encoding.
248
249
250   \e$BNc!'\e(B KS C5601-1987 \e$B$r\e(B EUC-KR \e$B$N\e(B B encoding \e$B$9$k$h$&$K@_Dj$9$k\e(B
251
252         (mime/set-charset-and-encoding lc-kr *euc-kr* "EUC-KR" "B")
253
254
255   \e$BNc!'\e(B koi8-r \e$B$r\e(B Q encoding \e$B$9$k$h$&$K@_Dj$9$k!#\e(B
256
257         (mime/set-charset-and-encoding lc-prv11 nil "KOI8-R" "Q")
258
259
260 \e$B!NCm0U!O8=:_$N$H$3$m!"\e(Bprivate character \e$B$N@_Dj$OFq$"$j$G$9!#\e(B(^_^;