changeset 82146:5868631b2e87

(ad-interactive-p, ad-interactive-form): Remove. (ad-body-forms, ad-advised-interactive-form, ad-make-cache-id) (ad-make-advised-definition, ad-cache-id-verification-code): Use commandp and interactive-form instead.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 26 Jul 2007 18:49:14 +0000
parents f04985ac29f2
children fac075d765a5 f55f9811f5d7
files lisp/ChangeLog lisp/emacs-lisp/advice.el
diffstat 2 files changed, 20 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Thu Jul 26 18:44:39 2007 +0000
+++ b/lisp/ChangeLog	Thu Jul 26 18:49:14 2007 +0000
@@ -1,8 +1,15 @@
+2007-07-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* emacs-lisp/advice.el (ad-interactive-p, ad-interactive-form): Remove.
+	(ad-body-forms, ad-advised-interactive-form, ad-make-cache-id)
+	(ad-make-advised-definition, ad-cache-id-verification-code):
+	Use commandp and interactive-form instead.
+
 2007-07-26  Dan Nicolaescu  <dann@ics.uci.edu>
 
 	* vc-git.el: Relicense to GPLv3 or later.
 	(vc-directory-exclusion-list, vc-handled-backends): Remove.
-	
+
 	* vc-hooks.el (vc-handled-backends): Add GIT.
 
 	* vc.el (vc-directory-exclusion-list): Add .git.
--- a/lisp/emacs-lisp/advice.el	Thu Jul 26 18:44:39 2007 +0000
+++ b/lisp/emacs-lisp/advice.el	Thu Jul 26 18:49:14 2007 +0000
@@ -2473,10 +2473,6 @@
       (setq definition (indirect-function definition)))
   (and (subrp definition) (eq (cdr (subr-arity definition)) 'unevalled)))
 
-(defmacro ad-interactive-p (definition)
-  ;;"non-nil if DEFINITION can be called interactively."
-  (list 'commandp definition))
-
 (defmacro ad-subr-p (definition)
   ;;"non-nil if DEFINITION is a subr."
   (list 'subrp definition))
@@ -2590,22 +2586,13 @@
 	    (natnump docstring))
 	docstring)))
 
-(defun ad-interactive-form (definition)
-  "Return the interactive form of DEFINITION."
-  (cond ((ad-compiled-p definition)
-	 (and (commandp definition)
-	      (list 'interactive (aref (ad-compiled-code definition) 5))))
-	((or (ad-advice-p definition)
-	     (ad-lambda-p definition))
-	 (commandp (ad-lambda-expression definition)))))
-
 (defun ad-body-forms (definition)
   "Return the list of body forms of DEFINITION."
   (cond ((ad-compiled-p definition)
 	 nil)
 	((consp definition)
 	 (nthcdr (+ (if (ad-docstring definition) 1 0)
-		    (if (ad-interactive-form definition) 1 0))
+		    (if (interactive-form definition) 1 0))
 		 (cdr (cdr (ad-lambda-expression definition)))))))
 
 ;; Matches the docstring of an advised definition.
@@ -3037,7 +3024,7 @@
 			     (ad-get-enabled-advices function 'around)
 			     (ad-get-enabled-advices function 'after)))
     (let ((interactive-form
-	   (ad-interactive-form (ad-advice-definition advice))))
+	   (interactive-form (ad-advice-definition advice))))
       (if interactive-form
 	  ;; We found the first one, use it:
 	  (ad-do-return interactive-form)))))
@@ -3051,7 +3038,7 @@
 	   (ad-has-redefining-advice function))
       (let* ((origdef (ad-real-orig-definition function))
 	     (origname (ad-get-advice-info-field function 'origname))
-	     (orig-interactive-p (ad-interactive-p origdef))
+	     (orig-interactive-p (commandp origdef))
 	     (orig-subr-p (ad-subr-p origdef))
 	     (orig-special-form-p (ad-special-form-p origdef))
 	     (orig-macro-p (ad-macro-p origdef))
@@ -3063,15 +3050,11 @@
 	     (interactive-form
 	      (cond (orig-macro-p nil)
 		    (advised-interactive-form)
-		    ((ad-interactive-form origdef)
-		     (if (and (symbolp function) (get function 'elp-info))
-			 (interactive-form (aref (get function 'elp-info) 2))
-		       (ad-interactive-form origdef)))
-		    ;; Otherwise we must have a subr: make it interactive if
-		    ;; we have to and initialize required arguments in case
-		    ;; it is called interactively:
-		    (orig-interactive-p
-		     (interactive-form origdef))))
+		    ((interactive-form origdef)
+		     (interactive-form
+                      (if (and (symbolp function) (get function 'elp-info))
+                          (aref (get function 'elp-info) 2)
+                        origdef)))))
 	     (orig-form
 	      (cond ((or orig-special-form-p orig-macro-p)
 		     ;; Special forms and macros will be advised into macros.
@@ -3294,8 +3277,8 @@
 	      t
 	    (ad-arglist original-definition function))
 	  (if (eq (ad-definition-type original-definition) 'function)
-	      (equal (ad-interactive-form original-definition)
-		     (ad-interactive-form cached-definition))))))
+	      (equal (interactive-form original-definition)
+		     (interactive-form cached-definition))))))
 
 (defun ad-get-cache-class-id (function class)
   "Return the part of FUNCTION's cache id that identifies CLASS."
@@ -3342,8 +3325,8 @@
 		       (ad-arglist cached-definition))
 		(setq code 'interactive-form-mismatch)
 		(or (null (nth 5 cache-id))
-		    (equal (ad-interactive-form original-definition)
-			   (ad-interactive-form cached-definition)))
+		    (equal (interactive-form original-definition)
+			   (interactive-form cached-definition)))
 		(setq code 'verified))))
     code))