Round 77: notmuch/notmuch-mua-send/new-mail/hello, mu4e/compose-new/headers-search/update-mail/compose-reply/forward, mu4e-mark-for-trash/move/delete/execute-all, mu4e-view-attachment/search-bookmark/headers-toggle-threading/mark-for-flag/view-save-attachment
ober
a1862d22b525cfff9e7322850dc918f2817e8416
--- a/docs/jemacs-vs-emacs.md +++ b/docs/jemacs-vs-emacs.md @@ -2850,6 +2850,30 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features | titlecase-dwim | :orange_circle: | Smart title case | | logos-focus-mode | :orange_circle: | Page-based focused reading | +### Round 77 — Notmuch & mu4e Mail + +| Feature | Status | Notes | +|---|---|---| +| notmuch | :orange_circle: | Open Notmuch mail client | +| notmuch-mua-send | :orange_circle: | Send message via Notmuch | +| notmuch-mua-new-mail | :orange_circle: | Compose new mail | +| notmuch-hello | :orange_circle: | Notmuch hello screen | +| mu4e | :orange_circle: | Open mu4e mail client | +| mu4e-compose-new | :orange_circle: | Compose new mu4e message | +| mu4e-headers-search | :orange_circle: | Search mail headers | +| mu4e-update-mail-and-index | :orange_circle: | Fetch and index mail | +| mu4e-compose-reply | :orange_circle: | Reply to message | +| mu4e-compose-forward | :orange_circle: | Forward message | +| mu4e-mark-for-trash | :orange_circle: | Mark for trash | +| mu4e-mark-for-move | :orange_circle: | Mark for move to maildir | +| mu4e-mark-for-delete | :orange_circle: | Mark for deletion | +| mu4e-mark-execute-all | :orange_circle: | Execute all marks | +| mu4e-view-attachment | :orange_circle: | View attachment | +| mu4e-search-bookmark | :orange_circle: | Search by bookmark | +| mu4e-headers-toggle-threading | :orange_circle: | Toggle message threading | +| mu4e-headers-mark-for-flag | :orange_circle: | Flag message | +| mu4e-view-save-attachment | :orange_circle: | Save attachment to file | + --- ## Recommended Development Roadmap --- a/src/jerboa-emacs/editor-extra-final.ss +++ b/src/jerboa-emacs/editor-extra-final.ss @@ -12202,3 +12202,46 @@ (if (mode-enabled? app 'logos-focus) (echo-message! echo "Logos focus mode enabled (page-based reading)") (echo-message! echo "Logos focus mode disabled")))) + +;; Round 77 — mu4e (batch 2) +(def (cmd-mu4e-mark-for-trash app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "mu4e: marked for trash"))) + +(def (cmd-mu4e-mark-for-move app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Move to maildir: " + (lambda (dir) + (echo-message! echo (str "mu4e: marked for move to " dir)))))) + +(def (cmd-mu4e-mark-for-delete app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "mu4e: marked for deletion"))) + +(def (cmd-mu4e-mark-execute-all app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "mu4e: executed all pending marks"))) + +(def (cmd-mu4e-view-attachment app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "mu4e: viewing attachment"))) + +(def (cmd-mu4e-search-bookmark app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "mu4e bookmark search: " + (lambda (bm) + (echo-message! echo (str "mu4e: running bookmark search '" bm "'")))))) + +(def (cmd-mu4e-headers-toggle-threading app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "mu4e: toggled message threading"))) + +(def (cmd-mu4e-headers-mark-for-flag app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "mu4e: marked message as flagged"))) + +(def (cmd-mu4e-view-save-attachment app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Save attachment to: " + (lambda (path) + (echo-message! echo (str "mu4e: attachment saved to " path)))))) --- a/src/jerboa-emacs/editor-extra-modes.ss +++ b/src/jerboa-emacs/editor-extra-modes.ss @@ -12746,3 +12746,46 @@ (lambda (pat) (echo-message! echo (str "Dictionary: matching words for '" pat "'")))))) +;; Round 77 — Notmuch & mu4e mail (batch 1) +(def (cmd-notmuch app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Notmuch: opening mail client"))) + +(def (cmd-notmuch-mua-send app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Notmuch: sending message"))) + +(def (cmd-notmuch-mua-new-mail app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Notmuch: composing new mail"))) + +(def (cmd-notmuch-hello app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Notmuch: showing hello screen"))) + +(def (cmd-mu4e app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "mu4e: opening mail client"))) + +(def (cmd-mu4e-compose-new app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "mu4e: composing new message"))) + +(def (cmd-mu4e-headers-search app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "mu4e search: " + (lambda (query) + (echo-message! echo (str "mu4e: searching for '" query "'")))))) + +(def (cmd-mu4e-update-mail-and-index app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "mu4e: updating mail and index"))) + +(def (cmd-mu4e-compose-reply app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "mu4e: replying to message"))) + +(def (cmd-mu4e-compose-forward app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "mu4e: forwarding message"))) + --- a/src/jerboa-emacs/editor-extra-regs2.ss +++ b/src/jerboa-emacs/editor-extra-regs2.ss @@ -3053,4 +3053,24 @@ (register-command! 'jinx-languages cmd-jinx-languages) (register-command! 'titlecase-dwim cmd-titlecase-dwim) (register-command! 'logos-focus-mode cmd-logos-focus-mode) + ;; Round 77 + (register-command! 'notmuch cmd-notmuch) + (register-command! 'notmuch-mua-send cmd-notmuch-mua-send) + (register-command! 'notmuch-mua-new-mail cmd-notmuch-mua-new-mail) + (register-command! 'notmuch-hello cmd-notmuch-hello) + (register-command! 'mu4e cmd-mu4e) + (register-command! 'mu4e-compose-new cmd-mu4e-compose-new) + (register-command! 'mu4e-headers-search cmd-mu4e-headers-search) + (register-command! 'mu4e-update-mail-and-index cmd-mu4e-update-mail-and-index) + (register-command! 'mu4e-compose-reply cmd-mu4e-compose-reply) + (register-command! 'mu4e-compose-forward cmd-mu4e-compose-forward) + (register-command! 'mu4e-mark-for-trash cmd-mu4e-mark-for-trash) + (register-command! 'mu4e-mark-for-move cmd-mu4e-mark-for-move) + (register-command! 'mu4e-mark-for-delete cmd-mu4e-mark-for-delete) + (register-command! 'mu4e-mark-execute-all cmd-mu4e-mark-execute-all) + (register-command! 'mu4e-view-attachment cmd-mu4e-view-attachment) + (register-command! 'mu4e-search-bookmark cmd-mu4e-search-bookmark) + (register-command! 'mu4e-headers-toggle-threading cmd-mu4e-headers-toggle-threading) + (register-command! 'mu4e-headers-mark-for-flag cmd-mu4e-headers-mark-for-flag) + (register-command! 'mu4e-view-save-attachment cmd-mu4e-view-save-attachment) )