diff options
author | ailin-nemui <ailin-nemui@users.noreply.github.com> | 2016-03-22 16:05:14 +0100 |
---|---|---|
committer | ailin-nemui <ailin-nemui@users.noreply.github.com> | 2016-03-22 16:36:30 +0100 |
commit | 35d255fc8c2bc585bacbe59afb8cf9c6cc3cadc8 (patch) | |
tree | a83290c31aad8f0e15fc7aa28e7e396e984423f1 /src/fe-text/terminfo-core.c | |
parent | 83bee9c6b73d01b749e3c8a56e0683569e6a1ae2 (diff) | |
download | irssi-35d255fc8c2bc585bacbe59afb8cf9c6cc3cadc8.zip |
Properly toggle bracketed paste mode on stop/cont
Fixes #449
Diffstat (limited to 'src/fe-text/terminfo-core.c')
-rw-r--r-- | src/fe-text/terminfo-core.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/fe-text/terminfo-core.c b/src/fe-text/terminfo-core.c index 60927f1a..086c8801 100644 --- a/src/fe-text/terminfo-core.c +++ b/src/fe-text/terminfo-core.c @@ -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; @@ -535,6 +543,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); } @@ -545,6 +556,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)); @@ -677,6 +691,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; |