branch: elpa/org-drill
commit 508f2dde21fbf5365e66adc5ba37cc1009f1f44e
Author: Phillip Lord <[email protected]>
Commit: Phillip Lord <[email protected]>

    Use persist
---
 Cask           |  4 ++--
 org-drill.el   | 24 ++++--------------------
 robot/robot.el | 27 ++++++++++++++++++++++++---
 3 files changed, 30 insertions(+), 25 deletions(-)

diff --git a/Cask b/Cask
index 64a9bd8b54..c77573eafc 100644
--- a/Cask
+++ b/Cask
@@ -4,7 +4,7 @@
 
 (package-file "org-drill.el")
 
-(depends-on "org" "9.2")
-
 (development
  (depends-on "assess"))
+(depends-on "org" "9.2")
+
diff --git a/org-drill.el b/org-drill.el
index 293d7f25b5..742ff540ba 100644
--- a/org-drill.el
+++ b/org-drill.el
@@ -5,7 +5,7 @@
 ;; Maintainer: Phillip Lord <[email protected]>
 ;; Author: Paul Sexton <[email protected]>
 ;; Version: 2.7
-;; Package-Requires: ((emacs "25.3") (seq "2.14") (org "9.2.4"))
+;; Package-Requires: ((emacs "25.3") (seq "2.14") (org "9.2.4") (persist 
"0.3"))
 ;; Keywords: games, outlines, multimedia
 
 ;; URL: https://gitlab.com/phillord/org-drill/issues
@@ -56,6 +56,7 @@
 (require 'org)
 (require 'org-agenda)
 (require 'org-id)
+(require 'persist)
 (require 'seq)
 
 (defgroup org-drill nil
@@ -408,7 +409,7 @@ matrix data is now stored in the variable
   :group 'org-drill
   :type 'sexp)
 
-(defvar org-drill-sm5-optimal-factor-matrix
+(persist-defvar org-drill-sm5-optimal-factor-matrix
   nil
   "DO NOT CHANGE THE VALUE OF THIS VARIABLE.
 
@@ -418,20 +419,6 @@ 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.")
 
-(defvar org-drill-persist-location
-  (concat user-emacs-directory "org-drill-sm5-optimal-factor-matrix"))
-
-(when (file-exists-p org-drill-persist-location)
-  (with-temp-buffer
-    (insert-file-contents org-drill-persist-location)
-    (setq org-drill-sm5-optimal-factor-matrix
-          (read (current-buffer)))))
-
-(defun org-drill-persist ()
-  (with-temp-buffer
-    (print org-drill-sm5-optimal-factor-matrix (current-buffer))
-    (write-region (point-min) (point-max) org-drill-persist-location
-                  nil 'quiet)))
 
 (defun org-drill--transfer-optimal-factor-matrix ()
   (if (and org-drill-optimal-factor-matrix
@@ -2928,7 +2915,7 @@ work correctly with older versions of org mode. Your org 
mode version (%s) appea
      (t
       (org-drill-final-report session)
       (if (eql 'sm5 org-drill-spaced-repetition-algorithm)
-          (org-drill-save-optimal-factor-matrix))
+          (persist-save 'org-drill-sm5-optimal-factor-matrix))
       (if org-drill-save-buffers-after-drill-sessions-p
           (save-some-buffers))
       (message "Drill session finished!")
@@ -2936,9 +2923,6 @@ work correctly with older versions of org mode. Your org 
mode version (%s) appea
       (message nil)
       ))))
 
-(defun org-drill-save-optimal-factor-matrix ()
-  (org-drill-persist))
-
 (defun org-drill-cram (&optional scope drill-match)
   "Run an interactive drill session in 'cram mode'. In cram mode,
 all drill items are considered to be due for review, unless they
diff --git a/robot/robot.el b/robot/robot.el
index ef1f4c2af6..f7053b8632 100644
--- a/robot/robot.el
+++ b/robot/robot.el
@@ -35,9 +35,7 @@
       (set-buffer buffer)
       (write-region (point-min) (point-max)
                     (concat top-dir "robot/" file)
-                    nil 'dont-display-wrote-file-message
-                    ))))
-
+                    nil 'dont-display-wrote-file-message))))
 
 (add-hook 'debugger-mode-hook
           'robot-dump-in-a-bit)
@@ -69,3 +67,26 @@
              org-drill-cards-in-this-emacs n)
      'external-debugging-output)
     (kill-emacs -1)))
+
+;; Move the package-user-dir somewhere local
+(require 'package)
+(setq package-user-dir
+      (concat
+       default-directory
+       "elpa"))
+
+(package-initialize)
+
+;; Borrowed from use-package
+(defun robot-ensure-elpa (package &optional no-refresh)
+  (if (package-installed-p package)
+      t
+    (if (and (not no-refresh))
+        (package-read-all-archive-contents))
+    (if (or (assoc package package-archive-contents) no-refresh)
+        (package-install package)
+      (progn
+        (package-refresh-contents)
+        (robot-ensure-elpa package t)))))
+
+(robot-ensure-elpa 'persist)

Reply via email to