irb 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +5 -0
- data/README.md +3 -3
- data/doc/irb/irb-tools.rd.ja +184 -0
- data/doc/irb/irb.rd.ja +411 -0
- data/irb.gemspec +58 -1
- data/lib/irb.rb +106 -35
- data/lib/irb/cmd/fork.rb +1 -1
- data/lib/irb/cmd/help.rb +9 -5
- data/lib/irb/color.rb +233 -0
- data/lib/irb/completion.rb +126 -33
- data/lib/irb/context.rb +105 -65
- data/lib/irb/ext/history.rb +47 -9
- data/lib/irb/ext/multi-irb.rb +7 -7
- data/lib/irb/ext/save-history.rb +17 -5
- data/lib/irb/ext/tracer.rb +14 -1
- data/lib/irb/ext/use-loader.rb +3 -0
- data/lib/irb/extend-command.rb +70 -48
- data/lib/irb/frame.rb +12 -7
- data/lib/irb/init.rb +30 -20
- data/lib/irb/input-method.rb +108 -3
- data/lib/irb/inspector.rb +12 -2
- data/lib/irb/lc/error.rb +55 -16
- data/lib/irb/lc/help-message +9 -6
- data/lib/irb/lc/ja/error.rb +55 -14
- data/lib/irb/lc/ja/help-message +9 -6
- data/lib/irb/locale.rb +5 -1
- data/lib/irb/notifier.rb +12 -8
- data/lib/irb/output-method.rb +6 -6
- data/lib/irb/ruby-lex.rb +345 -1039
- data/lib/irb/ruby_logo.aa +38 -0
- data/lib/irb/version.rb +2 -2
- data/lib/irb/workspace.rb +58 -20
- data/man/irb.1 +207 -0
- metadata +21 -6
- data/.gitignore +0 -9
- data/.travis.yml +0 -6
- data/lib/irb/ruby-token.rb +0 -267
- data/lib/irb/slex.rb +0 -282
data/lib/irb/completion.rb
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
#
|
9
9
|
|
10
10
|
require "readline"
|
11
|
+
autoload :RDoc, "rdoc"
|
11
12
|
|
12
13
|
module IRB
|
13
14
|
module InputCompletor # :nodoc:
|
@@ -35,9 +36,13 @@ module IRB
|
|
35
36
|
yield
|
36
37
|
]
|
37
38
|
|
39
|
+
BASIC_WORD_BREAK_CHARACTERS = " \t\n`><=;|&{("
|
40
|
+
|
38
41
|
CompletionProc = proc { |input|
|
39
|
-
|
42
|
+
retrieve_completion_data(input).compact.map{ |i| i.encode(Encoding.default_external) }
|
43
|
+
}
|
40
44
|
|
45
|
+
def self.retrieve_completion_data(input, bind: IRB.conf[:MAIN_CONTEXT].workspace.binding, doc_namespace: false)
|
41
46
|
case input
|
42
47
|
when /^((["'`]).*\2)\.([^.]*)$/
|
43
48
|
# String
|
@@ -45,7 +50,11 @@ module IRB
|
|
45
50
|
message = Regexp.quote($3)
|
46
51
|
|
47
52
|
candidates = String.instance_methods.collect{|m| m.to_s}
|
48
|
-
|
53
|
+
if doc_namespace
|
54
|
+
"String.#{message}"
|
55
|
+
else
|
56
|
+
select_message(receiver, message, candidates)
|
57
|
+
end
|
49
58
|
|
50
59
|
when /^(\/[^\/]*\/)\.([^.]*)$/
|
51
60
|
# Regexp
|
@@ -53,7 +62,11 @@ module IRB
|
|
53
62
|
message = Regexp.quote($2)
|
54
63
|
|
55
64
|
candidates = Regexp.instance_methods.collect{|m| m.to_s}
|
56
|
-
|
65
|
+
if doc_namespace
|
66
|
+
"Regexp.#{message}"
|
67
|
+
else
|
68
|
+
select_message(receiver, message, candidates)
|
69
|
+
end
|
57
70
|
|
58
71
|
when /^([^\]]*\])\.([^.]*)$/
|
59
72
|
# Array
|
@@ -61,19 +74,28 @@ module IRB
|
|
61
74
|
message = Regexp.quote($2)
|
62
75
|
|
63
76
|
candidates = Array.instance_methods.collect{|m| m.to_s}
|
64
|
-
|
77
|
+
if doc_namespace
|
78
|
+
"Array.#{message}"
|
79
|
+
else
|
80
|
+
select_message(receiver, message, candidates)
|
81
|
+
end
|
65
82
|
|
66
83
|
when /^([^\}]*\})\.([^.]*)$/
|
67
84
|
# Proc or Hash
|
68
85
|
receiver = $1
|
69
86
|
message = Regexp.quote($2)
|
70
87
|
|
71
|
-
|
72
|
-
|
73
|
-
|
88
|
+
proc_candidates = Proc.instance_methods.collect{|m| m.to_s}
|
89
|
+
hash_candidates = Hash.instance_methods.collect{|m| m.to_s}
|
90
|
+
if doc_namespace
|
91
|
+
["Proc.#{message}", "Hash.#{message}"]
|
92
|
+
else
|
93
|
+
select_message(receiver, message, proc_candidates | hash_candidates)
|
94
|
+
end
|
74
95
|
|
75
96
|
when /^(:[^:.]*)$/
|
76
97
|
# Symbol
|
98
|
+
return nil if doc_namespace
|
77
99
|
if Symbol.respond_to?(:all_symbols)
|
78
100
|
sym = $1
|
79
101
|
candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
|
@@ -86,7 +108,11 @@ module IRB
|
|
86
108
|
# Absolute Constant or class methods
|
87
109
|
receiver = $1
|
88
110
|
candidates = Object.constants.collect{|m| m.to_s}
|
89
|
-
|
111
|
+
if doc_namespace
|
112
|
+
candidates.find { |i| i == receiver }
|
113
|
+
else
|
114
|
+
candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
|
115
|
+
end
|
90
116
|
|
91
117
|
when /^([A-Z].*)::([^:.]*)$/
|
92
118
|
# Constant or class methods
|
@@ -98,7 +124,11 @@ module IRB
|
|
98
124
|
rescue Exception
|
99
125
|
candidates = []
|
100
126
|
end
|
101
|
-
|
127
|
+
if doc_namespace
|
128
|
+
"#{receiver}::#{message}"
|
129
|
+
else
|
130
|
+
select_message(receiver, message, candidates, "::")
|
131
|
+
end
|
102
132
|
|
103
133
|
when /^(:[^:.]+)(\.|::)([^.]*)$/
|
104
134
|
# Symbol
|
@@ -107,20 +137,33 @@ module IRB
|
|
107
137
|
message = Regexp.quote($3)
|
108
138
|
|
109
139
|
candidates = Symbol.instance_methods.collect{|m| m.to_s}
|
110
|
-
|
140
|
+
if doc_namespace
|
141
|
+
"Symbol.#{message}"
|
142
|
+
else
|
143
|
+
select_message(receiver, message, candidates, sep)
|
144
|
+
end
|
111
145
|
|
112
|
-
when /^(
|
146
|
+
when /^(?<num>-?(0[dbo])?[0-9_]+(\.[0-9_]+)?(([eE][+-]?[0-9]+)?i?|r)?)(?<sep>\.|::)(?<mes>[^.]*)$/
|
113
147
|
# Numeric
|
114
|
-
receiver =
|
115
|
-
sep =
|
116
|
-
message = Regexp.quote(
|
148
|
+
receiver = $~[:num]
|
149
|
+
sep = $~[:sep]
|
150
|
+
message = Regexp.quote($~[:mes])
|
117
151
|
|
118
152
|
begin
|
119
|
-
|
153
|
+
instance = eval(receiver, bind)
|
154
|
+
if doc_namespace
|
155
|
+
"#{instance.class.name}.#{message}"
|
156
|
+
else
|
157
|
+
candidates = instance.methods.collect{|m| m.to_s}
|
158
|
+
select_message(receiver, message, candidates, sep)
|
159
|
+
end
|
120
160
|
rescue Exception
|
121
|
-
|
161
|
+
if doc_namespace
|
162
|
+
nil
|
163
|
+
else
|
164
|
+
candidates = []
|
165
|
+
end
|
122
166
|
end
|
123
|
-
select_message(receiver, message, candidates, sep)
|
124
167
|
|
125
168
|
when /^(-?0x[0-9a-fA-F_]+)(\.|::)([^.]*)$/
|
126
169
|
# Numeric(0xFFFF)
|
@@ -129,16 +172,30 @@ module IRB
|
|
129
172
|
message = Regexp.quote($3)
|
130
173
|
|
131
174
|
begin
|
132
|
-
|
175
|
+
instance = eval(receiver, bind)
|
176
|
+
if doc_namespace
|
177
|
+
"#{instance.class.name}.#{message}"
|
178
|
+
else
|
179
|
+
candidates = instance.methods.collect{|m| m.to_s}
|
180
|
+
select_message(receiver, message, candidates, sep)
|
181
|
+
end
|
133
182
|
rescue Exception
|
134
|
-
|
183
|
+
if doc_namespace
|
184
|
+
nil
|
185
|
+
else
|
186
|
+
candidates = []
|
187
|
+
end
|
135
188
|
end
|
136
|
-
select_message(receiver, message, candidates, sep)
|
137
189
|
|
138
190
|
when /^(\$[^.]*)$/
|
139
191
|
# global var
|
140
|
-
|
141
|
-
|
192
|
+
gvar = $1
|
193
|
+
all_gvars = global_variables.collect{|m| m.to_s}
|
194
|
+
if doc_namespace
|
195
|
+
all_gvars.find{ |i| i == gvar }
|
196
|
+
else
|
197
|
+
all_gvars.grep(Regexp.new(Regexp.quote(gvar)))
|
198
|
+
end
|
142
199
|
|
143
200
|
when /^([^."].*)(\.|::)([^.]*)$/
|
144
201
|
# variable.func or func.func
|
@@ -146,7 +203,7 @@ module IRB
|
|
146
203
|
sep = $2
|
147
204
|
message = Regexp.quote($3)
|
148
205
|
|
149
|
-
gv = eval("global_variables", bind).collect{|m| m.to_s}
|
206
|
+
gv = eval("global_variables", bind).collect{|m| m.to_s}.append("true", "false", "nil")
|
150
207
|
lv = eval("local_variables", bind).collect{|m| m.to_s}
|
151
208
|
iv = eval("instance_variables", bind).collect{|m| m.to_s}
|
152
209
|
cv = eval("self.class.constants", bind).collect{|m| m.to_s}
|
@@ -177,7 +234,11 @@ module IRB
|
|
177
234
|
candidates.sort!
|
178
235
|
candidates.uniq!
|
179
236
|
end
|
180
|
-
|
237
|
+
if doc_namespace
|
238
|
+
"#{rec.class.name}#{sep}#{candidates.find{ |i| i == message }}"
|
239
|
+
else
|
240
|
+
select_message(receiver, message, candidates, sep)
|
241
|
+
end
|
181
242
|
|
182
243
|
when /^\.([^.]*)$/
|
183
244
|
# unknown(maybe String)
|
@@ -186,12 +247,50 @@ module IRB
|
|
186
247
|
message = Regexp.quote($1)
|
187
248
|
|
188
249
|
candidates = String.instance_methods(true).collect{|m| m.to_s}
|
189
|
-
|
250
|
+
if doc_namespace
|
251
|
+
"String.#{candidates.find{ |i| i == message }}"
|
252
|
+
else
|
253
|
+
select_message(receiver, message, candidates)
|
254
|
+
end
|
190
255
|
|
191
256
|
else
|
192
257
|
candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
|
258
|
+
conditions |= ReservedWords
|
193
259
|
|
194
|
-
|
260
|
+
if doc_namespace
|
261
|
+
candidates.find{ |i| i == input }
|
262
|
+
else
|
263
|
+
candidates.grep(/^#{Regexp.quote(input)}/)
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
PerfectMatchedProc = ->(matched) {
|
269
|
+
RDocRIDriver ||= RDoc::RI::Driver.new
|
270
|
+
if matched =~ /\A(?:::)?RubyVM/ and not ENV['RUBY_YES_I_AM_NOT_A_NORMAL_USER']
|
271
|
+
File.open(File.join(__dir__, 'ruby_logo.aa')) do |f|
|
272
|
+
RDocRIDriver.page do |io|
|
273
|
+
IO.copy_stream(f, io)
|
274
|
+
end
|
275
|
+
end
|
276
|
+
return
|
277
|
+
end
|
278
|
+
namespace = retrieve_completion_data(matched, doc_namespace: true)
|
279
|
+
return unless matched
|
280
|
+
if namespace.is_a?(Array)
|
281
|
+
out = RDoc::Markup::Document.new
|
282
|
+
namespace.each do |m|
|
283
|
+
begin
|
284
|
+
RDocRIDriver.add_method(out, m)
|
285
|
+
rescue RDoc::RI::Driver::NotFoundError
|
286
|
+
end
|
287
|
+
end
|
288
|
+
RDocRIDriver.display(out)
|
289
|
+
else
|
290
|
+
begin
|
291
|
+
RDocRIDriver.display_names([namespace])
|
292
|
+
rescue RDoc::RI::Driver::NotFoundError
|
293
|
+
end
|
195
294
|
end
|
196
295
|
}
|
197
296
|
|
@@ -225,7 +324,7 @@ module IRB
|
|
225
324
|
end
|
226
325
|
end
|
227
326
|
|
228
|
-
%i(IRB
|
327
|
+
%i(IRB RubyLex).each do |sym|
|
229
328
|
next unless Object.const_defined?(sym)
|
230
329
|
scanner.call(Object.const_get(sym))
|
231
330
|
end
|
@@ -236,9 +335,3 @@ module IRB
|
|
236
335
|
end
|
237
336
|
end
|
238
337
|
end
|
239
|
-
|
240
|
-
if Readline.respond_to?("basic_word_break_characters=")
|
241
|
-
Readline.basic_word_break_characters= " \t\n`><=;|&{("
|
242
|
-
end
|
243
|
-
Readline.completion_append_character = nil
|
244
|
-
Readline.completion_proc = IRB::InputCompletor::CompletionProc
|
data/lib/irb/context.rb
CHANGED
@@ -22,10 +22,10 @@ module IRB
|
|
22
22
|
#
|
23
23
|
# The optional +input_method+ argument:
|
24
24
|
#
|
25
|
-
# +nil+:: uses stdin or Readline
|
25
|
+
# +nil+:: uses stdin or Reidline or Readline
|
26
26
|
# +String+:: uses a File
|
27
27
|
# +other+:: uses this as InputMethod
|
28
|
-
def initialize(irb, workspace = nil, input_method = nil
|
28
|
+
def initialize(irb, workspace = nil, input_method = nil)
|
29
29
|
@irb = irb
|
30
30
|
if workspace
|
31
31
|
@workspace = workspace
|
@@ -39,7 +39,21 @@ module IRB
|
|
39
39
|
@rc = IRB.conf[:RC]
|
40
40
|
@load_modules = IRB.conf[:LOAD_MODULES]
|
41
41
|
|
42
|
-
|
42
|
+
if IRB.conf.has_key?(:USE_SINGLELINE)
|
43
|
+
@use_singleline = IRB.conf[:USE_SINGLELINE]
|
44
|
+
elsif IRB.conf.has_key?(:USE_READLINE) # backward compatibility
|
45
|
+
@use_singleline = IRB.conf[:USE_READLINE]
|
46
|
+
else
|
47
|
+
@use_singleline = nil
|
48
|
+
end
|
49
|
+
if IRB.conf.has_key?(:USE_MULTILINE)
|
50
|
+
@use_multiline = IRB.conf[:USE_MULTILINE]
|
51
|
+
elsif IRB.conf.has_key?(:USE_REIDLINE) # backward compatibility
|
52
|
+
@use_multiline = IRB.conf[:USE_REIDLINE]
|
53
|
+
else
|
54
|
+
@use_multiline = nil
|
55
|
+
end
|
56
|
+
@use_colorize = IRB.conf[:USE_COLORIZE]
|
43
57
|
@verbose = IRB.conf[:VERBOSE]
|
44
58
|
@io = nil
|
45
59
|
|
@@ -64,23 +78,48 @@ module IRB
|
|
64
78
|
|
65
79
|
case input_method
|
66
80
|
when nil
|
67
|
-
|
81
|
+
@io = nil
|
82
|
+
case use_multiline?
|
68
83
|
when nil
|
69
|
-
if
|
70
|
-
|
71
|
-
|
84
|
+
if STDIN.tty? && IRB.conf[:PROMPT_MODE] != :INF_RUBY && !use_singleline?
|
85
|
+
# Both of multiline mode and singleline mode aren't specified.
|
86
|
+
puts <<~EOM
|
87
|
+
This version of IRB is drastically different from the previous version.
|
88
|
+
If you hit any issues, you can use "irb --legacy" to run the old version.
|
89
|
+
If you want to just erase this message, please use "irb --multiline" or
|
90
|
+
add `IRB.conf[:USE_MULTILINE] = true` to your ~/.irbrc file.
|
91
|
+
EOM
|
92
|
+
@io = ReidlineInputMethod.new
|
72
93
|
else
|
73
|
-
@io =
|
94
|
+
@io = nil
|
74
95
|
end
|
75
96
|
when false
|
76
|
-
@io =
|
97
|
+
@io = nil
|
77
98
|
when true
|
78
|
-
|
79
|
-
|
99
|
+
@io = ReidlineInputMethod.new
|
100
|
+
end
|
101
|
+
unless @io
|
102
|
+
case use_singleline?
|
103
|
+
when nil
|
104
|
+
if (defined?(ReadlineInputMethod) && STDIN.tty? &&
|
105
|
+
IRB.conf[:PROMPT_MODE] != :INF_RUBY)
|
106
|
+
@io = ReadlineInputMethod.new
|
107
|
+
else
|
108
|
+
@io = nil
|
109
|
+
end
|
110
|
+
when false
|
111
|
+
@io = nil
|
112
|
+
when true
|
113
|
+
if defined?(ReadlineInputMethod)
|
114
|
+
@io = ReadlineInputMethod.new
|
115
|
+
else
|
116
|
+
@io = nil
|
117
|
+
end
|
80
118
|
else
|
81
|
-
@io =
|
119
|
+
@io = nil
|
82
120
|
end
|
83
121
|
end
|
122
|
+
@io = StdioInputMethod.new unless @io
|
84
123
|
|
85
124
|
when String
|
86
125
|
@io = FileInputMethod.new(input_method)
|
@@ -91,17 +130,15 @@ module IRB
|
|
91
130
|
end
|
92
131
|
self.save_history = IRB.conf[:SAVE_HISTORY] if IRB.conf[:SAVE_HISTORY]
|
93
132
|
|
94
|
-
if output_method
|
95
|
-
@output_method = output_method
|
96
|
-
else
|
97
|
-
@output_method = StdioOutputMethod.new
|
98
|
-
end
|
99
|
-
|
100
133
|
@echo = IRB.conf[:ECHO]
|
101
134
|
if @echo.nil?
|
102
135
|
@echo = true
|
103
136
|
end
|
104
|
-
|
137
|
+
|
138
|
+
@echo_on_assignment = IRB.conf[:ECHO_ON_ASSIGNMENT]
|
139
|
+
if @echo_on_assignment.nil?
|
140
|
+
@echo_on_assignment = false
|
141
|
+
end
|
105
142
|
end
|
106
143
|
|
107
144
|
# The top-level workspace, see WorkSpace#main
|
@@ -117,9 +154,9 @@ module IRB
|
|
117
154
|
attr_reader :thread
|
118
155
|
# The current input method
|
119
156
|
#
|
120
|
-
# Can be either StdioInputMethod, ReadlineInputMethod,
|
121
|
-
# other specified when the
|
122
|
-
# information on +input_method+.
|
157
|
+
# Can be either StdioInputMethod, ReadlineInputMethod,
|
158
|
+
# ReidlineInputMethod, FileInputMethod or other specified when the
|
159
|
+
# context is created. See ::new for more # information on +input_method+.
|
123
160
|
attr_accessor :io
|
124
161
|
|
125
162
|
# Current irb session
|
@@ -137,12 +174,18 @@ module IRB
|
|
137
174
|
# +input_method+ passed to Context.new
|
138
175
|
attr_accessor :irb_path
|
139
176
|
|
140
|
-
# Whether
|
177
|
+
# Whether multiline editor mode is enabled or not.
|
178
|
+
#
|
179
|
+
# A copy of the default <code>IRB.conf[:USE_MULTILINE]</code>
|
180
|
+
attr_reader :use_multiline
|
181
|
+
# Whether singleline editor mode is enabled or not.
|
141
182
|
#
|
142
|
-
# A copy of the default <code>IRB.conf[:
|
183
|
+
# A copy of the default <code>IRB.conf[:USE_SINGLELINE]</code>
|
184
|
+
attr_reader :use_singleline
|
185
|
+
# Whether colorization is enabled or not.
|
143
186
|
#
|
144
|
-
#
|
145
|
-
attr_reader :
|
187
|
+
# A copy of the default <code>IRB.conf[:USE_COLORIZE]</code>
|
188
|
+
attr_reader :use_colorize
|
146
189
|
# A copy of the default <code>IRB.conf[:INSPECT_MODE]</code>
|
147
190
|
attr_reader :inspect_mode
|
148
191
|
|
@@ -165,17 +208,17 @@ module IRB
|
|
165
208
|
# Can be either the default <code>IRB.conf[:AUTO_INDENT]</code>, or the
|
166
209
|
# mode set by #prompt_mode=
|
167
210
|
#
|
168
|
-
# To
|
211
|
+
# To disable auto-indentation in irb:
|
169
212
|
#
|
170
|
-
# IRB.conf[:AUTO_INDENT] =
|
213
|
+
# IRB.conf[:AUTO_INDENT] = false
|
171
214
|
#
|
172
215
|
# or
|
173
216
|
#
|
174
|
-
# irb_context.auto_indent_mode =
|
217
|
+
# irb_context.auto_indent_mode = false
|
175
218
|
#
|
176
219
|
# or
|
177
220
|
#
|
178
|
-
# IRB.CurrentContext.auto_indent_mode =
|
221
|
+
# IRB.CurrentContext.auto_indent_mode = false
|
179
222
|
#
|
180
223
|
# See IRB@Configuration for more information.
|
181
224
|
attr_accessor :auto_indent_mode
|
@@ -207,14 +250,19 @@ module IRB
|
|
207
250
|
# puts "omg"
|
208
251
|
# # omg
|
209
252
|
attr_accessor :echo
|
253
|
+
# Whether to echo for assignment expressions
|
254
|
+
#
|
255
|
+
# Uses IRB.conf[:ECHO_ON_ASSIGNMENT] if available, or defaults to +false+.
|
256
|
+
#
|
257
|
+
# a = "omg"
|
258
|
+
# IRB.CurrentContext.echo_on_assignment = true
|
259
|
+
# a = "omg"
|
260
|
+
# #=> omg
|
261
|
+
attr_accessor :echo_on_assignment
|
210
262
|
# Whether verbose messages are displayed or not.
|
211
263
|
#
|
212
264
|
# A copy of the default <code>IRB.conf[:VERBOSE]</code>
|
213
265
|
attr_accessor :verbose
|
214
|
-
# The debug level of irb
|
215
|
-
#
|
216
|
-
# See #debug_level= for more information.
|
217
|
-
attr_reader :debug_level
|
218
266
|
|
219
267
|
# The limit of backtrace lines displayed as top +n+ and tail +n+.
|
220
268
|
#
|
@@ -225,18 +273,33 @@ module IRB
|
|
225
273
|
# See IRB@Command+line+options for more command line options.
|
226
274
|
attr_accessor :back_trace_limit
|
227
275
|
|
228
|
-
# Alias for #
|
229
|
-
alias
|
276
|
+
# Alias for #use_multiline
|
277
|
+
alias use_multiline? use_multiline
|
278
|
+
# Alias for #use_singleline
|
279
|
+
alias use_singleline? use_singleline
|
280
|
+
# backward compatibility
|
281
|
+
alias use_reidline use_multiline
|
282
|
+
# backward compatibility
|
283
|
+
alias use_reidline? use_multiline
|
284
|
+
# backward compatibility
|
285
|
+
alias use_readline use_singleline
|
286
|
+
# backward compatibility
|
287
|
+
alias use_readline? use_singleline
|
288
|
+
# Alias for #use_colorize
|
289
|
+
alias use_colorize? use_colorize
|
230
290
|
# Alias for #rc
|
231
291
|
alias rc? rc
|
232
292
|
alias ignore_sigint? ignore_sigint
|
233
293
|
alias ignore_eof? ignore_eof
|
234
294
|
alias echo? echo
|
295
|
+
alias echo_on_assignment? echo_on_assignment
|
235
296
|
|
236
297
|
# Returns whether messages are displayed or not.
|
237
298
|
def verbose?
|
238
299
|
if @verbose.nil?
|
239
|
-
if
|
300
|
+
if @io.kind_of?(ReidlineInputMethod)
|
301
|
+
false
|
302
|
+
elsif defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)
|
240
303
|
false
|
241
304
|
elsif !STDIN.tty? or @io.kind_of?(FileInputMethod)
|
242
305
|
true
|
@@ -249,9 +312,11 @@ module IRB
|
|
249
312
|
end
|
250
313
|
|
251
314
|
# Whether #verbose? is +true+, and +input_method+ is either
|
252
|
-
# StdioInputMethod or ReadlineInputMethod, see #io
|
315
|
+
# StdioInputMethod or ReidlineInputMethod or ReadlineInputMethod, see #io
|
316
|
+
# for more information.
|
253
317
|
def prompting?
|
254
318
|
verbose? || (STDIN.tty? && @io.kind_of?(StdioInputMethod) ||
|
319
|
+
@io.kind_of?(ReidlineInputMethod) ||
|
255
320
|
(defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)))
|
256
321
|
end
|
257
322
|
|
@@ -350,36 +415,11 @@ module IRB
|
|
350
415
|
@inspect_mode
|
351
416
|
end
|
352
417
|
|
353
|
-
# Obsolete method.
|
354
|
-
#
|
355
|
-
# Can be set using the +--noreadline+ and +--readline+ command line
|
356
|
-
# options.
|
357
|
-
#
|
358
|
-
# See IRB@Command+line+options for more command line options.
|
359
|
-
def use_readline=(opt)
|
360
|
-
print "This method is obsolete."
|
361
|
-
print "Do nothing."
|
362
|
-
end
|
363
|
-
|
364
|
-
# Sets the debug level of irb
|
365
|
-
#
|
366
|
-
# Can also be set using the +--irb_debug+ command line option.
|
367
|
-
#
|
368
|
-
# See IRB@Command+line+options for more command line options.
|
369
|
-
def debug_level=(value)
|
370
|
-
@debug_level = value
|
371
|
-
RubyLex.debug_level = value
|
372
|
-
end
|
373
|
-
|
374
|
-
# Whether or not debug mode is enabled, see #debug_level=.
|
375
|
-
def debug?
|
376
|
-
@debug_level > 0
|
377
|
-
end
|
378
|
-
|
379
418
|
def evaluate(line, line_no, exception: nil) # :nodoc:
|
380
419
|
@line_no = line_no
|
381
420
|
if exception
|
382
|
-
|
421
|
+
line_no -= 1
|
422
|
+
line = "begin ::Kernel.raise _; rescue _.class\n#{line}\n""end"
|
383
423
|
@workspace.local_variable_set(:_, exception)
|
384
424
|
end
|
385
425
|
set_last_value(@workspace.evaluate(self, line, irb_path, line_no))
|