Function: map--plist-put-1
map--plist-put-1 is a byte-compiled function defined in map.el.gz.
Signature
(map--plist-put-1 PLIST PROP VAL &optional PREDICATE)
Documentation
Compatibility shim for the PREDICATE argument of plist-put.
Assumes non-nil PLIST satisfies map--plist-p.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/map.el.gz
(defun map--plist-put-1 (plist prop val &optional predicate)
"Compatibility shim for the PREDICATE argument of `plist-put'.
Assumes non-nil PLIST satisfies `map--plist-p'."
(if (or (memq predicate '(nil eq)) (null plist))
(plist-put plist prop val)
(let ((tail plist) prev found)
(while (and (consp (cdr tail))
(not (setq found (funcall predicate (car tail) prop)))
(consp (setq prev tail tail (cddr tail)))))
(cond (found (setcar (cdr tail) val))
(tail (signal 'wrong-type-argument `(plistp ,plist)))
(prev (setcdr (cdr prev) (cons prop (cons val (cddr prev)))))
((setq plist (cons prop (cons val plist)))))
plist)))