diff src/drawline.c @ 30039:4b9b237d1211 v9.0.0357

patch 9.0.0357: 'linebreak' interferes with text property highlight Commit: https://github.com/vim/vim/commit/cf2bb633978a3d2d5bba06611c95e15170662c15 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Sep 2 13:26:29 2022 +0100 patch 9.0.0357: 'linebreak' interferes with text property highlight Problem: 'linebreak' interferes with text property highlight if there is syntax highlighting. Solution: Check the text prop attributes after combining with syntax attributes. (closes #11035)
author Bram Moolenaar <Bram@vim.org>
date Fri, 02 Sep 2022 14:30:04 +0200
parents e6e0f1c39edb
children ed6f3d2593df
line wrap: on
line diff
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -612,6 +612,8 @@ win_line(
     proptype_T  *text_prop_type = NULL;
     int		extra_for_textprop = FALSE; // wlv.n_extra set for textprop
     int		text_prop_attr = 0;
+    int		text_prop_attr_comb = 0;  // text_prop_attr combined with
+					  // syntax_attr
     int		text_prop_id = 0;	// active property ID
     int		text_prop_flags = 0;
     int		text_prop_follows = FALSE;  // another text prop to display
@@ -1676,7 +1678,7 @@ win_line(
 			--pi;
 # ifdef FEAT_LINEBREAK
 			// not exactly right but should work in most cases
-			if (in_linebreak && syntax_attr == text_prop_attr)
+			if (in_linebreak && syntax_attr == text_prop_attr_comb)
 			    syntax_attr = 0;
 # endif
 		    }
@@ -1716,6 +1718,7 @@ win_line(
 		if (wlv.n_extra == 0 || !extra_for_textprop)
 		{
 		    text_prop_attr = 0;
+		    text_prop_attr_comb = 0;
 		    text_prop_flags = 0;
 		    text_prop_type = NULL;
 		    text_prop_id = 0;
@@ -1789,6 +1792,7 @@ win_line(
 			    saved_search_attr = search_attr;
 			    search_attr = 0;	// restore when n_extra is zero
 			    text_prop_attr = 0;
+			    text_prop_attr_comb = 0;
 			    if (*ptr == NUL)
 				// don't combine char attr after EOL
 				text_prop_flags &= ~PT_FLAG_COMBINE;
@@ -1974,6 +1978,7 @@ win_line(
 		    syntax_attr = hl_combine_attr(syntax_attr, text_prop_attr);
 		else
 		    syntax_attr = text_prop_attr;
+		text_prop_attr_comb = syntax_attr;
 	    }
 # endif
 #endif