tadd cooked override. - 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 f476c92fdb557a41ed0b0553328533b353df8905
 (DIR) parent e6586d194c49d2832e409967b2567def4dcceaec
 (HTM) Author: rsc <devnull@localhost>
       Date:   Sun, 18 Apr 2004 16:22:12 +0000
       
       add cooked override.
       
       Diffstat:
         M src/cmd/9term/9term.c               |      41 +++++++++++++++++++------------
       
       1 file changed, 25 insertions(+), 16 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
       t@@ -37,6 +37,7 @@ enum
                Send,
                Plumb,
                Scroll,
       +        Cooked,
        };
        
        #define        ESC                0x1B
       t@@ -119,7 +120,8 @@ uint        insert(Rune*, int, uint, int);
        Rectangle        scrollr;        /* scroll bar rectangle */
        Rectangle        lastsr;                /* used for scroll bar */
        int                holdon;                /* hold mode */
       -int                rawon;                /* raw mode */
       +int                rawon(void);                /* raw mode */
       +int                cooked;                /* force cooked */
        int                scrolling;        /* window scrolls */
        int                clickmsec;        /* time of last click */
        uint                clickq0;        /* point of last click */
       t@@ -148,6 +150,7 @@ char *menu2str[] = {
                "send",
                "plumb",
                "scroll",
       +        "cooked",
                0
        };
        
       t@@ -199,10 +202,6 @@ threadmain(int argc, char *argv[])
                case 'a':        /* acme mode */
                        button2exec++;
                        break;
       -        case 'r':
       -                /* not clear this is useful */
       -                rawon = 1;
       -                break;
                case 's':
                        scrolling++;
                        break;
       t@@ -604,9 +603,13 @@ void
        domenu2(int but)
        {
                if(scrolling)
       -                menu2str[Scroll] = "noscroll";
       +                menu2str[Scroll] = "☑ scroll";
       +        else
       +                menu2str[Scroll] = "☐ scroll";
       +        if(cooked)
       +                menu2str[Cooked] = "☑ cooked";
                else
       -                menu2str[Scroll] = "scroll";
       +                menu2str[Cooked] = "☐ cooked";
        
                switch(menuhit(but, mc, &menu2, nil)){
                case -1:
       t@@ -651,6 +654,9 @@ domenu2(int but)
                case Plumb:
                        plumb(t.q0, t.q1);
                        break;
       +        case Cooked:
       +                cooked = !cooked;
       +                break;
                default:
                        sysfatal("bad menu item");
                }
       t@@ -835,8 +841,7 @@ key(Rune r)
                        return;
                }
        
       -        rawon = !isecho(sfd);
       -        if(rawon && t.q0==t.nr){
       +        if(rawon() && t.q0==t.nr){
                        addraw(&r, 1);
                        consread();
                        return;
       t@@ -927,8 +932,7 @@ consready(void)
                if(holdon)
                        return 0;
        
       -        rawon = !isecho(sfd);
       -        if(rawon) 
       +        if(rawon()) 
                        return t.nraw != 0;
        
                /* look to see if there is a complete line */
       t@@ -946,8 +950,9 @@ consread(void)
        {
                char buf[8000], *p;
                int c, width, n;
       -        int s;
       +        int s, raw;
        
       +        raw = rawon();
                for(;;) {
                        if(!consready())
                                return;
       t@@ -964,8 +969,7 @@ consread(void)
                                c = *p;
                                p += width;
                                n -= width;
       -                        rawon = !isecho(sfd);
       -                        if(!rawon && (c == '\n' || c == '\004' || c == '\x7F'))
       +                        if(!raw && (c == '\n' || c == '\004' || c == '\x7F'))
                                        break;
                        }
                        n = p-buf;
       t@@ -1260,8 +1264,7 @@ paste(Rune *r, int n, int advance)
        {
                Rune *rbuf;
        
       -        rawon = !isecho(sfd);
       -        if(rawon && t.q0==t.nr){
       +        if(rawon() && t.q0==t.nr){
                        addraw(r, n);
                        return;
                }
       t@@ -1754,3 +1757,9 @@ label(Rune *sr, int n)
                return n;
        }
        
       +int
       +rawon(void)
       +{
       +        return !cooked && !isecho(sfd);
       +}
       +