diff options
| author | Stefan Monnier | 2011-03-11 15:04:22 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2011-03-11 15:04:22 -0500 |
| commit | ba83908c4b7fda12991ae9073028a60da87c1fa2 (patch) | |
| tree | f3ebf09f2af4f22ee21a3af2b184181c25d69bf6 /src | |
| parent | 9ace101ce2e22c85a4298f20702e9b79ae03ad1f (diff) | |
| download | emacs-ba83908c4b7fda12991ae9073028a60da87c1fa2.tar.gz emacs-ba83908c4b7fda12991ae9073028a60da87c1fa2.zip | |
Misc fixes, and use lexical-binding in more files.
* lisp/subr.el (letrec): New macro.
(with-wrapper-hook): Move from lisp/simple.el and don't use CL.
* simple.el (with-wrapper-hook): Move with-wrapper-hook to subr.el.
* lisp/help-fns.el (help-function-arglist): Handle subroutines as well.
(describe-variable): Use special-variable-p to filter completions.
* lisp/emacs-lisp/macroexp.el (macroexpand-all-1): Don't expand `declare'
in defmacros.
* lisp/emacs-lisp/cconv.el (cconv-convert, cconv-analyse-form):
Handle `declare'.
* lisp/emacs-lisp/cl.el (pushnew): Silence unfixable warning.
* lisp/emacs-lisp/cl-macs.el (defstruct, define-compiler-macro):
Mark unused arg as unused.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode): Use memq.
* lisp/emacs-lisp/autoload.el (make-autoload): Don't assume the macro's
first sexp is a list.
(autoload-generate-file-autoloads): Improve error message.
* lisp/emacs-lisp/advice.el (ad-arglist): Use help-function-arglist
to understand the new byte-code arg format.
* lisp/vc/smerge-mode.el:
* lisp/vc/log-view.el:
* lisp/vc/log-edit.el:
* lisp/vc/cvs-status.el:
* lisp/uniquify.el:
* lisp/textmodes/css-mode.el:
* lisp/textmodes/bibtex-style.el:
* lisp/reveal.el:
* lisp/newcomment.el:
* lisp/emacs-lisp/smie.el:
* lisp/abbrev.el: Use lexical-binding.
* src/eval.c (Fprog1, Fprog2): Simplify and use XCDR/XCAR.
(Fdefvar): Remove redundant SYMBOLP check.
(Ffunctionp): Don't signal an error for undefined aliases.
* doc/lispref/variables.texi (Converting to Lexical Binding): New node.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/eval.c | 25 |
2 files changed, 17 insertions, 14 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index e8b3c57fbd0..bbf7f99bb32 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2011-03-11 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * eval.c (Fprog1, Fprog2): Simplify and use XCDR/XCAR. | ||
| 4 | (Fdefvar): Remove redundant SYMBOLP check. | ||
| 5 | (Ffunctionp): Don't signal an error for undefined aliases. | ||
| 6 | |||
| 1 | 2011-03-06 Stefan Monnier <monnier@iro.umontreal.ca> | 7 | 2011-03-06 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 8 | ||
| 3 | * bytecode.c (exec_byte_code): Remove old lexical binding slot handling | 9 | * bytecode.c (exec_byte_code): Remove old lexical binding slot handling |
diff --git a/src/eval.c b/src/eval.c index 1f6a5e4a1c6..36c63a5c8a7 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -371,13 +371,12 @@ usage: (prog1 FIRST BODY...) */) | |||
| 371 | 371 | ||
| 372 | do | 372 | do |
| 373 | { | 373 | { |
| 374 | Lisp_Object tem = eval_sub (XCAR (args_left)); | ||
| 374 | if (!(argnum++)) | 375 | if (!(argnum++)) |
| 375 | val = eval_sub (Fcar (args_left)); | 376 | val = tem; |
| 376 | else | 377 | args_left = XCDR (args_left); |
| 377 | eval_sub (Fcar (args_left)); | ||
| 378 | args_left = Fcdr (args_left); | ||
| 379 | } | 378 | } |
| 380 | while (!NILP(args_left)); | 379 | while (CONSP (args_left)); |
| 381 | 380 | ||
| 382 | UNGCPRO; | 381 | UNGCPRO; |
| 383 | return val; | 382 | return val; |
| @@ -406,13 +405,12 @@ usage: (prog2 FORM1 FORM2 BODY...) */) | |||
| 406 | 405 | ||
| 407 | do | 406 | do |
| 408 | { | 407 | { |
| 408 | Lisp_Object tem = eval_sub (XCAR (args_left)); | ||
| 409 | if (!(argnum++)) | 409 | if (!(argnum++)) |
| 410 | val = eval_sub (Fcar (args_left)); | 410 | val = tem; |
| 411 | else | 411 | args_left = XCDR (args_left); |
| 412 | eval_sub (Fcar (args_left)); | ||
| 413 | args_left = Fcdr (args_left); | ||
| 414 | } | 412 | } |
| 415 | while (!NILP (args_left)); | 413 | while (CONSP (args_left)); |
| 416 | 414 | ||
| 417 | UNGCPRO; | 415 | UNGCPRO; |
| 418 | return val; | 416 | return val; |
| @@ -791,9 +789,8 @@ usage: (defvar SYMBOL &optional INITVALUE DOCSTRING) */) | |||
| 791 | tem = Fdefault_boundp (sym); | 789 | tem = Fdefault_boundp (sym); |
| 792 | if (!NILP (tail)) | 790 | if (!NILP (tail)) |
| 793 | { | 791 | { |
| 794 | if (SYMBOLP (sym)) | 792 | /* Do it before evaluating the initial value, for self-references. */ |
| 795 | /* Do it before evaluating the initial value, for self-references. */ | 793 | XSYMBOL (sym)->declared_special = 1; |
| 796 | XSYMBOL (sym)->declared_special = 1; | ||
| 797 | 794 | ||
| 798 | if (SYMBOL_CONSTANT_P (sym)) | 795 | if (SYMBOL_CONSTANT_P (sym)) |
| 799 | { | 796 | { |
| @@ -2873,7 +2870,7 @@ DEFUN ("functionp", Ffunctionp, Sfunctionp, 1, 1, 0, | |||
| 2873 | { | 2870 | { |
| 2874 | if (SYMBOLP (object) && !NILP (Ffboundp (object))) | 2871 | if (SYMBOLP (object) && !NILP (Ffboundp (object))) |
| 2875 | { | 2872 | { |
| 2876 | object = Findirect_function (object, Qnil); | 2873 | object = Findirect_function (object, Qt); |
| 2877 | 2874 | ||
| 2878 | if (CONSP (object) && EQ (XCAR (object), Qautoload)) | 2875 | if (CONSP (object) && EQ (XCAR (object), Qautoload)) |
| 2879 | { | 2876 | { |