[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: |
Stefan Monnier |
Subject: |
bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window |
Date: |
Sat, 25 Oct 2008 15:08:10 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux) |
> I constructed the following self-contained case that I hope helps you:
> (defun my-walk () (walk-windows 'identity))
> (add-hook 'window-configuration-change-hook 'my-walk nil t)
> (split-window)
> (switch-to-buffer-other-window "test")
In Emacs-22, window-configuration-change-hook did not work correctly
with buffer-local hooks, but in some cases you could make it work
somewhat by using `walk-window' in your hook to try and cover all the
affected windows.
With the code I installed to properly support buffer-local hooks on
window-configuration-change-hook, the walk-window should be unnecessary,
so the patch below should not break linum and might remove the problem.
This said, walk-windows should probably use `norecord', what do
people think?
Stefan
=== modified file 'lisp/linum.el'
--- lisp/linum.el 2008-08-31 19:46:54 +0000
+++ lisp/linum.el 2008-10-25 19:06:30 +0000
@@ -82,17 +82,22 @@
'linum-update-current) nil t)
(add-hook 'after-change-functions 'linum-after-change nil t))
(add-hook 'window-scroll-functions 'linum-after-scroll nil t)
+ ;; FIXME: using both window-size-change-functions and
+ ;; window-configuration-change-hook seems redundant.
(add-hook 'window-size-change-functions 'linum-after-size nil t)
(add-hook 'change-major-mode-hook 'linum-delete-overlays nil t)
(add-hook 'window-configuration-change-hook
- 'linum-after-config nil t)
+ ;; FIXME: If the buffer is shows in N windows, this
+ ;; will be called N times rather than once. We should use
+ ;; something like linum-update-window instead.
+ 'linum-update-current nil t)
(linum-update-current))
(remove-hook 'post-command-hook 'linum-update-current t)
(remove-hook 'post-command-hook 'linum-schedule t)
(remove-hook 'window-size-change-functions 'linum-after-size t)
(remove-hook 'window-scroll-functions 'linum-after-scroll t)
(remove-hook 'after-change-functions 'linum-after-change t)
- (remove-hook 'window-configuration-change-hook 'linum-after-config t)
+ (remove-hook 'window-configuration-change-hook 'linum-update-current t)
(remove-hook 'change-major-mode-hook 'linum-delete-overlays t)
(linum-delete-overlays)))
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window, Markus Triska, 2008/10/24
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window, martin rudalics, 2008/10/24
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window, Markus Triska, 2008/10/24
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window, martin rudalics, 2008/10/24
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window, Markus Triska, 2008/10/24
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window, martin rudalics, 2008/10/24
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window, martin rudalics, 2008/10/25
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window, Markus Triska, 2008/10/25
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window, martin rudalics, 2008/10/25
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window,
Stefan Monnier <=
- Message not available
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window, Markus Triska, 2008/10/29
- bug#1237: 23.0.60; `switch-to-buffer-other-window' sometimes uses selected window, Lennart Borgman, 2008/10/29