[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.