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

守岡知彦 / MORIOKA Tomohiko tomo @ kanji.zinbun.kyoto-u.ac.jp
2002年 11月 5日 (火) 21:27:25 JST


>>>>> <87of94s1ao.wl @ eken.phys.nagoya-u.ac.jp> にて
>>>>> “Yoichi”= Yoichi NAKAYAMA <yoichi @ eken.phys.nagoya-u.ac.jp> さま曰く:

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

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

Yoichi> あ、嘘の 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 
tomo> なら 1 全体となるのが正しいといえます。

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

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

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

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

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

そのようですね。get-mother というより with-children に近いですね。API
体系ととして考えると、別に mime-preview-move-to-upper のような親の情報
を得るための関数があれば、それと mime-preview-find-boundary-info を組
み合わせれば親の情報が得られる訳で、get-mother みたいな不自然な option
は要らない気がします。一方、子孫込みの自分の全領域を得る情報はあった方
が良いと思います。

という訳で、with-children という定義にすることを提案したいと思います。
また、SEMI 1.15 API を作る時に、mime-preview-move-to-upper の
(mime-preview-quit) なし版というか副作用なし版の関数を追加してはどうか
と思います。


ところで、mime-preview-find-boundary-info の SEMI での用例は 
mime-preview-follow-current-entity とmime-preview-toggle-display だけ
で、ChangeLog を見た感じでもなんとなくcheck が甘そうな香りがします。
(^_^;;

いずれにせよ、申し訳ないです。


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

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

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

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

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

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

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

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

という訳で、これを追認するということでいかがでしょうか?

その場合、get-mother を with-children とかに変えてはいかがでしょうか?

では。

-- 
┯━…‥・懐かしい未来の記憶をふと思い出しかけた・‥…━━┯━━━┯━
││ ─ │  ─  /    ─   ┼─     ┬                ─   ─┼ ┬┴─
┼┼─┼|〓━─┼ 守岡 知彦 (MORIOKA Tomohiko) <tomo @ m17n.org> ─ ─┬
┻┻━┻━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━





More information about the Emacs-mime-ja mailing list