[Mew-dist 16275] Re: b102

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2001年 2月 9日 (金) 18:14:57 JST


From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [Mew-dist 16269] Re: b102
Message-ID: <20010209.174301.39182436.kazu at example.com>
Date: Fri, 9 Feb 2001 17:41:56 +0900

kazu> 白井さん、

# 最近、名指しが多いなぁ ^^;;;

kazu> 下の変更ですけど、何の意味があるのかよく分りません。save-excursion の
kazu> 中でも外でも同じ気がするのですが、どうでしょう? (変えるのは、まったく
kazu> 構わないのですが、意図が理解できないです。)

From: Hideyuki SHIRAI (白井秀行) <shirai at example.com> 曰く
Subject: [Mew-dist 16208] Re: b102
Message-ID: <20010207.071302.89191661.shirai at example.com>
Date: Wed, 7 Feb 2001 07:18:19 +0900

白井> (defun mew-summary-mark-undo-all ()
白井>   "Unmark all message marked with 'o' or 'D' or 'X'."
白井>   (interactive)
白井>   (let ((marks mew-summary-mark-undo-marks))
白井>     (message "Unmarking ... ")
白井>     (while marks
白井>       (mew-mark-undo-mark (car marks) 'nomsg)
白井>       (setq marks (cdr marks)))
白井>     (message "Unmarking ... done")))
				
とやったときに、

(mew-mark-undo-mark ?o 'nomsg)
(mew-mark-undo-mark ?D 'nomsg)
(mew-mark-undo-mark ?X 'nomsg)

という順番で進みますが、『thread/virtual folder』で、

(mew-mark-undo-mark ?o 'nomsg)
すると、パッチ前だと、

 mew-mark-undo-mark()
    (save-excursion
       <snip>
      (set-buffer-modified-p nil))
    (mew-summary-unmark-in-physical-alist alist func)

で mew-summary-unmark-in-physical-alist() は save-excursion の外
で実行されますよね。
ここで、mew-summary-unmark-in-physical-alist() は

(defun mew-summary-unmark-in-physical-alist (alist func)
  (let (ent fld msg msgs)
    (while alist
       <<snip>>
      (setq msgs (sort (cdr ent) (function <)))
      (if (not (get-buffer fld))
	  ()
	(set-buffer fld)
	(save-excursion
            <<snip>>
	  (set-buffer-modified-p nil))))))

となっているので、戻るときには、(set-buffer fld) した状態で戻っ
てきます。だから、連続して mew-mark-undo-mark() したときに

(mew-mark-undo-mark ?o 'nomsg)
 => 終了時には physical folder が選択されている

(mew-mark-undo-mark ?D 'nomsg)
 => こいつは physical folder にしか効果をおよぼさない。

となり、thread folder の mark が消えなかったからです。

どこで save-excursion() を効かすかという問題はありますが、僕のパッ
チが、新たな save-excursion() を増やさないから良いかな、と思った
のでした。また、見た目、point が動かないのに、buffer が変わって
いるのもなんだかなぁ、という気持ちも入っています。

-- 
白井秀行 (mailto:shirai at example.com)



Mew-dist メーリングリストの案内