diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-27 21:40:43 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-27 21:40:43 -0500 |
| commit | a2a7471f88a8c0f5c710d5ffb90511fc54b432d7 (patch) | |
| tree | ff48348c21808986e5d196a68246781329c6dda8 /org-drill.el | |
| parent | 6e3f2d278d9598c6838428ee510445f51888bb30 (diff) | |
| download | org-drill-a2a7471f88a8c0f5c710d5ffb90511fc54b432d7.tar.gz org-drill-a2a7471f88a8c0f5c710d5ffb90511fc54b432d7.zip | |
refactor: take card-state in org-drill-determine-next-interval-sm5
Stage 4 of #147. sm5 now takes (state quality of-matrix &optional delta-days) instead of nine positional args, binding the recall fields from the struct at the top so the algorithm body is unchanged. Both call-site branches pass the state they already hold, dropping the per-branch accessor unpacking.
The testutil adapter test-scheduler--call-sm5 keeps the sm5 test calls a one-symbol rename per site. I also kept the return as the existing list, matching the stage-3 refinement: the goal is reducing the input signature, and changing the return shape would force the shared return-extractors and every return-read to change for no real gain.
Also folds in two stage-3 follow-ons I missed when sm2 landed: a direct sm5 call in tests/test-org-drill-small-branch-coverage.el now uses the new struct API inline, and five direct sm2 calls in the simple-workflow integration test now go through the testutil adapter (the integration file picks up the testutil-scheduler require). Caught by running make test-integration this stage, which I should have run on the sm2 stage.
Diffstat (limited to 'org-drill.el')
| -rw-r--r-- | org-drill.el | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/org-drill.el b/org-drill.el index 7046ade..d772657 100644 --- a/org-drill.el +++ b/org-drill.el @@ -1334,10 +1334,18 @@ Returns a list: of (* of last-interval)))) -(defun org-drill-determine-next-interval-sm5 (last-interval n ef quality - failures meanq total-repeats - of-matrix &optional delta-days) - "Return next interval." +(defun org-drill-determine-next-interval-sm5 (state quality of-matrix &optional delta-days) + "Return the SM5 schedule for STATE after a review of recall QUALITY (0-5). + +STATE is an `org-drill-card-state'. OF-MATRIX is the optimal-factor +matrix. DELTA-DAYS, when set, adjusts the interval for an early or late +repetition." + (let ((last-interval (org-drill-card-state-last-interval state)) + (n (org-drill-card-state-repetitions state)) + (ef (org-drill-card-state-ease state)) + (failures (org-drill-card-state-failures state)) + (meanq (org-drill-card-state-meanq state)) + (total-repeats (org-drill-card-state-total-repeats state))) (if (zerop n) (setq n 1)) (if (null ef) (setq ef 2.5)) (cl-assert (> n 0)) @@ -1384,7 +1392,7 @@ Returns a list: failures meanq (1+ total-repeats) - of-matrix))))) + of-matrix)))))) ;;; Simple8 Algorithm ========================================================= (defun org-drill-simple8-first-interval (failures) @@ -1518,13 +1526,7 @@ item will be scheduled exactly this many days into the future." failures meanq total-repeats &optional new-ofmatrix) (cl-case org-drill-spaced-repetition-algorithm - (sm5 (org-drill-determine-next-interval-sm5 - (org-drill-card-state-last-interval state) - (org-drill-card-state-repetitions state) - (org-drill-card-state-ease state) quality - (org-drill-card-state-failures state) - (org-drill-card-state-meanq state) - (org-drill-card-state-total-repeats state) ofmatrix)) + (sm5 (org-drill-determine-next-interval-sm5 state quality ofmatrix)) (sm2 (org-drill-determine-next-interval-sm2 state quality)) (simple8 (org-drill-determine-next-interval-simple8 (org-drill-card-state-last-interval state) @@ -1582,13 +1584,7 @@ of QUALITY." &optional _ofmatrix) (cl-case org-drill-spaced-repetition-algorithm (sm5 (org-drill-determine-next-interval-sm5 - (org-drill-card-state-last-interval state) - (org-drill-card-state-repetitions state) - (org-drill-card-state-ease state) quality - (org-drill-card-state-failures state) - (org-drill-card-state-meanq state) - (org-drill-card-state-total-repeats state) - org-drill-sm5-optimal-factor-matrix)) + state quality org-drill-sm5-optimal-factor-matrix)) (sm2 (org-drill-determine-next-interval-sm2 state quality)) (simple8 (org-drill-determine-next-interval-simple8 (org-drill-card-state-last-interval state) |
