diff options
author | glepnir <glephunter@gmail.com> | 2024-07-09 18:51:29 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2024-07-09 18:51:29 +0200 |
commit | 600a12d08e7aeb95a6b02382bfee310aef9801dd (patch) | |
tree | 00394eae2f4a8cdbd2bb92de5c384d611ab936ab | |
parent | 7298565c85b8c32dce73d782aa44581419e1fa3f (diff) |
patch 9.1.0549: fuzzycollect regex based completion not working as expectedv9.1.0549
Problem: fuzzycollect regex based completion not working as expected
Solution: Revert Patch v9.1.0503 (glepnir)
closes: #15192
Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r-- | runtime/doc/options.txt | 7 | ||||
-rw-r--r-- | runtime/doc/version9.txt | 4 | ||||
-rw-r--r-- | src/insexpand.c | 38 | ||||
-rw-r--r-- | src/option.h | 1 | ||||
-rw-r--r-- | src/optionstr.c | 2 | ||||
-rw-r--r-- | src/testdir/test_ins_complete.vim | 31 | ||||
-rw-r--r-- | src/version.c | 2 |
7 files changed, 6 insertions, 79 deletions
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index e9c94aa8e5..e28f185aa8 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2024 Jul 06 +*options.txt* For Vim version 9.1. Last change: 2024 Jul 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2151,11 +2151,6 @@ A jump table for the options with a short description can be found at |Q_op|. difference how completion candidates are reduced from the list of alternatives, but not how the candidates are collected (using different completion types). - fuzzycollect - Enable fuzzy collection for default keyword completion. - This allows the collection of matches using fuzzy matching - criteria, providing more comprehensive and flexible - results. Works in combination with other fuzzy options. *'completepopup'* *'cpp'* 'completepopup' 'cpp' string (default empty) diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index 86ec0208ac..9cf20300fa 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -41646,8 +41646,8 @@ Improved visual highlighting. Python3 support in OpenVMS. -Support for |fuzzy-matching| during |ins-completion| with the "fuzzy" and -"fuzzycollect" values of the 'completeopt' setting +Support for |fuzzy-matching| during |ins-completion| with the "fuzzy" +values of the 'completeopt' setting ============================================================================== COMPILE TIME CHANGES *compile-changes-9.2* diff --git a/src/insexpand.c b/src/insexpand.c index 36228e9b13..21b53d1e3e 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -4512,11 +4512,6 @@ ins_compl_use_match(int c) static int get_normal_compl_info(char_u *line, int startcol, colnr_T curs_col) { - int i; - int char_len; - size_t fuzzy_len; - char_u *fuzzy_pattern; - if ((compl_cont_status & CONT_SOL) || ctrl_x_mode_path_defines()) { if (!compl_status_adding()) @@ -4630,39 +4625,6 @@ get_normal_compl_info(char_u *line, int startcol, colnr_T curs_col) } compl_patternlen = STRLEN(compl_pattern); - - if ((get_cot_flags() & COT_FUZZYCOLLECT) != 0) - { - // Adjust size to avoid buffer overflow - fuzzy_len = (size_t)compl_length * 5 + 10; - // Allocate enough space - fuzzy_pattern = alloc(fuzzy_len); - if (fuzzy_pattern == NULL) - { - compl_patternlen = 0; - return FAIL; - } - // Use 'very magic' mode for simpler syntax - STRCPY(fuzzy_pattern, "\\v"); - i = 2; // Start from 2 to skip "\\v" - while (i < compl_length + 2) - { - // Append "\\k*" before each character - STRNCAT(fuzzy_pattern, "\\k*", fuzzy_len - STRLEN(fuzzy_pattern) - 1); - // Get length of current multi-byte character - char_len = mb_ptr2len(compl_pattern + i); - // Concatenate the character safely - STRNCAT(fuzzy_pattern, compl_pattern + i, char_len); - // Move to the next character - i += char_len; - } - // Append "\\k*" at the end to match any characters after the pattern - STRNCAT(fuzzy_pattern, "\\k*", fuzzy_len - STRLEN(fuzzy_pattern) - 1); - vim_free(compl_pattern); - compl_pattern = fuzzy_pattern; - compl_patternlen = STRLEN(compl_pattern); - } - return OK; } diff --git a/src/option.h b/src/option.h index 67d0b04620..630d7bf6b7 100644 --- a/src/option.h +++ b/src/option.h @@ -527,7 +527,6 @@ EXTERN unsigned cot_flags; // flags from 'completeopt' #define COT_NOINSERT 0x040 // FALSE: select & insert, TRUE: noinsert #define COT_NOSELECT 0x080 // FALSE: select & insert, TRUE: noselect #define COT_FUZZY 0x100 // TRUE: fuzzy match enabled -#define COT_FUZZYCOLLECT 0x200 // TRUE: fuzzy collect enabled #ifdef BACKSLASH_IN_FILENAME EXTERN char_u *p_csl; // 'completeslash' #endif diff --git a/src/optionstr.c b/src/optionstr.c index 9adb77dff5..417f785907 100644 --- a/src/optionstr.c +++ b/src/optionstr.c @@ -118,7 +118,7 @@ static char *(p_fdm_values[]) = {"manual", "expr", "marker", "indent", "syntax", NULL}; static char *(p_fcl_values[]) = {"all", NULL}; #endif -static char *(p_cot_values[]) = {"menu", "menuone", "longest", "preview", "popup", "popuphidden", "noinsert", "noselect", "fuzzy", "fuzzycollect", NULL}; +static char *(p_cot_values[]) = {"menu", "menuone", "longest", "preview", "popup", "popuphidden", "noinsert", "noselect", "fuzzy", NULL}; #ifdef BACKSLASH_IN_FILENAME static char *(p_csl_values[]) = {"slash", "backslash", NULL}; #endif diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index 61c8ac7643..48589ce188 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -2586,37 +2586,6 @@ func Test_complete_fuzzy_match() call feedkeys("A\<C-X>\<C-N>\<Esc>0", 'tx!') call assert_equal('hello help hero h', getline('.')) - set completeopt=fuzzycollect - call setline(1, ['xyz yxz x']) - call feedkeys("A\<C-X>\<C-N>\<Esc>0", 'tx!') - call assert_equal('xyz yxz xyz', getline('.')) - " can fuzzy get yxz when use Ctrl-N twice - call setline(1, ['xyz yxz x']) - call feedkeys("A\<C-X>\<C-N>\<C-N>\<Esc>0", 'tx!') - call assert_equal('xyz yxz yxz', getline('.')) - - call setline(1, ['one two o']) - call feedkeys("A\<C-X>\<C-N>\<Esc>0", 'tx!') - call assert_equal('one two one', getline('.')) - - call setline(1, ['你好 你']) - call feedkeys("A\<C-X>\<C-N>\<Esc>0", 'tx!') - call assert_equal('你好 你好', getline('.')) - call setline(1, ['你的 我的 的']) - call feedkeys("A\<C-X>\<C-N>\<Esc>0", 'tx!') - call assert_equal('你的 我的 你的', getline('.')) - " can fuzzy get multiple-byte word when use Ctrl-N twice - call setline(1, ['你的 我的 的']) - call feedkeys("A\<C-X>\<C-N>\<C-N>\<Esc>0", 'tx!') - call assert_equal('你的 我的 我的', getline('.')) - - "respect noinsert - set completeopt=fuzzycollect,menu,menuone,noinsert - call setline(1, ['one two o']) - call feedkeys("A\<C-X>\<C-N>", 'tx') - call assert_equal('one', g:word) - call assert_equal('one two o', getline('.')) - " clean up set omnifunc= bw! diff --git a/src/version.c b/src/version.c index 1f334caba2..dd5b254a07 100644 --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 549, +/**/ 548, /**/ 547, |