aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorStefan Monnier2010-12-13 22:37:44 -0500
committerStefan Monnier2010-12-13 22:37:44 -0500
commitdefb141157dfa37c33cdcbfa4b29c702a8fc9edf (patch)
treee0d40af60254aa9f680ce46f26c77bc47655b07f /src/lisp.h
parent7a600d54c026061eee6db4e499802f524e7ebe00 (diff)
downloademacs-defb141157dfa37c33cdcbfa4b29c702a8fc9edf.tar.gz
emacs-defb141157dfa37c33cdcbfa4b29c702a8fc9edf.zip
Try and be more careful about propagation of lexical environment.
* src/eval.c (apply_lambda, funcall_lambda): Remove lexenv arg. (Feval): Always eval in the empty environment. (eval_sub): New function. Use it for all calls to Feval that should evaluate in the lexical environment of the caller. Pass `closure's as is to apply_lambda. (Ffuncall): Pass `closure's as is to funcall_lambda. (funcall_lambda): Extract lexenv for `closure's, when applicable. Also use lexical scoping for the &rest argument, if applicable. * src/lisp.h (eval_sub): Declare. * src/lread.c (readevalloop): Remove `evalfun' argument. * src/print.c (Fwith_output_to_temp_buffer): * src/data.c (Fsetq_default): Use eval_sub. * lisp/emacs-lisp/bytecomp.el (byte-compile-condition-case): Use push.
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lisp.h b/src/lisp.h
index aafa3884273..20b50632c49 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2972,6 +2972,7 @@ extern void signal_error (const char *, Lisp_Object) NO_RETURN;
2972EXFUN (Fautoload, 5); 2972EXFUN (Fautoload, 5);
2973EXFUN (Fcommandp, 2); 2973EXFUN (Fcommandp, 2);
2974EXFUN (Feval, 1); 2974EXFUN (Feval, 1);
2975extern Lisp_Object eval_sub (Lisp_Object form);
2975EXFUN (Fapply, MANY); 2976EXFUN (Fapply, MANY);
2976EXFUN (Ffuncall, MANY); 2977EXFUN (Ffuncall, MANY);
2977EXFUN (Fbacktrace, 0); 2978EXFUN (Fbacktrace, 0);