diff options
author | Ihor Radchenko <yantar92@gmail.com> | 2022-06-16 01:03:18 +0800 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2022-06-16 10:53:16 +0300 |
commit | 0f7ceb4803cabcb3c406fa7c27ccb7625096058e (patch) | |
tree | ab60571c6ea92d157fa458f5335f7cf37b4899c7 /lisp/org | |
parent | d21412df06b99b551e67d39c097d95e8a284de73 (diff) | |
download | emacs-0f7ceb4803cabcb3c406fa7c27ccb7625096058e.tar.gz emacs-0f7ceb4803cabcb3c406fa7c27ccb7625096058e.tar.bz2 emacs-0f7ceb4803cabcb3c406fa7c27ccb7625096058e.zip |
org-export-as: Do not update buffer settings when not modified
* lisp/org/ox.el (org-export-as): Use `buffer-chars-modified-tick' and
avoid extra invocations of `org-set-regexps-and-options' and
`org-update-radio-target-regexp' when the buffer is not changed.
Also, disable folding checks. Folding is irrelevant inside export
buffer.
Diffstat (limited to 'lisp/org')
-rw-r--r-- | lisp/org/ox.el | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lisp/org/ox.el b/lisp/org/ox.el index b431d71193e..a4512270c90 100644 --- a/lisp/org/ox.el +++ b/lisp/org/ox.el @@ -2956,11 +2956,12 @@ Return code as a string." (mapcar (lambda (o) (and (eq (nth 4 o) 'parse) (nth 1 o))) (append (org-export-get-all-options backend) org-export-options-alist)))) - tree) + tree modified-tick) ;; Update communication channel and get parse tree. Buffer ;; isn't parsed directly. Instead, all buffer modifications ;; and consequent parsing are undertaken in a temporary copy. (org-export-with-buffer-copy + (font-lock-mode -1) ;; Run first hook with current back-end's name as argument. (run-hook-with-args 'org-export-before-processing-hook (org-export-backend-name backend)) @@ -2972,6 +2973,7 @@ Return code as a string." ;; potentially invasive changes. (org-set-regexps-and-options) (org-update-radio-target-regexp) + (setq modified-tick (buffer-chars-modified-tick)) ;; Possibly execute Babel code. Re-run a macro expansion ;; specifically for {{{results}}} since inline source blocks ;; may have generated some more. Refresh buffer properties @@ -2979,8 +2981,10 @@ Return code as a string." (when org-export-use-babel (org-babel-exp-process-buffer) (org-macro-replace-all '(("results" . "$1")) parsed-keywords) - (org-set-regexps-and-options) - (org-update-radio-target-regexp)) + (unless (eq modified-tick (buffer-chars-modified-tick)) + (org-set-regexps-and-options) + (org-update-radio-target-regexp)) + (setq modified-tick (buffer-chars-modified-tick))) ;; Run last hook with current back-end's name as argument. ;; Update buffer properties and radio targets one last time ;; before parsing. @@ -2988,8 +2992,10 @@ Return code as a string." (save-excursion (run-hook-with-args 'org-export-before-parsing-hook (org-export-backend-name backend))) - (org-set-regexps-and-options) - (org-update-radio-target-regexp) + (unless (eq modified-tick (buffer-chars-modified-tick)) + (org-set-regexps-and-options) + (org-update-radio-target-regexp)) + (setq modified-tick (buffer-chars-modified-tick)) ;; Update communication channel with environment. (setq info (org-combine-plists |