diff options
author | Keith Amidon <keith@nicira.com> | 2009-11-27 05:30:14 -0800 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2009-11-27 21:23:58 -0800 |
commit | e593b6aacb273a798ebbe0084be3018303835f44 (patch) | |
tree | 64e79d2b5317fb3bed14bfa14adf93a75df9250c /notmuch.el | |
parent | 07ce64e4352291fb5bd265f20c683c653ab81966 (diff) |
Provide ability to save attachments
Previously the only way to save an attachment was to attempt to view
it and then save it from within the viewer program.
Diffstat (limited to 'notmuch.el')
-rw-r--r-- | notmuch.el | 41 |
1 files changed, 41 insertions, 0 deletions
@@ -300,6 +300,47 @@ buffer." (with-current-notmuch-show-message (mm-display-parts (mm-dissect-buffer)))) +(defun notmuch-foreach-mime-part (function mm-handle) + (cond ((stringp (car mm-handle)) + (dolist (part (cdr mm-handle)) + (notmuch-foreach-mime-part function part))) + ((bufferp (car mm-handle)) + (funcall function mm-handle)) + (t (dolist (part mm-handle) + (notmuch-foreach-mime-part function part))))) + +(defun notmuch-count-attachments (mm-handle) + (let ((count 0)) + (notmuch-foreach-mime-part + (lambda (p) + (let ((disposition (mm-handle-disposition p))) + (and (listp disposition) + (equal (car disposition) "attachment") + (incf count)))) + mm-handle) + count)) + +(defun notmuch-save-attachments (mm-handle &optional queryp) + (notmuch-foreach-mime-part + (lambda (p) + (let ((disposition (mm-handle-disposition p))) + (and (listp disposition) + (equal (car disposition) "attachment") + (or (not queryp) + (y-or-n-p + (concat "Save '" (cdr (assq 'filename disposition)) "' "))) + (mm-save-part p)))) + mm-handle)) + +(defun notmuch-show-save-attachments () + "Save the attachments to a message" + (interactive) + (with-current-notmuch-show-message + (let ((mm-handle (mm-dissect-buffer))) + (notmuch-save-attachments + mm-handle (> (notmuch-count-attachments mm-handle) 1)))) + (message "Done")) + (defun notmuch-reply (query-string) (switch-to-buffer (generate-new-buffer "notmuch-draft")) (call-process notmuch-command nil t nil "reply" query-string) |