diff --git a/ChangeLog b/ChangeLog
index e406deba19b4df09fdec8f997e25c3e3116c7694..b5b7828c1abdcde0777a7542ff2870dcb94c3679 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
 CVS code -
+- General:
+	- Change instances in the code that refresh the entire edit
+	  window when color support is enabled (in order to properly
+	  handle multi-line color regexes) to only do so when
+	  it's necessary, i.e, when COLOR_SYNTAX is set. (DLR)
 - nano.c:
   main()
 	- Move the call to raw() on systems that don't define
diff --git a/src/files.c b/src/files.c
index 6a410ffeba7afb32ab5baa3b25f503e45ae76a65..12e028dfebc01d2e3db97eb3831d8952b09fe62e 100644
--- a/src/files.c
+++ b/src/files.c
@@ -62,7 +62,8 @@ void load_file(int update)
 
 #ifdef ENABLE_COLOR
     update_color();
-    edit_refresh();
+    if (ISSET(COLOR_SYNTAX))
+	edit_refresh();
 #endif
 }
 
@@ -100,7 +101,8 @@ void new_file(void)
 
 #ifdef ENABLE_COLOR
     update_color();
-    edit_refresh();
+    if (ISSET(COLOR_SYNTAX))
+	edit_refresh();
 #endif
 }
 
@@ -1647,7 +1649,8 @@ int write_file(const char *name, int tmp, int append, int nonamechange)
 	    filename = mallocstrcpy(filename, realname);
 #ifdef ENABLE_COLOR
 	    update_color();
-	    edit_refresh();
+	    if (ISSET(COLOR_SYNTAX))
+		edit_refresh();
 #endif
 	}
 
diff --git a/src/nano.c b/src/nano.c
index 98f9a7f3936e29b3ccf19aebb47ab7467b247743..a766d68d2bddd48f4a7f22dde3e17eddcaa5b3ce 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -988,7 +988,8 @@ void do_char(char ch)
 #endif
 
 #ifdef ENABLE_COLOR
-    refresh = 1;
+    if (ISSET(COLOR_SYNTAX))
+	refresh = 1;
 #endif
 
 #if !defined(DISABLE_WRAPPING) || defined(ENABLE_COLOR)
@@ -1067,7 +1068,8 @@ int do_delete(void)
 
 	align(&current->data);
 #ifdef ENABLE_COLOR
-	refresh = 1;
+	if (ISSET(COLOR_SYNTAX))
+	    refresh = 1;
 #endif
     } else if (current->next != NULL && (current->next != filebot || blbf)) {
 	/* We can delete the line before filebot only if it is blank: it