From 91b9e5fd17fbb756621be9e83977a48dfc69123c Mon Sep 17 00:00:00 2001 From: Brandon Webster Date: Sun, 5 Apr 2020 10:35:38 -0700 Subject: Allow Creating New Session in Cram Mode A current session does not exist when `org-drill-cram` is called, so it's current behavior of toggling the `crame-mode` property doesn't seem to do anything. This change allows it to inform `org-drill` to create a new session in "cram mode." I'm not sure if this is the proper way to impliment this relative to the rest of the codebase, which I'm still a little unfamiliar with. But I thought this pr would still be useful, if only to create discussion. --- org-drill.el | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/org-drill.el b/org-drill.el index 8ae749a..d4e5dce 100644 --- a/org-drill.el +++ b/org-drill.el @@ -2855,7 +2855,7 @@ STATUS is one of the following values: (setf (oref session warned-about-id-creation) t)) (org-id-get-create)) -(defun org-drill (&optional scope drill-match resume-p) +(defun org-drill (&optional scope drill-match resume-p cram) "Begin an interactive 'drill session'. The user is asked to review a series of topics (headers). Each topic is initially presented as a 'question', often with part of the topic content @@ -2888,7 +2888,10 @@ todo query. Only items matching the query will be considered. It accepts the same values as `org-drill-match', which see. If RESUME-P is non-nil, resume a suspended drill session rather -than starting a new one." +than starting a new one. + +CRAM, if non-nil, will start a new session in cram mode. If +resuming a suspended session, this parameter is ignored." (interactive) ;; Check org version. Org 7.9.3f introduced a backwards-incompatible change @@ -2909,7 +2912,8 @@ work correctly with older versions of org mode. Your org mode version (%s) appea (cl-block org-drill (unless resume-p (org-drill-free-markers session t) - (setf (oref session current-item) nil + (setf (oref session cram-mode) cram + (oref session current-item) nil (oref session done-entries) nil (oref session dormant-entry-count) 0 (oref session due-entry-count) 0 @@ -2980,8 +2984,7 @@ all drill items are considered to be due for review, unless they have been reviewed within the last `org-drill-cram-hours' hours." (interactive) - (setq (oref session cram-mode) t) - (org-drill scope drill-match)) + (org-drill scope drill-match nil t)) (defun org-drill-cram-tree () "Run an interactive drill session in 'cram mode' using subtree at point. -- cgit v1.2.3