WL on emacs 23

Katsumi Yamaoka yamaoka @ jpl.org
2008年 4月 3日 (木) 15:48:57 JST


日本語版

>>>>> In [Wanderlust English : No.02349] Katsumi Yamaoka wrote:

> こんにちは寺西さん。

> お久しぶりです。いかがですか?  ぼくはまだ Emacs で遊んでいます。;-)
> ときに、少なくない Wanderlust ユーザーが FLIM (もしかしたら APEL
> と SEMI も) の新版がリリースされたことを知らないらしいことが露見
> しました。Wanderlust を Emacs 23 で走らせるには最新のものが必要
> なんですが。原因の一端は Wanderlust のホームページが最新の情報を
> 表示していないことにあります。更新して反応していただけませんか?

念のため、メインテイナーの方(々)には APEL、FLIM および SEMI のリ
リースアナウンスを wl-en メーリングリストにも送ってくださること
をお願いします。

旧版の FLIM の base64 デコードの問題に加えて、最新の FLIM にさえ
quoted-printable のデコードとエンコードに関する少なくとも二つの
問題があります。ひとつは伊藤和博さんがパッチとともにリポートしま
した:

http://news.gmane.org/group/gmane.emacs.mime.japanese/thread=669/force_load=t
(quoted-printable でエンコードされた添付をファイルにセーブすると
きに行末の `=' が残る。)

もうひとつは Dmitri Minaev さんとぼくがリポートしました:

http://news.gmane.org/group/gmane.mail.wanderlust.general.japanese/thread=5844/force_load=t

両方ともとりわけラテン・テキストを書く人たちにとって深刻です (ラ
テン・テキストはデフォルトでは quoted-printable でエンコードされ
ます)。個人的には次の記事に添付されているパッチ

http://article.gmane.org/gmane.emacs.mime.japanese/669

そしてさらにこのメッセージのパッチを適用することをお勧めします。

Emacs 23 での quoted-printable のエンコードに着目しますが、ドラ
フトバッファ (マルチバイトになっています) にある Latin-1 文字を
含んでいるテキストが、以下のようにエンコードされません:

(set-language-environment 'German)
(setq default-mime-charset-for-write 'iso-8859-1)
(with-temp-buffer
  (set-buffer-multibyte t)
  (insert "To: whom\n" mail-header-separator "\nGrüß Gott\n")
  (let (mime-edit-insert-user-agent-field)
    (mime-edit-translate-buffer))
  (buffer-string))
 => "To: whom
     MIME-Version: 1.0
     Content-Type: text/plain; charset=ISO-8859-1
     Content-Transfer-Encoding: quoted-printable
     --text follows this line--
     Gr\374\337 Gott
     "
動作しない根本的な原因は、以下のフォームに Emacs 22 以前のものは
("\374" . 252) を返すのに対して Emacs 23 が ("\374" . 4194300)
を返すことと、quoted-printable のエンコーダが後者のようなもので
は働かないことです。

(with-temp-buffer
  (set-buffer-multibyte t)
  (insert "ü")
  (encode-coding-region (point-min) (point-max) 'iso-8859-1)
  (cons (buffer-string) (char-after (point-min))))

バッファの内容のマルチバイトかユニバイトかを変更するどんな操作も
あまりよろしくないと思いますが、それは許されているようです。そこ
で、mel-q-ccl.el の quoted-printable エンコーダを base64 組み込
み関数ののように働かせることを提案します。

(base64-encode-string (string 4194300))
 => "/A=="

(base64-encode-string (string 252))
 => "/A=="

パッチです:

-------------- next part --------------
--- mel-q-ccl.el~	2006-06-12 15:10:02 +0000
+++ mel-q-ccl.el	2008-04-03 06:33:51 +0000
@@ -893,7 +893,13 @@
   (defun quoted-printable-ccl-encode-region (start end)
     "Encode the region from START to END with quoted-printable encoding."
     (interactive "*r")
-    (decode-coding-region start end 'mel-ccl-quoted-printable-lf-lf-rev))
+    (save-excursion
+      (goto-char start)
+      (insert (prog1
+		  (decode-coding-string
+		   (string-as-unibyte (buffer-substring start end))
+		   'mel-ccl-quoted-printable-lf-lf-rev)
+		(delete-region start end)))))
 
   (defun quoted-printable-ccl-insert-encoded-file (filename)
     "Encode contents of the file named as FILENAME, and insert it."
-------------- next part --------------

(http://article.gmane.org/gmane.emacs.mime.japanese/672
 で投稿した暫定対策の defadvice は破棄してください。)

よろしくお願いします。


More information about the Emacs-mime-ja mailing list