emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: patch to include EasyPG to Emacs


From: Daiki Ueno
Subject: Re: patch to include EasyPG to Emacs
Date: Mon, 11 Feb 2008 04:15:47 +0900
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

Stefan Monnier <address@hidden> writes:

>> - provide epa-*-enable/disable commands for several "intrusive" features for
>>   other modes (dired, mail-mode, menu-bars),
>
> Please define them as (global) minor modes instead,

Wow, it also greatly simplifies the code.  Thanks for the suggestion.
However, if there is already a (local) minor mode called epa-mail-mode,
what is a good name for global minor mode?

Anyway, here is an up-to-date patch.

Index: doc/misc/ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/doc/misc/ChangeLog,v
retrieving revision 1.90
diff -c -r1.90 ChangeLog
*** doc/misc/ChangeLog  8 Feb 2008 10:20:27 -0000       1.90
--- doc/misc/ChangeLog  10 Feb 2008 19:14:54 -0000
***************
*** 1,3 ****
--- 1,8 ----
+ 2008-02-10  Daiki Ueno  <address@hidden>
+ 
+       * epa.texi (Quick start): Use the command `epa-enable' instead of
+       loading `epa-setup'.
+ 
  2008-02-08  Juanma Barranquero  <address@hidden>
  
        * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean): Add epa.
Index: doc/misc/epa.texi
===================================================================
RCS file: /sources/emacs/emacs/doc/misc/epa.texi,v
retrieving revision 1.2
diff -c -r1.2 epa.texi
*** doc/misc/epa.texi   9 Feb 2008 02:29:01 -0000       1.2
--- doc/misc/epa.texi   10 Feb 2008 19:14:54 -0000
***************
*** 77,102 ****
  @node  Quick start
  @chapter Quick start
  
! To install, just follow the standard CMMI installation instructions.
  
! @cartouche
! @example
! $ ./configure
! $ sudo make install
! @end example
! @end cartouche
  
! @noindent
! Then, add the following line to your @file{~/.emacs}
  
  @cartouche
  @lisp
