bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses select


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







reply via email to

[Prev in Thread] Current Thread [Next in Thread]