diff options
author | Ori Bernstein <ori@eigenstate.org> | 2020-06-06 19:05:00 -0700 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2020-06-06 19:05:00 -0700 |
commit | d2be4787c6e78df1a0fec1f6fdc75a616ecc1e1e (patch) | |
tree | 1cc9b71c9c5b634b75ce3f7edfd55fa5afefee73 /sys/src/cmd/acme/xfid.c | |
parent | e46000f076b3b5389b60f4497c8b40c203202d84 (diff) |
acme: import event log from plan9port (thanks fshahriar)
Based off the following 3 commits:
4a3fb87264f8bc03fc62f00ef335056f30d18023
45f8ba54143323f08a21343633764caa59aa3ea3
fdf6ef333705c844bcf3ccf2f93b2773f1a6aa41
Reading /mnt/acme/log reports a log of window create,
put, focus, and delete events, as they happen. It blocks
until the next event is available.
Example log output:
8 new /Users/rsc/foo.go
8 put /Users/rsc/foo.go
8 del /Users/rsc/foo.go
This lets acme-aware programs react to file writes, for example
compiling code, running a test, or updating an import block.
Diffstat (limited to 'sys/src/cmd/acme/xfid.c')
-rw-r--r-- | sys/src/cmd/acme/xfid.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sys/src/cmd/acme/xfid.c b/sys/src/cmd/acme/xfid.c index 2feb438b2..db4c55731 100644 --- a/sys/src/cmd/acme/xfid.c +++ b/sys/src/cmd/acme/xfid.c @@ -63,6 +63,8 @@ xfidflush(Xfid *x) Column *c; Xfid *wx; + xfidlogflush(x); + /* search windows for matching tag */ qlock(&row); for(j=0; j<row.ncol; j++){ @@ -98,9 +100,9 @@ xfidopen(Xfid *x) w = x->f->w; t = &w->body; + q = FILE(x->f->qid); if(w){ winlock(w, 'E'); - q = FILE(x->f->qid); switch(q){ case QWaddr: if(w->nopen[q]++ == 0){ @@ -179,6 +181,13 @@ xfidopen(Xfid *x) } winunlock(w); } + else{ + switch(q){ + case Qlog: + xfidlogopen(x); + break; + } + } fc.qid = x->f->qid; fc.iounit = messagesize-IOHDRSZ; x->f->open = TRUE; @@ -274,6 +283,9 @@ xfidread(Xfid *x) case Qindex: xfidindexread(x); return; + case Qlog: + xfidlogread(x); + return; default: warning(nil, "unknown qid %d\n", q); break; |