summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2020-11-22 15:46:09 -0500
committerKyle Meyer <kyle@kyleam.com>2020-11-22 19:51:16 -0500
commit5c6f90081fad69a8430e81e7d9e04212f7f3e009 (patch)
tree1c47f0fcbb5386bd701248257d17f38dc2540e12
parent27495eeb67515f8dac0e7449aa2165272e8ebe5a (diff)
downloadpiem-5c6f90081fad69a8430e81e7d9e04212f7f3e009.tar.gz
gnus, notmuch: Consider text/plain patch attachments
When inspecting attachments for generating an am-ready mbox, both -notmuch and -gnus limit the operation to attachments with text/x-diff or text/x-patch content types. That has worked okay for me, though I've run into a few cases where I couldn't apply a patch attachment because it had a text/plain content type. To do something useful in this case, check the file name to see whether it looks like a patch. Message-Id: <20201122204609.12604-5-kyle@kyleam.com>
-rw-r--r--piem-gnus.el3
-rw-r--r--piem-notmuch.el3
-rw-r--r--piem.el10
3 files changed, 11 insertions, 5 deletions
diff --git a/piem-gnus.el b/piem-gnus.el
index ca128fb..9dc4ae8 100644
--- a/piem-gnus.el
+++ b/piem-gnus.el
@@ -70,7 +70,8 @@ message itself if it looks like a patch."
(mapcar (lambda (handle)
(and (listp handle)
(piem-am-patch-attachment-p
- (mm-handle-media-type handle))
+ (mm-handle-media-type handle)
+ (mm-handle-filename handle))
(with-temp-buffer
(mm-display-inline handle)
(buffer-substring-no-properties
diff --git a/piem-notmuch.el b/piem-notmuch.el
index 8f5ef77..58e4d88 100644
--- a/piem-notmuch.el
+++ b/piem-notmuch.el
@@ -92,7 +92,8 @@ message itself if it looks like a patch."
(delq nil
(mapcar (lambda (part)
(and (piem-am-patch-attachment-p
- (plist-get part :content-type))
+ (plist-get part :content-type)
+ (plist-get part :filename))
(plist-get part :content)))
(plist-get body :content)))))
(cons (lambda ()
diff --git a/piem.el b/piem.el
index 9cc6a88..cf43503 100644
--- a/piem.el
+++ b/piem.el
@@ -561,10 +561,14 @@ This function depends on :url being configured for entries in
;;;; Patch handling
-(defun piem-am-patch-attachment-p (type)
+(defun piem-am-patch-attachment-p (type filename)
"Return non-nil if an attachment should be treated as a patch.
-TYPE is a media type such as \"text/x-patch\"."
- (member type '("text/x-diff" "text/x-patch")))
+TYPE is a media type such as \"text/x-patch\". FILENAME is the
+attachment file name, if any."
+ (or (member type '("text/x-diff" "text/x-patch"))
+ (and filename
+ (equal type "text/plain")
+ (string-match-p "\\.patch\\'" filename))))
(defun piem-extract-mbox-info (&optional buffer)
"Collect information from message in BUFFER.