Round 175: Notmuch, Mu4e-ext, Wanderlust, Gnus-ext commands

ober

ff66723d9a5a59a6a83ea85b30f681665e69f710

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 012e091..472bb8f 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 175 — Notmuch, Mu4e-ext, Wanderlust, Gnus-ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| notmuch-tree-from-search-thread | :orange_circle: | Tree view from search thread |
+| notmuch-jump-search | :orange_circle: | Jump to saved search |
+| notmuch-address-harvest | :orange_circle: | Harvest addresses from messages |
+| notmuch-draft-save | :orange_circle: | Save notmuch draft |
+| notmuch-draft-resume | :orange_circle: | Resume notmuch draft |
+| notmuch-poll | :orange_circle: | Poll for new mail |
+| notmuch-tag-undo | :orange_circle: | Undo last tag operation |
+| mu4e-compose-edit | :orange_circle: | Edit message as new |
+| mu4e-compose-resend | :orange_circle: | Resend message |
+| mu4e-headers-action | :orange_circle: | Perform action on headers |
+| wanderlust-goto-folder | :orange_circle: | Go to Wanderlust folder |
+| wanderlust-check-all | :orange_circle: | Check all folders for new mail |
+| wanderlust-draft-send | :orange_circle: | Send Wanderlust draft |
+| wanderlust-summary-mark-read | :orange_circle: | Mark message as read |
+| wanderlust-summary-refile | :orange_circle: | Refile message to folder |
+| wanderlust-summary-delete | :orange_circle: | Mark message for deletion |
+| gnus-group-catchup-current | :orange_circle: | Catch up current Gnus group |
+| gnus-group-catchup-all | :orange_circle: | Catch up all Gnus groups |
+| gnus-group-toggle-subscription | :orange_circle: | Toggle group subscription |
+| gnus-group-make-rss-group | :orange_circle: | Create RSS group |
+
 ### Round 174 — Elfeed, Pocket-reader, Wallabag, Nov.el
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 55d2bb7..8c834b2 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -16968,3 +16968,50 @@
 (def (cmd-nov-copy-url app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Nov: URL copied to clipboard")))
+
+;; Round 175 — Notmuch, Mu4e-ext, Wanderlust, Gnus-ext (batch 2)
+(def (cmd-wanderlust-goto-folder app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Folder: "
+      (lambda (folder)
+        (echo-message! echo (str "Wanderlust: opening folder " folder))))))
+
+(def (cmd-wanderlust-check-all app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Wanderlust: checking all folders for new mail...")))
+
+(def (cmd-wanderlust-draft-send app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Wanderlust: sending draft")))
+
+(def (cmd-wanderlust-summary-mark-read app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Wanderlust: marked as read")))
+
+(def (cmd-wanderlust-summary-refile app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Refile to: "
+      (lambda (folder)
+        (echo-message! echo (str "Wanderlust: refiled to " folder))))))
+
+(def (cmd-wanderlust-summary-delete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Wanderlust: marked for deletion")))
+
+(def (cmd-gnus-group-catchup-current app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Gnus: caught up current group")))
+
+(def (cmd-gnus-group-catchup-all app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Gnus: caught up all groups")))
+
+(def (cmd-gnus-group-toggle-subscription app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Gnus: toggled group subscription")))
+
+(def (cmd-gnus-group-make-rss-group app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "RSS URL: "
+      (lambda (url)
+        (echo-message! echo (str "Gnus: created RSS group for " url))))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 64a320f..88805ff 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -17590,3 +17590,46 @@
 (def (cmd-pocket-reader-open-url app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Pocket: opening URL in browser")))
+
+;; Round 175 — Notmuch, Mu4e-ext, Wanderlust, Gnus-ext (batch 1)
+(def (cmd-notmuch-tree-from-search-thread app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Notmuch: showing tree view from search thread")))
+
+(def (cmd-notmuch-jump-search app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Jump search: "
+      (lambda (query)
+        (echo-message! echo (str "Notmuch: jumping to search " query))))))
+
+(def (cmd-notmuch-address-harvest app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Notmuch: harvesting addresses...")))
+
+(def (cmd-notmuch-draft-save app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Notmuch: draft saved")))
+
+(def (cmd-notmuch-draft-resume app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Notmuch: resuming draft")))
+
+(def (cmd-notmuch-poll app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Notmuch: polling for new mail...")))
+
+(def (cmd-notmuch-tag-undo app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Notmuch: undid last tag operation")))
+
+(def (cmd-mu4e-compose-edit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Mu4e: editing as new message")))
+
+(def (cmd-mu4e-compose-resend app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Mu4e: resending message")))
+
+(def (cmd-mu4e-headers-action app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Mu4e: performing headers action")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 8f7aa70..96d48e9 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5108,4 +5108,25 @@
   (register-command! 'nov-bookmark-jump cmd-nov-bookmark-jump)
   (register-command! 'nov-render-document cmd-nov-render-document)
   (register-command! 'nov-copy-url cmd-nov-copy-url)
+  ;; Round 175 — Notmuch, Mu4e-ext, Wanderlust, Gnus-ext
+  (register-command! 'notmuch-tree-from-search-thread cmd-notmuch-tree-from-search-thread)
+  (register-command! 'notmuch-jump-search cmd-notmuch-jump-search)
+  (register-command! 'notmuch-address-harvest cmd-notmuch-address-harvest)
+  (register-command! 'notmuch-draft-save cmd-notmuch-draft-save)
+  (register-command! 'notmuch-draft-resume cmd-notmuch-draft-resume)
+  (register-command! 'notmuch-poll cmd-notmuch-poll)
+  (register-command! 'notmuch-tag-undo cmd-notmuch-tag-undo)
+  (register-command! 'mu4e-compose-edit cmd-mu4e-compose-edit)
+  (register-command! 'mu4e-compose-resend cmd-mu4e-compose-resend)
+  (register-command! 'mu4e-headers-action cmd-mu4e-headers-action)
+  (register-command! 'wanderlust-goto-folder cmd-wanderlust-goto-folder)
+  (register-command! 'wanderlust-check-all cmd-wanderlust-check-all)
+  (register-command! 'wanderlust-draft-send cmd-wanderlust-draft-send)
+  (register-command! 'wanderlust-summary-mark-read cmd-wanderlust-summary-mark-read)
+  (register-command! 'wanderlust-summary-refile cmd-wanderlust-summary-refile)
+  (register-command! 'wanderlust-summary-delete cmd-wanderlust-summary-delete)
+  (register-command! 'gnus-group-catchup-current cmd-gnus-group-catchup-current)
+  (register-command! 'gnus-group-catchup-all cmd-gnus-group-catchup-all)
+  (register-command! 'gnus-group-toggle-subscription cmd-gnus-group-toggle-subscription)
+  (register-command! 'gnus-group-make-rss-group cmd-gnus-group-make-rss-group)
 )