* lib/irb/init.rb (IRB.rc_files): yield possible rc file names.

* lib/irb/input-method.rb (IRB::ReadlineInputMethod::initialize):
  load and save history automatically.  [ruby-core:02352]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5638 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2004-02-07 10:56:16 +00:00
Родитель 7f55b0c39e
Коммит 776206b3e7
3 изменённых файлов: 55 добавлений и 8 удалений

Просмотреть файл

@ -1,6 +1,13 @@
Sat Feb 7 19:56:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/irb/init.rb (IRB.rc_files): yield possible rc file names.
* lib/irb/input-method.rb (IRB::ReadlineInputMethod::initialize):
load and save history automatically. [ruby-core:02352]
Fri Feb 6 22:48:16 2004 Dave Thomas <dave@pragprog.com> Fri Feb 6 22:48:16 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/generators/html_generator.rb (gen_url): Support * lib/rdoc/generators/html_generator.rb (gen_url): Support
https in RDoc hyperlinks https in RDoc hyperlinks
Fri Feb 6 22:41:22 2004 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp> Fri Feb 6 22:41:22 2004 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>

Просмотреть файл

@ -180,17 +180,20 @@ module IRB
end end
end end
# enumerate possible rc files
def IRB.rc_files(rc)
yield File.expand_path("~/.irb#{rc}") if ENV.key?("HOME")
yield ".irb#{rc}"
yield "irb#{rc.sub(/\A_?/, '.')}"
yield "_irb#{rc}"
yield "$irb#{rc}"
end
# running config # running config
def IRB.run_config def IRB.run_config
if @CONF[:RC] if @CONF[:RC]
rcs = []
rcs.push File.expand_path("~/.irbrc") if ENV.key?("HOME")
rcs.push ".irbrc"
rcs.push "irb.rc"
rcs.push "_irbrc"
rcs.push "$irbrc"
catch(:EXIT) do catch(:EXIT) do
for rc in rcs rc_files("rc") do |rc|
begin begin
load rc load rc
throw :EXIT throw :EXIT

Просмотреть файл

@ -85,12 +85,49 @@ module IRB
require "readline" require "readline"
class ReadlineInputMethod < InputMethod class ReadlineInputMethod < InputMethod
include Readline include Readline
def ReadlineInputMethod.create_finalizer(hist, file)
proc do
if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0
if hf = IRB.conf[:HISTORY_FILE]
file = File.expand_path(hf)
end
if file
open(file, 'w' ) do |f|
hist = hist.to_a
f.puts(hist[-num..-1] || hist)
end
end
end
end
end
def initialize def initialize
super super
@line_no = 0 @line_no = 0
@line = [] @line = []
@eof = false @eof = false
loader = proc {|f| f.each {|l| HISTORY << l.chomp}}
if hist = IRB.conf[:HISTORY_FILE]
hist = File.expand_path(hist)
begin
open(hist, &loader)
rescue
end
else
IRB.rc_files("_history") do |hist|
begin
open(hist, &loader)
rescue
hist = nil
else
break
end
end
end
ObjectSpace.define_finalizer(self, ReadlineInputMethod.create_finalizer(HISTORY, hist))
end end
def gets def gets