From: Girish Palya Date: Sun, 13 Jul 2025 15:01:57 +0000 (+0200) Subject: patch 9.1.1540: completion: menu state wrong on interruption X-Git-Tag: v9.1.1540^0 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f6a308c65bfe881535ea924028b9386fbd3ba4da;p=thirdparty%2Fvim.git patch 9.1.1540: completion: menu state wrong on interruption 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 Signed-off-by: Christian Brabandt --- diff --git a/src/insexpand.c b/src/insexpand.c index 84690e5883..e9ace57676 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -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) diff --git a/src/version.c b/src/version.c index f63b167898..a8c368feda 100644 --- a/src/version.c +++ b/src/version.c @@ -719,6 +719,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1540, /**/ 1539, /**/