GNU bug report logs -
#26513
25.2; pop-up-frames and *Completions* buffer
Previous Next
Full log
Message #20 received at 26513 <at> debbugs.gnu.org (full text, mbox):
On Sat, Apr 15 2017 at 09:49:28 am, Drew Adams wrote:
> FWIW, I reported such problems a couple of decades ago.
> Unfortunately (for me at least), there is not enough
> use or interest in using separate frames by default,
> including for *Completions*, so this kind of thing has
> not gotten the love it would really need for progress.
Maybe it's time for some change? :-) Especially in light of the
boatload of new frame stuff that was added recently (thanks to Martin
for that).
> I've tried to do what I can in my own environment to
> handle this, especially in the context of a standalone
> minibuffer frame. And Martin has been helpful wrt
> problems that resulted from changes in the Emacs code
> over the years.
>
> Here's what I do for *Completions*, FWIW:
>
> I add an entry to `special-display-buffer-names* that
> has a function, `1on1-display-*Completions*-frame',
> which takes care of displaying the *Completions* frame.
>
> The main thing that function does is redirect the
> focus of the *Completions* frame to the standalone
> minibuffer frame (if the minibuffer is active) or
> (if not) to the buffer that was current before
> *Completions* display was requested:
>
> (let ((redirect
> (if (active-minibuffer-window)
> 1on1-minibuffer-frame
> (and completion-reference-buffer
> (get-buffer-window
> completion-reference-buffer 'visible)
> (not (eq (get-buffer "*Completions*")
> completion-reference-buffer))
> (window-frame
> (get-buffer-window
> completion-reference-buffer t))))))
> (when redirect
> (redirect-frame-focus (selected-frame)
> redirect)))
1) Does this still work without a standalone minibuffer frame? I'm
interested in using one, but I'd rather fix the *Completions* frame
problem first before adding on a minibuffer-only frame to my setup.
2) I don't understand why vanilla Emacs puts the *Completions* buffer in
focus when it's popped into a new frame -- but I know that this is
the reason you have to redirect the focus from *Completions* to the
minibuffer or the completion-reference-buffer frame. On Mac OS,
though, redirecting frame focus results in a lot of flicker and lag
on each keypress -- sometimes up to a second or two long. (Will save
the rest for another bug report someday.) Wouldn't a simpler
alternative to frame redirection be to just put point back in the
minibuffer or completion-reference-buffer?
> I've said it before, but I think it is relevant:
> Back in the early 1990s the Emacs implementation
> named `Epoch' worked very well with a standalone
> minibuffer frame, out of the box.
>
> All I've done is try to work around Emacs's poor
> (non-existent) support for this kind of use case -
> essentially trying to emulate Epoch behavior.
Standalone minibuffer frames are meant to work correctly almost out of
the box, though, right? (IIRC you just have to fiddle with
`initial-frame-alist' to remove the minibuffer from the first
frame). It's only when *Completions* is displayed in a separate frame
that there are issues.
> But frames remain the poor cousin to windows in
> Emacs. Part of that is likely due to the fact that
> Emacs cannot completely control the behavior of
> frames for all window managers. Window mgrs are
> different, and they have ultimate control.
Yes, this seems like it's the main issue here. But still, sane frame
behavior doesn't seem too far off.
This bug report was last modified 3 years and 116 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.