Mercurial > vim
changeset 2106:15674e198164 v7.2.389
updated for version 7.2.389
Problem: synIDattr() cannot return the font.
Solution: Support the "font" argument. (Christian Brabandt)
author | Bram Moolenaar <bram@zimbu.org> |
---|---|
date | Wed, 10 Mar 2010 13:43:49 +0100 |
parents | 8562c6804861 |
children | 4a4287c09953 |
files | runtime/doc/eval.txt src/eval.c src/syntax.c src/version.c |
diffstat | 4 files changed, 22 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -5388,6 +5388,8 @@ synIDattr({synID}, {what} [, {mode}]) the color, cterm: color number as a string, term: empty string) "bg" background color (as with "fg") + "font" font name (only available in the GUI) + |highlight-font| "sp" special color (as with "fg") |highlight-guisp| "fg#" like "fg", but for the GUI and the GUI is running the name in "#RRGGBB" form @@ -5397,6 +5399,7 @@ synIDattr({synID}, {what} [, {mode}]) "italic" "1" if italic "reverse" "1" if reverse "inverse" "1" if inverse (= reverse) + "standout" "1" if standout "underline" "1" if underlined "undercurl" "1" if undercurled
--- a/src/eval.c +++ b/src/eval.c @@ -16627,7 +16627,7 @@ f_synIDattr(argvars, rettv) p = highlight_has_attr(id, HL_BOLD, modec); break; - case 'f': /* fg[#] */ + case 'f': /* fg[#] or font */ p = highlight_color(id, what, modec); break;
--- a/src/syntax.c +++ b/src/syntax.c @@ -8326,7 +8326,7 @@ highlight_has_attr(id, flag, modec) char_u * highlight_color(id, what, modec) int id; - char_u *what; /* "fg", "bg", "sp", "fg#", "bg#" or "sp#" */ + char_u *what; /* "font", "fg", "bg", "sp", "fg#", "bg#" or "sp#" */ int modec; /* 'g' for GUI, 'c' for cterm, 't' for term */ { static char_u name[20]; @@ -8334,20 +8334,30 @@ highlight_color(id, what, modec) int fg = FALSE; # ifdef FEAT_GUI int sp = FALSE; + int font = FALSE; # endif if (id <= 0 || id > highlight_ga.ga_len) return NULL; - if (TOLOWER_ASC(what[0]) == 'f') + if (TOLOWER_ASC(what[0]) == 'f' && TOLOWER_ASC(what[1]) == 'g') fg = TRUE; # ifdef FEAT_GUI - else if (TOLOWER_ASC(what[0]) == 's') + else if (TOLOWER_ASC(what[0]) == 'f' && TOLOWER_ASC(what[1]) == 'o' + && TOLOWER_ASC(what[2]) == 'n' && TOLOWER_ASC(what[3]) == 't') + font = TRUE; + else if (TOLOWER_ASC(what[0]) == 's' && TOLOWER_ASC(what[1]) == 'p') sp = TRUE; + else if (!(TOLOWER_ASC(what[0]) == 'b' && TOLOWER_ASC(what[1]) == 'g')) + return NULL; if (modec == 'g') { + /* return font name */ + if (font) + return HL_TABLE()[id - 1].sg_font_name; + /* return #RRGGBB form (only possible when GUI is running) */ - if (gui.in_use && what[1] && what[2] == '#') + if (gui.in_use && what[2] == '#') { guicolor_T color; long_u rgb; @@ -8374,6 +8384,8 @@ highlight_color(id, what, modec) return (HL_TABLE()[id - 1].sg_gui_sp_name); return (HL_TABLE()[id - 1].sg_gui_bg_name); } + if (font || sp) + return NULL; # endif if (modec == 'c') {