diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index a9ae299..a64a0b4 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3323,10 +3323,8 @@
     char_u		*cmd, *arg;
     int			len = 0;
     exarg_T		ea;
-#ifdef FEAT_CMDL_COMPL
     int			compl = EXPAND_NOTHING;
     int			delim;
-#endif
     int			forceit = FALSE;
     int			usefilter = FALSE;  /* filter instead of file name */
 
@@ -3432,13 +3430,7 @@
 	else if (cmd[0] >= 'A' && cmd[0] <= 'Z')
 	{
 	    ea.cmd = cmd;
-	    p = find_ucmd(&ea, p, NULL, xp,
-#if defined(FEAT_CMDL_COMPL)
-		    &compl
-#else
-		    NULL
-#endif
-		    );
+	    p = find_ucmd(&ea, p, NULL, xp, &compl);
 	    if (p == NULL)
 		ea.cmdidx = CMD_SIZE;	// ambiguous user command
 	}
@@ -3662,14 +3654,11 @@
 	    {
 		xp->xp_context = EXPAND_ENV_VARS;
 		++xp->xp_pattern;
-#if defined(FEAT_CMDL_COMPL)
 		/* Avoid that the assignment uses EXPAND_FILES again. */
 		if (compl != EXPAND_USER_DEFINED && compl != EXPAND_USER_LIST)
 		    compl = EXPAND_ENV_VARS;
-#endif
 	    }
 	}
-#if defined(FEAT_CMDL_COMPL)
 	/* Check for user names */
 	if (*xp->xp_pattern == '~')
 	{
@@ -3685,7 +3674,6 @@
 		++xp->xp_pattern;
 	    }
 	}
-#endif
     }
 
 /*
@@ -3759,8 +3747,7 @@
 	    }
 	    return skipwhite(arg);
 
-#ifdef FEAT_CMDL_COMPL
-# ifdef FEAT_SEARCH_EXTRA
+#ifdef FEAT_SEARCH_EXTRA
 	case CMD_match:
 	    if (*arg == NUL || !ends_excmd(*arg))
 	    {
@@ -3774,7 +3761,7 @@
 		}
 	    }
 	    return find_nextcmd(arg);
-# endif
+#endif
 
 /*
  * All completion for the +cmdline_compl feature goes here.
@@ -4143,8 +4130,6 @@
 	    xp->xp_pattern = arg;
 	    break;
 
-#endif /* FEAT_CMDL_COMPL */
-
 	default:
 	    break;
     }
@@ -5554,7 +5539,6 @@
     return OK;
 }
 
-#if defined(FEAT_CMDL_COMPL) || defined(PROTO)
 /*
  * Function given to ExpandGeneric() to obtain the list of command names.
  */
@@ -5565,7 +5549,6 @@
 	return get_user_command_name(idx);
     return cmdnames[idx].cmd_name;
 }
-#endif
 
     static void
 ex_colorscheme(exarg_T *eap)
@@ -9178,7 +9161,6 @@
 	semsg(_(e_invarg2), eap->arg);
 }
 
-#if defined(FEAT_CMDL_COMPL) || defined(PROTO)
 /*
  * Function given to ExpandGeneric() to obtain the possible arguments of the
  * ":behave {mswin,xterm}" command.
@@ -9204,9 +9186,7 @@
 	return (char_u *)"clear";
     return NULL;
 }
-#endif
 
-#if defined(FEAT_CMDL_COMPL) || defined(PROTO)
     char_u *
 get_mapclear_arg(expand_T *xp UNUSED, int idx)
 {
@@ -9214,7 +9194,6 @@
 	return (char_u *)"<buffer>";
     return NULL;
 }
-#endif
 
 static int filetype_detect = FALSE;
 static int filetype_plugin = FALSE;
