From a76e21e612719201799384fff39dfb160b03bc99 Mon Sep 17 00:00:00 2001 From: shugo Date: Wed, 19 Dec 2001 08:02:55 +0000 Subject: * ext/readline/readline.c: new methods Readline::basic_word_break_characters, Readline::basic_word_break_characters=, Readline::completer_word_break_characters, Readline::completer_word_break_characters=, Readline::basic_quote_characters, Readline::basic_quote_characters=, Readline::completer_quote_characters, Readline::completer_quote_characters=, Readline::filename_quote_characters, Readline::filename_quote_characters=. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1924 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 14 +++ ext/readline/readline.c | 220 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 234 insertions(+) diff --git a/ChangeLog b/ChangeLog index aa856f91b7..f20f83317f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +Wed Dec 19 16:58:29 2001 Shugo Maeda + + * ext/readline/readline.c: new methods + Readline::basic_word_break_characters, + Readline::basic_word_break_characters=, + Readline::completer_word_break_characters, + Readline::completer_word_break_characters=, + Readline::basic_quote_characters, + Readline::basic_quote_characters=, + Readline::completer_quote_characters, + Readline::completer_quote_characters=, + Readline::filename_quote_characters, + Readline::filename_quote_characters=. + Wed Dec 19 14:05:00 2001 Yukihiro Matsumoto * eval.c (rb_mod_define_method): define_method should follow diff --git a/ext/readline/readline.c b/ext/readline/readline.c index ac5f4cce10..a6554a5b57 100644 --- a/ext/readline/readline.c +++ b/ext/readline/readline.c @@ -221,6 +221,206 @@ readline_s_get_completion_append_character(self) #endif /* READLINE_21_OR_LATER */ } +static VALUE +readline_s_set_basic_word_break_characters(self, str) + VALUE self, str; +{ +#ifdef READLINE_21_OR_LATER + static char *basic_word_break_characters = NULL; + char *s; + + StringValue(str); + if (basic_word_break_characters == NULL) { + basic_word_break_characters = + ALLOC_N(char, RSTRING(str)->len + 1); + } + else { + REALLOC_N(basic_word_break_characters, char, RSTRING(str)->len + 1); + } + strncpy(basic_word_break_characters, + RSTRING(str)->ptr, RSTRING(str)->len); + basic_word_break_characters[RSTRING(str)->len] = '\0'; + rl_basic_word_break_characters = basic_word_break_characters; + + return self; +#else + rb_notimplement(); +#endif /* READLINE_21_OR_LATER */ +} + +static VALUE +readline_s_get_basic_word_break_characters(self, str) + VALUE self, str; +{ +#ifdef READLINE_21_OR_LATER + if (rl_basic_word_break_characters == NULL) + return Qnil; + return rb_str_new2(rl_basic_word_break_characters); +#else + rb_notimplement(); +#endif /* READLINE_21_OR_LATER */ +} + +static VALUE +readline_s_set_completer_word_break_characters(self, str) + VALUE self, str; +{ +#ifdef READLINE_21_OR_LATER + static char *completer_word_break_characters = NULL; + char *s; + + StringValue(str); + if (completer_word_break_characters == NULL) { + completer_word_break_characters = + ALLOC_N(char, RSTRING(str)->len + 1); + } + else { + REALLOC_N(completer_word_break_characters, char, RSTRING(str)->len + 1); + } + strncpy(completer_word_break_characters, + RSTRING(str)->ptr, RSTRING(str)->len); + completer_word_break_characters[RSTRING(str)->len] = '\0'; + rl_completer_word_break_characters = completer_word_break_characters; + + return self; +#else + rb_notimplement(); +#endif /* READLINE_21_OR_LATER */ +} + +static VALUE +readline_s_get_completer_word_break_characters(self, str) + VALUE self, str; +{ +#ifdef READLINE_21_OR_LATER + if (rl_completer_word_break_characters == NULL) + return Qnil; + return rb_str_new2(rl_completer_word_break_characters); +#else + rb_notimplement(); +#endif /* READLINE_21_OR_LATER */ +} + +static VALUE +readline_s_set_basic_quote_characters(self, str) + VALUE self, str; +{ +#ifdef READLINE_21_OR_LATER + static char *basic_quote_characters = NULL; + char *s; + + StringValue(str); + if (basic_quote_characters == NULL) { + basic_quote_characters = + ALLOC_N(char, RSTRING(str)->len + 1); + } + else { + REALLOC_N(basic_quote_characters, char, RSTRING(str)->len + 1); + } + strncpy(basic_quote_characters, + RSTRING(str)->ptr, RSTRING(str)->len); + basic_quote_characters[RSTRING(str)->len] = '\0'; + rl_basic_quote_characters = basic_quote_characters; + + return self; +#else + rb_notimplement(); +#endif /* READLINE_21_OR_LATER */ +} + +static VALUE +readline_s_get_basic_quote_characters(self, str) + VALUE self, str; +{ +#ifdef READLINE_21_OR_LATER + if (rl_basic_quote_characters == NULL) + return Qnil; + return rb_str_new2(rl_basic_quote_characters); +#else + rb_notimplement(); +#endif /* READLINE_21_OR_LATER */ +} + +static VALUE +readline_s_set_completer_quote_characters(self, str) + VALUE self, str; +{ +#ifdef READLINE_21_OR_LATER + static char *completer_quote_characters = NULL; + char *s; + + StringValue(str); + if (completer_quote_characters == NULL) { + completer_quote_characters = + ALLOC_N(char, RSTRING(str)->len + 1); + } + else { + REALLOC_N(completer_quote_characters, char, RSTRING(str)->len + 1); + } + strncpy(completer_quote_characters, + RSTRING(str)->ptr, RSTRING(str)->len); + completer_quote_characters[RSTRING(str)->len] = '\0'; + rl_completer_quote_characters = completer_quote_characters; + + return self; +#else + rb_notimplement(); +#endif /* READLINE_21_OR_LATER */ +} + +static VALUE +readline_s_get_completer_quote_characters(self, str) + VALUE self, str; +{ +#ifdef READLINE_21_OR_LATER + if (rl_completer_quote_characters == NULL) + return Qnil; + return rb_str_new2(rl_completer_quote_characters); +#else + rb_notimplement(); +#endif /* READLINE_21_OR_LATER */ +} + +static VALUE +readline_s_set_filename_quote_characters(self, str) + VALUE self, str; +{ +#ifdef READLINE_21_OR_LATER + static char *filename_quote_characters = NULL; + char *s; + + StringValue(str); + if (filename_quote_characters == NULL) { + filename_quote_characters = + ALLOC_N(char, RSTRING(str)->len + 1); + } + else { + REALLOC_N(filename_quote_characters, char, RSTRING(str)->len + 1); + } + strncpy(filename_quote_characters, + RSTRING(str)->ptr, RSTRING(str)->len); + filename_quote_characters[RSTRING(str)->len] = '\0'; + rl_filename_quote_characters = filename_quote_characters; + + return self; +#else + rb_notimplement(); +#endif /* READLINE_21_OR_LATER */ +} + +static VALUE +readline_s_get_filename_quote_characters(self, str) + VALUE self, str; +{ +#ifdef READLINE_21_OR_LATER + if (rl_filename_quote_characters == NULL) + return Qnil; + return rb_str_new2(rl_filename_quote_characters); +#else + rb_notimplement(); +#endif /* READLINE_21_OR_LATER */ +} + static VALUE rb_remove_history(index) int index; @@ -476,6 +676,26 @@ Init_readline() readline_s_set_completion_append_character, 1); rb_define_singleton_method(mReadline, "completion_append_character", readline_s_get_completion_append_character, 0); + rb_define_singleton_method(mReadline, "basic_word_break_characters=", + readline_s_set_basic_word_break_characters, 1); + rb_define_singleton_method(mReadline, "basic_word_break_characters", + readline_s_get_basic_word_break_characters, 0); + rb_define_singleton_method(mReadline, "completer_word_break_characters=", + readline_s_set_completer_word_break_characters, 1); + rb_define_singleton_method(mReadline, "completer_word_break_characters", + readline_s_get_completer_word_break_characters, 0); + rb_define_singleton_method(mReadline, "basic_quote_characters=", + readline_s_set_basic_quote_characters, 1); + rb_define_singleton_method(mReadline, "basic_quote_characters", + readline_s_get_basic_quote_characters, 0); + rb_define_singleton_method(mReadline, "completer_quote_characters=", + readline_s_set_completer_quote_characters, 1); + rb_define_singleton_method(mReadline, "completer_quote_characters", + readline_s_get_completer_quote_characters, 0); + rb_define_singleton_method(mReadline, "filename_quote_characters=", + readline_s_set_filename_quote_characters, 1); + rb_define_singleton_method(mReadline, "filename_quote_characters", + readline_s_get_filename_quote_characters, 0); histary = rb_obj_alloc(rb_cObject); rb_extend_object(histary, rb_mEnumerable); -- cgit v1.2.3