Round 103: Add 20 org-mode advanced commands

ober

5f11cf2810d8ae7ef60b969c2f7d65fb4b4d2427

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index d3ab890..e461809 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -3539,6 +3539,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ielm-return | :orange_circle: | IELM newline or send |
 | ielm-clear-buffer | :orange_circle: | Clear IELM interaction buffer |
 
+### Round 103 — Org-mode Advanced (Babel, Tables, Attachments)
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| org-babel-detangle | :orange_circle: | Detangle source blocks back to org |
+| org-babel-tangle-file | :orange_circle: | Tangle a specific org file |
+| org-babel-load-file | :orange_circle: | Load and evaluate org file |
+| org-babel-sha1-hash | :orange_circle: | Compute SHA1 hash of source block |
+| org-babel-check-src-block | :orange_circle: | Check source block for errors |
+| org-babel-switch-to-session | :orange_circle: | Switch to babel session buffer |
+| org-babel-result-hide-all | :orange_circle: | Hide all babel results |
+| org-table-create-with-table-el | :orange_circle: | Create table.el table |
+| org-table-recalculate | :orange_circle: | Recalculate current table field |
+| org-table-recalculate-buffer-tables | :orange_circle: | Recalculate all tables in buffer |
+| org-table-transpose-table-at-point | :orange_circle: | Transpose table at point |
+| org-table-toggle-formula-debugger | :orange_circle: | Toggle formula debugger |
+| org-table-field-info | :orange_circle: | Show field info at point |
+| org-attach-attach | :orange_circle: | Attach file to org heading |
+| org-attach-open | :orange_circle: | Open attachment |
+| org-attach-reveal | :orange_circle: | Reveal attachment directory |
+| org-attach-sync | :orange_circle: | Synchronize attachments |
+| org-attach-delete-one | :orange_circle: | Delete one attachment |
+| org-attach-delete-all | :orange_circle: | Delete all attachments |
+| org-attach-set-directory | :orange_circle: | Set attachment directory |
+
 ---
 
 ## Recommended Development Roadmap
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 286251c..346672e 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -13462,3 +13462,54 @@
 (def (cmd-ielm-clear-buffer app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "IELM: cleared interaction buffer")))
+
+;;; ——— Round 103: Org-mode advanced (batch 2) ———
+
+(def (cmd-org-table-transpose-table-at-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Table: transposed table at point")))
+
+(def (cmd-org-table-toggle-formula-debugger app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'org-table-formula-debugger)
+    (if (mode-enabled? app 'org-table-formula-debugger)
+      (echo-message! echo "Org Table formula debugger enabled")
+      (echo-message! echo "Org Table formula debugger disabled"))))
+
+(def (cmd-org-table-field-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Table: showing field info at point")))
+
+(def (cmd-org-attach-attach app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Attach file: "
+      (lambda (file)
+        (echo-message! echo (str "Org Attach: attached " file))))))
+
+(def (cmd-org-attach-open app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Attach: opening attachment")))
+
+(def (cmd-org-attach-reveal app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Attach: revealing attachment directory")))
+
+(def (cmd-org-attach-sync app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Attach: synchronized attachments")))
+
+(def (cmd-org-attach-delete-one app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Delete attachment: "
+      (lambda (name)
+        (echo-message! echo (str "Org Attach: deleted " name))))))
+
+(def (cmd-org-attach-delete-all app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Attach: deleted all attachments")))
+
+(def (cmd-org-attach-set-directory app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Attachment directory: "
+      (lambda (dir)
+        (echo-message! echo (str "Org Attach: set directory to " dir))))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 27e4b4b..4b336ee 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -13995,3 +13995,51 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Edebug: bounced to current point and back")))
 
+;;; ——— Round 103: Org-mode advanced (batch 1) ———
+
+(def (cmd-org-babel-detangle app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Babel: detangling source blocks back to org file")))
+
+(def (cmd-org-babel-tangle-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Tangle file: "
+      (lambda (file)
+        (echo-message! echo (str "Org Babel: tangling " file))))))
+
+(def (cmd-org-babel-load-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Load org file: "
+      (lambda (file)
+        (echo-message! echo (str "Org Babel: loading " file))))))
+
+(def (cmd-org-babel-sha1-hash app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Babel: computed SHA1 hash of source block")))
+
+(def (cmd-org-babel-check-src-block app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Babel: checking source block for errors")))
+
+(def (cmd-org-babel-switch-to-session app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Babel: switching to session buffer")))
+
+(def (cmd-org-babel-result-hide-all app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Babel: hiding all results")))
+
+(def (cmd-org-table-create-with-table-el app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Table size (RxC): "
+      (lambda (size)
+        (echo-message! echo (str "Org: created table.el table " size))))))
+
+(def (cmd-org-table-recalculate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Table: recalculated current field")))
+
+(def (cmd-org-table-recalculate-buffer-tables app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Org Table: recalculated all tables in buffer")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index c3c70f4..88948ea 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -3596,4 +3596,25 @@
   (register-command! 'ielm-send-input cmd-ielm-send-input)
   (register-command! 'ielm-return cmd-ielm-return)
   (register-command! 'ielm-clear-buffer cmd-ielm-clear-buffer)
+  ;; Round 103: Org-mode advanced
+  (register-command! 'org-babel-detangle cmd-org-babel-detangle)
+  (register-command! 'org-babel-tangle-file cmd-org-babel-tangle-file)
+  (register-command! 'org-babel-load-file cmd-org-babel-load-file)
+  (register-command! 'org-babel-sha1-hash cmd-org-babel-sha1-hash)
+  (register-command! 'org-babel-check-src-block cmd-org-babel-check-src-block)
+  (register-command! 'org-babel-switch-to-session cmd-org-babel-switch-to-session)
+  (register-command! 'org-babel-result-hide-all cmd-org-babel-result-hide-all)
+  (register-command! 'org-table-create-with-table-el cmd-org-table-create-with-table-el)
+  (register-command! 'org-table-recalculate cmd-org-table-recalculate)
+  (register-command! 'org-table-recalculate-buffer-tables cmd-org-table-recalculate-buffer-tables)
+  (register-command! 'org-table-transpose-table-at-point cmd-org-table-transpose-table-at-point)
+  (register-command! 'org-table-toggle-formula-debugger cmd-org-table-toggle-formula-debugger)
+  (register-command! 'org-table-field-info cmd-org-table-field-info)
+  (register-command! 'org-attach-attach cmd-org-attach-attach)
+  (register-command! 'org-attach-open cmd-org-attach-open)
+  (register-command! 'org-attach-reveal cmd-org-attach-reveal)
+  (register-command! 'org-attach-sync cmd-org-attach-sync)
+  (register-command! 'org-attach-delete-one cmd-org-attach-delete-one)
+  (register-command! 'org-attach-delete-all cmd-org-attach-delete-all)
+  (register-command! 'org-attach-set-directory cmd-org-attach-set-directory)
 )