Round 94: Add org drill, flashcards, dailies, and journal features

ober

c1db534a28d175d6c8f3fc6b38f1f531f47bec7d

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 7d01154..b47650d 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -3306,6 +3306,33 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 
 ---
 
+### Round 94 — Org Drill, Flashcards, Dailies & Journal
+
+| Emacs Command | Status | Description |
+|---|---|---|
+| org-drill | :orange_circle: | Start org drill review session |
+| org-drill-cram | :orange_circle: | Org drill cram mode |
+| org-drill-resume | :orange_circle: | Resume org drill session |
+| org-fc-review | :orange_circle: | Start flashcard review |
+| org-fc-type-normal-init | :orange_circle: | Initialize normal flashcard |
+| org-fc-dashboard | :orange_circle: | Open flashcard dashboard |
+| org-fc-suspend-card | :orange_circle: | Suspend flashcard |
+| org-fc-unsuspend-card | :orange_circle: | Unsuspend flashcard |
+| org-anki-sync | :orange_circle: | Sync with Anki |
+| org-anki-delete-all | :orange_circle: | Delete all synced Anki notes |
+| org-roam-dailies-capture-today | :orange_circle: | Capture today's daily note |
+| org-roam-dailies-goto-today | :orange_circle: | Go to today's daily note |
+| org-roam-dailies-goto-yesterday | :orange_circle: | Go to yesterday's daily note |
+| org-roam-dailies-goto-tomorrow | :orange_circle: | Go to tomorrow's daily note |
+| org-roam-dailies-goto-date | :orange_circle: | Go to daily note by date |
+| org-roam-dailies-capture-date | :orange_circle: | Capture daily note for date |
+| org-journal-new-entry | :orange_circle: | Create new journal entry |
+| org-journal-open-current | :orange_circle: | Open current journal |
+| org-journal-search | :orange_circle: | Search journal entries |
+| org-journal-list | :orange_circle: | List all journal entries |
+
+---
+
 ## Recommended Development Roadmap
 
 > *Reprioritized based on the user's actual Emacs workflow*
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 4e48bee..6049ff5 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -13038,3 +13038,50 @@
 (def (cmd-tramp-set-connection-local-variables app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "TRAMP: connection-local variables set")))
+
+;;; Round 94 — Org Roam Dailies & Journal (cont.)
+(def (cmd-org-roam-dailies-capture-today app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Roam Dailies: capturing today's note")))
+
+(def (cmd-org-roam-dailies-goto-today app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Roam Dailies: opening today's note")))
+
+(def (cmd-org-roam-dailies-goto-yesterday app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Roam Dailies: opening yesterday's note")))
+
+(def (cmd-org-roam-dailies-goto-tomorrow app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Roam Dailies: opening tomorrow's note")))
+
+(def (cmd-org-roam-dailies-goto-date app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Go to daily note for date: "
+      (lambda (date)
+        (echo-message! echo (str "Org Roam Dailies: opening note for " date))))))
+
+(def (cmd-org-roam-dailies-capture-date app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Capture daily for date: "
+      (lambda (date)
+        (echo-message! echo (str "Org Roam Dailies: capturing for " date))))))
+
+(def (cmd-org-journal-new-entry app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Journal: new entry created")))
+
+(def (cmd-org-journal-open-current app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Journal: opening current journal")))
+
+(def (cmd-org-journal-search app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Search journal for: "
+      (lambda (query)
+        (echo-message! echo (str "Org Journal: searching for '" query "'"))))))
+
+(def (cmd-org-journal-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Journal: listing all entries")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 055251a..ec7e96e 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -13579,3 +13579,44 @@
       (echo-message! echo "Rsync mode enabled")
       (echo-message! echo "Rsync mode disabled"))))
 
+;;; Round 94 — Org Drill, Flashcards, Dailies & Journal
+(def (cmd-org-drill app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Drill: starting review session")))
+
+(def (cmd-org-drill-cram app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Drill: cram mode started")))
+
+(def (cmd-org-drill-resume app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Drill: resuming previous session")))
+
+(def (cmd-org-fc-review app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org FC: starting flashcard review")))
+
+(def (cmd-org-fc-type-normal-init app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org FC: initialized normal flashcard at point")))
+
+(def (cmd-org-fc-dashboard app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org FC: dashboard opened")))
+
+(def (cmd-org-fc-suspend-card app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org FC: card suspended")))
+
+(def (cmd-org-fc-unsuspend-card app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org FC: card unsuspended")))
+
+(def (cmd-org-anki-sync app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Anki: syncing with Anki")))
+
+(def (cmd-org-anki-delete-all app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Anki: all synced notes deleted")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index e8e32d1..ed9817a 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -3407,4 +3407,25 @@
   (register-command! 'tramp-list-remote-buffers cmd-tramp-list-remote-buffers)
   (register-command! 'tramp-toggle-read-only cmd-tramp-toggle-read-only)
   (register-command! 'tramp-set-connection-local-variables cmd-tramp-set-connection-local-variables)
+  ;; Round 94
+  (register-command! 'org-drill cmd-org-drill)
+  (register-command! 'org-drill-cram cmd-org-drill-cram)
+  (register-command! 'org-drill-resume cmd-org-drill-resume)
+  (register-command! 'org-fc-review cmd-org-fc-review)
+  (register-command! 'org-fc-type-normal-init cmd-org-fc-type-normal-init)
+  (register-command! 'org-fc-dashboard cmd-org-fc-dashboard)
+  (register-command! 'org-fc-suspend-card cmd-org-fc-suspend-card)
+  (register-command! 'org-fc-unsuspend-card cmd-org-fc-unsuspend-card)
+  (register-command! 'org-anki-sync cmd-org-anki-sync)
+  (register-command! 'org-anki-delete-all cmd-org-anki-delete-all)
+  (register-command! 'org-roam-dailies-capture-today cmd-org-roam-dailies-capture-today)
+  (register-command! 'org-roam-dailies-goto-today cmd-org-roam-dailies-goto-today)
+  (register-command! 'org-roam-dailies-goto-yesterday cmd-org-roam-dailies-goto-yesterday)
+  (register-command! 'org-roam-dailies-goto-tomorrow cmd-org-roam-dailies-goto-tomorrow)
+  (register-command! 'org-roam-dailies-goto-date cmd-org-roam-dailies-goto-date)
+  (register-command! 'org-roam-dailies-capture-date cmd-org-roam-dailies-capture-date)
+  (register-command! 'org-journal-new-entry cmd-org-journal-new-entry)
+  (register-command! 'org-journal-open-current cmd-org-journal-open-current)
+  (register-command! 'org-journal-search cmd-org-journal-search)
+  (register-command! 'org-journal-list cmd-org-journal-list)
 )