Subject: bug#6945: active-minibuffer-window returns nil when prompt overwritten by message

From: Stephen Berman <[email-masked]>
Date: Mon, 30 Aug 2010 15:48:27 +0200

On Mon, 30 Aug 2010 15:09:23 +0200 Lennart Borgman <[email-masked]> wrote:

> On Mon, Aug 30, 2010 at 2:44 PM, Stephen Berman <[email-masked]> wrote:
>> On Mon, 30 Aug 2010 12:30:37 +0200 Lennart Borgman <[email-masked]> wrote:
>>
>>> Eval the following
>>>
>>>
>>> (defun temp-active-mb ()
>>>   (message "active-minibuffer-window = %s" (active-minibuffer-window)))
>>>
>>> (progn
>>>   (run-with-idle-timer 1 nil 'message "idle message")
>>>   (run-with-idle-timer 2 nil 'temp-active-mb)
>>>   (y-or-n-p "Prompt: ")
>>>   )
>>>
>>> This gives me the message "active-minibuffer-window = nil".
>>
>> When I eval the above sexps on GNU Emacs 24.0.50.1 (i686-pc-linux-gnu,
>> GTK+ Version 2.18.6) of 2010-08-22 on escher, I first briefly see the
>> message "Prompt: (y or n)", then "idle message", then
>> "active-minibuffer-window = " with the cursor after "= "; as soon as I

Correction: "active-minibuffer-window = nil" and "= nil", i.e. same as you.

>> type any other key, I get "Prompt: (y or n)" again.
>>
>>> Is there any way then to discover whether Emacs is displaying a prompt
>>> and waiting for input?
>>
>> Are you trying this on MS-Windows?  If so, it seems to be a problem
>> there.
>
> Thanks Stephen. However it looks to me from what you write above like
> active-minibuffer-window does not return a window in this case on
> GNU/Linux either.

I guess I misunderstood -- I thought you were reporting you saw no
prompt and could not get it with the above recipe.  As for
active-minibuffer-window not returning a window, maybe I still
misunderstand, but I get the message "active-minibuffer-window = nil"
not only with the above progn, but also with this:

"active-minibuffer-window = nil".
>>
>> When I eval the above sexps on GNU Emacs 24.0.50.1 (i686-pc-linux-gnu,
>> GTK+ Version 2.18.6) of 2010-08-22 on escher, I first briefly see the
>> message "Prompt: (y or n)", then "idle message", then
>> "active-minibuffer-window = " with the cursor after "= "; as soon as I

Correction: "active-minibuffer-window = nil" and "= nil"

>> type any other key, I get "Prompt: (y or n)" again.
>>
>>> Is there any way then to discover whether Emacs is displaying a prompt
>>> and waiting for input?
>>
>> Are you trying this on MS-Windows?  If so, it seems to be a problem
>> there.
>
> Thanks Stephen. However it looks to me from what you write above like
> active-minibuffer-window does not return a window in this case on
> GNU/Linux either.

I guess I misunderstood -- I thought you were reporting you saw no
prompt and could not get it with the above recipe.  As for
active-minibuffer-window not returning a window, maybe I still
misunderstand, but I get the message "active-minibuffer-window = nil"
not only with the above progn, but also with this:

"active-minibuffer-window = nil".
>>
>> When I eval the above sexps on GNU Emacs 24.0.50.1 (i686-pc-linux-gnu,
>> GTK+ Version 2.18.6) of 2010-08-22 on escher, I first briefly see the
>> message "Prompt: (y or n)", then "idle message", then
>> "active-minibuffer-window = " with the cursor after "= "; as soon as I

Correction: "active-minibuffer-window = nil" and "= nil"

>> type any other key, I get "Prompt: (y or n)" again.
>>
>>> Is there any way then to discover whether Emacs is displaying a prompt
>>> and waiting for input?
>>
>> Are you trying this on MS-Windows?  If so, it seems to be a problem
>> there.
>
> Thanks Stephen. However it looks to me from what you write above like
> active-minibuffer-window does not return a window in this case on
> GNU/Linux either.

I guess I misunderstood -- I thought you were reporting you saw no
prompt and could not get it with the above recipe.  As for
active-minibuffer-window not returning a window, maybe I still
misunderstand, but I get the message "active-minibuffer-window = nil"
not only with the above progn, but also with this:

(progn
  (run-with-idle-timer 1 nil 'message "idle message")
  (run-with-idle-timer 2 nil 'temp-active-mb)
  )

and even just with this:

(run-with-idle-timer 2 nil 'temp-active-mb)

So the prompt seems to make no difference.  Or do you see (or expect)
something different?

Steve Berman