]> rtime.felk.cvut.cz Git - notmuch.git/blobdiff - emacs/notmuch-show.el
Update completions for Emacs and bash
[notmuch.git] / emacs / notmuch-show.el
index b8cfbb8a3286540d7bb57caf8cf62a88f7032bd8..87b48813987ae859491c2f2bf14f8ec225463806 100644 (file)
@@ -1198,7 +1198,11 @@ function is used."
       (notmuch-show-mapc (lambda () (notmuch-show-set-prop :orig-tags (notmuch-show-get-tags))))
 
       ;; Set the header line to the subject of the first message.
-      (setq header-line-format (notmuch-sanitize (notmuch-show-strip-re (notmuch-show-get-subject))))
+      (setq header-line-format
+           (replace-regexp-in-string "%" "%%"
+                           (notmuch-sanitize
+                            (notmuch-show-strip-re
+                             (notmuch-show-get-subject)))))
 
       (run-hooks 'notmuch-show-hook))))
 
@@ -1280,6 +1284,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")
@@ -2131,6 +2136,43 @@ 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, quote, and add PREFIX to each address in list of ADDRESSES, and return the result as a single string."
+  (mapconcat (lambda (x)
+              (concat prefix "\""
+                      ;; escape double-quotes
+                      (replace-regexp-in-string
+                       "\"" "\\\\\""
+                       ;; trim leading and trailing spaces
+                       (replace-regexp-in-string
+                        "\\(^ *\\| *$\\)" ""
+                        x)) "\""))
+            addresses " "))
+
+(put 'notmuch-show-stash-git-send-email 'notmuch-prefix-doc
+     "Copy From/To/Cc of current message to kill-ring in a form suitable for pasting to git send-email command line.")
+
+(defun notmuch-show-stash-git-send-email (&optional no-in-reply-to)
+  "Copy From/To/Cc/Message-Id of current message to kill-ring in a form suitable for pasting to git send-email command line.
+
+If invoked with a prefix argument (or NO-IN-REPLY-TO is non-nil),
+omit --in-reply-to=<Message-Id>."
+  (interactive "P")
+  (notmuch-common-do-stash
+   (mapconcat 'identity
+             (remove ""
+                     (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=")
+                      (unless no-in-reply-to
+                        (notmuch-show-stash-git-helper
+                         (list (notmuch-show-get-message-id t)) "--in-reply-to="))))
+             " ")))
+
 ;; Interactive part functions and their helpers
 
 (defun notmuch-show-generate-part-buffer (message-id nth)