From b71cf301da254ed625767a17c195da4ecb417802 Mon Sep 17 00:00:00 2001 From: Chris Allegretta Date: Mon, 16 Feb 2009 23:06:09 +0000 Subject: [PATCH] Okay that will not work. Revert forcing reset_multis on !viewok as it's too expensive for things like deleting text. Will have to go back and force inside functions. Add check in reset_multis for CNONE type since that's slowing us down and is dumb to leave out. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4379 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 5 ++--- src/color.c | 5 ++++- src/cut.c | 8 ++++++++ src/global.c | 2 ++ src/nano.c | 11 +++++++++-- src/text.c | 7 ------- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7280b16b..ae4328a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,7 @@ 2009-02-16 Chris Allegretta * Add new argument to reset_multis for force redraws without attempting to - guess whether we need to, force updates when running a non-viewok function. - New utility function color.c:reset_multis_for_id(). Fixes e.g. incorrect - highlighting when cutting text. + guess whether we need to, for functions that we don't have good info about + the text state. New utility function color.c:reset_multis_for_id(). 2009-02-15 Chris Allegretta * configure.ac, doc/man/Makefile.am - Add check for HTML output support in GNU diff --git a/src/color.c b/src/color.c index e93d1aac..a8393a4d 100644 --- a/src/color.c +++ b/src/color.c @@ -344,7 +344,10 @@ void reset_multis(filestruct *fileptr, bool force) if (fileptr->multidata[tmpcolor->id] == CWHOLELINE) { if (nobegin && noend) continue; - } else if (fileptr->multidata[tmpcolor->id] & CBEGINBEFORE && !noend + } else if (fileptr->multidata[tmpcolor->id] == CNONE) { + if (nobegin && noend) + continue; + } else if (fileptr->multidata[tmpcolor->id] & CBEGINBEFORE && !noend && (nobegin || endmatch.rm_eo > startmatch.rm_eo)) { reset_multis_after(fileptr, tmpcolor->id); continue; diff --git a/src/cut.c b/src/cut.c index d4cc7c14..f65efd8c 100644 --- a/src/cut.c +++ b/src/cut.c @@ -214,6 +214,10 @@ void do_cut_text( /* Update the screen. */ edit_refresh_needed = TRUE; +#ifdef ENABLE_COLOR + reset_multis(openfile->current, FALSE); +#endif + #ifdef DEBUG dump_filestruct(cutbuffer); #endif @@ -277,6 +281,10 @@ void do_uncut_text(void) /* Update the screen. */ edit_refresh_needed = TRUE; +#ifdef ENABLE_COLOR + reset_multis(openfile->current, FALSE); +#endif + #ifdef DEBUG dump_filestruct_reverse(); #endif diff --git a/src/global.c b/src/global.c index 0c8e282a..54b337d6 100644 --- a/src/global.c +++ b/src/global.c @@ -1715,9 +1715,11 @@ void thanks_for_all_the_fish(void) if (jusbuffer != NULL) free_filestruct(jusbuffer); #endif +#ifdef DEBUG /* Free the memory associated with each open file buffer. */ if (openfile != NULL) free_openfilestruct(openfile); +#endif #ifdef ENABLE_COLOR if (syntaxstr != NULL) free(syntaxstr); diff --git a/src/nano.c b/src/nano.c index 87c37051..c61b11cc 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1590,24 +1590,31 @@ int do_input(bool *meta_key, bool *func_key, bool *s_or_t, bool *ran_func = TRUE; if (ISSET(VIEW_MODE) && f && !f->viewok) print_view_warning(); - else + else { #ifndef NANO_TINY if (s->scfunc == DO_TOGGLE) do_toggle(s->toggle); else { +#else + { #endif iso_me_harder_funcmap(s->scfunc); #ifdef ENABLE_COLOR if (!f->viewok && openfile->syntax != NULL && openfile->syntax->nmultis > 0) { - reset_multis(openfile->current, TRUE); + reset_multis(openfile->current, FALSE); } if (edit_refresh_needed) { +#ifdef DEBUG + fprintf(stderr, "running edit_refresh() as edit_refresh_needed is true\n"); +#endif edit_refresh(); edit_refresh_needed = FALSE; } + #endif } + } #ifndef NANO_TINY } #endif diff --git a/src/text.c b/src/text.c index 83ef8e05..6f954b12 100644 --- a/src/text.c +++ b/src/text.c @@ -140,13 +140,6 @@ void do_delete(void) set_modified(); -#ifdef ENABLE_COLOR - /* If color syntaxes are available and turned on, we need to call - * edit_refresh(). */ - if (openfile->colorstrings != NULL && !ISSET(NO_COLOR_SYNTAX)) - do_refresh = TRUE; -#endif - if (do_refresh) edit_refresh_needed = TRUE; else -- 2.39.5