Files
ports/editors/mg/files/patch-re__search.c
2026-10-04 04:07:15 +00:00

34 lines
1.1 KiB
C

--- re_search.c.orig 2026-05-20 10:30:42 UTC
+++ re_search.c
@@ -146,6 +146,10 @@ re_queryrepl(int f, int n)
return (ABORT);
ewprintf("Query replacing %s with %s:", re_pat, news);
+ /* If dot on empty line, suppress line forward in re_forwsrch */
+ if (curwp->w_doto == 0 && curwp->w_dotp->l_used == 0)
+ curwp->w_doto = -1;
+
/*
* Search forward repeatedly, checking each time whether to insert
* or not. The "!" case makes the check always true, so it gets put
@@ -222,6 +226,9 @@ re_repl(int f, int n)
EFNUL | EFNEW | EFCR, re_pat) == NULL)
return (ABORT);
+ /* If dot on empty line, suppress line forward in re_forwsrch */
+ if (curwp->w_doto == 0 && curwp->w_dotp->l_used == 0)
+ curwp->w_doto = -1;
while (re_forwsrch() == TRUE) {
plen = regex_match[0].rm_eo - regex_match[0].rm_so;
if (re_doreplace((RSIZE)plen, news) == FALSE)
@@ -353,6 +360,9 @@ re_forwsrch(void)
tdotline++;
tbo = 0;
}
+ if (tbo < 0)
+ /* line forward was suppressed */
+ tbo = 0;
/*
* Note this loop does not process the last line, but this editor
* always makes the last line empty so this is good.