Skip to content

Commit

Permalink
Revert "Switch to StdioInputMethod when TERM is 'dumb' (ruby#907)"
Browse files Browse the repository at this point in the history
This reverts commit 241e061.
  • Loading branch information
tompng committed May 1, 2024
1 parent 241e061 commit 8138d8d
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 15 deletions.
7 changes: 2 additions & 5 deletions lib/irb.rb
Original file line number Diff line number Diff line change
Expand Up @@ -311,9 +311,7 @@
# ### Input Method
#
# The IRB input method determines how command input is to be read; by default,
# the input method for a session is IRB::RelineInputMethod. Unless the
# value of the TERM environment variable is 'dumb', in which case the
# most simplistic input method is used.
# the input method for a session is IRB::RelineInputMethod.
#
# You can set the input method by:
#
Expand All @@ -331,8 +329,7 @@
# IRB::ReadlineInputMethod.
# * `--nosingleline` or `--multiline` sets the input method to
# IRB::RelineInputMethod.
# * `--nosingleline` together with `--nomultiline` sets the
# input to IRB::StdioInputMethod.
#
#
#
# Method `conf.use_multiline?` and its synonym `conf.use_reline` return:
Expand Down
9 changes: 2 additions & 7 deletions lib/irb/context.rb
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ def initialize(irb, workspace = nil, input_method = nil)
@io = nil
case use_multiline?
when nil
if term_interactive? && IRB.conf[:PROMPT_MODE] != :INF_RUBY && !use_singleline?
if STDIN.tty? && IRB.conf[:PROMPT_MODE] != :INF_RUBY && !use_singleline?
# Both of multiline mode and singleline mode aren't specified.
@io = RelineInputMethod.new(build_completor)
else
Expand All @@ -99,7 +99,7 @@ def initialize(irb, workspace = nil, input_method = nil)
unless @io
case use_singleline?
when nil
if (defined?(ReadlineInputMethod) && term_interactive? &&
if (defined?(ReadlineInputMethod) && STDIN.tty? &&
IRB.conf[:PROMPT_MODE] != :INF_RUBY)
@io = ReadlineInputMethod.new
else
Expand Down Expand Up @@ -151,11 +151,6 @@ def initialize(irb, workspace = nil, input_method = nil)
@command_aliases = @user_aliases.merge(KEYWORD_ALIASES)
end

private def term_interactive?
return true if ENV['TEST_IRB_FORCE_INTERACTIVE']
STDIN.tty? && ENV['TERM'] != 'dumb'
end

# because all input will eventually be evaluated as Ruby code,
# command names that conflict with Ruby keywords need special workaround
# we can remove them once we implemented a better command system for IRB
Expand Down
4 changes: 1 addition & 3 deletions test/irb/helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,7 @@ def run_ruby_file(&block)
@envs["XDG_CONFIG_HOME"] ||= tmp_dir
@envs["IRBRC"] = nil unless @envs.key?("IRBRC")

envs_for_spawn = @envs.merge('TERM' => 'dumb', 'TEST_IRB_FORCE_INTERACTIVE' => 'true')

PTY.spawn(envs_for_spawn, *cmd) do |read, write, pid|
PTY.spawn(@envs.merge("TERM" => "dumb"), *cmd) do |read, write, pid|
Timeout.timeout(TIMEOUT_SEC) do
while line = safe_gets(read)
lines << line
Expand Down

0 comments on commit 8138d8d

Please sign in to comment.