0
0
mirror of https://github.com/vim/vim.git synced 2025-08-26 20:03:41 -04:00

patch 9.1.1338: Calling expand() interferes with cmdcomplete_info()

Problem:  Calling expand() interferes with cmdcomplete_info()
          (after 9.1.1329).
Solution: Only clear cmdline_orig when starting/ending cmdline mode
          (zeertzjq).

closes: #17192

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
zeertzjq 2025-04-23 20:50:23 +02:00 committed by Christian Brabandt
parent 1343681aba
commit ec270a5f55
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
5 changed files with 14 additions and 2 deletions

View File

@ -1115,7 +1115,6 @@ ExpandInit(expand_T *xp)
xp->xp_backslash = XP_BS_NONE; xp->xp_backslash = XP_BS_NONE;
xp->xp_prefix = XP_PREFIX_NONE; xp->xp_prefix = XP_PREFIX_NONE;
xp->xp_numfiles = -1; xp->xp_numfiles = -1;
VIM_CLEAR(cmdline_orig);
} }
/* /*
@ -1132,6 +1131,12 @@ ExpandCleanup(expand_T *xp)
VIM_CLEAR(xp->xp_orig); VIM_CLEAR(xp->xp_orig);
} }
void
clear_cmdline_orig(void)
{
VIM_CLEAR(cmdline_orig);
}
/* /*
* Display one line of completion matches. Multiple matches are displayed in * Display one line of completion matches. Multiple matches are displayed in
* each line (used by wildmode=list and CTRL-D) * each line (used by wildmode=list and CTRL-D)

View File

@ -1663,6 +1663,7 @@ getcmdline_int(
ExpandInit(&xpc); ExpandInit(&xpc);
ccline.xpc = &xpc; ccline.xpc = &xpc;
clear_cmdline_orig();
#ifdef FEAT_RIGHTLEFT #ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl && *curwin->w_p_rlc == 's' if (curwin->w_p_rl && *curwin->w_p_rlc == 's'
@ -2567,6 +2568,7 @@ returncmd:
ExpandCleanup(&xpc); ExpandCleanup(&xpc);
ccline.xpc = NULL; ccline.xpc = NULL;
clear_cmdline_orig();
#ifdef FEAT_SEARCH_EXTRA #ifdef FEAT_SEARCH_EXTRA
finish_incsearch_highlighting(gotesc, &is_state, FALSE); finish_incsearch_highlighting(gotesc, &is_state, FALSE);

View File

@ -11,6 +11,7 @@ int cmdline_compl_is_fuzzy(void);
char_u *ExpandOne(expand_T *xp, char_u *str, char_u *orig, int options, int mode); char_u *ExpandOne(expand_T *xp, char_u *str, char_u *orig, int options, int mode);
void ExpandInit(expand_T *xp); void ExpandInit(expand_T *xp);
void ExpandCleanup(expand_T *xp); void ExpandCleanup(expand_T *xp);
void clear_cmdline_orig(void);
int showmatches(expand_T *xp, int wildmenu); int showmatches(expand_T *xp, int wildmenu);
char_u *addstar(char_u *fname, int len, int context); char_u *addstar(char_u *fname, int len, int context);
void set_expand_context(expand_T *xp); void set_expand_context(expand_T *xp);

View File

@ -4268,10 +4268,12 @@ func Test_cd_bslash_completion_windows()
let &shellslash = save_shellslash let &shellslash = save_shellslash
endfunc endfunc
" Testg cmdcomplete_info() with CmdlineLeavePre autocmd " Test cmdcomplete_info() with CmdlineLeavePre autocmd
func Test_cmdcomplete_info() func Test_cmdcomplete_info()
augroup test_CmdlineLeavePre augroup test_CmdlineLeavePre
autocmd! autocmd!
" Calling expand() should not interfere with cmdcomplete_info().
autocmd CmdlineLeavePre * call expand('test_cmdline.*')
autocmd CmdlineLeavePre * let g:cmdcomplete_info = string(cmdcomplete_info()) autocmd CmdlineLeavePre * let g:cmdcomplete_info = string(cmdcomplete_info())
augroup END augroup END
new new

View File

@ -704,6 +704,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 */
/**/
1338,
/**/ /**/
1337, 1337,
/**/ /**/