diff options
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/ChangeLog | 4 | ||||
| -rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 16 |
2 files changed, 12 insertions, 8 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 5a5b7ef44dc..053eb95329c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2010-12-14 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * emacs-lisp/bytecomp.el (byte-compile-condition-case): Use push. | ||
| 4 | |||
| 1 | 2010-12-13 Stefan Monnier <monnier@iro.umontreal.ca> | 5 | 2010-12-13 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 6 | ||
| 3 | * subr.el (with-lexical-binding): Remove. | 7 | * subr.el (with-lexical-binding): Remove. |
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 90fcf7fb8a6..0f7018b9b64 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el | |||
| @@ -2979,6 +2979,7 @@ If FORM is a lambda or a macro, byte-compile it as a function." | |||
| 2979 | 2979 | ||
| 2980 | ;; Given BYTECOMP-BODY, compile it and return a new body. | 2980 | ;; Given BYTECOMP-BODY, compile it and return a new body. |
| 2981 | (defun byte-compile-top-level-body (bytecomp-body &optional for-effect) | 2981 | (defun byte-compile-top-level-body (bytecomp-body &optional for-effect) |
| 2982 | ;; FIXME: lexbind. Check all callers! | ||
| 2982 | (setq bytecomp-body | 2983 | (setq bytecomp-body |
| 2983 | (byte-compile-top-level (cons 'progn bytecomp-body) for-effect t)) | 2984 | (byte-compile-top-level (cons 'progn bytecomp-body) for-effect t)) |
| 2984 | (cond ((eq (car-safe bytecomp-body) 'progn) | 2985 | (cond ((eq (car-safe bytecomp-body) 'progn) |
| @@ -4083,8 +4084,8 @@ if LFORMINFO is nil (meaning all bindings are dynamic)." | |||
| 4083 | 4084 | ||
| 4084 | (defun byte-compile-track-mouse (form) | 4085 | (defun byte-compile-track-mouse (form) |
| 4085 | (byte-compile-form | 4086 | (byte-compile-form |
| 4086 | `(funcall '(lambda nil | 4087 | `(funcall #'(lambda nil |
| 4087 | (track-mouse ,@(byte-compile-top-level-body (cdr form))))))) | 4088 | (track-mouse ,@(byte-compile-top-level-body (cdr form))))))) |
| 4088 | 4089 | ||
| 4089 | (defun byte-compile-condition-case (form) | 4090 | (defun byte-compile-condition-case (form) |
| 4090 | (let* ((var (nth 1 form)) | 4091 | (let* ((var (nth 1 form)) |
| @@ -4121,11 +4122,10 @@ if LFORMINFO is nil (meaning all bindings are dynamic)." | |||
| 4121 | ;; "`%s' is not a known condition name (in condition-case)" | 4122 | ;; "`%s' is not a known condition name (in condition-case)" |
| 4122 | ;; condition)) | 4123 | ;; condition)) |
| 4123 | ) | 4124 | ) |
| 4124 | (setq compiled-clauses | 4125 | (push (cons condition |
| 4125 | (cons (cons condition | 4126 | (byte-compile-top-level-body |
| 4126 | (byte-compile-top-level-body | 4127 | (cdr clause) for-effect)) |
| 4127 | (cdr clause) for-effect)) | 4128 | compiled-clauses)) |
| 4128 | compiled-clauses))) | ||
| 4129 | (setq clauses (cdr clauses))) | 4129 | (setq clauses (cdr clauses))) |
| 4130 | (byte-compile-push-constant (nreverse compiled-clauses))) | 4130 | (byte-compile-push-constant (nreverse compiled-clauses))) |
| 4131 | (byte-compile-out 'byte-condition-case 0))) | 4131 | (byte-compile-out 'byte-condition-case 0))) |
| @@ -4244,7 +4244,7 @@ if LFORMINFO is nil (meaning all bindings are dynamic)." | |||
| 4244 | `(if (not (default-boundp ',var)) (setq-default ,var ,value)))) | 4244 | `(if (not (default-boundp ',var)) (setq-default ,var ,value)))) |
| 4245 | (when (eq fun 'defconst) | 4245 | (when (eq fun 'defconst) |
| 4246 | ;; This will signal an appropriate error at runtime. | 4246 | ;; This will signal an appropriate error at runtime. |
| 4247 | `(eval ',form))) | 4247 | `(eval ',form))) ;FIXME: lexbind |
| 4248 | `',var)))) | 4248 | `',var)))) |
| 4249 | 4249 | ||
| 4250 | (defun byte-compile-autoload (form) | 4250 | (defun byte-compile-autoload (form) |