Hi, On Tue, Jun 24, 2014 at 11:45:42PM +0200, Anders Eurenius wrote: > From eedd5902aa34efb9d2cd7bd2565286753a318c64 Mon Sep 17 00:00:00 2001 > From: Anders Eurenius <a...@spotify.com> > Date: Sat, 21 Jun 2014 20:29:36 +0200 > Subject: [PATCH 1/8] Reorder and extend glyph attributes > > Faint, invisible, struck and fast blink are added as glyph attributes. > Since there's an edit here, let's take the opportunity to reorder them > so that they correspond to the two's power of the corresponding escape > code. (just for neatness, let's hope that property never gets used for > anything.)
The SGR part of your patch (in tsetattr) is modified quite a bit by Michael Forney in his last patch posted on the ML[0]. So I’m curious about where you found these behaviors, did you follow any kind of reference for your own patch? Thanks, [0] http://lists.suckless.org/dev/1407/23144.html > --- > st.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++-------------- > 1 file changed, 46 insertions(+), 14 deletions(-) > > diff --git a/st.c b/st.c > index 26053b0..4ffb3df 100644 > --- a/st.c > +++ b/st.c > @@ -90,15 +90,19 @@ char *argv0; > #define VT102ID "\033[?6c" > > enum glyph_attribute { > - ATTR_NULL = 0, > - ATTR_REVERSE = 1, > - ATTR_UNDERLINE = 2, > - ATTR_BOLD = 4, > - ATTR_ITALIC = 8, > + ATTR_NULL = 0, > + ATTR_BOLD = 1, > + ATTR_FAINT = 2, > + ATTR_ITALIC = 4, > + ATTR_UNDERLINE = 8, > ATTR_BLINK = 16, > - ATTR_WRAP = 32, > - ATTR_WIDE = 64, > - ATTR_WDUMMY = 128, > + ATTR_FASTBLINK = 32, > + ATTR_REVERSE = 64, > + ATTR_INVISIBLE = 128, > + ATTR_STRUCK = 256, > + ATTR_WRAP = 512, > + ATTR_WIDE = 1024, > + ATTR_WDUMMY = 2048, > }; > > enum cursor_movement { > @@ -1682,15 +1686,25 @@ tsetattr(int *attr, int l) { > for(i = 0; i < l; i++) { > switch(attr[i]) { > case 0: > - term.c.attr.mode &= ~(ATTR_REVERSE | ATTR_UNDERLINE \ > - | ATTR_BOLD | ATTR_ITALIC \ > - | ATTR_BLINK); > + term.c.attr.mode &= ~( > + ATTR_BOLD | > + ATTR_FAINT | > + ATTR_ITALIC | > + ATTR_UNDERLINE | > + ATTR_BLINK | > + ATTR_FASTBLINK | > + ATTR_REVERSE | > + ATTR_INVISIBLE | > + ATTR_STRUCK ); > term.c.attr.fg = defaultfg; > term.c.attr.bg = defaultbg; > break; > case 1: > term.c.attr.mode |= ATTR_BOLD; > break; > + case 2: > + term.c.attr.mode |= ATTR_FAINT; > + break; > case 3: > term.c.attr.mode |= ATTR_ITALIC; > break; > @@ -1698,16 +1712,26 @@ tsetattr(int *attr, int l) { > term.c.attr.mode |= ATTR_UNDERLINE; > break; > case 5: /* slow blink */ > - case 6: /* rapid blink */ > term.c.attr.mode |= ATTR_BLINK; > break; > + case 6: /* rapid blink */ > + term.c.attr.mode |= ATTR_FASTBLINK; > + break; > case 7: > term.c.attr.mode |= ATTR_REVERSE; > break; > + case 8: > + term.c.attr.mode |= ATTR_INVISIBLE; > + break; > + case 9: > + term.c.attr.mode |= ATTR_STRUCK; > + break; > case 21: > - case 22: > term.c.attr.mode &= ~ATTR_BOLD; > break; > + case 22: > + term.c.attr.mode &= ~ATTR_FAINT; > + break; > case 23: > term.c.attr.mode &= ~ATTR_ITALIC; > break; > @@ -1715,12 +1739,20 @@ tsetattr(int *attr, int l) { > term.c.attr.mode &= ~ATTR_UNDERLINE; > break; > case 25: > - case 26: > term.c.attr.mode &= ~ATTR_BLINK; > break; > + case 26: > + term.c.attr.mode &= ~ATTR_FASTBLINK; > + break; > case 27: > term.c.attr.mode &= ~ATTR_REVERSE; > break; > + case 28: > + term.c.attr.mode &= ~ATTR_INVISIBLE; > + break; > + case 29: > + term.c.attr.mode &= ~ATTR_STRUCK; > + break; > case 38: > if ((idx = tdefcolor(attr, &i, l)) >= 0) > term.c.attr.fg = idx; > -- > 2.0.0 > -- Ivan "Colona" Delalande