:version "24.1"
:group 'windows)
-(defun window-iso-combination-p (&optional window horizontal)
+(defun window-combination-p (&optional window horizontal)
"If WINDOW is a vertical combination return WINDOW's first child.
WINDOW can be any window and defaults to the selected one.
Optional argument HORIZONTAL non-nil means return WINDOW's first
(window-left-child window)
(window-top-child window)))
-(defsubst window-iso-combined-p (&optional window horizontal)
+(defsubst window-combined-p (&optional window horizontal)
"Return non-nil if and only if WINDOW is vertically combined.
WINDOW can be any window and defaults to the selected one.
Optional argument HORIZONTAL non-nil means return non-nil if and
only if WINDOW is horizontally combined."
(setq window (window-normalize-any-window window))
(let ((parent (window-parent window)))
- (and parent (window-iso-combination-p parent horizontal))))
+ (and parent (window-combination-p parent horizontal))))
-(defun window-iso-combinations (&optional window horizontal)
+(defun window-combinations (&optional window horizontal)
"Return largest number of vertically arranged subwindows of WINDOW.
WINDOW can be any window and defaults to the selected one.
Optional argument HORIZONTAL non-nil means to return the largest
((window-live-p window)
;; If WINDOW is live, return 1.
1)
- ((window-iso-combination-p window horizontal)
+ ((window-combination-p window horizontal)
;; If WINDOW is iso-combined, return the sum of the values for all
;; subwindows of WINDOW.
(let ((child (window-child window))
(count 0))
(while child
(setq count
- (+ (window-iso-combinations child horizontal)
+ (+ (window-combinations child horizontal)
count))
(setq child (window-right child)))
count))
(count 1))
(while child
(setq count
- (max (window-iso-combinations child horizontal)
+ (max (window-combinations child horizontal)
count))
(setq child (window-right child)))
count))))
(if sub
(let ((value 0))
;; WINDOW is an internal window.
- (if (window-iso-combined-p sub horizontal)
+ (if (window-combined-p sub horizontal)
;; The minimum size of an iso-combination is the sum of
;; the minimum sizes of its subwindows.
(while sub
(catch 'fixed
(if sub
;; WINDOW is an internal window.
- (if (window-iso-combined-p sub horizontal)
+ (if (window-combined-p sub horizontal)
;; An iso-combination is fixed size if all its subwindows
;; are fixed-size.
(progn
(let* ((parent (window-parent window))
(sub (window-child parent)))
(catch 'done
- (if (window-iso-combined-p sub horizontal)
+ (if (window-combined-p sub horizontal)
;; In an iso-combination throw DELTA if we find at least one
;; subwindow and that subwindow is either not of fixed-size
;; or we can ignore fixed-sizeness.
(let* ((parent (window-parent window))
(sub (window-child parent)))
(catch 'fixed
- (if (window-iso-combined-p sub horizontal)
+ (if (window-combined-p sub horizontal)
;; For an iso-combination calculate how much we can get from
;; other subwindows.
(let ((skip (eq trail 'after)))
(window--resize-reset frame horizontal)
(window--resize-this-window window delta horizontal ignore t)
(if (and (not (window-splits window))
- (window-iso-combined-p window horizontal)
+ (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
(when (window-parent window)
(let* ((parent (window-parent window))
(sub (window-child parent)))
- (if (window-iso-combined-p sub horizontal)
+ (if (window-combined-p sub horizontal)
;; In an iso-combination try to extract DELTA from WINDOW's
;; siblings.
(let ((first sub)
(let ((sub (window-child window)))
(cond
((not sub))
- ((window-iso-combined-p sub horizontal)
+ ((window-combined-p sub horizontal)
;; In an iso-combination resize subwindows according to their
;; normal sizes.
(window--resize-subwindows
(right window)
left this-delta min-delta max-delta failed)
;; Find the edge we want to move.
- (while (and (or (not (window-iso-combined-p right horizontal))
+ (while (and (or (not (window-combined-p right horizontal))
(not (window-right right)))
(setq right (window-parent right))))
(cond
(or (window-left left)
(progn
(while (and (setq left (window-parent left))
- (not (window-iso-combined-p left horizontal))))
+ (not (window-combined-p left horizontal))))
(window-left left)))))
(unless left
(if horizontal
(or (window-right right)
(progn
(while (and (setq right (window-parent right))
- (not (window-iso-combined-p right horizontal))))
+ (not (window-combined-p right horizontal))))
(window-right right)))))
(unless right
(if horizontal
(resize
(and window-splits (not window-nest)
;; Resize makes sense in iso-combinations only.
- (window-iso-combined-p window horizontal)))
+ (window-combined-p window horizontal)))
;; `old-size' is the current size of WINDOW.
(old-size (window-total-size window horizontal))
;; `new-size' is the specified or calculated size of the
(min (- parent-size
(window-min-size parent horizontal))
(/ parent-size
- (1+ (window-iso-combinations
+ (1+ (window-combinations
parent horizontal))))
;; Else try to give the new window half the size
;; of WINDOW (plus an eventual odd line).
;; Make new-parent non-nil if we need a new parent window;
;; either because we want to nest or because WINDOW is not
;; iso-combined.
- (or window-nest (not (window-iso-combined-p window horizontal))))
+ (or window-nest (not (window-combined-p window horizontal))))
(setq new-normal
;; Make new-normal the normal size of the new window.
(cond
(size (/ (float new-size) (if new-parent old-size parent-size)))
(new-parent 0.5)
- (resize (/ 1.0 (1+ (window-iso-combinations parent horizontal))))
+ (resize (/ 1.0 (1+ (window-combinations parent horizontal))))
(t (/ (window-normal-size window horizontal) 2.0))))
(if resize
;; the smallest window).
(defun balance-windows-2 (window horizontal)
"Subroutine of `balance-windows-1'.
-WINDOW must be an iso-combination."
+WINDOW must be a vertical combination (horizontal if HORIZONTAL
+is non-nil."
(let* ((first (window-child window))
(sub first)
(number-of-children 0)
"Subroutine of `balance-windows'."
(if (window-child window)
(let ((sub (window-child window)))
- (if (window-iso-combined-p sub horizontal)
+ (if (window-combined-p sub horizontal)
(balance-windows-2 window horizontal)
(let ((size (window-new-total window)))
(while sub
WINDOW defaults to the selected window."
(with-selected-window (or window (selected-window))
(let ((edges (window-edges)))
- ;; The following doesn't satisfy the doc-string's claim when
- ;; window and previous-/next-window are not part of the same
- ;; combination but still share a common edge. Using
- ;; `window-iso-combined-p' instead should handle that.
(or (= (nth 2 edges) (nth 2 (window-edges (previous-window))))
(= (nth 0 edges) (nth 0 (window-edges (next-window))))))))
-;; (make-obsolete
- ;; 'window-safely-shrinkable-p "use `window-iso-combined-p' instead." "24.1")
(defun shrink-window-if-larger-than-buffer (&optional window)
"Shrink height of WINDOW if its buffer doesn't need so many lines.
;; Make sure that WINDOW is vertically combined and `point-min' is
;; visible (for whatever reason that's needed). The remaining issues
;; should be taken care of by `fit-window-to-buffer'.
- (when (and (window-iso-combined-p window)
+ (when (and (window-combined-p window)
(pos-visible-in-window-p (point-min) window))
(fit-window-to-buffer window (window-total-size window))))
\f