! (require 'epa-setup)
  @end lisp
  @end cartouche
  
  @noindent
! That's all.  Restart emacs and type @kbd{M-x epa- @key{TAB}}, and you will 
see a
  lot of commands available.  For example,
  
  @itemize @bullet
--- 77,104 ----
  @node  Quick start
  @chapter Quick start
  
! @c To install, just follow the standard CMMI installation instructions.
  
! @c @cartouche
! @c @example
! @c $ ./configure
! @c $ sudo make install
! @c @end example
! @c @end cartouche
  
! @c @noindent
! @c Then, add the following line to your @file{~/.emacs}
! 
! Add the following line to your @file{~/.emacs}.
  
  @cartouche
  @lisp
! (epa-mode 1)
  @end lisp
  @end cartouche
  
  @noindent
! Restart emacs and type @kbd{M-x epa- @key{TAB}}, and you will see a
  lot of commands available.  For example,
  
  @itemize @bullet
Index: etc/ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/etc/ChangeLog,v
retrieving revision 1.678
diff -c -r1.678 ChangeLog
*** etc/ChangeLog       8 Feb 2008 08:57:40 -0000       1.678
--- etc/ChangeLog       10 Feb 2008 19:14:54 -0000
***************
*** 1,3 ****
--- 1,7 ----
+ 2008-02-10  Daiki Ueno  <address@hidden>
+ 
+       * NEWS: Clarify EasyPG functionalities.
+ 
  2008-02-08  Jan Djärv  <address@hidden>
  
        * NEWS: Mention XEmbed and --parent-id.
Index: etc/NEWS
===================================================================
RCS file: /sources/emacs/emacs/etc/NEWS,v
retrieving revision 1.1652
diff -c -r1.1652 NEWS
*** etc/NEWS    10 Feb 2008 02:06:57 -0000      1.1652
--- etc/NEWS    10 Feb 2008 19:14:55 -0000
***************
*** 242,254 ****
  inter-process communication mechanism for applications residing on the
  same host, based on messages.  See the manual for further details.
  
! ** EasyPG is now part of the Emacs distribution.
! EasyPG is an all-in-one GnuPG interface for Emacs. It consists of two
! parts: EasyPG Assistant and EasyPG Library.
! 
! EasyPG Assistant is a set of convenient tools to use GnuPG from
! Emacs. EasyPG Library is a sort of an elisp port of GPGME, a wrapper
! library which provides API to access some of the GnuPG functions.

  * Changes in Specialized Modes and Packages in Emacs 23.1
  
--- 242,251 ----
  inter-process communication mechanism for applications residing on the
  same host, based on messages.  See the manual for further details.
  
! ** EasyPG is now part of the Emacs distribution.  It is an all-in-one
! GnuPG interface which includes GnuPG keyring browser, cryptographic
! operations on regions and files, and automatic encryption of *.gpg
! files.  See the EasyPG Assistant User's Manual for further details.

  * Changes in Specialized Modes and Packages in Emacs 23.1
  
Index: lisp/ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.12750
diff -c -r1.12750 ChangeLog
*** lisp/ChangeLog      10 Feb 2008 18:38:05 -0000      1.12750
--- lisp/ChangeLog      10 Feb 2008 19:14:58 -0000
***************
*** 1,3 ****
--- 1,23 ----
+ 2008-02-10  Daiki Ueno  <address@hidden>
+ 
+       * 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  Dan Nicolaescu  <address@hidden>
  
        * diff-mode.el (diff-add-change-log-entries-other-window): Use
Index: lisp/epa-dired.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/epa-dired.el,v
retrieving revision 1.3
diff -c -r1.3 epa-dired.el
*** lisp/epa-dired.el   9 Feb 2008 02:29:01 -0000       1.3
--- lisp/epa-dired.el   10 Feb 2008 19:14:58 -0000
***************
*** 82,87 ****
--- 82,95 ----
        (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
Index: lisp/epa-file.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/epa-file.el,v
retrieving revision 1.3
diff -c -r1.3 epa-file.el
*** lisp/epa-file.el    9 Feb 2008 21:59:33 -0000       1.3
--- lisp/epa-file.el    10 Feb 2008 19:14:58 -0000
***************
*** 314,319 ****
--- 314,337 ----
        (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
Index: lisp/epa-mail.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/epa-mail.el,v
retrieving revision 1.2
diff -c -r1.2 epa-mail.el
*** lisp/epa-mail.el    9 Feb 2008 02:29:01 -0000       1.2
--- lisp/epa-mail.el    10 Feb 2008 19:14:58 -0000
***************
*** 40,45 ****
--- 40,46 ----
  (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,178 ****
--- 174,187 ----
    (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
Index: lisp/epa.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/epa.el,v
retrieving revision 1.3
diff -c -r1.3 epa.el
*** lisp/epa.el 9 Feb 2008 21:59:33 -0000       1.3
--- lisp/epa.el 10 Feb 2008 19:14:58 -0000
***************
*** 45,50 ****
--- 45,58 ----
    :type 'integer
    :group 'epa)
  
+ (defcustom epa-global-minor-modes '(epa-dired-mode
+                                   epa-file-mode
+                                   epa-mail-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,234 ****
--- 237,280 ----
      (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,378 ****
                                     'end-open t))
          (widget-create 'epa-key :value (car keys))
          (insert "\n")
!         (setq keys (cdr keys))))      
        (add-text-properties (point-min) (point-max)
                           (list 'epa-list-keys t
                                 'front-sticky nil
--- 418,424 ----
                                     'end-open t))
          (widget-create 'epa-key :value (car keys))
          (insert "\n")
!         (setq keys (cdr keys))))
        (add-text-properties (point-min) (point-max)
                           (list 'epa-list-keys t
                                 'front-sticky nil
***************
*** 1173,1178 ****
--- 1219,1250 ----
  ;;     (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
Index: lisp/epg-config.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/epg-config.el,v
retrieving revision 1.3
diff -c -r1.3 epg-config.el
*** lisp/epg-config.el  9 Feb 2008 21:59:33 -0000       1.3
--- lisp/epg-config.el  10 Feb 2008 19:14:58 -0000
***************
*** 23,29 ****
  
  ;;; Code:
  
! (require 'epg-package-info)
  
  (defgroup epg ()
    "The EasyPG Library"
--- 23,36 ----
  
  ;;; Code:
  
! (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 "address@hidden"
!   "Report bugs to this address.")
  
  (defgroup epg ()
    "The EasyPG Library"
Index: lisp/epg.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/epg.el,v
retrieving revision 1.2
diff -c -r1.2 epg.el
*** lisp/epg.el 9 Feb 2008 02:29:02 -0000       1.2
--- lisp/epg.el 10 Feb 2008 19:14:58 -0000
***************
*** 1430,1436 ****
         signature
         (string-to-number (match-string 4 string)))
        (epg-signature-set-pubkey-algorithm
!        signature 
         (string-to-number (match-string 5 string)))
        (epg-signature-set-digest-algorithm
         signature
--- 1430,1436 ----
         signature
         (string-to-number (match-string 4 string)))
        (epg-signature-set-pubkey-algorithm
!        signature
         (string-to-number (match-string 5 string)))
        (epg-signature-set-digest-algorithm
         signature
***************
*** 1744,1750 ****
  (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. 
  Otherwise, only public keyring should be searched and the key
  signatures should be included.
  NAME is either a string or a list of strings."
--- 1744,1750 ----
  (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.
  Otherwise, only public keyring should be searched and the key
  signatures should be included.
  NAME is either a string or a list of strings."


Regards,
-- 
Daiki Ueno




reply via email to

[Prev in Thread] Current Thread [Next in Thread]