summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/readline/README14
-rw-r--r--ext/readline/readline.c34
2 files changed, 45 insertions, 3 deletions
diff --git a/ext/readline/README b/ext/readline/README
index 8a5fe9120f4..affe51f9e6e 100644
--- a/ext/readline/README
+++ b/ext/readline/README
@@ -36,6 +36,17 @@ completion_case_fold
補完時に大文字小文字を区別しない場合、TRUEを返します。
+completion_append_character = char
+
+ 補完時に付加される文字を文字列で指定します。先頭の一文字が
+ 設定され、空文字列 ("") または nil を指定すると何も付加
+ されなくなります。
+
+completion_append_character
+
+ 補完時に付加される文字を文字列で返します。デフォルトは
+ 空白 (" ") です。
+
vi_editing_mode
VIモードになります。
@@ -50,6 +61,3 @@ HISTORY
ヒストリに対する操作はこの定数を通して行ってください。
配列と同じように扱えるようになっています。
-
-
- \ No newline at end of file
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index c8ed81ac51f..6482f942b49 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -167,6 +167,36 @@ readline_s_emacs_editing_mode(self)
}
static VALUE
+readline_s_set_completion_append_character(self, str)
+ VALUE self, str;
+{
+ if (NIL_P(str)) {
+ rl_completion_append_character = '\0';
+ } else {
+ StringValue(str);
+
+ rl_completion_append_character = RSTRING(str)->ptr[0];
+ }
+
+ return self;
+}
+
+static VALUE
+readline_s_get_completion_append_character(self)
+ VALUE self;
+{
+ VALUE str;
+
+ if (rl_completion_append_character == '\0')
+ return Qnil;
+
+ str = rb_str_new("", 1);
+ RSTRING(str)->ptr[0] = rl_completion_append_character;
+
+ return str;
+}
+
+static VALUE
hist_to_s(self)
VALUE self;
{
@@ -395,6 +425,10 @@ Init_readline()
readline_s_vi_editing_mode, 0);
rb_define_singleton_method(mReadline, "emacs_editing_mode",
readline_s_emacs_editing_mode, 0);
+ rb_define_singleton_method(mReadline, "completion_append_character=",
+ readline_s_set_completion_append_character, 1);
+ rb_define_singleton_method(mReadline, "completion_append_character",
+ readline_s_get_completion_append_character, 0);
histary = rb_obj_alloc(rb_cObject);
rb_extend_object(histary, rb_mEnumerable);