mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
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)
This commit is contained in:
@@ -3729,6 +3729,7 @@ ExpandInit(xp)
|
|||||||
#if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
|
#if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
|
||||||
xp->xp_arg = NULL;
|
xp->xp_arg = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
xp->xp_line = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -4378,6 +4379,11 @@ set_cmd_context(xp, str, len, col)
|
|||||||
int old_char = NUL;
|
int old_char = NUL;
|
||||||
char_u *nextcomm;
|
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
|
* Avoid a UMR warning from Purify, only save the character if it has been
|
||||||
* written before.
|
* written before.
|
||||||
@@ -4952,27 +4958,20 @@ call_user_expand_func(user_expand_func, xp, num_file, file)
|
|||||||
void *ret;
|
void *ret;
|
||||||
struct cmdline_info save_ccline;
|
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;
|
return NULL;
|
||||||
*num_file = 0;
|
*num_file = 0;
|
||||||
*file = NULL;
|
*file = NULL;
|
||||||
|
|
||||||
if (ccline.cmdbuff == 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
|
|
||||||
{
|
|
||||||
/* Completion on the command line, pass real arguments. */
|
|
||||||
keep = ccline.cmdbuff[ccline.cmdlen];
|
keep = ccline.cmdbuff[ccline.cmdlen];
|
||||||
ccline.cmdbuff[ccline.cmdlen] = 0;
|
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[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;
|
args[2] = num;
|
||||||
|
|
||||||
/* Save the cmdline, we don't know what the function may do. */
|
/* Save the cmdline, we don't know what the function may do. */
|
||||||
|
@@ -493,6 +493,8 @@ typedef struct expand
|
|||||||
int xp_numfiles; /* number of files found by
|
int xp_numfiles; /* number of files found by
|
||||||
file name completion */
|
file name completion */
|
||||||
char_u **xp_files; /* list of files */
|
char_u **xp_files; /* list of files */
|
||||||
|
char_u *xp_line; /* text being completed */
|
||||||
|
int xp_col; /* cursor position in line */
|
||||||
} expand_T;
|
} expand_T;
|
||||||
|
|
||||||
/* values for xp_backslash */
|
/* values for xp_backslash */
|
||||||
|
@@ -728,6 +728,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1260,
|
||||||
/**/
|
/**/
|
||||||
1259,
|
1259,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user