From 64041014076d2b5252cc4d84140ac5a35fabbfa6 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Wed, 17 Jun 2015 10:59:16 +0000 Subject: [PATCH] Eliding an unneeded variable and correcting two comments. And putting the more frequent condition first. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5252 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 2 ++ src/text.c | 20 ++++++++------------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index afa0a2fb..423994da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,8 @@ Patch partially by Mark Majeres. The problem was first reported in https://lists.gnu.org/archive/html/nano-devel/2015-06/msg00003.html. * src/text.c (do_undo): Adjust whitespace after the previous change. + * src/text.c (add_undo): Elide an unneeded variable and correct two + comments. And try to put the more frequent condition first. 2015-06-14 Benno Schulenberg * src/winio.c (edit_draw): Add some debugging code to track which diff --git a/src/text.c b/src/text.c index 5d00702f..3bdff0a6 100644 --- a/src/text.c +++ b/src/text.c @@ -873,17 +873,15 @@ bool execute_command(const char *command) /* Add a new undo struct to the top of the current pile. */ void add_undo(undo_type current_action) { - undo *u; - char *data; openfilestruct *fs = openfile; - /* Last thing we cut to set up the undo for uncut. */ + undo *u = fs->current_undo; + /* The thing we did previously. */ - /* Ugh, if we were called while cutting not-to-end, non-marked, and - * on the same lineno, we need to abort here. */ - u = fs->current_undo; + /* When doing contiguous adds or contiguous cuts -- which means: with + * no cursor movement in between -- don't add a new undo item. */ if (u && u->mark_begin_lineno == fs->current->lineno && - ((current_action == CUT && u->type == CUT && !u->mark_set && keeping_cutbuffer()) || - (current_action == ADD && u->type == ADD && u->mark_begin_x == fs->current_x))) + ((current_action == ADD && u->type == ADD && u->mark_begin_x == fs->current_x)) || + (current_action == CUT && u->type == CUT && !u->mark_set && keeping_cutbuffer())) return; /* When trying to delete the final newline, don't add an undo for it. */ if (current_action == DEL && openfile->current->next == openfile->filebot && @@ -952,8 +950,7 @@ void add_undo(undo_type current_action) u->lineno = fs->current->next->lineno; u->begin = 0; } - data = mallocstrcpy(NULL, fs->current->next->data); - u->strdata = data; + u->strdata = mallocstrcpy(NULL, fs->current->next->data); } current_action = u->type = JOIN; break; @@ -967,8 +964,7 @@ void add_undo(undo_type current_action) case INSERT: break; case REPLACE: - data = mallocstrcpy(NULL, fs->current->data); - u->strdata = data; + u->strdata = mallocstrcpy(NULL, fs->current->data); break; case CUT_EOF: cutbuffer_reset(); -- 2.39.5