From f535642f304ebfec5182ab97be53e1fbf23056dc Mon Sep 17 00:00:00 2001 From: rsc Date: Thu, 10 Nov 2005 22:53:38 +0000 Subject: attempt at \r --- src/cmd/9term/wind.c | 69 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/src/cmd/9term/wind.c b/src/cmd/9term/wind.c index 69dec8a7..c59f08ec 100644 --- a/src/cmd/9term/wind.c +++ b/src/cmd/9term/wind.c @@ -190,7 +190,7 @@ wclose(Window *w) void winctl(void *arg) { - Rune *rp, *bp, *tp, *up, *kbdr; + Rune *rp, *bp, *up, *kbdr; uint qh; int nr, nb, c, wid, i, npart, initial, lastb; char *s, *t, part[3]; @@ -328,37 +328,48 @@ winctl(void *arg) recv(cwm.cw, &pair); rp = pair.s; nr = pair.ns; - bp = rp; - for(i=0; i w->qh) - initial = w->qh; - qh = w->qh-initial; - wdelete(w, qh, qh+initial); - w->qh = qh; + up = bp = rp; + initial = 0; + for(i=0; i rp && *(up-1) != '\n') + up--; + if(up == rp) + initial = wbswidth(w, 0x15); + }else if(i == nr-1) + *up = '\n'; + break; +*/ + default: + *up++ = *bp; break; } + bp++; + } + if(initial){ + if(initial > w->qh) + initial = w->qh; + qh = w->qh - initial; + wdelete(w, qh, qh+initial); + w->qh = qh; + } + nr = rp - up; + rp[nr] = 0; w->qh = winsert(w, rp, nr, w->qh)+nr; if(w->scrolling || w->mouseopen) wshow(w, w->qh); -- cgit v1.2.3