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 | |
| 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>!
| -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 | } |
