aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorRobin Templeton <[email protected]>2014-07-18 15:06:16 -0400
committerRobin Templeton <[email protected]>2015-04-20 00:29:02 -0400
commit9abd03f2a69e166b8bf7d39941472a3f0b991f19 (patch)
treeac6de7ef15da8787bc9f3c8d64ce5d16fb7e9379 /lisp
parent6a92d676c45b440fe47f0c74db028883c14bc999 (diff)
fix push/pop
Diffstat (limited to 'lisp')
-rw-r--r--lisp/subr.el7
1 files changed, 5 insertions, 2 deletions
diff --git a/lisp/subr.el b/lisp/subr.el
index 26d3a41ba6..0c1198a975 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -148,6 +148,7 @@ except that PLACE is only evaluated once (after NEWELT)."
(list 'setq place
(list 'cons newelt place))
(require 'macroexp)
+ (require 'gv)
(eval `(let ((newelt ',newelt)
(place ',place))
(macroexp-let2 macroexp-copyable-p v newelt
@@ -168,8 +169,10 @@ change the list."
,(if (symbolp place)
;; So we can use `pop' in the bootstrap before `gv' can be used.
(list 'prog1 place (list 'setq place (list 'cdr place)))
- (gv-letplace (getter setter) place
- `(prog1 ,getter ,(funcall setter `(cdr ,getter)))))))
+ (require 'gv)
+ (eval `(let ((place ',place))
+ (gv-letplace (getter setter) place
+ `(prog1 ,getter ,(funcall setter `(cdr ,getter)))))))))
(defmacro when (cond &rest body)
"If COND yields non-nil, do BODY, else return nil.