Module: GitStyleBinary::Helpers::Pager
- Defined in:
- lib/git-style-binary/helpers/pager.rb
Class Method Summary collapse
-
.run_pager ⇒ Object
by Nathan Weizenbaum - nex-3.com/posts/73-git-style-automatic-paging-in-ruby.
Class Method Details
.run_pager ⇒ Object
by Nathan Weizenbaum - nex-3.com/posts/73-git-style-automatic-paging-in-ruby
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/git-style-binary/helpers/pager.rb', line 6 def run_pager return if PLATFORM =~ /win32/ return unless STDOUT.tty? STDOUT.use_color = true read, write = IO.pipe unless Kernel.fork # Child process STDOUT.reopen(write) STDERR.reopen(write) if STDERR.tty? read.close write.close return end # Parent process, become pager STDIN.reopen(read) read.close write.close ENV['LESS'] = 'FSRX' # Don't page if the input is short enough Kernel.select [STDIN] # Wait until we have input before we start the pager pager = ENV['PAGER'] || 'less -erXF' exec pager rescue exec "/bin/sh", "-c", pager end |