discussion and development of piem
 help / color / mirror / code / Atom feed
From: leo@relevant-information.com
To: piem@inbox.kyleam.com
Cc: Leo <sourcehut@relevant-information.com>
Subject: [PATCH v2] Use notmuch-extract-patch if available
Date: Tue, 14 Dec 2021 16:09:59 +0100	[thread overview]
Message-ID: <20211214150959.624-1-leo@relevant-information.com> (raw)

From: Leo <sourcehut@relevant-information.com>

notmuch-extract-patch is a command line tool from the elpa-mailscripts
package that extracts patches from a thread.  It's a useful way to
extract the latest patch series from an email thread and filter out the
replies and reviews.
---
I've extracted the functionality into its own function as requested, and 
added clarification on where the copied comment came from.  I'm not sure 
how the copyright notice should be formatted though. 


 piem-notmuch.el | 36 +++++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/piem-notmuch.el b/piem-notmuch.el
index 8b2a353..27a7d7c 100644
--- a/piem-notmuch.el
+++ b/piem-notmuch.el
@@ -1,6 +1,6 @@
 ;;; piem-notmuch.el --- Notmuch integration for piem  -*- lexical-binding: t; -*-
 
-;; Copyright (C) 2020-2021  all contributors <piem@inbox.kyleam.com>
+;; Copyright (C) 2020-2021  all contributors <piem@inbox.kyleam.com> (C) 2019 Sean Whitton <spwhitton@spwhitton.name>
 
 ;; Author: Kyle Meyer <kyle@kyleam.com>
 ;; Keywords: vc, tools
@@ -106,6 +106,40 @@ (defun piem-notmuch-am-ready-mbox ()
                     (insert patch)))
                 "mbox"))))))
 
+(defun piem-notmuch-extract-patch-am-ready-mbox ()
+  "Return a function that inserts an am-ready mbox.
+Use the message itself if it looks like a patch using
+notmuch-extract-patch to get the latest patch series from the
+notmuch thread."
+  (when (derived-mode-p 'notmuch-show-mode)
+    (let* ((handle (piem-notmuch--with-current-message
+                     (mm-dissect-buffer)))
+           (n-attachments (notmuch-count-attachments handle))
+           patches)
+      (when (= n-attachments 0)
+          (when (string-match-p piem-patch-subject-re
+                                (notmuch-show-get-subject))
+            (let ((id (notmuch-show-get-message-id))
+                  (thread-id notmuch-show-thread-id))
+              (lambda ()
+                (if-let ((cmd (executable-find "notmuch-extract-patch"))
+                         (tid
+                          ;; Copied from mailscripts.el
+                          ;;
+                          ;; If `notmuch-show' was called with a notmuch query rather
+                          ;; than a thread ID, as `org-notmuch-follow-link' in
+                          ;; org-notmuch.el does, then `notmuch-show-thread-id' might
+                          ;; be an arbitrary notmuch query instead of a thread ID.  We
+                          ;; need to wrap such a query in thread:{} before passing it
+                          ;; to notmuch-extract-patch(1), or we might not get a whole
+                          ;; thread extracted (e.g. if the query is just id:foo)
+                          (if (string= (substring thread-id 0 7) "thread:")
+                              thread-id
+                            (concat "thread:{" thread-id "}"))))
+                    (call-process cmd nil t nil
+                                  tid)
+                  (user-error "The executable notmuch-extract-patch was not found")))))))))
+
 (defun piem-notmuch-show-get-public-inbox-link (mid)
   "Given the message-id MID, return the public-inbox url.
 This will lookup the url in the inboxes returned by

base-commit: e519aa44d148d5b8f22d7fe8844dc566046b04c2
-- 
2.34.1


             reply	other threads:[~2021-12-14 15:10 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-14 15:09 leo [this message]
2021-12-15  5:16 ` [PATCH v2] Use notmuch-extract-patch if available Kyle Meyer
2021-12-15  5:22   ` Kyle Meyer
2021-12-16 19:32   ` [PATCH v3 1/2] Support preparing am-ready mbox via notmuch-extract-patch sourcehut
2021-12-16 19:32     ` [PATCH v3 2/2] Add user option for specifying path to notmuch-extract-patch sourcehut
2021-12-17  5:22       ` Kyle Meyer
2021-12-21 19:15         ` [PATCH v4] " Leo
2021-12-24 18:31           ` Kyle Meyer
2021-12-17  5:15     ` [PATCH v3 1/2] Support preparing am-ready mbox via notmuch-extract-patch Kyle Meyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://git.kyleam.com/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211214150959.624-1-leo@relevant-information.com \
    --to=leo@relevant-information.com \
    --cc=piem@inbox.kyleam.com \
    --cc=sourcehut@relevant-information.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.kyleam.com/piem/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).