diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index a49dfce..1eb2bb9 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -6339,6 +6339,8 @@
 
 #if (defined(FEAT_WINDOWS) && defined(HAVE_DROP_FILE)) \
 	|| (defined(FEAT_GUI_GTK) && defined(FEAT_DND)) \
+	|| defined(FEAT_GUI_MSWIN) \
+	|| defined(FEAT_GUI_MAC) \
 	|| defined(PROTO)
 
 /*
diff --git a/src/spell.c b/src/spell.c
index d12a4bc..ffe5a20 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -4142,8 +4142,8 @@
     char_u	*af_enc;	/* "SET", normalized, alloc'ed string or NULL */
     int		af_flagtype;	/* AFT_CHAR, AFT_LONG, AFT_NUM or AFT_CAPLONG */
     int		af_slash;	/* character used in word for slash */
-    unsigned	af_rar;		/* RAR ID for rare word */
-    unsigned	af_kep;		/* KEP ID for keep-case word */
+    unsigned	af_rare;	/* RARE ID for rare word */
+    unsigned	af_keepcase;	/* KEEPCASE ID for keep-case word */
     unsigned	af_bad;		/* BAD ID for banned word */
     unsigned	af_needaffix;	/* NEEDAFFIX ID */
     unsigned	af_needcomp;	/* NEEDCOMPOUND ID */
@@ -4625,7 +4625,9 @@
 		else
 		    smsg((char_u *)_("Invalid value for FLAG in %s line %d: %s"),
 			    fname, lnum, items[1]);
-		if (aff->af_rar != 0 || aff->af_kep != 0 || aff->af_bad != 0
+		if (aff->af_rare != 0
+			|| aff->af_keepcase != 0
+			|| aff->af_bad != 0
 			|| aff->af_needaffix != 0
 			|| aff->af_needcomp != 0
 			|| compflags != NULL
@@ -4655,16 +4657,20 @@
 		    smsg((char_u *)_("Character used for SLASH must be ASCII; in %s line %d: %s"),
 			    fname, lnum, items[1]);
 	    }
-	    else if (STRCMP(items[0], "RAR") == 0 && itemcnt == 2
-						       && aff->af_rar == 0)
+	    /* TODO: remove "RAR" later */
+	    else if ((STRCMP(items[0], "RAR") == 0
+			|| STRCMP(items[0], "RARE") == 0) && itemcnt == 2
+						       && aff->af_rare == 0)
 	    {
-		aff->af_rar = affitem2flag(aff->af_flagtype, items[1],
+		aff->af_rare = affitem2flag(aff->af_flagtype, items[1],
 								 fname, lnum);
 	    }
-	    else if (STRCMP(items[0], "KEP") == 0 && itemcnt == 2
-						       && aff->af_kep == 0)
+	    /* TODO: remove "KEP" later */
+	    else if ((STRCMP(items[0], "KEP") == 0
+		    || STRCMP(items[0], "KEEPCASE") == 0) && itemcnt == 2
+						     && aff->af_keepcase == 0)
 	    {
-		aff->af_kep = affitem2flag(aff->af_flagtype, items[1],
+		aff->af_keepcase = affitem2flag(aff->af_flagtype, items[1],
 								 fname, lnum);
 	    }
 	    else if (STRCMP(items[0], "BAD") == 0 && itemcnt == 2
@@ -4795,11 +4801,11 @@
 		    if (cur_aff->ah_flag == 0 || STRLEN(items[1]) >= AH_KEY_LEN)
 			break;
 		    if (cur_aff->ah_flag == aff->af_bad
-			    || cur_aff->ah_flag == aff->af_rar
-			    || cur_aff->ah_flag == aff->af_kep
+			    || cur_aff->ah_flag == aff->af_rare
+			    || cur_aff->ah_flag == aff->af_keepcase
 			    || cur_aff->ah_flag == aff->af_needaffix
 			    || cur_aff->ah_flag == aff->af_needcomp)
-			smsg((char_u *)_("Affix also used for BAD/RAR/KEP/NEEDAFFIX/NEEDCOMPOUND in %s line %d: %s"),
+			smsg((char_u *)_("Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND in %s line %d: %s"),
 						       fname, lnum, items[1]);
 		    STRCPY(cur_aff->ah_key, items[1]);
 		    hash_add(tp, cur_aff->ah_key);
@@ -5786,11 +5792,11 @@
 	{
 	    /* Check for affix name that stands for keep-case word and stands
 	     * for rare word (if defined). */
-	    if (affile->af_kep != 0 && flag_in_afflist(
-				affile->af_flagtype, afflist, affile->af_kep))
+	    if (affile->af_keepcase != 0 && flag_in_afflist(
+			   affile->af_flagtype, afflist, affile->af_keepcase))
 		flags |= WF_KEEPCAP | WF_FIXCAP;
-	    if (affile->af_rar != 0 && flag_in_afflist(
-				affile->af_flagtype, afflist, affile->af_rar))
+	    if (affile->af_rare != 0 && flag_in_afflist(
+				affile->af_flagtype, afflist, affile->af_rare))
 		flags |= WF_RARE;
 	    if (affile->af_bad != 0 && flag_in_afflist(
 				affile->af_flagtype, afflist, affile->af_bad))
