updated for version 7.3.704
Problem:    Repeating "cgn" does not always work correctly.
Solution:   Also fetch the operator character. (Christian Brabandt)
diff --git a/src/normal.c b/src/normal.c
index 6a4fa78..03a4c45 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -960,8 +960,11 @@
 #ifdef FEAT_CMDL_INFO
 	    need_flushbuf |= add_to_showcmd(ca.nchar);
 #endif
+	    /* For "gn" from redo, need to get one more char to determine the
+	     * operator */
 	    if (ca.nchar == 'r' || ca.nchar == '\'' || ca.nchar == '`'
-						      || ca.nchar == Ctrl_BSL)
+						       || ca.nchar == Ctrl_BSL
+		  || ((ca.nchar == 'n' || ca.nchar == 'N') && !stuff_empty()))
 	    {
 		cp = &ca.extra_char;	/* need to get a third character */
 		if (ca.nchar != 'r')
@@ -1083,6 +1086,8 @@
 		ca.nchar = ca.extra_char;
 		idx = find_command(ca.cmdchar);
 	    }
+	    else if (ca.nchar == 'n' || ca.nchar == 'N')
+		ca.oap->op_type = get_op_type(*cp, NUL);
 	    else if (*cp == Ctrl_BSL)
 	    {
 		long towait = (p_ttm >= 0 ? p_ttm : p_tm);
@@ -8009,7 +8014,7 @@
 #ifdef FEAT_VISUAL
 	if (!current_search(cap->count1, cap->nchar == 'n'))
 #endif
-	    beep_flush();
+	    clearopbeep(oap);
 	break;
 
     /*