Some fixes to the pager.

We didn't send any flags to the pager, as a result ansi codes
were not applied unless the user had properly set up their LESS
env variable. This was often not the case, resulting in broken
and ugly output. This commit sends along the proper flags whenever
we use the pager, regardless of the user's LESS variable
This commit is contained in:
epitron 2013-01-18 20:58:11 -05:00 committed by John Mair
parent 2e17c21a1a
commit 9488494e6b
1 changed files with 24 additions and 5 deletions

View File

@ -24,7 +24,12 @@ class Pry::Pager
end end
def self.page_size def self.page_size
27 @page_size ||= begin
require 'io/console'
$stdout.winsize.first
rescue
27
end
end end
def initialize(text) def initialize(text)
@ -47,13 +52,27 @@ class Pry::Pager
class SystemPager < Pry::Pager class SystemPager < Pry::Pager
def self.default_pager def self.default_pager
ENV["PAGER"] || "less -R -S -F -X" pager = ENV["PAGER"] || ""
# Default to less, and make sure less is being passed the correct options
if pager.strip.empty? or pager =~ /^less\s*/
pager = "less -R -S -F -X"
end
pager
end end
def self.available? def self.available?
pager_executable = default_pager.split(' ').first if @system_pager.nil?
`which #{ pager_executable }` @system_pager = begin
rescue pager_executable = default_pager.split(' ').first
`which #{ pager_executable }`
rescue
false
end
else
@system_pager
end
end end
def initialize(*) def initialize(*)