aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog6
-rw-r--r--src/callint.c13
2 files changed, 16 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index e7902b8c083..c638e1fa4b5 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12011-03-01 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * callint.c (quotify_arg): Simplify the logic.
4 (Fcall_interactively): Use lexical binding when evaluating the
5 interactive spec of a lexically bound function.
6
12011-02-25 Stefan Monnier <monnier@iro.umontreal.ca> 72011-02-25 Stefan Monnier <monnier@iro.umontreal.ca>
2 8
3 * eval.c (Qcurry): Remove. 9 * eval.c (Qcurry): Remove.
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 {