Commit 023accd6 authored by Stefan Monnier's avatar Stefan Monnier

(Fcall_interactively): Use Finteractive_form also for subrs

and compiled functions.
parent c10b0597
2007-09-10 Stefan Monnier <monnier@iro.umontreal.ca>
* callint.c (Fcall_interactively): Use Finteractive_form also for subrs
and compiled functions.
2007-09-08 Fredrik Axelsson <f.axelsson@gmail.com> 2007-09-08 Fredrik Axelsson <f.axelsson@gmail.com>
* window.c (prefer_window_split_horizontally): New variable. * window.c (prefer_window_split_horizontally): New variable.
...@@ -332,32 +332,16 @@ invoke it. If KEYS is omitted or nil, the return value of ...@@ -332,32 +332,16 @@ invoke it. If KEYS is omitted or nil, the return value of
/* Decode the kind of function. Either handle it and return, /* Decode the kind of function. Either handle it and return,
or go to `lose' if not interactive, or set either STRING or SPECS. */ or go to `lose' if not interactive, or set either STRING or SPECS. */
if (SUBRP (fun)) {
{ Lisp_Object form;
string = (unsigned char *) XSUBR (fun)->prompt; GCPRO2 (function, prefix_arg);
if (!string) form = Finteractive_form (function);
{ UNGCPRO;
lose: if (CONSP (form))
wrong_type_argument (Qcommandp, function); specs = filter_specs = Fcar (XCDR (form));
} else
} wrong_type_argument (Qcommandp, function);
else if (COMPILEDP (fun)) }
{
if ((XVECTOR (fun)->size & PSEUDOVECTOR_SIZE_MASK) <= COMPILED_INTERACTIVE)
goto lose;
specs = XVECTOR (fun)->contents[COMPILED_INTERACTIVE];
}
else
{
Lisp_Object form;
GCPRO2 (function, prefix_arg);
form = Finteractive_form (function);
UNGCPRO;
if (CONSP (form))
specs = filter_specs = Fcar (XCDR (form));
else
goto lose;
}
/* If either SPECS or STRING is set to a string, use it. */ /* If either SPECS or STRING is set to a string, use it. */
if (STRINGP (specs)) if (STRINGP (specs))
...@@ -368,7 +352,7 @@ invoke it. If KEYS is omitted or nil, the return value of ...@@ -368,7 +352,7 @@ invoke it. If KEYS is omitted or nil, the return value of
bcopy (SDATA (specs), string, bcopy (SDATA (specs), string,
SBYTES (specs) + 1); SBYTES (specs) + 1);
} }
else if (string == 0) else
{ {
Lisp_Object input; Lisp_Object input;
i = num_input_events; i = num_input_events;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment