Closed tkf closed 12 years ago
履歴の先頭にあるバッファを消すと、そのウィンドウに表示されてるバッファがe2wmの管理下からはずれてしまうバグも見つけました。ちょっと修正してみます。
kill されたバッファに wlf:set-buffer しているのが原因でした。賢くバッファを探すための関数 e2wm:history-get-nearest を追加して対応しました。
遅くなりましてすいません。もともとのバグの再現方法を教えてもらってもいいですか?
最初のバグの再現方法は、
って感じだったはずです。再現出来なければコードを戻してチェックしてみます。
2つ目の change set で直したバグは、同じバッファを複数の window で表示している場合に起きていたはずです。
自分でも忘れてしまっています。ちゃんとバグレポート書いておけば良かったです。。。
ちゃんと再現出来るか不安だったので、(一部)lispで書いてみました。
e2wm 以外はロードしてない状態で確認しました。
(require 'e2wm)
(e2wm:start-management)
(find-file "test-e2wm-1.txt")
(find-file "test-e2wm-2.txt")
(find-file "test-e2wm-3.txt")
;; 1. Start Emacs and open this file.
;; 2. Start e2wm: M-x eval-buffer RET
;; 3. Kill "test-e2wm-3.txt": C-x k RET
;; 4. Then, you will see "test-e2wm-3.txt" in the buffer history.
;; 5. When you update history (e.g., C-x C-b RET), "test-e2wm-3.txt"
;; burnishes from the history list.
いろいろ詰まってて反応遅くなってすみません。 手元の常用Emacsで試してみたところ再現しませんでした。 -q とかでいろいろ試してみます。
Emacs 23.1.1 で試してみましたが、再現しました。微妙な違い (C-x k したあとに見えるバッファが 24 だと test-e2wm-2.txt であるのに対して 23 では上の elisp code のバッファが見える) はありましたが、履歴が残る問題は同様にありました。
ちなみに、以下のように Emacs を起動しました。
% emacs-snapshot -q -L ~/repos/branches/emacs-window-manager/ -L ~/repos/branches/emacs-window-layout/ ~/junk/2012/04/01-121602-e2wm-bug-kill-buffer-hook.el
% emacs -q -L ~/repos/branches/emacs-window-manager/ -L ~/repos/branches/emacs-window-layout/ ~/junk/2012/04/01-121602-e2wm-bug-kill-buffer-hook.el
また、 事前に find . -name "*.elc" | xargs rm -v
で古いバージョンの elisp が読まれないようにしました。 window-layout, e2wm 共に最新のリビジョンです。
Pull request なのに push しまくってて?すいません! まったり pull してください><
Emacs 23.4.2 だと再現しなくて、 Emacs 24.0.95.1 だと再現しました。 ちょっと原因を詳しく追えてないのですが、Emacs 23.4.2 で特に副作用がなく、 Emacs 24.0.95.1 でこのパッチによって問題が修正されていることが確認出来ましたので取り込みます。
お手数をおかけしてすみません!ありがとうございました!!
精査ありがとうございます。 Emacs のバージョンによって挙動が変わるのは面倒ですね。。。 Hookの呼ばれるタイミングが違うんでしょうか? 次からはバージョン番号もフルで書くことにします。
24でdisplay-bufferがすこし変わっていたので気にはなっていたのですが、23.xでも起きていたのが意外でした。 修正コードを見ると、何で今まで動いていたんだろうという感じなのですが、そもそも kill-buffer をe2wmの上であんまりしてなくて、history-list の上でまとめてkillすることが多かったので気がついてなかっただけかもしれません。 毎回バグ修正していただいてありがとうございます。バグ多くてすいません。。。
消したバッファが履歴に残るバグの修正です