[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: managing windows in two frames

From: martin rudalics
Subject: Re: managing windows in two frames
Date: Sat, 07 Sep 2013 11:37:49 +0200

> `find-file' does not call `display-buffer'; `find-file-other-window'
> does call `display-buffer'. (I just checked by enabling Edebug in
> display-buffer.)
> `find-file' calls `switch-to-buffer' which calls `pop-to-buffer'.

Usually, `switch-to-buffer' simply sets the buffer of the selected
window.  It calls `pop-to-buffer' only if something unexpected happens.
But you're right in the sense that `find-file' is usually not affected
by `display-buffer-alist'.

> The same is true for all the other "put a buffer in this window"
> user level functions I've encountered.

Right.  There was a period where Stefan wanted to deprecate calls of
`switch-to-buffer' from Elisp but later Chong restored the old behavior
(and neither wanted to change the specification of `switch-to-buffer'
itself).  IIRC he simply wanted to keep the old semantics unchanged.

> `display-buffer-same-window' is an action for `display-buffer'.
> Ah! We could change the implementation of `find-file' to use
> `display-buffer' with an action of `display-buffer-same-window'; that
> action would be changed by prefix C-x 4 or C-x 5.

Yes.  We'd definitely have to replace all `switch-to-buffer' calls to
propose an action like `display-buffer-same-window' if we wanted to make
the prefixes work here.  But we have to do it in some "overriding" sense
to make sure that a user's "general" `display-buffer-alist' settings
don't interfere with the semantics of the current operation.

> `find-file-other-window' could then be implemented by setting
> `display-buffer-overriding-action' and calling `find-file'.
> That would make sense, and should be mostly transparent to users. All
> the other similar functions would have to be changed in a similar way -
> I haven't tried to enumerate them. We could implement C-x 4 and 5 for
> the current uses of `display-buffer' first, and see how people like it.

We first have to handle the case where `display-buffer' pops up a
*Completions* window (which might pop up a *Backtrace* window ...).  I
yet have no good idea how to do that.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]