certain zero-length regex replacements ("^", "$", and "^$").
Add a no_sameline parameter to findnextstr(), and set it in
the calls in do_replace_loop() when such regexes are found, so
- that such regexes are only found once per line. (DLR; found by
- Mike Frysinger and DLR, match_len by David Benbennick)
+ that such regexes are only found once per line. Also change
+ length_change from a long to an int; size_t is unsuitable due
+ to its being unsigned. (DLR; found by Mike Frysinger and DLR,
+ match_len by David Benbennick) David Benbennick: Add a few
+ minor cleanups to do_replace_loop().
- winio.c:
titlebar()
- Fix problem with the available space for a filename on the
int beginline = 0, caretdollar = 0;
#endif
filestruct *fileptr = NULL;
- char *copy;
switch (*i) {
case -1: /* Aborted enter. */
do_replace_highlight(FALSE, prevanswer);
curs_set(1);
+
+ if (*i == -1) /* We canceled the replace. */
+ break;
}
#ifdef HAVE_REGEX_H
#endif
if (*i > 0 || replaceall) { /* Yes, replace it!!!! */
- long length_change;
- size_t match_len;
+ char *copy;
+ int length_change;
if (*i == 2)
replaceall = 1;
length_change = strlen(copy) - strlen(current->data);
-#ifdef HAVE_REGEX_H
- if (ISSET(USE_REGEXP))
- match_len = regmatches[0].rm_eo - regmatches[0].rm_so;
- else
-#endif
- match_len = strlen(prevanswer);
-
#ifndef NANO_SMALL
if (current == mark_beginbuf && mark_beginx > current_x) {
if (mark_beginx < current_x + match_len)
edit_refresh();
set_modified();
numreplaced++;
-
- } else if (*i == -1) /* Break out of the loop, else do
- * nothing and continue loop. */
- break;
+ }
}
/* If text has been added to the magicline, make a new magicline. */