From: Bram Moolenaar Date: Sat, 29 Jun 2013 10:58:33 +0000 (+0200) Subject: updated for version 7.3.1260 X-Git-Tag: v7.3.1260 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b751546636c71f206733af1bc30415aaab9a0b42;p=vim updated for version 7.3.1260 Problem: User completion does not get the whole command line in the command line window. Solution: Pass on the whole command line. (Daniel Thau) --- diff --git a/src/ex_getln.c b/src/ex_getln.c index ec64619e4..18a708bf9 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -3729,6 +3729,7 @@ ExpandInit(xp) #if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL) xp->xp_arg = NULL; #endif + xp->xp_line = NULL; } /* @@ -4378,6 +4379,11 @@ set_cmd_context(xp, str, len, col) int old_char = NUL; char_u *nextcomm; + /* Store the string here so that call_user_expand_func() can get to them + * easily. */ + xp->xp_line = str; + xp->xp_col = col; + /* * Avoid a UMR warning from Purify, only save the character if it has been * written before. @@ -4952,27 +4958,20 @@ call_user_expand_func(user_expand_func, xp, num_file, file) void *ret; struct cmdline_info save_ccline; - if (xp->xp_arg == NULL || xp->xp_arg[0] == '\0') + if (xp->xp_arg == NULL || xp->xp_arg[0] == '\0' || xp->xp_line == NULL) return NULL; *num_file = 0; *file = NULL; - if (ccline.cmdbuff == NULL) - { - /* Completion from Insert mode, pass fake arguments. */ - keep = 0; - sprintf((char *)num, "%d", (int)STRLEN(xp->xp_pattern)); - args[1] = xp->xp_pattern; - } - else + if (ccline.cmdbuff != NULL) { - /* 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] = vim_strnsave(xp->xp_pattern, xp->xp_pattern_len); + args[1] = xp->xp_line; + sprintf((char *)num, "%d", xp->xp_col); args[2] = num; /* Save the cmdline, we don't know what the function may do. */ diff --git a/src/structs.h b/src/structs.h index bfe1919b6..96435eda7 100644 --- a/src/structs.h +++ b/src/structs.h @@ -493,6 +493,8 @@ typedef struct expand int xp_numfiles; /* number of files found by file name completion */ char_u **xp_files; /* list of files */ + char_u *xp_line; /* text being completed */ + int xp_col; /* cursor position in line */ } expand_T; /* values for xp_backslash */ diff --git a/src/version.c b/src/version.c index d9e62dd48..60d0d10da 100644 --- a/src/version.c +++ b/src/version.c @@ -728,6 +728,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1260, /**/ 1259, /**/