Subject: Re: bug#7368: display-buffer a softly dedicated window

From: Андрей Парамонов<[email-masked]>
Date: Thu, 18 Nov 2010 13:36:59 +0300

2010/11/18 martin rudalics <[email-masked]>:
>> comint.el forces *Completions* to close and shows the interpreter
>> immediately, in its place. That's what I want, exactly. Showing the
>> interpreter in place of *Completions* would have the same effect, so
>> it's what I want, too.
>
> I've looked into comint.el.  It's apparently based on window
> configurations and restores the old configuration when you do
> `choose-completion' or type SPACE.  I don't see where it deletes the
> window when you do something else.  Very contrived code.

If you are interested you may check the example I provided in my
recent emacs.devel thread. *Completions* is somehow closed before
comint-dynamic-list-completions is finished
(comint-dynamic-list-completions doesn't exit immediately upon showing
*Completions*).

> Hm...  What about setting `display-buffer-function' to something like:
>
> (defun my-display-buffer (buffer flag)
>  (let (window display-buffer-function)
>    (when (and (= (length (window-list)) 2)
>               (setq window (get-buffer-window "*Completions*")))
>      (set-window-dedicated-p window nil))
>    (display-buffer buffer flag)))
>

Hm, nice idea. But isn't display-buffer-function called from
display-buffer (infinite recursion)? I'll check it when I get to my
Emacs box.

Best wishes,
Andrey Paramonov