diff options
author | Fazlul Shahriar <fshahriar@gmail.com> | 2020-01-07 15:02:01 -0500 |
---|---|---|
committer | Dan Cross <crossd@gmail.com> | 2020-01-07 15:02:01 -0500 |
commit | a4e59b37021326e304c311825ba52a52b02bd9c0 (patch) | |
tree | 54973e13210709bde7f83e180ac3f22c1db80e0b | |
parent | cf6b778799edf4ebc2331d12707e66e7d38331ea (diff) | |
download | plan9port-a4e59b37021326e304c311825ba52a52b02bd9c0.tar.gz plan9port-a4e59b37021326e304c311825ba52a52b02bd9c0.tar.bz2 plan9port-a4e59b37021326e304c311825ba52a52b02bd9c0.zip |
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
-rw-r--r-- | man/man1/9term.1 | 7 | ||||
-rw-r--r-- | src/cmd/9term/9term.c | 6 | ||||
-rw-r--r-- | src/cmd/9term/dat.h | 1 | ||||
-rw-r--r-- | src/cmd/9term/wind.c | 25 |
4 files changed, 39 insertions, 0 deletions
diff --git a/man/man1/9term.1 b/man/man1/9term.1 index e0e5aad7..b0706139 100644 --- a/man/man1/9term.1 +++ b/man/man1/9term.1 @@ -285,6 +285,13 @@ containing the selection (typing cursor). 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, diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c index 107afed3..81c39a63 100644 --- a/src/cmd/9term/9term.c +++ b/src/cmd/9term/9term.c @@ -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); diff --git a/src/cmd/9term/dat.h b/src/cmd/9term/dat.h index c1af6592..25270a0e 100644 --- a/src/cmd/9term/dat.h +++ b/src/cmd/9term/dat.h @@ -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); diff --git a/src/cmd/9term/wind.c b/src/cmd/9term/wind.c index 7dc20443..d47e8467 100644 --- a/src/cmd/9term/wind.c +++ b/src/cmd/9term/wind.c @@ -907,6 +907,31 @@ winborder(Window *w, Point xy) } 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; |