st
simple terminal
git clone https://9o.is/git/st.git
commit 1e289f3e6c1e8c640c293654f508ced0f360222f parent 8fda36b32306c20cb5a84c2b7816982fccedceff 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(-)
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; }