diff options
author | Christoph Lohmann | 2013-03-29 19:01:24 +0100 |
---|---|---|
committer | Christoph Lohmann | 2013-03-29 19:01:24 +0100 |
commit | 7e7760c2ed1a6fc9d500da51bd8dc499fb36e1b0 (patch) | |
tree | ef717614006ac46fa1303f579e762d0b3a067a0b | |
parent | adde5c6d9dec3a0ab4d78b9d6e70b970ffb33a05 (diff) | |
download | st-7e7760c2ed1a6fc9d500da51bd8dc499fb36e1b0.tar.gz st-7e7760c2ed1a6fc9d500da51bd8dc499fb36e1b0.tar.xz st-7e7760c2ed1a6fc9d500da51bd8dc499fb36e1b0.zip |
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++; |