[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 メーリングリストの案内