Skip to content

Commit eda8ea6

Browse files
author
Michael Heerdegen
committed
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.
1 parent d2bd995 commit eda8ea6

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

lisp/emacs-lisp/gv.el

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -392,18 +392,20 @@ The return value is the last VAL in the list.
392392
,(funcall setter
393393
`(cons (setq ,p (cons ,k ,v))
394394
,getter)))))
395-
(cond
396-
((null remove) set-exp)
397-
((or (eql v default)
398-
(and (eq (car-safe v) 'quote)
399-
(eq (car-safe default) 'quote)
400-
(eql (cadr v) (cadr default))))
401-
`(if ,p ,(funcall setter `(delq ,p ,getter))))
402-
(t
403-
`(cond
404-
((not (eql ,default ,v)) ,set-exp)
405-
(,p ,(funcall setter
406-
`(delq ,p ,getter)))))))))))))))
395+
`(progn
396+
,(cond
397+
((null remove) set-exp)
398+
((or (eql v default)
399+
(and (eq (car-safe v) 'quote)
400+
(eq (car-safe default) 'quote)
401+
(eql (cadr v) (cadr default))))
402+
`(if ,p ,(funcall setter `(delq ,p ,getter))))
403+
(t
404+
`(cond
405+
((not (eql ,default ,v)) ,set-exp)
406+
(,p ,(funcall setter
407+
`(delq ,p ,getter))))))
408+
,v))))))))))
407409

408410

409411
;;; Some occasionally handy extensions.

0 commit comments

Comments
 (0)