-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy path.irbrc
106 lines (74 loc) · 1.95 KB
/
.irbrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# load libraries
require 'rubygems'
require 'irb/completion'
require 'irb/ext/save-history'
ARGV.concat [ "--readline",
"--prompt-mode",
"simple" ]
# 25 entries in the list
IRB.conf[:SAVE_HISTORY] = 25
# Store results in home directory with specified file name
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-history"
# history command
def history(count = 0)
# Get history into an array
history_array = Readline::HISTORY.to_a
if count > 0
from = history_array.length - count
history_array = history_array[from..-1]
end
print history_array.join("\n")
end
# def history(how_many = 50)
# history_size = Readline::HISTORY.size
# # no lines, get out of here
# puts "No history" and return if history_size == 0
# start_index = 0
# # not enough lines, only show what we have
# if history_size <= how_many
# how_many = history_size - 1
# end_index = how_many
# else
# end_index = history_size - 1 # -1 to adjust for array offset
# start_index = end_index - how_many
# end
# start_index.upto(end_index) {|i| print_line i}
# nil
# end
alias :h :history
# -2 because -1 is ourself
def history_do(lines = (Readline::HISTORY.size - 2))
irb_eval lines
nil
end
alias :h! :history_do
def history_write(filename, lines)
file = File.open(filename, 'w')
get_lines(lines).each do |l|
file << "#{l}\n"
end
file.close
end
alias :hw :history_write
private
def get_line(line_number)
Readline::HISTORY[line_number]
end
def get_lines(lines = [])
return [get_line(lines)] if lines.is_a? Fixnum
out = []
lines = lines.to_a if lines.is_a? Range
lines.each do |l|
out << Readline::HISTORY[l]
end
return out
end
def print_line(line_number, show_line_numbers = true)
# print "[%04d] " % line_number if show_line_numbers
puts get_line(line_number)
end
def irb_eval(lines)
to_eval = get_lines(lines)
eval to_eval.join("\n")
to_eval.each {|l| Readline::HISTORY << l}
end