[ruby-trunk - Bug #6626][Assigned] Readline.delete_text

Issue #6626 has been reported by nobu (Nobuyoshi N.).


Bug #6626: Readline.delete_text

Author: nobu (Nobuyoshi N.)
Status: Assigned
Priority: Normal
Assignee: kouji (Kouji T.)
Category: ext
Target version: 2.0.0
ruby -v: 2.0.0

=begin
[Feature
#5785]でinsert_textなどが追加されましたが、line_bufferを編集するためにはdelete_textも必要ではないでしょうか。

現状ではline_bufferから文字を削除するためには、test_readline.rbでやっているように、かなり周りくどい上にキーバインディングに依存する処理が必要になります。

パッチは((<PR#132|URL:Readline.delete text by nobu · Pull Request #132 · ruby/ruby · GitHub>))です。

— Readline.delete_text(start=0[, length]) → self
startからlength文字を削除する。
lengthが省略された場合は末尾までを削除する。
startも省略された場合はすべてを削除する。
— Readline.delete_text(start…end) → self
startからendまでの範囲内の文字を削除する。
=end

Issue #6626 has been updated by shugo (Shugo M.).

Target version changed from 2.0.0 to next minor

feature requestだと思うのでnext minorにしておきます。


Feature #6626: Readline.delete_text

Author: nobu (Nobuyoshi N.)
Status: Assigned
Priority: Normal
Assignee: kouji (Kouji T.)
Category: ext
Target version: next minor

=begin
[Feature
#5785]でinsert_textなどが追加されましたが、line_bufferを編集するためにはdelete_textも必要ではないでしょうか。

現状ではline_bufferから文字を削除するためには、test_readline.rbでやっているように、かなり周りくどい上にキーバインディングに依存する処理が必要になります。

パッチは((<PR#132|URL:Readline.delete text by nobu · Pull Request #132 · ruby/ruby · GitHub>))です。

— Readline.delete_text(start=0[, length]) → self
startからlength文字を削除する。
lengthが省略された場合は末尾までを削除する。
startも省略された場合はすべてを削除する。
— Readline.delete_text(start…end) → self
startからendまでの範囲内の文字を削除する。
=end

Issue #6626 has been updated by kouji (Kouji T.).

大変遅くなりましたが、これを取り込もうと思って作業しています。

手元の環境(Mac OS X 10.7, GNU Readline 6.2)での動作確認は終わりました。
あと、Mac OSに標準添付されているEditLine(libedit)での動作を確認したらcommitしようかなと思っていたのですが、
このパッチには、string.cで定義されているrb_str_subpos関数を非公開から公開にする修正が含まれています。これを取り込んでもいいものなのか私では判断できませんでした。rb_str_subpos関数と同様の処理をext/readline/readline.cで実装すればrb_str_subpos関数を非公開のままにできると思って、rb_str_subpos関数を見てみましたが、なかなか長い処理なのですね…

すみませんが、どなたかrb_str_subpos関数を非公開から公開に変更してもよいかどうか判断していただけないでしょうか?
修正したい理由は、Readlineモジュールに対して本チケットで提案されている機能を実現するために、Readlineモジュールからrb_str_subpos関数を利用したいためです。利用できない場合は、rb_str_subpos関数と同様の処理をReadlineモジュールにも実装することになり、コードの重複がうまれ、メンテナンス性が悪くなると考えています。

Feature #6626: Readline.delete_text

Author: nobu (Nobuyoshi N.)
Status: Assigned
Priority: Normal
Assignee: kouji (Kouji T.)
Category: ext
Target version: next minor

=begin
[Feature
#5785]でinsert_textなどが追加されましたが、line_bufferを編集するためにはdelete_textも必要ではないでしょうか。

現状ではline_bufferから文字を削除するためには、test_readline.rbでやっているように、かなり周りくどい上にキーバインディングに依存する処理が必要になります。

パッチは((<PR#132|URL:Readline.delete text by nobu · Pull Request #132 · ruby/ruby · GitHub>))です。

— Readline.delete_text(start=0[, length]) → self
startからlength文字を削除する。
lengthが省略された場合は末尾までを削除する。
startも省略された場合はすべてを削除する。
— Readline.delete_text(start…end) → self
startからendまでの範囲内の文字を削除する。
=end