From 07785ea9c5595f379f2cac2ce8ffa95244e3d8e3 Mon Sep 17 00:00:00 2001 From: glepnir Date: Wed, 19 Feb 2025 13:40:46 +0800 Subject: vim-patch:9.1.1121: Enter does not insert newline with "noselect" Problem: Enter does not insert newline with "noselect" when the pum is visible (lifepillar) Solution: When Enter is pressed and no complete-item is selected, ins_compl_prep returns false, and the edit function continues processing Enter to insert a new line. (glepnir) fixes: vim/vim#1653 closes: vim/vim#16653 https://github.com/vim/vim/commit/07f0dbe3aa326fdf4d0f1b1cf7d79df89e91fc6e Co-authored-by: glepnir --- src/nvim/insexpand.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/nvim/insexpand.c b/src/nvim/insexpand.c index e88f5dbe70..c33c4a1ad9 100644 --- a/src/nvim/insexpand.c +++ b/src/nvim/insexpand.c @@ -1744,6 +1744,7 @@ void ins_compl_clear(void) compl_cont_status = 0; compl_started = false; compl_matches = 0; + compl_selected_item = -1; compl_ins_end_col = 0; API_CLEAR_STRING(compl_pattern); API_CLEAR_STRING(compl_leader); @@ -2300,6 +2301,7 @@ bool ins_compl_prep(int c) { bool retval = false; const int prev_mode = ctrl_x_mode; + bool handle_enter = ((c == CAR || c == NL || c == K_KENTER) && compl_selected_item == -1); // Forget any previous 'special' messages if this is actually // a ^X mode key - bar ^R, in which case we wait to see what it gives us. @@ -2366,6 +2368,12 @@ bool ins_compl_prep(int c) && !ins_compl_pum_key(c)) || ctrl_x_mode == CTRL_X_FINISHED) { retval = ins_compl_stop(c, prev_mode, retval); + // When it is the Enter key and no selected item, return false, and + // continue processing the Enter key to insert a new line in the + // edit function. + if (retval && handle_enter) { + retval = false; + } } } else if (ctrl_x_mode == CTRL_X_LOCAL_MSG) { // Trigger the CompleteDone event to give scripts a chance to act -- cgit