From 5191ecad6c4deb8d52391661377b91c8613830de Mon Sep 17 00:00:00 2001 From: kouji Date: Fri, 23 Dec 2011 07:38:14 +0000 Subject: [PATCH] * ext/readline/readline.c (readline_attempted_completion_function): in Readline module with GNU Readline 6 case, Readline module resets completion_append_character to " ", after it executes completion. So, Readline module stores completion_append_character, and Readline module always sets it after Readline module executes completion. [ruby-dev:43456] [Feature #4635] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34109 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 10 ++++++++++ ext/readline/readline.c | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/ChangeLog b/ChangeLog index b23ad00267..c7b8523563 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Fri Dec 23 16:14:30 2011 TAKAO Kouji + + * ext/readline/readline.c (readline_attempted_completion_function): + in Readline module with GNU Readline 6 case, Readline module + resets completion_append_character to " ", after it executes + completion. So, Readline module stores + completion_append_character, and Readline module always sets it + after Readline module executes completion. [ruby-dev:43456] + [Feature #4635] + Fri Dec 23 15:59:05 2011 TAKAO Kouji * ext/readline/readline.c (Init_readline): libedit check diff --git a/ext/readline/readline.c b/ext/readline/readline.c index d6fb631602..e8f9743426 100644 --- a/ext/readline/readline.c +++ b/ext/readline/readline.c @@ -70,6 +70,9 @@ static ID id_orig_prompt, id_last_prompt; static int (*history_get_offset_func)(int); static int (*history_replace_offset_func)(int); +#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER +static int readline_completion_append_character; +#endif static char **readline_attempted_completion_function(const char *text, int start, int end); @@ -258,6 +261,9 @@ insert_ignore_escape(VALUE self, VALUE prompt) static VALUE readline_get(VALUE prompt) { +#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER + readline_completion_append_character = rl_completion_append_character; +#endif return (VALUE)readline((char *)prompt); } @@ -642,6 +648,9 @@ readline_attempted_completion_function(const char *text, int start, int end) proc = rb_attr_get(mReadline, completion_proc); if (NIL_P(proc)) return NULL; +#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER + rl_completion_append_character = readline_completion_append_character; +#endif #ifdef HAVE_RL_ATTEMPTED_COMPLETION_OVER rl_attempted_completion_over = 1; #endif