• Stefan Monnier's avatar
    Try and be more careful about propagation of lexical environment. · defb1411
    Stefan Monnier authored
    * 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.
print.c 70.6 KB