[Top][All Lists]

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

RE: switch-to-buffer-other-frame fails to pop-up window

From: Drew Adams
Subject: RE: switch-to-buffer-other-frame fails to pop-up window
Date: Thu, 6 Dec 2007 14:06:38 -0800

> interesting that you've weighed in.  i read a lot of your code
> while converting my .emacs from v21 to v22.  you've certainly
> confronted the buffer/window/frame style question in depth.
> and i'm happily using many of your libraries.

Not everyone agrees with my conclusions or preferences in this regard, of
course. But I'm glad you find some of the code useful.

> i'm not saying that use case isn't valid.  i'm saying there is a clash
> between the word "other" in "switch-to-buffer-other-frame" and that use
> case.  there is no "other" frame in the example martin gave and the use
> case you prefer.  and i'm supporting my case by drawing an analogy to
> the behavior of "c-x 4 b" where two windows are *always* involved.

I understood. Yes, C-x 5 b behaves like C-x 4 b when the buffer is displayed
in a single, split frame. C-x 5 b does not create a new frame in that case,
so, yes, its meaning of "other frame" is not exactly analogous to C-x 4 b's
notion of "other window".

> you better than anyone should have a feel for the right thing to do.
> from what i can tell from a pass through the emacsWiki, you're the
> buffer/window/frame usage style guru.

No, not at all. Perhaps, however, I complain more than some about Emacs's
treatment of frames vs windows.

There are others who also typically use frames instead of windows but do so
in a different way than I. And they don't necessarily use non-nil
`pop-up-frames'. Stefan Monnier is one who uses frames a bit differently - I
think he more or less makes each window dedicated (automatically).

Some people always use a separate frame for each buffer, not just the first
time a buffer is displayed (as I do). That is, they never reuse a frame for
a different buffer or split its window to show more than one buffer.

Some people who prefer frames don't use a standalone minibuffer (I do).

Some people (including me) want deletion of a buffer or window in a
one-window frame to also delete the frame. Some prefer the frame to be
iconified. Others prefer that a different buffer fill the frame.

There are thus different use cases and preferences. It's unfortunate that
Emacs doesn't, in general, play too well with frames, but that's the way it
is, so far. I think we'll eventually get it to satisfy everyone out of the
box (modulo Customize), but it might take some time. Martin R. has been
trying to fix some of the problems with quitting View mode and Help mode,
for instance. Some of the code is complex, and it's not always obvious how
to satisfy everyone.

> i tend to keep one file (buffer) per frame. i like to have help &
> grep & apropos and similar things pop up and down within the frame
> from which they were invoked. but i like "info" and "*Messages*"
> to be in separate, dedicated frames.

You might want to handle those preference differences using special-display
for some buffers. I do something similar for *Completions* and *Help* (in
library oneonone.el).

> i also find it convenient to have more than one top-level "info" frame.

I just clone the current Info buffer whenever I want another copy of Info:
`M-x clone-buffer'.

> what got me started down this entire path was an attempt at providing
> per-frame help buffers.  i was annoyed when an existing help window
> in frame X changed to the help response i generated when i invoked help
> in frame Y.  i tried to take over 'help-buffer' from help-mode.el in order
> to hide a per-frame help buffer name in a frame property.  but i
> found that '(selected-frame)' returned the minibuffer frame when
> 'help-buffer' was invoked rather than the frame from which
> "help" was invoked (i sent in a separate
> bug report for that but haven't heard anything about it yet).

You don't want *Help* in its own frame; you want it to always open in the
current frame. Is that right? That's what happens by default, if
`pop-up-frames' is nil, no?

emacs -Q
C-x d ~
C-x 5 2
C-x b *scratch*
C-h f forward-char ; opens *Help* in the same frame as *scratch*
click mouse-1 on the frame with Dired, to select it
C-h f backward-char ; opens *Help* in the same frame as ~ (Dired)

I see *Help* in each frame. Of course, it has the same content (description
of backward-char), since it's the same buffer.

It sounds like maybe that's what you are annoyed by: that the buffer is the
same in the different help windows. To get around that, I think you will
need to do a little juggling - perhaps rename *Help* temporarily at one
point or the other (automatically or manually). There is no built-in notion
of per-frame help buffers. IIUC, this is not really a problem about frames
or windows: your request seems to involve having multiple help buffers, not
a single *Help*.

reply via email to

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