[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/window.c,v
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] Changes to emacs/src/window.c,v |
Date: |
Sat, 08 Sep 2007 10:34:04 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Eli Zaretskii <eliz> 07/09/08 10:34:04
Index: window.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/window.c,v
retrieving revision 1.588
retrieving revision 1.589
diff -u -b -r1.588 -r1.589
--- window.c 7 Sep 2007 19:50:49 -0000 1.588
+++ window.c 8 Sep 2007 10:34:03 -0000 1.589
@@ -163,6 +163,13 @@
Lisp_Object Veven_window_heights;
+/* Non-nil means that windows are split horizontally, i.e. side-by-side,
+ instead of vertically by `display-buffer'. An integer value means that
+ windows may only be split horizontally if the newly created window is at
+ least as wide as that value. */
+
+Lisp_Object Vprefer_window_split_horizontally;
+
/* List of buffer *names* for buffers that should have their own frames. */
Lisp_Object Vspecial_display_buffer_names;
@@ -3653,7 +3660,12 @@
If `even-window-heights' is non-nil, window heights will be evened out
if displaying the buffer causes two vertically adjacent windows to be
-displayed. */)
+displayed.
+
+If `prefer-window-split-horizontally' is non-nil, windows are split
+horizontally, i.e. side-by-side, instead of vertically if possible. If the
+variable has an integer value, windows may only be split horizontally if the
+newly created window is at least as wide as that value. */)
(buffer, not_this_window, frame)
Lisp_Object buffer, not_this_window, frame;
{
@@ -3755,11 +3767,24 @@
else
window = Fget_largest_window (frames, Qt);
- /* If the largest window is tall enough, full-width, and either eligible
- for splitting or the only window, split it. */
+ /* If we prefer to split horizontally and the window is wide
+ enough, split it horizontally. */
if (!NILP (window)
&& ! FRAME_NO_SPLIT_P (XFRAME (XWINDOW (window)->frame))
&& WINDOW_FULL_WIDTH_P (XWINDOW (window))
+ && !NILP (Vprefer_window_split_horizontally)
+ && (!NUMBERP (Vprefer_window_split_horizontally) ||
+ (window_width(window) >=
+ 2 * XINT (Vprefer_window_split_horizontally)))
+ && (window_width(window)) >= (2 * window_min_width))
+ {
+ window = Fsplit_window (window, Qnil, Qt);
+ }
+ /* Else, if the largest window is tall enough, full-width, and either
+ eligible for splitting or the only window, split it. */
+ else if (!NILP (window)
+ && ! FRAME_NO_SPLIT_P (XFRAME (XWINDOW (window)->frame))
+ && WINDOW_FULL_WIDTH_P (XWINDOW (window))
&& (window_height (window) >= split_height_threshold
|| (NILP (XWINDOW (window)->parent)))
&& (window_height (window)
@@ -3770,16 +3795,27 @@
Lisp_Object upper, lower, other;
window = Fget_lru_window (frames, Qt);
- /* If the LRU window is tall enough, and either eligible for
- splitting and selected or the only window, split it. */
+ /* If we prefer to split horizontally and the LRU window is
+ wide enough, split it horizontally. */
if (!NILP (window)
&& ! FRAME_NO_SPLIT_P (XFRAME (XWINDOW (window)->frame))
+ && !NILP (Vprefer_window_split_horizontally)
+ && window_width(window) >= (2 * window_min_width)
+ && (!NUMBERP (Vprefer_window_split_horizontally) ||
+ window_width(window) >=
+ (2 * XINT (Vprefer_window_split_horizontally))))
+ window = Fsplit_window (window, Qnil, Qt);
+ /* Else if the LRU window is tall enough, and either
+ eligible for splitting and selected, or the only window,
+ split it. */
+ else if (!NILP (window)
+ && ! FRAME_NO_SPLIT_P (XFRAME (XWINDOW (window)->frame))
&& ((EQ (window, selected_window)
&& window_height (window) >= split_height_threshold)
|| (NILP (XWINDOW (window)->parent)))
&& (window_height (window)
>= (2 * window_min_size_2 (XWINDOW (window), 0))))
- window = call1 (Vsplit_window_preferred_function, window);
+ window = Fsplit_window (window, Qnil, Qnil);
else
window = Fget_lru_window (frames, Qnil);
/* If Fget_lru_window returned nil, try other approaches. */
@@ -7354,6 +7390,14 @@
If nil, `display-buffer' will leave the window configuration alone. */);
Veven_window_heights = Qt;
+ DEFVAR_LISP ("prefer-window-split-horizontally",
&Vprefer_window_split_horizontally,
+ doc: /* *Non-nil means that windows are split horizontally,
i.e.
+side-by-side, instead
+of vertically by `display-buffer'.
+An integer value means that windows may only be split horizontally if the newly
+created window is at least as wide as that value. */);
+ Vprefer_window_split_horizontally = Qnil;
+
DEFVAR_LISP ("minibuffer-scroll-window", &Vminibuf_scroll_window,
doc: /* Non-nil means it is the window that C-M-v in minibuffer
should scroll. */);
Vminibuf_scroll_window = Qnil;
- [Emacs-diffs] Changes to emacs/src/window.c,v, Stefan Monnier, 2007/09/06
- [Emacs-diffs] Changes to emacs/src/window.c,v, Stefan Monnier, 2007/09/07
- [Emacs-diffs] Changes to emacs/src/window.c,v, Stefan Monnier, 2007/09/07
- [Emacs-diffs] Changes to emacs/src/window.c,v,
Eli Zaretskii <=
- [Emacs-diffs] Changes to emacs/src/window.c,v, Romain Francoise, 2007/09/12
- [Emacs-diffs] Changes to emacs/src/window.c,v, Stefan Monnier, 2007/09/21