<feed xmlns='http://www.w3.org/2005/Atom'>
<title>org-drill/tests/test-org-drill-queue-and-misc.el, branch main</title>
<subtitle>Spaced-repetition flashcards for Org Mode
</subtitle>
<id>https://git.cjennings.net/org-drill/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/org-drill/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/'/>
<updated>2026-05-28T01:47:35+00:00</updated>
<entry>
<title>refactor: thread card-state struct through the item-data round-trip</title>
<updated>2026-05-28T01:47:35+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-28T01:47:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=39d01b75ac679410821ce5e16c09ec6b7799f791'/>
<id>urn:sha1:39d01b75ac679410821ce5e16c09ec6b7799f791</id>
<content type='text'>
Second step of #147. get-item-data now returns an org-drill-card-state and store-item-data takes one, so the six recall fields move as named slots instead of a positional list. The three call sites (smart-reschedule, hypothetical-next-review-date, copy-scheduling-to-marker) read scheduler inputs through accessors and build a struct for the store, which removes the hand re-ordering between the get-shape and the store-shape.

Behavior is unchanged. The legacy LEARN_DATA read path and the virgin-item sentinel are preserved field-for-field, and store takes just the struct because its last-interval slot already holds the interval to persist. The schedulers still take positional args; they adopt the struct in the following commits.

I updated the round-trip, integration, and setup-helper tests to build and read the struct via a small list-view helper, so the existing expected-value assertions stay readable.
</content>
</entry>
<entry>
<title>fix: scope cloze fontification to drill buffers via org-drill-mode</title>
<updated>2026-05-26T23:09:28+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-26T22:10:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=5c8d908a943470e3e4738c090cf8eaa1deee5a1f'/>
<id>urn:sha1:5c8d908a943470e3e4738c090cf8eaa1deee5a1f</id>
<content type='text'>
org-drill-add-cloze-fontification ran on org-font-lock-set-keywords-hook, which fires in every org buffer, and pushed the cloze rule into org's global org-font-lock-extra-keywords. The cloze regexp is built from the [ and ] delimiters, so an org priority cookie like [#A] matched the cloze pattern and got fontified as a cloze in every org buffer, colliding with org's headline fontification and stripping the heading's org-level-N face.

I replaced the global install with org-drill-mode, a buffer-local minor mode that adds the cloze keywords only to its own buffer via font-lock-add-keywords. org-drill-auto-enable-mode (default on) turns the mode on from org-mode-hook in buffers that hold drill cards, so existing drill files keep their cloze highlighting while plain org buffers stay clean. Highlighting still respects org-drill-use-visible-cloze-face-p.

The cloze regexp itself is unchanged, so the single-line cloze constraint from #38 is preserved.
</content>
</entry>
<entry>
<title>test: cover marker end-pos, variable-pitch restore, young/overdue queue branches</title>
<updated>2026-05-05T19:19:09+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T19:19:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=c159b236b8fe4dc0b2454475c2ca3f699e42ab07'/>
<id>urn:sha1:c159b236b8fe4dc0b2454475c2ca3f699e42ab07</id>
<content type='text'>
I extended three existing test files with cases that hit branches the
suite was missing: `org-drill--show-end-message' with a live-marker
end-pos (jumps to the marker), `org-drill--restore-display' for the
variable-pitch-on / variable-pitch-off / text-scale paths, and
`org-drill-pop-next-pending-entry' for the young-mature and overdue
branches in the queue priority cond.

Coverage moved from 87.0% to 87.8%.
</content>
</entry>
<entry>
<title>test: queue popping, fontification, ID creation, strip-all-data</title>
<updated>2026-05-05T09:26:36+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T09:26:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=0cc022912ad65a67ee89bca11ac035b1018d5ec9'/>
<id>urn:sha1:0cc022912ad65a67ee89bca11ac035b1018d5ec9</id>
<content type='text'>
12 ERT tests covering:

- org-drill-pop-next-pending-entry: empty session → nil, failed
  prioritized over new/old, again-entries fallback, max-item limit
  gates primary queues but again-entries bypasses
- org-drill-card-tag-caller: dispatches per-tag hook fn from alist,
  unknown tag is silent no-op (falls through to ignore)
- org-drill-id-get-create-with-warning: creates ID and flips
  warned-about-id-creation flag, doesn't re-warn (uses tempfile-
  backed buffer because org-id-get requires file-visiting)
- org-drill-add-cloze-fontification: sets buffer-local cloze-regexp
  and cloze-keywords from current delimiters
- org-drill-strip-all-data: yes-or-no-p gate (no-confirm = no-op,
  confirm = wipes scheduling props)
</content>
</entry>
</feed>
