Fix bug #14842 with doc strings of next-line and previous-line.
[bpt/emacs.git] / lisp / epa.el
index 4ce9aee..14f8879 100644 (file)
@@ -1,6 +1,6 @@
 ;;; epa.el --- the EasyPG Assistant -*- lexical-binding: t -*-
 
-;; Copyright (C) 2006-201 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2013 Free Software Foundation, Inc.
 
 ;; Author: Daiki Ueno <ueno@unixuser.org>
 ;; Keywords: PGP, GnuPG
@@ -50,97 +50,51 @@ the separate window."
   :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)
 
@@ -177,18 +131,18 @@ the separate window."
     (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.")
 
@@ -215,6 +169,7 @@ 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))
@@ -482,6 +437,8 @@ If ARG is non-nil, mark the key."
     (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)
@@ -629,8 +586,8 @@ If SECRET is non-nil, list secret keys instead of public keys."
     (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)
@@ -663,31 +620,37 @@ If SECRET is non-nil, list secret keys instead of public keys."
                   (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))))))
@@ -1236,7 +1199,8 @@ between START and END."
   "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)