aboutsummaryrefslogtreecommitdiff
path: root/org-drill.el
diff options
context:
space:
mode:
Diffstat (limited to 'org-drill.el')
-rwxr-xr-x[-rw-r--r--]org-drill.el48
1 files changed, 34 insertions, 14 deletions
diff --git a/org-drill.el b/org-drill.el
index a467bc6..93c37e3 100644..100755
--- a/org-drill.el
+++ b/org-drill.el
@@ -2,7 +2,7 @@
;;; org-drill.el - Self-testing using spaced repetition
;;;
;;; Author: Paul Sexton <eeeickythump@gmail.com>
-;;; Version: 2.4.2
+;;; Version: 2.4.3
;;; Repository at http://bitbucket.org/eeeickythump/org-drill/
;;;
;;;
@@ -1343,8 +1343,9 @@ How well did you do? (0-5, ?=help, e=edit, t=tags, q=quit)"
(failures (org-drill-entry-failure-count)))
(unless *org-drill-cram-mode*
(save-excursion
- (org-drill-smart-reschedule quality
- (nth quality next-review-dates)))
+ (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*)
(cond
((<= quality org-drill-failure-quality)
@@ -1548,12 +1549,15 @@ visual overlay, or with the string TEXT if it is supplied."
(defun org-drill-hide-clozed-text ()
(save-excursion
(while (re-search-forward org-drill-cloze-regexp nil t)
- ;; Don't hide org links, partly because they might contain inline
- ;; images which we want to keep visible.
- ;; And don't hide LaTeX math fragments.
+ ;; Don't hide:
+ ;; - org links, partly because they might contain inline
+ ;; images which we want to keep visible.
+ ;; - LaTeX math fragments
+ ;; - the contents of SRC blocks
(unless (save-match-data
(or (org-pos-in-regexp (match-beginning 0)
org-bracket-link-regexp 1)
+ (org-in-src-block-p)
(org-inside-LaTeX-fragment-p)))
(org-drill-hide-matched-cloze-text)))))
@@ -1755,7 +1759,9 @@ Note: does not actually alter the item."
(defun org-drill--show-latex-fragments ()
(org-remove-latex-fragment-image-overlays)
- (org-toggle-latex-fragment '(4)))
+ (if (fboundp 'org-toggle-latex-fragment)
+ (org-toggle-latex-fragment '(4))
+ (org-preview-latex-fragment '(4))))
(defun org-drill-present-two-sided-card ()
@@ -2402,12 +2408,11 @@ all the markers used by Org-Drill will be freed."
;;; if (age a) <= 60 and (age b) <= 60, sort by due
;;; else sort by age
-
(defun org-drill-order-overdue-entries (overdue-data)
(let* ((lapsed-days 60)
- (not-lapsed (remove-if (lambda (a) (> (or (third a) 0) lapsed-days))
+ (not-lapsed (remove-if (lambda (a) (> (or (second a) 0) lapsed-days))
overdue-data))
- (lapsed (remove-if-not (lambda (a) (> (or (third a) 0)
+ (lapsed (remove-if-not (lambda (a) (> (or (second a) 0)
lapsed-days)) overdue-data)))
(setq *org-drill-overdue-entries*
(mapcar 'first
@@ -2418,10 +2423,25 @@ all the markers used by Org-Drill will be freed."
(lambda (a b) (> (third a) (third b)))))))))
-(defun org-drill-entry-days-since-creation ()
+(defun org-drill--entry-lapsed-p ()
+ (let ((lapsed-days 60))
+ (> (or (org-drill-entry-days-overdue) 0) lapsed-days)))
+
+
+
+
+(defun org-drill-entry-days-since-creation (&optional use-last-interval-p)
+ "If USE-LAST-INTERVAL-P is non-nil, and DATE_ADDED is missing, use the
+value of DRILL_LAST_INTERVAL instead (as the item's age must be at least
+that many days)."
(let ((timestamp (org-entry-get (point) "DATE_ADDED")))
- (if timestamp
- (- (org-time-stamp-to-now timestamp)))))
+ (cond
+ (timestamp
+ (- (org-time-stamp-to-now timestamp)))
+ (use-last-interval-p
+ (+ (org-drill-entry-days-overdue)
+ (read (or (org-entry-get (point) "DRILL_LAST_INTERVAL") "0"))))
+ (t nil))))
(defun org-drill-entry-status ()
@@ -2442,7 +2462,7 @@ STATUS is one of the following values:
(unless (org-at-heading-p)
(org-back-to-heading))
(let ((due (org-drill-entry-days-overdue))
- (age (org-drill-entry-days-since-creation))
+ (age (org-drill-entry-days-since-creation t))
(last-int (org-drill-entry-last-interval 1)))
(list
(cond