diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ChangeLog | 15 | ||||
-rw-r--r-- | lisp/emacs-lisp/generator.el | 12 |
2 files changed, 20 insertions, 7 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0cfe8eed02a..3bc9b8c85ce 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,18 @@ +2015-03-03 Daniel Colascione <dancol@dancol.org> + + * emacs-lisp/generator.el: Make globals conform to elisp + style throughout. Use more efficient font-lock patterns. + (cps-inhibit-atomic-optimization): Rename from + `cps-disable-atomic-optimization'. + (cps--gensym): New macro; replaces `cl-gensym' throughout. + (cps-generate-evaluator): Move the `iter-yield' local macro + definition here + (iter-defun, iter-lambda): from here. + + (iter-defun): Use `macroexp-parse-body'. + +2015-03-03 Daniel Colascione <dancol@dancol.org> + 2015-03-03 Stefan Monnier <monnier@iro.umontreal.ca> * progmodes/gud.el: Use lexical-binding (bug#19966). diff --git a/lisp/emacs-lisp/generator.el b/lisp/emacs-lisp/generator.el index 77b1fab9b09..284de410580 100644 --- a/lisp/emacs-lisp/generator.el +++ b/lisp/emacs-lisp/generator.el @@ -687,14 +687,12 @@ encapsulates the state of a computation that produces a sequence of values. Callers can retrieve each value using `iter-next'." (declare (indent defun)) (cl-assert lexical-binding) - (let (preamble) - (when (stringp (car body)) - (push (pop body) preamble)) - (when (eq (car-safe (car body)) 'declare) - (push (pop body) preamble)) + (let* ((parsed-body (macroexp-parse-body body)) + (declarations (car parsed-body)) + (exps (cdr parsed-body))) `(defun ,name ,arglist - ,@(nreverse preamble) - ,(cps-generate-evaluator body)))) + ,@declarations + ,(cps-generate-evaluator exps)))) (defmacro iter-lambda (arglist &rest body) "Return a lambda generator. |