Function: projectile-replace--scan-region
projectile-replace--scan-region is a byte-compiled function defined in
projectile.el.
Signature
(projectile-replace--scan-region FILE BUFFER REGEXP BUDGET)
Documentation
Collect up to BUDGET matches of REGEXP in the current buffer.
Each match is recorded as a projectile-replace--match tagged with
FILE and BUFFER (nil when scanning a disk re-read).
Source Code
;; Defined in ~/.emacs.d/elpa/projectile-20260820.1509/projectile.el
(defun projectile-replace--scan-region (file buffer regexp budget)
"Collect up to BUDGET matches of REGEXP in the current buffer.
Each match is recorded as a `projectile-replace--match' tagged with
FILE and BUFFER (nil when scanning a disk re-read)."
(let ((matches nil)
(count 0)
(done nil)
(tick (and buffer (buffer-chars-modified-tick buffer))))
(save-excursion
(goto-char (point-min))
(while (and (not done)
(< count budget)
(re-search-forward regexp nil t))
(if (= (match-beginning 0) (match-end 0))
;; A regexp that can match the empty string (e.g. `^', `a*')
;; leaves point put; advance past it, but at end-of-buffer there
;; is nowhere to advance, so stop rather than spin forever.
(if (eobp)
(setq done t)
(forward-char 1))
(let ((beg (match-beginning 0))
(end (match-end 0))
(md (match-data t))
(groups (projectile-replace--capture-groups))
line lstart col context)
(save-excursion
(goto-char beg)
(setq line (line-number-at-pos)
lstart (line-beginning-position)
col (- beg lstart)
context (buffer-substring-no-properties
lstart (line-end-position))))
(push (projectile-replace--match-create
:file file :buffer buffer :tick tick
:line line :column col :beg beg :end end
:string (buffer-substring-no-properties beg end)
:match-data md :groups groups
:context context :enabled t)
matches)
(cl-incf count)))))
(nreverse matches)))