[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/compat 9574eb1c94 2/3: compat-29: Use simpler definitio
From: |
ELPA Syncer |
Subject: |
[elpa] externals/compat 9574eb1c94 2/3: compat-29: Use simpler definition for while-let |
Date: |
Sun, 8 Jan 2023 09:57:25 -0500 (EST) |
branch: externals/compat
commit 9574eb1c940d0acb11fea82edfa61f05d270b05a
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
compat-29: Use simpler definition for while-let
---
compat-29.el | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/compat-29.el b/compat-29.el
index ff99e176ec..a92ce4e08d 100644
--- a/compat-29.el
+++ b/compat-29.el
@@ -321,17 +321,13 @@ If all bindings are non-nil, eval BODY and repeat.
The variable list SPEC is the same as in `if-let'."
(declare (indent 1) (debug if-let))
- (let ((empty (make-symbol "s"))
- (last t) list)
- (dolist (var spec)
- (push `(,(if (cdr var) (car var) empty)
- (and ,last ,(if (cdr var) (cadr var) (car var))))
- list)
- (when (or (cdr var) (consp (car var)))
- (setq last (caar list))))
- `(while (let* ,(nreverse list)
- (and ,(caar list)
- (progn ,(macroexp-progn (or body '(t))) t))))))
+ (let ((done (gensym "done")))
+ `(catch ',done
+ (while t
+ (if-let* ,spec
+ (progn
+ ,@body)
+ (throw ',done nil))))))
;;;; Defined in files.el