Subject: bug#27997: pick a better buffer to fill the gap, not one I already see

From: Tino Calancha <[email-masked]>
Date: Mon, 07 Aug 2017 12:49:59 +0900

積丹尼 Dan Jacobson <[email-masked]> writes:

> OK I killed a buffer, so a new one pops in to replace it.
>
> Except sometimes the choice of the new one is quite embarrassing: it
> picks a buffer I'm already looking at while at the same time ignoring a
> better candidate.
>
> $ emacs -Q /tmp/a /tmp/b /tmp/c
>  C-x 1 [delete-other-windows]
>  C-x 4 b [switch-to-buffer-other-window] # Smart enough not to prompt with the name of a buffer I already see. Good.
>  <return> [minibuffer-complete-and-exit] # was prompted with "b", OK
>  C-x k [kill-buffer]                     # was prompted with "b", OK
>  <return> [minibuffer-complete-and-exit] # killed "b", OK, but...
>
> Now I'm staring at two "c" buffers!
> I would be better served by staring at "a" and "c" buffers.
>
> So please when selecting a buffer to fill the gap,
> again be smart enough not to show a buffer I already see.
The original code pick up the previous buffer shown in that same
window.  That's a feature; sometimes might be desirable.
For instance,
;; Imagine we want to split the window to show two
;; differents parts of a large buffer.
emacs -Q src/data.c
C-x 3 ; split-window-right
M-> ; end-of-buffer
M-v ; scroll-down-command
;; Wanna see who commited the line at point.
C-x v g ; I see, Daniel was.
;; Some people don't use `quit-window', just `C-x b' and `C-x k'
C-x k RET ; This return me where i was
;; Still have src/data.c split in the upper/lower parts.
;; With your suggestion we will have src/data.c in one
;; window and a diferent buffer (*scratch*) in another.

IMO, if we follow your suggestion it must be configurable
with an option (nil by default).