org-export-data: Concatenate strings in temporary buffer for performance
* lisp/ox.el (org-export-data): Use temporary buffer to collect export data instead of `mapconcat'. Using buffer puts less load on garbage collector.
This commit is contained in:
parent
3684c79672
commit
a158b263a6
50
lisp/ox.el
50
lisp/ox.el
|
@ -1924,28 +1924,34 @@ Return a string."
|
|||
(and (not greaterp)
|
||||
(memq type org-element-recursive-objects)))
|
||||
(contents
|
||||
(mapconcat
|
||||
(lambda (element) (org-export-data element info))
|
||||
(org-element-contents
|
||||
(if (or greaterp objectp) data
|
||||
;; Elements directly containing
|
||||
;; objects must have their indentation
|
||||
;; normalized first.
|
||||
(org-element-normalize-contents
|
||||
data
|
||||
;; When normalizing first paragraph
|
||||
;; of an item or
|
||||
;; a footnote-definition, ignore
|
||||
;; first line's indentation.
|
||||
(and
|
||||
(eq type 'paragraph)
|
||||
(memq (org-element-type parent)
|
||||
'(footnote-definition item))
|
||||
(eq (car (org-element-contents parent))
|
||||
data)
|
||||
(eq (org-element-property :pre-blank parent)
|
||||
0)))))
|
||||
"")))
|
||||
(let ((export-buffer (current-buffer)))
|
||||
(with-temp-buffer
|
||||
(dolist (element (org-element-contents
|
||||
(if (or greaterp objectp) data
|
||||
;; Elements directly containing
|
||||
;; objects must have their indentation
|
||||
;; normalized first.
|
||||
(org-element-normalize-contents
|
||||
data
|
||||
;; When normalizing first paragraph
|
||||
;; of an item or
|
||||
;; a footnote-definition, ignore
|
||||
;; first line's indentation.
|
||||
(and
|
||||
(eq type 'paragraph)
|
||||
(memq (org-element-type parent)
|
||||
'(footnote-definition item))
|
||||
(eq (car (org-element-contents parent))
|
||||
data)
|
||||
(eq (org-element-property :pre-blank parent)
|
||||
0))))))
|
||||
(insert
|
||||
;; Use right local variable
|
||||
;; environment if there are, for
|
||||
;; example, #+BIND variables.
|
||||
(with-current-buffer export-buffer
|
||||
(org-export-data element info))))
|
||||
(buffer-string)))))
|
||||
(broken-link-handler
|
||||
(funcall transcoder data
|
||||
(if (not greaterp) contents
|
||||
|
|
Loading…
Reference in New Issue