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) {  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;  	} | 
