松尾です。

はやみずさん、mergeありがとうございます。

> 原因のほうはまだ完全に理解した気分にはなれていないのですが、
> post-command-hook で (setq deactivate-mark t) するような処理
> (minibuffer-message)を呼び出すと、なんか良くないことが起こる、というこ
> とですね。

私もよく理解できてないのですが、現象を見るとそのようです。

> 1. deactivate-mark が毎回 t にされたらmarkを有効化できない
> 2. deactivateされるタイミングがずれる
> 
> の2つが発生して、それぞれ
> 
> 1. letで束縛して変更を局所化する
> 2. 自前で deactivate-mark を呼び出す
> 
> として解決している、ということで正しいでしょうか。

はい、そのつもりです。ただ、2.の操作でなぜ解決するのかはよく
分かっていません。1.の対策をした上で(minibuffer-message)の後で
deactivate-markを呼ぶようにしても解決できませんでした。
(minibuffer-message)に変更される前の変数deactivate-markの値を
参照してdeactivate-markを呼ぶようにしたのですが、deactivateの
タイミングはずれてしまいました。
今回のcommitの呼び出し位置ならタイミングのずれは起こりません。
呼び出し位置でよく分からない変化が起こるようです。

ChangeLogを見ると
2008-04-09  Stefan Monnier  <[email protected]>
        * keyboard.c (Qdeactivate_mark): New var.
        (command_loop_1): Use it to call `deactivate-mark'.
        (syms_of_keyboard): Initialize it.

http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=d3d8c45aa39da82f73acc3f2d5f1c1a8baf491be

というのがありました。こちらで試していたのは22.2以前のものだけ
なのですが、2008-09-05リリースの22.3からは問題ないのかもしれません。

---
松尾 直志 <[email protected]>

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
twmode-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/twmode-users

メールによる返信