diff options
| author | Christoph Lohmann <20h@r-36.net> | 2013-03-29 19:01:24 +0100 | 
|---|---|---|
| committer | Christoph Lohmann <20h@r-36.net> | 2013-03-29 19:01:24 +0100 | 
| commit | 7e7760c2ed1a6fc9d500da51bd8dc499fb36e1b0 (patch) | |
| tree | ef717614006ac46fa1303f579e762d0b3a067a0b | |
| parent | adde5c6d9dec3a0ab4d78b9d6e70b970ffb33a05 (diff) | |
Add the possibility to have default highlight colors.
Thanks to stargrave@stargrave.org for the suggestion!
| -rw-r--r-- | config.def.h | 8 | ||||
| -rw-r--r-- | st.c | 32 | 
2 files changed, 27 insertions, 13 deletions
| diff --git a/config.def.h b/config.def.h index 75abefb..693bdbd 100644 --- a/config.def.h +++ b/config.def.h @@ -62,6 +62,14 @@ static unsigned int defaultbg = 0;  static unsigned int defaultcs = 256;  static unsigned int defaultucs = 257; +/* + * Colors used, when the specific fg == defaultfg. So in reverse mode this + * will reverse too. Another logic would only make the simple feature too + * complex. + */ +static unsigned int defaultitalic = 11; +static unsigned int defaultunderline = 7; +  /* Internal shortcuts. */  #define MODKEY Mod1Mask @@ -2711,12 +2711,28 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {  	FcPattern *fcpattern, *fontpattern;  	FcFontSet *fcsets[] = { NULL };  	FcCharSet *fccharset; -	Colour *fg = &dc.col[base.fg], *bg = &dc.col[base.bg], -		 *temp, revfg, revbg; +	Colour *fg, *bg, *temp, revfg, revbg;  	XRenderColor colfg, colbg;  	frcflags = FRC_NORMAL; +	if(base.mode & ATTR_ITALIC) { +		if(base.fg == defaultfg) +			base.fg = defaultitalic; +		font = &dc.ifont; +		frcflags = FRC_ITALIC; +	} else if((base.mode & ATTR_ITALIC) && (base.mode & ATTR_BOLD)) { +		if(base.fg == defaultfg) +			base.fg = defaultitalic; +		font = &dc.ibfont; +		frcflags = FRC_ITALICBOLD; +	} else if(base.mode & ATTR_UNDERLINE) { +		if(base.fg == defaultfg) +			base.fg = defaultunderline; +	} +	fg = &dc.col[base.fg]; +	bg = &dc.col[base.bg]; +  	if(base.mode & ATTR_BOLD) {  		if(BETWEEN(base.fg, 0, 7)) {  			/* basic system colors */ @@ -2738,15 +2754,6 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {  		frcflags = FRC_BOLD;  	} -	if(base.mode & ATTR_ITALIC) { -		font = &dc.ifont; -		frcflags = FRC_ITALIC; -	} -	if((base.mode & ATTR_ITALIC) && (base.mode & ATTR_BOLD)) { -		font = &dc.ibfont; -		frcflags = FRC_ITALICBOLD; -	} -  	if(IS_SET(MODE_REVERSE)) {  		if(fg == &dc.col[defaultfg]) {  			fg = &dc.col[defaultbg]; @@ -2873,8 +2880,7 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {  					FcTrue, fcpattern, &fcres);  			/* -			 * Overwrite or create the new cache entry -			 * entry. +			 * Overwrite or create the new cache entry.  			 */  			frccur++;  			frclen++; | 
