summaryrefslogtreecommitdiff
path: root/sys/src/cmd/acme/xfid.c
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2020-06-06 19:05:00 -0700
committerOri Bernstein <ori@eigenstate.org>2020-06-06 19:05:00 -0700
commitd2be4787c6e78df1a0fec1f6fdc75a616ecc1e1e (patch)
tree1cc9b71c9c5b634b75ce3f7edfd55fa5afefee73 /sys/src/cmd/acme/xfid.c
parente46000f076b3b5389b60f4497c8b40c203202d84 (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.c14
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;