diff --git a/src/usercmd.c b/src/usercmd.c
index 261a629..070e467 100644
--- a/src/usercmd.c
+++ b/src/usercmd.c
@@ -1235,8 +1235,8 @@
 }
 
 /*
- * Add modifiers from "cmdmod.split" to "buf".  Set "multi_mods" when one was
- * added.  Return the number of bytes added.
+ * Add modifiers from "cmdmod.cmod_split" to "buf".  Set "multi_mods" when one
+ * was added.  Return the number of bytes added.
  */
     size_t
 add_win_cmd_modifers(char_u *buf, int *multi_mods)
@@ -1244,23 +1244,23 @@
     size_t result = 0;
 
     // :aboveleft and :leftabove
-    if (cmdmod.split & WSP_ABOVE)
+    if (cmdmod.cmod_split & WSP_ABOVE)
 	result += add_cmd_modifier(buf, "aboveleft", multi_mods);
     // :belowright and :rightbelow
-    if (cmdmod.split & WSP_BELOW)
+    if (cmdmod.cmod_split & WSP_BELOW)
 	result += add_cmd_modifier(buf, "belowright", multi_mods);
     // :botright
-    if (cmdmod.split & WSP_BOT)
+    if (cmdmod.cmod_split & WSP_BOT)
 	result += add_cmd_modifier(buf, "botright", multi_mods);
 
     // :tab
-    if (cmdmod.tab > 0)
+    if (cmdmod.cmod_tab > 0)
 	result += add_cmd_modifier(buf, "tab", multi_mods);
     // :topleft
-    if (cmdmod.split & WSP_TOP)
+    if (cmdmod.cmod_split & WSP_TOP)
 	result += add_cmd_modifier(buf, "topleft", multi_mods);
     // :vertical
-    if (cmdmod.split & WSP_VERT)
+    if (cmdmod.cmod_split & WSP_VERT)
 	result += add_cmd_modifier(buf, "vertical", multi_mods);
     return result;
 }
@@ -1454,24 +1454,24 @@
     {
 	int multi_mods = 0;
 	typedef struct {
-	    int *varp;
+	    int flag;
 	    char *name;
 	} mod_entry_T;
 	static mod_entry_T mod_entries[] = {
 #ifdef FEAT_BROWSE_CMD
-	    {&cmdmod.browse, "browse"},
+	    {CMOD_BROWSE, "browse"},
 #endif
 #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
-	    {&cmdmod.confirm, "confirm"},
+	    {CMOD_CONFIRM, "confirm"},
 #endif
-	    {&cmdmod.hide, "hide"},
-	    {&cmdmod.keepalt, "keepalt"},
-	    {&cmdmod.keepjumps, "keepjumps"},
-	    {&cmdmod.keepmarks, "keepmarks"},
-	    {&cmdmod.keeppatterns, "keeppatterns"},
-	    {&cmdmod.lockmarks, "lockmarks"},
-	    {&cmdmod.noswapfile, "noswapfile"},
-	    {NULL, NULL}
+	    {CMOD_HIDE, "hide"},
+	    {CMOD_KEEPALT, "keepalt"},
+	    {CMOD_KEEPJUMPS, "keepjumps"},
+	    {CMOD_KEEPMARKS, "keepmarks"},
+	    {CMOD_KEEPPATTERNS, "keeppatterns"},
+	    {CMOD_LOCKMARKS, "lockmarks"},
+	    {CMOD_NOSWAPFILE, "noswapfile"},
+	    {0, NULL}
 	};
 	int i;
 
@@ -1484,8 +1484,8 @@
 	}
 
 	// the modifiers that are simple flags
-	for (i = 0; mod_entries[i].varp != NULL; ++i)
-	    if (*mod_entries[i].varp)
+	for (i = 0; mod_entries[i].name != NULL; ++i)
+	    if (cmdmod.cmod_flags & mod_entries[i].flag)
 		result += add_cmd_modifier(buf, mod_entries[i].name,
 								 &multi_mods);
 
@@ -1501,7 +1501,7 @@
 	// :verbose
 	if (p_verbose > 0)
 	    result += add_cmd_modifier(buf, "verbose", &multi_mods);
-	// flags from cmdmod.split
+	// flags from cmdmod.cmod_split
 	result += add_win_cmd_modifers(buf, &multi_mods);
 	if (quote && buf != NULL)
 	{
