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.

Raspunde prin e-mail lui