Function: evil-keep-lines
evil-keep-lines is a byte-compiled function defined in
evil-commands.el.
Signature
(evil-keep-lines PATTERN BEG END)
Documentation
Stripped down version of keep-lines.
Delete lines between BEG & END which don't match PATTERN.
Source Code
;; Defined in ~/.emacs.d/elpa/evil-20251108.138/evil-commands.el
(defun evil-keep-lines (pattern beg end)
"Stripped down version of `keep-lines'.
Delete lines between BEG & END which don't match PATTERN."
(goto-char (min beg end))
(setq end
(progn
(save-excursion
(goto-char (max beg end))
(unless (or (bolp) (eobp))
(forward-line 0))
(point-marker))))
(save-excursion
(or (bolp) (forward-line 1))
(let ((start (point)))
(while (< (point) end)
;; Start is first char not preserved by previous match.
(if (not (re-search-forward pattern end 'move))
(delete-region start end)
(let ((end (save-excursion (goto-char (match-beginning 0))
(forward-line 0)
(point))))
;; Now end is first char preserved by the new match.
(if (< start end)
(delete-region start end))))
(setq start (save-excursion (forward-line 1) (point)))
;; If the match was empty, avoid matching again at same place.
(and (< (point) end)
(= (match-beginning 0) (match-end 0))
(forward-char 1)))))
(set-marker end nil)
nil)