34 lines
1.1 KiB
C
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.
|