aboutsummaryrefslogtreecommitdiff
path: root/org-drill.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-05 05:18:59 -0500
committerCraig Jennings <c@cjennings.net>2026-05-05 05:18:59 -0500
commit7f7564612628d31718c2fc1e4471ab7fa29ef3c1 (patch)
treea1847e743b1c00cb0984eee39cf4d86aadb6c6d4 /org-drill.el
parentf5d67d7a0a48cd68d7f443ca475c0c7bc59a8468 (diff)
downloadorg-drill-7f7564612628d31718c2fc1e4471ab7fa29ef3c1.tar.gz
org-drill-7f7564612628d31718c2fc1e4471ab7fa29ef3c1.zip
fix: recover from corrupted persist file at package load (upstream #45)
Issue #45 (2021): persist-load raised End of file during parsing at persist.el:413 in some configurations, likely from a corrupted persist data file. Pre-fix, this propagated up through the top-level (persist-defvar org-drill-sm5-optimal-factor-matrix ...) form at file-load time and broke the entire package's load. Wrapped the persist-defvar form in condition-case. On failure, the matrix falls back to a fresh nil binding via plain defvar, and a message tells the user what happened. org-drill continues to load normally.
Diffstat (limited to 'org-drill.el')
-rw-r--r--org-drill.el17
1 files changed, 14 insertions, 3 deletions
diff --git a/org-drill.el b/org-drill.el
index 0de606c..489215a 100644
--- a/org-drill.el
+++ b/org-drill.el
@@ -401,15 +401,26 @@ Available choices are:
:group 'org-drill
:type '(choice (const sm2) (const sm5) (const simple8)))
-(persist-defvar org-drill-sm5-optimal-factor-matrix
- nil
- "DO NOT CHANGE THE VALUE OF THIS VARIABLE.
+;; Wrap `persist-defvar' in `condition-case' so a corrupted persist
+;; file (upstream issue #45 — "End of file during parsing" raised from
+;; deep inside the persist package) doesn't prevent org-drill from
+;; loading. Fall back to a fresh nil matrix when persist-load fails.
+(condition-case err
+ (persist-defvar org-drill-sm5-optimal-factor-matrix
+ nil
+ "DO NOT CHANGE THE VALUE OF THIS VARIABLE.
Persistent matrix of optimal factors, used by the SuperMemo SM5
algorithm. The matrix is saved at the end of each drill session.
Over time, values in the matrix will adapt to the individual user's
pace of learning.")
+ (error
+ (message
+ "org-drill: failed to load persisted SM5 matrix (%s); using fresh state"
+ err)
+ (defvar org-drill-sm5-optimal-factor-matrix nil
+ "Persistent matrix of optimal factors (fallback after load failure).")))
(defcustom org-drill-sm5-initial-interval
4.0