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

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


もはや、FLIM/SEMI の code を半分(以上)忘れてる守岡です。このところ反
応が悪くてごめんなさい。

でも、XEmacs UTF-2000 をいじってるうちに MIME-charset の撰択がおかしく
なってきて、そろそろ encode まわりをまたいじらなあかんなぁと思う今日こ
の頃です。


>>>>> [emacs-mime-ja : No.01101] にて
>>>>> “Yoichi”= Yoichi NAKAYAMA <yoichi @ eken.phys.nagoya-u.ac.jp> さ
      ま曰く:

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

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

Yoichi> 別件で FLIM とか SEMI とか読んだら副作用で読めるようになってし
Yoichi> まったので結局自分で読みました :)

ぱちぱち。(^_^)

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>   〜

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

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

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

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

とすると、(*) の場合は (point-max) ではまずい場合と、(point-max) で良
い場合があります。

(**) の場合、(point-max) ではまずいといえます。

Yoichi> 添付のようにして直っているような気がしているのですがいかがでしょ
Yoichi> うか。
Yoichi> ;; かなり眠い状態で考えてたので、実はおかしいのは自分の頭の中
Yoichi> ;; というオチだったりして…

;; 私が tm-view/mime-view 書いてた頃も眠いか頭おかしいか精神がおかしい
;; 時が多かった気がします。(^_^;;

Yoichi> [2 mime-view.diff <application/octet-stream (7bit)>]
Yoichi> Index: mime-view.el
Yoichi> ===================================================================
Yoichi> RCS file: /cvs/root/semi/mime-view.el,v
Yoichi> retrieving revision 1.151.2.11
Yoichi> diff -u -r1.151.2.11 mime-view.el
Yoichi> --- mime-view.el	14 Jun 2001 14:34:19 -0000	1.151.2.11
Yoichi> +++ mime-view.el	16 Oct 2002 18:18:29 -0000
Yoichi> @@ -1503,7 +1503,6 @@
Yoichi>  	   )
Yoichi>  	  (get-mother
Yoichi>  	   (save-excursion
Yoichi> -	     (goto-char p-end)
Yoichi>  	     (catch 'tag
Yoichi>  	       (let (e i)
Yoichi>  		 (while (setq e
Yoichi> @@ -1511,12 +1510,14 @@
Yoichi>  			       (point) 'mime-view-entity))
Yoichi>  		   (goto-char e)
Yoichi>  		   (let ((rc (mime-entity-node-id
Yoichi> -			      (get-text-property (1- (point))
Yoichi> +			      (get-text-property (point)
Yoichi>  						 'mime-view-entity))))
Yoichi>  		     (or (and (>= (setq i (- (length rc) len)) 0)
Yoichi>  			      (equal entity-node-id (nthcdr i rc)))
Yoichi>  			 (throw 'tag nil)))
Yoichi> -		   (setq p-end e)))
Yoichi> +		   (setq p-end (or (next-single-property-change
Yoichi> +				    (point) 'mime-view-entity)
Yoichi> +				   (point-max)))))
Yoichi>  	       (setq p-end (point-max))))
Yoichi>  	   ))
Yoichi>      (vector p-beg p-end entity)))

正直いって今の私ではこの修整が正しいかどうかは判断できないのですが、元
の code に関していえば、text-property の境界の挙動に関する知識が混乱し
てた(あるいは実装も混乱してた?)時期の香りがするので、おそらく中山さ
んの修整が正しいような気がします。

いずれにしても修整ありがとうございました。

;; test suit が欲しい所ですね。

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





More information about the Emacs-mime-ja mailing list