[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master eda8ea6: Fix alist-get gv setter not returning VAL
From: |
Michael Heerdegen |
Subject: |
[Emacs-diffs] master eda8ea6: Fix alist-get gv setter not returning VAL |
Date: |
Thu, 9 May 2019 17:12:24 -0400 (EDT) |
branch: master
commit eda8ea685802e4e07e28351f65b5e24661a384fe
Author: Michael Heerdegen <address@hidden>
Commit: Michael Heerdegen <address@hidden>
Fix alist-get gv setter not returning VAL
This fixes Bug#35546.
* lisp/emacs-lisp/gv.el (alist-get): Make setter return the set value
to preserve 'setf' semantics.
---
lisp/emacs-lisp/gv.el | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el
index 4ea3ce8..bdd1574 100644
--- a/lisp/emacs-lisp/gv.el
+++ b/lisp/emacs-lisp/gv.el
@@ -392,18 +392,20 @@ The return value is the last VAL in the list.
,(funcall setter
`(cons (setq ,p (cons ,k ,v))
,getter)))))
- (cond
- ((null remove) set-exp)
- ((or (eql v default)
- (and (eq (car-safe v) 'quote)
- (eq (car-safe default) 'quote)
- (eql (cadr v) (cadr default))))
- `(if ,p ,(funcall setter `(delq ,p ,getter))))
- (t
- `(cond
- ((not (eql ,default ,v)) ,set-exp)
- (,p ,(funcall setter
- `(delq ,p ,getter)))))))))))))))
+ `(progn
+ ,(cond
+ ((null remove) set-exp)
+ ((or (eql v default)
+ (and (eq (car-safe v) 'quote)
+ (eq (car-safe default) 'quote)
+ (eql (cadr v) (cadr default))))
+ `(if ,p ,(funcall setter `(delq ,p ,getter))))
+ (t
+ `(cond
+ ((not (eql ,default ,v)) ,set-exp)
+ (,p ,(funcall setter
+ `(delq ,p ,getter))))))
+ ,v))))))))))
;;; Some occasionally handy extensions.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master eda8ea6: Fix alist-get gv setter not returning VAL,
Michael Heerdegen <=