Round 288: Cron ext, At ext, Systemd Timer ext, Anacron ext, Incron ext (20 commands)

ober

bccb9f4dacbf1a80ea33d8eec005e3b93d29f7a5

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 2ca9430..9fa4e60 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 288 — Cron ext, At ext, Systemd Timer ext, Anacron ext, Incron ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| cron-list | :orange_circle: | List crontab entries |
+| cron-add | :orange_circle: | Add cron job |
+| cron-remove | :orange_circle: | Remove cron job |
+| cron-edit | :orange_circle: | Edit crontab |
+| at-schedule | :orange_circle: | Schedule at job |
+| at-list | :orange_circle: | List pending at jobs |
+| at-remove | :orange_circle: | Remove at job |
+| at-view | :orange_circle: | View at job details |
+| systemd-timer-list | :orange_circle: | List systemd timers |
+| systemd-timer-create | :orange_circle: | Create systemd timer |
+| systemd-timer-enable | :orange_circle: | Enable systemd timer |
+| systemd-timer-disable | :orange_circle: | Disable systemd timer |
+| anacron-list | :orange_circle: | List anacron jobs |
+| anacron-run | :orange_circle: | Run pending anacron jobs |
+| anacron-config | :orange_circle: | View anacron config |
+| anacron-status | :orange_circle: | Show anacron status |
+| incron-list | :orange_circle: | List incron watches |
+| incron-add | :orange_circle: | Add incron watch |
+| incron-remove | :orange_circle: | Remove incron watch |
+| incron-status | :orange_circle: | Show incron status |
+
 ### Round 287 — ACL ext, Xattr ext, Chattr ext, Quota ext, Fstab ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index c4dcd94..38f8f07 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -22287,4 +22287,54 @@
 
 (def (cmd-fstab-check app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Fstab: checking syntax")))
\ No newline at end of file
+    (echo-message! echo "Fstab: checking syntax")))
+
+;;; Round 288 — Systemd Timer ext, Anacron ext, Incron ext (batch 2)
+
+(def (cmd-systemd-timer-enable app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Timer name: "
+      (lambda (name)
+        (echo-message! echo (str "Systemd: enabling timer " name))))))
+
+(def (cmd-systemd-timer-disable app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Timer name: "
+      (lambda (name)
+        (echo-message! echo (str "Systemd: disabling timer " name))))))
+
+(def (cmd-anacron-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Anacron: listing jobs")))
+
+(def (cmd-anacron-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Anacron: running pending jobs")))
+
+(def (cmd-anacron-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Anacron: viewing configuration")))
+
+(def (cmd-anacron-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Anacron: showing status")))
+
+(def (cmd-incron-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Incron: listing watches")))
+
+(def (cmd-incron-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Watch path: "
+      (lambda (path)
+        (echo-message! echo (str "Incron: adding watch on " path))))))
+
+(def (cmd-incron-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Watch: "
+      (lambda (watch)
+        (echo-message! echo (str "Incron: removing " watch))))))
+
+(def (cmd-incron-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Incron: showing status")))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index c91f7af..351f228 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -22950,3 +22950,57 @@
       (lambda (path)
         (echo-message! echo (str "Chmod: recursive on " path))))))
 
+;;; Round 288 — Cron ext, At ext, Systemd Timer ext (batch 1)
+
+(def (cmd-cron-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cron: listing crontab entries")))
+
+(def (cmd-cron-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Cron expression: "
+      (lambda (expr)
+        (echo-message! echo (str "Cron: adding " expr))))))
+
+(def (cmd-cron-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Job number: "
+      (lambda (num)
+        (echo-message! echo (str "Cron: removing job " num))))))
+
+(def (cmd-cron-edit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cron: editing crontab")))
+
+(def (cmd-at-schedule app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Time (e.g. 'now + 1 hour'): "
+      (lambda (time)
+        (echo-message! echo (str "At: scheduling for " time))))))
+
+(def (cmd-at-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "At: listing pending jobs")))
+
+(def (cmd-at-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Job ID: "
+      (lambda (id)
+        (echo-message! echo (str "At: removing job " id))))))
+
+(def (cmd-at-view app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Job ID: "
+      (lambda (id)
+        (echo-message! echo (str "At: viewing job " id))))))
+
+(def (cmd-systemd-timer-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Systemd: listing timers")))
+
+(def (cmd-systemd-timer-create app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Timer name: "
+      (lambda (name)
+        (echo-message! echo (str "Systemd: creating timer " name))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 911b6c9..d54ff71 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7465,4 +7465,25 @@
   (register-command! 'fstab-add cmd-fstab-add)
   (register-command! 'fstab-remove cmd-fstab-remove)
   (register-command! 'fstab-check cmd-fstab-check)
+  ;; Round 288
+  (register-command! 'cron-list cmd-cron-list)
+  (register-command! 'cron-add cmd-cron-add)
+  (register-command! 'cron-remove cmd-cron-remove)
+  (register-command! 'cron-edit cmd-cron-edit)
+  (register-command! 'at-schedule cmd-at-schedule)
+  (register-command! 'at-list cmd-at-list)
+  (register-command! 'at-remove cmd-at-remove)
+  (register-command! 'at-view cmd-at-view)
+  (register-command! 'systemd-timer-list cmd-systemd-timer-list)
+  (register-command! 'systemd-timer-create cmd-systemd-timer-create)
+  (register-command! 'systemd-timer-enable cmd-systemd-timer-enable)
+  (register-command! 'systemd-timer-disable cmd-systemd-timer-disable)
+  (register-command! 'anacron-list cmd-anacron-list)
+  (register-command! 'anacron-run cmd-anacron-run)
+  (register-command! 'anacron-config cmd-anacron-config)
+  (register-command! 'anacron-status cmd-anacron-status)
+  (register-command! 'incron-list cmd-incron-list)
+  (register-command! 'incron-add cmd-incron-add)
+  (register-command! 'incron-remove cmd-incron-remove)
+  (register-command! 'incron-status cmd-incron-status)
 )