diff options
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 28 |
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 | ||
| 2754 | DEFUN ("funcall", Ffuncall, Sfuncall, 1, MANY, 0, | 2730 | DEFUN ("funcall", Ffuncall, Sfuncall, 1, MANY, 0, |