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

From: Андрей Парамонов<[email-masked]>
Date: Fri, 19 Nov 2010 09:30:47 +0300

I've checked out window-pub and played with it bit. Basically,
everything worked great for me so far (note: I use default window
options). Didn't notice any regressions. The problem with
*Completions* is gone because in window-pub *Completions* is not
dedicated :-)  Also, I liked that many functions moved from C to Lisp
(one can explore and tweak them much easier).

As a temporary solution to the bug I now use the following code. It
has some minor issues (i.e. if *Completions* is above code buffer, and
I switch to interpreter, code buffer would come above and interpreter
buffer would come below), but I can definitely live with it. However,
proper upstream fix would still be very welcome.

(defun my-display-buffer (buffer flag)
  (when (not (eq (buffer-name buffer) "*Completions*"))
    (let ((completions-window (get-buffer-window "*Completions*")))
      (when completions-window
	(quit-window nil completions-window))))
  (let (display-buffer-function)
    (display-buffer buffer flag)))

(setq display-buffer-function 'my-display-buffer)

Thanks for your support,
Andrey Paramonov