Readline ライブラリが補完の際に必ずスペースを付加するという
動作を変更できるよう、 completion_append_character を設定できる
ようにするのはどうでしょうか。(パッチを添付)
ところで、 readline ライブラリで、入力を求める際のデフォルトの
文字列をセットするにはどうしたらいいんでしょうか。さっと読んだ
限りでは、 readline() は入力バッファを有無を言わさずクリアして
しまうようです。
zsh では Esc q したやつが次の入力で現れたりしますが、 zsh は
さすがに高度な補完機能を備えるだけあって入力部分は自前ですね。
# RReadline を使った方がいいかな。。 :>
--
/
/__ __ Akinori.org / MUSHA.org
/ ) ) ) ) / FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp
"Freeze this moment a little bit longer, make each impression
a little bit stronger.. Experience slips away -- Time stand still"
Index: README
===================================================================
RCS file: /src/ruby/ext/readline/README,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 README
--- README 1999/01/20 04:59:33 1.1.1.1
+++ README 2001/06/06 08:02:57
@@ -36,6 +36,17 @@
補完時に大文字小文字を区別しない場合、TRUEを返します。
+completion_append_character = char
+
+ 補完時に付加される文字を文字列で指定します。先頭の一文字が
+ 設定され、空文字列 ("") または nil を指定すると何も付加
+ されなくなります。
+
+completion_append_character
+
+ 補完時に付加される文字を文字列で返します。デフォルトは
+ 空白 (" ") です。
+
vi_editing_mode
VIモードになります。
@@ -50,6 +61,3 @@
ヒストリに対する操作はこの定数を通して行ってください。
配列と同じように扱えるようになっています。
-
-
-
\ No newline at end of file
Index: readline.c
===================================================================
RCS file: /src/ruby/ext/readline/readline.c,v
retrieving revision 1.4
diff -u -r1.4 readline.c
--- readline.c 2001/05/07 09:26:27 1.4
+++ readline.c 2001/06/06 08:02:57
@@ -167,6 +167,36 @@
}
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 @@
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);