Mercurial > vim
comparison src/syntax.c @ 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 | 7d121c69f540 |
children | b1706a94f9f9 |
comparison
equal
deleted
inserted
replaced
2105:8562c6804861 | 2106:15674e198164 |
---|---|
8324 * Return color name of highlight group "id". | 8324 * Return color name of highlight group "id". |
8325 */ | 8325 */ |
8326 char_u * | 8326 char_u * |
8327 highlight_color(id, what, modec) | 8327 highlight_color(id, what, modec) |
8328 int id; | 8328 int id; |
8329 char_u *what; /* "fg", "bg", "sp", "fg#", "bg#" or "sp#" */ | 8329 char_u *what; /* "font", "fg", "bg", "sp", "fg#", "bg#" or "sp#" */ |
8330 int modec; /* 'g' for GUI, 'c' for cterm, 't' for term */ | 8330 int modec; /* 'g' for GUI, 'c' for cterm, 't' for term */ |
8331 { | 8331 { |
8332 static char_u name[20]; | 8332 static char_u name[20]; |
8333 int n; | 8333 int n; |
8334 int fg = FALSE; | 8334 int fg = FALSE; |
8335 # ifdef FEAT_GUI | 8335 # ifdef FEAT_GUI |
8336 int sp = FALSE; | 8336 int sp = FALSE; |
8337 int font = FALSE; | |
8337 # endif | 8338 # endif |
8338 | 8339 |
8339 if (id <= 0 || id > highlight_ga.ga_len) | 8340 if (id <= 0 || id > highlight_ga.ga_len) |
8340 return NULL; | 8341 return NULL; |
8341 | 8342 |
8342 if (TOLOWER_ASC(what[0]) == 'f') | 8343 if (TOLOWER_ASC(what[0]) == 'f' && TOLOWER_ASC(what[1]) == 'g') |
8343 fg = TRUE; | 8344 fg = TRUE; |
8344 # ifdef FEAT_GUI | 8345 # ifdef FEAT_GUI |
8345 else if (TOLOWER_ASC(what[0]) == 's') | 8346 else if (TOLOWER_ASC(what[0]) == 'f' && TOLOWER_ASC(what[1]) == 'o' |
8347 && TOLOWER_ASC(what[2]) == 'n' && TOLOWER_ASC(what[3]) == 't') | |
8348 font = TRUE; | |
8349 else if (TOLOWER_ASC(what[0]) == 's' && TOLOWER_ASC(what[1]) == 'p') | |
8346 sp = TRUE; | 8350 sp = TRUE; |
8351 else if (!(TOLOWER_ASC(what[0]) == 'b' && TOLOWER_ASC(what[1]) == 'g')) | |
8352 return NULL; | |
8347 if (modec == 'g') | 8353 if (modec == 'g') |
8348 { | 8354 { |
8355 /* return font name */ | |
8356 if (font) | |
8357 return HL_TABLE()[id - 1].sg_font_name; | |
8358 | |
8349 /* return #RRGGBB form (only possible when GUI is running) */ | 8359 /* return #RRGGBB form (only possible when GUI is running) */ |
8350 if (gui.in_use && what[1] && what[2] == '#') | 8360 if (gui.in_use && what[2] == '#') |
8351 { | 8361 { |
8352 guicolor_T color; | 8362 guicolor_T color; |
8353 long_u rgb; | 8363 long_u rgb; |
8354 static char_u buf[10]; | 8364 static char_u buf[10]; |
8355 | 8365 |
8372 return (HL_TABLE()[id - 1].sg_gui_fg_name); | 8382 return (HL_TABLE()[id - 1].sg_gui_fg_name); |
8373 if (sp) | 8383 if (sp) |
8374 return (HL_TABLE()[id - 1].sg_gui_sp_name); | 8384 return (HL_TABLE()[id - 1].sg_gui_sp_name); |
8375 return (HL_TABLE()[id - 1].sg_gui_bg_name); | 8385 return (HL_TABLE()[id - 1].sg_gui_bg_name); |
8376 } | 8386 } |
8387 if (font || sp) | |
8388 return NULL; | |
8377 # endif | 8389 # endif |
8378 if (modec == 'c') | 8390 if (modec == 'c') |
8379 { | 8391 { |
8380 if (fg) | 8392 if (fg) |
8381 n = HL_TABLE()[id - 1].sg_cterm_fg - 1; | 8393 n = HL_TABLE()[id - 1].sg_cterm_fg - 1; |