diff options
-rw-r--r-- | lib/irb/cmd/show_source.rb | 17 | ||||
-rw-r--r-- | test/irb/test_irb.rb | 14 |
2 files changed, 19 insertions, 12 deletions
diff --git a/lib/irb/cmd/show_source.rb b/lib/irb/cmd/show_source.rb index 10463ebf08..49cab43fab 100644 --- a/lib/irb/cmd/show_source.rb +++ b/lib/irb/cmd/show_source.rb @@ -2,6 +2,7 @@ require_relative "nop" require_relative "../source_finder" +require_relative "../pager" require_relative "../color" module IRB @@ -40,12 +41,16 @@ module IRB private def show_source(source) - puts - puts "#{bold("From")}: #{source.file}:#{source.first_line}" - puts - code = IRB::Color.colorize_code(File.read(source.file)) - puts code.lines[(source.first_line - 1)...source.last_line].join - puts + file_content = IRB::Color.colorize_code(File.read(source.file)) + code = file_content.lines[(source.first_line - 1)...source.last_line].join + content = <<~CONTENT + + #{bold("From")}: #{source.file}:#{source.first_line} + + #{code} + CONTENT + + Pager.page_content(content) end def bold(str) diff --git a/test/irb/test_irb.rb b/test/irb/test_irb.rb index 08fe41f5e7..0c77bb0f76 100644 --- a/test/irb/test_irb.rb +++ b/test/irb/test_irb.rb @@ -6,6 +6,11 @@ require_relative "helper" module TestIRB class InputTest < IntegrationTestCase def test_symbol_aliases_are_handled_correctly + write_rc <<~RUBY + # disable pager + STDIN.singleton_class.define_method(:tty?) { false } + RUBY + write_ruby <<~'RUBY' class Foo end @@ -21,12 +26,11 @@ module TestIRB end def test_symbol_aliases_are_handled_correctly_with_singleline_mode - @irbrc = Tempfile.new('irbrc') - @irbrc.write <<~RUBY + write_rc <<~RUBY + # disable pager + STDIN.singleton_class.define_method(:tty?) { false } IRB.conf[:USE_SINGLELINE] = true RUBY - @irbrc.close - @envs['IRBRC'] = @irbrc.path write_ruby <<~'RUBY' class Foo @@ -43,8 +47,6 @@ module TestIRB # Make sure it's tested in singleline mode assert_include output, "InputMethod: ReadlineInputMethod" assert_include output, "From: #{@ruby_file.path}:1" - ensure - @irbrc.unlink if @irbrc end def test_symbol_aliases_dont_affect_ruby_syntax |