:type 'boolean
:group 'epa)
+(defcustom epa-popup-info-window t
+ "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)
(epg-sub-key-id (car (epg-key-sub-key-list
(widget-get widget :value))))))
+(defun epa--temp-buffer-show-function (buffer)
+ (save-selected-window
+ (let ((window (or (get-buffer-window buffer)
+ (progn
+ (select-window (get-largest-window))
+ (split-window-vertically)))))
+ (set-window-buffer window buffer)
+ (if window
+ (select-window window))
+ (unless (pos-visible-in-window-p (point-max))
+ (enlarge-window (- epa-info-window-height (window-height))))
+ (let ((height (window-height)))
+ (if (> height epa-info-window-height)
+ (shrink-window (- height epa-info-window-height)))
+ (set-window-start window (point-min))))))
+
+(defun epa-display-verify-result (verify-result)
+ (if epa-popup-info-window
+ (let ((temp-buffer-show-function #'epa--temp-buffer-show-function))
+ (with-output-to-temp-buffer "*Info*"
+ (save-excursion
+ (set-buffer standard-output)
+ (insert (epg-verify-result-to-string verify-result)))))
+ (message "%s" (epg-verify-result-to-string verify-result))))
+
(defun epa-keys-mode ()
"Major mode for `epa-list-keys'."
(kill-all-local-variables)
(or (next-single-property-change point 'epa-list-keys)
(point-max)))
(goto-char point))
- (epa-list-keys-1 context name mode)
+ (epa-insert-keys context name mode)
(epa-keys-mode))
(make-local-variable 'epa-list-keys-arguments)
(setq epa-list-keys-arguments (list name mode protocol))
(goto-char (point-min))
(pop-to-buffer (current-buffer)))
-(defun epa--list-keys-1 (context name mode)
- (save-restriction
- (narrow-to-region (point) (point))
- (let ((inhibit-read-only t)
- buffer-read-only
- (keys (epg-list-keys context name mode))
- point)
- (while keys
- (setq point (point))
- (insert " ")
- (put-text-property point (point) 'epa-key (car keys))
- (widget-create 'epa-key :value (car keys))
- (insert "\n")
- (setq keys (cdr keys))))
- (put-text-property (point-min) (point-max) 'epa-list-keys t)))
+(defun epa-insert-keys (context name mode)
+ (save-excursion
+ (save-restriction
+ (narrow-to-region (point) (point))
+ (let ((keys (epg-list-keys context name mode))
+ point)
+ (while keys
+ (setq point (point))
+ (insert " ")
+ (add-text-properties point (point)
+ (list 'epa-key (car keys)
+ 'front-sticky nil
+ 'rear-nonsticky t
+ 'start-open t
+ 'end-open t))
+ (widget-create 'epa-key :value (car keys))
+ (insert "\n")
+ (setq keys (cdr keys))))
+ (add-text-properties (point-min) (point-max)
+ (list 'epa-list-keys t
+ 'front-sticky nil
+ 'rear-nonsticky t
+ 'start-open t
+ 'end-open t)))))
(defun epa-marked-keys ()
(or (save-excursion
(if names
(while names
(setq point (point))
- (epa--list-keys-1 context (car names) secret)
+ (epa-insert-keys context (car names) secret)
(goto-char point)
(epa-mark)
(goto-char (point-max))
(setq names (cdr names)))
- (epa--list-keys-1 context nil secret))
+ (epa-insert-keys context nil secret))
(epa-keys-mode)
(setq epa-exit-buffer-function #'abort-recursive-edit)
(goto-char (point-min))
(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)