[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? unless output.strip.empty?
cmd = output.split(/\s/, 2).first cmd = output.split(/\s/, 2).first
if DEBUGGER__.commands.key?(cmd) if !complete && DEBUGGER__.commands.key?(cmd)
output = output.sub(/\n$/, " # debug command\n") output = output.sub(/\n$/, " # debug command\n")
end end
end end

View File

@ -389,11 +389,15 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
script.close script.close
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{script.to_path}}, startup_message: 'start IRB') start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{script.to_path}}, startup_message: 'start IRB')
write("debug\n") write("debug\n")
write("n") write("pp 1\n")
write("pp 1")
close close
screen = result.join("\n").sub(/\n*\z/, "\n") 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 ensure
File.unlink(script) if script File.unlink(script) if script
end end