diff options
| author | Stefan Monnier | 2011-03-13 18:31:49 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2011-03-13 18:31:49 -0400 |
| commit | 23aba0ea0e4922cfd8534f43667d3a758f2d2974 (patch) | |
| tree | 798c1de793ca32e93da9edac4705bcdb93aeecc7 /src/eval.c | |
| parent | 2ec42da9f0ddaaa9197617eb3e5a9d18ad2ba942 (diff) | |
| download | emacs-23aba0ea0e4922cfd8534f43667d3a758f2d2974.tar.gz emacs-23aba0ea0e4922cfd8534f43667d3a758f2d2974.zip | |
* src/eval.c (Ffunction): Use simpler format for closures.
(Fcommandp, funcall_lambda):
* src/doc.c (Fdocumentation, store_function_docstring):
* src/data.c (Finteractive_form):
* lisp/help-fns.el (help-function-arglist):
* lisp/emacs-lisp/bytecomp.el (byte-compile-arglist-warn):
* lisp/subr.el (apply-partially): Adjust to new closure format.
* lisp/emacs-lisp/disass.el (disassemble-internal): Catch closures.
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/eval.c b/src/eval.c index 36c63a5c8a7..2fb89ce404e 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -487,7 +487,8 @@ usage: (function ARG) */) | |||
| 487 | && EQ (XCAR (quoted), Qlambda)) | 487 | && EQ (XCAR (quoted), Qlambda)) |
| 488 | /* This is a lambda expression within a lexical environment; | 488 | /* This is a lambda expression within a lexical environment; |
| 489 | return an interpreted closure instead of a simple lambda. */ | 489 | return an interpreted closure instead of a simple lambda. */ |
| 490 | return Fcons (Qclosure, Fcons (Vinternal_interpreter_environment, quoted)); | 490 | return Fcons (Qclosure, Fcons (Vinternal_interpreter_environment, |
| 491 | XCDR (quoted))); | ||
| 491 | else | 492 | else |
| 492 | /* Simply quote the argument. */ | 493 | /* Simply quote the argument. */ |
| 493 | return quoted; | 494 | return quoted; |
| @@ -2079,8 +2080,8 @@ then strings and vectors are not accepted. */) | |||
| 2079 | return Qnil; | 2080 | return Qnil; |
| 2080 | funcar = XCAR (fun); | 2081 | funcar = XCAR (fun); |
| 2081 | if (EQ (funcar, Qclosure)) | 2082 | if (EQ (funcar, Qclosure)) |
| 2082 | fun = Fcdr (XCDR (fun)), funcar = Fcar (fun); | 2083 | return !NILP (Fassq (Qinteractive, Fcdr (Fcdr (XCDR (fun))))) ? Qt : if_prop; |
| 2083 | if (EQ (funcar, Qlambda)) | 2084 | else if (EQ (funcar, Qlambda)) |
| 2084 | return !NILP (Fassq (Qinteractive, Fcdr (XCDR (fun)))) ? Qt : if_prop; | 2085 | return !NILP (Fassq (Qinteractive, Fcdr (XCDR (fun)))) ? Qt : if_prop; |
| 2085 | else if (EQ (funcar, Qautoload)) | 2086 | else if (EQ (funcar, Qautoload)) |
| 2086 | return !NILP (Fcar (Fcdr (Fcdr (XCDR (fun))))) ? Qt : if_prop; | 2087 | return !NILP (Fcar (Fcdr (Fcdr (XCDR (fun))))) ? Qt : if_prop; |
| @@ -3121,7 +3122,7 @@ funcall_lambda (Lisp_Object fun, int nargs, | |||
| 3121 | { | 3122 | { |
| 3122 | fun = XCDR (fun); /* Drop `closure'. */ | 3123 | fun = XCDR (fun); /* Drop `closure'. */ |
| 3123 | lexenv = XCAR (fun); | 3124 | lexenv = XCAR (fun); |
| 3124 | fun = XCDR (fun); /* Drop the lexical environment. */ | 3125 | CHECK_LIST_CONS (fun, fun); |
| 3125 | } | 3126 | } |
| 3126 | else | 3127 | else |
| 3127 | lexenv = Qnil; | 3128 | lexenv = Qnil; |