Subject: bug#11298: 24.0.95; (WISH) Re-look scratch buffers

From: "Drew Adams" <[email-masked]>
Date: Mon, 23 Apr 2012 13:11:19 -0700

> This is the fault of `ido'.  The normal C-x b just asks for 
> an extra RET to confirm you do want to create a new buffer
> (under the control of confirm-nonexistent-file-or-buffer).

Actually, with the default value of `after-completion' I do not see it ever
asking for confirmation.  Did you mean only if the user has customized that
option to something other than nil and the default value?  If not, I guess I'm
missing something.

The doc says that confirmation is required for `after-completion' only if
`minibuffer-complete-and-exit' is called immediately after
`minibuffer-complete'.

[The doc actually phrases that backward.  Why it does that, and why it does not
mention the keys `C-j' and `TAB' instead of the commands, I don't know.  Just to
make it harder to understand, I guess. ;-)]

But I don't see any `C-x b' scenario that leads to confirmation being required,
if the option has the default value of `after-completion'.  AFAICT, when that is
the option value, `C-x b' (`switch-to-buffer'), does not even use a `must-match'
completion keymap to read the buffer name, so `minibuffer-complete-and-exit' is
not even bound to a key.

(No, I didn't check the C source code to be sure, but the debugger shows that
`C-j' invokes `exit-minibuffer' for `read-buffer-to-switch' with an option value
of `after-completion'.)

What am I missing?  Is there a way to hit TAB for a nonexistent buffer name and
have confirmation be requested?  If I type a nonexistent name and hit TAB
(getting "No match"), and then hit `C-j' or `RET', the name is accepted without
confirmation.