diff options
| author | Stefan Monnier | 2010-12-13 22:37:44 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2010-12-13 22:37:44 -0500 |
| commit | defb141157dfa37c33cdcbfa4b29c702a8fc9edf (patch) | |
| tree | e0d40af60254aa9f680ce46f26c77bc47655b07f /src/ChangeLog | |
| parent | 7a600d54c026061eee6db4e499802f524e7ebe00 (diff) | |
| download | emacs-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/ChangeLog')
| -rw-r--r-- | src/ChangeLog | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 6abdf583b00..c333b6388c6 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,19 @@ | |||
| 1 | 2010-12-14 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | Try and be more careful about propagation of lexical environment. | ||
| 4 | * eval.c (apply_lambda, funcall_lambda): Remove lexenv arg. | ||
| 5 | (Feval): Always eval in the empty environment. | ||
| 6 | (eval_sub): New function. Use it for all calls to Feval that should | ||
| 7 | evaluate in the lexical environment of the caller. | ||
| 8 | Pass `closure's as is to apply_lambda. | ||
| 9 | (Ffuncall): Pass `closure's as is to funcall_lambda. | ||
| 10 | (funcall_lambda): Extract lexenv for `closure's, when applicable. | ||
| 11 | Also use lexical scoping for the &rest argument, if applicable. | ||
| 12 | * lisp.h (eval_sub): Declare. | ||
| 13 | * lread.c (readevalloop): Remove `evalfun' argument. | ||
| 14 | * print.c (Fwith_output_to_temp_buffer): | ||
| 15 | * data.c (Fsetq_default): Use eval_sub. | ||
| 16 | |||
| 1 | 2010-12-13 Stefan Monnier <monnier@iro.umontreal.ca> | 17 | 2010-12-13 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 18 | ||
| 3 | Make the effect of (defvar foo) local. | 19 | Make the effect of (defvar foo) local. |