aboutsummaryrefslogtreecommitdiff
path: root/org-drill.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-05 05:29:05 -0500
committerCraig Jennings <c@cjennings.net>2026-05-05 05:29:05 -0500
commit718775cdf2baf7b6a2ed09edaa07d5684d47c4a9 (patch)
treec82a1a923ba003877df676370515bfc724e20f12 /org-drill.el
parentfd658b166a8dcf716c82cca28f370990a9df83af (diff)
downloadorg-drill-718775cdf2baf7b6a2ed09edaa07d5684d47c4a9.tar.gz
org-drill-718775cdf2baf7b6a2ed09edaa07d5684d47c4a9.zip
fix: keep cloze regex within a single line (upstream #38)
The inner match was [[:cntrl:][:graph:][:space:]]+?, which silently includes newline. A stray [ could match all the way to a ] several lines later, covering org headings in between with the visible-cloze face. Reporter saw lines 4 and 5 of test.org lose their org-level-N face and use default instead. Switched the inner class to [^\n]+?. Clozes now stay within a single line, which matches the design intent and stops the face bleed. Three new tests cover the regression.
Diffstat (limited to 'org-drill.el')
-rw-r--r--org-drill.el11
1 files changed, 9 insertions, 2 deletions
diff --git a/org-drill.el b/org-drill.el
index 6885791..b628695 100644
--- a/org-drill.el
+++ b/org-drill.el
@@ -231,10 +231,17 @@ Mature items are due for review, but are not new."
"Delimiter in cloze expression for hints.")
(defun org-drill--compute-cloze-regexp ()
- "Return a regexp that detects clozes."
+ "Return a regexp that detects clozes.
+
+The inner match is constrained to non-newline characters so a cloze
+stays within one line. An older version used
+`[[:cntrl:][:graph:][:space:]]' which silently included newline,
+letting a stray `[' match all the way to a `]' several lines later
+and bleeding the cloze face onto intervening org headings (upstream
+issue #38)."
(concat "\\("
(regexp-quote org-drill-left-cloze-delimiter)
- "[[:cntrl:][:graph:][:space:]]+?\\)\\(\\|"
+ "[^\n]+?\\)\\(\\|"
(regexp-quote org-drill-hint-separator)
".+?\\)\\("
(regexp-quote org-drill-right-cloze-delimiter)