]> git.eshelyaron.com Git - emacs.git/commitdiff
org-export-as: Do not update buffer settings when not modified
authorIhor Radchenko <yantar92@gmail.com>
Wed, 15 Jun 2022 17:03:18 +0000 (01:03 +0800)
committerEli Zaretskii <eliz@gnu.org>
Thu, 16 Jun 2022 07:53:16 +0000 (10:53 +0300)
* 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.

lisp/org/ox.el

index b431d71193e4c1b38f912c1c35c26e53351af673..a4512270c90195062f7e35b3d2e3496b0a26800a 100644 (file)
@@ -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