Function: tree-widget-children-value-save
tree-widget-children-value-save is a byte-compiled function defined in
tree-widget.el.gz.
Signature
(tree-widget-children-value-save WIDGET &optional ARGS NODE)
Documentation
Save WIDGET children values.
WIDGET is, or derives from, a tree-widget. Children properties and values are saved in ARGS if non-nil, else in WIDGET's :args property value. Properties and values of the WIDGET's :node sub-widget are saved in NODE if non-nil, else in WIDGET's :node sub-widget.
Source Code
;; Defined in /usr/src/emacs/lisp/tree-widget.el.gz
(defun tree-widget-children-value-save (widget &optional args node)
"Save WIDGET children values.
WIDGET is, or derives from, a tree-widget.
Children properties and values are saved in ARGS if non-nil, else in
WIDGET's :args property value. Properties and values of the
WIDGET's :node sub-widget are saved in NODE if non-nil, else in
WIDGET's :node sub-widget."
(let ((args (cons (or node (widget-get widget :node))
(or args (widget-get widget :args))))
(children (widget-get widget :children))
arg child)
(while (and args children)
(setq arg (car args)
args (cdr args)
child (car children)
children (cdr children))
(if (tree-widget-p child)
;;;; The child is a tree node.
(progn
;; Backtrack :args and :node properties.
(widget-put arg :args (widget-get child :args))
(widget-put arg :node (widget-get child :node))
;; Save :open property.
(widget-put arg :open (widget-get child :open))
;; The node is open.
(when (widget-get child :open)
;; Save the widget value.
(widget-put arg :value (widget-value child))
;; Save properties specified in :keep.
(tree-widget-keep arg child)
;; Save children.
(tree-widget-children-value-save
child (widget-get arg :args) (widget-get arg :node))))
;;;; Another non tree node.
;; Save the widget value.
(widget-put arg :value (widget-value child))
;; Save properties specified in :keep.
(tree-widget-keep arg child)))))