tAdd the possibility to have default highlight colors. - st - [fork] customized… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 7e7760c2ed1a6fc9d500da51bd8dc499fb36e1b0 | |
parent adde5c6d9dec3a0ab4d78b9d6e70b970ffb33a05 | |
Author: Christoph Lohmann <[email protected]> | |
Date: Fri, 29 Mar 2013 19:01:24 +0100 | |
Add the possibility to have default highlight colors. | |
Thanks to [email protected] for the suggestion! | |
Diffstat: | |
M config.def.h | 8 ++++++++ | |
M st.c | 32 ++++++++++++++++++-----------… | |
2 files changed, 27 insertions(+), 13 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -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 | |
diff --git a/st.c b/st.c | |
t@@ -2711,12 +2711,28 @@ xdraws(char *s, Glyph base, int x, int y, int charlen,… | |
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 */ | |
t@@ -2738,15 +2754,6 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, … | |
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]; | |
t@@ -2873,8 +2880,7 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, i… | |
FcTrue, fcpattern, &fcres); | |
/* | |
- * Overwrite or create the new cache entry | |
- * entry. | |
+ * Overwrite or create the new cache entry. | |
*/ | |
frccur++; | |
frclen++; |