Expand the last line with '\n' in case of overselection. - 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 0c2b513d01697aea20bb4a2a144b55e72c625e86
 (DIR) parent 634c247fa76a5f649cdcc51109970e46ddaf5c32
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Sat,  4 May 2013 19:00:32 +0200
       
       Expand the last line with '\n' in case of overselection.
       
       Thanks Alexander Rezinsky <alexrez@gmail.com>!
       
       Diffstat:
         M st.c                                |      17 ++++++++++++++++-
       
       1 file changed, 16 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -900,7 +900,7 @@ bpress(XEvent *e) {
        void
        selcopy(void) {
                char *str, *ptr;
       -        int x, y, bufsize, size;
       +        int x, y, bufsize, size, i, ex;
                Glyph *gp, *last;
        
                if(sel.bx == -1) {
       @@ -938,6 +938,21 @@ selcopy(void) {
                                 */
                                if(y < sel.e.y && !((gp-1)->mode & ATTR_WRAP))
                                        *ptr++ = '\n';
       +
       +                        /*
       +                         * If the last selected line expands in the selection
       +                         * after the visible text '\n' is appended.
       +                         */
       +                        if(y == sel.e.y) {
       +                                i = term.col;
       +                                while(--i > 0 && term.line[y][i].c[0] == ' ')
       +                                        /* nothing */;
       +                                ex = sel.e.x;
       +                                if(sel.b.y == sel.e.y && sel.e.x < sel.b.x)
       +                                        ex = sel.b.x;
       +                                if(i < ex)
       +                                        *ptr++ = '\n';
       +                        }
                        }
                        *ptr = 0;
                }