From: glepnir Date: Tue, 10 Jun 2025 18:52:41 +0000 (+0200) Subject: patch 9.1.1452: completion: redundant check for completion flags X-Git-Tag: v9.1.1452^0 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ecf8f15884bc794ae07d5beac0d595013154c795;p=thirdparty%2Fvim.git patch 9.1.1452: completion: redundant check for completion flags Problem: completion: redundant check for completion flags Solution: refactor code slightly (glepnir) refactor: nest fuzzy completion logic to avoid duplicate flag checks - Combine COT_FUZZY checks into single nested condition - Reduce redundant bitwise operations in ins_compl_new_leader() closes: #17494 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- diff --git a/src/insexpand.c b/src/insexpand.c index 9ee73e15e5..2d398877b7 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -2316,6 +2316,7 @@ ins_compl_need_restart(void) static void ins_compl_new_leader(void) { + int cur_cot_flags = get_cot_flags(); ins_compl_del_pum(); ins_compl_delete(); ins_compl_insert_bytes(compl_leader.string + get_compl_len(), -1); @@ -2350,20 +2351,21 @@ ins_compl_new_leader(void) compl_restarting = FALSE; } - // When 'cot' contains "fuzzy" set the cp_score - if (get_cot_flags() & COT_FUZZY) - set_fuzzy_score(); - // Sort the matches linked list based on fuzzy score - int cur_cot_flags = get_cot_flags(); - if ((cur_cot_flags & COT_FUZZY) && !(cur_cot_flags & COT_NOSORT)) + // When 'cot' contains "fuzzy" set the cp_score and maybe sort + if (cur_cot_flags & COT_FUZZY) { - sort_compl_match_list(cp_compare_fuzzy); - if ((cur_cot_flags & COT_NOINSERT) && !(cur_cot_flags & COT_NOSELECT) - && compl_first_match) + set_fuzzy_score(); + // Sort the matches linked list based on fuzzy score + if (!(cur_cot_flags & COT_NOSORT)) { - compl_shown_match = compl_first_match; - if (compl_shows_dir_forward()) - compl_shown_match = compl_first_match->cp_next; + sort_compl_match_list(cp_compare_fuzzy); + if ((cur_cot_flags & (COT_NOINSERT | COT_NOSELECT)) == COT_NOINSERT + && compl_first_match) + { + compl_shown_match = compl_first_match; + if (compl_shows_dir_forward()) + compl_shown_match = compl_first_match->cp_next; + } } } diff --git a/src/version.c b/src/version.c index da96e54a03..9e37c250bc 100644 --- a/src/version.c +++ b/src/version.c @@ -709,6 +709,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1452, /**/ 1451, /**/