Mercurial > vim
changeset 28786:fd5942a62312 v8.2.4917
patch 8.2.4917: fuzzy expansion of option names is not right
Commit: https://github.com/vim/vim/commit/cb747899bd99361a299a163f3aa55d5fe7d6f798
Author: Christian Brabandt <cb@256bit.org>
Date: Sun May 8 21:10:56 2022 +0100
patch 8.2.4917: fuzzy expansion of option names is not right
Problem: Fuzzy expansion of option names is not right.
Solution: Pass the fuzzy flag down the call chain. (Christian Brabandt,
closes #10380, closes #10318)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 08 May 2022 22:15:02 +0200 |
parents | cf6469422b92 |
children | a5c33e82805d |
files | src/cmdexpand.c src/option.c src/proto/option.pro src/testdir/test_options.vim src/version.c |
diffstat | 5 files changed, 29 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cmdexpand.c +++ b/src/cmdexpand.c @@ -2787,7 +2787,7 @@ ExpandFromContext( if (xp->xp_context == EXPAND_SETTINGS || xp->xp_context == EXPAND_BOOL_SETTINGS) - ret = ExpandSettings(xp, ®match, pat, numMatches, matches); + ret = ExpandSettings(xp, ®match, pat, numMatches, matches, fuzzy); else if (xp->xp_context == EXPAND_MAPPINGS) ret = ExpandMappings(pat, ®match, numMatches, matches); # if defined(FEAT_EVAL)
--- a/src/option.c +++ b/src/option.c @@ -6511,7 +6511,8 @@ ExpandSettings( regmatch_T *regmatch, char_u *fuzzystr, int *numMatches, - char_u ***matches) + char_u ***matches, + int can_fuzzy) { int num_normal = 0; // Nr of matching non-term-code settings int num_term = 0; // Nr of matching terminal code settings @@ -6527,7 +6528,7 @@ ExpandSettings( int fuzzy; fuzmatch_str_T *fuzmatch = NULL; - fuzzy = cmdline_fuzzy_complete(fuzzystr); + fuzzy = can_fuzzy && cmdline_fuzzy_complete(fuzzystr); // do this loop twice: // loop == 0: count the number of matching options
--- a/src/proto/option.pro +++ b/src/proto/option.pro @@ -64,7 +64,7 @@ void reset_modifiable(void); void set_iminsert_global(void); void set_imsearch_global(void); void set_context_in_set_cmd(expand_T *xp, char_u *arg, int opt_flags); -int ExpandSettings(expand_T *xp, regmatch_T *regmatch, char_u *fuzzystr, int *numMatches, char_u ***matches); +int ExpandSettings(expand_T *xp, regmatch_T *regmatch, char_u *fuzzystr, int *numMatches, char_u ***matches, int do_fuzzy); int ExpandOldSetting(int *num_file, char_u ***file); int shortmess(int x); void vimrc_found(char_u *fname, char_u *envname);
--- a/src/testdir/test_options.vim +++ b/src/testdir/test_options.vim @@ -1257,4 +1257,26 @@ func Test_opt_cdhome() set cdhome& endfunc +func Test_set_completion_2() + CheckOption termguicolors + + " Test default option completion + set wildoptions= + call feedkeys(":set termg\<C-A>\<C-B>\"\<CR>", 'tx') + call assert_equal('"set termguicolors', @:) + + call feedkeys(":set notermg\<C-A>\<C-B>\"\<CR>", 'tx') + call assert_equal('"set notermguicolors', @:) + + " Test fuzzy option completion + set wildoptions=fuzzy + call feedkeys(":set termg\<C-A>\<C-B>\"\<CR>", 'tx') + call assert_equal('"set termguicolors termencoding', @:) + + call feedkeys(":set notermg\<C-A>\<C-B>\"\<CR>", 'tx') + call assert_equal('"set notermguicolors', @:) + + set wildoptions= +endfunc + " vim: shiftwidth=2 sts=2 expandtab