changeset 35798:e0c7b9d527f8 v9.1.0619

patch 9.1.0619: tests: test_popup fails Commit: https://github.com/vim/vim/commit/8754efe437fcb17ad2c64192f8722e08d68e032e Author: glepnir <glephunter@gmail.com> Date: Fri Jul 26 18:15:27 2024 +0200 patch 9.1.0619: tests: test_popup fails Problem: tests: test_popup fails (after v9.1.0618) Solution: Correct test, move combining extra attributes to pum_compute_text_attrs() (glepnir) closes: #15353 Signed-off-by: glepnir <glephunter@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Fri, 26 Jul 2024 18:30:07 +0200
parents 9e1bbcb9481c
children b9a5588a755c
files src/popupmenu.c src/testdir/test_popup.vim src/version.c
diffstat 3 files changed, 13 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -425,7 +425,7 @@ pum_under_menu(int row, int col, int onl
  * Returns attributes for every cell, or NULL if all attributes are the same.
  */
     static int *
-pum_compute_text_attrs(char_u *text, hlf_T hlf)
+pum_compute_text_attrs(char_u *text, hlf_T hlf, int extra_hlattr)
 {
     int		i;
     size_t	leader_len;
@@ -483,6 +483,9 @@ pum_compute_text_attrs(char_u *text, hlf
 	else if (matched_start && ptr < text + leader_len)
 	    new_attr = highlight_attr[hlf == HLF_PSI ? HLF_PMSI : HLF_PMNI];
 
+	if (extra_hlattr > 0)
+	    new_attr = hl_combine_attr(new_attr, extra_hlattr);
+
 	char_cells = mb_ptr2cells(ptr);
 	for (i = 0; i < char_cells; i++)
 	    attrs[cell_idx + i] = new_attr;
@@ -510,8 +513,7 @@ pum_screen_puts_with_attrs(
     int		cells UNUSED,
     char_u	*text,
     int		textlen,
-    int		*attrs,
-    int		extra_attr)
+    int		*attrs)
 {
     int		col_start = col;
     char_u	*ptr = text;
@@ -528,8 +530,6 @@ pum_screen_puts_with_attrs(
 	else
 #endif
 	    attr = attrs[col - col_start];
-	if (extra_attr > 0)
-	    attr = hl_combine_attr(extra_attr, attr);
 	screen_puts_len(ptr, char_len, row, col, attr);
 	col += mb_ptr2cells(ptr);
 	ptr += char_len;
@@ -661,7 +661,8 @@ pum_redraw(void)
 			if (saved != NUL)
 			    *p = saved;
 
-			attrs = pum_compute_text_attrs(st, hlf);
+			int extra_hlattr = pum_array[idx].pum_extrahlattr;
+			attrs = pum_compute_text_attrs(st, hlf, extra_hlattr);
 
 #ifdef FEAT_RIGHTLEFT
 			if (pum_rl)
@@ -703,8 +704,7 @@ pum_redraw(void)
 				    else
 					pum_screen_puts_with_attrs(row,
 						    col - cells + 1, cells, rt,
-						       (int)STRLEN(rt), attrs,
-						       pum_array[idx].pum_extrahlattr);
+						       (int)STRLEN(rt), attrs);
 
 				    vim_free(rt_start);
 				}
@@ -738,8 +738,7 @@ pum_redraw(void)
 				    screen_puts_len(st, size, row, col, attr);
 				else
 				    pum_screen_puts_with_attrs(row, col, cells,
-							      st, size, attrs,
-							      pum_array[idx].pum_extrahlattr);
+							      st, size, attrs);
 
 				vim_free(st);
 			    }
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -1509,9 +1509,9 @@ func Test_pum_extrahl()
       endif
       return {
             \ 'words': [
-            \ { 'word': 'aword1', 'menu': 'extra text 1', 'kind': 'W', 'extrahl': 'StrikeFake' },
+            \ { 'word': 'aword1', 'menu': 'extra text 1', 'kind': 'W', 'hl_group': 'StrikeFake' },
             \ { 'word': 'aword2', 'menu': 'extra text 2', 'kind': 'W', },
-            \ { 'word': '你好', 'menu': 'extra text 3', 'kind': 'W', 'extrahl': 'StrikeFake' },
+            \ { 'word': '你好', 'menu': 'extra text 3', 'kind': 'W', 'hl_group': 'StrikeFake' },
             \]}
     endfunc
     set completeopt=menu
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    619,
+/**/
     618,
 /**/
     617,