(require 'epg)
(require 'notmuch-lib)
+(declare-function notmuch-show-get-message-id "notmuch-show" (&optional bare))
+
(defcustom notmuch-crypto-process-mime t
"Should cryptographic MIME parts be processed?
:type 'boolean
:group 'notmuch-crypto)
+(defcustom notmuch-crypto-gpg-program epg-gpg-program
+ "The gpg executable."
+ :type 'string
+ :group 'notmuch-crypto)
+
(defface notmuch-crypto-part-header
'((((class color)
(background dark))
(insert "\n"))))
(defun notmuch-crypto-sigstatus-good-callback (button)
- (let* ((sigstatus (button-get button :notmuch-sigstatus))
+ (let* ((id (notmuch-show-get-message-id))
+ (sigstatus (button-get button :notmuch-sigstatus))
(fingerprint (concat "0x" (plist-get sigstatus :fingerprint)))
(buffer (get-buffer-create "*notmuch-crypto-gpg-out*"))
(window (display-buffer buffer)))
(with-selected-window window
(with-current-buffer buffer
(goto-char (point-max))
- (call-process epg-gpg-program nil t t "--batch" "--no-tty" "--list-keys" fingerprint))
+ (insert (format "-- Key %s in message %s:\n"
+ fingerprint id))
+ (call-process notmuch-crypto-gpg-program nil t t "--batch" "--no-tty" "--list-keys" fingerprint))
(recenter -1))))
(declare-function notmuch-show-refresh-view "notmuch-show" (&optional reset-state))
+(declare-function notmuch-show-get-message-id "notmuch-show" (&optional bare))
(defun notmuch-crypto--async-key-sentinel (process event)
"When the user asks for a GPG key to be retrieved
(progn
(notmuch-crypto--set-button-label
button (format "Retrieving key %s asynchronously..." keyid))
+ (with-current-buffer buffer
+ (goto-char (point-max))
+ (insert (format "--- Retrieving key %s:\n" keyid)))
(let ((p (make-process :name "notmuch GPG key retrieval"
- :buffer buffer
- :command (list epg-gpg-program "--recv-keys" keyid)
:connection-type 'pipe
- :sentinel #'notmuch-crypto--async-key-sentinel
- ;; Create the process stopped so that
- ;; we have time to store the key id,
- ;; etc. on it.
- :stop t)))
+ :buffer buffer
+ :stderr buffer
+ :command (list notmuch-crypto-gpg-program "--recv-keys" keyid)
+ :sentinel #'notmuch-crypto--async-key-sentinel)))
(process-put p :gpg-key-id keyid)
(process-put p :notmuch-show-buffer (current-buffer))
(process-put p :notmuch-show-point (point))
- (message "Getting the GPG key %s asynchronously..." keyid)
- (continue-process p)))
+ (message "Getting the GPG key %s asynchronously..." keyid)))
+
(let ((window (display-buffer buffer)))
(with-selected-window window
(with-current-buffer buffer
(goto-char (point-max))
- (call-process epg-gpg-program nil t t "--recv-keys" keyid)
+ (insert (format "--- Retrieving key %s:\n" keyid))
+ (call-process notmuch-crypto-gpg-program nil t t "--recv-keys" keyid)
(insert "\n")
- (call-process epg-gpg-program nil t t "--list-keys" keyid))
+ (call-process notmuch-crypto-gpg-program nil t t "--list-keys" keyid))
(recenter -1))
(notmuch-show-refresh-view)))))