Subject: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated

From: "Drew Adams" <[email-masked]>
Date: Sat, 25 Jun 2011 10:48:52 -0700

>  > There should be no iconfied Completions frame in the test 
>  > I gave you.
> 
> When I type foo and eventually get the sole completion 
> footnote-mode the Completions frame iconifies automatically.
> I didn't check why that happens, shouldn't it?
> When I then type M-x f TAB again it 
> gets orderly resurrected.

Yes, that is all "normal" Emacs behavior.

But that was not the recipe.

1. I don't think you are in Icicle mode when testing.
Did you do `M-x icy-mode' at the start, to get in the mode?

I mentioned that you can try the same test (starting from Emacs startup each
time) both in and out of Icicle mode, to see the difference.  If not in Icicle
mode then you will not see the bug.

2. If you are in Icicle mode then you won't even get to `foo' after hitting `M-x
f TAB'.

After starting Emacs as I indicated and getting into Icicle mode, when you hit
`M-x f TAB' the Completions frame is created and it incorrectly gets the input
focus.  When you then hit `o' you get the read-only error.

It is important to test from scratch: no Completions frame or buffer, not even
iconified.  Then just type `M-x f TAB o'.

Note that even in Emacs 23, where there is no such bug, when you complete to
footnote-mode in Icicle mode the Completions frame is not iconified.  It is
instead deleted.

If you are seeing iconification of Completions then you are not in Icicle mode,
I think.  You can easily tell when you are in Icicle mode by looking at the mode
line - you will see `Icy' there.

FYI - The Completions frame/window removal code is in file icicles-mcmd.el,
function `icicle-remove-Completions-window', which calls
`icicle-delete-windows-on'.  In this case *Completions* is dedicated, and
`delete-frame' is called.

>  > The problem arises only when the Completions frame is 
>  > newly _created_, as I tried to explain.  If you use
>  > `M-x f TAB o' (recipe) after the frame has already
>  > been created then the input focus is not a problem.
>  >
>  > If you have the frame already,
> 
> The Completions frame?  It pops up automatically when I hit TAB and
> redirects focus to the Minibuffer frame.

Yes, it should.

>  > then please delete it and try `M-x f TAB o' again.

I was trying to direct you to follow the recipe, which starts with (a) Icicle
mode and (b) _no_ Completions frame.  Once the frame has been created you will
not see the bug.

See above for, I hope, clear instructions: Start Emacs again, get in Icicle
mode, then hit `M-x f TAB o'.  That's all there is to it.

> But I test this on Windows XP.

Ah, excellent.  I'm on XP too, so we should be able to work this out.  So far,
it seems like you did not test in Icicle mode.  Try that and see, please.

>  > But what about that `display-buffer' call in
>  > `icicle-display-candidates-in-Completions'?
> 
> It should work vacuously.  But I'd like to know why you
> needed it earlier... And I suppose it doesn't make sense to
> use Icicles with these set to nil.

Yes, it does make sense!  See my previous message.  I tried to say clearly that
Icicles has nothing to do with my personal setup where I use `pop-up-frames'
etc.  Icicles is a general package, and most of its users, I believe, do not use
non-nil `pop-up-frames' - and most certainly don't use my oneonone.el setup.

> I can easily resurrect the old semantics of that argument for the few
> values t, 0, visible and a live frame but I would first like to see a
> real use case for it.

I have a real use case for it.  See above.  My code needs to work for users who
have nil and users who have non-nil `pop-up-frames' etc.

And see what I wrote wrt the `display-buffer' doc.  For nil `pop-up-frames' etc.
an argument of 0 is not at all the same as an argument of nil, according to the
doc.  Why do you think they added the 0 value?  Why do you think it is
superfluous?  What am I missing here?

>  > And you mentioned the `save-selected-window' around that 
>  > `display-buffer' call.  Does that need to be changed somehow?
> 
> I'm not quite sure what you expect it to do.  IIUC you want the
> Completions window selected with focus redirected to the Minibuffer
> window.  Now which window is the one whose selection you want to save
> here?  Anyway, it shouldn't harm so leave it alone.

The selected window can I believe be any window, depending on the context.  It
could be the minibuffer window or another buffer window.  It could (I think,
without bothering to verify) even be the Completions window.  Thanks for
confirming that it does no harm - I will leave it.