Make plist-put! variadic

And capable of modifying non-symbols in-place.
This commit is contained in:
Henrik Lissner 2019-11-01 23:52:31 -04:00
parent a074a2c851
commit 7142b4aa0f
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -22,9 +22,13 @@ list, the pair is destructured into (CAR . CDR)."
,retval))) ,retval)))
;;;###autoload ;;;###autoload
(defmacro plist-put! (plist prop value) (defmacro plist-put! (plist &rest rest)
"Set PROP to VALUE in PLIST in-place." "Set each PROP VALUE pair in REST to PLIST in-place."
`(setq ,plist (plist-put ,plist ,prop ,value))) `(cl-loop for (prop value)
on (list ,@rest) by #'cddr
do ,(if (symbolp plist)
`(setq ,plist (plist-put ,plist prop value))
`(plist-put ,plist prop value))))
;;;###autoload ;;;###autoload
(defmacro plist-delete! (plist prop) (defmacro plist-delete! (plist prop)