From be3c54c6708d6f4a17032a3434f16e57bea6b665 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Tue, 25 Feb 2020 16:47:50 +0100 Subject: [PATCH] tweaks: rename two elements of an undo record, to be more telling --- src/cut.c | 2 +- src/nano.h | 4 +- src/text.c | 126 ++++++++++++++++++++++++++--------------------------- 3 files changed, 66 insertions(+), 66 deletions(-) diff --git a/src/cut.c b/src/cut.c index 3c922171..e920d4b1 100644 --- a/src/cut.c +++ b/src/cut.c @@ -41,7 +41,7 @@ void do_deletion(undo_type action) /* If the type of action changed or the cursor moved to a different * line, create a new undo item, otherwise update the existing item. */ if (action != openfile->last_action || - openfile->current->lineno != openfile->current_undo->lineno) + openfile->current->lineno != openfile->current_undo->head_lineno) add_undo(action, NULL); else update_undo(action); diff --git a/src/nano.h b/src/nano.h index c008d385..6f4dbb40 100644 --- a/src/nano.h +++ b/src/nano.h @@ -310,9 +310,9 @@ typedef struct undostruct { /* The operation type that this undo item is for. */ int xflags; /* Some flag data to mark certain corner cases. */ - ssize_t lineno; + ssize_t head_lineno; /* The line number where the operation began or ended. */ - size_t begin; + size_t head_x; /* The x position where the operation began or ended. */ char *strdata; /* String data to help restore the affected line. */ diff --git a/src/text.c b/src/text.c index dcea0a28..0f2904e1 100644 --- a/src/text.c +++ b/src/text.c @@ -286,7 +286,7 @@ void handle_indent_action(undostruct *u, bool undoing, bool add_indent) /* When redoing, reposition the cursor and let the indenter adjust it. */ if (!undoing) - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); /* For each line in the group, add or remove the individual indent. */ while (line && line->lineno <= group->bottom_line) { @@ -302,7 +302,7 @@ void handle_indent_action(undostruct *u, bool undoing, bool add_indent) /* When undoing, reposition the cursor to the recorded location. */ if (undoing) - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); refresh_needed = TRUE; } @@ -439,7 +439,7 @@ void handle_comment_action(undostruct *u, bool undoing, bool add_comment) /* When redoing, reposition the cursor and let the commenter adjust it. */ if (!undoing) - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); while (group) { linestruct *f = line_from_number(group->top_line); @@ -455,7 +455,7 @@ void handle_comment_action(undostruct *u, bool undoing, bool add_comment) /* When undoing, reposition the cursor to the recorded location. */ if (undoing) - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); refresh_needed = TRUE; } @@ -493,7 +493,7 @@ void redo_cut(undostruct *u) { linestruct *oldcutbuffer = cutbuffer; - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); if (!u->cutbuffer) die("Empty paste -- please report a bug\n"); @@ -526,7 +526,7 @@ void do_undo(void) if (u->type <= REPLACE) f = line_from_number(u->mark_begin_lineno); - openfile->current_x = u->begin; + openfile->current_x = u->head_x; switch (u->type) { case ADD: @@ -536,30 +536,30 @@ void do_undo(void) if ((u->xflags & WAS_FINAL_LINE) && !ISSET(NO_NEWLINES)) remove_magicline(); data = charalloc(strlen(f->data) - strlen(u->strdata) + 1); - strncpy(data, f->data, u->begin); - strcpy(&data[u->begin], &f->data[u->begin + strlen(u->strdata)]); + strncpy(data, f->data, u->head_x); + strcpy(&data[u->head_x], &f->data[u->head_x + strlen(u->strdata)]); free(f->data); f->data = data; - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); break; case ENTER: undidmsg = _("line break"); - from_x = (u->begin == 0) ? 0 : u->mark_begin_x; - to_x = (u->begin == 0) ? u->mark_begin_x : u->begin; + from_x = (u->head_x == 0) ? 0 : u->mark_begin_x; + to_x = (u->head_x == 0) ? u->mark_begin_x : u->head_x; f->data = charealloc(f->data, strlen(f->data) + strlen(&u->strdata[from_x]) + 1); strcat(f->data, &u->strdata[from_x]); unlink_node(f->next); renumber_from(f); - goto_line_posx(u->lineno, to_x); + goto_line_posx(u->head_lineno, to_x); break; case BACK: case DEL: undidmsg = _("deletion"); data = charalloc(strlen(f->data) + strlen(u->strdata) + 1); - strncpy(data, f->data, u->begin); - strcpy(&data[u->begin], u->strdata); - strcpy(&data[u->begin + strlen(u->strdata)], &f->data[u->begin]); + strncpy(data, f->data, u->head_x); + strcpy(&data[u->head_x], u->strdata); + strcpy(&data[u->head_x + strlen(u->strdata)], &f->data[u->head_x]); free(f->data); f->data = data; goto_line_posx(u->mark_begin_lineno, u->mark_begin_x); @@ -580,18 +580,18 @@ void do_undo(void) f->data = data; splice_node(f, t); renumber_from(t); - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); break; case REPLACE: undidmsg = _("replacement"); - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); data = u->strdata; u->strdata = f->data; f->data = data; break; #ifdef ENABLE_WRAPPING case SPLIT_END: - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); openfile->current_undo = openfile->current_undo->next; while (openfile->current_undo->type != SPLIT_BEGIN) do_undo(); @@ -624,7 +624,7 @@ void do_undo(void) cutbuffer = NULL; openfile->mark = line_from_number(u->mark_begin_lineno); openfile->mark_x = u->mark_begin_x; - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); cut_marked(NULL); u->cutbuffer = cutbuffer; cutbuffer = oldcutbuffer; @@ -634,7 +634,7 @@ void do_undo(void) break; case COUPLE_BEGIN: undidmsg = u->strdata; - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); openfile->current_y = u->mark_begin_lineno; adjust_viewport(STATIONARY); break; @@ -709,9 +709,9 @@ void do_redo(void) if ((u->xflags & WAS_FINAL_LINE) && !ISSET(NO_NEWLINES)) new_magicline(); data = charalloc(strlen(f->data) + strlen(u->strdata) + 1); - strncpy(data, f->data, u->begin); - strcpy(&data[u->begin], u->strdata); - strcpy(&data[u->begin + strlen(u->strdata)], &f->data[u->begin]); + strncpy(data, f->data, u->head_x); + strcpy(&data[u->head_x], u->strdata); + strcpy(&data[u->head_x + strlen(u->strdata)], &f->data[u->head_x]); free(f->data); f->data = data; goto_line_posx(u->mark_begin_lineno, u->mark_begin_x); @@ -720,22 +720,22 @@ void do_redo(void) redidmsg = _("line break"); shoveline = make_new_node(f); shoveline->data = copy_of(u->strdata); - data = measured_copy(f->data, u->begin); + data = measured_copy(f->data, u->head_x); free(f->data); f->data = data; splice_node(f, shoveline); renumber_from(shoveline); - goto_line_posx(u->lineno + 1, u->mark_begin_x); + goto_line_posx(u->head_lineno + 1, u->mark_begin_x); break; case BACK: case DEL: redidmsg = _("deletion"); data = charalloc(strlen(f->data) + strlen(u->strdata) + 1); - strncpy(data, f->data, u->begin); - strcpy(&data[u->begin], &f->data[u->begin + strlen(u->strdata)]); + strncpy(data, f->data, u->head_x); + strcpy(&data[u->head_x], &f->data[u->head_x + strlen(u->strdata)]); free(f->data); f->data = data; - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); break; case JOIN: redidmsg = _("line join"); @@ -757,16 +757,16 @@ void do_redo(void) data = u->strdata; u->strdata = f->data; f->data = data; - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); break; #ifdef ENABLE_WRAPPING case SPLIT_BEGIN: - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); openfile->current_undo = u; while (openfile->current_undo->type != SPLIT_END) do_redo(); u = openfile->current_undo; - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); /* Fall-through. */ case SPLIT_END: redidmsg = _("addition"); @@ -787,7 +787,7 @@ void do_redo(void) break; case INSERT: redidmsg = _("insertion"); - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); copy_from_buffer(u->cutbuffer); free_lines(u->cutbuffer); u->cutbuffer = NULL; @@ -800,7 +800,7 @@ void do_redo(void) return; case COUPLE_END: redidmsg = u->strdata; - goto_line_posx(u->lineno, u->begin); + goto_line_posx(u->head_lineno, u->head_x); adjust_viewport(STATIONARY); break; case INDENT: @@ -1119,8 +1119,8 @@ void add_undo(undo_type action, const char *message) u->type = action; u->strdata = NULL; u->cutbuffer = NULL; - u->lineno = openfile->current->lineno; - u->begin = openfile->current_x; + u->head_lineno = openfile->current->lineno; + u->head_x = openfile->current_x; u->mark_begin_lineno = openfile->current->lineno; u->mark_begin_x = openfile->current_x; u->wassize = openfile->totsize; @@ -1168,7 +1168,7 @@ void add_undo(undo_type action, const char *message) * else purposely fall into the line-joining code. */ if (openfile->current->data[openfile->current_x] != '\0') { char *char_buf = charalloc(MAXCHARLEN + 1); - int charlen = collect_char(&openfile->current->data[u->begin], + int charlen = collect_char(&openfile->current->data[u->head_x], char_buf); char_buf[charlen] = '\0'; u->strdata = char_buf; @@ -1180,8 +1180,8 @@ void add_undo(undo_type action, const char *message) case JOIN: if (openfile->current->next) { if (u->type == BACK) { - u->lineno = openfile->current->next->lineno; - u->begin = 0; + u->head_lineno = openfile->current->next->lineno; + u->head_x = 0; } u->strdata = copy_of(openfile->current->next->data); } @@ -1211,13 +1211,13 @@ void add_undo(undo_type action, const char *message) u->xflags |= WAS_FINAL_LINE; } else if (!ISSET(CUT_FROM_CURSOR)) { /* The entire line is being cut regardless of the cursor position. */ - u->begin = 0; + u->head_x = 0; u->xflags |= WAS_WHOLE_LINE; } break; case PASTE: u->cutbuffer = copy_buffer(cutbuffer); - u->lineno += cutbottom->lineno - cutbuffer->lineno; + u->head_lineno += cutbottom->lineno - cutbuffer->lineno; if (openfile->current == openfile->filebot) u->xflags |= WAS_FINAL_LINE; break; @@ -1294,9 +1294,9 @@ void update_undo(undo_type action) switch (u->type) { case ADD: - newlen = openfile->current_x - u->begin; + newlen = openfile->current_x - u->head_x; u->strdata = charealloc(u->strdata, newlen + 1); - strncpy(u->strdata, openfile->current->data + u->begin, newlen); + strncpy(u->strdata, openfile->current->data + u->head_x, newlen); u->strdata[newlen] = '\0'; u->mark_begin_lineno = openfile->current->lineno; u->mark_begin_x = openfile->current_x; @@ -1310,18 +1310,18 @@ void update_undo(undo_type action) textposition = openfile->current->data + openfile->current_x; charlen = char_length(textposition); datalen = strlen(u->strdata); - if (openfile->current_x == u->begin) { + if (openfile->current_x == u->head_x) { /* They deleted more: add removed character after earlier stuff. */ u->strdata = charealloc(u->strdata, datalen + charlen + 1); strncpy(u->strdata + datalen, textposition, charlen); u->strdata[datalen + charlen] = '\0'; u->mark_begin_x = openfile->current_x; - } else if (openfile->current_x == u->begin - charlen) { + } else if (openfile->current_x == u->head_x - charlen) { /* They backspaced further: add removed character before earlier. */ u->strdata = charealloc(u->strdata, datalen + charlen + 1); memmove(u->strdata + charlen, u->strdata, datalen + 1); strncpy(u->strdata, textposition, charlen); - u->begin = openfile->current_x; + u->head_x = openfile->current_x; } else { /* They deleted *elsewhere* on the line: start a new undo item. */ add_undo(u->type, NULL); @@ -1331,8 +1331,8 @@ void update_undo(undo_type action) break; case REPLACE: case PASTE: - u->lineno = openfile->current->lineno; - u->begin = openfile->current_x; + u->head_lineno = openfile->current->lineno; + u->head_x = openfile->current_x; break; #ifdef ENABLE_WRAPPING case SPLIT_BEGIN: @@ -1352,14 +1352,14 @@ void update_undo(undo_type action) } if (u->xflags & MARK_WAS_SET) { /* If the region was marked backwards, swap the end points. */ - if (u->lineno < u->mark_begin_lineno || - (u->lineno == u->mark_begin_lineno && - u->begin < u->mark_begin_x)) { - ssize_t number = u->lineno; - size_t position = u->begin; + if (u->head_lineno < u->mark_begin_lineno || + (u->head_lineno == u->mark_begin_lineno && + u->head_x < u->mark_begin_x)) { + ssize_t number = u->head_lineno; + size_t position = u->head_x; - u->lineno = u->mark_begin_lineno; - u->begin = u->mark_begin_x; + u->head_lineno = u->mark_begin_lineno; + u->head_x = u->mark_begin_x; u->mark_begin_lineno = number; u->mark_begin_x = position; @@ -1374,14 +1374,14 @@ void update_undo(undo_type action) bottomline = bottomline->next; count++; } - u->lineno = u->mark_begin_lineno + count; + u->head_lineno = u->mark_begin_lineno + count; if (ISSET(CUT_FROM_CURSOR) || u->type == CUT_TO_EOF) { - u->begin = strlen(bottomline->data); - if (u->lineno == u->mark_begin_lineno) - u->begin += u->mark_begin_x; + u->head_x = strlen(bottomline->data); + if (u->head_lineno == u->mark_begin_lineno) + u->head_x += u->mark_begin_x; } else if (openfile->current == openfile->filebot && ISSET(NO_NEWLINES)) - u->begin = strlen(bottomline->data); + u->head_x = strlen(bottomline->data); } break; case INSERT: @@ -1391,8 +1391,8 @@ void update_undo(undo_type action) case COUPLE_BEGIN: break; case COUPLE_END: - u->lineno = openfile->current->lineno; - u->begin = openfile->current_x; + u->head_lineno = openfile->current->lineno; + u->head_x = openfile->current_x; break; default: break; @@ -2045,8 +2045,8 @@ void do_justify(bool full_justify) add_undo(COUPLE_BEGIN, N_("justification")); /* Store the original cursor position, in case we unjustify. */ - openfile->undotop->lineno = was_lineno; - openfile->undotop->begin = was_current_x; + openfile->undotop->head_lineno = was_lineno; + openfile->undotop->head_x = was_current_x; add_undo(CUT, NULL); #endif