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 40d89acd16c..60570369d9e 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -121,8 +121,9 @@ usage: (interactive &optional ARGS) */)
121static Lisp_Object 121static Lisp_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/function that will re-build the
175 args without user intervention. */
172 if (CONSP (input)) 176 if (CONSP (input))
173 { 177 {
174 Lisp_Object car; 178 Lisp_Object car;
@@ -332,11 +336,14 @@ invoke it. If KEYS is omitted or nil, the return value of
332 else 336 else
333 { 337 {
334 Lisp_Object input; 338 Lisp_Object input;
339 Lisp_Object funval = Findirect_function (function, Qt);
335 i = num_input_events; 340 i = num_input_events;
336 input = specs; 341 input = specs;
337 /* Compute the arg values using the user's expression. */ 342 /* Compute the arg values using the user's expression. */
338 GCPRO2 (input, filter_specs); 343 GCPRO2 (input, filter_specs);
339 specs = Feval (specs); 344 specs = Feval (specs,
345 CONSP (funval) && EQ (Qclosure, XCAR (funval))
346 ? Qt : Qnil);
340 UNGCPRO; 347 UNGCPRO;
341 if (i != num_input_events || !NILP (record_flag)) 348 if (i != num_input_events || !NILP (record_flag))
342 { 349 {