diff options
| author | Martin Rudalics | 2011-09-21 10:20:21 +0200 |
|---|---|---|
| committer | Martin Rudalics | 2011-09-21 10:20:21 +0200 |
| commit | cf4eacfdca9685473374498e17ace141d71c9ad9 (patch) | |
| tree | 6b15976a360657769ca615a73be5eab2adf128a6 | |
| parent | 3341db6299a2bb63a641210d72f73e93e2d1542e (diff) | |
| download | emacs-cf4eacfdca9685473374498e17ace141d71c9ad9.tar.gz emacs-cf4eacfdca9685473374498e17ace141d71c9ad9.zip | |
Rewrite code quitting windows and restoring the previous buffer.
* window.el (set-window-buffer-start-and-point): Call
set-window-start with NOFORCE argument t. Suggested by Thierry
Volpiatto <thierry.volpiatto@gmail.com>.
(quit-window): Reword doc-string. Handle new format of
quit-restore parameter. Don't delete window if it has a
previous buffer we can show instead of the present one.
(display-buffer-record-window): Rewrite using a new format for
the quit-restore window parameter
(special-display-popup-frame, display-buffer-same-window)
(display-buffer-reuse-window, display-buffer-pop-up-frame)
(display-buffer-pop-up-window, display-buffer-use-some-window):
Adapt symbol passed to display-buffer-record-window.
* help.el (help-window-setup): Handle new format of quit-restore
parameter.
| -rw-r--r-- | lisp/ChangeLog | 17 | ||||
| -rw-r--r-- | lisp/help.el | 18 | ||||
| -rw-r--r-- | lisp/window.el | 157 |
3 files changed, 116 insertions, 76 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 17a8628b3d5..9b90ea1a98e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,20 @@ | |||
| 1 | 2011-09-21 Martin Rudalics <rudalics@gmx.at> | ||
| 2 | |||
| 3 | * window.el (set-window-buffer-start-and-point): Call | ||
| 4 | set-window-start with NOFORCE argument t. Suggested by Thierry | ||
| 5 | Volpiatto <thierry.volpiatto@gmail.com>. | ||
| 6 | (quit-window): Reword doc-string. Handle new format of | ||
| 7 | quit-restore parameter. Don't delete window if it has a | ||
| 8 | previous buffer we can show instead of the present one. | ||
| 9 | (display-buffer-record-window): Rewrite using a new format for | ||
| 10 | the quit-restore window parameter | ||
| 11 | (special-display-popup-frame, display-buffer-same-window) | ||
| 12 | (display-buffer-reuse-window, display-buffer-pop-up-frame) | ||
| 13 | (display-buffer-pop-up-window, display-buffer-use-some-window): | ||
| 14 | Adapt symbol passed to display-buffer-record-window. | ||
| 15 | * help.el (help-window-setup): Handle new format of quit-restore | ||
| 16 | parameter. | ||
| 17 | |||
| 1 | 2011-09-21 Stefan Monnier <monnier@iro.umontreal.ca> | 18 | 2011-09-21 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 19 | ||
| 3 | * faces.el (face-list): Fix docstring (bug#9564). | 20 | * faces.el (face-list): Fix docstring (bug#9564). |
diff --git a/lisp/help.el b/lisp/help.el index 0c8d67106d3..f4338c28ffb 100644 --- a/lisp/help.el +++ b/lisp/help.el | |||
| @@ -1066,7 +1066,7 @@ HELP-WINDOW is the window used for displaying the help buffer." | |||
| 1066 | (let* ((help-buffer (when (window-live-p help-window) | 1066 | (let* ((help-buffer (when (window-live-p help-window) |
| 1067 | (window-buffer help-window))) | 1067 | (window-buffer help-window))) |
| 1068 | (help-setup (when (window-live-p help-window) | 1068 | (help-setup (when (window-live-p help-window) |
| 1069 | (window-parameter help-window 'help-setup)))) | 1069 | (car (window-parameter help-window 'quit-restore))))) |
| 1070 | (when help-buffer | 1070 | (when help-buffer |
| 1071 | ;; Handle `help-window-point-marker'. | 1071 | ;; Handle `help-window-point-marker'. |
| 1072 | (when (eq (marker-buffer help-window-point-marker) help-buffer) | 1072 | (when (eq (marker-buffer help-window-point-marker) help-buffer) |
| @@ -1077,7 +1077,7 @@ HELP-WINDOW is the window used for displaying the help buffer." | |||
| 1077 | (cond | 1077 | (cond |
| 1078 | ((or (eq help-window (selected-window)) | 1078 | ((or (eq help-window (selected-window)) |
| 1079 | (and (or (eq help-window-select t) | 1079 | (and (or (eq help-window-select t) |
| 1080 | (eq help-setup 'new-frame) | 1080 | (eq help-setup 'frame) |
| 1081 | (and (eq help-window-select 'other) | 1081 | (and (eq help-window-select 'other) |
| 1082 | (eq (window-frame help-window) (selected-frame)) | 1082 | (eq (window-frame help-window) (selected-frame)) |
| 1083 | (> (length (window-list nil 'no-mini)) 2))) | 1083 | (> (length (window-list nil 'no-mini)) 2))) |
| @@ -1085,12 +1085,12 @@ HELP-WINDOW is the window used for displaying the help buffer." | |||
| 1085 | ;; The help window is or gets selected ... | 1085 | ;; The help window is or gets selected ... |
| 1086 | (help-window-display-message | 1086 | (help-window-display-message |
| 1087 | (cond | 1087 | (cond |
| 1088 | ((eq help-setup 'new-window) | 1088 | ((eq help-setup 'window) |
| 1089 | ;; ... and is new, ... | 1089 | ;; ... and is new, ... |
| 1090 | "Type \"q\" to delete help window") | 1090 | "Type \"q\" to delete help window") |
| 1091 | ((eq help-setup 'new-frame) | 1091 | ((eq help-setup 'frame) |
| 1092 | "Type \"q\" to delete help frame") | 1092 | "Type \"q\" to delete help frame") |
| 1093 | ((eq help-setup 'reuse-other) | 1093 | ((eq help-setup 'other) |
| 1094 | ;; ... or displayed some other buffer before. | 1094 | ;; ... or displayed some other buffer before. |
| 1095 | "Type \"q\" to restore previous buffer")) | 1095 | "Type \"q\" to restore previous buffer")) |
| 1096 | help-window t)) | 1096 | help-window t)) |
| @@ -1100,19 +1100,19 @@ HELP-WINDOW is the window used for displaying the help buffer." | |||
| 1100 | ;; other one is the selected one. | 1100 | ;; other one is the selected one. |
| 1101 | (help-window-display-message | 1101 | (help-window-display-message |
| 1102 | (cond | 1102 | (cond |
| 1103 | ((eq help-setup 'new-window) | 1103 | ((eq help-setup 'window) |
| 1104 | "Type \\[delete-other-windows] to delete the help window") | 1104 | "Type \\[delete-other-windows] to delete the help window") |
| 1105 | ((eq help-setup 'reuse-other) | 1105 | ((eq help-setup 'other) |
| 1106 | "Type \"q\" in help window to restore its previous buffer")) | 1106 | "Type \"q\" in help window to restore its previous buffer")) |
| 1107 | help-window 'other)) | 1107 | help-window 'other)) |
| 1108 | (t | 1108 | (t |
| 1109 | ;; The help window is not selected ... | 1109 | ;; The help window is not selected ... |
| 1110 | (help-window-display-message | 1110 | (help-window-display-message |
| 1111 | (cond | 1111 | (cond |
| 1112 | ((eq help-setup 'new-window) | 1112 | ((eq help-setup 'window) |
| 1113 | ;; ... and is new, ... | 1113 | ;; ... and is new, ... |
| 1114 | "Type \"q\" in help window to delete it") | 1114 | "Type \"q\" in help window to delete it") |
| 1115 | ((eq help-setup 'reuse-other) | 1115 | ((eq help-setup 'other) |
| 1116 | ;; ... or displayed some other buffer before. | 1116 | ;; ... or displayed some other buffer before. |
| 1117 | "Type \"q\" in help window to restore previous buffer")) | 1117 | "Type \"q\" in help window to restore previous buffer")) |
| 1118 | help-window)))))) | 1118 | help-window)))))) |
diff --git a/lisp/window.el b/lisp/window.el index 50b8e7345c3..ffbe710593e 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -2531,7 +2531,8 @@ before was current this also makes BUFFER the current buffer." | |||
| 2531 | (when (and selected current) | 2531 | (when (and selected current) |
| 2532 | (set-buffer buffer)) | 2532 | (set-buffer buffer)) |
| 2533 | (when start | 2533 | (when start |
| 2534 | (set-window-start window start)) | 2534 | ;; Don't force window-start here (even if POINT is nil). |
| 2535 | (set-window-start window start t)) | ||
| 2535 | (when point | 2536 | (when point |
| 2536 | (if selected | 2537 | (if selected |
| 2537 | (with-current-buffer buffer | 2538 | (with-current-buffer buffer |
| @@ -2868,8 +2869,9 @@ all window-local buffer lists." | |||
| 2868 | 2869 | ||
| 2869 | (defun quit-window (&optional kill window) | 2870 | (defun quit-window (&optional kill window) |
| 2870 | "Quit WINDOW and bury its buffer. | 2871 | "Quit WINDOW and bury its buffer. |
| 2871 | WINDOW defaults to the selected window. | 2872 | WINDOW must be a live window and defaults to the selected one. |
| 2872 | With a prefix argument, kill the buffer instead. | 2873 | With prefix argument KILL non-nil, kill the buffer instead of |
| 2874 | burying it. | ||
| 2873 | 2875 | ||
| 2874 | According to information stored in WINDOW's `quit-restore' window | 2876 | According to information stored in WINDOW's `quit-restore' window |
| 2875 | parameter either \(1) delete WINDOW and its frame, \(2) delete | 2877 | parameter either \(1) delete WINDOW and its frame, \(2) delete |
| @@ -2878,50 +2880,62 @@ or \(4) make WINDOW display some other buffer than the present | |||
| 2878 | one. If non-nil, reset `quit-restore' parameter to nil." | 2880 | one. If non-nil, reset `quit-restore' parameter to nil." |
| 2879 | (interactive "P") | 2881 | (interactive "P") |
| 2880 | (setq window (window-normalize-live-window window)) | 2882 | (setq window (window-normalize-live-window window)) |
| 2881 | (let ((buffer (window-buffer window)) | 2883 | (let* ((buffer (window-buffer window)) |
| 2882 | (quit-restore (window-parameter window 'quit-restore)) | 2884 | (quit-restore (window-parameter window 'quit-restore)) |
| 2883 | resize) | 2885 | (prev-buffer |
| 2886 | (let* ((prev-buffers (window-prev-buffers window)) | ||
| 2887 | (prev-buffer (caar prev-buffers))) | ||
| 2888 | (and (or (not (eq prev-buffer buffer)) | ||
| 2889 | (and (cdr prev-buffers) | ||
| 2890 | (not (eq (setq prev-buffer (cadr prev-buffers)) | ||
| 2891 | buffer)))) | ||
| 2892 | prev-buffer))) | ||
| 2893 | quad resize) | ||
| 2884 | (cond | 2894 | (cond |
| 2885 | ((and (eq (car-safe quit-restore) 'new-frame) | 2895 | ((and (not prev-buffer) |
| 2886 | (eq (nth 1 quit-restore) (window-buffer window)) | 2896 | (eq (nth 1 quit-restore) 'frame) |
| 2887 | (eq (window-deletable-p window) 'frame)) | 2897 | (eq (window-deletable-p window) 'frame) |
| 2898 | (eq (nth 3 quit-restore) buffer)) | ||
| 2888 | ;; WINDOW's frame can be deleted. | 2899 | ;; WINDOW's frame can be deleted. |
| 2889 | (delete-frame (window-frame window)) | 2900 | (delete-frame (window-frame window)) |
| 2890 | ;; If the previously selected window is still alive, select it. | 2901 | ;; If the previously selected window is still alive, select it. |
| 2891 | (when (window-live-p (nth 2 quit-restore)) | 2902 | (when (window-live-p (nth 2 quit-restore)) |
| 2892 | (select-window (nth 2 quit-restore)))) | 2903 | (select-window (nth 2 quit-restore)))) |
| 2893 | ((and (eq (car-safe quit-restore) 'new-window) | 2904 | ((and (not prev-buffer) |
| 2894 | (eq (nth 1 quit-restore) (window-buffer window)) | 2905 | (eq (nth 1 quit-restore) 'window) |
| 2895 | (eq (window-deletable-p window) t)) | 2906 | (eq (window-deletable-p window) t) |
| 2896 | ;; WINDOW's can be deleted. | 2907 | (eq (nth 3 quit-restore) buffer)) |
| 2908 | ;; WINDOW can be deleted. | ||
| 2897 | (delete-window window) | 2909 | (delete-window window) |
| 2898 | ;; If the previously selected window is still alive, select it. | 2910 | ;; If the previously selected window is still alive, select it. |
| 2899 | (when (window-live-p (nth 2 quit-restore)) | 2911 | (when (window-live-p (nth 2 quit-restore)) |
| 2900 | (select-window (nth 2 quit-restore)))) | 2912 | (select-window (nth 2 quit-restore)))) |
| 2901 | ((and (buffer-live-p (nth 0 quit-restore)) | 2913 | ((and (listp (setq quad (nth 1 quit-restore))) |
| 2902 | ;; The buffer currently shown in WINDOW must still be the | 2914 | (buffer-live-p (car quad)) |
| 2903 | ;; buffer shown when its `quit-restore' parameter was created | 2915 | (eq (nth 3 quit-restore) buffer)) |
| 2904 | ;; in the first place. | 2916 | ;; Show another buffer stored in quit-restore parameter. |
| 2905 | (eq (window-buffer window) (nth 3 quit-restore))) | 2917 | (setq resize (with-current-buffer buffer |
| 2906 | (setq resize (with-current-buffer buffer temp-buffer-resize-mode)) | 2918 | (and temp-buffer-resize-mode |
| 2919 | (/= (nth 3 quad) (window-total-size window))))) | ||
| 2907 | (unrecord-window-buffer window buffer) | 2920 | (unrecord-window-buffer window buffer) |
| 2908 | ;; Display buffer stored in the quit-restore parameter. | ||
| 2909 | (set-window-dedicated-p window nil) | 2921 | (set-window-dedicated-p window nil) |
| 2910 | (set-window-buffer window (nth 0 quit-restore)) | 2922 | (when resize |
| 2911 | (set-window-start window (nth 1 quit-restore)) | 2923 | ;; Try to resize WINDOW to its old height but don't signal an |
| 2912 | (set-window-point window (nth 2 quit-restore)) | 2924 | ;; error. |
| 2913 | (and resize | 2925 | (condition-case nil |
| 2914 | (/= (nth 4 quit-restore) (window-total-size window)) | 2926 | (window-resize window (- (nth 3 quad) (window-total-size window))) |
| 2915 | (window-resize window | 2927 | (error nil))) |
| 2916 | (- (nth 4 quit-restore) | 2928 | ;; Restore WINDOW's previous buffer, window start and point. |
| 2917 | (window-total-size window)))) | 2929 | (set-window-buffer-start-and-point |
| 2930 | window (nth 0 quad) (nth 1 quad) (nth 2 quad)) | ||
| 2918 | ;; Reset the quit-restore parameter. | 2931 | ;; Reset the quit-restore parameter. |
| 2919 | (set-window-parameter window 'quit-restore nil) | 2932 | (set-window-parameter window 'quit-restore nil) |
| 2920 | (when (window-live-p (nth 5 quit-restore)) | 2933 | ;; Select old window. |
| 2921 | (select-window (nth 5 quit-restore)))) | 2934 | (when (window-live-p (nth 2 quit-restore)) |
| 2935 | (select-window (nth 2 quit-restore)))) | ||
| 2922 | (t | 2936 | (t |
| 2923 | ;; Otherwise, show another buffer in WINDOW and reset the | 2937 | ;; Show some other buffer in WINDOW and reset the quit-restore |
| 2924 | ;; quit-restore parameter. | 2938 | ;; parameter. |
| 2925 | (set-window-parameter window 'quit-restore nil) | 2939 | (set-window-parameter window 'quit-restore nil) |
| 2926 | (switch-to-prev-buffer window 'bury-or-kill))) | 2940 | (switch-to-prev-buffer window 'bury-or-kill))) |
| 2927 | 2941 | ||
| @@ -3787,39 +3801,48 @@ subwindows can get as small as `window-safe-min-height' and | |||
| 3787 | 3801 | ||
| 3788 | (defun display-buffer-record-window (type window buffer) | 3802 | (defun display-buffer-record-window (type window buffer) |
| 3789 | "Record information for window used by `display-buffer'. | 3803 | "Record information for window used by `display-buffer'. |
| 3790 | TYPE must be one of the symbols reuse-window, pop-up-window, or | 3804 | TYPE specifies the type of the calling operation and must be one |
| 3791 | pop-up-frame. WINDOW is the window used for or created by the | 3805 | of the symbols 'reuse \(when WINDOW existed already and was |
| 3792 | `display-buffer' routines. BUFFER is the buffer that shall be | 3806 | reused for displaying BUFFER), 'window \(when WINDOW was created |
| 3793 | displayed." | 3807 | on an already existing frame), or 'frame \(when WINDOW was |
| 3808 | created on a new frame). WINDOW is the window used for or created | ||
| 3809 | by the `display-buffer' routines. BUFFER is the buffer that | ||
| 3810 | shall be displayed. | ||
| 3811 | |||
| 3812 | This function installs or updates the quit-restore parameter of | ||
| 3813 | WINDOW. The quit-restore parameter is a list of four elements: | ||
| 3814 | The first element is one of the symbols 'window, 'frame, 'same or | ||
| 3815 | 'other. The second element is either one of the symbols 'window | ||
| 3816 | or 'frame or a list whose elements are the buffer previously | ||
| 3817 | shown in the window, that buffer's window start and window point, | ||
| 3818 | and the window's height. The third element is the window | ||
| 3819 | selected at the time the parameter was created. The fourth | ||
| 3820 | element is BUFFER." | ||
| 3794 | (cond | 3821 | (cond |
| 3795 | ((eq type 'reuse-window) | 3822 | ((eq type 'reuse) |
| 3796 | ;; In `help-setup' window parameter record whether we used a window | 3823 | (if (eq (window-buffer window) buffer) |
| 3797 | ;; on the same buffer or another one. | 3824 | ;; WINDOW shows BUFFER already. |
| 3798 | (set-window-parameter | 3825 | (when (consp (window-parameter window 'quit-restore)) |
| 3799 | window 'help-setup | 3826 | ;; If WINDOW has a quit-restore parameter, reset its car. |
| 3800 | (if (eq (window-buffer window) buffer) 'reuse-same 'reuse-other)) | 3827 | (setcar (window-parameter window 'quit-restore) 'same)) |
| 3801 | ;; In `quit-restore' parameter record information about the old | 3828 | ;; WINDOW shows another buffer. |
| 3802 | ;; buffer unless such information exists already. | ||
| 3803 | (unless (window-parameter window 'quit-restore) | ||
| 3804 | (set-window-parameter | 3829 | (set-window-parameter |
| 3805 | window 'quit-restore | 3830 | window 'quit-restore |
| 3806 | (list (window-buffer window) (window-start window) | 3831 | (list 'other |
| 3807 | (window-point window) buffer | 3832 | ;; A quadruple of WINDOW's buffer, start, point and height. |
| 3808 | (window-total-size window) (selected-window))))) | 3833 | (list (window-buffer window) (window-start window) |
| 3809 | ((eq type 'pop-up-window) | 3834 | (window-point window) (window-total-size window)) |
| 3810 | ;; In `help-setup' window parameter record window as new. | 3835 | (selected-window) buffer)))) |
| 3811 | (set-window-parameter window 'help-setup 'new-window) | 3836 | ((eq type 'window) |
| 3812 | ;; In `quit-restore' parameter record that we popped up this window, | 3837 | ;; WINDOW has been created on an existing frame. |
| 3813 | ;; its buffer, and which window was selected before. | ||
| 3814 | (set-window-parameter | 3838 | (set-window-parameter |
| 3815 | window 'quit-restore (list 'new-window buffer (selected-window)))) | 3839 | window 'quit-restore |
| 3816 | ((eq type 'pop-up-frame) | 3840 | (list 'window 'window (selected-window) buffer))) |
| 3817 | ;; In `help-setup' window parameter record window as on new frame. | 3841 | ((eq type 'frame) |
| 3818 | (set-window-parameter window 'help-setup 'new-frame) | 3842 | ;; WINDOW has been created on a new frame. |
| 3819 | ;; In `quit-restore' parameter record that we popped up this window | ||
| 3820 | ;; on a new frame, the buffer, and which window was selected before. | ||
| 3821 | (set-window-parameter | 3843 | (set-window-parameter |
| 3822 | window 'quit-restore (list 'new-frame buffer (selected-window)))))) | 3844 | window 'quit-restore |
| 3845 | (list 'frame 'frame (selected-window) buffer))))) | ||
| 3823 | 3846 | ||
| 3824 | (defcustom display-buffer-function nil | 3847 | (defcustom display-buffer-function nil |
| 3825 | "If non-nil, function to call to handle `display-buffer'. | 3848 | "If non-nil, function to call to handle `display-buffer'. |
| @@ -4065,7 +4088,7 @@ and (cdr ARGS) as second." | |||
| 4065 | (let ((frame (window-frame window))) | 4088 | (let ((frame (window-frame window))) |
| 4066 | (make-frame-visible frame) | 4089 | (make-frame-visible frame) |
| 4067 | (raise-frame frame) | 4090 | (raise-frame frame) |
| 4068 | (display-buffer-record-window 'reuse-window window buffer) | 4091 | (display-buffer-record-window 'reuse window buffer) |
| 4069 | window)) | 4092 | window)) |
| 4070 | ;; Reuse the current window if the user requested it. | 4093 | ;; Reuse the current window if the user requested it. |
| 4071 | (when (cdr (assq 'same-window args)) | 4094 | (when (cdr (assq 'same-window args)) |
| @@ -4083,7 +4106,7 @@ and (cdr ARGS) as second." | |||
| 4083 | (with-current-buffer buffer | 4106 | (with-current-buffer buffer |
| 4084 | (make-frame (append args special-display-frame-alist))))) | 4107 | (make-frame (append args special-display-frame-alist))))) |
| 4085 | (display-buffer-record-window | 4108 | (display-buffer-record-window |
| 4086 | 'pop-up-frame (frame-selected-window frame) buffer) | 4109 | 'frame (frame-selected-window frame) buffer) |
| 4087 | (set-window-buffer (frame-selected-window frame) buffer) | 4110 | (set-window-buffer (frame-selected-window frame) buffer) |
| 4088 | (set-window-dedicated-p (frame-selected-window frame) t) | 4111 | (set-window-dedicated-p (frame-selected-window frame) t) |
| 4089 | (frame-selected-window frame)))))) | 4112 | (frame-selected-window frame)))))) |
| @@ -4644,7 +4667,7 @@ selected window." | |||
| 4644 | (unless (or (cdr (assq 'inhibit-same-window alist)) | 4667 | (unless (or (cdr (assq 'inhibit-same-window alist)) |
| 4645 | (window-minibuffer-p) | 4668 | (window-minibuffer-p) |
| 4646 | (window-dedicated-p)) | 4669 | (window-dedicated-p)) |
| 4647 | (display-buffer-record-window 'reuse-window (selected-window) buffer) | 4670 | (display-buffer-record-window 'reuse (selected-window) buffer) |
| 4648 | (window--display-buffer-2 buffer (selected-window)))) | 4671 | (window--display-buffer-2 buffer (selected-window)))) |
| 4649 | 4672 | ||
| 4650 | (defun display-buffer--maybe-same-window (buffer alist) | 4673 | (defun display-buffer--maybe-same-window (buffer alist) |
| @@ -4689,7 +4712,7 @@ terminal if either of those variables is non-nil." | |||
| 4689 | (get-buffer-window-list buffer 'nomini | 4712 | (get-buffer-window-list buffer 'nomini |
| 4690 | frames)))))) | 4713 | frames)))))) |
| 4691 | (when window | 4714 | (when window |
| 4692 | (display-buffer-record-window 'reuse-window window buffer) | 4715 | (display-buffer-record-window 'reuse window buffer) |
| 4693 | (window--display-buffer-1 window)))) | 4716 | (window--display-buffer-1 window)))) |
| 4694 | 4717 | ||
| 4695 | (defun display-buffer--special (buffer alist) | 4718 | (defun display-buffer--special (buffer alist) |
| @@ -4713,7 +4736,7 @@ return the window used; otherwise return nil." | |||
| 4713 | (when (and fun | 4736 | (when (and fun |
| 4714 | (setq frame (funcall fun)) | 4737 | (setq frame (funcall fun)) |
| 4715 | (setq window (frame-selected-window frame))) | 4738 | (setq window (frame-selected-window frame))) |
| 4716 | (display-buffer-record-window 'pop-up-frame window buffer) | 4739 | (display-buffer-record-window 'frame window buffer) |
| 4717 | (window--display-buffer-2 buffer window) | 4740 | (window--display-buffer-2 buffer window) |
| 4718 | ;; Reset list of WINDOW's previous buffers to nil. | 4741 | ;; Reset list of WINDOW's previous buffers to nil. |
| 4719 | (set-window-prev-buffers window nil) | 4742 | (set-window-prev-buffers window nil) |
| @@ -4739,7 +4762,7 @@ If sucessful, return the new window; otherwise return nil." | |||
| 4739 | (get-largest-window frame t)) | 4762 | (get-largest-window frame t)) |
| 4740 | (window--try-to-split-window | 4763 | (window--try-to-split-window |
| 4741 | (get-lru-window frame t))))) | 4764 | (get-lru-window frame t))))) |
| 4742 | (display-buffer-record-window 'pop-up-window window buffer) | 4765 | (display-buffer-record-window 'window window buffer) |
| 4743 | (window--display-buffer-2 buffer window) | 4766 | (window--display-buffer-2 buffer window) |
| 4744 | ;; Reset list of WINDOW's previous buffers to nil. | 4767 | ;; Reset list of WINDOW's previous buffers to nil. |
| 4745 | (set-window-prev-buffers window nil) | 4768 | (set-window-prev-buffers window nil) |
| @@ -4793,7 +4816,7 @@ return the window. If no suitable window is found, return nil." | |||
| 4793 | ;; Restore dedicated status of selected window. | 4816 | ;; Restore dedicated status of selected window. |
| 4794 | (set-window-dedicated-p window-to-undedicate nil))) | 4817 | (set-window-dedicated-p window-to-undedicate nil))) |
| 4795 | (when window | 4818 | (when window |
| 4796 | (display-buffer-record-window 'reuse-window window buffer) | 4819 | (display-buffer-record-window 'reuse window buffer) |
| 4797 | (window--even-window-heights window) | 4820 | (window--even-window-heights window) |
| 4798 | (window--display-buffer-2 buffer window)))) | 4821 | (window--display-buffer-2 buffer window)))) |
| 4799 | 4822 | ||