diff options
Diffstat (limited to 'lisp/window.el')
| -rw-r--r-- | lisp/window.el | 60 |
1 files changed, 44 insertions, 16 deletions
diff --git a/lisp/window.el b/lisp/window.el index 12c9da85d57..905db8dc9b6 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -5051,14 +5051,22 @@ description." | |||
| 5051 | (funcall side window))))) | 5051 | (funcall side window))))) |
| 5052 | 5052 | ||
| 5053 | (when (window-live-p window) | 5053 | (when (window-live-p window) |
| 5054 | ;; Adjust sizes if asked for. | 5054 | ;; In `quit-restore' parameter record that we popped up |
| 5055 | (display-buffer-set-height window specifiers) | 5055 | ;; this window, its buffer and which window was selected. |
| 5056 | (display-buffer-set-width window specifiers) | ||
| 5057 | (set-window-parameter | 5056 | (set-window-parameter |
| 5058 | window 'quit-restore (list 'new-window buffer selected-window)) | 5057 | window 'quit-restore (list 'new-window buffer selected-window)) |
| 5058 | ;; For `display-buffer-window' mark window as new. | ||
| 5059 | (setq display-buffer-window (cons window 'new-window)) | 5059 | (setq display-buffer-window (cons window 'new-window)) |
| 5060 | ;; Install BUFFER in the new window. | ||
| 5060 | (display-buffer-in-window buffer window specifiers) | 5061 | (display-buffer-in-window buffer window specifiers) |
| 5062 | ;; Adjust sizes if asked for (for `fit-window-to-buffer' | ||
| 5063 | ;; and friends BUFFER must be already shown in the new | ||
| 5064 | ;; window). | ||
| 5065 | (display-buffer-set-height window specifiers) | ||
| 5066 | (display-buffer-set-width window specifiers) | ||
| 5067 | ;; Reset list of window's previous buffers to nil. | ||
| 5061 | (set-window-prev-buffers window nil) | 5068 | (set-window-prev-buffers window nil) |
| 5069 | ;; Return the new window. | ||
| 5062 | (throw 'done window)))))))) | 5070 | (throw 'done window)))))))) |
| 5063 | 5071 | ||
| 5064 | (defun display-buffer-pop-up-frame (buffer &optional graphic-only specifiers) | 5072 | (defun display-buffer-pop-up-frame (buffer &optional graphic-only specifiers) |
| @@ -5113,26 +5121,33 @@ failed." | |||
| 5113 | (display-buffer-split-window main-or-root on-side specifiers)) | 5121 | (display-buffer-split-window main-or-root on-side specifiers)) |
| 5114 | fun) | 5122 | fun) |
| 5115 | (when window | 5123 | (when window |
| 5124 | ;; We were able to split off a new window. | ||
| 5116 | (unless main | 5125 | (unless main |
| 5117 | (walk-window-subtree | 5126 | (walk-window-subtree |
| 5118 | (lambda (window) | 5127 | (lambda (window) |
| 5119 | ;; Make all main-or-root subwindows main windows. | 5128 | ;; Make all main-or-root subwindows main windows. |
| 5120 | (set-window-parameter window 'window-side 'none)) | 5129 | (set-window-parameter window 'window-side 'none)) |
| 5121 | main-or-root t)) | 5130 | main-or-root t)) |
| 5122 | ;; Make sure that parent's window-side is nil. | 5131 | ;; Reset window-side parameter of new window's parent to nil. |
| 5123 | (set-window-parameter (window-parent window) 'window-side nil) | 5132 | (set-window-parameter (window-parent window) 'window-side nil) |
| 5124 | ;; Initialize side. | 5133 | ;; Initialize window-side parameter of new window to SIDE. |
| 5125 | (set-window-parameter window 'window-side side) | 5134 | (set-window-parameter window 'window-side side) |
| 5126 | ;; Adjust sizes if asked for. | 5135 | ;; Install window-slot parameter of new window. |
| 5127 | (display-buffer-set-height window specifiers) | 5136 | (set-window-parameter window 'window-slot slot) |
| 5128 | (display-buffer-set-width window specifiers) | 5137 | ;; In `quit-restore' parameter record that we popped up a new |
| 5129 | ;; Set window parameters. | 5138 | ;; window. |
| 5130 | (set-window-parameter | 5139 | (set-window-parameter |
| 5131 | window 'quit-restore (list 'new-window buffer selected-window)) | 5140 | window 'quit-restore (list 'new-window buffer selected-window)) |
| 5141 | ;; For `display-buffer-window' mark window as new. | ||
| 5132 | (setq display-buffer-window (cons window 'new-window)) | 5142 | (setq display-buffer-window (cons window 'new-window)) |
| 5133 | (set-window-parameter window 'window-slot slot) | 5143 | ;; Install BUFFER in new window. |
| 5134 | (display-buffer-in-window buffer window specifiers) | 5144 | (display-buffer-in-window buffer window specifiers) |
| 5145 | ;; Adjust sizes of new window if asked for. | ||
| 5146 | (display-buffer-set-height window specifiers) | ||
| 5147 | (display-buffer-set-width window specifiers) | ||
| 5148 | ;; Reset list of new window's previous buffers to nil. | ||
| 5135 | (set-window-prev-buffers window nil) | 5149 | (set-window-prev-buffers window nil) |
| 5150 | ;; Return the new window. | ||
| 5136 | window))) | 5151 | window))) |
| 5137 | 5152 | ||
| 5138 | (defun display-buffer-in-side-window (buffer side &optional slot specifiers) | 5153 | (defun display-buffer-in-side-window (buffer side &optional slot specifiers) |
| @@ -5160,7 +5175,7 @@ SPECIFIERS must be a list of buffer display specifiers." | |||
| 5160 | window-sides-slots)) | 5175 | window-sides-slots)) |
| 5161 | (selected-window (selected-window)) | 5176 | (selected-window (selected-window)) |
| 5162 | window this-window this-slot prev-window next-window | 5177 | window this-window this-slot prev-window next-window |
| 5163 | best-window best-slot abs-slot dedicated) | 5178 | best-window best-slot abs-slot dedicated new-window) |
| 5164 | 5179 | ||
| 5165 | (unless (numberp slot) | 5180 | (unless (numberp slot) |
| 5166 | (setq slot 0)) | 5181 | (setq slot 0)) |
| @@ -5233,13 +5248,16 @@ SPECIFIERS must be a list of buffer display specifiers." | |||
| 5233 | (setq window (display-buffer-split-window | 5248 | (setq window (display-buffer-split-window |
| 5234 | prev-window prev-side specifiers))))) | 5249 | prev-window prev-side specifiers))))) |
| 5235 | (progn | 5250 | (progn |
| 5236 | (display-buffer-set-height window specifiers) | 5251 | ;; In `quit-restore' parameter record that we popped up |
| 5237 | (display-buffer-set-width window specifiers) | 5252 | ;; this window, its buffer and the old selected window. |
| 5238 | (set-window-parameter | 5253 | (set-window-parameter |
| 5239 | window 'quit-restore | 5254 | window 'quit-restore |
| 5240 | (list 'new-window buffer selected-window)) | 5255 | (list 'new-window buffer selected-window)) |
| 5256 | ;; For `display-buffer-window' mark window as new. | ||
| 5241 | (setq display-buffer-window (cons window 'new-window)) | 5257 | (setq display-buffer-window (cons window 'new-window)) |
| 5242 | window)) | 5258 | ;; Record that window is new, we need this for |
| 5259 | ;; adjusting sizes below. | ||
| 5260 | (setq new-window window))) | ||
| 5243 | (and best-window | 5261 | (and best-window |
| 5244 | (setq window best-window) | 5262 | (setq window best-window) |
| 5245 | ;; Reuse best window (the window nearest to SLOT). | 5263 | ;; Reuse best window (the window nearest to SLOT). |
| @@ -5262,7 +5280,17 @@ SPECIFIERS must be a list of buffer display specifiers." | |||
| 5262 | (unless (window-parameter window 'window-slot) | 5280 | (unless (window-parameter window 'window-slot) |
| 5263 | ;; Don't change exisiting slot value. | 5281 | ;; Don't change exisiting slot value. |
| 5264 | (set-window-parameter window 'window-slot slot)) | 5282 | (set-window-parameter window 'window-slot slot)) |
| 5265 | (display-buffer-in-window buffer window specifiers))))) | 5283 | ;; Install BUFFER in the window. |
| 5284 | (display-buffer-in-window buffer window specifiers) | ||
| 5285 | (when new-window | ||
| 5286 | ;; Adjust sizes if asked for (for `fit-window-to-buffer' and | ||
| 5287 | ;; friends BUFFER must be already shown in the new window). | ||
| 5288 | (display-buffer-set-height window specifiers) | ||
| 5289 | (display-buffer-set-width window specifiers) | ||
| 5290 | ;; Reset list of new window's previous buffers to nil. | ||
| 5291 | (set-window-prev-buffers window nil)) | ||
| 5292 | ;; Return the window used. | ||
| 5293 | window)))) | ||
| 5266 | 5294 | ||
| 5267 | (defun window-normalize-buffer-to-display (buffer-or-name) | 5295 | (defun window-normalize-buffer-to-display (buffer-or-name) |
| 5268 | "Normalize BUFFER-OR-NAME argument for buffer display functions. | 5296 | "Normalize BUFFER-OR-NAME argument for buffer display functions. |
| @@ -6926,7 +6954,7 @@ WINDOW was scrolled." | |||
| 6926 | ;; `with-selected-window' should orderly restore the current buffer. | 6954 | ;; `with-selected-window' should orderly restore the current buffer. |
| 6927 | (with-selected-window window | 6955 | (with-selected-window window |
| 6928 | ;; We are in WINDOW's buffer now. | 6956 | ;; We are in WINDOW's buffer now. |
| 6929 | (let* ( ;; Adjust MIN-HEIGHT. | 6957 | (let* (;; Adjust MIN-HEIGHT. |
| 6930 | (min-height | 6958 | (min-height |
| 6931 | (if override | 6959 | (if override |
| 6932 | (window-min-size window nil window) | 6960 | (window-min-size window nil window) |