From 89d612214e95564c06c775189f8994001e3e1c06 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Sat, 12 Nov 2011 10:55:50 +0100 Subject: [PATCH] Don't handle splits status. * window.h (window): Remove splits slot. * window.c (Fwindow_splits, Fset_window_splits): Remove. (Fdelete_other_windows_internal, make_parent_window) (make_window, Fsplit_window_internal, Fdelete_window_internal) (Fset_window_configuration, save_window_save): Don't deal with split status of windows. (saved_window): Remove splits slot. (Vwindow_splits): Rewrite doc-string. * window.el (window-resize, delete-window): Use window-splits variable instead of function. (window-state-get-1, window-state-put-2, window-state-put): Don't deal with windows' splits status. * windows.texi (Splitting Windows, Deleting Windows): Remove references to splits status of windows. --- doc/lispref/ChangeLog | 5 ++++ doc/lispref/windows.texi | 52 ++++++++---------------------------- lisp/ChangeLog | 7 +++++ lisp/window.el | 13 ++++----- src/ChangeLog | 11 ++++++++ src/window.c | 68 +++--------------------------------------------- src/window.h | 4 --- 7 files changed, 43 insertions(+), 117 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 2abed9f870c..a8e1439d242 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,8 @@ +2011-11-12 Martin Rudalics + + * windows.texi (Splitting Windows, Deleting Windows): Remove + references to splits status of windows. + 2011-11-10 Glenn Morris * buffers.texi (Read Only Buffers): Expand a bit on why diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index cf5cfedf5af..b6bacc27684 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -855,42 +855,13 @@ resize all windows that are part of the same combination as this may allow @code{split-window} to succeed even if @var{window} is a fixed-size window or too small to ordinarily split. -In any case, the value of this variable is assigned to the splits status -of the new window and, provided old and new window form a new -combination, of the old window as well. The splits status of a window -can be retrieved by invoking the function @code{window-splits} and -altered by the function @code{set-window-splits} described next. - -If @code{window-nest} (see below) is non-@code{nil}, the space for the -new window is exclusively taken from the old window, but the splits -status of the involved windows is nevertheless set as described here. -@end defopt - -@defun window-splits &optional window -This function returns the splits status of @var{window}. The argument -@var{window} can be any window and defaults to the selected one. - -@cindex splits status -The @dfn{splits status} of a window specifies how resizing and deleting -that window may affect the size of other windows in the same window -combination. More precisely, if @var{window}'s splits status is -@code{nil} and @var{window} is resized, the corresponding space is -preferably taken from (or given to) @var{window}'s right sibling. When -@var{window} is deleted, its space is given to its left sibling. If -@var{window}'s splits status is non-@code{nil}, resizing and deleting -@var{window} may resize @emph{all} windows in @var{window}'s -combination. - -The splits status is initially set by @code{split-window} -from the current value of the variable @code{window-splits} (see above) -and can be reset by the function @code{set-window-splits} (see below). -@end defun +Also if this variable is non-@code{nil}, subsequent resizing and +deleting @var{window} will usually affect @emph{all} windows in +@var{window}'s combination. -@defun set-window-splits window &optional status -This function sets the splits status (see above) of @var{window} to -@var{status}. The argument @var{window} can be any window and defaults -to the selected one. The return value is @var{status}. -@end defun +The setting of this variable has no effect if @code{window-nest} (see +below) is non-@code{nil}. +@end defopt To illustrate the use of @code{window-splits} consider the following window configuration: @@ -1208,12 +1179,11 @@ window parameters. If the @code{delete-window} parameter specifies a function, that function is called with @var{window} as its sole argument. -If the splits status of @var{window} (@pxref{Splitting Windows}) is -@code{nil}, the space @var{window} took up is given to its left sibling -if such a window exists and to its right sibling otherwise. If the -splits status of @var{window} is non-@code{nil}, its space is -proportionally distributed among the remaining windows in the same -combination. +If @code{window-splits} (@pxref{Splitting Windows}) is @code{nil}, the +space @var{window} took up is given to its left sibling if such a window +exists and to its right sibling otherwise. If @code{window-splits} is +non-@code{nil}, the space of @var{window} is proportionally distributed +among the remaining windows in the same combination. @end deffn @deffn Command delete-other-windows &optional window diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0b0e433c7cb..8f28e033419 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2011-11-12 Martin Rudalics + + * window.el (window-resize, delete-window): Use window-splits + variable instead of function. + (window-state-get-1, window-state-put-2, window-state-put): + Don't deal with windows' splits status. + 2011-11-12 Glenn Morris * apropos.el (apropos-do-all, apropos-library, apropos-value) diff --git a/lisp/window.el b/lisp/window.el index 41b397730d1..7b16d6b886f 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -1482,12 +1482,12 @@ instead." ((window--resizable-p window delta horizontal ignore) (window--resize-reset frame horizontal) (window--resize-this-window window delta horizontal ignore t) - (if (and (not (window-splits window)) + (if (and (not window-splits) (window-combined-p window horizontal) (setq sibling (or (window-right window) (window-left window))) (window-sizable-p sibling (- delta) horizontal ignore)) - ;; If window-splits returns nil for WINDOW, WINDOW is part of - ;; an iso-combination, and WINDOW's neighboring right or left + ;; If window-splits is nil, WINDOW is part of an + ;; iso-combination, and WINDOW's neighboring right or left ;; sibling can be resized as requested, resize that sibling. (let ((normal-delta (/ (float delta) @@ -2389,8 +2389,7 @@ non-side window, signal an error." (sibling (or (window-left window) (window-right window)))) (window--resize-reset frame horizontal) (cond - ((and (not (window-splits window)) - sibling (window-sizable-p sibling size)) + ((and (not window-splits) sibling (window-sizable-p sibling size)) ;; Resize WINDOW's sibling. (window--resize-this-window sibling size horizontal nil t) (set-window-new-normal @@ -3585,7 +3584,6 @@ specific buffers." (total-width . ,(window-total-size window t)) (normal-height . ,(window-normal-size window)) (normal-width . ,(window-normal-size window t)) - (splits . ,(window-splits window)) (nest . ,(window-nest window)) ,@(let (list) (dolist (parameter (window-parameters window)) @@ -3740,7 +3738,6 @@ value can be also stored on disk and read back in a new session." (nest (cdr (assq 'nest item))) (parameters (cdr (assq 'parameters item))) (state (cdr (assq 'buffer item)))) - (when splits (set-window-splits window splits)) (when nest (set-window-nest window nest)) ;; Process parameters. (when parameters @@ -3828,7 +3825,7 @@ windows can get as small as `window-safe-min-height' and (cdr (assq 'total-width state))))) (min-height (cdr (assq 'min-height head))) (min-width (cdr (assq 'min-width head))) - window-splits selected) + selected) (if (and (not totals) (or (> min-height (window-total-size window)) (> min-width (window-total-size window t))) diff --git a/src/ChangeLog b/src/ChangeLog index 049c2399caa..12c09935328 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,14 @@ +2011-11-12 Martin Rudalics + + * window.h (window): Remove splits slot. + * window.c (Fwindow_splits, Fset_window_splits): Remove. + (Fdelete_other_windows_internal, make_parent_window) + (make_window, Fsplit_window_internal, Fdelete_window_internal) + (Fset_window_configuration, save_window_save): Don't deal with + split status of windows. + (saved_window): Remove splits slot. + (Vwindow_splits): Rewrite doc-string. + 2011-11-11 Jan Djärv * xfns.c (unwind_create_frame): diff --git a/src/window.c b/src/window.c index 83a8974e88d..0a780a0170a 100644 --- a/src/window.c +++ b/src/window.c @@ -465,41 +465,6 @@ Return nil if WINDOW has no previous sibling. */) return decode_any_window (window)->prev; } -DEFUN ("window-splits", Fwindow_splits, Swindow_splits, 0, 1, 0, - doc: /* Return splits status for the window WINDOW. -If WINDOW is omitted or nil, it defaults to the selected window. - -If the value returned by this function is nil and WINDOW is resized, the -corresponding space is preferably taken from (or given to) WINDOW's -right sibling. When WINDOW is deleted, its space is given to its left -sibling. - -If the value returned by this function is non-nil, resizing and deleting -WINDOW may resize all windows in the same combination. */) - (Lisp_Object window) -{ - return decode_any_window (window)->splits; -} - -DEFUN ("set-window-splits", Fset_window_splits, Sset_window_splits, 2, 2, 0, - doc: /* Set splits status of window WINDOW to STATUS. -If WINDOW is omitted or nil, it defaults to the selected window. - -If STATUS is nil and WINDOW is later resized, the corresponding space is -preferably taken from (or given to) WINDOW's right sibling. When WINDOW -is deleted, its space is given to its left sibling. - -If STATUS is non-nil, resizing and deleting WINDOW may resize all -windows in the same combination. */) - (Lisp_Object window, Lisp_Object status) -{ - register struct window *w = decode_any_window (window); - - w->splits = status; - - return w->splits; -} - DEFUN ("window-nest", Fwindow_nest, Swindow_nest, 0, 1, 0, doc: /* Return nest status of window WINDOW. If WINDOW is omitted or nil, it defaults to the selected window. @@ -2769,9 +2734,6 @@ window-start value is reasonable when this function is called. */) replace_window (root, window, 1); - /* Reset WINDOW's splits status. */ - w->splits = Qnil; - /* This must become SWINDOW anyway ....... */ if (!NILP (w->buffer) && !resize_failed) { @@ -3286,7 +3248,6 @@ make_parent_window (Lisp_Object window, int horflag) p->start = Qnil; p->pointm = Qnil; p->buffer = Qnil; - p->splits = Qnil; p->nest = Qnil; p->window_parameters = Qnil; } @@ -3334,7 +3295,7 @@ make_window (void) w->start_at_line_beg = w->display_table = w->dedicated = Qnil; w->base_line_number = w->base_line_pos = w->region_showing = Qnil; w->column_number_displayed = w->redisplay_end_trigger = Qnil; - w->splits = w->nest = w->window_parameters = Qnil; + w->nest = w->window_parameters = Qnil; w->prev_buffers = w->next_buffers = Qnil; /* Initialize non-Lisp data. */ w->desired_matrix = w->current_matrix = 0; @@ -3776,10 +3737,6 @@ set correctly. See the code of `split-window' for how this is done. */) p = XWINDOW (o->parent); /* Store value of `window-nest' in new parent's nest slot. */ p->nest = Vwindow_nest; - /* Have PARENT inherit splits slot value from OLD. */ - p->splits = o->splits; - /* Store value of `window-splits' in OLD's splits slot. */ - o->splits = Vwindow_splits; /* These get applied below. */ p->new_total = horflag ? o->total_cols : o->total_lines; p->new_normal = new_normal; @@ -3830,9 +3787,6 @@ set correctly. See the code of `split-window' for how this is done. */) n->scroll_bar_width = r->scroll_bar_width; n->vertical_scroll_bar_type = r->vertical_scroll_bar_type; - /* Store `window-splits' in NEW's splits slot. */ - n->splits = Vwindow_splits; - /* Directly assign orthogonal coordinates and sizes. */ if (horflag) { @@ -3972,7 +3926,6 @@ Signal an error when WINDOW is the only window on its frame. */) PARENT (the nest slot is not inherited). */ s->normal_cols = p->normal_cols; s->normal_lines = p->normal_lines; - s->splits = p->splits; /* Mark PARENT as deleted. */ p->vchild = p->hchild = Qnil; /* Try to merge SIBLING into its new parent. */ @@ -5359,7 +5312,7 @@ struct saved_window Lisp_Object left_margin_cols, right_margin_cols; Lisp_Object left_fringe_width, right_fringe_width, fringes_outside_margins; Lisp_Object scroll_bar_width, vertical_scroll_bar_type, dedicated; - Lisp_Object splits, nest, window_parameters; + Lisp_Object nest, window_parameters; }; #define SAVED_WINDOW_N(swv,n) \ @@ -5590,7 +5543,6 @@ the return value is nil. Otherwise the value is t. */) w->scroll_bar_width = p->scroll_bar_width; w->vertical_scroll_bar_type = p->vertical_scroll_bar_type; w->dedicated = p->dedicated; - w->splits = p->splits; w->nest = p->nest; w->window_parameters = p->window_parameters; XSETFASTINT (w->last_modified, 0); @@ -5869,7 +5821,6 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i) p->scroll_bar_width = w->scroll_bar_width; p->vertical_scroll_bar_type = w->vertical_scroll_bar_type; p->dedicated = w->dedicated; - p->splits = w->splits; p->nest = w->nest; p->window_parameters = w->window_parameters; if (!NILP (w->buffer)) @@ -6333,7 +6284,7 @@ freeze_window_starts (struct frame *f, int freeze_p) and the like. This ignores a couple of things like the dedicatedness status of - window, splits, nest and the like. This might have to be fixed. */ + window, nest and the like. This might have to be fixed. */ int compare_window_configurations (Lisp_Object configuration1, Lisp_Object configuration2, int ignore_positions) @@ -6545,16 +6496,7 @@ variable is non-nil, splitting a window may resize all windows in the same combination. This also allows to split a window that is otherwise too small or of fixed size. -The value of this variable is also assigned to the split status of the -new window and, provided the old and new window form a new combination, -to the window that was split as well. The split status of a window can -be retrieved with the function `window-splits' and altered by the -function `set-window-splits'. - -If the value of the variable `window-nest' is non-nil, the space for the -new window is exclusively taken from the window that shall be split, but -the split status of the window that is split as well as that of the new -window are still set to the value of this variable. */); +This variable takes no effect if `window-nest' is non-nil. */); Vwindow_splits = Qnil; DEFVAR_LISP ("window-nest", Vwindow_nest, @@ -6591,8 +6533,6 @@ function `window-nest' and altered by the function `set-window-nest'. */); defsubr (&Swindow_left_child); defsubr (&Swindow_next_sibling); defsubr (&Swindow_prev_sibling); - defsubr (&Swindow_splits); - defsubr (&Sset_window_splits); defsubr (&Swindow_nest); defsubr (&Sset_window_nest); defsubr (&Swindow_use_time); diff --git a/src/window.h b/src/window.h index 6a9641e3e6d..c11235bd67b 100644 --- a/src/window.h +++ b/src/window.h @@ -258,10 +258,6 @@ struct window must run the redisplay-end-trigger-hook. */ Lisp_Object redisplay_end_trigger; - /* Non-nil means deleting or resizing this window distributes - space among all windows in the same combination. */ - Lisp_Object splits; - /* Non-nil means this window's child windows are never (re-)combined. */ Lisp_Object nest; -- 2.11.4.GIT