Function: allout-redecorate-visible-subtree
allout-redecorate-visible-subtree is a byte-compiled function defined
in allout-widgets.el.gz.
Signature
(allout-redecorate-visible-subtree &optional PARENT-WIDGET DEPTH CHART)
Documentation
Redecorate all visible items in subtree at point.
Optional PARENT-WIDGET is for optimization, when the parent widget is already available.
Optional DEPTH restricts the excursion depth of covered.
Optional CHART is for internal recursion, to carry a chart of the target items.
Point is left at the last sibling in the visible subtree.
Source Code
;; Defined in /usr/src/emacs/lisp/allout-widgets.el.gz
;;;_ > allout-redecorate-visible-subtree (&optional parent-widget
;;; depth chart)
(defun allout-redecorate-visible-subtree (&optional parent-widget depth chart)
"Redecorate all visible items in subtree at point.
Optional PARENT-WIDGET is for optimization, when the parent
widget is already available.
Optional DEPTH restricts the excursion depth of covered.
Optional CHART is for internal recursion, to carry a chart of the
target items.
Point is left at the last sibling in the visible subtree."
;; using a treatment that takes care of all the siblings on a level, we
;; only need apply it to the first sibling on the level, and we can
;; collect and pass the parent of the lower levels to recursive calls as
;; we go.
(let ((parent-widget
(if (and parent-widget (widget-apply parent-widget
:actual-position :from))
(progn (goto-char (widget-apply parent-widget
:actual-position :from))
parent-widget)
(let ((got (allout-get-item-widget)))
(if got
(allout-decorate-item-and-context got 'redecorate)
(allout-get-or-create-item-widget 'redecorate)))))
(pending-chart (or chart (allout-chart-subtree nil 'visible)))
item-widget
previous-sibling-point
recent-sibling-point)
(setq pending-chart (nreverse pending-chart))
(dolist (sibling-point pending-chart)
(cond ((integerp sibling-point)
(when (not previous-sibling-point)
(goto-char sibling-point)
(if (setq item-widget (allout-get-item-widget nil))
(allout-decorate-item-and-context item-widget 'redecorate
nil parent-widget)
(allout-get-or-create-item-widget)))
(setq previous-sibling-point sibling-point
recent-sibling-point sibling-point))
((listp sibling-point)
(if (or (not depth)
(> depth 1))
(allout-redecorate-visible-subtree
(if (not previous-sibling-point)
;; containment discontinuity - sigh
parent-widget
(allout-get-or-create-item-widget 'redecorate))
(if depth (1- depth))
sibling-point)))))
(if (and recent-sibling-point (< (point) recent-sibling-point))
(goto-char recent-sibling-point))))