+(defun epa-display-error (context)
+ (unless (equal (epg-context-error-output context) "")
+ (let ((buffer (get-buffer-create "*Error*")))
+ (save-selected-window
+ (unless (and epa-error-buffer (buffer-live-p epa-error-buffer))
+ (setq epa-error-buffer (generate-new-buffer "*Error*")))
+ (if (get-buffer-window epa-error-buffer)
+ (delete-window (get-buffer-window epa-error-buffer)))
+ (with-current-buffer buffer
+ (let ((inhibit-read-only t)
+ buffer-read-only)
+ (erase-buffer)
+ (insert (format
+ (pcase (epg-context-operation context)
+ (`decrypt "Error while decrypting with \"%s\":")
+ (`verify "Error while verifying with \"%s\":")
+ (`sign "Error while signing with \"%s\":")
+ (`encrypt "Error while encrypting with \"%s\":")
+ (`import-keys "Error while importing keys with \"%s\":")
+ (`export-keys "Error while exporting keys with \"%s\":")
+ (_ "Error while executing \"%s\":\n\n"))
+ epg-gpg-program)
+ "\n\n"
+ (epg-context-error-output context)))
+ (epa-info-mode)
+ (goto-char (point-min)))
+ (display-buffer buffer)))))
+