[ruby-trunk - Bug #6116][Open] IO#raw {|io|.} で文字入力がエコーバックしない

Issue #6116 has been reported by Sho H…


Bug #6116: IO#raw {|io| …} で文字入力がエコーバックしない

Author: Sho H.
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-03-05 trunk 34909) [x86_64-linux]

以下のドキュメントにならって、IO#raw で gets したところ入力がエコーバックしませんでした。

Yields +self+ within raw mode.

STDIN.raw(&:gets)

will read and return a line with echo back and line editing.

一方、以下のようにしてみたところ、Debian squeeze だと 1.9.3-p125 と、r34909 では 6 行目の gets
はエコーバックしました。

require “io/console”
STDIN.raw do |io|
p io.echo? # => true
p io.gets # エコーバックしない
io.echo = true
p io.gets # エコーバックする
io.echo = false
p io.gets # エコーバックしない
end

これを Windows 7 で 1.9.3-p125 で実行してみると、3 行目の echo? は false になり、4 行目の
io.echo の代入で Errno::EINVAL になりました。

こんな使い方は普通しないかもしれないですね…