comparison 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
comparison
equal deleted inserted replaced
22445:644505c61eb0 22446:0cdb03e73ce9
2682 * Return color name of highlight group "id". 2682 * Return color name of highlight group "id".
2683 */ 2683 */
2684 char_u * 2684 char_u *
2685 highlight_color( 2685 highlight_color(
2686 int id, 2686 int id,
2687 char_u *what, // "font", "fg", "bg", "sp", "fg#", "bg#" or "sp#" 2687 char_u *what, // "font", "fg", "bg", "sp", "ul", "fg#", "bg#" or "sp#"
2688 int modec) // 'g' for GUI, 'c' for cterm, 't' for term 2688 int modec) // 'g' for GUI, 'c' for cterm, 't' for term
2689 { 2689 {
2690 static char_u name[20]; 2690 static char_u name[20];
2691 int n; 2691 int n;
2692 int fg = FALSE; 2692 int fg = FALSE;
2693 int sp = FALSE; 2693 int sp = FALSE;
2694 int ul = FALSE;
2694 int font = FALSE; 2695 int font = FALSE;
2695 2696
2696 if (id <= 0 || id > highlight_ga.ga_len) 2697 if (id <= 0 || id > highlight_ga.ga_len)
2697 return NULL; 2698 return NULL;
2698 2699
2701 else if (TOLOWER_ASC(what[0]) == 'f' && TOLOWER_ASC(what[1]) == 'o' 2702 else if (TOLOWER_ASC(what[0]) == 'f' && TOLOWER_ASC(what[1]) == 'o'
2702 && TOLOWER_ASC(what[2]) == 'n' && TOLOWER_ASC(what[3]) == 't') 2703 && TOLOWER_ASC(what[2]) == 'n' && TOLOWER_ASC(what[3]) == 't')
2703 font = TRUE; 2704 font = TRUE;
2704 else if (TOLOWER_ASC(what[0]) == 's' && TOLOWER_ASC(what[1]) == 'p') 2705 else if (TOLOWER_ASC(what[0]) == 's' && TOLOWER_ASC(what[1]) == 'p')
2705 sp = TRUE; 2706 sp = TRUE;
2707 else if (TOLOWER_ASC(what[0]) == 'u' && TOLOWER_ASC(what[1]) == 'l')
2708 ul = TRUE;
2706 else if (!(TOLOWER_ASC(what[0]) == 'b' && TOLOWER_ASC(what[1]) == 'g')) 2709 else if (!(TOLOWER_ASC(what[0]) == 'b' && TOLOWER_ASC(what[1]) == 'g'))
2707 return NULL; 2710 return NULL;
2708 if (modec == 'g') 2711 if (modec == 'g')
2709 { 2712 {
2710 # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS) 2713 # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
2747 return NULL; 2750 return NULL;
2748 if (modec == 'c') 2751 if (modec == 'c')
2749 { 2752 {
2750 if (fg) 2753 if (fg)
2751 n = HL_TABLE()[id - 1].sg_cterm_fg - 1; 2754 n = HL_TABLE()[id - 1].sg_cterm_fg - 1;
2755 else if (ul)
2756 n = HL_TABLE()[id - 1].sg_cterm_ul - 1;
2752 else 2757 else
2753 n = HL_TABLE()[id - 1].sg_cterm_bg - 1; 2758 n = HL_TABLE()[id - 1].sg_cterm_bg - 1;
2754 if (n < 0) 2759 if (n < 0)
2755 return NULL; 2760 return NULL;
2756 sprintf((char *)name, "%d", n); 2761 sprintf((char *)name, "%d", n);