Feature #6626
closed
Added by nobu (Nobuyoshi Nakada) about 12 years ago.
Updated about 11 years ago.
Description
=begin
[Feature #5785]でinsert_textなどが追加されましたが、line_bufferを編集するためにはdelete_textも必要ではないでしょうか。
現状ではline_bufferから文字を削除するためには、test_readline.rbでやっているように、かなり周りくどい上にキーバインディングに依存する処理が必要になります。
パッチは((<PR#132|URL:https://github.com/ruby/ruby/pull/132>))です。
--- Readline.delete_text(start=0[, length]) -> self
startからlength文字を削除する。
lengthが省略された場合は末尾までを削除する。
startも省略された場合はすべてを削除する。
--- Readline.delete_text(start..end) -> self
startからendまでの範囲内の文字を削除する。
=end
Files
- Tracker changed from Bug to Feature
- Target version changed from 2.0.0 to 2.6
feature requestだと思うのでnext minorにしておきます。
大変遅くなりましたが、これを取り込もうと思って作業しています。
手元の環境(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モジュールにも実装することになり、コードの重複がうまれ、メンテナンス性が悪くなると考えています。
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r42101.
Nobuyoshi, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
-
ext/readline/readline.c (Init_readline): added
Readline.delete_text. [ruby-dev:45789] [Feature #6626]
-
ext/readline/extconf.rb: check for rl_delete_text() in Readline library.
Thanks, Nobuyoshi Nakada, for the patch.
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0