aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/callint.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/src/callint.c b/src/callint.c
index 21a6bd0b1a..a7933bb14d 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -1,5 +1,5 @@
/* Call a Lisp function interactively.
- Copyright (C) 1985, 86, 93, 94, 95, 1997, 2000, 02, 2003
+ Copyright (C) 1985, 86, 93, 94, 95, 1997, 2000, 02, 03, 2004
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -347,25 +347,17 @@ supply if the command inquires which events were used to invoke it. */)
goto lose;
specs = XVECTOR (fun)->contents[COMPILED_INTERACTIVE];
}
- else if (!CONSP (fun))
- goto lose;
- else if (funcar = XCAR (fun), EQ (funcar, Qautoload))
+ else
{
+ Lisp_Object form;
GCPRO2 (function, prefix_arg);
- do_autoload (fun, function);
+ Finteractive_form (function);
UNGCPRO;
- goto retry;
- }
- else if (EQ (funcar, Qlambda))
- {
- specs = Fassq (Qinteractive, Fcdr (XCDR (fun)));
- if (NILP (specs))
+ if (CONSP (form))
+ specs = filter_specs = Fcar (XCDR (form));
+ else
goto lose;
- filter_specs = Fnth (make_number (1), specs);
- specs = Fcar (Fcdr (specs));
}
- else
- goto lose;
/* If either SPECS or STRING is set to a string, use it. */
if (STRINGP (specs))