]> jfr.im git - irc/irssi/irssi.git/commitdiff
Merge pull request #458 from ailin-nemui/fix_449
authorailin-nemui <redacted>
Tue, 22 Mar 2016 21:54:43 +0000 (22:54 +0100)
committerailin-nemui <redacted>
Tue, 22 Mar 2016 23:08:36 +0000 (00:08 +0100)
Properly toggle bracketed paste mode on stop/cont

src/common.h
src/fe-text/term-terminfo.c
src/fe-text/terminfo-core.c
src/fe-text/terminfo-core.h

index 966e28d0631ce0c6d1eb81920abbbb6e83bd5240..729049ab1ca927f656937295c97a9479aaa80884 100644 (file)
@@ -6,7 +6,7 @@
 #define IRSSI_GLOBAL_CONFIG "irssi.conf" /* config file name in /etc/ */
 #define IRSSI_HOME_CONFIG "config" /* config file name in ~/.irssi/ */
 
-#define IRSSI_ABI_VERSION 1
+#define IRSSI_ABI_VERSION 2
 
 #define DEFAULT_SERVER_ADD_PORT 6667
 
index 3582b9e4fe4022996a930462ffb7a781eca147ff..27be904ea43d0bd7622d4eeb7ec8bedac9f9d7e0 100644 (file)
@@ -710,11 +710,3 @@ void term_gets(GArray *buffer, int *line_count)
                }
        }
 }
-
-void term_set_bracketed_paste_mode(int enable)
-{
-       if (enable)
-               tputs("\e[?2004h", 0, term_putchar);
-       else
-               tputs("\e[?2004l", 0, term_putchar);
-}
index 4db68cc72dc96fcd51919a5640745f831ad8040a..aa833abf6733284342e5cf45fea1a82316f2060b 100644 (file)
@@ -395,6 +395,14 @@ static void _ignore_parm(TERM_REC *term, int param)
 {
 }
 
+static void term_dec_set_bracketed_paste_mode(int enable)
+{
+       if (enable)
+               tputs("\e[?2004h", 0, term_putchar);
+       else
+               tputs("\e[?2004l", 0, term_putchar);
+}
+
 static void term_fill_capabilities(TERM_REC *term)
 {
        int i, ival;
@@ -538,6 +546,9 @@ void terminfo_cont(TERM_REC *term)
        if (term->TI_smkx)
                tput(tparm(term->TI_smkx));
 
+       if (term->bracketed_paste_enabled)
+               term_dec_set_bracketed_paste_mode(TRUE);
+
         terminfo_input_init(term);
 }
 
@@ -548,6 +559,9 @@ void terminfo_stop(TERM_REC *term)
         /* move cursor to bottom of the screen */
        terminfo_move(0, term->height-1);
 
+       if (term->bracketed_paste_enabled)
+               term_dec_set_bracketed_paste_mode(FALSE);
+
        /* stop cup-mode */
        if (term->TI_rmcup)
                tput(tparm(term->TI_rmcup));
@@ -681,6 +695,15 @@ static int term_setup(TERM_REC *term)
         return 1;
 }
 
+void term_set_bracketed_paste_mode(int enable)
+{
+       if (current_term->bracketed_paste_enabled == enable)
+               return;
+
+       current_term->bracketed_paste_enabled = enable;
+       term_dec_set_bracketed_paste_mode(enable);
+}
+
 TERM_REC *terminfo_core_init(FILE *in, FILE *out)
 {
        TERM_REC *old_term, *term;
index 213987919b612223aed69ce4c7d2eead77c0e2f6..0ef280a1be7b63b6cdd6746488d0ae85074d330e 100644 (file)
@@ -92,6 +92,9 @@ struct _TERM_REC {
        /* Keyboard-transmit mode */
        const char *TI_smkx;
        const char *TI_rmkx;
+
+       /* Terminal mode states */
+       int bracketed_paste_enabled;
 };
 
 extern TERM_REC *current_term;