Function: projectile-replace--expand
projectile-replace--expand is a byte-compiled function defined in
projectile.el.
Signature
(projectile-replace--expand REPLACEMENT GROUPS LITERAL)
Documentation
Expand REPLACEMENT for a match whose group strings are GROUPS.
GROUPS is a list of matched substrings, index 0 being the whole match.
When LITERAL is non-nil REPLACEMENT is returned verbatim; otherwise
\N and \& references are expanded from GROUPS (\\ yields a
backslash). The same expansion drives both the preview and the actual
write-back so the two can never diverge.
Source Code
;; Defined in ~/.emacs.d/elpa/projectile-20260820.1509/projectile.el
(defun projectile-replace--expand (replacement groups literal)
"Expand REPLACEMENT for a match whose group strings are GROUPS.
GROUPS is a list of matched substrings, index 0 being the whole match.
When LITERAL is non-nil REPLACEMENT is returned verbatim; otherwise
\\N and \\& references are expanded from GROUPS (\\\\ yields a
backslash). The same expansion drives both the preview and the actual
write-back so the two can never diverge."
(if literal
replacement
(let ((result "")
(i 0)
(len (length replacement)))
(while (< i len)
(let ((ch (aref replacement i)))
(if (and (eq ch ?\\) (< (1+ i) len))
(let ((next (aref replacement (1+ i))))
(cond
((eq next ?&)
(setq result (concat result (or (nth 0 groups) ""))))
((and (>= next ?0) (<= next ?9))
(setq result (concat result (or (nth (- next ?0) groups) ""))))
((eq next ?\\)
(setq result (concat result "\\")))
(t (setq result (concat result (char-to-string next)))))
(setq i (+ i 2)))
(setq result (concat result (char-to-string ch)))
(setq i (1+ i)))))
result)))