commit - cf6b778799edf4ebc2331d12707e66e7d38331ea
commit + a4e59b37021326e304c311825ba52a52b02bd9c0
blob - e0e5aad7172a5352b12c80a18712793875156984
blob + b070613984a80941866a152ce677e6a920ee679d
--- man/man1/9term.1
+++ man/man1/9term.1
A typical use of this feature is to tell the editor to find the source of an error
by plumbing the file and line information in a compiler's diagnostic.
.PP
+The
+.B look
+menu item searches forward for the contents of the selection within
+the window. If a match is found, it becomes the new selection and the
+window scrolls to display it. The search wraps around to the beginning
+of the windows if the end of the window is reached.
+.PP
For systems without a three-button mouse, the keyboard modifier
keys can be used to modify the effect of the main mouse button.
On Unix systems, the Control key changes the main button to button 2,
blob - 107afed3f4ce1af5b4f0fb7c3fe653e49b2aa3a6
blob + 81c39a6354f18e713972037b850d8ac5c4dceda3
--- src/cmd/9term/9term.c
+++ src/cmd/9term/9term.c
Paste,
Snarf,
Plumb,
+ Look,
Send,
Scroll,
Cook
"paste",
"snarf",
"plumb",
+ "look",
"send",
"cook",
"scroll",
case Plumb:
wplumb(w);
+ break;
+
+ case Look:
+ wlook(w);
break;
case Send:
blob - c1af6592aba1f4a36e97beecb741ef30d9935939
blob + 25270a0e38f32451a80d32f93e6cc149c3986c14
--- src/cmd/9term/dat.h
+++ src/cmd/9term/dat.h
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);
blob - 7dc204435f2bc98247b9c85c4507f3badeae49e6
blob + d47e84674c6e3b28ac53d6cbd0cf66ccc596e365
--- src/cmd/9term/wind.c
+++ src/cmd/9term/wind.c
}
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)
{
int but;