]> git.eshelyaron.com Git - emacs.git/commitdiff
(functionp): Return nil for special forms.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 5 Apr 2008 20:22:22 +0000 (20:22 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sat, 5 Apr 2008 20:22:22 +0000 (20:22 +0000)
doc/lispref/functions.texi
etc/NEWS
lisp/ChangeLog
lisp/subr.el

index 40a3d3ec38b51b4f9eaa92bca612caf63b9e4b05..3a891db871efdca6d691e665d66222ddc50abe19 100644 (file)
@@ -116,9 +116,7 @@ byte compiler.  @xref{Byte-Code Type}.
 
 @defun functionp object
 This function returns @code{t} if @var{object} is any kind of
-function, or a special form, or, recursively, a symbol whose function
-definition is a function or special form.  (This does not include
-macros.)
+function, i.e. can be passed to @code{funcall}.
 @end defun
 
 Unlike @code{functionp}, the next three functions do @emph{not}
index 37786df831c7eba27ac1f14dedd4848636193137..0e88ea6cffbee9c50c5391524e4e8f3a15c6c6de 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -654,6 +654,9 @@ for the list of extra keys that are available.
 \f
 * Incompatible Lisp Changes in Emacs 23.1
 
+** `functionp' returns nil for special forms.
+I.e. it only returns t for objects that can be passed `funcall'.
+
 +++
 ** The multibyteness of process filters is determined by the coding-system
 used for decoding.  The functions `process-filter-multibyte-p' and
index 7f858a3f98f11e635e86d251832dcc61d7effadd..15af42d6fc7e621a921bae8f9e1e9eb1888e6832 100644 (file)
@@ -1,3 +1,7 @@
+2008-04-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * subr.el (functionp): Return nil for special forms.
+
 2008-04-05  Glenn Morris  <rgm@gnu.org>
 
        * emacs-lisp/autoload.el (autoload-ensure-default-file):
index a8fcfb67bb42c98e3d64b013adf9ff0afec101ab..94ee316f9f472117719b5f8b188f07e8e8bbff9e 100644 (file)
@@ -231,17 +231,17 @@ configuration."
        (eq (car object) 'frame-configuration)))
 
 (defun functionp (object)
-  "Non-nil if OBJECT is any kind of function or a special form.
-Also non-nil if OBJECT is a symbol and its function definition is
-\(recursively) a function or special form.  This does not include
-macros."
+  "Non-nil if OBJECT is a function."
   (or (and (symbolp object) (fboundp object)
           (condition-case nil
               (setq object (indirect-function object))
             (error nil))
           (eq (car-safe object) 'autoload)
           (not (car-safe (cdr-safe (cdr-safe (cdr-safe (cdr-safe object)))))))
-      (subrp object) (byte-code-function-p object)
+      (and (subrp object)
+           ;; Filter out special forms.
+           (not (eq 'unevalled (cdr (subr-arity object)))))
+      (byte-code-function-p object)
       (eq (car-safe object) 'lambda)))
 \f
 ;;;; List functions.