emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org 7219b006bd 3/3: org-element: Fix loading obsolete p


From: ELPA Syncer
Subject: [elpa] externals/org 7219b006bd 3/3: org-element: Fix loading obsolete persistent caches
Date: Mon, 21 Aug 2023 06:58:18 -0400 (EDT)

branch: externals/org
commit 7219b006bd7ea67265d91e1d27a4addeaf4ff5e7
Author: Ihor Radchenko <yantar92@posteo.net>
Commit: Ihor Radchenko <yantar92@posteo.net>

    org-element: Fix loading obsolete persistent caches
    
    * lisp/org-element.el (org-element-cache-version): New constant
    defining the current cache version.
    (org-element-cache-reset): Use the new variable.
    * lisp/org.el (org-mode): Assert loading the correct cache version.
    
    Reported-by: Gregor Zattler <telegraph@gmx.net>
    Link: https://orgmode.org/list/87350cvm3d.fsf@no.lan
---
 lisp/org-element.el | 9 +++++++--
 lisp/org.el         | 6 +++++-
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/lisp/org-element.el b/lisp/org-element.el
index b2c5b0402f..3597b9d271 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -5419,6 +5419,11 @@ indentation removed from its contents."
 (defvar org-element-cache-persistent t
   "Non-nil when cache should persist between Emacs sessions.")
 
+(defconst org-element-cache-version "2.1"
+  "Version number for Org AST structure.
+Used to avoid loading obsolete AST representation when using
+`org-element-cache-persistent'.")
+
 (defvar org-element-cache-sync-idle-time 0.6
   "Length, in seconds, of idle time before syncing cache.")
 
@@ -7426,12 +7431,12 @@ the cache persistence in the buffer."
           (when (and org-element-cache-persistent
                      (buffer-file-name (current-buffer)))
             (org-persist-register
-             '((elisp org-element--cache) (version "2.1"))
+             `((elisp org-element--cache) (version ,org-element-cache-version))
              (current-buffer))
             (org-persist-register
              'org-element--headline-cache
              (current-buffer)
-             :inherit '((elisp org-element--cache) (version "2.1")))))
+             :inherit `((elisp org-element--cache) (version 
,org-element-cache-version)))))
         (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)
diff --git a/lisp/org.el b/lisp/org.el
index 4079aaace9..e5df7cc825 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -4800,6 +4800,7 @@ This is for getting out of special buffers like capture.")
 ;; babel
 (require 'ob)
 
+(defvar org-element-cache-version); Defined in org-element.el
 (defvar org-element-cache-persistent); Defined in org-element.el
 (defvar org-element-use-cache); Defined in org-element.el
 (defvar org-mode-loading nil
@@ -4890,7 +4891,10 @@ The following commands are available:
   (org-element-cache-reset)
   (when (and org-element-cache-persistent
              org-element-use-cache)
-    (org-persist-load 'org-element--cache (current-buffer) 'match-hash 
:read-related t))
+    (org-persist-load
+     `((elisp org-element--cache) (version ,org-element-cache-version))
+     (current-buffer)
+     'match-hash :read-related t))
   ;; Initialize macros templates.
   (org-macro-initialize-templates)
   ;; Initialize radio targets.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]