Feature #8675
closedAdd Readline.point=(pos)
Description
r42146 でのテスト修正で \A を入力しているのですが、rl_point を直接いじった方が正しい気がするので。
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index 714b08c..03ab724 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -808,6 +808,12 @@ readline_s_get_point(VALUE self)
{
return INT2NUM(rl_point);
}
+static VALUE
+readline_s_set_point(VALUE self, VALUE pos)
+{
- rl_point = NUM2INT(pos);
- return pos;
+}
#else
#define readline_s_get_point rb_f_notimplement
#endif
@@ -1761,6 +1767,8 @@ Init_readline()
readline_s_get_line_buffer, 0);
rb_define_singleton_method(mReadline, "point",
readline_s_get_point, 0); - rb_define_singleton_method(mReadline, "point=",
-
rb_define_singleton_method(mReadline, "set_screen_size",readline_s_set_point, 1);
readline_s_set_screen_size, 2);
rb_define_singleton_method(mReadline, "get_screen_size",
Updated by kouji (Kouji Takao) over 11 years ago
- Due date set to 07/31/2013
ありがとうございます。
7月中には取り込む方向で進めますね。
取り込むならユニットテストもほしいですね。あと、libeditでの動作確認も。
Updated by kouji (Kouji Takao) over 11 years ago
遅くなりましたが、関連するコミット 42146 も見ました。
「Readline.delete_text後にGNU Readlineの仕様そのままだとReadline.pointが削除されたテキストを考慮していない。そのため、test_readline.rbでは、Readline.pointがリセットされていないことに起因して、テストが失敗するケースがある。」ということですね。
提案いただいているようにReadline.point=は追加します。
でも、Readline.delete_textでReadline.pointが変化しないことはよくなさそうなので、別チケットでそれについて検討してどうにかしたいと思います。
Updated by kouji (Kouji Takao) over 11 years ago
- Tracker changed from Bug to Feature
Updated by kouji (Kouji Takao) over 11 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r42405.
Yui, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- ext/readline/readline.c (readline_s_set_point, Init_readline):
add Readline.point=(pos). Patched by naruse. [ruby-dev:47535]
[Feature #8675]