;;; epa.el --- the EasyPG Assistant -*- lexical-binding: t -*-
-;; Copyright (C) 2006-2012 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2013 Free Software Foundation, Inc.
;; Author: Daiki Ueno <ueno@unixuser.org>
;; Keywords: PGP, GnuPG
:group 'epa)
(defface epa-validity-high
- `((((class color) (background dark))
- (:foreground "PaleTurquoise"
- ,@(if (assq ':weight custom-face-attributes)
- '(:weight bold)
- '(:bold t))))
- (t
- (,@(if (assq ':weight custom-face-attributes)
- '(:weight bold)
- '(:bold t)))))
- "Face used for displaying the high validity."
+ '((default :weight bold)
+ (((class color) (background dark)) :foreground "PaleTurquoise"))
+ "Face for high validity EPA information."
:group 'epa-faces)
(defface epa-validity-medium
- `((((class color) (background dark))
- (:foreground "PaleTurquoise"
- ,@(if (assq ':slant custom-face-attributes)
- '(:slant italic)
- '(:italic t))))
- (t
- (,@(if (assq ':slant custom-face-attributes)
- '(:slant italic)
- '(:italic t)))))
- "Face used for displaying the medium validity."
+ '((default :slant italic)
+ (((class color) (background dark)) :foreground "PaleTurquoise"))
+ "Face for medium validity EPA information."
:group 'epa-faces)
(defface epa-validity-low
- `((t
- (,@(if (assq ':slant custom-face-attributes)
- '(:slant italic)
- '(:italic t)))))
+ '((t :slant italic))
"Face used for displaying the low validity."
:group 'epa-faces)
(defface epa-validity-disabled
- `((t
- (,@(if (assq ':slant custom-face-attributes)
- '(:slant italic)
- '(:italic t))
- :inverse-video t)))
+ '((t :slant italic :inverse-video t))
"Face used for displaying the disabled validity."
:group 'epa-faces)
(defface epa-string
'((((class color) (background dark))
- (:foreground "lightyellow"))
+ :foreground "lightyellow")
(((class color) (background light))
- (:foreground "blue4")))
+ :foreground "blue4"))
"Face used for displaying the string."
:group 'epa-faces)
(defface epa-mark
- `((((class color) (background dark))
- (:foreground "orange"
- ,@(if (assq ':weight custom-face-attributes)
- '(:weight bold)
- '(:bold t))))
- (((class color) (background light))
- (:foreground "red"
- ,@(if (assq ':weight custom-face-attributes)
- '(:weight bold)
- '(:bold t))))
- (t
- (,@(if (assq ':weight custom-face-attributes)
- '(:weight bold)
- '(:bold t)))))
+ '((default :weight bold)
+ (((class color) (background dark)) :foreground "orange")
+ (((class color) (background light)) :foreground "red"))
"Face used for displaying the high validity."
:group 'epa-faces)
(defface epa-field-name
- `((((class color) (background dark))
- (:foreground "PaleTurquoise"
- ,@(if (assq ':weight custom-face-attributes)
- '(:weight bold)
- '(:bold t))))
- (t
- (,@(if (assq ':weight custom-face-attributes)
- '(:weight bold)
- '(:bold t)))))
+ '((default :weight bold)
+ (((class color) (background dark)) :foreground "PaleTurquoise"))
"Face for the name of the attribute field."
:group 'epa)
(defface epa-field-body
- `((((class color) (background dark))
- (:foreground "turquoise"
- ,@(if (assq ':slant custom-face-attributes)
- '(:slant italic)
- '(:italic t))))
- (t
- (,@(if (assq ':slant custom-face-attributes)
- '(:slant italic)
- '(:italic t)))))
+ '((default :slant italic)
+ (((class color) (background dark)) :foreground "turquoise"))
"Face for the body of the attribute field."
:group 'epa)
(20 . ?G)))
(defvar epa-protocol 'OpenPGP
- "*The default protocol.
+ "The default protocol.
The value can be either OpenPGP or CMS.
You should bind this variable with `let', but do not set it globally.")
(defvar epa-armor nil
- "*If non-nil, epa commands create ASCII armored output.
+ "If non-nil, epa commands create ASCII armored output.
You should bind this variable with `let', but do not set it globally.")
(defvar epa-textmode nil
- "*If non-nil, epa commands treat input files as text.
+ "If non-nil, epa commands treat input files as text.
You should bind this variable with `let', but do not set it globally.")
(define-key keymap "n" 'next-line)
(define-key keymap "p" 'previous-line)
(define-key keymap " " 'scroll-up-command)
+ (define-key keymap [?\S-\ ] 'scroll-down-command)
(define-key keymap [delete] 'scroll-down-command)
(define-key keymap "q" 'epa-exit-buffer)
(define-key keymap [menu-bar epa-key-list-mode] (cons "Keys" menu-map))
(setq epa-keys-buffer (generate-new-buffer "*Keys*")))
(with-current-buffer epa-keys-buffer
(epa-key-list-mode)
+ ;; C-c C-c is the usual way to finish the selection (bug#11159).
+ (define-key (current-local-map) "\C-c\C-c" 'exit-recursive-edit)
(let ((inhibit-read-only t)
buffer-read-only)
(erase-buffer)
(message "%s" info)))
(defun epa-display-verify-result (verify-result)
+ (declare (obsolete epa-display-info "23.1"))
(epa-display-info (epg-verify-result-to-string verify-result)))
-(make-obsolete 'epa-display-verify-result 'epa-display-info "23.1")
(defun epa-passphrase-callback-function (context key-id handback)
(if (eq key-id 'SYM)
(floor (* (/ current (float total)) 100))))
(message "%s..." prompt))))
+(defun epa-read-file-name (input)
+ "Interactively read an output file name based on INPUT file name."
+ (setq input (file-name-sans-extension (expand-file-name input)))
+ (expand-file-name
+ (read-file-name
+ (concat "To file (default " (file-name-nondirectory input) ") ")
+ (file-name-directory input)
+ input)))
+
;;;###autoload
-(defun epa-decrypt-file (file)
- "Decrypt FILE."
- (interactive "fFile: ")
- (setq file (expand-file-name file))
- (let* ((default-name (file-name-sans-extension file))
- (plain (expand-file-name
- (read-file-name
- (concat "To file (default "
- (file-name-nondirectory default-name)
- ") ")
- (file-name-directory default-name)
- default-name)))
- (context (epg-make-context epa-protocol)))
+(defun epa-decrypt-file (decrypt-file &optional plain-file)
+ "Decrypt DECRYPT-FILE into PLAIN-FILE.
+If you do not specify PLAIN-FILE, this functions prompts for the value to use."
+ (interactive
+ (let* ((file (read-file-name "File to decrypt: "))
+ (plain (epa-read-file-name file)))
+ (list file plain)))
+ (or plain-file (setq plain-file (epa-read-file-name decrypt-file)))
+ (setq decrypt-file (expand-file-name decrypt-file))
+ (let ((context (epg-make-context epa-protocol)))
(epg-context-set-passphrase-callback context
#'epa-passphrase-callback-function)
(epg-context-set-progress-callback context
(cons
#'epa-progress-callback-function
(format "Decrypting %s..."
- (file-name-nondirectory file))))
- (message "Decrypting %s..." (file-name-nondirectory file))
- (epg-decrypt-file context file plain)
- (message "Decrypting %s...wrote %s" (file-name-nondirectory file)
- (file-name-nondirectory plain))
+ (file-name-nondirectory decrypt-file))))
+ (message "Decrypting %s..." (file-name-nondirectory decrypt-file))
+ (epg-decrypt-file context decrypt-file plain-file)
+ (message "Decrypting %s...wrote %s" (file-name-nondirectory decrypt-file)
+ (file-name-nondirectory plain-file))
(if (epg-context-result-for context 'verify)
(epa-display-info (epg-verify-result-to-string
(epg-context-result-for context 'verify))))))
"Insert selected KEYS after the point."
(interactive
(list (epa-select-keys (epg-make-context epa-protocol)
- "Select keys to export. ")))
+ "Select keys to export.
+If no one is selected, default public key is exported. ")))
(let ((context (epg-make-context epa-protocol)))
;;(epg-context-set-armor context epa-armor)
(epg-context-set-armor context t)