summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/cl-extra.el
diff options
context:
space:
mode:
authorLeo Liu <sdl.web@gmail.com>2014-11-24 22:57:53 +0800
committerLeo Liu <sdl.web@gmail.com>2014-11-24 23:01:05 +0800
commit6dbaf0471927829126025f57315db02d78255790 (patch)
tree1fd4f11c491e1e95b86003c6f190f7140e5a96c8 /lisp/emacs-lisp/cl-extra.el
parentd71a2d495f688083faa97f7ea305fdc6b595750c (diff)
downloademacs-6dbaf0471927829126025f57315db02d78255790.tar.gz
New macro macroexp-let2*
* emacs-lisp/macroexp.el (macroexp-let2*): New macro. * window.el (with-temp-buffer-window) (with-current-buffer-window, with-displayed-buffer-window): * emacs-lisp/cl-macs.el (cl--compiler-macro-adjoin): * emacs-lisp/cl-lib.el (substring): * emacs-lisp/cl-extra.el (cl-getf): Use it.
Diffstat (limited to 'lisp/emacs-lisp/cl-extra.el')
-rw-r--r--lisp/emacs-lisp/cl-extra.el17
1 files changed, 8 insertions, 9 deletions
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index 9ccfc8bfb93..a94dcd335b4 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -606,15 +606,14 @@ PROPLIST is a list of the sort returned by `symbol-plist'.
(declare (gv-expander
(lambda (do)
(gv-letplace (getter setter) plist
- (macroexp-let2 nil k tag
- (macroexp-let2 nil d def
- (funcall do `(cl-getf ,getter ,k ,d)
- (lambda (v)
- (macroexp-let2 nil val v
- `(progn
- ,(funcall setter
- `(cl--set-getf ,getter ,k ,val))
- ,val))))))))))
+ (macroexp-let2* nil ((k tag) (d def))
+ (funcall do `(cl-getf ,getter ,k ,d)
+ (lambda (v)
+ (macroexp-let2 nil val v
+ `(progn
+ ,(funcall setter
+ `(cl--set-getf ,getter ,k ,val))
+ ,val)))))))))
(setplist '--cl-getf-symbol-- plist)
(or (get '--cl-getf-symbol-- tag)
;; Originally we called cl-get here,