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

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

[nongnu] elpa/org-drill 54cde2dbf7 132/251: Move to eieio objects


From: ELPA Syncer
Subject: [nongnu] elpa/org-drill 54cde2dbf7 132/251: Move to eieio objects
Date: Mon, 17 Jan 2022 18:59:09 -0500 (EST)

branch: elpa/org-drill
commit 54cde2dbf7f6efff8f414267989f6a4c4a8a1256
Author: Phillip Lord <phillip.lord@russet.org.uk>
Commit: Phillip Lord <phillip.lord@russet.org.uk>

    Move to eieio objects
    
    defstruct does not allow documentation on slots and there are a lot of
    slots here.
---
 org-drill.el | 57 +++++++++++++++++++++++++++++++--------------------------
 1 file changed, 31 insertions(+), 26 deletions(-)

diff --git a/org-drill.el b/org-drill.el
index d04ecdbe83..026441e702 100644
--- a/org-drill.el
+++ b/org-drill.el
@@ -51,6 +51,7 @@
 ;;; Code:
 
 (eval-when-compile (require 'hi-lock))
+(require 'eieio)
 (require 'cl-lib)
 (require 'hi-lock)
 (require 'org)
@@ -600,11 +601,15 @@ to preserve the formatting in a displayed table, for 
example."
 
 (defvar-local org-drill-response-associated-buffer nil)
 
-(cl-defstruct org-drill-session
-  (qualities nil)
-  (start-time 0)
-  (new-entries nil)
-  )
+(defclass org-drill-session ()
+  ((qualities :initform nil)
+   (start-time :initform 0
+               :documentation "Time at which the session started"
+               )
+   (new-entries :initform nil)
+   )
+  :documentation "An org-drill session object carries data about
+  the current state of a particular org-drill session."  )
 
 (defvar org-drill-last-session nil)
 
@@ -1522,7 +1527,7 @@ of QUALITY."
             (let ((quality (if (org-drill--entry-lapsed-p) 2 quality)))
               (org-drill-smart-reschedule quality
                                           (nth quality next-review-dates))))
-          (push quality (org-drill-session-qualities session))
+          (push quality (oref session qualities))
           (cond
            ((<= quality org-drill-failure-quality)
             (when org-drill-leech-failure-threshold
@@ -1635,7 +1640,7 @@ the current topic."
              'face `(:foreground ,org-drill-mature-count-color)
              'help-echo "The number of old items due for review.")
             (propertize
-             (number-to-string (length (org-drill-session-new-entries 
session)))
+             (number-to-string (length (oref session new-entries)))
              'face `(:foreground ,org-drill-new-count-color)
              'help-echo (concat "The number of new items that you "
                                 "have never reviewed."))
@@ -2562,7 +2567,7 @@ See `org-drill' for more details."
       *org-drill-current-item*
       (and (not (org-drill-maximum-item-count-reached-p))
            (not (org-drill-maximum-duration-reached-p session))
-           (or (org-drill-session-new-entries session)
+           (or (oref session new-entries)
                *org-drill-failed-entries*
                *org-drill-young-mature-entries*
                *org-drill-old-mature-entries*
@@ -2571,7 +2576,7 @@ See `org-drill' for more details."
 
 (defun org-drill-pending-entry-count (session)
   (+ (if (markerp *org-drill-current-item*) 1 0)
-     (length (org-drill-session-new-entries session))
+     (length (oref session new-entries))
      (length *org-drill-failed-entries*)
      (length *org-drill-young-mature-entries*)
      (length *org-drill-old-mature-entries*)
@@ -2584,9 +2589,9 @@ See `org-drill' for more details."
 maximum duration."
   (and org-drill-maximum-duration
        (not *org-drill-cram-mode*)
-       (org-drill-session-start-time session)
+       (oref session start-time)
        (> (- (float-time (current-time))
-             (org-drill-session-start-time session))
+             (oref session start-time))
           (* org-drill-maximum-duration 60))))
 
 
@@ -2630,15 +2635,15 @@ maximum number of items."
            (pop-random *org-drill-young-mature-entries*))
           ;; Next priority is newly added items, and older entries.
           ;; We pool these into a single group.
-          ((and (or (org-drill-session-new-entries session)
+          ((and (or (oref session new-entries)
                     *org-drill-old-mature-entries*)
                 (not (org-drill-maximum-item-count-reached-p))
                 (not (org-drill-maximum-duration-reached-p session)))
            (cond
-            ((< (cl-random (+ (length (org-drill-session-new-entries session))
+            ((< (cl-random (+ (length (oref session new-entries))
                               (length *org-drill-old-mature-entries*)))
-                (length (org-drill-session-new-entries session)))
-             (pop-random (org-drill-session-new-entries session)))
+                (length (oref session new-entries)))
+             (pop-random (oref session new-entries)))
             (t
              (pop-random *org-drill-old-mature-entries*))))
           ;; After all the above are done, last priority is items
@@ -2709,7 +2714,7 @@ RESUMING-P is true if we are resuming a suspended drill 
session."
 
 
 (defun org-drill-final-report (session)
-  (let* ((qualities (org-drill-session-qualities session))
+  (let* ((qualities (oref session qualities))
          (pass-percent
           (round (* 100 (cl-count-if (lambda (qual)
                                        (> qual org-drill-failure-quality))
@@ -2732,7 +2737,7 @@ Session finished. Press a key to continue..."
            (length *org-drill-done-entries*)
            (format-seconds "%h:%.2m:%.2s"
                            (- (float-time (current-time))
-                              (org-drill-session-start-time session)))
+                              (oref session start-time)))
            (round (* 100 (cl-count 5 qualities))
                   (max 1 (length qualities)))
            (round (* 100 (cl-count 2 qualities))
@@ -2761,7 +2766,7 @@ Session finished. Press a key to continue..."
             'face `(:foreground ,org-drill-failed-count-color))
            (propertize
             (format "%d new"
-                    (length (org-drill-session-new-entries session)))
+                    (length (oref session new-entries)))
             'face `(:foreground ,org-drill-new-count-color))
            (propertize
             (format "%d young"
@@ -2806,7 +2811,7 @@ point nowhere). Alternatively, MARKERS can be 't', in 
which case
 all the markers used by Org-Drill will be freed."
   (dolist (m (if (eql t markers)
                  (append  *org-drill-done-entries*
-                          (org-drill-session-new-entries session)
+                          (oref session new-entries)
                           *org-drill-failed-entries*
                           *org-drill-again-entries*
                           *org-drill-overdue-entries*
@@ -2937,7 +2942,7 @@ STATUS is one of the following values:
 
 (defun org-map-drill-entry-function ()
   (org-drill-progress-message
-   (+ (length (org-drill-session-new-entries session))
+   (+ (length (oref session new-entries))
       (length *org-drill-overdue-entries*)
       (length *org-drill-young-mature-entries*)
       (length *org-drill-old-mature-entries*)
@@ -2958,7 +2963,7 @@ STATUS is one of the following values:
          (if (eq -1 due)
              (cl-incf *org-drill-due-tomorrow-count*)))
         (:new
-         (push (point-marker) (org-drill-session-new-entries session)))
+         (push (point-marker) (oref session new-entries)))
         (:failed
          (push (point-marker) *org-drill-failed-entries*))
         (:young
@@ -3029,7 +3034,7 @@ work correctly with older versions of org mode. Your org 
mode version (%s) appea
   (let ((session
          (if resume-p
              org-drill-last-session
-           (make-org-drill-session)))
+           (org-drill-session)))
         (end-pos nil)
         (overdue-data nil)
         (cnt 0))
@@ -3042,13 +3047,13 @@ work correctly with older versions of org mode. Your 
org mode version (%s) appea
               *org-drill-due-entry-count* 0
               *org-drill-due-tomorrow-count* 0
               *org-drill-overdue-entry-count* 0
-              (org-drill-session-new-entries session) nil
+              (oref session new-entries) nil
               *org-drill-overdue-entries* nil
               *org-drill-young-mature-entries* nil
               *org-drill-old-mature-entries* nil
               *org-drill-failed-entries* nil
               *org-drill-again-entries* nil
-              (org-drill-session-start-time session) (float-time 
(current-time))))
+              (oref session start-time) (float-time (current-time))))
       (setq *random-state* (cl-make-random-state t)) ; reseed RNG
       (unwind-protect
           (save-excursion
@@ -3065,7 +3070,7 @@ work correctly with older versions of org mode. Your org 
mode version (%s) appea
                   (org-drill-pending-entry-count session))
             (cond
              ((and (null *org-drill-current-item*)
-                   (null (org-drill-session-new-entries session))
+                   (null (oref session new-entries))
                    (null *org-drill-failed-entries*)
                    (null *org-drill-overdue-entries*)
                    (null *org-drill-young-mature-entries*)
@@ -3151,7 +3156,7 @@ scan will be performed."
       (org-drill-free-markers session *org-drill-done-entries*)
       (if (markerp *org-drill-current-item*)
           (free-marker *org-drill-current-item*))
-      (setf (org-drill-session-start-time session) (float-time (current-time)))
+      (setf (oref session start-time) (float-time (current-time)))
       (setq *org-drill-done-entries* nil
             *org-drill-current-item* nil)
       (org-drill scope drill-match t))



reply via email to

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