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>
diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index e8bc080..4dbd10e 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -1115,7 +1115,6 @@
xp->xp_backslash = XP_BS_NONE;
xp->xp_prefix = XP_PREFIX_NONE;
xp->xp_numfiles = -1;
- VIM_CLEAR(cmdline_orig);
}
/*
@@ -1132,6 +1131,12 @@
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
* each line (used by wildmode=list and CTRL-D)
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 8445236..1be5a0c 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1663,6 +1663,7 @@
ExpandInit(&xpc);
ccline.xpc = &xpc;
+ clear_cmdline_orig();
#ifdef FEAT_RIGHTLEFT
if (curwin->w_p_rl && *curwin->w_p_rlc == 's'
@@ -2567,6 +2568,7 @@
ExpandCleanup(&xpc);
ccline.xpc = NULL;
+ clear_cmdline_orig();
#ifdef FEAT_SEARCH_EXTRA
finish_incsearch_highlighting(gotesc, &is_state, FALSE);
diff --git a/src/proto/cmdexpand.pro b/src/proto/cmdexpand.pro
index 73db378..92e9dcb 100644
--- a/src/proto/cmdexpand.pro
+++ b/src/proto/cmdexpand.pro
@@ -11,6 +11,7 @@
char_u *ExpandOne(expand_T *xp, char_u *str, char_u *orig, int options, int mode);
void ExpandInit(expand_T *xp);
void ExpandCleanup(expand_T *xp);
+void clear_cmdline_orig(void);
int showmatches(expand_T *xp, int wildmenu);
char_u *addstar(char_u *fname, int len, int context);
void set_expand_context(expand_T *xp);
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 364909c..c66a427 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -4268,10 +4268,12 @@
let &shellslash = save_shellslash
endfunc
-" Testg cmdcomplete_info() with CmdlineLeavePre autocmd
+" Test cmdcomplete_info() with CmdlineLeavePre autocmd
func Test_cmdcomplete_info()
augroup test_CmdlineLeavePre
autocmd!
+ " Calling expand() should not interfere with cmdcomplete_info().
+ autocmd CmdlineLeavePre * call expand('test_cmdline.*')
autocmd CmdlineLeavePre * let g:cmdcomplete_info = string(cmdcomplete_info())
augroup END
new
diff --git a/src/version.c b/src/version.c
index fec0e0d..e9dc252 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1338,
+/**/
1337,
/**/
1336,