Function: cl-substitute
cl-substitute is an autoloaded and byte-compiled function defined in
cl-seq.el.gz.
Signature
(cl-substitute NEW OLD SEQ [KEYWORD VALUE]...)
Documentation
Substitute NEW for OLD in SEQ.
This is a non-destructive function; it makes a copy of SEQ if necessary to avoid corrupting the original SEQ.
Keywords supported: :test :test-not :key :count :start :end :from-end
Aliases
substitute (obsolete since 27.1)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/cl-seq.el.gz
;;;###autoload
(defun cl-substitute (cl-new cl-old cl-seq &rest cl-keys)
"Substitute NEW for OLD in SEQ.
This is a non-destructive function; it makes a copy of SEQ if necessary
to avoid corrupting the original SEQ.
\nKeywords supported: :test :test-not :key :count :start :end :from-end
\n(fn NEW OLD SEQ [KEYWORD VALUE]...)"
(cl--parsing-keywords (:test :test-not :key :if :if-not :count
(:start 0) :end :from-end) ()
(if (or (eq cl-old cl-new)
(<= (or cl-count (setq cl-from-end nil
cl-count (length cl-seq))) 0))
cl-seq
(let ((cl-i (cl--position cl-old cl-seq cl-start cl-end)))
(if (not cl-i)
cl-seq
(setq cl-seq (copy-sequence cl-seq))
(unless cl-from-end
(setf (elt cl-seq cl-i) cl-new)
(cl-incf cl-i)
(cl-decf cl-count))
(apply 'cl-nsubstitute cl-new cl-old cl-seq :count cl-count
:start cl-i cl-keys))))))