/n/dump/2014/0311/sys/src/cmd/acme/look.c:116,121 - /n/dump/2014/0312/sys/src/cmd/acme/look.c:116,125 m->attr = plumbunpackattr(buf); } } + if(noplumb){ + sprint(buf, "pid=%d", mainpid); + m->attr = plumbaddattr(m->attr, plumbunpackattr(buf)); + } r = runemalloc(q1-q0); bufread(t->file, q0, r, q1-q0); m->data = runetobyte(r, q1-q0); /n/dump/2014/0311/sys/src/cmd/acme/acme.c:26,32 - /n/dump/2014/0312/sys/src/cmd/acme/acme.c:26,31 char wdir[512] = "."; Reffont *reffonts[2]; int snarffd = -1; - int mainpid; int plumbsendfd; int plumbeditfd; /n/dump/2014/0311/sys/src/cmd/acme/acme.c:426,432 - /n/dump/2014/0312/sys/src/cmd/acme/acme.c:425,431 Window *w; Plumbmsg *pm; Mouse m; - char *act; + char *pid, *act; enum { MResize, MMouse, MPlumb, MWarnings, NMALT }; static Alt alts[NMALT+1]; /n/dump/2014/0311/sys/src/cmd/acme/acme.c:460,465 - /n/dump/2014/0312/sys/src/cmd/acme/acme.c:459,471 rowresize(&row, screen->clipr); break; case MPlumb: + if(noplumb) { + pid = plumblookup(pm->attr, "pid"); + if(pid == nil || atoi(pid) != mainpid){ + plumbfree(pm); + break; + } + } if(strcmp(pm->type, "text") == 0){ act = plumblookup(pm->attr, "action"); if(act==nil || strcmp(act, "showfile")==0) /n/dump/2014/0311/sys/src/cmd/acme/dat.h:506,511 - /n/dump/2014/0312/sys/src/cmd/acme/dat.h:506,512 Image *but3col; Cursor boxcursor; Row row; + int mainpid; int timerpid; Disk *disk; Text *seltext; /n/dump/2014/0311/sys/src/cmd/acme/dat.h:528,533 - /n/dump/2014/0312/sys/src/cmd/acme/dat.h:529,535 Image *textcols[NCOL]; int plumbsendfd; int plumbeditfd; + int noplumb; char wdir[]; int editing; int messagesize; /* negotiated in 9P version setup */ /n/dump/2014/0311/sys/src/cmd/acme/exec.c:43,49 - /n/dump/2014/0312/sys/src/cmd/acme/exec.c:43,51 void local(Text*, Text*, Text*, int, int, Rune*, int); void look(Text*, Text*, Text*, int, int, Rune*, int); void newcol(Text*, Text*, Text*, int, int, Rune*, int); + void noplumbx(Text*, Text*, Text*, int, int, Rune*, int); void paste(Text*, Text*, Text*, int, int, Rune*, int); + void plumbx(Text*, Text*, Text*, int, int, Rune*, int); void put(Text*, Text*, Text*, int, int, Rune*, int); void putall(Text*, Text*, Text*, int, int, Rune*, int); void sendx(Text*, Text*, Text*, int, int, Rune*, int); /n/dump/2014/0311/sys/src/cmd/acme/exec.c:80,86 - /n/dump/2014/0312/sys/src/cmd/acme/exec.c:82,90 { L"Look", look, FALSE, XXX, XXX }, { L"New", new, FALSE, XXX, XXX }, { L"Newcol", newcol, FALSE, XXX, XXX }, + { L"Noplumb", noplumbx, FALSE, XXX, XXX }, { L"Paste", paste, TRUE, TRUE, XXX }, + { L"Plumb", plumbx, FALSE, XXX, XXX }, { L"Put", put, FALSE, XXX, XXX }, { L"Putall", putall, FALSE, XXX, XXX }, { L"Redo", undo, FALSE, FALSE, XXX }, /n/dump/2014/0311/sys/src/cmd/acme/exec.c:948,953 - /n/dump/2014/0312/sys/src/cmd/acme/exec.c:952,969 dir.nr = 0; } run(nil, runetobyte(arg, narg), dir.r, dir.nr, FALSE, aa, a, FALSE); + } + + void + noplumbx(Text*, Text*, Text*, int, int, Rune*, int) + { + noplumb = 1; + } + + void + plumbx(Text*, Text*, Text*, int, int, Rune*, int) + { + noplumb = 0; } void