diff src/ex_docmd.c @ 2097:8f72e3512b43 v7.2.381

updated for version 7.2.381 Problem: No completion for :behave. Solution: Add :behave completion. Minor related fixes. (Dominique Pelle)
author Bram Moolenaar <bram@zimbu.org>
date Tue, 02 Mar 2010 15:56:05 +0100
parents 98a2a6e6b966
children c60d231453cf
line wrap: on
line diff
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -26,10 +26,12 @@ typedef struct ucmd
     long_u	uc_argt;	/* The argument type */
     char_u	*uc_rep;	/* The command's replacement string */
     long	uc_def;		/* The default value for a range/count */
+    int		uc_compl;	/* completion type */
+# ifdef FEAT_EVAL
     scid_T	uc_scriptID;	/* SID where the command was defined */
-    int		uc_compl;	/* completion type */
-# if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
+#  ifdef FEAT_CMDL_COMPL
     char_u	*uc_compl_arg;	/* completion argument if any */
+#  endif
 # endif
 } ucmd_T;
 
@@ -3156,17 +3158,15 @@ set_one_cmd_context(xp, buff)
 	    return NULL;
 	}
 	for (ea.cmdidx = (cmdidx_T)0; (int)ea.cmdidx < (int)CMD_SIZE;
-					 ea.cmdidx = (cmdidx_T)((int)ea.cmdidx + 1))
-	    if (STRNCMP(cmdnames[(int)ea.cmdidx].cmd_name, cmd, (size_t)len) == 0)
+				   ea.cmdidx = (cmdidx_T)((int)ea.cmdidx + 1))
+	    if (STRNCMP(cmdnames[(int)ea.cmdidx].cmd_name, cmd,
+							    (size_t)len) == 0)
 		break;
 
 #ifdef FEAT_USR_CMDS
 	if (cmd[0] >= 'A' && cmd[0] <= 'Z')
-	{
 	    while (ASCII_ISALNUM(*p) || *p == '*')	/* Allow * wild card */
 		++p;
-	    len = (int)(p - cmd);
-	}
 #endif
     }
 
@@ -3809,6 +3809,9 @@ set_one_cmd_context(xp, buff)
 	    set_context_in_profile_cmd(xp, arg);
 	    break;
 #endif
+	case CMD_behave:
+	    xp->xp_context = EXPAND_BEHAVE;
+	    break;
 
 #endif /* FEAT_CMDL_COMPL */
 
@@ -10847,6 +10850,24 @@ ex_behave(eap)
 	EMSG2(_(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.
+ */
+    char_u *
+get_behave_arg(xp, idx)
+    expand_T	*xp UNUSED;
+    int		idx;
+{
+    if (idx == 0)
+	return (char_u *)"mswin";
+    if (idx == 1)
+	return (char_u *)"xterm";
+    return NULL;
+}
+#endif
+
 #ifdef FEAT_AUTOCMD
 static int filetype_detect = FALSE;
 static int filetype_plugin = FALSE;