diff --git a/ChangeLog b/ChangeLog index fb362d39..1b013568 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,7 @@ new bindable functions, 'findnext' and 'findprevious', which repeat the last search command in a fixed direction without prompting. * src/global.c (shortcut_init): Tweak a string. + * src/search.c, src/move.c: Improve a few of the comments. 2015-07-25 Benno Schulenberg * src/global.c (shortcut_init, strtosc), src/files.c (savefile), diff --git a/src/move.c b/src/move.c index 66b976fe..520cf4a9 100644 --- a/src/move.c +++ b/src/move.c @@ -52,9 +52,8 @@ void do_page_up(void) { int i, skipped = 0; - /* If there's less than a page of text left on the screen, put the - * cursor at the beginning of the first line of the file, and then - * update the edit window. */ + /* If the cursor is less than a page away from the top of the file, + * put it at the beginning of the first line. */ if (openfile->current->lineno == 1 || ( #ifndef NANO_TINY !ISSET(SOFTWRAP) && @@ -106,9 +105,8 @@ void do_page_down(void) { int i; - /* If there's less than a page of text left on the screen, put the - * cursor at the beginning of the last line of the file, and then - * update the edit window. */ + /* If the cursor is less than a page away from the bottom of the file, + * put it at the end of the last line. */ if (openfile->current->lineno + maxrows - 2 >= openfile->filebot->lineno) { do_last_line(); diff --git a/src/search.c b/src/search.c index 707a3097..7b3e4037 100644 --- a/src/search.c +++ b/src/search.c @@ -547,12 +547,11 @@ void do_research(void) #endif /* !NANO_TINY */ #ifdef HAVE_REGEX_H +/* Calculate the size of the replacement line, taking possible + * subexpressions \1 to \9 into account. Return the replacement + * text in the passed string only when create is TRUE. */ int replace_regexp(char *string, bool create) { - /* We have a split personality here. If create is FALSE, just - * calculate the size of the replacement line (necessary because of - * subexpressions \1 to \9 in the replaced text). */ - const char *c = last_replace; size_t search_match_count = regmatches[0].rm_eo - regmatches[0].rm_so; @@ -596,12 +595,13 @@ int replace_regexp(char *string, bool create) } #endif /* HAVE_REGEX_H */ +/* Return a copy of the current line with one needle replaced. */ char *replace_line(const char *needle) { char *copy; size_t new_line_size, search_match_count; - /* Calculate the size of the new line. */ + /* First calculate the size of the new line. */ #ifdef HAVE_REGEX_H if (ISSET(USE_REGEXP)) { search_match_count = regmatches[0].rm_eo - regmatches[0].rm_so; @@ -618,10 +618,10 @@ char *replace_line(const char *needle) /* Create the buffer. */ copy = charalloc(new_line_size); - /* The head of the original line. */ + /* Copy the head of the original line. */ strncpy(copy, openfile->current->data, openfile->current_x); - /* The replacement text. */ + /* Add the replacement text. */ #ifdef HAVE_REGEX_H if (ISSET(USE_REGEXP)) replace_regexp(copy + openfile->current_x, TRUE); @@ -629,9 +629,9 @@ char *replace_line(const char *needle) #endif strcpy(copy + openfile->current_x, answer); - /* The tail of the original line. */ assert(openfile->current_x + search_match_count <= strlen(openfile->current->data)); + /* Copy the tail of the original line. */ strcat(copy, openfile->current->data + openfile->current_x + search_match_count); @@ -797,9 +797,8 @@ ssize_t do_replace_loop( #endif openfile->current_x += match_len + length_change - 1; - /* Clean up. */ - openfile->totsize += mbstrlen(copy) - - mbstrlen(openfile->current->data); + /* Update the file size, and put the changed line into place. */ + openfile->totsize += mbstrlen(copy) - mbstrlen(openfile->current->data); free(openfile->current->data); openfile->current->data = copy;