1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/irb.rb, lib/irb/init.rb, lib/irb/ext/save-history.rb: add

IRB::irb_at_exit. no use finalizer saving history. [ruby-dev-38563]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@24254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
keiju 2009-07-23 06:06:42 +00:00
parent c7713d8aef
commit 362a1d1854
4 changed files with 47 additions and 18 deletions

View file

@ -1,3 +1,8 @@
Thu Jul 23 15:04:20 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
* lib/irb.rb, lib/irb/init.rb, lib/irb/ext/save-history.rb: add
IRB::irb_at_exit. no use finalizer saving history. [ruby-dev-38563]
Tue Jul 21 20:26:35 2009 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/Makefile.sub (config.status): remove the definition of CP, so

View file

@ -65,13 +65,21 @@ module IRB
trap("SIGINT") do
irb.signal_handle
end
catch(:IRB_EXIT) do
irb.eval_input
begin
catch(:IRB_EXIT) do
irb.eval_input
end
ensure
irb_at_exit
end
# print "\n"
end
def IRB.irb_at_exit
@CONF[:AT_EXIT].each{|hook| hook.call}
end
def IRB.irb_exit(irb, ret)
throw :IRB_EXIT, ret
end

View file

@ -50,23 +50,24 @@ module IRB
module HistorySavingAbility
include Readline
def HistorySavingAbility.create_finalizer
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
file = IRB.rc_file("_history") unless file
open(file, 'w' ) do |f|
hist = HISTORY.to_a
f.puts(hist[-num..-1] || hist)
end
end
end
end
# def HistorySavingAbility.create_finalizer
# 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
# file = IRB.rc_file("_history") unless file
# open(file, 'w' ) do |f|
# hist = HISTORY.to_a
# f.puts(hist[-num..-1] || hist)
# end
# end
# end
# end
def HistorySavingAbility.extended(obj)
ObjectSpace.define_finalizer(obj, HistorySavingAbility.create_finalizer)
# ObjectSpace.define_finalizer(obj, HistorySavingAbility.create_finalizer)
IRB.conf[:AT_EXIT].push proc{obj.save_history}
obj.load_history
obj
end
@ -80,6 +81,19 @@ module IRB
end
end
end
def save_history
if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0
if history_file = IRB.conf[:HISTORY_FILE]
history_file = File.expand_path(history_file)
end
history_file = IRB.rc_file("_history") unless history_file
open(history_file, 'w' ) do |f|
hist = HISTORY.to_a
f.puts(hist[-num..-1] || hist)
end
end
end
end
end

View file

@ -114,6 +114,8 @@ module IRB
# @CONF[:LC_MESSAGES] = "en"
@CONF[:LC_MESSAGES] = Locale.new
@CONF[:AT_EXIT] = []
@CONF[:DEBUG_LEVEL] = 1
end