tExpand the last line with '\n' in case of overselection. - st - [fork] customi… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 0c2b513d01697aea20bb4a2a144b55e72c625e86 | |
parent 634c247fa76a5f649cdcc51109970e46ddaf5c32 | |
Author: Christoph Lohmann <[email protected]> | |
Date: Sat, 4 May 2013 19:00:32 +0200 | |
Expand the last line with '\n' in case of overselection. | |
Thanks Alexander Rezinsky <[email protected]>! | |
Diffstat: | |
M st.c | 17 ++++++++++++++++- | |
1 file changed, 16 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -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) { | |
t@@ -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; | |
} |