To: vim_dev@googlegroups.com Subject: Patch 9.0.1636 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 9.0.1636 Problem: Expanding a pattern interferes with command line completion. Solution: Set the file index only when appropriate. (closes #12519) Files: src/cmdexpand.c, src/testdir/test_cmdline.vim *** ../vim-9.0.1635/src/cmdexpand.c 2023-05-20 14:06:56.669542805 +0100 --- src/cmdexpand.c 2023-06-15 22:48:58.833639165 +0100 *************** *** 957,963 **** int mode) { char_u *ss = NULL; ! static int findex; static char_u *orig_save = NULL; // kept value of orig int orig_saved = FALSE; int i; --- 957,963 ---- int mode) { char_u *ss = NULL; ! static int findex; // TODO: Move into expand_T static char_u *orig_save = NULL; // kept value of orig int orig_saved = FALSE; int i; *************** *** 971,978 **** if (mode == WILD_CANCEL) ss = vim_strsave(orig_save ? orig_save : (char_u *)""); else if (mode == WILD_APPLY) ! ss = vim_strsave(findex == -1 ? (orig_save ? ! orig_save : (char_u *)"") : xp->xp_files[findex]); // free old names if (xp->xp_numfiles != -1 && mode != WILD_ALL && mode != WILD_LONGEST) --- 971,979 ---- if (mode == WILD_CANCEL) ss = vim_strsave(orig_save ? orig_save : (char_u *)""); else if (mode == WILD_APPLY) ! ss = vim_strsave(findex == -1 ! ? (orig_save ? orig_save : (char_u *)"") ! : xp->xp_files[findex]); // free old names if (xp->xp_numfiles != -1 && mode != WILD_ALL && mode != WILD_LONGEST) *************** *** 985,991 **** if (compl_match_array != NULL) cmdline_pum_remove(); } ! findex = 0; if (mode == WILD_FREE) // only release file name return NULL; --- 986,994 ---- if (compl_match_array != NULL) cmdline_pum_remove(); } ! // TODO: Remove condition if "findex" is part of expand_T ? ! if (mode != WILD_EXPAND_FREE && mode != WILD_ALL && mode != WILD_ALL_KEEP) ! findex = 0; if (mode == WILD_FREE) // only release file name return NULL; *** ../vim-9.0.1635/src/testdir/test_cmdline.vim 2023-05-19 21:40:57.854218815 +0100 --- src/testdir/test_cmdline.vim 2023-06-15 22:45:43.109701709 +0100 *************** *** 1336,1341 **** --- 1336,1365 ---- call assert_equal('"py3file', @:) endfunc + " Test that expanding a pattern doesn't interfere with cmdline completion. + func Test_expand_during_cmdline_completion() + func ExpandStuff() + badd