ref: e2a98338c845b46921a9a9a824ea2fb98b5c96f9
parent: 91bab6272b75f44e193f0e822027049840c0ebbc
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Jan 11 05:14:35 EST 2014
rio: implement "look" (thanks lf94)
--- a/sys/src/cmd/rio/dat.h
+++ b/sys/src/cmd/rio/dat.h
@@ -210,6 +210,7 @@
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);
--- a/sys/src/cmd/rio/rio.c
+++ b/sys/src/cmd/rio/rio.c
@@ -62,6 +62,7 @@
Paste,
Snarf,
Plumb,
+ Look,
Send,
Scroll,
};
@@ -71,6 +72,7 @@
[Paste] "paste",
[Snarf] "snarf",
[Plumb] "plumb",
+ [Look] "look",
[Send] "send",
[Scroll] "scroll",
nil
@@ -814,6 +816,10 @@
case Plumb:
wplumb(w);
+ break;
+
+ case Look:
+ wlook(w);
break;
case Send:
--- a/sys/src/cmd/rio/wind.c
+++ b/sys/src/cmd/rio/wind.c
@@ -889,6 +889,28 @@
plumbfree(m);
}
+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;
+
+ 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);
+}
+
int
winborder(Window *w, Point xy)
{--
⑨