Subject: bug#9532: 24.0.50; `special-display-regexps' is no longer respected

From: Stefan Monnier <[email-masked]>
Date: Wed, 21 Sep 2011 13:59:12 -0400

>> I think the problem here is that display-buffer--special should not just
>> be in display-buffer-fallback-action but should take precedence over the
>> ACTION argument (it's largely equivalent to display-buffer-alist).

> The problem with this is that if the "special" buffer is already
> displayed in a window, that window is supposed to be used instead of
> popping up a special window (at least, according to old behavior).

> We could accomodate this by changing display-buffer--special to also
> call display-buffer--maybe-same-window and display-buffer-reuse-window
> for special-display-p buffers.

Yes, that's what I'm suggesting.

> Then another problem arises: all direct switch-to-buffer calls will
> trigger special display for special buffers, which is not consistent
> with old behavior.  The key difference here is that in Emacs 23 the
> `info' command calls display-buffer (using same-window-regexps to force
> it into the same window), whereas currently `info' uses switch-to-buffer
> (with the intention of transitioning away from same-window-*).

At least both Drew and I would consider it a bug fix if
special-display-* applies to *info*, so I'm not sure such a change is
a problem.

> OTOH, I don't see an easy way to handle all the backward compatibility
> exceptions in this case.

We'd have to distinguish between a switch-to-buffer which disregard
special-display-* (the one that used to use same-window-* instead) and
another switch-to-buffer which doesn't.

Let's first try without such a distinction, i.e. with a switch-to-buffer
which obeys special-display-*.  This is similar to reducing the priority
of same-window-* from "above special-display-*" to below it.

        Stefan