:type 'boolean
:group 'epa)
+(defcustom epa-popup-info-window nil
+ "If non-nil, status information from epa commands is displayed on
+the separate window."
+ :type 'boolean
+ :group 'epa)
+
+(defcustom epa-info-window-height 5
+ "Number of lines used to display status information."
+ :type 'integer
+ :group 'epa)
+
(defgroup epa-faces nil
"Faces for epa-mode."
:group 'epa)
(defvar epa-key-buffer-alist nil)
(defvar epa-key nil)
(defvar epa-list-keys-arguments nil)
+(defvar epa-info-buffer nil)
(defvar epa-keys-mode-map
(let ((keymap (make-sparse-keymap)))
(define-key keymap "q" 'epa-exit-buffer)
keymap))
+(defvar epa-key-mode-map
+ (let ((keymap (make-sparse-keymap)))
+ (define-key keymap "q" 'bury-buffer)
+ keymap))
+
+(defvar epa-info-mode-map
+ (let ((keymap (make-sparse-keymap)))
+ (define-key keymap "q" 'delete-window)
+ keymap))
+
(defvar epa-exit-buffer-function #'bury-buffer)
(define-widget 'epa-key 'push-button
(make-local-variable 'epa-exit-buffer-function)
(run-hooks 'epa-keys-mode-hook))
-(defvar epa-key-mode-map
- (let ((keymap (make-sparse-keymap)))
- (define-key keymap "q" 'bury-buffer)
- keymap))
-
(defun epa-key-mode ()
"Major mode for `epa-show-key'."
(kill-all-local-variables)
(cdr (assq (epg-sub-key-algorithm (car pointer))
epg-pubkey-algorithm-alist))
"\n\tCreated: "
- (epg-sub-key-creation-time (car pointer))
+ (format-time-string "%Y-%m-%d"
+ (epg-sub-key-creation-time (car pointer)))
(if (epg-sub-key-expiration-time (car pointer))
- (format "\n\tExpires: %s" (epg-sub-key-expiration-time
- (car pointer)))
+ (format "\n\tExpires: %s"
+ (format-time-string "%Y-%m-%d"
+ (epg-sub-key-expiration-time
+ (car pointer))))
"")
"\n\tCapabilities: "
(mapconcat #'symbol-name
(interactive)
(funcall epa-exit-buffer-function))
+(defun epa-display-verify-result (verify-result)
+ (if epa-popup-info-window
+ (progn
+ (unless epa-info-buffer
+ (setq epa-info-buffer (generate-new-buffer "*Info*")))
+ (save-excursion
+ (set-buffer epa-info-buffer)
+ (let ((inhibit-read-only t)
+ buffer-read-only)
+ (erase-buffer)
+ (insert (epg-verify-result-to-string verify-result)))
+ (epa-info-mode))
+ (pop-to-buffer epa-info-buffer)
+ (if (> (window-height) epa-info-window-height)
+ (shrink-window (- (window-height) epa-info-window-height)))
+ (goto-char (point-min)))
+ (message "%s" (epg-verify-result-to-string verify-result))))
+
+(defun epa-info-mode ()
+ "Major mode for `epa-info-buffer'."
+ (kill-all-local-variables)
+ (buffer-disable-undo)
+ (setq major-mode 'epa-info-mode
+ mode-name "Info"
+ truncate-lines t
+ buffer-read-only t)
+ (use-local-map epa-info-mode-map)
+ (run-hooks 'epa-info-mode-hook))
+
;;;###autoload
(defun epa-decrypt-file (file)
"Decrypt FILE."
(epg-decrypt-file context file plain)
(message "Decrypting %s...done" (file-name-nondirectory file))
(if (epg-context-result-for context 'verify)
- (message "%s"
- (epg-verify-result-to-string
- (epg-context-result-for context 'verify))))))
+ (epa-display-verify-result (epg-context-result-for context 'verify)))))
;;;###autoload
(defun epa-verify-file (file)
(message "Verifying %s..." (file-name-nondirectory file))
(epg-verify-file context file plain)
(message "Verifying %s...done" (file-name-nondirectory file))
- (message "%s"
- (epg-verify-result-to-string
- (epg-context-result-for context 'verify)))))
+ (if (epg-context-result-for context 'verify)
+ (epa-display-verify-result (epg-context-result-for context 'verify)))))
;;;###autoload
(defun epa-sign-file (file signers mode)
(goto-char start)
(insert (decode-coding-string plain coding-system-for-read))
(if (epg-context-result-for context 'verify)
- (message "%s"
- (epg-verify-result-to-string
- (epg-context-result-for context 'verify)))))))
+ (epa-display-verify-result (epg-context-result-for context 'verify))))))
;;;###autoload
(defun epa-decrypt-armor-in-region (start end)
(encode-coding-string
(buffer-substring start end)
coding-system-for-write))
- (message "%s"
- (epg-verify-result-to-string
- (epg-context-result-for context 'verify)))))
+ (if (epg-context-result-for context 'verify)
+ (epa-display-verify-result (epg-context-result-for context 'verify)))))
;;;###autoload
(defun epa-verify-armor-in-region (start end)