[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))
- [nongnu] elpa/org-drill 9ab44310d5 021/251: - New option: org-drill-hide-item-headings-p. If non-nil, item headings will be made, (continued)
- [nongnu] elpa/org-drill 9ab44310d5 021/251: - New option: org-drill-hide-item-headings-p. If non-nil, item headings will be made, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 17c34adec5 028/251: - At the end of a drill session, when re-presenting items that were failed, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 2be993c6ce 037/251: Don't warn about a high percentage of failed items when the number of tested, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 849be174b6 093/251: Added tag 2.4.10 for changeset 2d622b26469c, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 44289690b7 089/251: Added tag 2.4.9 for changeset 355c05642208, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill ddd9b056cd 106/251: Merge answer typing, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill a9d771052e 107/251: Fix matching of lock files, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 4d9bdb6836 115/251: Add org-learn, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 939f2a65b2 114/251: Enable cask testing, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 533a3a84ee 117/251: Add gitlab-ci.yml, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 54cde2dbf7 132/251: Move to eieio objects,
ELPA Syncer <=
- [nongnu] elpa/org-drill be851b9eb4 142/251: Refactor robot testing, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 1470bdb487 131/251: Remove org-drill-new-entries, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 50885fbeea 146/251: Refactor robot testing to allow multiple tests, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill c58cb90ff0 123/251: Update gitignore, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 644b0a5cbc 126/251: Remove org-learn as a separate package, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 9aa3e98ea0 130/251: Remove org-drill-start-time, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill b161277f82 156/251: Replace more non-namespaced commands, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 61fe47deb8 152/251: Replace drill-answer, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 02b507b839 151/251: Add leitner robot test and fix, ELPA Syncer, 2022/01/17
- [nongnu] elpa/org-drill 6533b73246 164/251: Support changing small sleep on command line, ELPA Syncer, 2022/01/17