|
@@ -1669,8 +1669,7 @@ Following tree properties are set or updated:
|
|
|
export.
|
|
|
|
|
|
Return updated plist."
|
|
|
- ;; Install the parse tree in the communication channel, in order to
|
|
|
- ;; use `org-export-get-genealogy' and al.
|
|
|
+ ;; Install the parse tree in the communication channel.
|
|
|
(setq info (plist-put info :parse-tree data))
|
|
|
;; Get the list of elements and objects to ignore, and put it into
|
|
|
;; `:ignore-list'. Do not overwrite any user ignore that might have
|
|
@@ -3664,7 +3663,7 @@ INFO is a plist holding contextual information."
|
|
|
INFO is a plist used as a communication channel."
|
|
|
(unless (org-some
|
|
|
(lambda (head) (org-not-nil (org-element-property :UNNUMBERED head)))
|
|
|
- (cons headline (org-export-get-genealogy headline)))
|
|
|
+ (org-element-lineage headline nil t))
|
|
|
(let ((sec-num (plist-get info :section-numbers))
|
|
|
(level (org-export-get-relative-level headline info)))
|
|
|
(if (wholenump sec-num) (<= level sec-num) sec-num))))
|
|
@@ -3706,15 +3705,11 @@ inherited from parent headlines and FILETAGS keywords."
|
|
|
(if (not inherited) (org-element-property :tags element)
|
|
|
;; Build complete list of inherited tags.
|
|
|
(let ((current-tag-list (org-element-property :tags element)))
|
|
|
- (mapc
|
|
|
- (lambda (parent)
|
|
|
- (mapc
|
|
|
- (lambda (tag)
|
|
|
- (when (and (memq (org-element-type parent) '(headline inlinetask))
|
|
|
- (not (member tag current-tag-list)))
|
|
|
- (push tag current-tag-list)))
|
|
|
- (org-element-property :tags parent)))
|
|
|
- (org-export-get-genealogy element))
|
|
|
+ (dolist (parent (org-element-lineage element))
|
|
|
+ (dolist (tag (org-element-property :tags parent))
|
|
|
+ (when (and (memq (org-element-type parent) '(headline inlinetask))
|
|
|
+ (not (member tag current-tag-list)))
|
|
|
+ (push tag current-tag-list))))
|
|
|
;; Add FILETAGS keywords and return results.
|
|
|
(org-uniquify (append (plist-get info :filetags) current-tag-list))))))
|
|
|
|
|
@@ -3980,13 +3975,12 @@ significant."
|
|
|
;; Search among headlines sharing an ancestor with link, from
|
|
|
;; closest to farthest.
|
|
|
(catch 'exit
|
|
|
- (mapc
|
|
|
- (lambda (parent)
|
|
|
- (let ((foundp (funcall find-headline path parent)))
|
|
|
- (when foundp (throw 'exit foundp))))
|
|
|
- (let ((parent-hl (org-export-get-parent-headline link)))
|
|
|
- (if (not parent-hl) (list (plist-get info :parse-tree))
|
|
|
- (cons parent-hl (org-export-get-genealogy parent-hl)))))
|
|
|
+ (dolist (parent
|
|
|
+ (let ((parent-hl (org-export-get-parent-headline link)))
|
|
|
+ (if (not parent-hl) (list (plist-get info :parse-tree))
|
|
|
+ (org-element-lineage parent-hl nil t))))
|
|
|
+ (let ((foundp (funcall find-headline path parent)))
|
|
|
+ (when foundp (throw 'exit foundp))))
|
|
|
;; No destination found: return nil.
|
|
|
(and (not match-title-p) (puthash path nil link-cache))))))))
|
|
|
|
|
@@ -4061,13 +4055,9 @@ objects of the same type."
|
|
|
;; table, item, or headline containing the object.
|
|
|
(when (eq (org-element-type element) 'target)
|
|
|
(setq element
|
|
|
- (loop for parent in (org-export-get-genealogy element)
|
|
|
- when
|
|
|
- (memq
|
|
|
- (org-element-type parent)
|
|
|
- '(footnote-definition footnote-reference headline item
|
|
|
- table))
|
|
|
- return parent)))
|
|
|
+ (org-element-lineage
|
|
|
+ element
|
|
|
+ '(footnote-definition footnote-reference headline item table))))
|
|
|
(case (org-element-type element)
|
|
|
;; Special case 1: A headline returns its number as a list.
|
|
|
(headline (org-export-get-headline-number element info))
|
|
@@ -5100,47 +5090,26 @@ Return the new string."
|
|
|
;; (`org-export-get-parent-table'), previous element or object
|
|
|
;; (`org-export-get-previous-element') and next element or object
|
|
|
;; (`org-export-get-next-element').
|
|
|
-;;
|
|
|
-;; `org-export-get-genealogy' returns the full genealogy of a given
|
|
|
-;; element or object, from closest parent to full parse tree.
|
|
|
|
|
|
;; defsubst org-export-get-parent must be defined before first use
|
|
|
|
|
|
-(defun org-export-get-genealogy (blob)
|
|
|
- "Return full genealogy relative to a given element or object.
|
|
|
-
|
|
|
-BLOB is the element or object being considered.
|
|
|
-
|
|
|
-Ancestors are returned from closest to farthest, the last one
|
|
|
-being the full parse tree."
|
|
|
- (let (genealogy (parent blob))
|
|
|
- (while (setq parent (org-element-property :parent parent))
|
|
|
- (push parent genealogy))
|
|
|
- (nreverse genealogy)))
|
|
|
+(define-obsolete-function-alias
|
|
|
+ 'org-export-get-genealogy 'org-element-lineage "25.1")
|
|
|
|
|
|
(defun org-export-get-parent-headline (blob)
|
|
|
"Return BLOB parent headline or nil.
|
|
|
BLOB is the element or object being considered."
|
|
|
- (let ((parent blob))
|
|
|
- (while (and (setq parent (org-element-property :parent parent))
|
|
|
- (not (eq (org-element-type parent) 'headline))))
|
|
|
- parent))
|
|
|
+ (org-element-lineage blob '(headline)))
|
|
|
|
|
|
(defun org-export-get-parent-element (object)
|
|
|
"Return first element containing OBJECT or nil.
|
|
|
OBJECT is the object to consider."
|
|
|
- (let ((parent object))
|
|
|
- (while (and (setq parent (org-element-property :parent parent))
|
|
|
- (memq (org-element-type parent) org-element-all-objects)))
|
|
|
- parent))
|
|
|
+ (org-element-lineage object org-element-all-elements))
|
|
|
|
|
|
(defun org-export-get-parent-table (object)
|
|
|
"Return OBJECT parent table or nil.
|
|
|
OBJECT is either a `table-cell' or `table-element' type object."
|
|
|
- (let ((parent object))
|
|
|
- (while (and (setq parent (org-element-property :parent parent))
|
|
|
- (not (eq (org-element-type parent) 'table))))
|
|
|
- parent))
|
|
|
+ (org-element-lineage object '(table)))
|
|
|
|
|
|
(defun org-export-get-previous-element (blob info &optional n)
|
|
|
"Return previous element or object.
|