t9term: add a "look" menu item (#299) - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit a4e59b37021326e304c311825ba52a52b02bd9c0
 (DIR) parent cf6b778799edf4ebc2331d12707e66e7d38331ea
 (HTM) Author: Fazlul Shahriar <fshahriar@gmail.com>
       Date:   Tue,  7 Jan 2020 15:02:01 -0500
       
       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:
         M man/man1/9term.1                    |       7 +++++++
         M src/cmd/9term/9term.c               |       6 ++++++
         M src/cmd/9term/dat.h                 |       1 +
         M src/cmd/9term/wind.c                |      25 +++++++++++++++++++++++++
       
       4 files changed, 39 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/man/man1/9term.1 b/man/man1/9term.1
       t@@ -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,
 (DIR) diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
       t@@ -288,6 +288,7 @@ enum
                Paste,
                Snarf,
                Plumb,
       +        Look,
                Send,
                Scroll,
                Cook
       t@@ -298,6 +299,7 @@ char                *menu2str[] = {
                "paste",
                "snarf",
                "plumb",
       +        "look",
                "send",
                "cook",
                "scroll",
       t@@ -348,6 +350,10 @@ button2menu(Window *w)
                        wplumb(w);
                        break;
        
       +        case Look:
       +                wlook(w);
       +                break;
       +
                case Send:
                        riogetsnarf();
                        wsnarf(w);
 (DIR) diff --git a/src/cmd/9term/dat.h b/src/cmd/9term/dat.h
       t@@ -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);
 (DIR) diff --git a/src/cmd/9term/wind.c b/src/cmd/9term/wind.c
       t@@ -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;