tCopy non set positions as spaces - st - [fork] customized build of st, the sim… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 88a8f85a8a6de56d23510cf6e7810d90478085a5 | |
parent 111199cf226b33f12e6ee3e66e50fbe5c3566e33 | |
Author: Roberto E. Vargas Caballero <[email protected]> | |
Date: Mon, 17 Sep 2012 22:13:09 +0200 | |
Copy non set positions as spaces | |
st selection don't insert in the selection position whose value is not | |
set. This is correct for the positions in the end of the line, but cause | |
some problems in the beginning. For example echo -e 'a\tb' will print in the | |
screen: | |
a b | |
but after selecting and copying in some place you get: | |
ab | |
because positions from 1 to 7 don't have any value. This patch deals all | |
positions without value as blank (even at the end of the line). | |
--- | |
st.c | 17 ++++++++++------- | |
1 file changed, 10 insertions(+), 7 deletions(-) | |
Diffstat: | |
M st.c | 17 ++++++++++------- | |
1 file changed, 10 insertions(+), 7 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -596,14 +596,17 @@ selcopy(void) { | |
/* append every set & selected glyph to the selection */ | |
for(y = 0; y < term.row; y++) { | |
for(x = 0; x < term.col; x++) { | |
- is_selected = selected(x, y); | |
- if((term.line[y][x].state & GLYPH_SET) && is_s… | |
- int size = utf8size(term.line[y][x].c); | |
- memcpy(ptr, term.line[y][x].c, size); | |
- ptr += size; | |
- } | |
+ int size; | |
+ char *p; | |
+ Glyph *gp = &term.line[y][x]; | |
+ | |
+ if(!(is_selected = selected(x, y))) | |
+ continue; | |
+ p = (gp->state & GLYPH_SET) ? gp->c : " "; | |
+ size = utf8size(p); | |
+ memcpy(ptr, p, size); | |
+ ptr += size; | |
} | |
- | |
/* \n at the end of every selected line except for the… | |
if(is_selected && y < sel.e.y) | |
*ptr++ = '\n'; |