unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* New allout revisions, rectify byte-compilation related bug
@ 2005-11-30 20:29 Ken Manheimer
  0 siblings, 0 replies; only message in thread
From: Ken Manheimer @ 2005-11-30 20:29 UTC (permalink / raw)


[-- Attachment #1: Type: text/plain, Size: 513 bytes --]

The attached patch rectifies a few allout problems, including a
critical bug on file save (and autosave).  That problem was due to a
macro being defined below its use - not a problem if the file is
byte-compiled when the macro definition is already evaluated, eg
during casual development, but that hides the problem which *does*
occur when the byte-compilation happens during emacs build, sigh.

I've also attached a ChangeLog entry.   No new NEWS is necessary.

Ken Manheimer
ken.manheimer@gmail.com

[-- Attachment #2: alloutdiff.txt --]
[-- Type: text/plain, Size: 8445 bytes --]

Index: allout.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/allout.el,v
retrieving revision 1.63
diff -u -r1.63 allout.el
--- allout.el	23 Oct 2005 08:23:25 -0000	1.63
+++ allout.el	30 Nov 2005 20:06:45 -0000
@@ -80,9 +80,11 @@
 (provide 'allout)
 
 ;;;_* Dependency autoloads
-(eval-when-compile 'cl)                 ; otherwise, flet compilation fouls
 (eval-when-compile (progn (require 'pgg)
-                          (require 'pgg-gpg)))
+                          (require 'pgg-gpg)
+			  (fset 'allout-real-isearch-abort
+				(symbol-function 'isearch-abort))
+			  ))
 (autoload 'pgg-gpg-symmetric-key-p "pgg-gpg"
   "True if decoded armor MESSAGE-KEYS has symmetric encryption indicator.")
 
@@ -585,8 +587,7 @@
 is nil.
 
 Operations potentially causing edits include allout encryption routines.
-See the docstring for `allout-toggle-current-subtree-encryption' for
-details."
+For details, see `allout-toggle-current-subtree-encryption's docstring."
   :type 'boolean
   :group 'allout)
 (make-variable-buffer-local 'allout-enable-file-variable-adjustment)
@@ -606,6 +607,10 @@
     (if here (insert msg))
     (message "%s" msg)
     msg))
+;;;_  : Mode activation (defined here because it's referenced early)
+;;;_   = allout-mode
+(defvar allout-mode nil "Allout outline mode minor-mode flag.")
+(make-variable-buffer-local 'allout-mode)
 ;;;_  : Topic header format
 ;;;_   = allout-regexp
 (defvar allout-regexp ""
@@ -898,7 +903,7 @@
 
 First arg is NAME of variable affected.  Optional second arg is list
 containing allout-mode-specific VALUE to be imposed on named
-variable, and to be registered.  (It's a list so you can specify
+variable, and to be registered.  \(It's a list so you can specify
 registrations of null values.)  If no value is specified, the
 registered value is returned (encapsulated in the list, so the caller
 can distinguish nil vs no value), and the registration is popped
@@ -1033,6 +1038,12 @@
 This is used to decrypt the topic that was currently being edited, if it
 was encrypted automatically as part of a file write or autosave.")
 (make-variable-buffer-local 'allout-after-save-decrypt)
+;;;_   > allout-mode-p ()
+;; Must define this macro above any uses, or byte compilation will lack
+;; proper def, if file isn't loaded - eg, during emacs build!
+(defmacro allout-mode-p ()
+  "Return t if `allout-mode' is active in current buffer."
+  'allout-mode)
 ;;;_   > allout-write-file-hook-handler ()
 (defun allout-write-file-hook-handler ()
   "Implement `allout-encrypt-unencrypted-on-saves' policy for file writes."
@@ -1061,7 +1072,7 @@
     nil)
 ;;;_   > allout-auto-save-hook-handler ()
 (defun allout-auto-save-hook-handler ()
-  "Implement `allout-encrypt-unencrypted-on-saves' policy for auto saves."
+  "Implement `allout-encrypt-unencrypted-on-saves' policy for auto save."
 
   (if (and (allout-mode-p) allout-encrypt-unencrypted-on-saves)
       ;; Always implement 'except-current policy when enabled.
@@ -1082,7 +1093,7 @@
       t
     (goto-char (car allout-after-save-decrypt))
     (let ((was-modified (buffer-modified-p)))
-      (allout-toggle-current-subtree-encryption)
+      (allout-toggle-subtree-encryption)
       (if (not was-modified)
           (set-buffer-modified-p nil)))
     (goto-char (cadr allout-after-save-decrypt))
@@ -1090,13 +1101,6 @@
   )
 
 ;;;_ #2 Mode activation
-;;;_  = allout-mode
-(defvar allout-mode () "Allout outline mode minor-mode flag.")
-(make-variable-buffer-local 'allout-mode)
-;;;_  > allout-mode-p ()
-(defmacro allout-mode-p ()
-  "Return t if `allout-mode' is active in current buffer."
-  'allout-mode)
 ;;;_  = allout-explicitly-deactivated
 (defvar allout-explicitly-deactivated nil
   "If t, `allout-mode's last deactivation was deliberate.
@@ -1297,7 +1301,7 @@
 encryption, encryption with a mistaken passphrase, forgetting which
 passphrase was used, and other practical pitfalls.
 
-See the `allout-toggle-current-subtree-encryption' function and
+See `allout-toggle-current-subtree-encryption' function docstring and
 `allout-encrypt-unencrypted-on-saves' customization variable for details.
 
 		 HOT-SPOT Operation
@@ -1404,12 +1408,10 @@
 		     (or (and (listp toggle)(car toggle))
 			 toggle)))
 				       ; Activation specifically demanded?
-	 (explicit-activation (or
-			      ;;
-			      (and toggle
+	 (explicit-activation (and toggle
 				   (or (symbolp toggle)
-				       (and (natnump toggle)
-					    (not (zerop toggle)))))))
+				       (and (wholenump toggle)
+					    (not (zerop toggle))))))
 	 ;; allout-mode already called once during this complex command?
 	 (same-complex-command (eq allout-v18/19-file-var-hack
 				  (car command-history)))
@@ -3714,14 +3716,7 @@
             (setq file-name
                   (if (re-search-forward "\\s-\\(\\S-*\\)" heading-end t)
                       (buffer-substring (match-beginning 1) (match-end 1))))))
-        (setq file-name
-              (if (not (= (aref file-name 0) ?:))
-                  (expand-file-name file-name)
-                                        ; A registry-files ref, strip the `:'
-                                        ; and try to follow it:
-                (let ((reg-ref (reference-registered-file
-                                (substring file-name 1) nil t)))
-                  (if reg-ref (car (cdr reg-ref))))))
+        (setq file-name (expand-file-name file-name))
         (if (or (file-exists-p file-name)
                 (if (file-writable-p file-name)
                     (y-or-n-p (format "%s not there, create one? "
@@ -4851,13 +4846,13 @@
 ;;;_ #8 Encryption
 ;;;_  > allout-toggle-current-subtree-encryption (&optional fetch-pass)
 (defun allout-toggle-current-subtree-encryption (&optional fetch-pass)
-  "Encrypt clear text or decrypt encoded topic contents \(body and subtopics.)
+  "Encrypt clear or decrypt encoded text of visibly-containing topic's contents.
 
 Optional FETCH-PASS universal argument provokes key-pair encryption with
 single universal argument.  With doubled universal argument \(value = 16),
 it forces prompting for the passphrase regardless of availability from the
 passphrase cache.  With no universal argument, the appropriate passphrase
-for the is obtained from the cache, if available, else from the user.
+is obtained from the cache, if available, else from the user.
 
 Currently only GnuPG encryption is supported.
 
@@ -4915,6 +4910,28 @@
 enabled \(see the `allout-passphrase-hint-handling' docstring for details),
 the hint string is stored in the local-variables section of the file, and
 solicited whenever the passphrase is changed."
+  (interactive "P")
+  (save-excursion
+    (allout-back-to-current-heading)
+    (allout-toggle-subtree-encryption)
+    )
+  )
+;;;_  > allout-toggle-subtree-encryption (&optional fetch-pass)
+(defun allout-toggle-subtree-encryption (&optional fetch-pass)
+  "Encrypt clear text or decrypt encoded topic contents \(body and subtopics.)
+
+Optional FETCH-PASS universal argument provokes key-pair encryption with
+single universal argument.  With doubled universal argument \(value = 16),
+it forces prompting for the passphrase regardless of availability from the
+passphrase cache.  With no universal argument, the appropriate passphrase
+is obtained from the cache, if available, else from the user.
+
+Currently only GnuPG encryption is supported.
+
+\**NOTE WELL** that the encrypted text must be ascii-armored.  For gnupg
+encryption, include the option ``armor'' in your ~/.gnupg/gpg.conf file.
+
+See `allout-toggle-current-subtree-encryption' for more details."
 
   (interactive "P")
   (save-excursion
@@ -5022,6 +5039,9 @@
 
   (require 'pgg)
 
+  (if (not (fboundp 'pgg-encrypt-symmetric))
+      (error "Allout encryption depends on a newer version of pgg"))
+
   (let* ((scheme (upcase
                   (format "%s" (or pgg-scheme pgg-default-scheme "GPG"))))
          (for-key (and (equal key-type 'keypair)
@@ -5498,7 +5518,7 @@
                   ;; we had to wait for this 'til now so prior topics are
                   ;; encrypted, any relevant text shifts are in place:
                   editing-point (marker-position current-mark)))
-        (allout-toggle-current-subtree-encryption)
+        (allout-toggle-subtree-encryption)
         (if (not was-modified)
             (set-buffer-modified-p nil))
         )






[-- Attachment #3: ChangeLog.txt --]
[-- Type: text/plain, Size: 1038 bytes --]

2005-11-30  Ken Manheimer  <ken.manheimer@gmail.com>

	* allout.el:
	eval-when-compile: Removed unnecessary load of 'cl.  Added fset of
	allout-real-isearch-abort during compile to alleviate unnecessary
	byte-compilation warnings.
	(allout-mode-p): Move definition of this macro above all uses, or
	byte compilation in barren emacs (eg, during emacs build) will
	lack the definition.
	(allout-mode): Move this variable above any uses, or byte
	compilation will fail.
	(allout-resolve-xref): Remove use of personal file-reference
	function. (The function is mostly unreleased, so never worked for
	anyone except those that asked for the code.)
	(allout-toggle-current-subtree-encryption): do the current (ie,
	visible containing) topic, rather than nearest around point.
	also, repair some docstring grammar.
	(allout-toggle-subtree-encryption): new function, workhorse that
	works on nearest topic containing point.
	(allout-encrypt-string): signal requirement for newer version of
	pgg.
	(allout-resumptions): insulate a docstring `('.


[-- Attachment #4: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-11-30 20:29 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-11-30 20:29 New allout revisions, rectify byte-compilation related bug Ken Manheimer

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).