From: Takao Kouji Date: 2011-04-30T13:35:51+09:00 Subject: [ruby-dev:43458] Re: Readline.completion_append_character 高尾です。 > GNU readline library での話ですが、6 系のものを使うと TAB キーでの補完 > 後に Readline.completion_append_character がデフォルトの " " に戻ってし > まいます。しかも、" " 以外にセットしても、補完された単語にはデフォルト > の " " が付加されます。 (省略) > changelog に以下のように書いてあって、補完後にリセットされるのは意図的 > なようです。Ruby の readline 側で何とかならないものでしょうか? 上記に関して確認させてください。 Readlineについて、いまいさんから2つの相談があったと認識しています。 1)GNU Readline 6の場合にReadline.completion_append_characterにnilを指定できない不具合がある nilをセットしても補完後にスペースが追加される問題ですね。 こちらは原因を調査して対応したほうがよいと考えています。 2)GNU Readline 6の場合でも5以前と同様の動作にしてほしい GNU Readline 6では、補完後にReadline.completion_append_characterがデフォルト値へリセットされるので、5以前と同様にリセットされないようにしてほしいことで間違いないでしょうか。こちらについては、私はGNU Readlineでそのような挙動なのであればそれに従ったほうがよいと思っています。GNU Readline本体では、何かしらの理由があってその方がよいと考えて修正したのではないでしょうか。その恩恵を受けられる方がよいのではないでしょうか。それが問題であればGNU Readline本体を修正してもらう方がよいと思います。 以上です。 よろしくお願いします。 On 2011/04/29, at 22:37, Nobuhiro IMAI wrote: > いまいです。 > > GNU readline library での話ですが、6 系のものを使うと TAB キーでの補完 > 後に Readline.completion_append_character がデフォルトの " " に戻ってし > まいます。しかも、" " 以外にセットしても、補完された単語にはデフォルト > の " " が付加されます。 > > > require "readline" > > p RUBY_DESCRIPTION > p Readline::VERSION > p Readline.completion_append_character > Readline.completion_proc = ->(input){[input]} > IO.pipe do |r, w| > Readline.output = (w << "Readline\t").reopen("/dev/null") > Readline.input = r > Readline.completion_append_character = nil > p Readline.completion_append_character > p Readline.readline > p Readline.completion_append_character > end > > Debian GNU/Linux (sid) libreadline-gplv2-dev (5.2-8) > # >> "ruby 1.9.3dev (2011-04-29 trunk 31382) [x86_64-linux]" > # >> "5.2" > # >> " " > # >> nil > # >> "Readline" > # >> nil > > Debian GNU/Linux (sid) libreadline6-dev (6.2-1) > # >> "ruby 1.9.3dev (2011-04-29 trunk 31382) [x86_64-linux]" > # >> "6.2" > # >> " " > # >> nil (nil にセットは出来るけど) > # >> "Readline " (末尾にスペースが付いてしまって) > # >> " " (リセットされてしまう) > > > changelog に以下のように書いてあって、補完後にリセットされるのは意図的 > なようです。Ruby の readline 側で何とかならないものでしょうか? > > This document details the changes between this version, readline-6.0, > and the previous version, readline-5.2. > (snip) > f. Fixed a bug that caused the completion append character to not be reset to > the default after an application-specified completion function changed it. > -- > Nobuhiro IMAI > Key fingerprint = E57F 2482 4074 13BC 3B9A 165B C689 5B16 A620 4657 > --- TAKAO Kouji blog: http://d.hatena.ne.jp/kouji0625/ twitter: takaokouji / projects: ruby, s7-seven