diff src/normal.c @ 710:8165a037200b

updated for version 7.0214
author vimboss
date Sat, 04 Mar 2006 21:46:13 +0000
parents e402b0af6083
children 0f9f4761ad9c
line wrap: on
line diff
--- a/src/normal.c
+++ b/src/normal.c
@@ -4512,6 +4512,9 @@ nv_zet(cap)
     long	old_fdl = curwin->w_p_fdl;
     int		old_fen = curwin->w_p_fen;
 #endif
+#ifdef FEAT_SYN_HL
+    int		undo = FALSE;
+#endif
 
     if (VIM_ISDIGIT(nchar))
     {
@@ -4883,6 +4886,26 @@ dozet:
 #endif /* FEAT_FOLDING */
 
 #ifdef FEAT_SYN_HL
+    case 'u':	/* "zug" and "zuw": undo "zg" and "zw" */
+		++no_mapping;
+		++allow_keys;   /* no mapping for nchar, but allow key codes */
+		nchar = safe_vgetc();
+#ifdef FEAT_LANGMAP
+		LANGMAP_ADJUST(nchar, TRUE);
+#endif
+		--no_mapping;
+		--allow_keys;
+#ifdef FEAT_CMDL_INFO
+		(void)add_to_showcmd(nchar);
+#endif
+		if (vim_strchr((char_u *)"gGwW", nchar) == NULL)
+		{
+		    clearopbeep(cap->oap);
+		    break;
+		}
+		undo = TRUE;
+		/*FALLTHROUGH*/
+
     case 'g':	/* "zg": add good word to word list */
     case 'w':	/* "zw": add wrong word to word list */
     case 'G':	/* "zG": add good word to temp word list */
@@ -4913,8 +4936,9 @@ dozet:
 							    FIND_IDENT)) == 0)
 			return;
 		    spell_add_word(ptr, len, nchar == 'w' || nchar == 'W',
-					    (nchar == 'G' || nchar == 'W') ? 0
-							  : (int)cap->count1);
+					    (nchar == 'G' || nchar == 'W')
+						       ? 0 : (int)cap->count1,
+					    undo);
 		}
 		break;