;;
;; ~ropmur-bicbus
;;

Find Inactive org-drill Items With org-mode's Agenda

emacs, org-mode

I use org-drill for spaced repetition. org-drill treats any element with the :drill: tag as a question. Any child nodes are the answer. It presents each question and conceals the answer until I've had a chance to remember it myself. Here's a sample card from my deck:

,* What is the Rule of 72?                                             :drill:
,** Answer
   An estimation of the time it takes double an amount with compound interest. Given interest rate n, 72/n yields the approximate number of years to double the amount.

Problem

When adding new cards, if I forget to add the :drill: tag, then I'll never see it during spaced repetition sessions.

Solution

I do weekly reviews with an org-mode agenda. So, I created a section in my review agenda:

(setq org-agenda-custom-commands
      (quote
       (("r" "Review"
         ( ;; ...
          (org-ql-block
           '(and (not (descendants))
                 (not (tags-all "drill")))
           ((org-agenda-files '("~/org/drill/"))
            (org-ql-block-header "Untagged drills"))))))))

org-ql makes this simple. Any element which has no children, and has not inherited the :drill: tag will show up during weekly reviews so that I can correct it.

Another nice hack here is (org-agenda-files '("~/org/drill/")). It had never occurred to me that I could specify different agenda files for different sections of the agenda!