org-export: Suppress some byte-compiling warnings
This commit is contained in:
parent
a147dc3150
commit
3f0f8734ff
|
@ -1116,8 +1116,7 @@ Return options as a plist."
|
|||
(plist-put
|
||||
plist :title
|
||||
(org-element-parse-secondary-string
|
||||
prop
|
||||
(cdr (assq 'keyword org-element-string-restrictions))))))
|
||||
prop (org-element-restriction 'keyword)))))
|
||||
(when (setq prop (org-entry-get (point) "EXPORT_TEXT"))
|
||||
(setq plist (plist-put plist :text prop)))
|
||||
(when (setq prop (org-entry-get (point) "EXPORT_AUTHOR"))
|
||||
|
@ -1489,26 +1488,28 @@ associated numbering \(in the shape of a list of numbers\)."
|
|||
"Return list of elements and objects to ignore during export.
|
||||
DATA is the parse tree to traverse. OPTIONS is the plist holding
|
||||
export options."
|
||||
(let (ignore
|
||||
(walk-data
|
||||
(function
|
||||
(lambda (data options selected)
|
||||
;; Collect ignored elements or objects into IGNORE-LIST.
|
||||
(mapc
|
||||
(lambda (el)
|
||||
(if (org-export--skip-p el options selected) (push el ignore)
|
||||
(let ((type (org-element-type el)))
|
||||
(if (and (eq (plist-get info :with-archived-trees) 'headline)
|
||||
(eq (org-element-type el) 'headline)
|
||||
(org-element-property :archivedp el))
|
||||
;; If headline is archived but tree below has
|
||||
;; to be skipped, add it to ignore list.
|
||||
(mapc (lambda (e) (push e ignore))
|
||||
(org-element-contents el))
|
||||
;; Move into recursive objects/elements.
|
||||
(when (org-element-contents el)
|
||||
(funcall walk-data el options selected))))))
|
||||
(org-element-contents data))))))
|
||||
(let* (ignore
|
||||
walk-data ; for byte-compiler.
|
||||
(walk-data
|
||||
(function
|
||||
(lambda (data options selected)
|
||||
;; Collect ignored elements or objects into IGNORE-LIST.
|
||||
(mapc
|
||||
(lambda (el)
|
||||
(if (org-export--skip-p el options selected) (push el ignore)
|
||||
(let ((type (org-element-type el)))
|
||||
(if (and (eq (plist-get options :with-archived-trees)
|
||||
'headline)
|
||||
(eq (org-element-type el) 'headline)
|
||||
(org-element-property :archivedp el))
|
||||
;; If headline is archived but tree below has
|
||||
;; to be skipped, add it to ignore list.
|
||||
(mapc (lambda (e) (push e ignore))
|
||||
(org-element-contents el))
|
||||
;; Move into recursive objects/elements.
|
||||
(when (org-element-contents el)
|
||||
(funcall walk-data el options selected))))))
|
||||
(org-element-contents data))))))
|
||||
;; Main call. First find trees containing a select tag, if any.
|
||||
(funcall walk-data data options (org-export--selected-trees data options))
|
||||
;; Return value.
|
||||
|
@ -1518,29 +1519,30 @@ export options."
|
|||
"Return list of headlines containing 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 (selected-trees
|
||||
(walk-data
|
||||
(function
|
||||
(lambda (data genealogy)
|
||||
(case (org-element-type data)
|
||||
(org-data (mapc (lambda (el) (funcall walk-data el genealogy))
|
||||
(org-element-contents data)))
|
||||
(headline
|
||||
(let ((tags (org-element-property :tags data)))
|
||||
(if (loop for tag in (plist-get info :select-tags)
|
||||
thereis (member tag 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 'identity)
|
||||
selected-trees))
|
||||
;; Else, continue searching in tree, recursively.
|
||||
(mapc
|
||||
(lambda (el) (funcall walk-data el (cons data genealogy)))
|
||||
(org-element-contents data))))))))))
|
||||
(let* (selected-trees
|
||||
walk-data ; for byte-compiler.
|
||||
(walk-data
|
||||
(function
|
||||
(lambda (data genealogy)
|
||||
(case (org-element-type data)
|
||||
(org-data (mapc (lambda (el) (funcall walk-data el genealogy))
|
||||
(org-element-contents data)))
|
||||
(headline
|
||||
(let ((tags (org-element-property :tags data)))
|
||||
(if (loop for tag in (plist-get info :select-tags)
|
||||
thereis (member tag 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 'identity)
|
||||
selected-trees))
|
||||
;; Else, continue searching in tree, recursively.
|
||||
(mapc
|
||||
(lambda (el) (funcall walk-data el (cons data genealogy)))
|
||||
(org-element-contents data))))))))))
|
||||
(funcall walk-data data nil) selected-trees))
|
||||
|
||||
(defun org-export--skip-p (blob options selected)
|
||||
|
@ -2367,6 +2369,9 @@ of subtree at point.
|
|||
When optional argument PUB-DIR is set, use it as the publishing
|
||||
directory.
|
||||
|
||||
When optional argument VISIBLE-ONLY is non-nil, don't export
|
||||
contents of hidden elements.
|
||||
|
||||
Return file name as a string, or nil if it couldn't be
|
||||
determined."
|
||||
(let ((base-name
|
||||
|
@ -2376,8 +2381,7 @@ determined."
|
|||
(or (and subtreep
|
||||
(org-entry-get
|
||||
(save-excursion
|
||||
(ignore-errors
|
||||
(org-back-to-heading (not visible-only)) (point)))
|
||||
(ignore-errors (org-back-to-heading) (point)))
|
||||
"EXPORT_FILE_NAME" t))
|
||||
;; File name may be extracted from buffer's associated
|
||||
;; file, if any.
|
||||
|
@ -2639,27 +2643,28 @@ INFO is the plist used as a communication channel.
|
|||
Definitions are sorted by order of references. They either
|
||||
appear as Org data or as a secondary string for inlined
|
||||
footnotes. Unreferenced definitions are ignored."
|
||||
(let (num-alist
|
||||
(collect-fn
|
||||
(function
|
||||
(lambda (data)
|
||||
;; Collect footnote number, label and definition in DATA.
|
||||
(org-element-map
|
||||
data 'footnote-reference
|
||||
(lambda (fn)
|
||||
(when (org-export-footnote-first-reference-p fn info)
|
||||
(let ((def (org-export-get-footnote-definition fn info)))
|
||||
(push
|
||||
(list (org-export-get-footnote-number fn info)
|
||||
(org-element-property :label fn)
|
||||
def)
|
||||
num-alist)
|
||||
;; Also search in definition for nested footnotes.
|
||||
(when (eq (org-element-property :type fn) 'standard)
|
||||
(funcall collect-fn def)))))
|
||||
;; Don't enter footnote definitions since it will happen
|
||||
;; when their first reference is found.
|
||||
info nil 'footnote-definition)))))
|
||||
(let* (num-alist
|
||||
collect-fn ; for byte-compiler.
|
||||
(collect-fn
|
||||
(function
|
||||
(lambda (data)
|
||||
;; Collect footnote number, label and definition in DATA.
|
||||
(org-element-map
|
||||
data 'footnote-reference
|
||||
(lambda (fn)
|
||||
(when (org-export-footnote-first-reference-p fn info)
|
||||
(let ((def (org-export-get-footnote-definition fn info)))
|
||||
(push
|
||||
(list (org-export-get-footnote-number fn info)
|
||||
(org-element-property :label fn)
|
||||
def)
|
||||
num-alist)
|
||||
;; Also search in definition for nested footnotes.
|
||||
(when (eq (org-element-property :type fn) 'standard)
|
||||
(funcall collect-fn def)))))
|
||||
;; Don't enter footnote definitions since it will happen
|
||||
;; when their first reference is found.
|
||||
info nil 'footnote-definition)))))
|
||||
(funcall collect-fn (plist-get info :parse-tree))
|
||||
(reverse num-alist)))
|
||||
|
||||
|
@ -2673,25 +2678,26 @@ INFO is the plist used as a communication channel."
|
|||
(if (not label) t
|
||||
;; Otherwise, return the first footnote with the same LABEL and
|
||||
;; test if it is equal to FOOTNOTE-REFERENCE.
|
||||
(let ((search-refs
|
||||
(function
|
||||
(lambda (data)
|
||||
(org-element-map
|
||||
data 'footnote-reference
|
||||
(lambda (fn)
|
||||
(cond
|
||||
((string= (org-element-property :label fn) label)
|
||||
(throw 'exit fn))
|
||||
;; If FN isn't inlined, be sure to traverse its
|
||||
;; definition before resuming search. See
|
||||
;; comments in `org-export-get-footnote-number'
|
||||
;; for more information.
|
||||
((eq (org-element-property :type fn) 'standard)
|
||||
(funcall search-refs
|
||||
(org-export-get-footnote-definition fn info)))))
|
||||
;; Don't enter footnote definitions since it will
|
||||
;; happen when their first reference is found.
|
||||
info 'first-match 'footnote-definition)))))
|
||||
(let* (search-refs ; for byte-compiler.
|
||||
(search-refs
|
||||
(function
|
||||
(lambda (data)
|
||||
(org-element-map
|
||||
data 'footnote-reference
|
||||
(lambda (fn)
|
||||
(cond
|
||||
((string= (org-element-property :label fn) label)
|
||||
(throw 'exit fn))
|
||||
;; If FN isn't inlined, be sure to traverse its
|
||||
;; definition before resuming search. See
|
||||
;; comments in `org-export-get-footnote-number'
|
||||
;; for more information.
|
||||
((eq (org-element-property :type fn) 'standard)
|
||||
(funcall search-refs
|
||||
(org-export-get-footnote-definition fn info)))))
|
||||
;; Don't enter footnote definitions since it will
|
||||
;; happen when their first reference is found.
|
||||
info 'first-match 'footnote-definition)))))
|
||||
(equal (catch 'exit (funcall search-refs (plist-get info :parse-tree)))
|
||||
footnote-reference)))))
|
||||
|
||||
|
@ -2707,45 +2713,46 @@ INFO is the plist used as a communication channel."
|
|||
|
||||
FOOTNOTE is either a footnote reference or a footnote definition.
|
||||
INFO is the plist used as a communication channel."
|
||||
(let ((label (org-element-property :label footnote))
|
||||
seen-refs
|
||||
(search-ref
|
||||
(function
|
||||
(lambda (data)
|
||||
;; Search footnote references through DATA, filling
|
||||
;; SEEN-REFS along the way.
|
||||
(org-element-map
|
||||
data 'footnote-reference
|
||||
(lambda (fn)
|
||||
(let ((fn-lbl (org-element-property :label fn)))
|
||||
(cond
|
||||
;; Anonymous footnote match: return number.
|
||||
((and (not fn-lbl) (equal fn footnote))
|
||||
(throw 'exit (1+ (length seen-refs))))
|
||||
;; Labels match: return number.
|
||||
((and label (string= label fn-lbl))
|
||||
(throw 'exit (1+ (length seen-refs))))
|
||||
;; Anonymous footnote: it's always a new one. Also,
|
||||
;; be sure to return nil from the `cond' so
|
||||
;; `first-match' doesn't get us out of the loop.
|
||||
((not fn-lbl) (push 'inline seen-refs) nil)
|
||||
;; Label not seen so far: add it so SEEN-REFS.
|
||||
;;
|
||||
;; Also search for subsequent references in footnote
|
||||
;; definition so numbering following reading logic.
|
||||
;; Note that we don't have to care about inline
|
||||
;; definitions, since `org-element-map' already
|
||||
;; traverse them at the right time.
|
||||
;;
|
||||
;; Once again, return nil to stay in the loop.
|
||||
((not (member fn-lbl seen-refs))
|
||||
(push fn-lbl seen-refs)
|
||||
(funcall search-ref
|
||||
(org-export-get-footnote-definition fn info))
|
||||
nil))))
|
||||
;; Don't enter footnote definitions since it will happen
|
||||
;; when their first reference is found.
|
||||
info 'first-match 'footnote-definition)))))
|
||||
(let* ((label (org-element-property :label footnote))
|
||||
seen-refs
|
||||
search-ref ; for byte-compiler.
|
||||
(search-ref
|
||||
(function
|
||||
(lambda (data)
|
||||
;; Search footnote references through DATA, filling
|
||||
;; SEEN-REFS along the way.
|
||||
(org-element-map
|
||||
data 'footnote-reference
|
||||
(lambda (fn)
|
||||
(let ((fn-lbl (org-element-property :label fn)))
|
||||
(cond
|
||||
;; Anonymous footnote match: return number.
|
||||
((and (not fn-lbl) (equal fn footnote))
|
||||
(throw 'exit (1+ (length seen-refs))))
|
||||
;; Labels match: return number.
|
||||
((and label (string= label fn-lbl))
|
||||
(throw 'exit (1+ (length seen-refs))))
|
||||
;; Anonymous footnote: it's always a new one. Also,
|
||||
;; be sure to return nil from the `cond' so
|
||||
;; `first-match' doesn't get us out of the loop.
|
||||
((not fn-lbl) (push 'inline seen-refs) nil)
|
||||
;; Label not seen so far: add it so SEEN-REFS.
|
||||
;;
|
||||
;; Also search for subsequent references in footnote
|
||||
;; definition so numbering following reading logic.
|
||||
;; Note that we don't have to care about inline
|
||||
;; definitions, since `org-element-map' already
|
||||
;; traverse them at the right time.
|
||||
;;
|
||||
;; Once again, return nil to stay in the loop.
|
||||
((not (member fn-lbl seen-refs))
|
||||
(push fn-lbl seen-refs)
|
||||
(funcall search-ref
|
||||
(org-export-get-footnote-definition fn info))
|
||||
nil))))
|
||||
;; Don't enter footnote definitions since it will happen
|
||||
;; when their first reference is found.
|
||||
info 'first-match 'footnote-definition)))))
|
||||
(catch 'exit (funcall search-ref (plist-get info :parse-tree)))))
|
||||
|
||||
|
||||
|
@ -2893,12 +2900,16 @@ This only applies to links without a description."
|
|||
(and (not (org-element-contents link))
|
||||
(let ((case-fold-search t)
|
||||
(rules (or rules org-export-default-inline-image-rule)))
|
||||
(some
|
||||
(lambda (rule)
|
||||
(and (string= (org-element-property :type link) (car rule))
|
||||
(string-match (cdr rule)
|
||||
(org-element-property :path link))))
|
||||
rules))))
|
||||
(catch 'exit
|
||||
(mapc
|
||||
(lambda (rule)
|
||||
(and (string= (org-element-property :type link) (car rule))
|
||||
(string-match (cdr rule)
|
||||
(org-element-property :path link))
|
||||
(throw 'exit t)))
|
||||
rules)
|
||||
;; Return nil if no rule matched.
|
||||
nil))))
|
||||
|
||||
(defun org-export-resolve-coderef (ref info)
|
||||
"Resolve a code reference REF.
|
||||
|
@ -3856,6 +3867,7 @@ BLOB is the element or object being considered. INFO is a plist
|
|||
used as a communication channel."
|
||||
(let* ((type (org-element-type blob))
|
||||
(end (org-element-property :end blob))
|
||||
walk-data ; for byte-compiler.
|
||||
(walk-data
|
||||
(lambda (data genealogy)
|
||||
;; Walk DATA, looking for BLOB. GENEALOGY is the list of
|
||||
|
|
Loading…
Reference in New Issue