]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.1540: completion: menu state wrong on interruption v9.1.1540
authorGirish Palya <girishji@gmail.com>
Sun, 13 Jul 2025 15:01:57 +0000 (17:01 +0200)
committerChristian Brabandt <cb@256bit.org>
Sun, 13 Jul 2025 15:01:57 +0000 (17:01 +0200)
Problem:  completion: menu state wrong on interruption
          (Maxim Kim)
Solution: Call show_pum() if completion was interrupted
          (Girish Palya).

Popup menu was not built after fuzzy sorting, so internal state wasn't
reflected on screen.

No test. Couldn't get the terminal test to trigger both interruption and
refresh together.

fixes: #17725
closes: #17736

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/insexpand.c
src/version.c

index 84690e5883e71231e41833f0d106786e70bad551..e9ace5767606ecfc3935708c0461339d90318c1f 100644 (file)
@@ -2395,6 +2395,8 @@ ins_compl_need_restart(void)
 ins_compl_new_leader(void)
 {
     int            cur_cot_flags = get_cot_flags();
+    int            save_w_wrow;
+    int            save_w_leftcol;
 
     ins_compl_del_pum();
     ins_compl_delete();
@@ -2424,8 +2426,10 @@ ins_compl_new_leader(void)
            out_flush_cursor(FALSE, FALSE);
        }
 #endif
+       save_w_wrow = curwin->w_wrow;
+       save_w_leftcol = curwin->w_leftcol;
        compl_restarting = TRUE;
-       if (ins_complete(Ctrl_N, TRUE) == FAIL)
+       if (ins_complete(Ctrl_N, FALSE) == FAIL)
            compl_cont_status = 0;
        compl_restarting = FALSE;
     }
@@ -2451,7 +2455,8 @@ ins_compl_new_leader(void)
     compl_enter_selects = !compl_used_match && compl_selected_item != -1;
 
     // Show the popup menu with a different set of matches.
-    ins_compl_show_pum();
+    if (!compl_interrupted)
+       show_pum(save_w_wrow, save_w_leftcol);
 
     // Don't let Enter select the original text when there is no popup menu.
     if (compl_match_array == NULL)
index f63b167898f331dd0e4fa2a5557892488789af66..a8c368feda8e4554b08214a25d9f5c5a58824749 100644 (file)
@@ -719,6 +719,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1540,
 /**/
     1539,
 /**/