Browse Source

org-element-cache-reset: Never use cache persistence in non-file buffers

* lisp/org-element.el (org-element-cache-reset): Disable cache
persistence in non-file buffers.  In particular, do not try to restore
cache for temporary buffers based on their contents hash.

Reported-by: Rudolf Adamkovič <salutis@me.com>
Link: https://list.orgmode.org/m2zgef774u.fsf@me.com/T/#t
Ihor Radchenko 2 years ago
parent
commit
5a167f6ef2
1 changed files with 11 additions and 9 deletions
  1. 11 9
      lisp/org-element.el

+ 11 - 9
lisp/org-element.el

@@ -7246,15 +7246,17 @@ buffers."
   (dolist (buffer (if all (buffer-list) (list (current-buffer))))
     (with-current-buffer (or (buffer-base-buffer buffer) buffer)
       (when (and org-element-use-cache (derived-mode-p 'org-mode))
-        (when (not org-element-cache-persistent)
-          (org-persist-unregister 'org-element--headline-cache (current-buffer))
-          (org-persist-unregister 'org-element--cache (current-buffer)))
-        (when (and org-element-cache-persistent
-                   (buffer-file-name (current-buffer)))
-          (org-persist-register 'org-element--cache (current-buffer))
-          (org-persist-register 'org-element--headline-cache
-                                (current-buffer)
-                                :inherit 'org-element--cache))
+        ;; Only persist cache in file buffers.
+        (when (buffer-file-name)
+          (when (not org-element-cache-persistent)
+            (org-persist-unregister 'org-element--headline-cache (current-buffer))
+            (org-persist-unregister 'org-element--cache (current-buffer)))
+          (when (and org-element-cache-persistent
+                     (buffer-file-name (current-buffer)))
+            (org-persist-register 'org-element--cache (current-buffer))
+            (org-persist-register 'org-element--headline-cache
+                                  (current-buffer)
+                                  :inherit 'org-element--cache)))
         (setq-local org-element--cache-change-tic (buffer-chars-modified-tick))
         (setq-local org-element--cache-last-buffer-size (buffer-size))
         (setq-local org-element--cache-gapless nil)