commit f535642f304ebfec5182ab97be53e1fbf23056dc from: rsc date: Thu Nov 10 22:53:38 2005 UTC attempt at \r commit - 69555c0e28ad207b5f7e9ca63232cab474580c65 commit + f535642f304ebfec5182ab97be53e1fbf23056dc blob - 69dec8a7c900b41904ad2dd74e93d0861efb1bc6 blob + c59f08ec3379d52cdab03d02071be31e8e746799 --- src/cmd/9term/wind.c +++ 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);