diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2022-02-26 16:05:08 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-02-26 16:05:08 +0000 |
commit | 00333cb3b341499df8729b9345f0bbad968cda0b (patch) | |
tree | ffdecfb922771c58e3c631415a62d828bcc87e36 | |
parent | 29ab6ce9f36660cffaad3c8789e71162e5db5d2f (diff) | |
download | vim-git-00333cb3b341499df8729b9345f0bbad968cda0b.tar.gz |
patch 8.2.4478: crash when using fuzzy completionv8.2.4478
Problem: Crash when using fuzzy completion.
Solution: Temporary fix: put back regexp. (closes #9852, closes #9851)
-rw-r--r-- | src/cmdexpand.c | 18 | ||||
-rw-r--r-- | src/testdir/test_cmdline.vim | 4 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 18 insertions, 6 deletions
diff --git a/src/cmdexpand.c b/src/cmdexpand.c index dd8bc06d0..003f6daf1 100644 --- a/src/cmdexpand.c +++ b/src/cmdexpand.c @@ -2496,6 +2496,8 @@ ExpandFromContext( int ret; int flags; char_u *tofree = NULL; + int fuzzy = cmdline_fuzzy_complete(pat) + && cmdline_fuzzy_completion_supported(xp); flags = map_wildopts_to_ewflags(options); @@ -2580,12 +2582,15 @@ ExpandFromContext( pat = tofree; } - regmatch.regprog = vim_regcomp(pat, magic_isset() ? RE_MAGIC : 0); - if (regmatch.regprog == NULL) - return FAIL; + if (!fuzzy) + { + regmatch.regprog = vim_regcomp(pat, magic_isset() ? RE_MAGIC : 0); + if (regmatch.regprog == NULL) + return FAIL; - // set ignore-case according to p_ic, p_scs and pat - regmatch.rm_ic = ignorecase(pat); + // set ignore-case according to p_ic, p_scs and pat + regmatch.rm_ic = ignorecase(pat); + } if (xp->xp_context == EXPAND_SETTINGS || xp->xp_context == EXPAND_BOOL_SETTINGS) @@ -2599,7 +2604,8 @@ ExpandFromContext( else ret = ExpandOther(pat, xp, ®match, matches, numMatches); - vim_regfree(regmatch.regprog); + if (!fuzzy) + vim_regfree(regmatch.regprog); vim_free(tofree); return ret; diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index c83a8f147..2fc19c6fb 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -2659,6 +2659,10 @@ func Test_wildoptions_fuzzy() call assert_equal('"mapclear <buffer>', @:) " map name fuzzy completion - NOT supported + " test regex completion works + set wildoptions=fuzzy + call feedkeys(":cnoremap <ex\<Tab> <esc> \<Tab>\<C-B>\"\<CR>", 'tx') + call assert_equal("\"cnoremap <expr> <esc> \<Tab>", @:) " menu name fuzzy completion if has('gui_running') diff --git a/src/version.c b/src/version.c index c8511d2b4..c77f76134 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4478, +/**/ 4477, /**/ 4476, |