aboutsummaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
authorStefan Monnier2012-08-15 21:18:07 -0400
committerStefan Monnier2012-08-15 21:18:07 -0400
commit8be3a09c4f4ed0eae2902b81e80856e917a81b2d (patch)
tree6b460256c489213a92086200db5a183318175dd8 /src/eval.c
parent94c9ece10275f8ca9323c38f93607f1046035c79 (diff)
downloademacs-8be3a09c4f4ed0eae2902b81e80856e917a81b2d.tar.gz
emacs-8be3a09c4f4ed0eae2902b81e80856e917a81b2d.zip
* src/eval.c (eval_sub): Bind lexical-binding.
* src/lread.c (Qlexical_binding): Make non-static.
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c
index b531f790cc5..f3f14d60e1c 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2217,7 +2217,19 @@ eval_sub (Lisp_Object form)
2217 goto retry; 2217 goto retry;
2218 } 2218 }
2219 if (EQ (funcar, Qmacro)) 2219 if (EQ (funcar, Qmacro))
2220 val = eval_sub (apply1 (Fcdr (fun), original_args)); 2220 {
2221 ptrdiff_t count = SPECPDL_INDEX ();
2222 extern Lisp_Object Qlexical_binding;
2223 Lisp_Object exp;
2224 /* Bind lexical-binding during expansion of the macro, so the
2225 macro can know reliably if the code it outputs will be
2226 interpreted using lexical-binding or not. */
2227 specbind (Qlexical_binding,
2228 NILP (Vinternal_interpreter_environment) ? Qnil : Qt);
2229 exp = apply1 (Fcdr (fun), original_args);
2230 unbind_to (count, Qnil);
2231 val = eval_sub (exp);
2232 }
2221 else if (EQ (funcar, Qlambda) 2233 else if (EQ (funcar, Qlambda)
2222 || EQ (funcar, Qclosure)) 2234 || EQ (funcar, Qclosure))
2223 val = apply_lambda (fun, original_args); 2235 val = apply_lambda (fun, original_args);