What does get-mother arg. of mime-preview-find-boundary-info mean?

Yoichi NAKAYAMA yoichi @ eken.phys.nagoya-u.ac.jp
2002年 11月 5日 (火) 20:28:47 JST


なかやまです

Yoichi> > mime-preview-find-boundary-info の get-mother の意図する効用
Yoichi> > というのはどういうものでしょうか?

tomo> ひとつ上の親の境界を調べるという意味のようです。

あ、嘘の description を入れてしまったかも

Yoichi> (header)
Yoichi> 1
Yoichi>  (header) <== ここで get-mother=t なら 1 全体を取る; nil なら 1 の header のみ (*)
Yoichi>  1.1.1 
Yoichi>     〜      <== ここでは get-mother=t でも 1.1.1 のみ
Yoichi>  1.1.2 
Yoichi>     〜      <== (**)
Yoichi> 2
Yoichi>   〜

tomo> おぼろげな記憶によれば、1.1.1 の場合、get-mother=t なら 1.1 全体になり
tomo> ます。ただ、1.1 が message/rfc822 だったりすると陽に見えないので判りに
tomo> くいですが(上記はそういう場合の図でしょうか?)。

tomo> (*) は曖昧で、実は 1 の場合と 1.1 の場合がありそうです。実は 1 だった
tomo> 場合、get-mother=t なら message 全体となりますし、実は 1.1 なら 1 全体
tomo> となるのが正しいといえます。

はい、図は message/rfc822 を 1 として添付した例です。

  (mime-entity-node-id (get-text-property (point) 'mime-view-entity))

で調べてみたところ、message/rfc822 の場合、 tag 直上で 1 、ヘッダ領域で
1.1 がそれぞれ生で見えますね。

> (**) の場合、get-mother=t なら 1.1 全体となるのが正しいといえます。

うーむ。となると僕の修正以前からその意図とは違う動作になっているような…。

Yoichi> ということを意図してるのだと思いますが、次の次のパートが存在し
Yoichi> ないとき、例えば上の図のように 2 までしかないときについては論
Yoichi> 理がおかしいために(*) とか (**) のところで間違えて (point-max) 
Yoichi> を p-end に入れてしまいます。

僕が修正した問題は、元のコードだと

 「次の次」の entity の先頭に飛んで、一歩後ろを見て「次」の entity の情報を
  調べていた (真なら「次の次」の先頭か point-max を返す)

ので、「次の次」の entity が存在しない時は調べる前にやめちゃうという問題で、

 → 「次」に飛んで、そこで足元を見て「次」の entity の情報を調べる
    (真なら「次の次」の先頭か point-max を返す)

ようにしました。というわけで論理の bug を取っただけで大筋の動作は変えていません。
僕の読みでは、find-boundary-info の動作としては、mime-preview-follow-current-entity
で使われていることをふまえて、実際の動作を検証した結果、

  get-mother=t なら、「自分と自分から生えた枝」を取る

という動作と取りました。で、そういう description 付けちゃったんですが、
間違ってますかねぇ。
;; で、どうして get-mother って名前なのかという疑問は残ったわけです。
-- 
Yoichi Nakayama





More information about the Emacs-mime-ja mailing list