From 04ae543a28153fda0c084a5d56f59e2f7b12510d Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 25 Nov 2009 16:36:04 +0000 Subject: [PATCH] Really make the *Completions* window soft-dedicated (bug#5030). * window.el (window--display-buffer-2): Add `dedicated' argument. (display-buffer): Pass it when needed so the dedicated flag is set after calling set-window-buffer, which would otherwise reset it. --- lisp/ChangeLog | 7 +++++++ lisp/window.el | 14 +++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 915ad94959f..3f392f8183e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2009-11-25 Stefan Monnier + + Really make the *Completions* window soft-dedicated (bug#5030). + * window.el (window--display-buffer-2): Add `dedicated' argument. + (display-buffer): Pass it when needed so the dedicated flag is set + after calling set-window-buffer, which would otherwise reset it. + 2009-11-25 Stefan Monnier * progmodes/meta-mode.el (meta-complete-symbol): diff --git a/lisp/window.el b/lisp/window.el index 4a226df7b20..ed4cfb5653e 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -1035,11 +1035,14 @@ Do not raise the selected frame. Return WINDOW." (raise-frame frame)) window)) -(defun window--display-buffer-2 (buffer window) +(defun window--display-buffer-2 (buffer window &optional dedicated) "Display BUFFER in WINDOW and make its frame visible. +Set `window-dedicated-p' to DEDICATED if non-nil. Return WINDOW." (when (and (buffer-live-p buffer) (window-live-p window)) (set-window-buffer window buffer) + (when dedicated + (set-window-dedicated-p window-to-use dedicated)) (window--display-buffer-1 window))) (defvar display-buffer-mark-dedicated nil @@ -1139,9 +1142,7 @@ consider all visible or iconified frames." ((or use-pop-up-frames (not frame-to-use)) ;; We want or need a new frame. (let ((win (frame-selected-window (funcall pop-up-frame-function)))) - (when display-buffer-mark-dedicated - (set-window-dedicated-p win display-buffer-mark-dedicated)) - (window--display-buffer-2 buffer win))) + (window--display-buffer-2 buffer win display-buffer-mark-dedicated))) ((and pop-up-windows ;; Make a new window. (or (not (frame-parameter frame-to-use 'unsplittable)) @@ -1157,9 +1158,8 @@ consider all visible or iconified frames." (get-largest-window frame-to-use t)) (window--try-to-split-window (get-lru-window frame-to-use t))))) - (when display-buffer-mark-dedicated - (set-window-dedicated-p window-to-use display-buffer-mark-dedicated)) - (window--display-buffer-2 buffer window-to-use)) + (window--display-buffer-2 buffer window-to-use + display-buffer-mark-dedicated)) ((let ((window-to-undedicate ;; When NOT-THIS-WINDOW is non-nil, temporarily dedicate ;; the selected window to its buffer, to avoid that some of -- 2.39.5