[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org a158b263a6 3/8: org-export-data: Concatenate string
From: |
ELPA Syncer |
Subject: |
[elpa] externals/org a158b263a6 3/8: org-export-data: Concatenate strings in temporary buffer for performance |
Date: |
Thu, 16 Jun 2022 02:02:36 -0400 (EDT) |
branch: externals/org
commit a158b263a69c89ff74536163d69b12117316b034
Author: Ihor Radchenko <yantar92@gmail.com>
Commit: Ihor Radchenko <yantar92@gmail.com>
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.
---
lisp/ox.el | 50 ++++++++++++++++++++++++++++----------------------
1 file changed, 28 insertions(+), 22 deletions(-)
diff --git a/lisp/ox.el b/lisp/ox.el
index c47f768b78..3362f2c714 100644
--- a/lisp/ox.el
+++ b/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
- [elpa] externals/org updated (aa789b89d7 -> 3bbbf77f36), ELPA Syncer, 2022/06/16
- [elpa] externals/org 8f59e8d93f 7/8: Fix native-comp warnings, ELPA Syncer, 2022/06/16
- [elpa] externals/org e273fa96e5 6/8: Fix function declarations, ELPA Syncer, 2022/06/16
- [elpa] externals/org b061e7b61c 5/8: org-cite-list-citations: Cache footnote-definition searches, ELPA Syncer, 2022/06/16
- [elpa] externals/org 3bbbf77f36 8/8: org-babel-exp-process-buffer: Improve performance, ELPA Syncer, 2022/06/16
- [elpa] externals/org a158b263a6 3/8: org-export-data: Concatenate strings in temporary buffer for performance,
ELPA Syncer <=
- [elpa] externals/org 37a447ae08 4/8: org-element-map: Avoid repetitive `plist-get' call, ELPA Syncer, 2022/06/16
- [elpa] externals/org 3684c79672 2/8: doc/Makefile: Disable GC during export, ELPA Syncer, 2022/06/16
- [elpa] externals/org 076dd92acc 1/8: org-export-as: Do not update buffer settings when not modified, ELPA Syncer, 2022/06/16