On Thu, 21 Jul 2011 14:58:22 -0700, Jameson Graef Rollins <jroll...@finestructure.net> wrote: > As for resuming postponed messages, I have defined the following key > binding, which I use on draft messages that have been indexed by > notmuch: [...]
So I have improved on this, I believe. I now have this in my .emacs as test code for a new postpone workflow. I have completely ditched my older patches in favor of this approach. The general workflow is this: 1. start writing an email 2. postpone it with C-c C-d, as usual -> the mail gets saved to a (currently hardcoded) maildir mailbox using the notmuch's FCC routines 3. notmuch new eventually happens (not ran automatically, maybe we should?) 4. load the "tag:draft" search or the above mailbox in some way or another 5. show the draft you want to resume and hit R 6. finish editing the email and send it -> the mail gets deleted from the maildir If instead of sending the mail the buffer is killed, the draft is left alone. I can already think of a few improvements: * make variable for the draft folder * automatically tag drafts with the draft tag (so notmuch new is not necessary) * hotkey for loading the draft search * kill or save a draft (after confirmation) when killing a buffer It's still quite messy, but I wanted to share with the list here the working code I had. I would welcome feedback on how to integrate this into notmuch... Thanks! A. (defun anarcat/notmuch-message-setup () "Configures a bunch of hooks for notmuch message windows" (message-add-action `(message "debug: done exit actions") 'exit) (message-add-action `(message "debug: done postpone actions") 'postpone) (message-add-action `(message "debug: done kill actions") 'kill) (message-add-action 'notmuch-message-postpone-keep 'postpone) (message-add-action 'notmuch-message-postpone-cleanup 'exit) ) (add-hook 'message-mode-hook 'anarcat/notmuch-message-setup) (defun notmuch-message-postpone-cleanup () "Remove autosave and postponed messages for that buffer" (message "debug: postpone cleanup hook") (message "deleting draft file: %s" notmuch-draft-filename) (if (file-exists-p notmuch-draft-filename) (progn (kill-buffer) (delete-file notmuch-draft-filename) (if (file-exists-p notmuch-draft-filename) (message "failed to delete file %s" notmuch-draft-filename) (message "debug: file deleted")) ) (message "draft file %s doesn't exist" notmuch-draft-filename))) (defun notmuch-message-postpone-keep () "Moves the previous buffer into the postponed folder and then kill it" ;; shouldn't be necessary: why the heck aren't we in the right buffer? (save-excursion (set-buffer (last-buffer)) (notmuch-maildir-fcc-write-buffer-to-maildir "~/Maildir/Anarcat/postponed/" t) (kill-buffer)) ) (defun notmuch-show-resume-message () "Resume a postponed message." (interactive) (setq tmpfilename (notmuch-show-get-filename)) (notmuch-show-view-raw-message) (setq buffer-file-name tmpfilename) (message "debug: set buffer file name to %s" buffer-file-name) (setq notmuch-draft-filename buffer-file-name) (make-local-variable 'notmuch-draft-filename) (message "debug: set draft file name to %s" notmuch-draft-filename) (message-mode)) (define-key notmuch-show-mode-map "R" 'notmuch-show-resume-message) -- O gentilshommes, la vie est courte. Si nous vivons, nous vivons pour marcher sur la tête des rois. - William Shakespeare
pgp3ot1ZRpvIe.pgp
Description: PGP signature
_______________________________________________ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch