Open tkf opened 12 years ago
いろいろ追い付いてなくてすいません。 e2wmはこういう明示的にWindowを扱うものとか key-sequence でイベントループ止めてしまうものに弱いです。。。 set-window-configuration はadviceしていますので多分大丈夫だと思いますが、with-output-to-temp-buffer が display-buffer でなにかしているのが影響しているかなという感じがしていますが、もうちょっと調べてみる必要があります。
いえいえ、お忙しいのに返答ありがとうございます。気づいたらどんどんissue入れてますが、優先度とかの判断はよろしくお願いします。気長に待ちます。
もう少し調べてみました。 comint-dynamic-list-completions
-> display-completion-list
-> (run-hooks 'completion-setup-hook)
-> e2wm:override-setup-completion
で e2wm が set-window-configuration
を呼んでいるのにも関わらず、 comint-dynamic-list-completions
もその後 set-window-configuration
を呼んでいるのが原因ではないでしょうか。
e2wm:override-setup-completion
の説明に
(defun e2wm:override-setup-completion ()
;;completionバッファが終了したとき、set-window-configurationが呼ばれずに
;;window配置が元に戻される。なので、completionから戻ったときには
;;windwo-configuration-change-hookを捕まえて自前で
;;window配置を直すようにする。
...)
とありますが、もし display-completion-list
を呼ぶ関数が自前で set-window-configuration
を呼んでいたら問題になるってことですよね?
きれいな方法じゃないですが、こんな感じでしのぐことにしました。
(defadvice comint-dynamic-list-completions
(around my-e2wm-workaround activate)
(flet ((e2wm:override-setup-completion ()))
ad-do-it))
(defadvice completion-at-point
(around my-e2wm-workaround activate)
(flet ((e2wm:override-setup-completion ()))
ad-do-it))
を実行すると window の配置が壊れてしまいます。元の配置がmain windowの中で繰り返されるような感じになります。set-window-configuration などが comint-dynamic-list-completions から呼ばれているのが原因でしょうか。
Emacs 24.0.94.1 で確認しました。