Round 157: Add 20 Org-babel, Org-present, Org-tree-slide, Org-reveal, Org-download commands

ober

179ad353a8885f3301bad2bd01d0bd0552928737

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 64c8b1b..b4376f3 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 157 — Org-babel, Org-present, Org-tree-slide, Org-reveal, Org-download
+
+| Feature | Status | Notes |
+|---|---|---|
+| `org-babel-insert-header-arg` | :orange_circle: | Insert header argument |
+| `org-babel-view-src-block-info` | :orange_circle: | View source block info |
+| `org-babel-demarcate-block` | :orange_circle: | Demarcate/split block |
+| `org-babel-goto-named-src-block` | :orange_circle: | Go to named block |
+| `org-babel-goto-named-result` | :orange_circle: | Go to named result |
+| `org-present-beginning` | :orange_circle: | First slide |
+| `org-present-end` | :orange_circle: | Last slide |
+| `org-present-big` | :orange_circle: | Increase text size |
+| `org-present-small` | :orange_circle: | Decrease text size |
+| `org-tree-slide-mode` | :orange_circle: | Tree-slide presentation mode |
+| `org-tree-slide-move-next-tree` | :orange_circle: | Next tree/slide |
+| `org-tree-slide-move-previous-tree` | :orange_circle: | Previous tree/slide |
+| `org-tree-slide-content` | :orange_circle: | Content overview |
+| `org-tree-slide-play-with-timer` | :orange_circle: | Auto-play with timer |
+| `org-reveal-export-to-html` | :orange_circle: | Export to reveal.js |
+| `org-download-delete` | :orange_circle: | Delete downloaded file |
+| `org-download-rename-at-point` | :orange_circle: | Rename downloaded file |
+| `org-download-edit` | :orange_circle: | Edit image at point |
+| `org-download-enable` | :orange_circle: | Enable drag-and-drop |
+| `org-download-image` | :orange_circle: | Download image from URL |
+
 ### Round 156 — Popper, Shackle, Hydra, Transient Extended
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 173378a..e4d8498 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -16073,3 +16073,53 @@
     (echo-read-string echo "Set transient level: "
       (lambda (lvl)
         (echo-message! echo (str "Transient: set level to " lvl))))))
+
+;; ============================================================
+;; Round 157 — Org-tree-slide, Org-reveal, Org-download (batch 2)
+;; ============================================================
+
+(def (cmd-org-tree-slide-move-next-tree app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-tree-slide: moved to next tree")))
+
+(def (cmd-org-tree-slide-move-previous-tree app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-tree-slide: moved to previous tree")))
+
+(def (cmd-org-tree-slide-content app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-tree-slide: showing content overview")))
+
+(def (cmd-org-tree-slide-play-with-timer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Timer interval (seconds): "
+      (lambda (secs)
+        (echo-message! echo (str "Org-tree-slide: auto-play every " secs "s"))))))
+
+(def (cmd-org-reveal-export-to-html app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-reveal: exported to reveal.js HTML")))
+
+(def (cmd-org-download-delete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-download: deleted downloaded file at point")))
+
+(def (cmd-org-download-rename-at-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "New filename: "
+      (lambda (name)
+        (echo-message! echo (str "Org-download: renamed to " name))))))
+
+(def (cmd-org-download-edit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-download: editing image at point")))
+
+(def (cmd-org-download-enable app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-download: drag-and-drop enabled")))
+
+(def (cmd-org-download-image app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Image URL: "
+      (lambda (url)
+        (echo-message! echo (str "Org-download: downloading " url))))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index ee92328..f7d1163 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -16704,3 +16704,56 @@
 (def (cmd-hydra-zoom/body app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Hydra: zoom menu (+/-/0)")))
+
+;; ============================================================
+;; Round 157 — Org-babel, Org-present, Org-tree-slide (batch 1)
+;; ============================================================
+
+(def (cmd-org-babel-insert-header-arg app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Header arg: "
+      (lambda (arg)
+        (echo-message! echo (str "Org-babel: inserted header arg " arg))))))
+
+(def (cmd-org-babel-view-src-block-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-babel: showing source block info")))
+
+(def (cmd-org-babel-demarcate-block app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-babel: demarcated/split source block")))
+
+(def (cmd-org-babel-goto-named-src-block app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Go to named block: "
+      (lambda (name)
+        (echo-message! echo (str "Org-babel: jumped to block '" name "'"))))))
+
+(def (cmd-org-babel-goto-named-result app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Go to named result: "
+      (lambda (name)
+        (echo-message! echo (str "Org-babel: jumped to result '" name "'"))))))
+
+(def (cmd-org-present-beginning app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-present: jumped to first slide")))
+
+(def (cmd-org-present-end app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-present: jumped to last slide")))
+
+(def (cmd-org-present-big app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-present: increased text size")))
+
+(def (cmd-org-present-small app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org-present: decreased text size")))
+
+(def (cmd-org-tree-slide-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'org-tree-slide)
+    (if (mode-enabled? app 'org-tree-slide)
+      (echo-message! echo "Org-tree-slide mode enabled")
+      (echo-message! echo "Org-tree-slide mode disabled"))))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 0ae5b6f..3ba4c53 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -4730,4 +4730,25 @@
   (register-command! 'transient-suffix-put cmd-transient-suffix-put)
   (register-command! 'transient-toggle-level-limit cmd-transient-toggle-level-limit)
   (register-command! 'transient-set-level cmd-transient-set-level)
+  ;; Round 157
+  (register-command! 'org-babel-insert-header-arg cmd-org-babel-insert-header-arg)
+  (register-command! 'org-babel-view-src-block-info cmd-org-babel-view-src-block-info)
+  (register-command! 'org-babel-demarcate-block cmd-org-babel-demarcate-block)
+  (register-command! 'org-babel-goto-named-src-block cmd-org-babel-goto-named-src-block)
+  (register-command! 'org-babel-goto-named-result cmd-org-babel-goto-named-result)
+  (register-command! 'org-present-beginning cmd-org-present-beginning)
+  (register-command! 'org-present-end cmd-org-present-end)
+  (register-command! 'org-present-big cmd-org-present-big)
+  (register-command! 'org-present-small cmd-org-present-small)
+  (register-command! 'org-tree-slide-mode cmd-org-tree-slide-mode)
+  (register-command! 'org-tree-slide-move-next-tree cmd-org-tree-slide-move-next-tree)
+  (register-command! 'org-tree-slide-move-previous-tree cmd-org-tree-slide-move-previous-tree)
+  (register-command! 'org-tree-slide-content cmd-org-tree-slide-content)
+  (register-command! 'org-tree-slide-play-with-timer cmd-org-tree-slide-play-with-timer)
+  (register-command! 'org-reveal-export-to-html cmd-org-reveal-export-to-html)
+  (register-command! 'org-download-delete cmd-org-download-delete)
+  (register-command! 'org-download-rename-at-point cmd-org-download-rename-at-point)
+  (register-command! 'org-download-edit cmd-org-download-edit)
+  (register-command! 'org-download-enable cmd-org-download-enable)
+  (register-command! 'org-download-image cmd-org-download-image)
 )