[ruby/irb] Hide debugger hint after the input is submitted

(https://github.com/ruby/irb/pull/789)

If `output_modifier_proc`'s `complete` arg is true, it means the input is
submitted. In that case, debugger hint doesn't provide value to users
and adds noise to the output. So we hide it in such case.

https://github.com/ruby/irb/commit/f86d9dbe2f
This commit is contained in:
Stan Lo 2023-11-27 10:34:36 +00:00 committed by git
parent 71a8daecd9
commit a07d84b63c
2 changed files with 7 additions and 3 deletions

View File

@ -64,7 +64,7 @@ module IRB
unless output.strip.empty?
cmd = output.split(/\s/, 2).first
if DEBUGGER__.commands.key?(cmd)
if !complete && DEBUGGER__.commands.key?(cmd)
output = output.sub(/\n$/, " # debug command\n")
end
end

View File

@ -389,11 +389,15 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
script.close
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{script.to_path}}, startup_message: 'start IRB')
write("debug\n")
write("n")
write("pp 1\n")
write("pp 1")
close
screen = result.join("\n").sub(/\n*\z/, "\n")
assert_include(screen, "irb:rdbg(main):002> n # debug command")
# submitted input shouldn't contain hint
assert_include(screen, "irb:rdbg(main):002> pp 1\n")
# unsubmitted input should contain hint
assert_include(screen, "irb:rdbg(main):003> pp 1 # debug command\n")
ensure
File.unlink(script) if script
end