aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinglu Chen <public@yoctocell.xyz>2021-06-24 12:13:35 +0200
committerXinglu Chen <public@yoctocell.xyz>2021-06-24 12:13:35 +0200
commitb5ebade3a48dc0ce0c85699f25800808233c73be (patch)
treedabd63afea4a9c61dbb48d0255215fa2f3af218d
parentd03cda5836e5408d902422664ea23edd5dd7505d (diff)
git-email: Add function for matching git-email buffers.
A user might have buffers with unsent messages that were not generated by git-email, previously, invoking ‘git-email-send-all’ would unconditionally send all of those messages. By using a predicate, we make sure to only send messages generated by git-email. * git-email.el (git-email-buffer-p-function): New defcustom. (git-email-buffer-p): New function. (git-email-send-all): Use it. * doc/git-email.texi (Miscellaneous): Document it. Signed-off-by: Xinglu Chen <public@yoctocell.xyz>
-rw-r--r--doc/git-email.texi9
-rw-r--r--git-email.el27
2 files changed, 32 insertions, 4 deletions
diff --git a/doc/git-email.texi b/doc/git-email.texi
index f290878..09db2b1 100644
--- a/doc/git-email.texi
+++ b/doc/git-email.texi
@@ -304,6 +304,15 @@ trailing @samp{/}.
names are generated. See the documentation for
@code{message-generate-new-buffers} for more information.
+@vindex git-email-buffer-p-function
+@item
+If you have changed the default value of
+@code{git-email-generate-message-buffer}, you probably also want to
+change the value of @code{git-email-buffer-p-function}. It should be a
+function that takes one argument---the name of a buffer, and returns
+@code{t} if the buffer contains an unsent patch generated using
+@samp{git-email}.
+
By default the name will have the following format @samp{git-email
unsent patch to *** TO ADDRESS HERE *** *}.
@end itemize
diff --git a/git-email.el b/git-email.el
index cef8340..27b6238 100644
--- a/git-email.el
+++ b/git-email.el
@@ -175,6 +175,15 @@ HERE *** *\"."
:group 'git-email
:package-version '(git-email . "0.3.0"))
+(defcustom git-email-buffer-p-function
+ #'git-email-buffer-p
+ "Function used for determining if a buffer contains an unsent
+patch based on the buffer name. The function must take one
+argument --- the buffer name."
+ :type 'function
+ :group 'git-email
+ :package-version '(git-email . "0.3.0"))
+
;; Remove Compiler warnings
(declare-function dired-get-filename "dired.el")
(declare-function dired-map-over-marks "dired.el")
@@ -465,6 +474,13 @@ default behavior is to delete them after sending the message."
(generate-new-buffer-name
(concat "*git-email unsent patch to " address " *" )))
+(defun git-email-buffer-p (name)
+ "Check whether a buffer is contains an unsent patch based on its
+NAME."
+ (if (string-match "git-email-unsent-patch" name)
+ t
+ nil))
+
;;;; Operate on emails
@@ -480,14 +496,17 @@ default behavior is to delete them after sending the message."
(> old new))))
(defun git-email-send-all ()
- "Send all unsent emails."
+ "Send all unsent patches."
(interactive)
;; Sort the buffers so that [PATCH 0/N] comes first, this prevents
;; the ordering from getting messed up.
- (let ((buffers (sort (message-buffers) #'git-email-message-buffer-greaterp)))
- (mapc (lambda (b) (switch-to-buffer b)
+ (let* ((message-buffers (seq-filter #'git-email-buffer-p
+ (message-buffers)) )
+ (sorted-buffers (sort message-buffers #'git-email-message-buffer-greaterp)))
+ (mapc (lambda (b)
+ (switch-to-buffer b)
(funcall git-email-send-email-function))
- buffers)))
+ sorted-buffers)))
(defun git-email--rewrite-header-in-buffer (buffer header value append)
(switch-to-buffer buffer)