aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Olson <[email protected]>2008-02-10 20:57:47 +0000
committerMichael Olson <[email protected]>2008-02-10 20:57:47 +0000
commitf1914c4078082de71933f6cdf7735411e488d045 (patch)
treecfb6b673ff2bb8fdd02e1a5aa7b7e5e96c0d6f18
parentc6588a85bcb0bdcd615f4f34496d71943120e7ae (diff)
EasyPG: Implement some suggestions from emacs-devel.
-rw-r--r--doc/misc/ChangeLog5
-rw-r--r--doc/misc/epa.texi24
-rw-r--r--lisp/ChangeLog20
-rw-r--r--lisp/epa-dired.el8
-rw-r--r--lisp/epa-file.el18
-rw-r--r--lisp/epa-mail.el9
-rw-r--r--lisp/epa.el74
-rw-r--r--lisp/epg-config.el9
-rw-r--r--lisp/epg.el4
9 files changed, 156 insertions, 15 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 005728ae4b..f88471754c 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,8 @@
+2008-02-10 Daiki Ueno <[email protected]>
+
+ * epa.texi (Quick start): Use the command `epa-enable' instead of
+ loading `epa-setup'.
+
2008-02-08 Juanma Barranquero <[email protected]>
* makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean): Add epa.
diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi
index f47f5c2921..08f3fb4178 100644
--- a/doc/misc/epa.texi
+++ b/doc/misc/epa.texi
@@ -77,26 +77,28 @@ EasyPG Assistant provides the following features.
@node Quick start
@chapter Quick start
-To install, just follow the standard CMMI installation instructions.
+@c To install, just follow the standard CMMI installation instructions.
-@cartouche
-@example
-$ ./configure
-$ sudo make install
-@end example
-@end cartouche
+@c @cartouche
+@c @example
+@c $ ./configure
+@c $ sudo make install
+@c @end example
+@c @end cartouche
-@noindent
-Then, add the following line to your @file{~/.emacs}
+@c @noindent
+@c Then, add the following line to your @file{~/.emacs}
+
+Add the following line to your @file{~/.emacs}.
@cartouche
@lisp
-(require 'epa-setup)
+(epa-mode 1)
@end lisp
@end cartouche
@noindent
-That's all. Restart emacs and type @kbd{M-x epa- @key{TAB}}, and you will see a
+Restart emacs and type @kbd{M-x epa- @key{TAB}}, and you will see a
lot of commands available. For example,
@itemize @bullet
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f2c662e03c..c19e27d04d 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,23 @@
+2008-02-10 Daiki Ueno <[email protected]>
+
+ * epg-config.el: Expand the contents of epg-package-info.el.
+ (epg-package-name): New constant.
+ (epg-version-number): New constant.
+ (epg-bug-report-address): New constant.
+
+ * epa-mail.el (epa-mail-mode): Add autoload cookie.
+ (epa-mail-minor-mode): New global minor mode.
+
+ * epa-file.el (epa-file-mode): New global minor mode.
+
+ * epa-dired.el (epa-dired-mode): New global minor mode.
+
+ * epa.el (epa-menu): New variable.
+ (epa-menu-items): New variable.
+ (epa-menu-mode): New global minor mode.
+ (epa-global-minor-modes): New user option.
+ (epa-mode): New global minor mode.
+
2008-02-10 Michael Albinus <[email protected]>
* net/dbus.el: Remove `no-byte-compile' cookie.
diff --git a/lisp/epa-dired.el b/lisp/epa-dired.el
index 945dd97b76..ab0bf7d92a 100644
--- a/lisp/epa-dired.el
+++ b/lisp/epa-dired.el
@@ -82,6 +82,14 @@ If no one is selected, symmetric encryption will be performed. "))
(setq file-list (cdr file-list)))
(revert-buffer)))
+;;;###autoload
+(define-minor-mode epa-dired-mode
+ "Minor mode to hook EasyPG into Dired."
+ :global t :init-value nil :group 'epa-dired :version "23.1"
+ (remove-hook 'dired-mode-hook 'epa-dired-mode-hook)
+ (if epa-dired-mode
+ (add-hook 'dired-mode-hook 'epa-dired-mode-hook)))
+
(provide 'epa-dired)
;; arch-tag: 2025700b-48d0-4684-bc94-228ad1f8e9ff
diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index c753d4c37a..e3c4a83deb 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -314,6 +314,24 @@ If no one is selected, symmetric encryption will be performed. ")))
(message "`epa-file' disabled"))
(message "`epa-file' already disabled")))
+;;;###autoload
+(define-minor-mode epa-file-mode
+ "Toggle automatic file encryption and decryption.
+With prefix argument ARG, turn auto encryption on if positive, else off.
+Return the new status of auto encryption (non-nil means on)."
+ :global t :init-value nil :group 'epa-file :version "23.1"
+ (setq file-name-handler-alist
+ (delq epa-file-handler file-name-handler-alist))
+ (remove-hook 'find-file-hooks 'epa-file-find-file-hook)
+ (setq auto-mode-alist (delq epa-file-auto-mode-alist-entry
+ auto-mode-alist))
+ (when epa-file-mode
+ (setq file-name-handler-alist
+ (cons epa-file-handler file-name-handler-alist))
+ (add-hook 'find-file-hooks 'epa-file-find-file-hook)
+ (setq auto-mode-alist (cons epa-file-auto-mode-alist-entry
+ auto-mode-alist))))
+
(provide 'epa-file)
;; arch-tag: 5715152f-0eb1-4dbc-9008-07098775314d
diff --git a/lisp/epa-mail.el b/lisp/epa-mail.el
index d1f1d3b529..0fcff2806c 100644
--- a/lisp/epa-mail.el
+++ b/lisp/epa-mail.el
@@ -40,6 +40,7 @@
(defvar epa-mail-mode-on-hook nil)
(defvar epa-mail-mode-off-hook nil)
+;;;###autoload
(define-minor-mode epa-mail-mode
"A minor-mode for composing encrypted/clearsigned mails."
nil " epa-mail" epa-mail-mode-map)
@@ -173,6 +174,14 @@ Don't use this command in Lisp programs!"
(interactive)
(epa-import-armor-in-region (point-min) (point-max)))
+;;;###autoload
+(define-minor-mode epa-mail-minor-mode
+ "Minor mode to hook EasyPG into Mail mode."
+ :global t :init-value nil :group 'epa-mail :version "23.1"
+ (remove-hook 'mail-mode-hook 'epa-mail-mode)
+ (if epa-mail-minor-mode
+ (add-hook 'mail-mode-hook 'epa-mail-mode)))
+
(provide 'epa-mail)
;; arch-tag: a6f82b3f-d177-4a11-af95-040da55927d2
diff --git a/lisp/epa.el b/lisp/epa.el
index ea1c4aad59..5d40a6345a 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -45,6 +45,14 @@ the separate window."
:type 'integer
:group 'epa)
+(defcustom epa-global-minor-modes '(epa-dired-mode
+ epa-file-mode
+ epa-mail-minor-mode
+ epa-menu-mode)
+ "Globally defined minor modes to hook into other modes."
+ :type '(repeat symbol)
+ :group 'epa)
+
(defgroup epa-faces nil
"Faces for epa-mode."
:version "23.1"
@@ -229,6 +237,44 @@ You should bind this variable with `let', but do not set it globally.")
(define-key keymap "q" 'delete-window)
keymap))
+(defvar epa-menu nil)
+
+(defconst epa-menu-items
+ '("EasyPG Assistant"
+ ("Decrypt"
+ ["File" epa-decrypt-file
+ :help "Decrypt a file"]
+ ["Region" epa-decrypt-region
+ :help "Decrypt the current region"])
+ ("Verify"
+ ["File" epa-verify-file
+ :help "Verify digital signature of a file"]
+ ["Region" epa-verify-region
+ :help "Verify digital signature of the current region"])
+ ("Sign"
+ ["File" epa-sign-file
+ :help "Create digital signature of a file"]
+ ["Region" epa-sign-region
+ :help "Create digital signature of the current region"])
+ ("Encrypt"
+ ["File" epa-encrypt-file
+ :help "Encrypt a file"]
+ ["Region" epa-encrypt-region
+ :help "Encrypt the current region"])
+ "----"
+ ["Browse keyring" epa-list-keys
+ :help "Browse your public keyring"]
+ ("Import keys"
+ ["File" epa-import-keys
+ :help "Import public keys from a file"]
+ ["Region" epa-import-keys-region
+ :help "Import public keys from the current region"])
+ ("Export key"
+ ["To a File" epa-export-keys
+ :help "Export public keys to a file"]
+ ["To a Buffer" epa-insert-keys
+ :help "Insert public keys after the current point"])))
+
(defvar epa-exit-buffer-function #'bury-buffer)
(define-widget 'epa-key 'push-button
@@ -372,7 +418,7 @@ If ARG is non-nil, mark the key."
'end-open t))
(widget-create 'epa-key :value (car keys))
(insert "\n")
- (setq keys (cdr keys))))
+ (setq keys (cdr keys))))
(add-text-properties (point-min) (point-max)
(list 'epa-list-keys t
'front-sticky nil
@@ -1173,6 +1219,32 @@ Don't use this command in Lisp programs!"
;; (message "Signing keys...done")))
;; (make-obsolete 'epa-sign-keys "Do not use.")
+;;;###autoload
+(define-minor-mode epa-menu-mode
+ "Minor mode to hook EasyPG into the menu-bar."
+ :global t :init-value nil :group 'epa :version "23.1"
+ (unless epa-menu
+ (easy-menu-define epa-menu nil "EasyPG Assistant global menu"
+ epa-menu-items))
+ (easy-menu-remove-item nil '("Tools") "EasyPG Assistant")
+ (if epa-menu-mode
+ (easy-menu-add-item nil '("Tools") epa-menu)))
+
+;;;###autoload
+(define-minor-mode epa-mode
+ "Minor mode to hook EasyPG into various modes.
+See `epa-global-minor-modes'."
+ :global t :init-value nil :group 'epa :version "23.1"
+ (let ((modes epa-global-minor-modes)
+ symbol)
+ (while modes
+ (setq symbol (car modes))
+ (if (and symbol
+ (fboundp symbol))
+ (funcall symbol (if epa-mode 1 0))
+ (message "`%S' not found" (car modes)))
+ (setq modes (cdr modes)))))
+
(provide 'epa)
;; arch-tag: 38d20ced-20d5-4137-b17a-f206335423d7
diff --git a/lisp/epg-config.el b/lisp/epg-config.el
index 1ac05d1ba5..f3dc946956 100644
--- a/lisp/epg-config.el
+++ b/lisp/epg-config.el
@@ -23,7 +23,14 @@
;;; Code:
-(require 'epg-package-info)
+(defconst epg-package-name "epg"
+ "Name of this package.")
+
+(defconst epg-version-number "1.0.0"
+ "Version number of this package.")
+
+(defconst epg-bug-report-address "[email protected]"
+ "Report bugs to this address.")
(defgroup epg ()
"The EasyPG Library"
diff --git a/lisp/epg.el b/lisp/epg.el
index 4e6824ac9e..cc07d6201d 100644
--- a/lisp/epg.el
+++ b/lisp/epg.el
@@ -1430,7 +1430,7 @@ This function is for internal use only."
signature
(string-to-number (match-string 4 string)))
(epg-signature-set-pubkey-algorithm
- signature
+ signature
(string-to-number (match-string 5 string)))
(epg-signature-set-digest-algorithm
signature
@@ -1744,7 +1744,7 @@ This function is for internal use only."
(defun epg-list-keys (context &optional name mode)
"Return a list of epg-key objects matched with NAME.
If MODE is nil or 'public, only public keyring should be searched.
-If MODE is t or 'secret, only secret keyring should be searched.
+If MODE is t or 'secret, only secret keyring should be searched.
Otherwise, only public keyring should be searched and the key
signatures should be included.
NAME is either a string or a list of strings."