Function: org-export--selected-trees

org-export--selected-trees is a byte-compiled function defined in ox.el.gz.

Signature

(org-export--selected-trees DATA INFO)

Documentation

List headlines and inlinetasks with a select tag in their tree.

DATA is parsed data as returned by org-element-parse-buffer. INFO is a plist holding export options.

Source Code

;; Defined in /usr/src/emacs/lisp/org/ox.el.gz
(defun org-export--selected-trees (data info)
  "List headlines and inlinetasks with a select tag in their tree.
DATA is parsed data as returned by `org-element-parse-buffer'.
INFO is a plist holding export options."
  (let ((select (cl-mapcan (lambda (tag) (org-tags-expand tag t))
			   (plist-get info :select-tags))))
    (if (cl-some (lambda (tag) (member tag select)) (plist-get info :filetags))
	;; If FILETAGS contains a select tag, every headline or
	;; inlinetask is returned.
	(org-element-map data '(headline inlinetask) #'identity)
      (letrec ((selected-trees nil)
	       (walk-data
		(lambda (data genealogy)
		  (let ((type (org-element-type data)))
		    (cond
		     ((memq type '(headline inlinetask))
		      (let ((tags (org-element-property :tags data)))
			(if (cl-some (lambda (tag) (member tag select)) tags)
			    ;; When a select tag is found, mark full
			    ;; genealogy and every headline within the
			    ;; tree as acceptable.
			    (setq selected-trees
				  (append
				   genealogy
				   (org-element-map data '(headline inlinetask)
				     #'identity)
				   selected-trees))
			  ;; If at a headline, continue searching in
			  ;; tree, recursively.
			  (when (eq type 'headline)
			    (dolist (el (org-element-contents data))
			      (funcall walk-data el (cons data genealogy)))))))
		     ((or (eq type 'org-data)
			  (memq type org-element-greater-elements))
		      (dolist (el (org-element-contents data))
			(funcall walk-data el genealogy))))))))
	(funcall walk-data data nil)
	selected-trees))))