Function: org-export-resolve-id-link
org-export-resolve-id-link is a byte-compiled function defined in
ox.el.gz.
Signature
(org-export-resolve-id-link LINK INFO)
Documentation
Return headline referenced as LINK destination.
INFO is a plist used as a communication channel.
Return value can be the headline element matched in current parse
tree or a file name. Assume LINK type is either "id" or
"custom-id". Throw an error if no match is found.
Source Code
;; Defined in /usr/src/emacs/lisp/org/ox.el.gz
(defun org-export-resolve-id-link (link info)
"Return headline referenced as LINK destination.
INFO is a plist used as a communication channel.
Return value can be the headline element matched in current parse
tree or a file name. Assume LINK type is either \"id\" or
\"custom-id\". Throw an error if no match is found."
(let ((id (org-element-property :path link)))
;; First check if id is within the current parse tree.
(or (let ((local-ids (or (plist-get info :id-local-cache)
(let ((table (make-hash-table :test #'equal)))
(org-element-map
(plist-get info :parse-tree)
'headline
(lambda (headline)
(let ((id (org-element-property :ID headline))
(custom-id (org-element-property :CUSTOM_ID headline)))
(when id
(unless (gethash id table)
(puthash id headline table)))
(when custom-id
(unless (gethash custom-id table)
(puthash custom-id headline table)))))
info)
(plist-put info :id-local-cache table)
table))))
(gethash id local-ids))
;; Otherwise, look for external files.
(cdr (assoc id (plist-get info :id-alist)))
(signal 'org-link-broken (list id)))))