diff src/highlight.c @ 22446:0cdb03e73ce9 v8.2.1771

patch 8.2.1771: synIDattr() cannot get the value of ctermul Commit: https://github.com/vim/vim/commit/391c36279415d0b8c5dba1ba11b668add04be963 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Sep 29 20:59:17 2020 +0200 patch 8.2.1771: synIDattr() cannot get the value of ctermul Problem: synIDattr() cannot get the value of ctermul. Solution: Add the "ul" value for "what". (closes https://github.com/vim/vim/issues/7037)
author Bram Moolenaar <Bram@vim.org>
date Tue, 29 Sep 2020 21:00:04 +0200
parents e06ba60fbbd8
children 7334bf933510
line wrap: on
line diff
--- a/src/highlight.c
+++ b/src/highlight.c
@@ -2684,13 +2684,14 @@ highlight_has_attr(
     char_u *
 highlight_color(
     int		id,
-    char_u	*what,	// "font", "fg", "bg", "sp", "fg#", "bg#" or "sp#"
+    char_u	*what,	// "font", "fg", "bg", "sp", "ul", "fg#", "bg#" or "sp#"
     int		modec)	// 'g' for GUI, 'c' for cterm, 't' for term
 {
     static char_u	name[20];
     int			n;
     int			fg = FALSE;
     int			sp = FALSE;
+    int			ul = FALSE;
     int			font = FALSE;
 
     if (id <= 0 || id > highlight_ga.ga_len)
@@ -2703,6 +2704,8 @@ highlight_color(
 	font = TRUE;
     else if (TOLOWER_ASC(what[0]) == 's' && TOLOWER_ASC(what[1]) == 'p')
 	sp = TRUE;
+    else if (TOLOWER_ASC(what[0]) == 'u' && TOLOWER_ASC(what[1]) == 'l')
+	ul = TRUE;
     else if (!(TOLOWER_ASC(what[0]) == 'b' && TOLOWER_ASC(what[1]) == 'g'))
 	return NULL;
     if (modec == 'g')
@@ -2749,6 +2752,8 @@ highlight_color(
     {
 	if (fg)
 	    n = HL_TABLE()[id - 1].sg_cterm_fg - 1;
+	else if (ul)
+	    n = HL_TABLE()[id - 1].sg_cterm_ul - 1;
 	else
 	    n = HL_TABLE()[id - 1].sg_cterm_bg - 1;
 	if (n < 0)