emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 1758951: lisp/let-alist.el (let-alist): Evaluate `a


From: Artur Malabarba
Subject: [Emacs-diffs] master 1758951: lisp/let-alist.el (let-alist): Evaluate `alist' only once.
Date: Thu, 18 Dec 2014 20:34:09 +0000

branch: master
commit 17589518728e247e7574e9b61502c3ff5cf9dc67
Author: Artur Malabarba <address@hidden>
Commit: Artur Malabarba <address@hidden>

    lisp/let-alist.el (let-alist): Evaluate `alist' only once.
---
 lisp/ChangeLog    |    5 +++++
 lisp/let-alist.el |    8 +++++---
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 8978bde..9828b84 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-18  Artur Malabarba  <address@hidden>
+
+       * let-alist.el (let-alist): Evaluate the `alist' argument only
+       once.
+
 2014-12-18  Sam Steingold  <address@hidden>
 
        * emacs-lisp/package.el: Avoid compilation warning by declaring
diff --git a/lisp/let-alist.el b/lisp/let-alist.el
index 2efa027..8f02404 100644
--- a/lisp/let-alist.el
+++ b/lisp/let-alist.el
@@ -94,9 +94,11 @@ expands to
         .body
       .site))"
   (declare (indent 1) (debug t))
-  `(let ,(mapcar (lambda (x) `(,(car x) (cdr (assq ',(cdr x) ,alist))))
-                 (delete-dups (let-alist--deep-dot-search body)))
-     ,@body))
+  (let ((var (gensym "let-alist")))
+    `(let ((,var ,alist)
+           (let ,(mapcar (lambda (x) `(,(car x) (cdr (assq ',(cdr x) ,var))))
+                   (delete-dups (let-alist--deep-dot-search body)))
+             ,@body)))))
 
 (provide 'let-alist)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]