ruby-changes:70150
From: ima1zumi <ko1@a...>
Date: Fri, 10 Dec 2021 22:19:27 +0900 (JST)
Subject: [ruby-changes:70150] 5f1975a454 (master): [ruby/reline] @convert_meta is true unless 8-bit characters
https://git.ruby-lang.org/ruby.git/commit/?id=5f1975a454 From 5f1975a454dd9a6743bfa196111a4fde62366798 Mon Sep 17 00:00:00 2001 From: ima1zumi <mariimaizumi5@g...> Date: Mon, 6 Dec 2021 23:26:38 +0900 Subject: [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 --- lib/reline/config.rb | 5 +++++ test/reline/test_config.rb | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/lib/reline/config.rb b/lib/reline/config.rb index 4b2655d8eb5..5ef5ce4e8d4 100644 --- a/lib/reline/config.rb +++ b/lib/reline/config.rb @@ -67,6 +67,7 @@ class Reline::Config https://github.com/ruby/ruby/blob/trunk/lib/reline/config.rb#L67 @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 https://github.com/ruby/ruby/blob/trunk/lib/reline/config.rb#L388 end ret end + + private def seven_bit_encoding?(encoding) + encoding == Encoding::US_ASCII + end end diff --git a/test/reline/test_config.rb b/test/reline/test_config.rb index aa549a392d6..e00a47c7057 100644 --- a/test/reline/test_config.rb +++ b/test/reline/test_config.rb @@ -11,12 +11,14 @@ class Reline::Config::Test < Reline::TestCase https://github.com/ruby/ruby/blob/trunk/test/reline/test_config.rb#L11 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 https://github.com/ruby/ruby/blob/trunk/test/reline/test_config.rb#L83 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 -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/