URI: 
       Copy non set positions as spaces - st - simple terminal
  HTML git clone https://git.parazyd.org/st
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 88a8f85a8a6de56d23510cf6e7810d90478085a5
   DIR parent 111199cf226b33f12e6ee3e66e50fbe5c3566e33
  HTML Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
       Date:   Mon, 17 Sep 2012 22:13:09 +0200
       
       Copy non set positions as spaces
       
       st selection don't insert in the selection position whose value is not
       set. This is correct for the positions in the end of the line, but cause
       some problems in the beginning. For example echo -e 'a\tb' will print in the
       screen:
       
       a        b
       
       but after selecting and copying in some place you get:
       
       ab
       
       because positions from 1 to 7 don't have any value. This patch deals all
       positions without value as blank (even at the end of the line).
       ---
        st.c |   17 ++++++++++-------
        1 file changed, 10 insertions(+), 7 deletions(-)
       Diffstat:
         M st.c                                |      17 ++++++++++-------
       
       1 file changed, 10 insertions(+), 7 deletions(-)
       ---
   DIR diff --git a/st.c b/st.c
       @@ -596,14 +596,17 @@ selcopy(void) {
                        /* append every set & selected glyph to the selection */
                        for(y = 0; y < term.row; y++) {
                                for(x = 0; x < term.col; x++) {
       -                                is_selected = selected(x, y);
       -                                if((term.line[y][x].state & GLYPH_SET) && is_selected) {
       -                                        int size = utf8size(term.line[y][x].c);
       -                                        memcpy(ptr, term.line[y][x].c, size);
       -                                        ptr += size;
       -                                }
       +                                int size;
       +                                char *p;
       +                                Glyph *gp = &term.line[y][x];
       +
       +                                if(!(is_selected = selected(x, y)))
       +                                        continue;
       +                                p = (gp->state & GLYPH_SET) ? gp->c : " ";
       +                                size = utf8size(p);
       +                                memcpy(ptr, p, size);
       +                                ptr += size;
                                }
       -
                                /* \n at the end of every selected line except for the last one */
                                if(is_selected && y < sel.e.y)
                                        *ptr++ = '\n';