* lib/rdoc/ri/ri_display.rb (DefaultDisplay::page): wait until the

pager terminates.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5881 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2004-03-03 16:17:32 +00:00
parent 57cbecdb4f
commit 5dfa7cacd1
2 changed files with 10 additions and 21 deletions

View File

@ -1,7 +1,7 @@
Wed Mar 3 18:58:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org> Thu Mar 4 01:17:28 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/rdoc/ri/ri_display.rb (DefaultDisplay::setup_pager): ensure * lib/rdoc/ri/ri_display.rb (DefaultDisplay::page): wait until the
pager closes and stdout is restored. pager terminates.
Wed Mar 3 13:10:56 2004 Yukihiro Matsumoto <matz@ruby-lang.org> Wed Mar 3 13:10:56 2004 Yukihiro Matsumoto <matz@ruby-lang.org>

View File

@ -183,11 +183,15 @@ class DefaultDisplay
###################################################################### ######################################################################
def page def page
pager = setup_pager return yield unless pager = setup_pager
begin begin
save_stdout = STDOUT.clone
STDOUT.reopen(pager)
yield yield
ensure ensure
page_output(pager) STDOUT.reopen(save_stdout)
save_stdout.close
pager.close
end end
end end
@ -196,28 +200,13 @@ class DefaultDisplay
def setup_pager def setup_pager
unless @options.use_stdout unless @options.use_stdout
for pager in [ ENV['PAGER'], "less", "more", 'pager' ].compact.uniq for pager in [ ENV['PAGER'], "less", "more", 'pager' ].compact.uniq
begin return IO.popen(pager, "w") rescue nil
pager = IO.popen(pager, "w")
rescue
else
@save_stdout = STDOUT.clone
STDOUT.reopen(pager)
return pager
end
end end
@options.use_stdout = true @options.use_stdout = true
nil nil
end end
end end
######################################################################
def page_output(pager)
STDOUT.reopen(@save_stdout) if @save_stdout
@save_stdout = nil
pager.close if pager
end
###################################################################### ######################################################################
def display_params(method) def display_params(method)