Mercurial > vim
changeset 31588:e94571ac4134 v9.0.1126
patch 9.0.1126: bracketed paste can be enabled when it is not recognized
Commit: https://github.com/vim/vim/commit/fc966c19f85afc6b856a06c00a93c4fe96280d31
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jan 1 18:04:33 2023 +0000
patch 9.0.1126: bracketed paste can be enabled when it is not recognized
Problem: Bracketed paste can be enabled when pasted text is not recognized.
Solution: Output t_BE only when t_PS and t_PE are set.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 01 Jan 2023 19:15:03 +0100 |
parents | 40f9cc5fc462 |
children | 55ea4210d8c6 |
files | runtime/doc/term.txt src/edit.c src/normal.c src/proto/term.pro src/term.c src/version.c |
diffstat | 6 files changed, 27 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/term.txt +++ b/runtime/doc/term.txt @@ -1,4 +1,4 @@ -*term.txt* For Vim version 9.0. Last change: 2022 Dec 31 +*term.txt* For Vim version 9.0. Last change: 2023 Jan 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -118,6 +118,10 @@ have a problem with this, disable bracke If this is done while Vim is running the 't_BD' will be sent to the terminal to disable bracketed paste. +If |t_PS| or |t_PE| is not set, then |t_BE| will not be used. This is to make +sure that bracketed paste is not enabled when the escape codes surrounding +pasted text cannot be recognized. + If your terminal supports bracketed paste, but the options are not set automatically, you can try using something like this: >
--- a/src/edit.c +++ b/src/edit.c @@ -3714,7 +3714,7 @@ ins_esc( MAY_WANT_TO_LOG_THIS; // Re-enable bracketed paste mode. - out_str(T_BE); + out_str_t_BE(); // Re-enable modifyOtherKeys. out_str_t_TI();
--- a/src/normal.c +++ b/src/normal.c @@ -454,7 +454,7 @@ normal_cmd_get_more_chars( MAY_WANT_TO_LOG_THIS; // Re-enable bracketed paste mode and modifyOtherKeys - out_str(T_BE); + out_str_t_BE(); out_str_t_TI(); }
--- a/src/proto/term.pro +++ b/src/proto/term.pro @@ -49,6 +49,7 @@ void shell_resized_check(void); void set_shellsize(int width, int height, int mustset); void out_str_t_TE(void); void out_str_t_TI(void); +void out_str_t_BE(void); void may_send_t_RK(void); void settmode(tmode_T tmode); void starttermcap(void);
--- a/src/term.c +++ b/src/term.c @@ -3757,6 +3757,21 @@ out_str_t_TI(void) } /* + * Output T_BE, but only when t_PS and t_PE are set. + */ + void +out_str_t_BE(void) +{ + char_u *p; + + if (T_BE == NULL || *T_BE == NUL + || (p = find_termcode((char_u *)"PS")) == NULL || *p == NUL + || (p = find_termcode((char_u *)"PE")) == NULL || *p == NUL) + return; + out_str(T_BE); +} + +/* * If t_TI was recently sent and there is no typeahead or work to do, now send * t_RK. This is postponed to avoid the response arriving in a shell command * or after Vim exits. @@ -3834,7 +3849,7 @@ settmode(tmode_T tmode) } else { - out_str(T_BE); // enable bracketed paste mode (should + out_str_t_BE(); // enable bracketed paste mode (should // be before mch_settmode(). out_str_t_TI(); // possibly enables modifyOtherKeys } @@ -3862,7 +3877,7 @@ starttermcap(void) out_str(T_TI); // start termcap mode out_str_t_TI(); // start "raw" mode out_str(T_KS); // start "keypad transmit" mode - out_str(T_BE); // enable bracketed paste mode + out_str_t_BE(); // enable bracketed paste mode #if defined(UNIX) || defined(VMS) // Enable xterm's focus reporting mode when 'esckeys' is set.