bpo-42819, readline: Disable bracketed paste (GH-24108) (GH-24545)

(cherry picked from commit 755f3c1521)

Co-authored-by: Dustin Rodrigues <dust.rod@gmail.com>

Co-authored-by: Dustin Rodrigues <dust.rod@gmail.com>
This commit is contained in:
Miss Islington (bot) 2021-02-15 16:18:07 -08:00 committed by GitHub
parent 9cc70bc220
commit 85fd9f4e45
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 0 deletions

View file

@ -146,6 +146,26 @@ decode(const char *s)
}
/*
Explicitly disable bracketed paste in the interactive interpreter, even if it's
set in the inputrc, is enabled by default (eg GNU Readline 8.1), or a user calls
readline.read_init_file(). The Python REPL has not implemented bracketed
paste support. Also, bracketed mode writes the "\x1b[?2004h" escape sequence
into stdout which causes test failures in applications that don't support it.
It can still be explicitly enabled by calling readline.parse_and_bind("set
enable-bracketed-paste on"). See bpo-42819 for more details.
This should be removed if bracketed paste mode is implemented (bpo-39820).
*/
static void
disable_bracketed_paste(void)
{
if (!using_libedit_emulation) {
rl_variable_bind ("enable-bracketed-paste", "off");
}
}
/* Exported function to send one line to readline's init file parser */
static PyObject *
@ -192,6 +212,7 @@ read_init_file(PyObject *self, PyObject *args)
errno = rl_read_init_file(NULL);
if (errno)
return PyErr_SetFromErrno(PyExc_OSError);
disable_bracketed_paste();
Py_RETURN_NONE;
}
@ -1152,6 +1173,8 @@ setup_readline(readlinestate *mod_state)
else
rl_initialize();
disable_bracketed_paste();
RESTORE_LOCALE(saved_locale)
return 0;
}