9term: add a "look" menu item (#299)

Add a menu item which functions similar to acme's `Look` command.

This is copied from 9front. See:
https://code.9front.org/hg/plan9front/rev/1f1596dbca51
https://code.9front.org/hg/plan9front/rev/d2de1d2f7b48
This commit is contained in:
Fazlul Shahriar 2020-01-07 15:02:01 -05:00 committed by Dan Cross
parent cf6b778799
commit a4e59b3702
4 changed files with 39 additions and 0 deletions

View file

@ -288,6 +288,7 @@ enum
Paste,
Snarf,
Plumb,
Look,
Send,
Scroll,
Cook
@ -298,6 +299,7 @@ char *menu2str[] = {
"paste",
"snarf",
"plumb",
"look",
"send",
"cook",
"scroll",
@ -348,6 +350,10 @@ button2menu(Window *w)
wplumb(w);
break;
case Look:
wlook(w);
break;
case Send:
riogetsnarf();
wsnarf(w);

View file

@ -177,6 +177,7 @@ void wmousectl(Window*);
void wmovemouse(Window*, Point);
void wpaste(Window*);
void wplumb(Window*);
void wlook(Window*);
void wrefresh(Window*, Rectangle);
void wrepaint(Window*);
void wresize(Window*, Image*, int);

View file

@ -906,6 +906,31 @@ winborder(Window *w, Point xy)
return ptinrect(xy, w->screenr) && !ptinrect(xy, insetrect(w->screenr, wscale(w, Selborder)));
}
void
wlook(Window *w)
{
int i, n, e;
i = w->q1;
n = i - w->q0;
e = w->nr - n;
if(n <= 0 || e < n)
return;
if(i > e)
i = 0;
while(runestrncmp(w->r+w->q0, w->r+i, n) != 0){
if(i < e)
i++;
else
i = 0;
}
wsetselect(w, i, i+n);
wshow(w, i);
}
void
wmousectl(Window *w)
{