diff options
author | Christoph Lohmann <20h@r-36.net> | 2012-10-28 13:35:00 +0100 |
---|---|---|
committer | Christoph Lohmann <20h@r-36.net> | 2012-10-28 13:35:00 +0100 |
commit | 7168d85f97abe826e2ba72ef5f3d32d9d4e30cdf (patch) | |
tree | 270495abe0d30f039cec7058e4741e07053d7052 | |
parent | 53eda6d525899b661a961c97a9e9801ffb583cdb (diff) | |
download | st-patched-7168d85f97abe826e2ba72ef5f3d32d9d4e30cdf.tar.bz2 st-patched-7168d85f97abe826e2ba72ef5f3d32d9d4e30cdf.tar.xz st-patched-7168d85f97abe826e2ba72ef5f3d32d9d4e30cdf.zip |
Applying the tab expansion patch from koga.
-rw-r--r-- | st.c | 22 |
1 files changed, 13 insertions, 9 deletions
@@ -663,9 +663,9 @@ bpress(XEvent *e) { | |||
663 | 663 | ||
664 | void | 664 | void |
665 | selcopy(void) { | 665 | selcopy(void) { |
666 | char *str, *ptr; | 666 | char *str, *ptr, *p; |
667 | int x, y, bufsize, is_selected = 0, size; | 667 | int x, y, bufsize, is_selected = 0, size; |
668 | Glyph *gp; | 668 | Glyph *gp, *last; |
669 | 669 | ||
670 | if(sel.bx == -1) { | 670 | if(sel.bx == -1) { |
671 | str = NULL; | 671 | str = NULL; |
@@ -675,15 +675,19 @@ selcopy(void) { | |||
675 | 675 | ||
676 | /* append every set & selected glyph to the selection */ | 676 | /* append every set & selected glyph to the selection */ |
677 | for(y = 0; y < term.row; y++) { | 677 | for(y = 0; y < term.row; y++) { |
678 | for(x = 0; x < term.col; x++) { | 678 | gp = &term.line[y][0]; |
679 | gp = &term.line[y][x]; | 679 | last = gp + term.col; |
680 | 680 | ||
681 | if(!(is_selected = selected(x, y)) | 681 | while(--last >= gp && !(last->state & GLYPH_SET)) |
682 | || !(gp->state & GLYPH_SET)) { | 682 | /* nothing */; |
683 | |||
684 | for(x = 0; gp <= last; x++, ++gp) { | ||
685 | if(!(is_selected = selected(x, y))) | ||
683 | continue; | 686 | continue; |
684 | } | 687 | |
685 | size = utf8size(gp->c); | 688 | p = (gp->state & GLYPH_SET) ? gp->c : " "; |
686 | memcpy(ptr, gp->c, size); | 689 | size = utf8size(p); |
690 | memcpy(ptr, p, size); | ||
687 | ptr += size; | 691 | ptr += size; |
688 | } | 692 | } |
689 | /* \n at the end of every selected line except for the last one */ | 693 | /* \n at the end of every selected line except for the last one */ |