ttry to handle DEL better - 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 8d9f61e1c98c0513358585d3c4a31236b3e3189c
 (DIR) parent dc305d03681e150b97acf4631a514868acd4b276
 (HTM) Author: rsc <devnull@localhost>
       Date:   Tue,  8 Feb 2005 18:33:06 +0000
       
       ttry to handle DEL better
       
       Diffstat:
         M src/cmd/9term/9term.c               |      33 +++++++++++++++----------------
       
       1 file changed, 16 insertions(+), 17 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
       t@@ -913,37 +913,36 @@ key(Rune r)
                        paste(t.snarf, t.nsnarf, 0);
                        if(scrolling)
                                show(t.q0);
       +                consread();
                        return;
                }
        
       -        switch(r) {
       -        /* case 0x03:        can't do this because ^C is COPY */
       -        case 0x7F:        /* DEL: send interrupt */
       -                paste(&r, 1, 1);
       -                t.qh = t.q0 = t.q1 = t.nr;
       -                show(t.q0);
       -                /* must write the interrupt character in case app is in raw mode (e.g., ssh) */
       -                write(rcfd, "\x7F", 1);
       -        //        postnote(PNGROUP, rcpid, "interrupt");
       +        if(rawon() && t.q0 == t.nr){
       +                addraw(&r, 1);
       +                consread();
                        return;
                }
        
       -        if(rawon() && t.q0==t.nr){
       -                addraw(&r, 1);
       -                consread();
       +        if(r == 0x7F){        /* DEL: send interrupt; what a mess */
       +                if(holdon){
       +                        holdon = 0;
       +                        drawhold(holdon);
       +                }
       +                t.qh = t.q0 = t.q1 = t.nr;
       +                show(t.q0);
       +                write(rcfd, "\x7F", 1);
                        return;
                }
        
       -        if(r==ESC || (holdon && r==0x7F)){        /* toggle hold */
       +        if(r==ESC){        /* toggle hold */
                        holdon = !holdon;
                        drawhold(holdon);
       -        //        replaceintegerproperty("_9WM_HOLD_MODE", 1, 32, holdon);
       +        /*        replaceintegerproperty("_9WM_HOLD_MODE", 1, 32, holdon); */
                        if(!holdon)
                                consread();
       -                if(r==ESC)
       -                        return;
       +                return;
                }
       -
       +        
                snarf();
        
                switch(r) {