From 3cedc5cb622e49dc124d1d7a4e99f3027f582144 Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Fri, 22 Sep 2023 14:00:25 +0100 Subject: [PATCH] Page show_source's output (#719) --- lib/irb/cmd/show_source.rb | 17 +++++++++++------ 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 10463ebf0..49cab43fa 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 @@ def execute(str = nil) 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 08fe41f5e..0c77bb0f7 100644 --- a/test/irb/test_irb.rb +++ b/test/irb/test_irb.rb @@ -6,6 +6,11 @@ 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 @@ class Foo 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 @@ class Foo # 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