aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Rudalics2012-09-22 14:56:08 +0200
committerMartin Rudalics2012-09-22 14:56:08 +0200
commit8e17c9ba1443c2f21c5801f0c4660ac08dccc837 (patch)
tree440766cd6249af19144f114626180568c5ece697
parentaa1fe812d3e77ed65a5226a42e5dc081eab22b18 (diff)
downloademacs-8e17c9ba1443c2f21c5801f0c4660ac08dccc837.tar.gz
emacs-8e17c9ba1443c2f21c5801f0c4660ac08dccc837.zip
Make Temp Buffer Resize Mode less intrusive (Bug#1806).
* window.c (Fsplit_window_internal): Handle only Qt value of Vwindow_combination_limit separately. (Qtemp_buffer_resize): New symbol. (Vwindow_combination_limit): New default value. Rewrite doc-string. * cus-start.el (window-combination-limit): Add new optional values. * window.el (temp-buffer-window-show) (window--try-to-split-window): Obey new values of window-combination-limit. (split-window): Test window-combination-limit for t instead of non-nil. (display-buffer-at-bottom): New buffer display action function. * help.el (temp-buffer-resize-regexps): New option. (temp-buffer-resize-mode): Rewrite doc-string. (resize-temp-buffer-window): Obey temp-buffer-resize-regexps. Don't resize reused window. Suggested by Glen Morris.
-rw-r--r--etc/NEWS14
-rw-r--r--lisp/ChangeLog15
-rw-r--r--lisp/cus-start.el12
-rw-r--r--lisp/help.el63
-rw-r--r--lisp/window.el65
-rw-r--r--src/ChangeLog8
-rw-r--r--src/window.c63
7 files changed, 178 insertions, 62 deletions
diff --git a/etc/NEWS b/etc/NEWS
index ccd8a6fe35b..30648a5961a 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -719,15 +719,21 @@ recursive invocations.
719*** The functions get-lru-window, get-mru-window and get-largest-window 719*** The functions get-lru-window, get-mru-window and get-largest-window
720now accept a third argument to avoid choosing the selected window. 720now accept a third argument to avoid choosing the selected window.
721 721
722*** Additional values recognized for option `window-combination-limit'.
723
722*** New macro `with-temp-buffer-window'. 724*** New macro `with-temp-buffer-window'.
723 725
724*** New option `temp-buffer-resize-frames'. 726*** New options `temp-buffer-resize-frames' and
727`temp-buffer-resize-regexps'.
728
729*** `temp-buffer-resize-mode' no longer resizes windows that have been
730reused.
725 731
726*** New function `fit-frame-to-buffer' and new option 732*** New function `fit-frame-to-buffer' and new option
727 `fit-frame-to-buffer-bottom-margin'. 733`fit-frame-to-buffer-bottom-margin'.
728 734
729*** New display action functions `display-buffer-below-selected' and 735*** New display action functions `display-buffer-below-selected',
730`display-buffer-in-previous-window'. 736`display-buffer-at-bottom' and `display-buffer-in-previous-window'.
731 737
732*** New display action alist entry `inhibit-switch-frame', if non-nil, 738*** New display action alist entry `inhibit-switch-frame', if non-nil,
733tells display action functions to avoid changing which frame is 739tells display action functions to avoid changing which frame is
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7f9044e4f36..f18bfd73611 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,18 @@
12012-09-22 Martin Rudalics <rudalics@gmx.at>
2
3 * cus-start.el (window-combination-limit): Add new optional
4 values.
5 * window.el (temp-buffer-window-show)
6 (window--try-to-split-window): Handle new values of
7 window-combination-limit (Bug#1806).
8 (split-window): Test window-combination-limit for t instead of
9 non-nil.
10 (display-buffer-at-bottom): New buffer display action function.
11 * help.el (temp-buffer-resize-regexps): New option.
12 (temp-buffer-resize-mode): Rewrite doc-string.
13 (resize-temp-buffer-window): Obey temp-buffer-resize-regexps.
14 Don't resize reused window. Suggested by Glen Morris.
15
12012-09-22 Stefan Merten <smerten@oekonux.de> 162012-09-22 Stefan Merten <smerten@oekonux.de>
2 17
3 * rst.el: Revamp section title faces. 18 * rst.el: Revamp section title faces.
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 0eb8b2d63c3..a91a479b054 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -422,7 +422,17 @@ since it could result in memory overflow and make Emacs crash."
422 (const :tag "Only on ttys" :value tty) 422 (const :tag "Only on ttys" :value tty)
423 (other :tag "Always" t)) "23.1") 423 (other :tag "Always" t)) "23.1")
424 (window-combination-resize windows boolean "24.1") 424 (window-combination-resize windows boolean "24.1")
425 (window-combination-limit windows boolean "24.1") 425 (window-combination-limit
426 windows (choice
427 (const :tag "Never (nil)" :value nil)
428 (const :tag "For Temp Buffer Resize mode (temp-buffer-resize)"
429 :value temp-buffer-resize)
430 (const :tag "For temporary buffers (temp-buffer)"
431 :value temp-buffer)
432 (const :tag "For buffer display (display-buffer)"
433 :value display-buffer)
434 (other :tag "Always (t)" :value t))
435 "24.3")
426 ;; xdisp.c 436 ;; xdisp.c
427 (show-trailing-whitespace whitespace-faces boolean nil 437 (show-trailing-whitespace whitespace-faces boolean nil
428 :safe booleanp) 438 :safe booleanp)
diff --git a/lisp/help.el b/lisp/help.el
index da11389d87c..707c8e3c84f 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -990,6 +990,17 @@ window. The height of the root window is subject to the values of
990 :version "24.2" 990 :version "24.2"
991 :group 'help) 991 :group 'help)
992 992
993(defcustom temp-buffer-resize-regexps nil
994 "List of regexps that inhibit Temp Buffer Resize mode.
995Any window of a buffer whose name matches one of these regular
996expressions is left alone by Temp Buffer Resize mode."
997 :type '(repeat
998 :tag "Buffer"
999 :value ""
1000 (regexp :format "%v"))
1001 :version "24.3"
1002 :group 'help)
1003
993(define-minor-mode temp-buffer-resize-mode 1004(define-minor-mode temp-buffer-resize-mode
994 "Toggle auto-resizing temporary buffer windows (Temp Buffer Resize Mode). 1005 "Toggle auto-resizing temporary buffer windows (Temp Buffer Resize Mode).
995With a prefix argument ARG, enable Temp Buffer Resize mode if ARG 1006With a prefix argument ARG, enable Temp Buffer Resize mode if ARG
@@ -1001,6 +1012,12 @@ show a temporary buffer are automatically resized in height to
1001fit the buffer's contents, but never more than 1012fit the buffer's contents, but never more than
1002`temp-buffer-max-height' nor less than `window-min-height'. 1013`temp-buffer-max-height' nor less than `window-min-height'.
1003 1014
1015A window is resized only if it has been specially created for the
1016buffer. Windows that have shown another buffer before are not
1017resized. A window showing a buffer whose name matches any of the
1018expressions in `temp-buffer-resize-regexps' is not resized. A
1019frame is resized only if `temp-buffer-resize-frames' is non-nil.
1020
1004This mode is used by `help', `apropos' and `completion' buffers, 1021This mode is used by `help', `apropos' and `completion' buffers,
1005and some others." 1022and some others."
1006 :global t :group 'help 1023 :global t :group 'help
@@ -1017,27 +1034,33 @@ WINDOW can be any live window and defaults to the selected one.
1017Do not make WINDOW higher than `temp-buffer-max-height' nor 1034Do not make WINDOW higher than `temp-buffer-max-height' nor
1018smaller than `window-min-height'. Do nothing if WINDOW is not 1035smaller than `window-min-height'. Do nothing if WINDOW is not
1019vertically combined or some of its contents are scrolled out of 1036vertically combined or some of its contents are scrolled out of
1020view." 1037view. Do nothing if the name of WINDOW's buffer matches an
1038expression in `temp-buffer-resize-regexps'."
1021 (setq window (window-normalize-window window t)) 1039 (setq window (window-normalize-window window t))
1022 (let ((height (if (functionp temp-buffer-max-height) 1040 (let ((buffer-name (buffer-name (window-buffer window))))
1023 (with-selected-window window 1041 (unless (catch 'found
1024 (funcall temp-buffer-max-height (window-buffer))) 1042 (dolist (regexp temp-buffer-resize-regexps)
1025 temp-buffer-max-height))) 1043 (when (string-match regexp buffer-name)
1026 (cond 1044 (throw 'found t))))
1027 ((and (pos-visible-in-window-p (point-min) window) 1045 (let ((height (if (functionp temp-buffer-max-height)
1028 (window-combined-p window)) 1046 (with-selected-window window
1029 (fit-window-to-buffer window height)) 1047 (funcall temp-buffer-max-height (window-buffer)))
1030 ((and temp-buffer-resize-frames 1048 temp-buffer-max-height))
1031 (eq window (frame-root-window window)) 1049 (quit-cadr (cadr (window-parameter window 'quit-restore))))
1032 (memq (car (window-parameter window 'quit-restore)) 1050 (cond
1033 ;; If 'same is too strong, we might additionally check 1051 ;; Don't resize WINDOW if it showed another buffer before.
1034 ;; whether the second element is 'frame. 1052 ((and (eq quit-cadr 'window)
1035 '(same frame))) 1053 (pos-visible-in-window-p (point-min) window)
1036 (let ((frame (window-frame window))) 1054 (window-combined-p window))
1037 (fit-frame-to-buffer 1055 (fit-window-to-buffer window height))
1038 frame (+ (frame-height frame) 1056 ((and temp-buffer-resize-frames
1039 (- (window-total-size window)) 1057 (eq quit-cadr 'frame)
1040 height))))))) 1058 (eq window (frame-root-window window)))
1059 (let ((frame (window-frame window)))
1060 (fit-frame-to-buffer
1061 frame (+ (frame-height frame)
1062 (- (window-total-size window))
1063 height)))))))))
1041 1064
1042;;; Help windows. 1065;;; Help windows.
1043(defcustom help-window-select 'other 1066(defcustom help-window-select 'other
diff --git a/lisp/window.el b/lisp/window.el
index fccb68bd94a..87817fb8773 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -111,7 +111,19 @@ to `display-buffer'."
111 (set-buffer-modified-p nil) 111 (set-buffer-modified-p nil)
112 (setq buffer-read-only t) 112 (setq buffer-read-only t)
113 (goto-char (point-min)) 113 (goto-char (point-min))
114 (when (setq window (display-buffer buffer action)) 114 (when (let ((window-combination-limit
115 ;; When `window-combination-limit' equals
116 ;; `temp-buffer' or `temp-buffer-resize' and
117 ;; `temp-buffer-resize-mode' is enabled in this
118 ;; buffer bind it to t so resizing steals space
119 ;; preferably from the window that was split.
120 (if (or (eq window-combination-limit 'temp-buffer)
121 (and (eq window-combination-limit
122 'temp-buffer-resize)
123 temp-buffer-resize-mode))
124 t
125 window-combination-limit)))
126 (setq window (display-buffer buffer action)))
115 (setq frame (window-frame window)) 127 (setq frame (window-frame window))
116 (unless (eq frame (selected-frame)) 128 (unless (eq frame (selected-frame))
117 (raise-frame frame)) 129 (raise-frame frame))
@@ -3678,9 +3690,8 @@ frame. The selected window is not changed by this function."
3678 (parent (window-parent window)) 3690 (parent (window-parent window))
3679 (function (window-parameter window 'split-window)) 3691 (function (window-parameter window 'split-window))
3680 (window-side (window-parameter window 'window-side)) 3692 (window-side (window-parameter window 'window-side))
3681 ;; Rebind `window-combination-limit' and 3693 ;; Rebind the following two variables since in some cases we
3682 ;; `window-combination-resize' since in some cases we may have 3694 ;; have to override their value.
3683 ;; to override their value.
3684 (window-combination-limit window-combination-limit) 3695 (window-combination-limit window-combination-limit)
3685 (window-combination-resize window-combination-resize) 3696 (window-combination-resize window-combination-resize)
3686 atom-root) 3697 atom-root)
@@ -3738,7 +3749,7 @@ frame. The selected window is not changed by this function."
3738 (and window-combination-resize 3749 (and window-combination-resize
3739 (or (window-parameter window 'window-side) 3750 (or (window-parameter window 'window-side)
3740 (not (eq window-combination-resize 'side))) 3751 (not (eq window-combination-resize 'side)))
3741 (not window-combination-limit) 3752 (not (eq window-combination-limit t))
3742 ;; Resize makes sense in iso-combinations only. 3753 ;; Resize makes sense in iso-combinations only.
3743 (window-combined-p window horizontal))) 3754 (window-combined-p window horizontal)))
3744 ;; `old-size' is the current size of WINDOW. 3755 ;; `old-size' is the current size of WINDOW.
@@ -3818,7 +3829,7 @@ frame. The selected window is not changed by this function."
3818 ;; Make new-parent non-nil if we need a new parent window; 3829 ;; Make new-parent non-nil if we need a new parent window;
3819 ;; either because we want to nest or because WINDOW is not 3830 ;; either because we want to nest or because WINDOW is not
3820 ;; iso-combined. 3831 ;; iso-combined.
3821 (or window-combination-limit 3832 (or (eq window-combination-limit t)
3822 (not (window-combined-p window horizontal)))) 3833 (not (window-combined-p window horizontal))))
3823 (setq new-normal 3834 (setq new-normal
3824 ;; Make new-normal the normal size of the new window. 3835 ;; Make new-normal the normal size of the new window.
@@ -5066,12 +5077,19 @@ Return value returned by `split-window-preferred-function' if it
5066represents a live window, nil otherwise." 5077represents a live window, nil otherwise."
5067 (and (window-live-p window) 5078 (and (window-live-p window)
5068 (not (frame-parameter (window-frame window) 'unsplittable)) 5079 (not (frame-parameter (window-frame window) 'unsplittable))
5069 (let ((new-window 5080 (let* ((window-combination-limit
5070 ;; Since `split-window-preferred-function' might 5081 ;; When `window-combination-limit' equals
5071 ;; throw an error use `condition-case'. 5082 ;; `display-buffer' bind it to t so resizing steals
5072 (condition-case nil 5083 ;; space preferably from the window that was split.
5073 (funcall split-window-preferred-function window) 5084 (if (eq window-combination-limit 'display-buffer)
5074 (error nil)))) 5085 t
5086 window-combination-limit))
5087 (new-window
5088 ;; Since `split-window-preferred-function' might
5089 ;; throw an error use `condition-case'.
5090 (condition-case nil
5091 (funcall split-window-preferred-function window)
5092 (error nil))))
5075 (and (window-live-p new-window) new-window)))) 5093 (and (window-live-p new-window) new-window))))
5076 5094
5077(defun window--frame-usable-p (frame) 5095(defun window--frame-usable-p (frame)
@@ -5524,6 +5542,29 @@ the selected one."
5524 (window--display-buffer 5542 (window--display-buffer
5525 buffer window 'reuse display-buffer-mark-dedicated))))) 5543 buffer window 'reuse display-buffer-mark-dedicated)))))
5526 5544
5545(defun display-buffer-at-bottom (buffer _alist)
5546 "Try displaying BUFFER in a window at the botom of the selected frame.
5547This either splits the window at the bottom of the frame or the
5548frame's root window, or reuses an existing window at the bottom
5549of the selected frame."
5550 (let (bottom-window window)
5551 (walk-window-tree (lambda (window) (setq bottom-window window)))
5552 (or (and (not (frame-parameter nil 'unsplittable))
5553 (setq window (window--try-to-split-window bottom-window))
5554 (window--display-buffer
5555 buffer window 'window display-buffer-mark-dedicated))
5556 (and (not (frame-parameter nil 'unsplittable))
5557 (setq window
5558 (condition-case nil
5559 (split-window (frame-root-window))
5560 (error nil)))
5561 (window--display-buffer
5562 buffer window 'window display-buffer-mark-dedicated))
5563 (and (setq window bottom-window)
5564 (not (window-dedicated-p window))
5565 (window--display-buffer
5566 buffer window 'reuse display-buffer-mark-dedicated)))))
5567
5527(defun display-buffer-in-previous-window (buffer alist) 5568(defun display-buffer-in-previous-window (buffer alist)
5528 "Display BUFFER in a window previously showing it. 5569 "Display BUFFER in a window previously showing it.
5529If ALIST has a non-nil `inhibit-same-window' entry, the selected 5570If ALIST has a non-nil `inhibit-same-window' entry, the selected
diff --git a/src/ChangeLog b/src/ChangeLog
index 4033f51ca1a..6ea40b3f122 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,11 @@
12012-09-22 Martin Rudalics <rudalics@gmx.at>
2
3 * window.c (Fsplit_window_internal): Handle only Qt value of
4 Vwindow_combination_limit separately.
5 (Qtemp_buffer_resize): New symbol.
6 (Vwindow_combination_limit): New default value. Rewrite
7 doc-string.
8
12012-09-22 Eli Zaretskii <eliz@gnu.org> 92012-09-22 Eli Zaretskii <eliz@gnu.org>
2 10
3 * xdisp.c (next_overlay_string): Initialize it->end_charpos for 11 * xdisp.c (next_overlay_string): Initialize it->end_charpos for
diff --git a/src/window.c b/src/window.c
index a6f1104587e..6798be8231c 100644
--- a/src/window.c
+++ b/src/window.c
@@ -60,8 +60,7 @@ static Lisp_Object Qwindow_deletable_p, Qdelete_window, Qdisplay_buffer;
60static Lisp_Object Qreplace_buffer_in_windows, Qget_mru_window; 60static Lisp_Object Qreplace_buffer_in_windows, Qget_mru_window;
61static Lisp_Object Qwindow_resize_root_window, Qwindow_resize_root_window_vertically; 61static Lisp_Object Qwindow_resize_root_window, Qwindow_resize_root_window_vertically;
62static Lisp_Object Qscroll_up, Qscroll_down, Qscroll_command; 62static Lisp_Object Qscroll_up, Qscroll_down, Qscroll_command;
63static Lisp_Object Qsafe, Qabove, Qbelow; 63static Lisp_Object Qsafe, Qabove, Qbelow, Qtemp_buffer_resize, Qclone_of;
64static Lisp_Object Qclone_of;
65 64
66static int displayed_window_lines (struct window *); 65static int displayed_window_lines (struct window *);
67static int count_windows (struct window *); 66static int count_windows (struct window *);
@@ -613,10 +612,10 @@ WINDOW are never \(re-)combined with WINDOW's siblings. */)
613DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0, 612DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0,
614 doc: /* Set combination limit of window WINDOW to LIMIT; return LIMIT. 613 doc: /* Set combination limit of window WINDOW to LIMIT; return LIMIT.
615WINDOW must be a valid window and defaults to the selected one. 614WINDOW must be a valid window and defaults to the selected one.
616If LIMIT is nil, child windows of WINDOW can be recombined with 615If LIMIT is nil, child windows of WINDOW can be recombined with WINDOW's
617WINDOW's siblings. LIMIT t means that child windows of WINDOW are 616siblings. LIMIT t means that child windows of WINDOW are never
618never \(re-)combined with WINDOW's siblings. Other values are reserved 617\(re-)combined with WINDOW's siblings. Other values are reserved for
619for future use. */) 618future use. */)
620 (Lisp_Object window, Lisp_Object limit) 619 (Lisp_Object window, Lisp_Object limit)
621{ 620{
622 wset_combination_limit (decode_valid_window (window), limit); 621 wset_combination_limit (decode_valid_window (window), limit);
@@ -3466,7 +3465,7 @@ make_window (void)
3466 allocate_window. */ 3465 allocate_window. */
3467 wset_prev_buffers (w, Qnil); 3466 wset_prev_buffers (w, Qnil);
3468 wset_next_buffers (w, Qnil); 3467 wset_next_buffers (w, Qnil);
3469 3468
3470 /* Initialize non-Lisp data. Note that allocate_window zeroes out all 3469 /* Initialize non-Lisp data. Note that allocate_window zeroes out all
3471 non-Lisp data, so do it only for slots which should not be zero. */ 3470 non-Lisp data, so do it only for slots which should not be zero. */
3472 w->nrows_scale_factor = w->ncols_scale_factor = 1; 3471 w->nrows_scale_factor = w->ncols_scale_factor = 1;
@@ -3848,7 +3847,7 @@ set correctly. See the code of `split-window' for how this is done. */)
3848 We do that if either `window-combination-limit' is t, or OLD has no 3847 We do that if either `window-combination-limit' is t, or OLD has no
3849 parent, or OLD is ortho-combined. */ 3848 parent, or OLD is ortho-combined. */
3850 combination_limit = 3849 combination_limit =
3851 !NILP (Vwindow_combination_limit) 3850 EQ (Vwindow_combination_limit, Qt)
3852 || NILP (o->parent) 3851 || NILP (o->parent)
3853 || NILP (horflag 3852 || NILP (horflag
3854 ? (XWINDOW (o->parent)->hchild) 3853 ? (XWINDOW (o->parent)->hchild)
@@ -3903,9 +3902,9 @@ set correctly. See the code of `split-window' for how this is done. */)
3903 3902
3904 make_parent_window (old, horflag); 3903 make_parent_window (old, horflag);
3905 p = XWINDOW (o->parent); 3904 p = XWINDOW (o->parent);
3906 /* Store value of `window-combination-limit' in new parent's 3905 /* Store t in the new parent's combination_limit slot to avoid
3907 combination_limit slot. */ 3906 that its children get merged into another window. */
3908 wset_combination_limit (p, Vwindow_combination_limit); 3907 wset_combination_limit (p, Qt);
3909 /* These get applied below. */ 3908 /* These get applied below. */
3910 wset_new_total (p, horflag ? o->total_cols : o->total_lines); 3909 wset_new_total (p, horflag ? o->total_cols : o->total_lines);
3911 wset_new_normal (p, new_normal); 3910 wset_new_normal (p, new_normal);
@@ -6705,6 +6704,7 @@ syms_of_window (void)
6705 DEFSYM (Qreplace_buffer_in_windows, "replace-buffer-in-windows"); 6704 DEFSYM (Qreplace_buffer_in_windows, "replace-buffer-in-windows");
6706 DEFSYM (Qrecord_window_buffer, "record-window-buffer"); 6705 DEFSYM (Qrecord_window_buffer, "record-window-buffer");
6707 DEFSYM (Qget_mru_window, "get-mru-window"); 6706 DEFSYM (Qget_mru_window, "get-mru-window");
6707 DEFSYM (Qtemp_buffer_resize, "temp-buffer-resize");
6708 DEFSYM (Qtemp_buffer_show_hook, "temp-buffer-show-hook"); 6708 DEFSYM (Qtemp_buffer_show_hook, "temp-buffer-show-hook");
6709 DEFSYM (Qabove, "above"); 6709 DEFSYM (Qabove, "above");
6710 DEFSYM (Qbelow, "below"); 6710 DEFSYM (Qbelow, "below");
@@ -6800,23 +6800,36 @@ This variable takes no effect if `window-combination-limit' is non-nil. */);
6800 Vwindow_combination_resize = Qnil; 6800 Vwindow_combination_resize = Qnil;
6801 6801
6802 DEFVAR_LISP ("window-combination-limit", Vwindow_combination_limit, 6802 DEFVAR_LISP ("window-combination-limit", Vwindow_combination_limit,
6803 doc: /* If t, splitting a window makes a new parent window. 6803 doc: /* If non-nil, splitting a window makes a new parent window.
6804If this variable is nil, splitting a window will create a new parent 6804The following values are recognized:
6805window only if the window has no parent window or the window shall
6806become a combination orthogonal to the one it is part of.
6807 6805
6808If this variable is t, splitting a window always creates a new parent 6806nil means splitting a window will create a new parent window only if the
6809window. If all splits behave this way, each frame's window tree is a 6807 window has no parent window or the window shall become a combination
6810binary tree and every window but the frame's root window has exactly one 6808 orthogonal to the one it is part of.
6811sibling.
6812 6809
6813Other values are reserved for future use. 6810`temp-buffer-resize' means that splitting a window for displaying a
6811 temporary buffer makes a new parent window provided
6812 `temp-buffer-resize-mode' is enabled. Otherwise, this value is
6813 handled like nil.
6814
6815`temp-buffer' means that splitting a window for displaying a temporary
6816 buffer always makes a new parent window. Otherwise, this value is
6817 handled like nil.
6818
6819
6820`display-buffer' means that splitting a window for displaying a buffer
6821 always makes a new parent window. Since temporary buffers are
6822 displayed by the function `display-buffer', this value is stronger
6823 than `temp-buffer'. Splitting a window for other purpose makes a
6824 new parent window only if needed.
6825
6826t means that splitting a window always creates a new parent window. If
6827 all splits behave this way, each frame's window tree is a binary
6828 tree and every window but the frame's root window has exactly one
6829 sibling.
6814 6830
6815The value of this variable is also assigned to the combination limit of 6831Other values are reserved for future use. */);
6816the new parent window. The combination limit of a window can be 6832 Vwindow_combination_limit = Qtemp_buffer_resize;
6817retrieved via the function `window-combination-limit' and altered by the
6818function `set-window-combination-limit'. */);
6819 Vwindow_combination_limit = Qnil;
6820 6833
6821 DEFVAR_LISP ("window-persistent-parameters", Vwindow_persistent_parameters, 6834 DEFVAR_LISP ("window-persistent-parameters", Vwindow_persistent_parameters,
6822 doc: /* Alist of persistent window parameters. 6835 doc: /* Alist of persistent window parameters.