diff options
author | Andy Wingo <wingo@pobox.com> | 2017-05-17 22:09:26 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2017-05-17 22:29:08 +0200 |
commit | 96c9af4ab1490766fb1e2229ff3cf565cf7f10d1 (patch) | |
tree | b46ad651eae3b76a61fac4046ad2e776e75f0723 | |
parent | 7ac3d17ceaffc5f068e500c30b1728eae12ae0f0 (diff) |
readline: Avoid interpreting control characters in pastes.
* NEWS: Update.
* doc/ref/repl-modules.texi (Readline Options): Update for
bracketed-paste.
* guile-readline/readline.h (SCM_READLINE_BRACKETED_PASTE): Add
bracketed-paste option.
* guile-readline/readline.c (scm_readline_opts): Add bracketed-paste.
(scm_init_readline): Wire up the logic.
-rw-r--r-- | NEWS | 17 | ||||
-rw-r--r-- | doc/ref/repl-modules.texi | 2 | ||||
-rw-r--r-- | guile-readline/readline.c | 7 | ||||
-rw-r--r-- | guile-readline/readline.h | 3 |
4 files changed, 27 insertions, 2 deletions
@@ -6,6 +6,23 @@ Please send Guile bug reports to bug-guile@gnu.org. +Changes in 2.2.3 (since 2.2.2): + +* Bug fixes + +** Enable GNU Readline 7.0's support for "bracketed paste". + +Before, when pasting an expression that contained TAB characters into +Guile's REPL with GNU Readline support enabled, the pasted TAB +characters would trigger autocompletion in Readline. This was never +what you wanted. Guile now sets the new "bracketed-paste" option in GNU +Readline 7.0 to on by default, making readline treat pastes into the +terminal as atomic units without control characters. See "Readline +Options" in the manual for full details. + +** Fix time-monotonic from SRFI-19; broken in 2.2.1. + + Changes in 2.2.2 (since 2.2.1): * Bug fixes diff --git a/doc/ref/repl-modules.texi b/doc/ref/repl-modules.texi index 700867272..e20393ba2 100644 --- a/doc/ref/repl-modules.texi +++ b/doc/ref/repl-modules.texi @@ -108,6 +108,8 @@ history-file yes Use history file. history-length 200 History length. bounce-parens 500 Time (ms) to show matching opening parenthesis (0 = off). +bracketed-paste yes Disable interpretation of control characters + in pastes. @end smalllisp The readline options interface can only be used @emph{after} loading diff --git a/guile-readline/readline.c b/guile-readline/readline.c index a3e890346..c15275dd3 100644 --- a/guile-readline/readline.c +++ b/guile-readline/readline.c @@ -47,6 +47,8 @@ scm_t_option scm_readline_opts[] = { "History length." }, { SCM_OPTION_INTEGER, "bounce-parens", 500, "Time (ms) to show matching opening parenthesis (0 = off)."}, + { SCM_OPTION_BOOLEAN, "bracketed-paste", 1, + "Disable interpretation of control characters in pastes." }, { 0 } }; @@ -545,7 +547,10 @@ scm_init_readline () reentry_barrier_mutex = scm_make_mutex (); scm_init_opts (scm_readline_options, - scm_readline_opts); + scm_readline_opts); + rl_variable_bind ("enable-bracketed-paste", + SCM_READLINE_BRACKETED_PASTE ? "on" : "off"); + #if HAVE_RL_GET_KEYMAP init_bouncing_parens(); #endif diff --git a/guile-readline/readline.h b/guile-readline/readline.h index 2bf5f8000..3c935e2aa 100644 --- a/guile-readline/readline.h +++ b/guile-readline/readline.h @@ -39,7 +39,8 @@ SCM_RL_API scm_t_option scm_readline_opts[]; #define SCM_HISTORY_FILE_P scm_readline_opts[0].val #define SCM_HISTORY_LENGTH scm_readline_opts[1].val #define SCM_READLINE_BOUNCE_PARENS scm_readline_opts[2].val -#define SCM_N_READLINE_OPTIONS 3 +#define SCM_READLINE_BRACKETED_PASTE scm_readline_opts[3].val +#define SCM_N_READLINE_OPTIONS 4 SCM_RL_API SCM scm_readline_options (SCM setting); SCM_RL_API void scm_readline_init_ports (SCM inp, SCM outp); |