]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.0631: wrong completion list displayed with non-existing dir + fuzzy completion v9.1.0631
authorglepnir <glephunter@gmail.com>
Sat, 27 Jul 2024 14:25:45 +0000 (16:25 +0200)
committerChristian Brabandt <cb@256bit.org>
Sat, 27 Jul 2024 14:25:45 +0000 (16:25 +0200)
Problem:  wrong completion list displayed with non-existing dir + fuzzy
          completion (kawarimidoll)
Solution: clear list of matches, if leader did not use fuzzy match
          (glepnir)

fixes: #15357
closes: #15365

Signed-off-by: glepnir <glephunter@gmail.com>
src/insexpand.c
src/testdir/dumps/Test_pum_highlights_15.dump [new file with mode: 0644]
src/testdir/test_popup.vim
src/version.c

index 7a5298f026ebe28cbfb89e60b1aca2da9d434dbf..2a5f8e8045a921a9d7966a4961588e40d9b4209c 100644 (file)
@@ -3581,6 +3581,7 @@ get_next_filename_completion(void)
 
                // Move leader to the file part
                leader = last_sep + 1;
+               leader_len = STRLEN(leader);
            }
        }
     }
@@ -3643,12 +3644,18 @@ get_next_filename_completion(void)
            matches = sorted_matches;
            num_matches = fuzzy_indices.ga_len;
        }
+       else if (leader_len > 0)
+       {
+           FreeWild(num_matches, matches);
+           num_matches = 0;
+       }
 
        vim_free(compl_fuzzy_scores);
        ga_clear(&fuzzy_indices);
     }
 
-    ins_compl_add_matches(num_matches, matches, p_fic || p_wic);
+    if (num_matches > 0)
+       ins_compl_add_matches(num_matches, matches, p_fic || p_wic);
 }
 
 /*
diff --git a/src/testdir/dumps/Test_pum_highlights_15.dump b/src/testdir/dumps/Test_pum_highlights_15.dump
new file mode 100644 (file)
index 0000000..e923b43
--- /dev/null
@@ -0,0 +1,20 @@
+|/+0&#ffffff0|n|o|n|_|e|x|i|t|_|f|o|l|d|e|r> @58
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|-+2#0000000&@1| |F|i|l|e| |n|a|m|e| |c|o|m|p|l|e|t|i|o|n| |(|^|F|^|N|^|P|)| |P+0#ffffff16#e000002|a|t@1|e|r|n| |n|o|t| |f|o|u|n|d| +0#0000000#ffffff0@24
index 4c2fb4542fea1ccfac6380e5b1953d36f643a6f5..38324c1cda9f2fee1ae86d2cd5f579fc5a668e5b 100644 (file)
@@ -1493,6 +1493,11 @@ func Test_pum_highlights_match()
   call TermWait(buf, 50)
   call VerifyScreenDump(buf, 'Test_pum_highlights_11', {})
 
+  " issue #15357
+  call term_sendkeys(buf, "\<ESC>S/non_exit_folder\<C-X>\<C-F>")
+  call TermWait(buf, 50)
+  call VerifyScreenDump(buf, 'Test_pum_highlights_15', {})
+
   call term_sendkeys(buf, "\<C-E>\<Esc>")
   call TermWait(buf)
 
index 417e4003a5f124b0cd8405c16825b49818771f1d..31b0c2462fc3d9d630efc27bbda00ab7bc6b7b16 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    631,
 /**/
     630,
 /**/