[T] support EMIKO 1.14

Katsumi Yamaoka yamaoka @ jpl.org
2001年 9月 28日 (金) 14:32:49 JST


>>>>> In [emacs-mime-ja : No.00945]
>>>>>	Daiki Ueno <ueno @ unixuser.org> wrote:

上野さん> たぶん山岡さんは、このような代替案はあらかた考慮されていると
上野さん> 思いますが、

考えてませんて。この問題の対策を行なうのはたぶんこれで三回目です
が、その都度何が起こっているかを調べ直しているザマですから。:-p

上野さん> mime-edit-invisible を付加することにした時の記憶が既におぼろ
上野さん> げなので、もう一度 T-gnus の message.el を眺めてみたのですが、

ぼくも自分の鶏頭にしっかり刷り込むために、考えながらコメントして
みます。実はあんな変なことはやらなくても良いのではないかと思い始
めています。

上野さん> (1) EMIKO 以外の SEMI は `invisible-region' を使って付加した
上野さん> invisible プロパティをパートの境界を判断するのに利用している。

そうですね。そして、エンコードするときに invisible な領域の直後
に MIME tag 以外のものがあったら text の tag を挿入するのは少な
くとも後期の tm では行なわれていますから、これは伝統と言っても良
さそうです。

一方 tm をかなりお手本にしたと思われる v5.8 以降の Gnus では tag
の文字列が情報のすべてであって、SEMI のように binary データの実
体を人間が編集するバッファに挿入しない代わりに、binary データの
tag を挿入した場所の先に何も無くても text の tag を必ず付けます。
揮発性の高い text property に依存しないこの方法も、ぼくは確実で
良いと思っています。

上野さん> (2) message.el 内で `invisible-region' を 
上野さん> `message-invisible-region' に置き換えて、特定の領域からは
上野さん> invisible プロパティを剥ぎ取らないように、message-invisible
上野さん> プロパティで印をつけている。

はい。この関数の置き換えは、後々何をやっているのか忘れてしまいそ
うで心配だったのですが、案の定でありました。^^;;

Semi-gnus の良いところは、人間が編集するバッファとエンコードする
バッファが別になっていることで、万が一送信に失敗しても最初から書
き直したりエンコードによる変更を undo する必要がありません。

でも Gnus は message の処理のいろんな区切り目に (undo-boundary)
を入れてあるので、T-gnus でも同様のことができるような気がします。
あるいはエンコードするときは元のバッファの内容を別の場所にコピー
して保存するようにしても良いわけですし。

そして次が問題なのですが、編集用のバッファからエンコード用のバッ
ファに内容物をコピーするときに、T-gnus では Gnus の
message-send-mail に倣ってすべての text-property をはぎ取ってい
ます。ただし invisible または mime-edit-invisible は残します。

上野さん> (3) EMIKO は `message-invisible-region' 相当のものを自前で用
上野さん> 意しているため、(1) (2) が効かなかった。

はいそうです。昨日までの T-gnus では mime-edit-invisible を消し
てしまっていました。

どうもぼくは何も考えずに Gnus をデッドコピーしたのではないかと思
うのですが、T-gnus ではすべての text-property をはぎ取る必要は無
かったのではないか。もしそうならば、これをやめることによって問題
の 70% は消えてしまいます。Chaos を覗いてみると実際にそんなこと
はしていませんし。

上野さん> * `message-send' で、テキストプロパティを一切剥ぎ取らない。
上野さん> → X-Face utility などとの兼ね合いから、これでは悲しいことに
上野さん> なる?

X-Face util?  はて、自分では何も思い出せないので、ともかく実験が
必要ですね。^^;;

上野さん> * `gnus-copy-article-buffer' を変更して、*Article* バッファ
上野さん> からコピーする時点で、(2) のアプローチとは逆に invisible プ
上野さん> ロパティを剥ぎ取っても良い領域に message-invisible プロパティ
上野さん> を付加する。

うーむ、これもわからんぞ。article から持ってきたものを MIME-Edit
でエンコードするのって、どういうときでしたっけ? ^^;;
message バッファからエンコード用のバッファに移すときにそうするの
は良いでしょうね。

前に 70% と書きました。残りの 30% は何かというと、T-gnus には
(Gnus にも) 人間が編集するバッファに不可視なものがあったら、
「こんなものがあるけど、このまま送信しちゃっていいの?」とユーザ
に見せてお伺いをたてる機能があります。ここで MIME-Edit が挿入し
たデータも対象になってしまうのは煩わしいので、現在はチェックする
ときだけ invisible を解除していて、その判別に
mime-edit-invisible ないしは mime-edit-invisible の印が必要です。

たいした違いではないですが、そういう印が付いていたらチェック対象
にならないようにすることも可能でしょう。

上野さん> * `x-face-mule-hidden-properties' 相当の変数を EMIKO に用意
上野さん> する。
上野さん> ;; `mime-edit-invisible' という名前は、あまりにもあん
上野さん> ;; まりなので…。

ではどんな名前が良いでしょう? :-)
すでに普及している EMIKO との互換性を保つためには、このままにし
ておくのが良いような気もしますが。と言うのは、

ここまで書いて思い付いた今後の方針:

・副作用が無いならば、編集用のバッファからエンコード用のバッファ
  にコピーするときに一切の text property をはぎ取らない。

・mime-edit-invisible が付いている部分は不可視領域のチェック対象
  から外す。

・invisible-region を置き換える関数 message-invisible-region が
  付加する property は、現在の message-invisible に代わって
  mime-edit-invisible とする。

といったところでいかがでしょうか?
-- 
Katsumi Yamaoka <yamaoka @ jpl.org>
;; すみません、長くて。^^;;




More information about the Emacs-mime-ja mailing list