From 8d229cb712c54d1b29de9ba20b1280a71da692fb Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sun, 10 Sep 2017 13:25:20 +0200 Subject: [PATCH] tweaks: rename a variable, to make more sense Also, remove an unneeded null_at() -- the null byte has been copied, and reallocating the string would recover very little memory. Also, call charmove() without using the & operator. --- src/text.c | 99 +++++++++++++++++++++++++++--------------------------- 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/src/text.c b/src/text.c index e2e7d4cd..cca34836 100644 --- a/src/text.c +++ b/src/text.c @@ -275,10 +275,10 @@ void do_tab(void) } #ifndef NANO_TINY -/* Add an indent to the line in f. */ -void indent_a_line(filestruct *f, char *indentation) +/* Add an indent to the given line. */ +void indent_a_line(filestruct *line, char *indentation) { - size_t length = strlen(f->data); + size_t length = strlen(line->data); size_t indent_len = strlen(indentation); /* If the indent is empty, don't change the line. */ @@ -286,16 +286,16 @@ void indent_a_line(filestruct *f, char *indentation) return; /* Add the fabricated indentation to the beginning of the line. */ - f->data = charealloc(f->data, length + indent_len + 1); - charmove(&f->data[indent_len], f->data, length + 1); - strncpy(f->data, indentation, indent_len); + line->data = charealloc(line->data, length + indent_len + 1); + charmove(line->data + indent_len, line->data, length + 1); + strncpy(line->data, indentation, indent_len); openfile->totsize += indent_len; /* Compensate for the change in the current line. */ - if (openfile->mark_set && f == openfile->mark_begin) + if (openfile->mark_set && line == openfile->mark_begin) openfile->mark_begin_x += indent_len; - if (f == openfile->current) { + if (line == openfile->current) { openfile->current_x += indent_len; openfile->placewewant = xplustabs(); } @@ -308,7 +308,7 @@ void do_indent(void) { char *indentation = charalloc(tabsize + 1); /* The whitespace added to each line in order to indent it. */ - filestruct *top, *bot, *f; + filestruct *top, *bot, *line; size_t top_x, bot_x; /* Use either all the marked lines or just the current line. */ @@ -321,13 +321,13 @@ void do_indent(void) } /* Go through the lines to see if there's a non-empty one. */ - for (f = top; f != bot->next; f = f->next) { - if (f->data[0] != '\0') + for (line = top; line != bot->next; line = line->next) { + if (line->data[0] != '\0') break; } /* If all lines are empty, there is nothing to do. */ - if (f == bot->next) { + if (line == bot->next) { free(indentation); return; } @@ -342,10 +342,10 @@ void do_indent(void) } /* Go through each of the lines, but skip empty ones. */ - for (f = top; f != bot->next; f = f->next) { - char *real_indent = (f->data[0] == '\0') ? "" : indentation; + for (line = top; line != bot->next; line = line->next) { + char *real_indent = (line->data[0] == '\0') ? "" : indentation; - indent_a_line(f, real_indent); + indent_a_line(line, real_indent); } free(indentation); @@ -379,29 +379,28 @@ size_t length_of_white(const char *text) } } -/* Remove an indent from the line in f. */ -void unindent_a_line(filestruct *f, size_t indent_len) +/* Remove an indent from the given line. */ +void unindent_a_line(filestruct *line, size_t indent_len) { - size_t length = strlen(f->data); + size_t length = strlen(line->data); /* If the indent is empty, don't change the line. */ if (indent_len == 0) return; /* Remove the first tab's worth of whitespace from this line. */ - charmove(f->data, &f->data[indent_len], length - indent_len + 1); - null_at(&f->data, length - indent_len + 1); + charmove(line->data, line->data + indent_len, length - indent_len + 1); openfile->totsize -= indent_len; /* Compensate for the change in the current line. */ - if (openfile->mark_set && f == openfile->mark_begin) { + if (openfile->mark_set && line == openfile->mark_begin) { if (openfile->mark_begin_x < indent_len) openfile->mark_begin_x = 0; else openfile->mark_begin_x -= indent_len; } - if (f == openfile->current) { + if (line == openfile->current) { if (openfile->current_x < indent_len) openfile->current_x = 0; else @@ -414,7 +413,7 @@ void unindent_a_line(filestruct *f, size_t indent_len) * The removed indent can be a mixture of spaces plus at most one tab. */ void do_unindent(void) { - filestruct *top, *bot, *f; + filestruct *top, *bot, *line; size_t top_x, bot_x; /* Use either all the marked lines or just the current line. */ @@ -428,16 +427,16 @@ void do_unindent(void) /* If any of the lines cannot be unindented and does not consist of * only whitespace, we don't change anything. */ - for (f = top; f != bot->next; f = f->next) { - if (length_of_white(f->data) == 0 && !white_string(f->data)) { + for (line = top; line != bot->next; line = line->next) { + if (length_of_white(line->data) == 0 && !white_string(line->data)) { statusline(HUSH, _("Can unindent only by a full tab size")); return; } } /* Go through each of the lines and remove their leading indent. */ - for (f = top; f != bot->next; f = f->next) - unindent_a_line(f, length_of_white(f->data)); + for (line = top; line != bot->next; line = line->next) + unindent_a_line(line, length_of_white(line->data)); /* Throw away the undo stack, to prevent making mistakes when * the user tries to undo something in the unindented text. */ @@ -463,7 +462,7 @@ void do_comment(void) { const char *comment_seq = GENERAL_COMMENT_CHARACTER; undo_type action = UNCOMMENT; - filestruct *top, *bot, *f; + filestruct *top, *bot, *line; size_t top_x, bot_x; bool empty, all_empty = TRUE; @@ -495,11 +494,11 @@ void do_comment(void) } /* Figure out whether to comment or uncomment the selected line or lines. */ - for (f = top; f != bot->next; f = f->next) { - empty = white_string(f->data); + for (line = top; line != bot->next; line = line->next) { + empty = white_string(line->data); /* If this line is not blank and not commented, we comment all. */ - if (!empty && !comment_line(PREFLIGHT, f, comment_seq)) { + if (!empty && !comment_line(PREFLIGHT, line, comment_seq)) { action = COMMENT; break; } @@ -516,10 +515,10 @@ void do_comment(void) openfile->current_undo->strdata = mallocstrcpy(NULL, comment_seq); /* Process the selected line or lines. */ - for (f = top; f != bot->next; f = f->next) { + for (line = top; line != bot->next; line = line->next) { /* Comment/uncomment a line, and add undo data when line changed. */ - if (comment_line(action, f, comment_seq)) - update_comment_undo(f->lineno); + if (comment_line(action, line, comment_seq)) + update_comment_undo(line->lineno); } set_modified(); @@ -529,7 +528,7 @@ void do_comment(void) /* Test whether the given line can be uncommented, or add or remove a comment, * depending on action. Return TRUE if the line is uncommentable, or when * anything was added or removed; FALSE otherwise. */ -bool comment_line(undo_type action, filestruct *f, const char *comment_seq) +bool comment_line(undo_type action, filestruct *line, const char *comment_seq) { size_t comment_seq_len = strlen(comment_seq); const char *post_seq = strchr(comment_seq, '|'); @@ -538,27 +537,27 @@ bool comment_line(undo_type action, filestruct *f, const char *comment_seq) /* Length of prefix. */ size_t post_len = post_seq ? comment_seq_len - pre_len - 1 : 0; /* Length of postfix. */ - size_t line_len = strlen(f->data); + size_t line_len = strlen(line->data); - if (!ISSET(NO_NEWLINES) && f == openfile->filebot) + if (!ISSET(NO_NEWLINES) && line == openfile->filebot) return FALSE; if (action == COMMENT) { /* Make room for the comment sequence(s), move the text right and * copy them in. */ - f->data = charealloc(f->data, line_len + pre_len + post_len + 1); - charmove(&f->data[pre_len], f->data, line_len); - charmove(f->data, comment_seq, pre_len); + line->data = charealloc(line->data, line_len + pre_len + post_len + 1); + charmove(line->data + pre_len, line->data, line_len); + charmove(line->data, comment_seq, pre_len); if (post_len) - charmove(&f->data[pre_len + line_len], post_seq, post_len); - f->data[pre_len + line_len + post_len] = '\0'; + charmove(line->data + pre_len + line_len, post_seq, post_len); + line->data[pre_len + line_len + post_len] = '\0'; openfile->totsize += pre_len + post_len; /* If needed, adjust the position of the mark and of the cursor. */ - if (openfile->mark_set && f == openfile->mark_begin) + if (openfile->mark_set && line == openfile->mark_begin) openfile->mark_begin_x += pre_len; - if (f == openfile->current) { + if (line == openfile->current) { openfile->current_x += pre_len; openfile->placewewant = xplustabs(); } @@ -567,27 +566,27 @@ bool comment_line(undo_type action, filestruct *f, const char *comment_seq) } /* If the line is commented, report it as uncommentable, or uncomment it. */ - if (strncmp(f->data, comment_seq, pre_len) == 0 && (post_len == 0 || - strcmp(&f->data[line_len - post_len], post_seq) == 0)) { + if (strncmp(line->data, comment_seq, pre_len) == 0 && (post_len == 0 || + strcmp(line->data + line_len - post_len, post_seq) == 0)) { if (action == PREFLIGHT) return TRUE; /* Erase the comment prefix by moving the non-comment part. */ - charmove(f->data, &f->data[pre_len], line_len - pre_len); + charmove(line->data, line->data + pre_len, line_len - pre_len); /* Truncate the postfix if there was one. */ - f->data[line_len - pre_len - post_len] = '\0'; + line->data[line_len - pre_len - post_len] = '\0'; openfile->totsize -= pre_len + post_len; /* If needed, adjust the position of the mark and then the cursor. */ - if (openfile->mark_set && f == openfile->mark_begin) { + if (openfile->mark_set && line == openfile->mark_begin) { if (openfile->mark_begin_x < pre_len) openfile->mark_begin_x = 0; else openfile->mark_begin_x -= pre_len; } - if (f == openfile->current) { + if (line == openfile->current) { if (openfile->current_x < pre_len) openfile->current_x = 0; else