billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=ac4117ce8a2ef388a067c7d9882438edcfad60e9

commit ac4117ce8a2ef388a067c7d9882438edcfad60e9
Author: Boris Faure <bill...@gmail.com>
Date:   Mon Jan 6 21:51:23 2014 +0100

    add bracketed paste (by egmont). Closes T670
---
 src/bin/termio.c     | 10 ++++++++++
 src/bin/termpty.h    |  1 +
 src/bin/termptyesc.c |  4 ++--
 src/bin/termptyops.c |  1 +
 4 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/bin/termio.c b/src/bin/termio.c
index e55fa4b..573760e 100644
--- a/src/bin/termio.c
+++ b/src/bin/termio.c
@@ -1869,7 +1869,17 @@ _getsel_cb(void *data, Evas_Object *obj EINA_UNUSED, 
Elm_Selection_Data *ev)
                        tmp[i] = s[i];
                        if (tmp[i] == '\n') tmp[i] = '\r';
                     }
+
+                  if (sd->pty->state.bracketed_paste)
+                      termpty_write(sd->pty, "\x1b[200~",
+                                    sizeof("\x1b[200~") - 1);
+
                   termpty_write(sd->pty, tmp, ev->len - 1);
+
+                  if (sd->pty->state.bracketed_paste)
+                      termpty_write(sd->pty, "\x1b[201~",
+                                    sizeof("\x1b[201~") - 1);
+
                   free(tmp);
                }
           }
diff --git a/src/bin/termpty.h b/src/bin/termpty.h
index 7ac7889..e818186 100644
--- a/src/bin/termpty.h
+++ b/src/bin/termpty.h
@@ -98,6 +98,7 @@ struct _Termstate
    unsigned int  reverse : 1;
    unsigned int  no_autorepeat : 1;
    unsigned int  cjk_ambiguous_wide : 1;
+   unsigned int  bracketed_paste : 1;
 };
 
 struct _Termpty
diff --git a/src/bin/termptyesc.c b/src/bin/termptyesc.c
index e28f944..9f7de34 100644
--- a/src/bin/termptyesc.c
+++ b/src/bin/termptyesc.c
@@ -845,9 +845,9 @@ _handle_esc_csi(Termpty *ty, const Eina_Unicode *c, 
Eina_Unicode *ce)
                                  else
                                    _termpty_cursor_copy(&(ty->save), 
&(ty->state));
                                  break;
-                               case 2004: // ignore
+                               case 2004:
                                  handled = 1;
-//                                 INF("XXX: enable bracketed paste mode %i", 
mode);
+                                 ty->state.bracketed_paste = mode;
                                  break;
                                case 7727: // ignore
                                  handled = 1;
diff --git a/src/bin/termptyops.c b/src/bin/termptyops.c
index c5a1de5..dfed4a6 100644
--- a/src/bin/termptyops.c
+++ b/src/bin/termptyops.c
@@ -387,6 +387,7 @@ _termpty_reset_state(Termpty *ty)
    ty->state.hidecursor = 0;
    ty->state.crlf = 0;
    ty->state.had_cr = 0;
+   ty->state.bracketed_paste = 0;
 }
 
 void

-- 


Reply via email to