From: Sam Steingold Date: Wed, 21 Mar 2012 16:01:18 +0000 (-0400) Subject: * lisp/window.el (switch-to-prev-buffer): Do not switch to a visible X-Git-Tag: emacs-pretest-24.0.05~81^2~11 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=087bbb4cac855da186b81ffc92457079a0adfc28;p=emacs.git * lisp/window.el (switch-to-prev-buffer): Do not switch to a visible window previous buffer, just like with the frame previous buffers. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ea7d81bb969..50a9e61bf4c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-03-21 Sam Steingold + + * window.el (switch-to-prev-buffer): Do not switch to a visible + window previous buffer, just like with the frame previous buffers. + 2012-03-21 Chong Yidong * faces.el (make-face, make-empty-face, copy-face): diff --git a/lisp/window.el b/lisp/window.el index f79041e0e6c..894d113cdc7 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -2600,11 +2600,14 @@ shall not be switched to in future invocations of this command." (not (setq killed-buffers (cons new-buffer killed-buffers)))) (not (eq new-buffer old-buffer)) - (or bury-or-kill + (or bury-or-kill (not (memq new-buffer next-buffers)))) - (set-window-buffer-start-and-point - window new-buffer (nth 1 entry) (nth 2 entry)) - (throw 'found t))) + (if (get-buffer-window new-buffer) + ;; Try to avoid showing a buffer visible in some other window. + (setq visible new-buffer) + (set-window-buffer-start-and-point + window new-buffer (nth 1 entry) (nth 2 entry)) + (throw 'found t)))) ;; Scan reverted buffer list of WINDOW's frame next, skipping ;; entries of next buffers. Note that when we bury or kill a ;; buffer we don't reverse the global buffer list to avoid showing