]> git.eshelyaron.com Git - emacs.git/commitdiff
(ad-special-forms): Remove.
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 8 May 2007 16:05:02 +0000 (16:05 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 8 May 2007 16:05:02 +0000 (16:05 +0000)
(ad-special-form-p): Use subr-arity.

lisp/ChangeLog
lisp/emacs-lisp/advice.el

index ce34c9edcf27c6e743f255c2093e743ce2f55ce4..2d8fc893de9808356d6a124905292187dedc9eff 100644 (file)
@@ -1,5 +1,8 @@
 2007-05-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * emacs-lisp/advice.el (ad-special-forms): Remove.
+       (ad-special-form-p): Use subr-arity.
+
        * newcomment.el (comment-search-forward): Make sure we search forward.
        (comment-enter-backward): Try and distinguish the non-matching case at
        EOB from the non-matching case with a missing comment-end-skip for
index fe4639cf01af253115079c9a1442dbff8872cb30..8023bc58a531665ff97a15b01ac63d2c2bf29fa9 100644 (file)
@@ -2467,23 +2467,11 @@ will clear the cache."
   "Take a macro function DEFINITION and make a lambda out of it."
   `(cdr ,definition))
 
-;; There is no way to determine whether some subr is a special form or not,
-;; hence we need this list (which is probably out of date):
-(defvar ad-special-forms
-  (let ((tem '(and catch cond condition-case defconst defmacro
-                  defun defvar function if interactive let let*
-                  or prog1 prog2 progn quote save-current-buffer
-                  save-excursion save-restriction save-window-excursion
-                  setq setq-default unwind-protect while
-                  with-output-to-temp-buffer)))
-    ;; track-mouse could be void in some configurations.
-    (if (fboundp 'track-mouse)
-       (push 'track-mouse tem))
-    (mapcar 'symbol-function tem)))
-
-(defmacro ad-special-form-p (definition)
-  ;;"non-nil if DEFINITION is a special form."
-  (list 'memq definition 'ad-special-forms))
+(defun ad-special-form-p (definition)
+  "Non-nil iff DEFINITION is a special form."
+  (if (and (symbolp definition) (fboundp definition))
+      (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."