diff options
author | Michael Olson <mwolson@gnu.org> | 2008-02-10 20:57:47 +0000 |
---|---|---|
committer | Michael Olson <mwolson@gnu.org> | 2008-02-10 20:57:47 +0000 |
commit | f1914c4078082de71933f6cdf7735411e488d045 (patch) | |
tree | cfb6b673ff2bb8fdd02e1a5aa7b7e5e96c0d6f18 /lisp | |
parent | c6588a85bcb0bdcd615f4f34496d71943120e7ae (diff) | |
download | emacs-f1914c4078082de71933f6cdf7735411e488d045.tar.gz |
EasyPG: Implement some suggestions from emacs-devel.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ChangeLog | 20 | ||||
-rw-r--r-- | lisp/epa-dired.el | 8 | ||||
-rw-r--r-- | lisp/epa-file.el | 18 | ||||
-rw-r--r-- | lisp/epa-mail.el | 9 | ||||
-rw-r--r-- | lisp/epa.el | 74 | ||||
-rw-r--r-- | lisp/epg-config.el | 9 | ||||
-rw-r--r-- | lisp/epg.el | 4 |
7 files changed, 138 insertions, 4 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f2c662e03c7..c19e27d04db 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,23 @@ +2008-02-10 Daiki Ueno <ueno@unixuser.org> + + * 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 <michael.albinus@gmx.de> * net/dbus.el: Remove `no-byte-compile' cookie. diff --git a/lisp/epa-dired.el b/lisp/epa-dired.el index 945dd97b767..ab0bf7d92a2 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 c753d4c37a0..e3c4a83deb8 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 d1f1d3b5295..0fcff2806ca 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 ea1c4aad593..5d40a6345a0 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 1ac05d1ba52..f3dc9469564 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 "ueno@unixuser.org" + "Report bugs to this address.") (defgroup epg () "The EasyPG Library" diff --git a/lisp/epg.el b/lisp/epg.el index 4e6824ac9e0..cc07d6201d6 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." |