0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-09-19 20:39:57 +00:00

org-export: Add a function to resolve id or custom-id links

* contrib/lisp/org-export.el (org-export-resolve-id-link): New function.
This commit is contained in:
Nicolas Goaziou 2012-01-19 17:05:02 +01:00
parent 95e71f5705
commit c12246931f

View file

@ -2224,6 +2224,10 @@ Return the parsed tree."
;; (i.e. links with "fuzzy" as type) within the parsed tree, and
;; returns an appropriate unique identifier when found, or nil.
;; `org-export-resolve-id-link' returns the first headline with
;; specified id or custom-id in parse tree, or nil when none was
;; found.
;; `org-export-resolve-coderef' associates a reference to a line
;; number in the element it belongs, or returns the reference itself
;; when the element isn't numbered.
@ -2307,6 +2311,22 @@ Assume LINK type is \"fuzzy\"."
;; No match with a common ancestor: try the full parse-tree.
(funcall find-headline path (plist-get info :parse-tree)))))))
(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 an headline element or nil. Assume LINK type
is either \"id\" or \"custom-id\"."
(let ((id (org-element-get-property :path link)))
(org-element-map
(plist-get info :parse-tree) 'headline
(lambda (headline local)
(when (or (string= (org-element-get-property :id headline) id)
(string= (org-element-get-property :custom-id headline) id))
headline))
info 'first-match)))
(defun org-export-resolve-coderef (ref info)
"Resolve a code reference REF.