Hello!
On 13.11.21 14:15, Max Nikulin wrote:
Some users prefers multiple frames, others multiple windows in a full-screen
frame. Could you, please, briefly describe what kind of behavior you are truing
to achieve?
My thought is that I have a perfectly good window manager that allows me to
manage Emacs frames. This removes the need for things to improve window
switching (such as winner, which I used previously). Popping up frames to show
multiple things at the same time integrates well with my WM, and doesn't force
me to remap things like `C-x o`, which I find cumbersome to use. There are
packages that make window switching easier, but I've already configured my
window manager. Thus, I prefer to have my window manager manage Emacs frames,
instead of adding yet another way to switch between multiple things being
displayed at the same time, which I would have to do using Emacs windows.
My current configuration is as follows:
(setq display-buffer-base-action '((display-buffer-reuse-window
display-buffer-pop-up-frame)
(reusable-frames . 0)))
(setq display-buffer-alist
`(("\\*Packages\\*" display-buffer-pop-up-frame)
("\\*stdin.*\\*" display-buffer-same-window)
("\\*Help\\*" display-buffer-pop-up-frame)
("\\*.*\\*" display-buffer-pop-up-window)))
This allows me to pop up normal frames for regular buffers, and have special buffers pop
up in windows to fix the "focus stealing" behavior mentioned above.
The central problem with popping up frames is focus stealing: Things such as
undo-tree or embark don't deal well with having the focus stolen from the
current buffer by a new frame, which is why I needed to configure
`display-buffer-alist`.
Some Org buffers, in my opinion, should behave similarly to completion list. On
the other hand `minibuffer-completion-help' does not use
`display-buffer-overrining-action'. I do not like that this variable has higher
priority than `display-buffer-alist'. Action argument of `display-buffer' is
more appropriate since it keeps ability to customize placement of buffers with
particular names through `display-buffer-alist'.
I don't fully understand the `display-buffer-alist` definition, and copied
mostly from the documentation examples.
I hope this helps.
Best regards,
Jan
PS: Sorry for the empty mail I sent previously.