updated for version 7.1-233 v7.1.233
authorBram Moolenaar <Bram@vim.org>
Fri, 18 Jan 2008 12:16:16 +0000 (12:16 +0000)
committerBram Moolenaar <Bram@vim.org>
Fri, 18 Jan 2008 12:16:16 +0000 (12:16 +0000)
src/ex_getln.c
src/version.c

index 547f1a17bea2b16129610324baad7eca5ad71695..d43eb2a8f01dc1a590ed5449287b48b94acf988c 100644 (file)
@@ -4655,7 +4655,7 @@ expand_shellcmd(filepat, num_file, file, flagsarg)
 static void * call_user_expand_func __ARGS((void *(*user_expand_func) __ARGS((char_u *, int, char_u **, int)), expand_T        *xp, int *num_file, char_u ***file));
 
 /*
- * call "user_expand_func()" to invoke a user defined VimL function and return
+ * Call "user_expand_func()" to invoke a user defined VimL function and return
  * the result (either a string or a List).
  */
     static void *
@@ -4677,11 +4677,22 @@ call_user_expand_func(user_expand_func, xp, num_file, file)
     *num_file = 0;
     *file = NULL;
 
-    keep = ccline.cmdbuff[ccline.cmdlen];
-    ccline.cmdbuff[ccline.cmdlen] = 0;
-    sprintf((char *)num, "%d", ccline.cmdpos);
+    if (ccline.cmdbuff == NULL)
+    {
+       /* Completion from Insert mode, pass fake arguments. */
+       keep = 0;
+       sprintf((char *)num, "%d", STRLEN(xp->xp_pattern));
+       args[1] = xp->xp_pattern;
+    }
+    else
+    {
+       /* Completion on the command line, pass real arguments. */
+       keep = ccline.cmdbuff[ccline.cmdlen];
+       ccline.cmdbuff[ccline.cmdlen] = 0;
+       sprintf((char *)num, "%d", ccline.cmdpos);
+       args[1] = ccline.cmdbuff;
+    }
     args[0] = xp->xp_pattern;
-    args[1] = ccline.cmdbuff;
     args[2] = num;
 
     /* Save the cmdline, we don't know what the function may do. */
@@ -4694,8 +4705,8 @@ call_user_expand_func(user_expand_func, xp, num_file, file)
 
     ccline = save_ccline;
     current_SID = save_current_SID;
-
-    ccline.cmdbuff[ccline.cmdlen] = keep;
+    if (ccline.cmdbuff != NULL)
+       ccline.cmdbuff[ccline.cmdlen] = keep;
 
     return ret;
 }
index 2de2b36680aed34e05100b0ed45a41a9a605cfe2..19b52f73856d4521aa66403a947f14b40d4403b8 100644 (file)
@@ -666,6 +666,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    233,
 /**/
     232,
 /**/