EasyPG: Implement some suggestions from emacs-devel.

This commit is contained in:
Michael Olson 2008-02-10 20:57:47 +00:00
parent c6588a85bc
commit f1914c4078
9 changed files with 156 additions and 15 deletions

View file

@ -1,3 +1,8 @@
2008-02-10 Daiki Ueno <ueno@unixuser.org>
* epa.texi (Quick start): Use the command `epa-enable' instead of
loading `epa-setup'.
2008-02-08 Juanma Barranquero <lekktu@gmail.com>
* makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean): Add epa.

View file

@ -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

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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."