[hackers] [st] Add the possibility to have default highlight colors. || Christoph Lohmann

From: <git_AT_suckless.org>
Date: Fri, 29 Mar 2013 19:15:18 +0100

commit 7e7760c2ed1a6fc9d500da51bd8dc499fb36e1b0
Author: Christoph Lohmann <20h_AT_r-36.net>
Date: Fri Mar 29 19:01:24 2013 +0100

    Add the possibility to have default highlight colors.
    
    Thanks to stargrave_AT_stargrave.org for the suggestion!

diff --git a/config.def.h b/config.def.h
index 75abefb..693bdbd 100644
--- a/config.def.h
+++ b/config.def.h
_AT_@ -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
index 599685c..8b1fc56 100644
--- a/st.c
+++ b/st.c
_AT_@ -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 */
_AT_@ -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];
_AT_@ -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++;
Received on Fri Mar 29 2013 - 19:15:18 CET

This archive was generated by hypermail 2.3.0 : Fri Mar 29 2013 - 19:24:07 CET