]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch-crypto.el
Merge branch 'release'
[notmuch] / emacs / notmuch-crypto.el
index 096dc5ecb742d9f2c81e7a952a7bfc8e463a081c..e376aa8022d237caee6781eb29eb28e4475dd2bd 100644 (file)
@@ -1,4 +1,4 @@
-;; notmuch-crypto.el --- functions for handling display of cryptographic metadata.
+;;; notmuch-crypto.el --- functions for handling display of cryptographic metadata.
 ;;
 ;; Copyright © Jameson Rollins
 ;;
 ;;
 ;; Copyright © Jameson Rollins
 ;;
 ;; General Public License for more details.
 ;;
 ;; You should have received a copy of the GNU General Public License
 ;; General Public License for more details.
 ;;
 ;; You should have received a copy of the GNU General Public License
-;; along with Notmuch.  If not, see <http://www.gnu.org/licenses/>.
+;; along with Notmuch.  If not, see <https://www.gnu.org/licenses/>.
 ;;
 ;; Authors: Jameson Rollins <jrollins@finestructure.net>
 
 ;;
 ;; Authors: Jameson Rollins <jrollins@finestructure.net>
 
+;;; Code:
+
+(require 'notmuch-lib)
+
 (defcustom notmuch-crypto-process-mime nil
   "Should cryptographic MIME parts be processed?
 
 (defcustom notmuch-crypto-process-mime nil
   "Should cryptographic MIME parts be processed?
 
@@ -31,47 +35,60 @@ on the success or failure of the verification process and on the
 validity of user ID of the signer.
 
 The effect of setting this variable can be seen temporarily by
 validity of user ID of the signer.
 
 The effect of setting this variable can be seen temporarily by
-viewing a signed or encrypted message with M-RET in notmuch
-search."
-  :group 'notmuch
-  :type 'boolean)
+providing a prefix when viewing a signed or encrypted message, or
+by providing a prefix when reloading the message in notmuch-show
+mode."
+  :type 'boolean
+  :group 'notmuch-crypto)
+
+(defface notmuch-crypto-part-header
+  '((t (:foreground "blue")))
+  "Face used for crypto parts headers."
+  :group 'notmuch-crypto
+  :group 'notmuch-faces)
 
 (defface notmuch-crypto-signature-good
   '((t (:background "green" :foreground "black")))
   "Face used for good signatures."
 
 (defface notmuch-crypto-signature-good
   '((t (:background "green" :foreground "black")))
   "Face used for good signatures."
-  :group 'notmuch)
+  :group 'notmuch-crypto
+  :group 'notmuch-faces)
 
 (defface notmuch-crypto-signature-good-key
   '((t (:background "orange" :foreground "black")))
   "Face used for good signatures."
 
 (defface notmuch-crypto-signature-good-key
   '((t (:background "orange" :foreground "black")))
   "Face used for good signatures."
-  :group 'notmuch)
+  :group 'notmuch-crypto
+  :group 'notmuch-faces)
 
 (defface notmuch-crypto-signature-bad
   '((t (:background "red" :foreground "black")))
   "Face used for bad signatures."
 
 (defface notmuch-crypto-signature-bad
   '((t (:background "red" :foreground "black")))
   "Face used for bad signatures."
-  :group 'notmuch)
+  :group 'notmuch-crypto
+  :group 'notmuch-faces)
 
 (defface notmuch-crypto-signature-unknown
   '((t (:background "red" :foreground "black")))
   "Face used for signatures of unknown status."
 
 (defface notmuch-crypto-signature-unknown
   '((t (:background "red" :foreground "black")))
   "Face used for signatures of unknown status."
-  :group 'notmuch)
+  :group 'notmuch-crypto
+  :group 'notmuch-faces)
 
 (defface notmuch-crypto-decryption
   '((t (:background "purple" :foreground "black")))
   "Face used for encryption/decryption status messages."
 
 (defface notmuch-crypto-decryption
   '((t (:background "purple" :foreground "black")))
   "Face used for encryption/decryption status messages."
-  :group 'notmuch)
+  :group 'notmuch-crypto
+  :group 'notmuch-faces)
 
 (define-button-type 'notmuch-crypto-status-button-type
 
 (define-button-type 'notmuch-crypto-status-button-type
-  'action '(lambda (button) (message (button-get button 'help-echo)))
+  'action (lambda (button) (message (button-get button 'help-echo)))
   'follow-link t
   'follow-link t
-  'help-echo "Set notmuch-crypto-process-mime to process cryptographic mime parts.")
+  'help-echo "Set notmuch-crypto-process-mime to process cryptographic mime parts."
+  :supertype 'notmuch-button-type)
 
 (defun notmuch-crypto-insert-sigstatus-button (sigstatus from)
   (let* ((status (plist-get sigstatus :status))
         (help-msg nil)
         (label "Signature not processed")
         (face 'notmuch-crypto-signature-unknown)
 
 (defun notmuch-crypto-insert-sigstatus-button (sigstatus from)
   (let* ((status (plist-get sigstatus :status))
         (help-msg nil)
         (label "Signature not processed")
         (face 'notmuch-crypto-signature-unknown)
-        (button-action '(lambda (button) (message (button-get button 'help-echo)))))
+        (button-action (lambda (button) (message (button-get button 'help-echo)))))
     (cond
      ((string= status "good")
       (let ((fingerprint (concat "0x" (plist-get sigstatus :fingerprint))))
     (cond
      ((string= status "good")
       (let ((fingerprint (concat "0x" (plist-get sigstatus :fingerprint))))
@@ -89,14 +106,14 @@ search."
       (let ((keyid (concat "0x" (plist-get sigstatus :keyid))))
        (setq label (concat "Unknown key ID " keyid " or unsupported algorithm"))
        (setq button-action 'notmuch-crypto-sigstatus-error-callback)
       (let ((keyid (concat "0x" (plist-get sigstatus :keyid))))
        (setq label (concat "Unknown key ID " keyid " or unsupported algorithm"))
        (setq button-action 'notmuch-crypto-sigstatus-error-callback)
-       (setq help-msg (concat "Click to retreive key ID " keyid " from keyserver and redisplay."))))
+       (setq help-msg (concat "Click to retrieve key ID " keyid " from keyserver and redisplay."))))
      ((string= status "bad")
       (let ((keyid (concat "0x" (plist-get sigstatus :keyid))))
        (setq label (concat "Bad signature (claimed key ID " keyid ")"))
        (setq face 'notmuch-crypto-signature-bad)))
      (t
      ((string= status "bad")
       (let ((keyid (concat "0x" (plist-get sigstatus :keyid))))
        (setq label (concat "Bad signature (claimed key ID " keyid ")"))
        (setq face 'notmuch-crypto-signature-bad)))
      (t
-      (setq label "Unknown signature status")
-      (if status (setq label (concat label " \"" status "\"")))))
+      (setq label (concat "Unknown signature status"
+                         (if status (concat ": " status))))))
     (insert-button
      (concat "[ " label " ]")
      :type 'notmuch-crypto-status-button-type
     (insert-button
      (concat "[ " label " ]")
      :type 'notmuch-crypto-status-button-type
@@ -108,7 +125,7 @@ search."
      :notmuch-from from)
     (insert "\n")))
 
      :notmuch-from from)
     (insert "\n")))
 
-(declare-function notmuch-show-refresh-view "notmuch-show" (&optional crypto-switch))
+(declare-function notmuch-show-refresh-view "notmuch-show" (&optional reset-state))
 
 (defun notmuch-crypto-sigstatus-good-callback (button)
   (let* ((sigstatus (button-get button :notmuch-sigstatus))
 
 (defun notmuch-crypto-sigstatus-good-callback (button)
   (let* ((sigstatus (button-get button :notmuch-sigstatus))
@@ -117,6 +134,7 @@ search."
         (window (display-buffer buffer t nil)))
     (with-selected-window window
       (with-current-buffer buffer
         (window (display-buffer buffer t nil)))
     (with-selected-window window
       (with-current-buffer buffer
+       (goto-char (point-max))
        (call-process "gpg" nil t t "--list-keys" fingerprint))
       (recenter -1))))
 
        (call-process "gpg" nil t t "--list-keys" fingerprint))
       (recenter -1))))
 
@@ -127,6 +145,7 @@ search."
         (window (display-buffer buffer t nil)))
     (with-selected-window window
       (with-current-buffer buffer
         (window (display-buffer buffer t nil)))
     (with-selected-window window
       (with-current-buffer buffer
+       (goto-char (point-max))
        (call-process "gpg" nil t t "--recv-keys" keyid)
        (insert "\n")
        (call-process "gpg" nil t t "--list-keys" keyid))
        (call-process "gpg" nil t t "--recv-keys" keyid)
        (insert "\n")
        (call-process "gpg" nil t t "--list-keys" keyid))
@@ -144,7 +163,8 @@ search."
      ((string= status "bad")
       (setq label "Decryption error"))
      (t
      ((string= status "bad")
       (setq label "Decryption error"))
      (t
-      (setq label (concat "Unknown encstatus \"" status "\""))))
+      (setq label (concat "Unknown encryption status"
+                         (if status (concat ": " status))))))
     (insert-button
      (concat "[ " label " ]")
      :type 'notmuch-crypto-status-button-type
     (insert-button
      (concat "[ " label " ]")
      :type 'notmuch-crypto-status-button-type
@@ -156,3 +176,5 @@ search."
 ;;
 
 (provide 'notmuch-crypto)
 ;;
 
 (provide 'notmuch-crypto)
+
+;;; notmuch-crypto.el ends here