patch 9.2.0036: completion: thesaurus completion incorrect with "longest/fuzzy"
Commit: https://github.com/vim/vim/commit/26a3f486cc708b285b20e92c206f1615d20b23b6 Author: Girish Palya <[email protected]> Date: Sat Feb 21 10:10:17 2026 +0000 patch 9.2.0036: completion: thesaurus completion incorrect with "longest/fuzzy" Problem: completion: thesaurus completion incorrect with "longest/fuzzy" (Mao-Yining) Solution: Disable fuzzy matching and longest-match insertion specifically for thesaurus completion (Girish Palya). fixes: #19356 closes: #19475 Signed-off-by: Girish Palya <[email protected]> Signed-off-by: Christian Brabandt <[email protected]> diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 22e2ce2e3..0798934c2 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.2. Last change: 2026 Feb 17 +*options.txt* For Vim version 9.2. Last change: 2026 Feb 21 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2257,11 +2257,13 @@ A jump table for the options with a short description can be found at |Q_op|. fuzzy Enable |fuzzy-matching| for completion candidates. This allows for more flexible and intuitive matching, where characters can be skipped and matches can be found even - if the exact sequence is not typed. + if the exact sequence is not typed (disabled for thesaurus + completion |compl-thesaurus|). longest When 'autocomplete' is not active, only the longest common - prefix of the matches is inserted. If the popup menu is + prefix of the matches is inserted (disabled for thesaurus + completion |compl-thesaurus|). If the popup menu is displayed, you can use CTRL-L to add more characters. Whether case is ignored depends on the type of completion. For buffer text the 'ignorecase' option applies. diff --git a/src/insexpand.c b/src/insexpand.c index 38e92dacf..bfae80f61 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -829,7 +829,7 @@ ins_compl_add_infercase( static int cot_fuzzy(void) { - return (get_cot_flags() & COT_FUZZY) != 0; + return (get_cot_flags() & COT_FUZZY) != 0 && !ctrl_x_mode_thesaurus(); } /* @@ -1035,7 +1035,7 @@ ins_compl_add( // Find the longest common string if still doing that. if (compl_get_longest && (flags & CP_ORIGINAL_TEXT) == 0 && !cot_fuzzy() - && !ins_compl_preinsert_longest()) + && !ins_compl_preinsert_longest() && !ctrl_x_mode_thesaurus()) ins_compl_longest_match(match); return OK; diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim index 57680e40f..6ac115d77 100644 --- a/src/testdir/test_edit.vim +++ b/src/testdir/test_edit.vim @@ -919,7 +919,7 @@ func Test_edit_CTRL_S() bw! endfunc -func Test_edit_CTRL_T() +func Edit_CTRL_T() " Check for CTRL-T and CTRL-X CTRL-T in insert mode " 1) increase indent new @@ -992,6 +992,29 @@ func Test_edit_CTRL_T() bw! endfunc +func Test_edit_CTRL_T() + call Edit_CTRL_T() + set completeopt+=fuzzy + call Edit_CTRL_T() + set completeopt& +endfunc + +func Test_edit_CTRL_T_longest() + " CTRL-X CTRL-T (thesaurus complete) with 'longest' should not insert + " longest match + set completeopt+=longest + new + call writefile(['angry furious mad madder maddest'], 'Xthesaurus', 'D') + set thesaurus=Xthesaurus + call setline(1, 'mad') + call cursor(1, 1) + call feedkeys("A\<c-x>\<c-t>\<cr>\<esc>", 'tnix') + call assert_equal(['mad', ''], getline(1, '$')) + bw! + set thesaurus= + set completeopt& +endfunc + " Test thesaurus completion with different encodings func Test_thesaurus_complete_with_encoding() call writefile(['angry furious mad enraged'], 'Xthesaurus', 'D') diff --git a/src/version.c b/src/version.c index 9e140b13f..d38a46661 100644 --- a/src/version.c +++ b/src/version.c @@ -734,6 +734,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 36, /**/ 35, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1vtkFQ-005fXO-5s%40256bit.org.
