;;; epa.el --- the EasyPG Assistant -*- lexical-binding: t -*-
-;; Copyright (C) 2006-2015 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2016 Free Software Foundation, Inc.
;; Author: Daiki Ueno <ueno@unixuser.org>
;; Keywords: PGP, GnuPG
:link '(custom-manual "(epa) Top")
:group 'epg)
+(defcustom epa-replace-original-text 'ask
+ "Whether the original text shall be replaced by the decrypted.
+
+If t, replace the original text without any confirmation.
+If nil, don't replace the original text and show the result in a new buffer.
+If neither t nor nil, ask user for confirmation."
+ :type '(choice (const :tag "Never" nil)
+ (const :tag "Ask the user" ask)
+ (const :tag "Always" t))
+ :group 'epa)
+
(defcustom epa-popup-info-window t
"If non-nil, display status information from epa commands in another window."
:type 'boolean
(define-key keymap "q" 'delete-window)
keymap))
-(defvar epa-exit-buffer-function #'bury-buffer)
+(defvar epa-exit-buffer-function #'quit-window)
(define-widget 'epa-key 'push-button
"Button for representing a epg-key object."
(widget-create 'link
:notify (lambda (&rest _ignore) (abort-recursive-edit))
:help-echo
- (substitute-command-keys
- "Click here or \\[abort-recursive-edit] to cancel")
+ "Click here or \\[abort-recursive-edit] to cancel"
"Cancel")
(widget-create 'link
:notify (lambda (&rest _ignore) (exit-recursive-edit))
:help-echo
- (substitute-command-keys
- "Click here or \\[exit-recursive-edit] to finish")
+ "Click here or \\[exit-recursive-edit] to finish"
"OK")
(insert "\n\n")
(epa--insert-keys keys)
For example:
-\(let ((context (epg-make-context 'OpenPGP)))
+\(let ((context (epg-make-context \\='OpenPGP)))
(decode-coding-string
(epg-decrypt-string context (buffer-substring start end))
- 'utf-8))"
+ \\='utf-8))"
(interactive "r")
(save-excursion
(let ((context (epg-make-context epa-protocol))
(with-current-buffer (funcall make-buffer-function)
(let ((inhibit-read-only t))
(insert plain)))
- (if (y-or-n-p "Replace the original text? ")
+ (if (or (eq epa-replace-original-text t)
+ (and epa-replace-original-text
+ (y-or-n-p "Replace the original text? ")))
(let ((inhibit-read-only t))
(delete-region start end)
(goto-char start)
For example:
-\(let ((context (epg-make-context 'OpenPGP)))
+\(let ((context (epg-make-context \\='OpenPGP)))
(decode-coding-string
(epg-verify-string context (buffer-substring start end))
- 'utf-8))"
+ \\='utf-8))"
(declare (interactive-only t))
(interactive "r")
(let ((context (epg-make-context epa-protocol))
(or coding-system-for-read
(get-text-property start 'epa-coding-system-used)
'undecided)))
- (if (y-or-n-p "Replace the original text? ")
+ (if (or (eq epa-replace-original-text t)
+ (and epa-replace-original-text
+ (y-or-n-p "Replace the original text? ")))
(let ((inhibit-read-only t)
buffer-read-only)
(delete-region start end)
For example:
-\(let ((context (epg-make-context 'OpenPGP)))
+\(let ((context (epg-make-context \\='OpenPGP)))
(epg-sign-string
context
- (encode-coding-string (buffer-substring start end) 'utf-8)))"
+ (encode-coding-string (buffer-substring start end) \\='utf-8)))"
(declare (interactive-only t))
(interactive
(let ((verbose current-prefix-arg))
For example:
-\(let ((context (epg-make-context 'OpenPGP)))
+\(let ((context (epg-make-context \\='OpenPGP)))
(epg-encrypt-string
context
- (encode-coding-string (buffer-substring start end) 'utf-8)
+ (encode-coding-string (buffer-substring start end) \\='utf-8)
nil))"
(declare (interactive-only t))
(interactive