Round 235: Wanderlust, mu4e ext (20 commands)

ober

44721980c6913f27606ca049c646e8b7524493b7

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 454db80..295547a 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 235 — Wanderlust, mu4e ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| wl-summary-goto-folder | :orange_circle: | Switch to Wanderlust folder |
+| wl-summary-sync-current-folder | :orange_circle: | Sync current folder |
+| wl-summary-mark-as-read | :orange_circle: | Mark message as read |
+| wl-summary-mark-as-unread | :orange_circle: | Mark message as unread |
+| wl-summary-delete | :orange_circle: | Delete message |
+| wl-summary-refile | :orange_circle: | Refile message to folder |
+| wl-summary-reply-with-citation | :orange_circle: | Reply with citation |
+| wl-draft-send | :orange_circle: | Send current draft |
+| wl-draft-save | :orange_circle: | Save current draft |
+| wl-draft-kill | :orange_circle: | Kill current draft |
+| mu4e-compose-attach | :orange_circle: | Attach file to email |
+| mu4e-view-save-attachments | :orange_circle: | Save email attachments |
+| mu4e-headers-toggle-include-related | :orange_circle: | Toggle include related messages |
+| mu4e-context-switch | :orange_circle: | Switch mu4e context |
+| mu4e-update-index | :orange_circle: | Update mu4e mail index |
+| mu4e-headers-query-prev | :orange_circle: | Previous search query |
+| mu4e-headers-query-next | :orange_circle: | Next search query |
+| mu4e-view-open-attachment | :orange_circle: | Open email attachment |
+| mu4e-headers-mark-for-trash | :orange_circle: | Mark message for trash |
+| mu4e-headers-mark-for-refile | :orange_circle: | Mark message for refile |
+
 ### Round 234 — Ement.el ext, Telega.el
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 7a69b60..8798add 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -19802,3 +19802,55 @@
 (def (cmd-telega-chat-pin-message app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Telega: pinned message")))
+
+;; Round 235 — Wanderlust, mu4e ext (10 in final)
+(def (cmd-mu4e-compose-attach app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Attach file: "
+      (lambda (file)
+        (echo-message! echo (str "mu4e: attached " file))))))
+
+(def (cmd-mu4e-view-save-attachments app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Save attachments to: "
+      (lambda (dir)
+        (echo-message! echo (str "mu4e: saved attachments to " dir))))))
+
+(def (cmd-mu4e-headers-toggle-include-related app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'mu4e-include-related)
+    (if (mode-enabled? app 'mu4e-include-related)
+      (echo-message! echo "mu4e: include related messages enabled")
+      (echo-message! echo "mu4e: include related messages disabled"))))
+
+(def (cmd-mu4e-context-switch app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Switch to context: "
+      (lambda (ctx)
+        (echo-message! echo (str "mu4e: switched to context " ctx))))))
+
+(def (cmd-mu4e-update-index app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "mu4e: updating index...")))
+
+(def (cmd-mu4e-headers-query-prev app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "mu4e: previous query")))
+
+(def (cmd-mu4e-headers-query-next app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "mu4e: next query")))
+
+(def (cmd-mu4e-view-open-attachment app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Attachment number: "
+      (lambda (num)
+        (echo-message! echo (str "mu4e: opening attachment " num))))))
+
+(def (cmd-mu4e-headers-mark-for-trash app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "mu4e: marked for trash")))
+
+(def (cmd-mu4e-headers-mark-for-refile app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "mu4e: marked for refile")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 3c28704..30bca25 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -20472,3 +20472,49 @@
     (echo-read-string echo "Image to send: "
       (lambda (img)
         (echo-message! echo (str "Ement: sent image " img))))))
+
+;; Round 235 — Wanderlust, mu4e ext (10 in modes)
+(def (cmd-wl-summary-goto-folder app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Folder: "
+      (lambda (folder)
+        (echo-message! echo (str "WL: switched to folder " folder))))))
+
+(def (cmd-wl-summary-sync-current-folder app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WL: syncing current folder")))
+
+(def (cmd-wl-summary-mark-as-read app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WL: marked message as read")))
+
+(def (cmd-wl-summary-mark-as-unread app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WL: marked message as unread")))
+
+(def (cmd-wl-summary-delete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WL: deleted message")))
+
+(def (cmd-wl-summary-refile app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Refile to: "
+      (lambda (dest)
+        (echo-message! echo (str "WL: refiled to " dest))))))
+
+(def (cmd-wl-summary-reply-with-citation app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WL: replying with citation")))
+
+(def (cmd-wl-draft-send app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WL: sending draft")))
+
+(def (cmd-wl-draft-save app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WL: draft saved")))
+
+(def (cmd-wl-draft-kill app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WL: draft killed")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 294ead6..1fe6cc3 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -6368,4 +6368,25 @@
   (register-command! 'telega-chatbuf-attach-file cmd-telega-chatbuf-attach-file)
   (register-command! 'telega-chatbuf-attach-sticker cmd-telega-chatbuf-attach-sticker)
   (register-command! 'telega-chat-pin-message cmd-telega-chat-pin-message)
+  ;; Round 235 — Wanderlust, mu4e ext
+  (register-command! 'wl-summary-goto-folder cmd-wl-summary-goto-folder)
+  (register-command! 'wl-summary-sync-current-folder cmd-wl-summary-sync-current-folder)
+  (register-command! 'wl-summary-mark-as-read cmd-wl-summary-mark-as-read)
+  (register-command! 'wl-summary-mark-as-unread cmd-wl-summary-mark-as-unread)
+  (register-command! 'wl-summary-delete cmd-wl-summary-delete)
+  (register-command! 'wl-summary-refile cmd-wl-summary-refile)
+  (register-command! 'wl-summary-reply-with-citation cmd-wl-summary-reply-with-citation)
+  (register-command! 'wl-draft-send cmd-wl-draft-send)
+  (register-command! 'wl-draft-save cmd-wl-draft-save)
+  (register-command! 'wl-draft-kill cmd-wl-draft-kill)
+  (register-command! 'mu4e-compose-attach cmd-mu4e-compose-attach)
+  (register-command! 'mu4e-view-save-attachments cmd-mu4e-view-save-attachments)
+  (register-command! 'mu4e-headers-toggle-include-related cmd-mu4e-headers-toggle-include-related)
+  (register-command! 'mu4e-context-switch cmd-mu4e-context-switch)
+  (register-command! 'mu4e-update-index cmd-mu4e-update-index)
+  (register-command! 'mu4e-headers-query-prev cmd-mu4e-headers-query-prev)
+  (register-command! 'mu4e-headers-query-next cmd-mu4e-headers-query-next)
+  (register-command! 'mu4e-view-open-attachment cmd-mu4e-view-open-attachment)
+  (register-command! 'mu4e-headers-mark-for-trash cmd-mu4e-headers-mark-for-trash)
+  (register-command! 'mu4e-headers-mark-for-refile cmd-mu4e-headers-mark-for-refile)
 )