This command inserts the current buffer as a draft. It optionally
begins editing the draft.
This can be useful for email-based Git contribution workflows. For
example, one can use git format-patch to generate a patch, then
notmuch-draftify-buffer on the generated patch to immediately begin
editing a message for submission to an appropriate mailing list.
---
emacs/notmuch-draft.el | 10 ++++++++++
emacs/notmuch-lib.el | 12 ++++++++----
emacs/notmuch-maildir-fcc.el | 16 ++++++++++------
3 files changed, 28 insertions(+), 10 deletions(-)
diff --git a/emacs/notmuch-draft.el b/emacs/notmuch-draft.el
index fcc45503..4bff68f2 100644
--- a/emacs/notmuch-draft.el
+++ b/emacs/notmuch-draft.el
@@ -278,6 +278,16 @@ applied to newly inserted messages)."
;; message is resaved or sent.
(setq notmuch-draft-id (and draft id)))))
+(defun notmuch-draftify-buffer (arg)
+ "Inserts the current buffer as a draft. With prefix argument, begins editing the draft."
+ (interactive "P")
+ (let ((message-id (notmuch-maildir-notmuch-insert-current-buffer
+ notmuch-draft-folder
+ t
+ notmuch-draft-tags)))
+ (when (and arg message-id)
+ (notmuch-draft-resume (format "id:%s" message-id)))))
+
;;; _
(add-hook 'message-send-hook 'notmuch-draft--mark-deleted)
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index bf9c4a53..1e371f67 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -935,11 +935,15 @@ supported keyword arguments are:
If notmuch exits with a non-zero status, output from the process
will appear in a buffer named \"*Notmuch errors*\" and an error
-will be signaled."
+will be signaled.
+
+Otherwise, returns the output from the process as a string."
(with-temp-buffer
- (let ((status (notmuch-call-notmuch--helper t args)))
- (notmuch-check-exit-status status (cons notmuch-command args)
- (buffer-string)))))
+ (let ((status (notmuch-call-notmuch--helper t args))
+ (output (buffer-string)))
+ (and (notmuch-check-exit-status status (cons notmuch-command args)
+ output)
+ output))))
(defun notmuch-call-notmuch-sexp (&rest args)
"Invoke `notmuch-command' with ARGS and return the parsed S-exp output.
diff --git a/emacs/notmuch-maildir-fcc.el b/emacs/notmuch-maildir-fcc.el
index c7b403cf..09fc832d 100644
--- a/emacs/notmuch-maildir-fcc.el
+++ b/emacs/notmuch-maildir-fcc.el
@@ -215,12 +215,16 @@ normal fcc."
This inserts the current buffer as a message into the notmuch
database in folder FOLDER. If CREATE is non-nil it will supply
the --create-folder flag to create the folder if necessary. TAGS
-should be a list of tag changes to apply to the inserted message."
- (apply 'notmuch-call-notmuch-process
- :stdin-string (buffer-string) "insert"
- (append (and create (list "--create-folder"))
- (list (concat "--folder=" folder))
- tags)))
+should be a list of tag changes to apply to the inserted message.
+
+Returns the message ID of the inserted message."
+ (let ((output (apply 'notmuch-call-notmuch-process
+ :stdin-string (buffer-string) "insert"
+ (append (and create (list "--create-folder"))
+ (list (concat "--folder=" folder)
+ "--emit-message-id")
+ tags))))
+ (string-trim output)))
(defun notmuch-maildir-fcc-with-notmuch-insert (fcc-header &optional create)
"Store message with notmuch insert.
--
2.45.2
_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-leave@notmuchmail.org