From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: To: 9fans@cse.psu.edu From: paurea@plan9.escet.urjc.es MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: [9fans] hack for acme Date: Mon, 3 Mar 2003 12:56:12 +0100 Topicbox-Message-UUID: 76c861c2-eacb-11e9-9e20-41e7f4b1d025 Following the suggestions made in the list, we made some changes for acme in order to be able to navigate directories reusing windows. First we used the exec button, but didn't work well (for example inferno in /usr can be a directory or a program). After that we tried the chord 3-1 which seems to work well. diff is attached. A mouse chord of buttons 3 and 1 (clicking 1 while holding down button 3) opens a new file/directory in the current window. This chord works only when the window tag corresponds to a directory. It is useful to navigate through deep file hier- archies without opening each directory in a different win- dow. diff /n/dump/2003/0220/sys/src/cmd/acme/acme.c ./acme.c 424c424 < uint q0, q1; --- > uint q0, q1, keepw; 431a432 > 540,541c541,544 < if(textselect3(t, &q0, &q1)) < look3(t, q0, q1, FALSE); --- > if(keepw=textselect3(t, &q0, &q1)){ > keepw=(keepw==3); // is it chord 31? > look3(t, q0, q1, FALSE,keepw); > } 203a206 > return; diff /n/dump/2003/0220/sys/src/cmd/acme/fns.h ./fns.h 59c59,60 < void look3(Text*, uint, uint, int); --- > void look3(Text*, uint, uint, int,uint); diff /n/dump/2003/0220/sys/src/cmd/acme/look.c ./look.c 15c15 < Window* openfile(Text*, Expand*); --- > Window* openfile(Text*, Expand*,uint islocal); 20c20 < look3(Text *t, uint q0, uint q1, int external) --- > look3(Text *t, uint q0, uint q1, int external, uint keepw) 31a32 > 136c137 < openfile(t, &e); --- > openfile(t, &e,keepw); 170a172,175 > > > > 196c201 < openfile(nil, &e); --- > openfile(nil, &e,FALSE); 671c676 < openfile(Text *t, Expand *e) --- > openfile(Text *t, Expand *e, uint keepw) 677a683 > Rectangle rect; 693c699,707 < w = makenewwindow(t); --- > if(keepw){ > w=t->w; > if(w == nil) > return nil; > } > else{ > w = makenewwindow(t); > } > 695c709,713 < winsetname(w, e->name, e->nname); --- > > winsetname(w, e->name, e->nname); > if(keepw){ > t->file->nc=0; > } 696a715,722 > > if(keepw){ > rect=t->all; > rect.min.x += Scrollwid+Scrollgap+Margin+Border; > textredraw(t,rect,t->reffont->f,screen,-1); > rowresize(&row, screen->clipr); > flushimage(display, 1); > } 763c789 < openfile(et, &e); --- > openfile(et, &e,FALSE); diff /n/dump/2003/0220/sys/src/cmd/acme/text.c ./text.c 13a14,15 > > 189a192 > 191a195 > 1047,1048c1051,1057 < h = (textselect23(t, q0, q1, but3col, 1|2) == 0); < return h; --- > h = textselect23(t, q0, q1, but3col, 2); > if(h & 3) > return 3; // chord31 > if(h==0) > return 1; > else > return 0; diff /n/dump/2003/0220/sys/src/cmd/acme/xfid.c ./xfid.c 809c809 < look3(t, q0, q1, TRUE); --- > look3(t, q0, q1, TRUE, FALSE);