From ba8f806705909cd028891eb5af136bd6a6f95697 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Fri, 4 Dec 2015 20:54:34 +0000 Subject: [PATCH] Fusing three functions into a single one. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5477 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 2 ++ src/color.c | 64 ++++++++++++++++++++++------------------------------- 2 files changed, 29 insertions(+), 37 deletions(-) diff --git a/ChangeLog b/ChangeLog index f1fad86f..e5242305 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2015-12-03 Benno Schulenberg * src/proto.h: Avoid a compilation warning. + * src/color.c (reset_multis_for_id, reset_multis_before/after): + Fuse these three functions into a single one. 2015-12-03 Benno Schulenberg * src/text.c (discard_until): Move the trimming of the undo stack diff --git a/src/color.c b/src/color.c index b45736dc..8557aa20 100644 --- a/src/color.c +++ b/src/color.c @@ -365,54 +365,44 @@ void color_update(void) } } -/* Reset the multicolor info cache for records for any lines which need - * to be recalculated. */ -void reset_multis_after(filestruct *fileptr, int mindex) +/* Reset the multiline coloring cache for one specific regex (given by + * index) for lines that need reevaluation. */ +void reset_multis_for_id(filestruct *fileptr, int index) { - filestruct *oof; - for (oof = fileptr->next; oof != NULL; oof = oof->next) { - alloc_multidata_if_needed(oof); - if (oof->multidata[mindex] != CNONE) - oof->multidata[mindex] = -1; - else + filestruct *row; + + /* Reset the cache of earlier lines, as far back as needed. */ + for (row = fileptr->prev; row != NULL; row = row->prev) { + alloc_multidata_if_needed(row); + if (row->multidata[index] == CNONE) break; + row->multidata[index] = -1; } - for (; oof != NULL; oof = oof->next) { - alloc_multidata_if_needed(oof); - if (oof->multidata[mindex] == CNONE) - oof->multidata[mindex] = -1; - else + for (; row != NULL; row = row->prev) { + alloc_multidata_if_needed(row); + if (row->multidata[index] != CNONE) break; + row->multidata[index] = -1; } - edit_refresh_needed = TRUE; -} -void reset_multis_before(filestruct *fileptr, int mindex) -{ - filestruct *oof; - for (oof = fileptr->prev; oof != NULL; oof = oof->prev) { - alloc_multidata_if_needed(oof); - if (oof->multidata[mindex] != CNONE) - oof->multidata[mindex] = -1; - else + /* Reset the cache of the current line. */ + fileptr->multidata[index] = -1; + + /* Reset the cache of later lines, as far ahead as needed. */ + for (row = fileptr->next; row != NULL; row = row->next) { + alloc_multidata_if_needed(row); + if (row->multidata[index] == CNONE) break; + row->multidata[index] = -1; } - for (; oof != NULL; oof = oof->prev) { - alloc_multidata_if_needed(oof); - if (oof->multidata[mindex] == CNONE) - oof->multidata[mindex] = -1; - else + for (; row != NULL; row = row->next) { + alloc_multidata_if_needed(row); + if (row->multidata[index] != CNONE) break; + row->multidata[index] = -1; } - edit_refresh_needed = TRUE; -} -/* Reset one multiline regex info. */ -void reset_multis_for_id(filestruct *fileptr, int num) -{ - reset_multis_before(fileptr, num); - reset_multis_after(fileptr, num); - fileptr->multidata[num] = -1; + edit_refresh_needed = TRUE; } /* Reset multi-line strings around the filestruct fileptr, trying to be -- 2.39.5