aboutsummaryrefslogtreecommitdiff
path: root/st.c
diff options
context:
space:
mode:
authorChristoph Lohmann <20h@r-36.net>2013-05-04 19:00:32 +0200
committerChristoph Lohmann <20h@r-36.net>2013-05-04 19:00:32 +0200
commit0c2b513d01697aea20bb4a2a144b55e72c625e86 (patch)
tree99cd496756ee9fedf368c7ea3f932a57c1f11daa /st.c
parent634c247fa76a5f649cdcc51109970e46ddaf5c32 (diff)
downloadst-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.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/st.c b/st.c
index e2e6c57..0f47d6d 100644
--- a/st.c
+++ b/st.c
@@ -900,7 +900,7 @@ bpress(XEvent *e) {
900void 900void
901selcopy(void) { 901selcopy(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 }