Add bracketed paste mode - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 8ac0a5f872b0024bab161fa020126013724758ba
 (DIR) parent eae31a532e1c3249abe3fe0dbce286cac263832f
 (HTM) Author: Egmont Koblinger <egmont@gmail.com>
       Date:   Mon, 23 Sep 2013 09:22:47 +0200
       
       Add bracketed paste mode
       
       This patch enables bracketed paste mode (
       http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#Bracketed%20Paste%20Mode
       ).
       
       It's mainly useful for text editors to disable line wrapping and auto
       indentation when text is being pasted, rather than typed from keyboard.
       
       On the emulator side, it is supported by at least xterm, urxvt,
       gnome-terminal, putty, iterm2; and I have a patch for konsole.
       
       On the application side, vim can be configured easily to handle this, and
       I have pending patches for mcedit and joe. Probably many others also
       support it.
       
       Diffstat:
         M st.c                                |       8 ++++++++
       
       1 file changed, 8 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -132,6 +132,7 @@ enum term_mode {
                MODE_FOCUS       = 65536,
                MODE_MOUSEX10    = 131072,
                MODE_MOUSEMANY   = 262144,
       +        MODE_BRCKTPASTE  = 524288,
                MODE_MOUSE       = MODE_MOUSEBTN|MODE_MOUSEMOTION|MODE_MOUSEX10\
                                  |MODE_MOUSEMANY,
        };
       @@ -1013,7 +1014,11 @@ selnotify(XEvent *e) {
                                *repl++ = '\r';
                        }
        
       +                if(IS_SET(MODE_BRCKTPASTE))
       +                        ttywrite("\033[200~", 6);
                        ttywrite((const char *)data, nitems * format / 8);
       +                if(IS_SET(MODE_BRCKTPASTE))
       +                        ttywrite("\033[201~", 6);
                        XFree(data);
                        /* number of 32-bit chunks returned */
                        ofs += nitems * format / 32;
       @@ -1868,6 +1873,9 @@ tsetmode(bool priv, bool set, int *args, int narg) {
                                case 1048:
                                        tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD);
                                        break;
       +                        case 2004: /* 2004: bracketed paste mode */
       +                                MODBIT(term.mode, set, MODE_BRCKTPASTE);
       +                                break;
                                /* Not implemented mouse modes. See comments there. */
                                case 1001: /* mouse highlight mode; can hang the
                                              terminal by design when implemented. */