irbの挙動がひとまず修正された
ruby-dev でひとまずの解決がされたようで、修正を取り込んだ RC1 が arton さんから提供されたので入れてみた。irb の奇妙な挙動は修正されている。input-method.rb を見てふと思ったのは次のようなこと。
class ReadlineInputMethod < InputMethod...
@stdout = IO.open(STDOUT.to_i, 'w', :external_encoding => IRB.conf[:LC_MESSAGES].encoding, :internal_encoding => "-")
...
#Readline.output = @stdout
Readline.output = STDOUT
の SDTOUT を @stdout に戻すとバックスペースが例の挙動を示す。とするとこの @stdout = の部分は必要なのだろうかとかふと思う(本当は必要なのだろうけれど、まだうまくいかないのでこうすればひとまず回避できる、と arton さんがいっていたのがこれってことかな)。必要だとすればコメントアウトをはずして当初の形に戻せるような修正が必要ってことなのだろうか。(@stdout = の行をコメントアウトしても動作そのものに影響があるようには見えなかった。ちょっと使った限りでは)
class StdioInputMethod < InputMethod...
@stdout = IO.open(STDOUT.to_i, :external_encoding => IRB.conf[:LC_MESSAGES].encoding, :internal_encoding => "-")
先頭に近いこちらの @stdout には 'w' オプションの指定が追加されていないのだけれど、もしもつけるならこちらにも必要なのかな?
などなど。
| 固定リンク
コメント
Readline.output = STDOUT
がーん、これは私のテスト用修正の戻し漏れですね。
この行をコメントアウトして、@stdoutを設定する行を有効にするのが、本来の修正です。
投稿: arton | 2009.01.15 02:58
あ、そうでしたか。とするとまだバックスペースの挙動は解決できていないってことですね。
投稿: ムムリク | 2009.01.15 11:02
うささんのパッチで解消していると思いますよ。
投稿: arton | 2009.01.15 23:58
と思ったら、解消されていないですねぇ。
投稿: arton | 2009.01.16 00:01
すみません。パッケージングに失敗していました(msvcrt-rubyが更新されていなかった)
投稿: arton | 2009.01.16 00:05
なるほど。そういうことでしたか。
投稿: ムムリク | 2009.01.16 10:38