attempt at \r

This commit is contained in:
rsc 2005-11-10 22:53:38 +00:00
parent 69555c0e28
commit f535642f30

View file

@ -190,7 +190,7 @@ wclose(Window *w)
void void
winctl(void *arg) winctl(void *arg)
{ {
Rune *rp, *bp, *tp, *up, *kbdr; Rune *rp, *bp, *up, *kbdr;
uint qh; uint qh;
int nr, nb, c, wid, i, npart, initial, lastb; int nr, nb, c, wid, i, npart, initial, lastb;
char *s, *t, part[3]; char *s, *t, part[3];
@ -328,23 +328,38 @@ winctl(void *arg)
recv(cwm.cw, &pair); recv(cwm.cw, &pair);
rp = pair.s; rp = pair.s;
nr = pair.ns; nr = pair.ns;
bp = rp; up = bp = rp;
for(i=0; i<nr; i++)
if(*bp++ == '\b'){
--bp;
initial = 0; initial = 0;
tp = runemalloc(nr); for(i=0; i<nr; i++){
runemove(tp, rp, i); switch(*bp){
up = tp+i; case 0:
for(; i<nr; i++){ break;
*up = *bp++; case '\b':
if(*up == '\b') if(up == rp)
if(up == tp)
initial++; initial++;
else else
--up; --up;
else break;
up++; /*
case '\r':
while(i<nr-1 && *(bp+1) == '\r'){
bp++;
i++;
}
if(i<nr-1 && *(bp+1) != '\n'){
while(up > 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){
if(initial > w->qh) if(initial > w->qh)
@ -353,12 +368,8 @@ winctl(void *arg)
wdelete(w, qh, qh+initial); wdelete(w, qh, qh+initial);
w->qh = qh; w->qh = qh;
} }
free(rp); nr = rp - up;
rp = tp;
nr = up-tp;
rp[nr] = 0; rp[nr] = 0;
break;
}
w->qh = winsert(w, rp, nr, w->qh)+nr; w->qh = winsert(w, rp, nr, w->qh)+nr;
if(w->scrolling || w->mouseopen) if(w->scrolling || w->mouseopen)
wshow(w, w->qh); wshow(w, w->qh);