commit - 77929f826177f51f26c8d58f29dc40b988d6f15d
commit + 875351f44f2fa7d79e3cd69ef8862cb9c822ab66
blob - 25dfccc96b9120098a526970df19b8c29f52ecb4
blob + fbbc524b23d0d99a9eb7e6abf5f1c02ba9ff1823
--- src/cmd/9term/win.c
+++ src/cmd/9term/win.c
int ntypebreak;
int debug;
int rcfd;
+int cook;
char *name;
putenv("winid", buf);
sprint(buf, "%d/tag", id);
fd = fsopenfd(fs, buf, OWRITE|OCEXEC);
- write(fd, " Send Noscroll", 1+4+1+8);
+ write(fd, " Send Nocook Noscroll", 1+4+1+6+1+8);
close(fd);
sprint(buf, "%d/event", id);
eventfd = fsopen(fs, buf, ORDWR|OCEXEC);
case 'D':
n = delete(&e);
q.p -= n;
- if(!isecho(fd0))
+ if(!cook && !isecho(fd0))
sendbs(fd0, n);
break;
fsprint(ctlfd, "noscroll");
break;
}
+ if(cistrcmp(buf, "cook") == 0) {
+ cook = 1;
+ break;
+ }
+ if(cistrcmp(buf, "nocook") == 0) {
+ cook = 0;
+ break;
+ }
if(e.flag & 8){
if(e.q1 != e.q0){
sende(&e, fd0, cfd, afd, dfd, 0);
{
int i, n, nr, raw;
- raw = !isecho(fd0);
+ raw = !cook && !isecho(fd0);
while(ntypebreak || (raw && ntypeb > 0)){
for(i=0; i<ntypeb; i++)
if(typing[i]=='\n' || typing[i]==0x04 || (i==ntypeb-1 && raw)){
ntypebreak--;
n = i+1;
i++;
- if(isecho(fd0))
+ if(!raw)
echoed(typing, n);
if(write(fd0, typing, n) != n)
error("sending to program");
m += nr;
}
}
- if(!isecho(fd0)) {
+ if(!cook && !isecho(fd0)) {
n = sprint(buf, "#%d,#%d", e->q0, e->q1);
fswrite(afd, buf, n);
fswrite(dfd, "", 0);