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 /src/cmd/9term | |
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
Diffstat (limited to 'src/cmd/9term')
-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 |
3 files changed, 32 insertions, 0 deletions
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; |