|
From: | martin rudalics |
Subject: | bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window |
Date: | Fri, 24 Oct 2008 19:37:27 +0200 |
User-agent: | Thunderbird 2.0.0.16 (Windows/20080708) |
> (defun my-walk () (walk-windows 'identity)) > > (add-hook 'window-configuration-change-hook 'my-walk nil t) > > (split-window) > > (switch-to-buffer-other-window "test") > > If you put these forms in the *scratch* buffer of "emacs -Q" and then > evaluate them one after another, you should be able to see the problem. > The problem does not occur if the hook is NOT made buffer-local. Yes. Replacing `split-window' by (progn (split-window) (message "sel %s .. lru %s" (selected-window) (get-lru-window))) shows the problem immediately. Everything seems alright when you put that message into my-walk. run_window_configuration_change_hook selects each window before running the hook buffer-locally which makes any reasoning (within the function run by the hook) about which window will be selected when the command completes void. In addition it unwinds with select_window_norecord which won't restore the current buffer when the selected window gets reselected. Both of these don't explain the problem that somewhere `select-window' must get called with norecord nil :-( martin
[Prev in Thread] | Current Thread | [Next in Thread] |