Skip to content

Instantly share code, notes, and snippets.

@davidlee
Created July 9, 2009 03:50
Show Gist options
  • Save davidlee/143410 to your computer and use it in GitHub Desktop.
Save davidlee/143410 to your computer and use it in GitHub Desktop.
# sudo gem install irb-history wirble
require 'rubygems'
require 'irb/completion'
require 'irb/ext/save-history'
ARGV.concat [ "--readline", "--prompt-mode", "simple" ]
IRB.conf[:SAVE_HISTORY] = 1000
HISTFILE = IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"
require 'wirble'
Wirble.init
Wirble.colorize
begin
if defined? Readline::HISTORY
histfile = File::expand_path( HISTFILE )
if File::exists?( histfile )
lines = IO::readlines( histfile ).collect {|line| line.chomp}
puts "Read %d saved history commands from %s." %
[ lines.nitems, histfile ] if $DEBUG || $VERBOSE
Readline::HISTORY.push( *lines )
else
puts "History file '%s' was empty or non-existant." %
histfile if $DEBUG || $VERBOSE
end
Kernel::at_exit {
lines = Readline::HISTORY.to_a.reverse.uniq.reverse
lines = lines[ -MAXHISTSIZE, MAXHISTSIZE ] if lines.nitems > MAXHISTSIZE
$stderr.puts "Saving %d history lines to %s." %
[ lines.length, histfile ] if $VERBOSE || $DEBUG
File::open( histfile, File::WRONLY|File::CREAT|File::TRUNC ) {|ofh|
lines.each {|line| ofh.puts line }
}
}
end
end
IRB.conf[:PROMPT_MODE] = :SIMPLE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment