diff src/sign.c @ 19447:5b82f041dbbb v8.2.0281

patch 8.2.0281: two placed signs in the same line are not combined Commit: https://github.com/vim/vim/commit/a2f6e42ded067df8ee682c15aa246491a389b1a0 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Feb 19 17:13:04 2020 +0100 patch 8.2.0281: two placed signs in the same line are not combined Problem: Two placed signs in the same line are not combined. E.g. in the terminal debugger a breakpoint and the PC cannot be both be displayed. Solution: Combine the sign column and line highlight attributes.
author Bram Moolenaar <Bram@vim.org>
date Wed, 19 Feb 2020 17:15:04 +0100
parents 5cd0986ab02e
children 435726a03481
line wrap: on
line diff
--- a/src/sign.c
+++ b/src/sign.c
@@ -514,6 +514,30 @@ buf_get_signattrs(win_T *wp, linenr_T ln
 		sattr->sat_texthl = syn_id2attr(sp->sn_text_hl);
 	    if (sp->sn_line_hl > 0)
 		sattr->sat_linehl = syn_id2attr(sp->sn_line_hl);
+
+	    // If there is another sign next with the same priority, may
+	    // combine the text and the line highlighting.
+	    if (sign->se_next != NULL
+		    && sign->se_next->se_priority == sign->se_priority
+		    && sign->se_next->se_lnum == sign->se_lnum)
+	    {
+		sign_T	*next_sp = find_sign_by_typenr(sign->se_next->se_typenr);
+
+		if (next_sp != NULL)
+		{
+		    if (sattr->sat_icon == NULL && sattr->sat_text == NULL)
+		    {
+# ifdef FEAT_SIGN_ICONS
+			sattr->sat_icon = next_sp->sn_image;
+# endif
+			sattr->sat_text = next_sp->sn_text;
+		    }
+		    if (sp->sn_text_hl <= 0 && next_sp->sn_text_hl > 0)
+			sattr->sat_texthl = syn_id2attr(next_sp->sn_text_hl);
+		    if (sp->sn_line_hl <= 0 && next_sp->sn_line_hl > 0)
+			sattr->sat_linehl = syn_id2attr(next_sp->sn_line_hl);
+		}
+	    }
 	    return TRUE;
 	}
     }