tRemoving wrapping newlines from selection - st - [fork] customized build of st… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 98a1085d0e7c3d84e19185ba666c4b0c725cd974 | |
parent 51466e019a67e9319e6c5a7fa4205842ca860b71 | |
Author: Ben Hendrickson <[email protected]> | |
Date: Fri, 22 Aug 2014 09:25:04 -0700 | |
Removing wrapping newlines from selection | |
When getting selected text, lines that were wrapped because of length | |
ought not include the wrapping newline in the selection. | |
This comes up, for example, when copying a bash command that is long | |
enough to wrap from the console and pasting it back into the console. | |
The extra newline breaks it. | |
Similiarly, changes behavior when trimming whitespace from the end of a | |
physical line to only do so if the line does not wrap. Otherwise we are | |
ttrimming whitespace from the middle of a logical line, which may change | |
its meaning. | |
Signed-off-by: Roberto E. Vargas Caballero <[email protected]> | |
Diffstat: | |
M st.c | 7 +++++-- | |
1 file changed, 5 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -662,7 +662,10 @@ y2row(int y) { | |
static int tlinelen(int y) { | |
int i = term.col; | |
- while (i > 0 && term.line[y][i - 1].c[0] == ' ') | |
+ if(term.line[y][i - 1].mode & ATTR_WRAP) | |
+ return i; | |
+ | |
+ while(i > 0 && term.line[y][i - 1].c[0] == ' ') | |
--i; | |
return i; | |
t@@ -959,7 +962,7 @@ getsel(void) { | |
* st. | |
* FIXME: Fix the computer world. | |
*/ | |
- if(sel.ne.y > y || lastx >= linelen) | |
+ if((y < sel.ne.y || lastx >= linelen) && !(last->mode & ATTR_W… | |
*ptr++ = '\n'; | |
} | |
*ptr = 0; |