bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#28978: 26.0; Regression: separate, dedicated `*Completions*' frame n


From: martin rudalics
Subject: bug#28978: 26.0; Regression: separate, dedicated `*Completions*' frame no longer has parameter `minibuffer'
Date: Thu, 26 Oct 2017 09:57:51 +0200

>> Since the 'minibuffer' parameter of a frame cannot be changed (from nil
>> to some non-nil value and vice-versa at least) after its creation,
>
> Is that something new?

Hardly.  The text in the Elisp manual

`minibuffer'
     Whether this frame has its own minibuffer.  The value `t' means
     yes, `nil' means no, `only' means this frame is just a minibuffer.
     If the value is a minibuffer window (in some other frame), the
     frame uses that minibuffer.

     This frame parameter takes effect when the frame is created, and
     can not be changed afterwards.

is the same for Emacs 23 as for Emacs 26.  It's not correct because we
allow to set the parameter from one minibuffer window to another but I
didn't change the doc yet simply because I never read the corresponding
code attentively enough.

> I don't call `make-frame' to create frame `*Completions*'.
> It is created when ` 1on1-display-*Completions*-frame' is
> called, and that is done by `special-display-function'.
> I showed the code for that in my previous message.

The 'minibuffer' parameter must be set up specially by whoever calls
‘make-frame’.  If this is not done, you can't change it afterwards.  The
default value of ‘special-display-function’ is
‘special-display-popup-frame’ and I don't see the latter setting up the
'minibuffer' parameter anywhere.

> I don't ever set parameter `minibuffer' explicitly for
> *Completions*.  I'm guessing that it has always gotten
> set automatically when frame input was redirected from
> frame *Completions* to the standalone minibuffer.
>
> (It is redirected to `completion-reference-buffer' if
> the minibuffer is not active (and if `c-r-b' is not
> frame *Completions*)).

Maybe you mean "focus redirection" here which is something different
from setting up the 'minibuffer' parameter.

> See previous message for that code.  The complete code is
> here: https://www.emacswiki.org/emacs/download/oneonone.el
>
> As I say, the code works in all Emacs releases.  It
> does not work in this Emacs 26 prerelease (only).
>
> Here is (some of) the code (from icicles-mcmd.el) that
> relies on the parameter having being set:

I understand that you want that parameter to have a non-nil value there.
So make sure that it is.  For this you will have to debug your earlier
version to see how they set up the 'miniuffer' parameter and compare
them with the current version to see how it fails to do that.

martin






reply via email to

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