aboutsummaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c28
1 files changed, 2 insertions, 26 deletions
diff --git a/src/eval.c b/src/eval.c
index c41e3f54d4d..df44c87dc25 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2722,33 +2722,9 @@ DEFUN ("functionp", Ffunctionp, Sfunctionp, 1, 1, 0,
2722 doc: /* Non-nil if OBJECT is a function. */) 2722 doc: /* Non-nil if OBJECT is a function. */)
2723 (Lisp_Object object) 2723 (Lisp_Object object)
2724{ 2724{
2725 if (SYMBOLP (object) && !NILP (Ffboundp (object))) 2725 if (FUNCTIONP (object))
2726 {
2727 object = Findirect_function (object, Qt);
2728
2729 if (CONSP (object) && EQ (XCAR (object), Qautoload))
2730 {
2731 /* Autoloaded symbols are functions, except if they load
2732 macros or keymaps. */
2733 int i;
2734 for (i = 0; i < 4 && CONSP (object); i++)
2735 object = XCDR (object);
2736
2737 return (CONSP (object) && !NILP (XCAR (object))) ? Qnil : Qt;
2738 }
2739 }
2740
2741 if (SUBRP (object))
2742 return (XSUBR (object)->max_args != UNEVALLED) ? Qt : Qnil;
2743 else if (COMPILEDP (object))
2744 return Qt; 2726 return Qt;
2745 else if (CONSP (object)) 2727 return Qnil;
2746 {
2747 Lisp_Object car = XCAR (object);
2748 return (EQ (car, Qlambda) || EQ (car, Qclosure)) ? Qt : Qnil;
2749 }
2750 else
2751 return Qnil;
2752} 2728}
2753 2729
2754DEFUN ("funcall", Ffuncall, Sfuncall, 1, MANY, 0, 2730DEFUN ("funcall", Ffuncall, Sfuncall, 1, MANY, 0,