On Wed, 29 Oct 2014, David Edmondson d...@dme.org wrote:
On Tue, Oct 28 2014, Jani Nikula wrote:
Stash From/To/Cc as --to/--to/--cc, respectively, and Message-Id as
--in-reply-to, suitable for pasting to git send-email command line.
---
emacs/notmuch-show.el | 25 +
1 file changed, 25 insertions(+)
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index a9974826e824..328c93ba0584 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -1274,6 +1274,7 @@ reset based on the original query.
(define-key map t 'notmuch-show-stash-to)
(define-key map l 'notmuch-show-stash-mlarchive-link)
(define-key map L 'notmuch-show-stash-mlarchive-link-and-go)
+(define-key map G 'notmuch-show-stash-git-send-email)
(define-key map ? 'notmuch-subkeymap-help)
map)
Submap for stash commands)
@@ -2125,6 +2126,30 @@ the user (see
`notmuch-show-stash-mlarchive-link-alist').
(notmuch-show-stash-mlarchive-link mla)
(browse-url (current-kill 0 t)))
+(defun notmuch-show-stash-git-helper (addresses prefix)
+ Escape, trim, and add PREFIX to each address in list of ADDRESSES.
+ (when addresses
+(mapconcat (lambda (x)
+ (concat prefix \
+ ;; escape double-quotes
+ (replace-regexp-in-string
+ \ \
+ ;; trim leading and trailing spaces
+ (replace-regexp-in-string
+ \\(^ *\\| *$\\)
+ x)) \ ))
+ addresses )))
This doesn't seem quite right. You leave a spurious trailing
space. Maybe that's because you need it in the following function to
separate the from/to/cc elements? That kind of interaction between the
two functions is icky.
Agreed, thanks for pointing it out.
There's no need to test `addresses' at the head of the list - mapconcat
is fine with nil.
How about:
(defun notmuch-show-stash-git-helper (addresses prefix)
Escape, trim, and add PREFIX to each address in list of ADDRESSES.
(mapconcat (lambda (x)
(concat prefix \
;; escape double-quotes
(replace-regexp-in-string
\ \
;; trim leading and trailing spaces
(replace-regexp-in-string
\\(^ *\\| *$\\)
x)) \))
addresses ))
This would remove the trailing space, so...
+
+(defun notmuch-show-stash-git-send-email ()
+ Copy From/To/Cc/Message-Id of current message to kill-ring in a form
suitable for pasting to git send-email command line.
+ (interactive)
+ (notmuch-common-do-stash
+ (concat
+(notmuch-show-stash-git-helper (message-tokenize-header
(notmuch-show-get-from)) --to=)
+(notmuch-show-stash-git-helper (message-tokenize-header
(notmuch-show-get-to)) --to=)
+(notmuch-show-stash-git-helper (message-tokenize-header
(notmuch-show-get-cc)) --cc=)
+(concat --in-reply-to=\ (notmuch-show-get-message-id t) \
...this would have to use something like:
(mapconcat 'identity (list
(notmuch-show-stash-git-helper (message-tokenize-header
(notmuch-show-get-from)) --to=)
(notmuch-show-stash-git-helper (message-tokenize-header
(notmuch-show-get-to)) --to=)
(notmuch-show-stash-git-helper (message-tokenize-header
(notmuch-show-get-cc)) --cc=)
(concat --in-reply-to=\ (notmuch-show-get-message-id
t) \))
)
to separate the chunks (untested).
The last has to be to separate the elements, but this brings
another small wrinkle: if one of the headers is missing, typically Cc:,
it will be nil in the list, and mapconcat adds spaces both sides of
that, i.e. double space. Any ideas how to fix that?
Could you avoid the double-quote quoting by using single quotes inside
the strings?
The addresses may contain both single quotes and double quotes, so
escaping either of them seems like the only option.
Do the leading and trailing spaces really matter?
Does aesthetically displeasing count? Because message-tokenize-header
splits using , but headers typically have , between addresses, the
end result will practically always have --to= u...@example.com without
the trimming.
Thanks for the helpful review; I'm not much of a lisp coder...
BR,
Jani.
(Domo: Look, I managed to write 'separate', twice!)
+
;; Interactive part functions and their helpers
(defun notmuch-show-generate-part-buffer (message-id nth)
--
2.1.1
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch