1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[ruby/reline] @convert_meta is true unless 8-bit characters

If Reline::IOGate.encoding contains 7-bit characters, convert-meta will set it On.

Because in readline(3):

>  The default is On, but readline will set it to Off if the locale contains eight-bit characters.

As far as I know, 7-bit encoding used in terminals is only US-ASCII.

https://github.com/ruby/reline/commit/b71d1fa496
This commit is contained in:
ima1zumi 2021-12-06 23:26:38 +09:00 committed by git
parent 519a945efc
commit 5f1975a454
2 changed files with 23 additions and 0 deletions

View file

@ -67,6 +67,7 @@ class Reline::Config
@keyseq_timeout = 500
@test_mode = false
@autocompletion = false
@convert_meta = true if seven_bit_encoding?(Reline::IOGate.encoding)
end
def reset
@ -387,4 +388,8 @@ class Reline::Config
end
ret
end
private def seven_bit_encoding?(encoding)
encoding == Encoding::US_ASCII
end
end

View file

@ -11,12 +11,14 @@ class Reline::Config::Test < Reline::TestCase
Dir.mkdir(@tmpdir)
end
Dir.chdir(@tmpdir)
Reline.test_mode
@config = Reline::Config.new
end
def teardown
Dir.chdir(@pwd)
FileUtils.rm_rf(@tmpdir)
Reline.test_reset
@config.reset
end
@ -81,6 +83,22 @@ class Reline::Config::Test < Reline::TestCase
assert_equal '(Emacs)', @config.instance_variable_get(:@emacs_mode_string)
end
def test_encoding_is_ascii
@config.reset
Reline::IOGate.reset(encoding: Encoding::US_ASCII)
@config = Reline::Config.new
assert_equal true, @config.convert_meta
end
def test_encoding_is_not_ascii
@config.reset
Reline::IOGate.reset(encoding: Encoding::UTF_8)
@config = Reline::Config.new
assert_equal nil, @config.convert_meta
end
def test_comment_line
@config.read_lines([" #a: error\n"])
assert_not_include @config.key_bindings, nil