From 95fffa99aa6139d353b2693f0d2fed3ddaab85ed Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Mon, 5 Mar 2018 10:18:11 +0100 Subject: [PATCH] tweaks: adjust two comments, move two declarations, rewrap three lines --- src/text.c | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/src/text.c b/src/text.c index 6b3d11c1..af1e02cb 100644 --- a/src/text.c +++ b/src/text.c @@ -1368,20 +1368,19 @@ void update_multiline_undo(ssize_t lineno, char *indentation) u->newsize = openfile->totsize; } -/* Update an undo item, or determine whether a new one is really needed - * and bounce the data to add_undo instead. The latter functionality - * just feels gimmicky and may just be more hassle than it's worth, - * so it should be axed if needed. */ +/* Update an undo record, after checking that a new one is not needed. */ void update_undo(undo_type action) { - undo *u; + undo *u = openfile->undotop; + char *char_buf; + int char_len; #ifdef DEBUG fprintf(stderr, " >> Updating an undo... action = %d\n", action); #endif - /* Change to an add if we're not using the same undo struct - * that we should be using. */ + /* If the action is different or the position changed, don't update the + * current record but add a new one instead. */ if (action != openfile->last_action || (action != ENTER && action != CUT && action != INSERT && openfile->current->lineno != openfile->current_undo->lineno)) { @@ -1389,27 +1388,27 @@ fprintf(stderr, " >> Updating an undo... action = %d\n", action); return; } - u = openfile->undotop; - u->newsize = openfile->totsize; switch (u->type) { - case ADD: { - char *char_buf = charalloc(MAXCHARLEN); - int char_len = parse_mbchar(&openfile->current->data[u->mark_begin_x], char_buf, NULL); - u->strdata = addstrings(u->strdata, u->strdata ? strlen(u->strdata) : 0, char_buf, char_len); + case ADD: + char_buf = charalloc(MAXCHARLEN); + char_len = parse_mbchar(&openfile->current->data[u->mark_begin_x], + char_buf, NULL); + u->strdata = addstrings(u->strdata, u->strdata ? strlen(u->strdata) : 0, + char_buf, char_len); u->mark_begin_lineno = openfile->current->lineno; u->mark_begin_x = openfile->current_x; break; - } case ENTER: u->strdata = mallocstrcpy(NULL, openfile->current->data); u->mark_begin_x = openfile->current_x; break; case BACK: - case DEL: { - char *char_buf = charalloc(MAXCHARLEN); - int char_len = parse_mbchar(&openfile->current->data[openfile->current_x], char_buf, NULL); + case DEL: + char_buf = charalloc(MAXCHARLEN); + char_len = parse_mbchar(&openfile->current->data[openfile->current_x], + char_buf, NULL); if (openfile->current_x == u->begin) { /* They deleted more: add removed character after earlier stuff. */ u->strdata = addstrings(u->strdata, strlen(u->strdata), char_buf, char_len); @@ -1425,7 +1424,6 @@ fprintf(stderr, " >> Updating an undo... action = %d\n", action); return; } break; - } case JOIN: break; case REPLACE: