Project

General

Profile

Actions

Feature #6626

closed

Readline.delete_text

Added by nobu (Nobuyoshi Nakada) almost 12 years ago. Updated almost 11 years ago.

Status:
Closed
Target version:
[ruby-dev:45789]

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

Actions #1

Updated by shugo (Shugo Maeda) about 11 years ago

  • Tracker changed from Bug to Feature

Updated by shugo (Shugo Maeda) about 11 years ago

  • Target version changed from 2.0.0 to 2.6

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

Updated by kouji (Kouji Takao) almost 11 years ago

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

手元の環境(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モジュールにも実装することになり、コードの重複がうまれ、メンテナンス性が悪くなると考えています。

Actions #4

Updated by kouji (Kouji Takao) almost 11 years ago

  • 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.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0