diff --git a/lib/reline.rb b/lib/reline.rb index 6fc27caecd..26cf9119ee 100644 --- a/lib/reline.rb +++ b/lib/reline.rb @@ -453,17 +453,25 @@ def self.line_editor end end +require 'reline/general_io' if RbConfig::CONFIG['host_os'] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/ require 'reline/windows' if Reline::Windows.msys_tty? - require 'reline/ansi' - Reline::IOGate = Reline::ANSI + Reline::IOGate = if ENV['TERM'] == 'dumb' + Reline::GeneralIO + else + require 'reline/ansi' + Reline::ANSI + end else Reline::IOGate = Reline::Windows end else - require 'reline/ansi' - Reline::IOGate = Reline::ANSI + Reline::IOGate = if $stdout.isatty + require 'reline/ansi' + Reline::ANSI + else + Reline::GeneralIO + end end Reline::HISTORY = Reline::History.new(Reline.core.config) -require 'reline/general_io' diff --git a/lib/reline/general_io.rb b/lib/reline/general_io.rb index 4f605628a3..2f87d718c6 100644 --- a/lib/reline/general_io.rb +++ b/lib/reline/general_io.rb @@ -7,7 +7,7 @@ def self.reset(encoding: nil) end def self.encoding - if @@encoding + if defined?(@@encoding) @@encoding elsif RUBY_PLATFORM =~ /mswin|mingw/ Encoding::UTF_8