aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2021-02-15 16:18:07 -0800
committerGitHub <noreply@github.com>2021-02-16 01:18:07 +0100
commit85fd9f4e45ee95e2608dbc8cc6d4fe28e4d2abc4 (patch)
tree3605790fbd67b3c4e4cb3cc0e6f4ea9d853de81f /Modules/readline.c
parent[3.9] Minor improvements to the convolve() recipe (GH-24520) (diff)
downloadcpython-85fd9f4e45ee95e2608dbc8cc6d4fe28e4d2abc4.tar.gz
cpython-85fd9f4e45ee95e2608dbc8cc6d4fe28e4d2abc4.tar.bz2
cpython-85fd9f4e45ee95e2608dbc8cc6d4fe28e4d2abc4.zip
bpo-42819, readline: Disable bracketed paste (GH-24108) (GH-24545)3.9
(cherry picked from commit 755f3c1521b422bc2177013d289f5439975fdc4f) Co-authored-by: Dustin Rodrigues <dust.rod@gmail.com> Co-authored-by: Dustin Rodrigues <dust.rod@gmail.com>
Diffstat (limited to 'Modules/readline.c')
-rw-r--r--Modules/readline.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/Modules/readline.c b/Modules/readline.c
index 12d6cc78e38..1e74f997b07 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -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;
}