diff options
author | Christoph Lohmann <20h@r-36.net> | 2013-05-04 19:00:32 +0200 |
---|---|---|
committer | Christoph Lohmann <20h@r-36.net> | 2013-05-04 19:00:32 +0200 |
commit | 0c2b513d01697aea20bb4a2a144b55e72c625e86 (patch) | |
tree | 99cd496756ee9fedf368c7ea3f932a57c1f11daa /st.c | |
parent | 634c247fa76a5f649cdcc51109970e46ddaf5c32 (diff) | |
download | st-0c2b513d01697aea20bb4a2a144b55e72c625e86.tar.gz st-0c2b513d01697aea20bb4a2a144b55e72c625e86.zip |
Expand the last line with '\n' in case of overselection.
Thanks Alexander Rezinsky <alexrez@gmail.com>!
Diffstat (limited to 'st.c')
-rw-r--r-- | st.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -900,7 +900,7 @@ bpress(XEvent *e) { | |||
900 | void | 900 | void |
901 | selcopy(void) { | 901 | selcopy(void) { |
902 | char *str, *ptr; | 902 | char *str, *ptr; |
903 | int x, y, bufsize, size; | 903 | int x, y, bufsize, size, i, ex; |
904 | Glyph *gp, *last; | 904 | Glyph *gp, *last; |
905 | 905 | ||
906 | if(sel.bx == -1) { | 906 | if(sel.bx == -1) { |
@@ -938,6 +938,21 @@ selcopy(void) { | |||
938 | */ | 938 | */ |
939 | if(y < sel.e.y && !((gp-1)->mode & ATTR_WRAP)) | 939 | if(y < sel.e.y && !((gp-1)->mode & ATTR_WRAP)) |
940 | *ptr++ = '\n'; | 940 | *ptr++ = '\n'; |
941 | |||
942 | /* | ||
943 | * If the last selected line expands in the selection | ||
944 | * after the visible text '\n' is appended. | ||
945 | */ | ||
946 | if(y == sel.e.y) { | ||
947 | i = term.col; | ||
948 | while(--i > 0 && term.line[y][i].c[0] == ' ') | ||
949 | /* nothing */; | ||
950 | ex = sel.e.x; | ||
951 | if(sel.b.y == sel.e.y && sel.e.x < sel.b.x) | ||
952 | ex = sel.b.x; | ||
953 | if(i < ex) | ||
954 | *ptr++ = '\n'; | ||
955 | } | ||
941 | } | 956 | } |
942 | *ptr = 0; | 957 | *ptr = 0; |
943 | } | 958 | } |