Mercurial > vim
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); |