diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-09-03 22:37:45 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-09-03 22:37:45 +0200 |
commit | 217e8a06198cf6681fb0c38c26f34d96ae4302f6 (patch) | |
tree | 74a864a23eea593f99c07bd45488e3e3b481e382 | |
parent | 676298b16ba58991d1a859e0f519a967d619ccef (diff) | |
download | plan9front-217e8a06198cf6681fb0c38c26f34d96ae4302f6.tar.xz |
vt: fix selrange() to recover whitespace indention
-rw-r--r-- | sys/src/cmd/vt/main.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/sys/src/cmd/vt/main.c b/sys/src/cmd/vt/main.c index deef5bc83..8c8b36823 100644 --- a/sys/src/cmd/vt/main.c +++ b/sys/src/cmd/vt/main.c @@ -915,16 +915,25 @@ resized(void) Rune * selrange(Rune *r, int x0, int y0, int x1, int y1) { - Rune *p, *sr, *er; - - p = r; - sr = onscreenr(x0, y0); - er = onscreenr(x1, y1); - for(; sr != er; sr++) - if(*sr) - *p++ = *sr; - *p = 0; - return p; + Rune *s, *e; + int z, p; + + s = onscreenr(x0, y0); + e = onscreenr(x1, y1); + for(z = p = 0; s < e; s++){ + if(*s){ + if(*s == '\n') + z = p = 0; + else if(p++ == 0){ + while(z-- > 0) *r++ = ' '; + } + *r++ = *s; + } else { + z++; + } + } + *r = 0; + return r; } Rune* |