Simplify expressions in tputc() - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit a8a9e66a7d481c66bd9680ff0670c322bedd7ca7
 (DIR) parent 17290f493b3701f57f1e8a1f2d26fc12ab968928
 (HTM) Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
       Date:   Sun, 27 Apr 2014 10:25:15 +0200
       
       Simplify expressions in tputc()
       
       Diffstat:
         M st.c                                |      18 +++++++++---------
       
       1 file changed, 9 insertions(+), 9 deletions(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -2445,6 +2445,7 @@ tputc(char *c, int len) {
                bool control;
                long unicodep;
                int width;
       +        Glyph *gp;
        
                if(len == 1) {
                        width = 1;
       @@ -2607,16 +2608,15 @@ tputc(char *c, int len) {
                        return;
                if(sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y))
                        selclear(NULL);
       +
       +        gp = &term.line[term.c.y][term.c.x];
                if(IS_SET(MODE_WRAP) && (term.c.state & CURSOR_WRAPNEXT)) {
       -                term.line[term.c.y][term.c.x].mode |= ATTR_WRAP;
       +                gp->mode |= ATTR_WRAP;
                        tnewline(1);
                }
        
       -        if(IS_SET(MODE_INSERT) && term.c.x+1 < term.col) {
       -                memmove(&term.line[term.c.y][term.c.x+1],
       -                        &term.line[term.c.y][term.c.x],
       -                        (term.col - term.c.x - 1) * sizeof(Glyph));
       -        }
       +        if(IS_SET(MODE_INSERT) && term.c.x+1 < term.col)
       +                memmove(gp+1, gp, (term.col - term.c.x - 1) * sizeof(Glyph));
        
                if(term.c.x+width > term.col)
                        tnewline(1);
       @@ -2624,10 +2624,10 @@ tputc(char *c, int len) {
                tsetchar(c, &term.c.attr, term.c.x, term.c.y);
        
                if(width == 2) {
       -                term.line[term.c.y][term.c.x].mode |= ATTR_WIDE;
       +                gp->mode |= ATTR_WIDE;
                        if(term.c.x+1 < term.col) {
       -                        term.line[term.c.y][term.c.x+1].c[0] = '\0';
       -                        term.line[term.c.y][term.c.x+1].mode = ATTR_WDUMMY;
       +                        gp[1].c[0] = '\0';
       +                        gp[1].mode = ATTR_WDUMMY;
                        }
                }
                if(term.c.x+width < term.col) {