diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-05-08 16:05:02 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-05-08 16:05:02 +0000 |
commit | 5d08a786062aac9a4e33a7ed9f40eeb3e9eda799 (patch) | |
tree | 2bbc949ce6288c01268fbd5af563be4576b900ba /lisp/emacs-lisp | |
parent | 44038dc83b6716737ad663fd3e823f35adf8f482 (diff) | |
download | emacs-5d08a786062aac9a4e33a7ed9f40eeb3e9eda799.tar.gz emacs-5d08a786062aac9a4e33a7ed9f40eeb3e9eda799.tar.bz2 emacs-5d08a786062aac9a4e33a7ed9f40eeb3e9eda799.zip |
(ad-special-forms): Remove.
(ad-special-form-p): Use subr-arity.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/advice.el | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el index fe4639cf01a..8023bc58a53 100644 --- a/lisp/emacs-lisp/advice.el +++ b/lisp/emacs-lisp/advice.el @@ -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." |