summaryrefslogtreecommitdiff
path: root/cond-let.el
diff options
context:
space:
mode:
authorJonas Bernoulli <jonas@bernoul.li>2025-10-19 16:14:45 +0200
committerJonas Bernoulli <jonas@bernoul.li>2025-10-19 16:14:45 +0200
commit1f166d31f68f2148edba93279a636f109a67a16e (patch)
tree14e98ebccca0c3282ef394bfd972d50bbc9e4f25 /cond-let.el
parent79a16e1f2428f0f79f03250b987bc79cd37a029e (diff)
cond-let--prepare-clauses: Cosmetics
Diffstat (limited to 'cond-let.el')
-rw-r--r--cond-let.el48
1 files changed, 23 insertions, 25 deletions
diff --git a/cond-let.el b/cond-let.el
index 065203c..2df7670 100644
--- a/cond-let.el
+++ b/cond-let.el
@@ -90,31 +90,29 @@
(defun cond-let--prepare-clauses (tag when let clauses)
"Used by macros `cond-let*' and `cond-let'."
(let (body)
- (setq clauses (nreverse clauses))
- (while clauses
- (let ((clause (pop clauses)))
- (cond
- ((vectorp clause)
- (setq body
- `((,(if (length= clause 1) 'let let)
- ,(mapcar (lambda (vec) (append vec nil)) clause)
- ,@body))))
- ((let (varlist)
- (while (vectorp (car clause))
- (push (append (pop clause) nil) varlist))
- (push (cond
- (varlist
- `(,(if (length= varlist 1) 'cond-let--when-let when)
- ,(nreverse varlist)
- (throw ',tag ,(macroexp-progn clause))))
- ((length= clause 1)
- (let ((a (gensym "anon")))
- `(let ((,a ,(car clause)))
- (when ,a (throw ',tag ,a)))))
- (t
- `(when ,(pop clause)
- (throw ',tag ,(macroexp-progn clause)))))
- body))))))
+ (dolist (clause (nreverse clauses))
+ (cond
+ ((vectorp clause)
+ (setq body
+ `((,(if (length= clause 1) 'let let)
+ ,(mapcar (lambda (vec) (append vec nil)) clause)
+ ,@body))))
+ ((let (varlist)
+ (while (vectorp (car clause))
+ (push (append (pop clause) nil) varlist))
+ (push (cond
+ (varlist
+ `(,(if (length= varlist 1) 'cond-let--when-let when)
+ ,(nreverse varlist)
+ (throw ',tag ,(macroexp-progn clause))))
+ ((length= clause 1)
+ (let ((a (gensym "anon")))
+ `(let ((,a ,(car clause)))
+ (when ,a (throw ',tag ,a)))))
+ (t
+ `(when ,(pop clause)
+ (throw ',tag ,(macroexp-progn clause)))))
+ body)))))
body))
(defmacro cond-let* (&rest clauses)