aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/9term
diff options
context:
space:
mode:
authorFazlul Shahriar <fshahriar@gmail.com>2020-01-07 15:02:01 -0500
committerDan Cross <crossd@gmail.com>2020-01-07 15:02:01 -0500
commita4e59b37021326e304c311825ba52a52b02bd9c0 (patch)
tree54973e13210709bde7f83e180ac3f22c1db80e0b /src/cmd/9term
parentcf6b778799edf4ebc2331d12707e66e7d38331ea (diff)
downloadplan9port-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.c6
-rw-r--r--src/cmd/9term/dat.h1
-rw-r--r--src/cmd/9term/wind.c25
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;