From: vitaly Date: Thu, 28 May 2009 11:22:40 +0000 (+0000) Subject: Automatically decrypt pgp blocks in messages. X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=cd15149a727ee822b4645355c0e9220c3d0faf88;p=elisp%2Fsemi.git Automatically decrypt pgp blocks in messages. --- diff --git a/mime-pgp.el b/mime-pgp.el index 3a5b655..8f49a2e 100644 --- a/mime-pgp.el +++ b/mime-pgp.el @@ -270,6 +270,17 @@ (setq mime-view-temp-message-buffer message-buf)) (set-window-buffer p-win preview-buffer)))) +(defun mime-display-multipart/pgp-encrypted (entity situation) + (if pgg-decrypt-automatically + (let ((pgp-begin (point))) + (mime-insert-entity entity) + (goto-char pgp-begin) + (when (re-search-forward "^-+BEGIN PGP MESSAGE-+$" nil t) + (pgg-decrypt-region pgp-begin (point-max)) + (delete-region pgp-begin (point-max)) + (mime-display-entity + (mime-parse-buffer pgg-output-buffer)))) + (mime-display-multipart/mixed entity situation))) ;;; @ end ;;; diff --git a/pgg-def.el b/pgg-def.el index 5f8d722..403684f 100644 --- a/pgg-def.el +++ b/pgg-def.el @@ -58,6 +58,11 @@ :group 'pgg :type 'boolean) +(defcustom pgg-decrypt-automatically nil + "*If t, decrypt messages automatically." + :group 'pgg + :type 'boolean) + (defvar pgg-messages-coding-system nil "Coding system used when reading from a PGP external process.") diff --git a/semi-setup.el b/semi-setup.el index 0c1931c..2333877 100644 --- a/semi-setup.el +++ b/semi-setup.el @@ -79,6 +79,8 @@ it is used as hook to set." (if mime-setup-enable-pgp (eval-after-load "mime-view" '(progn + (require 'mime-pgp) + (mime-add-condition 'preview '((type . application)(subtype . pgp) (message-button . visible))) @@ -136,6 +138,12 @@ it is used as hook to set." '((type . application)(subtype . x-pkcs7-mime) (method . mime-view-application/pkcs7-mime)) 'strict "mime-pgp") + + (ctree-set-calist-strictly + 'mime-preview-condition + '((type . multipart) (subtype . encrypted) ("protocol" . "application/pgp-encrypted") + (body . visible) + (body-presentation-method . mime-display-multipart/pgp-encrypted))) )) )