aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2009-11-25 16:36:04 +0000
committerStefan Monnier2009-11-25 16:36:04 +0000
commit04ae543a28153fda0c084a5d56f59e2f7b12510d (patch)
treec5a7f89212e2f6c481ae989ccc3f2b260a894f6d
parent084b049b75a381b25af90a54b8818822fdc5cc09 (diff)
downloademacs-04ae543a28153fda0c084a5d56f59e2f7b12510d.tar.gz
emacs-04ae543a28153fda0c084a5d56f59e2f7b12510d.zip
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.
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/window.el14
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,5 +1,12 @@
12009-11-25 Stefan Monnier <monnier@iro.umontreal.ca> 12009-11-25 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 Really make the *Completions* window soft-dedicated (bug#5030).
4 * window.el (window--display-buffer-2): Add `dedicated' argument.
5 (display-buffer): Pass it when needed so the dedicated flag is set
6 after calling set-window-buffer, which would otherwise reset it.
7
82009-11-25 Stefan Monnier <monnier@iro.umontreal.ca>
9
3 * progmodes/meta-mode.el (meta-complete-symbol): 10 * progmodes/meta-mode.el (meta-complete-symbol):
4 * progmodes/etags.el (complete-tag): 11 * progmodes/etags.el (complete-tag):
5 * mail/mailabbrev.el (mail-abbrev-complete-alias): 12 * mail/mailabbrev.el (mail-abbrev-complete-alias):
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."
1035 (raise-frame frame)) 1035 (raise-frame frame))
1036 window)) 1036 window))
1037 1037
1038(defun window--display-buffer-2 (buffer window) 1038(defun window--display-buffer-2 (buffer window &optional dedicated)
1039 "Display BUFFER in WINDOW and make its frame visible. 1039 "Display BUFFER in WINDOW and make its frame visible.
1040Set `window-dedicated-p' to DEDICATED if non-nil.
1040Return WINDOW." 1041Return WINDOW."
1041 (when (and (buffer-live-p buffer) (window-live-p window)) 1042 (when (and (buffer-live-p buffer) (window-live-p window))
1042 (set-window-buffer window buffer) 1043 (set-window-buffer window buffer)
1044 (when dedicated
1045 (set-window-dedicated-p window-to-use dedicated))
1043 (window--display-buffer-1 window))) 1046 (window--display-buffer-1 window)))
1044 1047
1045(defvar display-buffer-mark-dedicated nil 1048(defvar display-buffer-mark-dedicated nil
@@ -1139,9 +1142,7 @@ consider all visible or iconified frames."
1139 ((or use-pop-up-frames (not frame-to-use)) 1142 ((or use-pop-up-frames (not frame-to-use))
1140 ;; We want or need a new frame. 1143 ;; We want or need a new frame.
1141 (let ((win (frame-selected-window (funcall pop-up-frame-function)))) 1144 (let ((win (frame-selected-window (funcall pop-up-frame-function))))
1142 (when display-buffer-mark-dedicated 1145 (window--display-buffer-2 buffer win display-buffer-mark-dedicated)))
1143 (set-window-dedicated-p win display-buffer-mark-dedicated))
1144 (window--display-buffer-2 buffer win)))
1145 ((and pop-up-windows 1146 ((and pop-up-windows
1146 ;; Make a new window. 1147 ;; Make a new window.
1147 (or (not (frame-parameter frame-to-use 'unsplittable)) 1148 (or (not (frame-parameter frame-to-use 'unsplittable))
@@ -1157,9 +1158,8 @@ consider all visible or iconified frames."
1157 (get-largest-window frame-to-use t)) 1158 (get-largest-window frame-to-use t))
1158 (window--try-to-split-window 1159 (window--try-to-split-window
1159 (get-lru-window frame-to-use t))))) 1160 (get-lru-window frame-to-use t)))))
1160 (when display-buffer-mark-dedicated 1161 (window--display-buffer-2 buffer window-to-use
1161 (set-window-dedicated-p window-to-use display-buffer-mark-dedicated)) 1162 display-buffer-mark-dedicated))
1162 (window--display-buffer-2 buffer window-to-use))
1163 ((let ((window-to-undedicate 1163 ((let ((window-to-undedicate
1164 ;; When NOT-THIS-WINDOW is non-nil, temporarily dedicate 1164 ;; When NOT-THIS-WINDOW is non-nil, temporarily dedicate
1165 ;; the selected window to its buffer, to avoid that some of 1165 ;; the selected window to its buffer, to avoid that some of