tApplying the tab expansion patch from koga. - st - [fork] customized build of … | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit b56a0da283bd09d5084f472353c1a0b1b084613e | |
parent 71b09ec4f172da9a89be2add54b5b94da8af3bea | |
Author: Christoph Lohmann <[email protected]> | |
Date: Sun, 28 Oct 2012 13:35:00 +0100 | |
Applying the tab expansion patch from koga. | |
Diffstat: | |
M st.c | 22 +++++++++++++--------- | |
1 file changed, 13 insertions(+), 9 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -663,9 +663,9 @@ bpress(XEvent *e) { | |
void | |
selcopy(void) { | |
- char *str, *ptr; | |
+ char *str, *ptr, *p; | |
int x, y, bufsize, is_selected = 0, size; | |
- Glyph *gp; | |
+ Glyph *gp, *last; | |
if(sel.bx == -1) { | |
str = NULL; | |
t@@ -675,15 +675,19 @@ selcopy(void) { | |
/* append every set & selected glyph to the selection */ | |
for(y = 0; y < term.row; y++) { | |
- for(x = 0; x < term.col; x++) { | |
- gp = &term.line[y][x]; | |
+ gp = &term.line[y][0]; | |
+ last = gp + term.col; | |
- if(!(is_selected = selected(x, y)) | |
- || !(gp->state & GLYPH_SET)) { | |
+ while(--last >= gp && !(last->state & GLYPH_SET)) | |
+ /* nothing */; | |
+ | |
+ for(x = 0; gp <= last; x++, ++gp) { | |
+ if(!(is_selected = selected(x, y))) | |
continue; | |
- } | |
- size = utf8size(gp->c); | |
- memcpy(ptr, gp->c, size); | |
+ | |
+ 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… |