attempt at \r
This commit is contained in:
parent
69555c0e28
commit
f535642f30
1 changed files with 40 additions and 29 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue