diff options
| author | Stefan Monnier | 2009-11-25 16:36:04 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2009-11-25 16:36:04 +0000 |
| commit | 04ae543a28153fda0c084a5d56f59e2f7b12510d (patch) | |
| tree | c5a7f89212e2f6c481ae989ccc3f2b260a894f6d | |
| parent | 084b049b75a381b25af90a54b8818822fdc5cc09 (diff) | |
| download | emacs-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/ChangeLog | 7 | ||||
| -rw-r--r-- | 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,5 +1,12 @@ | |||
| 1 | 2009-11-25 Stefan Monnier <monnier@iro.umontreal.ca> | 1 | 2009-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 | |||
| 8 | 2009-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. |
| 1040 | Set `window-dedicated-p' to DEDICATED if non-nil. | ||
| 1040 | Return WINDOW." | 1041 | Return 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 |