diff --git a/src/search.c b/src/search.c
index 12751f8..145f6c8 100644
--- a/src/search.c
+++ b/src/search.c
@@ -288,7 +288,7 @@
 #ifdef FEAT_SEARCH_EXTRA
 	/* If 'hlsearch' set and search pat changed: need redraw. */
 	if (p_hls)
-	    redraw_all_later(NOT_VALID);
+	    redraw_all_later(SOME_VALID);
 	no_hlsearch = FALSE;
 #endif
     }
@@ -450,7 +450,7 @@
 # ifdef FEAT_SEARCH_EXTRA
     /* If 'hlsearch' set and search pat changed: need redraw. */
     if (p_hls && idx == last_idx && !no_hlsearch)
-	redraw_all_later(NOT_VALID);
+	redraw_all_later(SOME_VALID);
 # endif
 }
 #endif
@@ -1032,7 +1032,7 @@
      */
     if (no_hlsearch && !(options & SEARCH_KEEP))
     {
-	redraw_all_later(NOT_VALID);
+	redraw_all_later(SOME_VALID);
 	no_hlsearch = FALSE;
     }
 #endif
diff --git a/src/syntax.c b/src/syntax.c
index b6bc696..f79ed4f 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -3395,7 +3395,7 @@
 	    arg = skipwhite(arg_end);
 	}
     }
-    redraw_curbuf_later(NOT_VALID);
+    redraw_curbuf_later(SOME_VALID);
     syn_stack_free_all(curbuf);		/* Need to recompute all syntax. */
 }
 
@@ -4560,7 +4560,7 @@
     else
 	EMSG2(_(e_invarg2), arg);
 
-    redraw_curbuf_later(NOT_VALID);
+    redraw_curbuf_later(SOME_VALID);
     syn_stack_free_all(curbuf);		/* Need to recompute all syntax. */
 }
 
@@ -4646,7 +4646,7 @@
 		++curbuf->b_syn_folditems;
 #endif
 
-	    redraw_curbuf_later(NOT_VALID);
+	    redraw_curbuf_later(SOME_VALID);
 	    syn_stack_free_all(curbuf);	/* Need to recompute all syntax. */
 	    return;	/* don't free the progs and patterns now */
 	}
@@ -4893,7 +4893,7 @@
 		}
 	    }
 
-	    redraw_curbuf_later(NOT_VALID);
+	    redraw_curbuf_later(SOME_VALID);
 	    syn_stack_free_all(curbuf);	/* Need to recompute all syntax. */
 	    success = TRUE;	    /* don't free the progs and patterns now */
 	}
@@ -5250,7 +5250,7 @@
 
 	if (got_clstr)
 	{
-	    redraw_curbuf_later(NOT_VALID);
+	    redraw_curbuf_later(SOME_VALID);
 	    syn_stack_free_all(curbuf);	/* Need to recompute all syntax. */
 	}
     }
@@ -5519,7 +5519,7 @@
     else if (!finished)
     {
 	eap->nextcmd = check_nextcmd(arg_start);
-	redraw_curbuf_later(NOT_VALID);
+	redraw_curbuf_later(SOME_VALID);
 	syn_stack_free_all(curbuf);	/* Need to recompute all syntax. */
     }
 }
@@ -6113,6 +6113,8 @@
 	"DiffChange term=bold ctermbg=LightMagenta guibg=LightMagenta",
 	"DiffDelete term=bold ctermfg=Blue ctermbg=LightCyan gui=bold guifg=Blue guibg=LightCyan",
 	"TabLine term=underline cterm=underline ctermfg=black ctermbg=LightGrey gui=underline guibg=LightGrey",
+	"CursorColumn term=reverse ctermbg=LightGrey guibg=LightGrey",
+	"CursorLine term=underline cterm=underline guibg=LightGrey",
 	NULL
     };
 
@@ -6142,6 +6144,8 @@
 	"DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta",
 	"DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan gui=bold guifg=Blue guibg=DarkCyan",
 	"TabLine term=underline cterm=underline ctermfg=white ctermbg=DarkGrey gui=underline guibg=DarkGrey",
+	"CursorColumn term=reverse ctermbg=DarkGrey guibg=DarkGrey",
+	"CursorLine term=underline cterm=underline guibg=DarkGrey",
 	NULL
     };
 
@@ -6391,7 +6395,7 @@
 #ifdef FEAT_EVAL
 		HL_TABLE()[from_id - 1].sg_scriptID = current_SID;
 #endif
-		redraw_all_later(NOT_VALID);
+		redraw_all_later(SOME_VALID);
 	    }
 	}
 
@@ -7143,7 +7147,7 @@
 #ifdef FEAT_EVAL
 	HL_TABLE()[idx].sg_scriptID = current_SID;
 #endif
-	redraw_all_later(NOT_VALID);
+	redraw_all_later(SOME_VALID);
     }
     vim_free(key);
     vim_free(arg);
@@ -7719,7 +7723,7 @@
     ga_clear(&cterm_attr_table);
 }
 
-#if defined(FEAT_SYN_HL) || defined(PROTO)
+#if defined(FEAT_SYN_HL) || defined(FEAT_SPELL) || defined(PROTO)
 /*
  * Combine special attributes (e.g., for spelling) with other attributes
  * (e.g., for syntax highlighting).
@@ -7856,9 +7860,34 @@
 	return NULL;
     return &(GUI_ATTR_ENTRY(attr));
 }
-
 #endif /* FEAT_GUI */
 
+/*
+ * Get the highlight attributes (HL_BOLD etc.) from an attribute nr.
+ * Only to be used when "attr" > HL_ALL.
+ */
+    int
+syn_attr2attr(attr)
+    int	    attr;
+{
+    attrentry_T	*aep;
+
+#ifdef FEAT_GUI
+    if (gui.in_use)
+	aep = syn_gui_attr2entry(attr);
+    else
+#endif
+	if (t_colors > 1)
+	aep = syn_cterm_attr2entry(attr);
+    else
+	aep = syn_term_attr2entry(attr);
+
+    if (aep == NULL)	    /* highlighting not set */
+	return 0;
+    return aep->ae_attr;
+}
+
+
     attrentry_T *
 syn_term_attr2entry(attr)
     int		    attr;
