aboutsummaryrefslogtreecommitdiffstats
path: root/src/callint.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/callint.c')
-rw-r--r--src/callint.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/callint.c b/src/callint.c
index 253f2b9dd09..a0efc4bbfe4 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -121,8 +121,9 @@ usage: (interactive &optional ARGS) */)
121Lisp_Object 121Lisp_Object
122quotify_arg (register Lisp_Object exp) 122quotify_arg (register Lisp_Object exp)
123{ 123{
124 if (!INTEGERP (exp) && !STRINGP (exp) 124 if (CONSP (exp)
125 && !NILP (exp) && !EQ (exp, Qt)) 125 || (SYMBOLP (exp)
126 && !NILP (exp) && !EQ (exp, Qt)))
126 return Fcons (Qquote, Fcons (exp, Qnil)); 127 return Fcons (Qquote, Fcons (exp, Qnil));
127 128
128 return exp; 129 return exp;
@@ -169,6 +170,9 @@ check_mark (int for_region)
169static void 170static void
170fix_command (Lisp_Object input, Lisp_Object values) 171fix_command (Lisp_Object input, Lisp_Object values)
171{ 172{
173 /* FIXME: Instead of this ugly hack, we should provide a way for an
174 interactive spec to return an expression that will re-build the args
175 without user intervention. */
172 if (CONSP (input)) 176 if (CONSP (input))
173 { 177 {
174 Lisp_Object car; 178 Lisp_Object car;
@@ -331,11 +335,14 @@ invoke it. If KEYS is omitted or nil, the return value of
331 else 335 else
332 { 336 {
333 Lisp_Object input; 337 Lisp_Object input;
338 Lisp_Object funval = Findirect_function (function, Qt);
334 i = num_input_events; 339 i = num_input_events;
335 input = specs; 340 input = specs;
336 /* Compute the arg values using the user's expression. */ 341 /* Compute the arg values using the user's expression. */
337 GCPRO2 (input, filter_specs); 342 GCPRO2 (input, filter_specs);
338 specs = Feval (specs, Qnil); /* FIXME: lexbind */ 343 specs = Feval (specs,
344 CONSP (funval) && EQ (Qclosure, XCAR (funval))
345 ? Qt : Qnil);
339 UNGCPRO; 346 UNGCPRO;
340 if (i != num_input_events || !NILP (record_flag)) 347 if (i != num_input_events || !NILP (record_flag))
341 { 348 {