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;