summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog15
-rw-r--r--lisp/emacs-lisp/generator.el12
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.