Feature #8675

Add Readline.point=(pos)

Added by Yui NARUSE 9 months ago. Updated 8 months ago.

[ruby-dev:47535]
Status:Closed
Priority:Normal
Assignee:Kouji Takao
Category:ext
Target version:2.1.0

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 @@ readlinesgetpoint(VALUE self)
{
return INT2NUM(rl
point);
}
+static VALUE
+readlinessetpoint(VALUE self, VALUE pos)
+{
+ rl
point = NUM2INT(pos);
+ return pos;
+}
#else
#define readlinesgetpoint rbfnotimplement
#endif
@@ -1761,6 +1767,8 @@ Init
readline()
readlinesgetlinebuffer, 0);
rbdefinesingletonmethod(mReadline, "point",
readline
sgetpoint, 0);
+ rbdefinesingletonmethod(mReadline, "point=",
+ readline
ssetpoint, 1);
rbdefinesingletonmethod(mReadline, "setscreensize",
readline
ssetscreensize, 2);
rb
definesingletonmethod(mReadline, "getscreensize",

Associated revisions

Revision 42405
Added by Kouji Takao 8 months ago

  • ext/readline/readline.c (readlinessetpoint, Initreadline): add Readline.point=(pos). Patched by naruse. [Feature #8675]

History

#1 Updated by Kouji Takao 9 months ago

  • Due date set to 07/31/2013

ありがとうございます。
7月中には取り込む方向で進めますね。
取り込むならユニットテストもほしいですね。あと、libeditでの動作確認も。

#2 Updated by Kouji Takao 8 months ago

遅くなりましたが、関連するコミット 42146 も見ました。
「Readline.deletetext後にGNU Readlineの仕様そのままだとReadline.pointが削除されたテキストを考慮していない。そのため、testreadline.rbでは、Readline.pointがリセットされていないことに起因して、テストが失敗するケースがある。」ということですね。

提案いただいているようにReadline.point=は追加します。

でも、Readline.delete_textでReadline.pointが変化しないことはよくなさそうなので、別チケットでそれについて検討してどうにかしたいと思います。

#3 Updated by Kouji Takao 8 months ago

  • Tracker changed from Bug to Feature

#4 Updated by Kouji Takao 8 months 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 (readlinessetpoint, Initreadline): add Readline.point=(pos). Patched by naruse. [Feature #8675]

Also available in: Atom PDF