irb 1.3.6 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +3 -5
- data/Rakefile +10 -1
- data/doc/irb/irb.rd.ja +30 -14
- data/irb.gemspec +1 -1
- data/lib/irb/cmd/help.rb +2 -1
- data/lib/irb/cmd/info.rb +7 -0
- data/lib/irb/cmd/ls.rb +9 -15
- data/lib/irb/cmd/measure.rb +3 -0
- data/lib/irb/cmd/show_source.rb +11 -4
- data/lib/irb/completion.rb +57 -17
- data/lib/irb/context.rb +37 -9
- data/lib/irb/init.rb +9 -0
- data/lib/irb/input-method.rb +100 -1
- data/lib/irb/lc/help-message +10 -1
- data/lib/irb/lc/ja/help-message +2 -0
- data/lib/irb/ruby-lex.rb +151 -92
- data/lib/irb/version.rb +2 -2
- data/lib/irb/workspace.rb +3 -0
- data/lib/irb.rb +21 -6
- data/man/irb.1 +23 -1
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be0bdb184f8483785b83b91bc57339e994a15b2d1435720e8f17b9f04b2b924e
|
4
|
+
data.tar.gz: 02ca5b9f06cedc077c79f07ad33765225736f9d7ffa9bb93671cf739131a2d9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: faa52653f45b98a0ce82b215110376e3cac3faefa34928a50067e101c3171a0fbc492ba3b7a23334ac81f23448526e6931fca45925a07ab914aa2634c8e1de9a
|
7
|
+
data.tar.gz: 4da73a1293f021bcb3a0ed996ac4f48f3c73884d34efa438987b230cda72ce3aa0c6ac67865e57655cdcc8ffd49cb6ca267c564711345247ed889857f60156c1
|
data/Gemfile
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
4
|
-
|
5
3
|
gemspec
|
6
4
|
|
7
5
|
group :development do
|
8
|
-
gem "bundler"
|
9
6
|
is_unix = RUBY_PLATFORM =~ /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
|
10
7
|
is_truffleruby = RUBY_DESCRIPTION =~ /truffleruby/
|
11
|
-
gem
|
12
|
-
gem
|
8
|
+
gem "vterm", ">= 0.0.5" if is_unix && ENV['WITH_VTERM']
|
9
|
+
gem "yamatanooroti", ">= 0.0.6"
|
13
10
|
gem "rake"
|
14
11
|
gem "stackprof" if is_unix && !is_truffleruby
|
12
|
+
gem "test-unit"
|
15
13
|
end
|
data/Rakefile
CHANGED
@@ -4,14 +4,23 @@ require "rake/testtask"
|
|
4
4
|
Rake::TestTask.new(:test) do |t|
|
5
5
|
t.libs << "test" << "test/lib"
|
6
6
|
t.libs << "lib"
|
7
|
+
t.ruby_opts << "-rhelper"
|
7
8
|
t.test_files = FileList["test/irb/test_*.rb"]
|
8
9
|
end
|
9
10
|
|
10
11
|
Rake::TestTask.new(:test_yamatanooroti) do |t|
|
11
|
-
t.libs << 'test'
|
12
|
+
t.libs << 'test' << "test/lib"
|
12
13
|
t.libs << 'lib'
|
13
14
|
#t.loader = :direct
|
15
|
+
t.ruby_opts << "-rhelper"
|
14
16
|
t.pattern = 'test/irb/yamatanooroti/test_*.rb'
|
15
17
|
end
|
16
18
|
|
19
|
+
task :sync_tool do
|
20
|
+
require 'fileutils'
|
21
|
+
FileUtils.cp "../ruby/tool/lib/core_assertions.rb", "./test/lib"
|
22
|
+
FileUtils.cp "../ruby/tool/lib/envutil.rb", "./test/lib"
|
23
|
+
FileUtils.cp "../ruby/tool/lib/find_executable.rb", "./test/lib"
|
24
|
+
end
|
25
|
+
|
17
26
|
task :default => :test
|
data/doc/irb/irb.rd.ja
CHANGED
@@ -40,15 +40,24 @@ irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本
|
|
40
40
|
irb.rb [options] file_name opts
|
41
41
|
options:
|
42
42
|
-f ~/.irbrc を読み込まない.
|
43
|
-
-m bcモード(分数, 行列の計算ができる)
|
44
43
|
-d $DEBUG をtrueにする(ruby -d と同じ)
|
45
|
-
-Kc ruby -Kcと同じ
|
46
44
|
-r load-module ruby -r と同じ.
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
45
|
+
-I path $LOAD_PATH に path を追加する.
|
46
|
+
-U ruby -U と同じ.
|
47
|
+
-E enc ruby -E と同じ.
|
48
|
+
-w ruby -w と同じ.
|
49
|
+
-W[level=2] ruby -W と同じ.
|
50
|
+
--context-mode n 新しいワークスペースを作成した時に関連する Binding
|
51
|
+
オブジェクトの作成方法を 0 から 3 のいずれかに設定する.
|
52
|
+
--echo 実行結果を表示する(デフォルト).
|
53
|
+
--noecho 実行結果を表示しない.
|
54
|
+
--echo-on-assignment
|
55
|
+
代入時に実行結果を表示する.
|
56
|
+
--noecho-on-assignment
|
57
|
+
代入時に実行結果を表示しない.
|
58
|
+
--truncate-echo-on-assignment
|
59
|
+
代入時に省略された実行結果を表示する(デフォルト).
|
60
|
+
--inspect 結果出力にinspectを用いる.
|
52
61
|
--noinspect 結果出力にinspectを用いない.
|
53
62
|
--singleline シングルラインエディタを利用する.
|
54
63
|
--nosingleline シングルラインエディタを利用しない. デフォルトの動
|
@@ -56,23 +65,30 @@ irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本
|
|
56
65
|
用しようとする.
|
57
66
|
--colorize 色付けを利用する.
|
58
67
|
--nocolorize 色付けを利用しない.
|
68
|
+
--autocomplete オートコンプリートを利用する.
|
69
|
+
--noautocomplete オートコンプリートを利用しない.
|
59
70
|
--prompt prompt-mode
|
60
71
|
--prompt-mode prompt-mode
|
61
72
|
プロンプトモードを切替えます. 現在定義されているプ
|
62
73
|
ロンプトモードは, default, simple, xmp, inf-rubyが
|
63
|
-
用意されています.
|
64
|
-
ドになっています.
|
65
|
-
|
74
|
+
用意されています.
|
66
75
|
--inf-ruby-mode emacsのinf-ruby-mode用のプロンプト表示を行なう. 特
|
67
76
|
に指定がない限り, ラインエディタは使わなくなる.
|
68
77
|
--simple-prompt
|
69
78
|
非常にシンプルなプロンプトを用いるモードです.
|
70
79
|
--noprompt プロンプト表示を行なわない.
|
80
|
+
--single-irb irb 中で self を実行して得られるオブジェクトをサ
|
81
|
+
ブ irb と共有する.
|
71
82
|
--tracer コマンド実行時にトレースを行なう.
|
72
83
|
--back-trace-limit n
|
73
84
|
バックトレース表示をバックトレースの頭から n, 後ろ
|
74
85
|
からnだけ行なう. デフォルトは16
|
75
|
-
|
86
|
+
|
87
|
+
--verbose 詳細なメッセージを出力する.
|
88
|
+
--noverbose 詳細なメッセージを出力しない(デフォルト).
|
89
|
+
-v, --version irbのバージョンを表示する.
|
90
|
+
-h, --help irb のヘルプを表示する.
|
91
|
+
-- 以降のコマンドライン引数をオプションとして扱わない.
|
76
92
|
|
77
93
|
= コンフィギュレーション
|
78
94
|
|
@@ -137,12 +153,12 @@ PROMPT_I, PROMPT_N, PROMPT_S, PROMPT_Cは, フォーマットを指定します.
|
|
137
153
|
|
138
154
|
例えば, デフォルトのプロンプトモードは:
|
139
155
|
|
140
|
-
IRB.conf[:
|
156
|
+
IRB.conf[:PROMPT][:DEFAULT] = {
|
141
157
|
:PROMPT_I => "%N(%m):%03n:%i> ",
|
142
158
|
:PROMPT_N => "%N(%m):%03n:%i> ",
|
143
159
|
:PROMPT_S => "%N(%m):%03n:%i%l ",
|
144
160
|
:PROMPT_C => "%N(%m):%03n:%i* ",
|
145
|
-
:RETURN => "%s\n"
|
161
|
+
:RETURN => "=> %s\n"
|
146
162
|
}
|
147
163
|
|
148
164
|
となっています.
|
@@ -374,7 +390,7 @@ rubyでは, 以下のプログラムはエラーになります.
|
|
374
390
|
パイルしてローカル変数を決定するからです. それに対し, irbは実行可能に
|
375
391
|
なる(式が閉じる)と自動的に評価しているからです. 上記の例では,
|
376
392
|
|
377
|
-
|
393
|
+
eval "foo = 0"
|
378
394
|
|
379
395
|
を行なった時点で評価を行ない, その時点で変数が定義されるため, 次式で
|
380
396
|
変数fooは定義されているからです.
|
data/irb.gemspec
CHANGED
data/lib/irb/cmd/help.rb
CHANGED
@@ -17,7 +17,8 @@ module IRB
|
|
17
17
|
class Help < Nop
|
18
18
|
def execute(*names)
|
19
19
|
require 'rdoc/ri/driver'
|
20
|
-
|
20
|
+
opts = RDoc::RI::Driver.process_args([])
|
21
|
+
IRB::ExtendCommand::Help.const_set(:Ri, RDoc::RI::Driver.new(opts))
|
21
22
|
rescue LoadError, SystemExit
|
22
23
|
IRB::ExtendCommand::Help.remove_method(:execute)
|
23
24
|
# raise NoMethodError in ensure
|
data/lib/irb/cmd/info.rb
CHANGED
@@ -14,6 +14,13 @@ module IRB
|
|
14
14
|
str += "InputMethod: #{IRB.CurrentContext.io.inspect}\n"
|
15
15
|
str += ".irbrc path: #{IRB.rc_file}\n" if File.exist?(IRB.rc_file)
|
16
16
|
str += "RUBY_PLATFORM: #{RUBY_PLATFORM}\n"
|
17
|
+
str += "LANG env: #{ENV["LANG"]}\n" if ENV["LANG"] && !ENV["LANG"].empty?
|
18
|
+
str += "LC_ALL env: #{ENV["LC_ALL"]}\n" if ENV["LC_ALL"] && !ENV["LC_ALL"].empty?
|
19
|
+
str += "East Asian Ambiguous Width: #{Reline.ambiguous_width.inspect}\n"
|
20
|
+
if RbConfig::CONFIG['host_os'] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
21
|
+
codepage = `chcp`.b.sub(/.*: (\d+)\n/, '\1')
|
22
|
+
str += "Code page: #{codepage}\n"
|
23
|
+
end
|
17
24
|
str
|
18
25
|
end
|
19
26
|
alias_method :to_s, :inspect
|
data/lib/irb/cmd/ls.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "reline"
|
4
|
-
require 'set'
|
5
4
|
require_relative "nop"
|
6
5
|
require_relative "../color"
|
7
6
|
|
@@ -17,32 +16,27 @@ module IRB
|
|
17
16
|
klass = (obj.class == Class || obj.class == Module ? obj : obj.class)
|
18
17
|
|
19
18
|
o.dump("constants", obj.constants) if obj.respond_to?(:constants)
|
20
|
-
|
21
|
-
dump_instance_methods(o, klass)
|
19
|
+
dump_methods(o, klass, obj)
|
22
20
|
o.dump("instance variables", obj.instance_variables)
|
23
21
|
o.dump("class variables", klass.class_variables)
|
24
22
|
o.dump("locals", locals)
|
25
23
|
end
|
26
24
|
|
27
|
-
def
|
28
|
-
|
25
|
+
def dump_methods(o, klass, obj)
|
26
|
+
singleton_class = begin obj.singleton_class; rescue TypeError; nil end
|
27
|
+
maps = class_method_map((singleton_class || klass).ancestors)
|
29
28
|
maps.each do |mod, methods|
|
30
|
-
name = mod ==
|
29
|
+
name = mod == singleton_class ? "#{klass}.methods" : "#{mod}#methods"
|
31
30
|
o.dump(name, methods)
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|
35
|
-
def dump_instance_methods(o, klass)
|
36
|
-
maps = class_method_map(klass.ancestors)
|
37
|
-
maps.each do |mod, methods|
|
38
|
-
o.dump("#{mod}#methods", methods)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
34
|
def class_method_map(classes)
|
43
|
-
dumped =
|
35
|
+
dumped = Array.new
|
44
36
|
classes.reject { |mod| mod >= Object }.map do |mod|
|
45
|
-
methods = mod.public_instance_methods(false).select
|
37
|
+
methods = mod.public_instance_methods(false).select do |m|
|
38
|
+
dumped.push(m) unless dumped.include?(m)
|
39
|
+
end
|
46
40
|
[mod, methods]
|
47
41
|
end.reverse
|
48
42
|
end
|
data/lib/irb/cmd/measure.rb
CHANGED
@@ -9,6 +9,9 @@ module IRB
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def execute(type = nil, arg = nil, &block)
|
12
|
+
# Please check IRB.init_config in lib/irb/init.rb that sets
|
13
|
+
# IRB.conf[:MEASURE_PROC] to register default "measure" methods,
|
14
|
+
# "measure :time" (abbreviated as "measure") and "measure :stackprof".
|
12
15
|
case type
|
13
16
|
when :off
|
14
17
|
IRB.conf[:MEASURE] = nil
|
data/lib/irb/cmd/show_source.rb
CHANGED
@@ -59,11 +59,18 @@ module IRB
|
|
59
59
|
def find_end(file, first_line)
|
60
60
|
return first_line unless File.exist?(file)
|
61
61
|
lex = RubyLex.new
|
62
|
-
|
63
|
-
|
64
|
-
|
62
|
+
lines = File.read(file).lines[(first_line - 1)..-1]
|
63
|
+
tokens = RubyLex.ripper_lex_without_warning(lines.join)
|
64
|
+
prev_tokens = []
|
65
|
+
|
66
|
+
# chunk with line number
|
67
|
+
tokens.chunk { |tok| tok.pos[0] }.each do |lnum, chunk|
|
68
|
+
code = lines[0..lnum].join
|
69
|
+
prev_tokens.concat chunk
|
70
|
+
continue = lex.process_continue(prev_tokens)
|
71
|
+
code_block_open = lex.check_code_block(code, prev_tokens)
|
65
72
|
if !continue && !code_block_open
|
66
|
-
return first_line +
|
73
|
+
return first_line + lnum
|
67
74
|
end
|
68
75
|
end
|
69
76
|
first_line
|
data/lib/irb/completion.rb
CHANGED
@@ -38,16 +38,48 @@ module IRB
|
|
38
38
|
|
39
39
|
BASIC_WORD_BREAK_CHARACTERS = " \t\n`><=;|&{("
|
40
40
|
|
41
|
-
def self.
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
41
|
+
def self.absolute_path?(p) # TODO Remove this method after 2.6 EOL.
|
42
|
+
if File.respond_to?(:absolute_path?)
|
43
|
+
File.absolute_path?(p)
|
44
|
+
else
|
45
|
+
if File.absolute_path(p) == p
|
46
|
+
true
|
47
|
+
else
|
48
|
+
false
|
47
49
|
end
|
48
|
-
|
49
|
-
|
50
|
-
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.retrieve_gem_and_system_load_path
|
54
|
+
gem_paths = Gem::Specification.latest_specs(true).map { |s|
|
55
|
+
s.require_paths.map { |p|
|
56
|
+
if absolute_path?(p)
|
57
|
+
p
|
58
|
+
else
|
59
|
+
File.join(s.full_gem_path, p)
|
60
|
+
end
|
61
|
+
}
|
62
|
+
}.flatten if defined?(Gem::Specification)
|
63
|
+
(gem_paths.to_a | $LOAD_PATH).sort
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.retrieve_files_to_require_from_load_path
|
67
|
+
@@files_from_load_path ||=
|
68
|
+
(
|
69
|
+
shortest = []
|
70
|
+
rest = retrieve_gem_and_system_load_path.each_with_object([]) { |path, result|
|
71
|
+
begin
|
72
|
+
names = Dir.glob("**/*.{rb,#{RbConfig::CONFIG['DLEXT']}}", base: path)
|
73
|
+
rescue Errno::ENOENT
|
74
|
+
nil
|
75
|
+
end
|
76
|
+
next if names.empty?
|
77
|
+
names.map! { |n| n.sub(/\.(rb|#{RbConfig::CONFIG['DLEXT']})\z/, '') }.sort!
|
78
|
+
shortest << names.shift
|
79
|
+
result.concat(names)
|
80
|
+
}
|
81
|
+
shortest.sort! | rest
|
82
|
+
)
|
51
83
|
end
|
52
84
|
|
53
85
|
def self.retrieve_files_to_require_relative_from_current_dir
|
@@ -160,12 +192,12 @@ module IRB
|
|
160
192
|
sym = $1
|
161
193
|
candidates = Symbol.all_symbols.collect do |s|
|
162
194
|
":" + s.id2name.encode(Encoding.default_external)
|
163
|
-
rescue
|
195
|
+
rescue EncodingError
|
164
196
|
# ignore
|
165
197
|
end
|
166
198
|
candidates.grep(/^#{Regexp.quote(sym)}/)
|
167
199
|
|
168
|
-
when /^::([A-Z][^:\.\(]*)$/
|
200
|
+
when /^::([A-Z][^:\.\(\)]*)$/
|
169
201
|
# Absolute Constant or class methods
|
170
202
|
receiver = $1
|
171
203
|
candidates = Object.constants.collect{|m| m.to_s}
|
@@ -258,7 +290,7 @@ module IRB
|
|
258
290
|
all_gvars.grep(Regexp.new(Regexp.quote(gvar)))
|
259
291
|
end
|
260
292
|
|
261
|
-
when /^([
|
293
|
+
when /^([^.:"].*)(\.|::)([^.]*)$/
|
262
294
|
# variable.func or func.func
|
263
295
|
receiver = $1
|
264
296
|
sep = $2
|
@@ -296,7 +328,8 @@ module IRB
|
|
296
328
|
candidates.uniq!
|
297
329
|
end
|
298
330
|
if doc_namespace
|
299
|
-
|
331
|
+
rec_class = rec.is_a?(Module) ? rec : rec.class
|
332
|
+
"#{rec_class.name}#{sep}#{candidates.find{ |i| i == message }}"
|
300
333
|
else
|
301
334
|
select_message(receiver, message, candidates, sep)
|
302
335
|
end
|
@@ -315,12 +348,19 @@ module IRB
|
|
315
348
|
end
|
316
349
|
|
317
350
|
else
|
318
|
-
candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
|
319
|
-
candidates |= ReservedWords
|
320
|
-
|
321
351
|
if doc_namespace
|
322
|
-
|
352
|
+
vars = eval("local_variables | instance_variables", bind).collect{|m| m.to_s}
|
353
|
+
perfect_match_var = vars.find{|m| m.to_s == input}
|
354
|
+
if perfect_match_var
|
355
|
+
eval("#{perfect_match_var}.class.name", bind)
|
356
|
+
else
|
357
|
+
candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
|
358
|
+
candidates |= ReservedWords
|
359
|
+
candidates.find{ |i| i == input }
|
360
|
+
end
|
323
361
|
else
|
362
|
+
candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
|
363
|
+
candidates |= ReservedWords
|
324
364
|
candidates.grep(/^#{Regexp.quote(input)}/)
|
325
365
|
end
|
326
366
|
end
|
data/lib/irb/context.rb
CHANGED
@@ -54,6 +54,7 @@ module IRB
|
|
54
54
|
@use_multiline = nil
|
55
55
|
end
|
56
56
|
@use_colorize = IRB.conf[:USE_COLORIZE]
|
57
|
+
@use_autocomplete = IRB.conf[:USE_AUTOCOMPLETE]
|
57
58
|
@verbose = IRB.conf[:VERBOSE]
|
58
59
|
@io = nil
|
59
60
|
|
@@ -124,6 +125,8 @@ module IRB
|
|
124
125
|
end
|
125
126
|
self.save_history = IRB.conf[:SAVE_HISTORY] if IRB.conf[:SAVE_HISTORY]
|
126
127
|
|
128
|
+
@extra_doc_dirs = IRB.conf[:EXTRA_DOC_DIRS]
|
129
|
+
|
127
130
|
@echo = IRB.conf[:ECHO]
|
128
131
|
if @echo.nil?
|
129
132
|
@echo = true
|
@@ -147,18 +150,18 @@ module IRB
|
|
147
150
|
|
148
151
|
# The toplevel workspace, see #home_workspace
|
149
152
|
attr_reader :workspace_home
|
150
|
-
# WorkSpace in the current context
|
153
|
+
# WorkSpace in the current context.
|
151
154
|
attr_accessor :workspace
|
152
|
-
# The current thread in this context
|
155
|
+
# The current thread in this context.
|
153
156
|
attr_reader :thread
|
154
|
-
# The current input method
|
157
|
+
# The current input method.
|
155
158
|
#
|
156
159
|
# Can be either StdioInputMethod, ReadlineInputMethod,
|
157
160
|
# ReidlineInputMethod, FileInputMethod or other specified when the
|
158
161
|
# context is created. See ::new for more # information on +input_method+.
|
159
162
|
attr_accessor :io
|
160
163
|
|
161
|
-
# Current irb session
|
164
|
+
# Current irb session.
|
162
165
|
attr_accessor :irb
|
163
166
|
# A copy of the default <code>IRB.conf[:AP_NAME]</code>
|
164
167
|
attr_accessor :ap_name
|
@@ -185,20 +188,22 @@ module IRB
|
|
185
188
|
#
|
186
189
|
# A copy of the default <code>IRB.conf[:USE_COLORIZE]</code>
|
187
190
|
attr_reader :use_colorize
|
191
|
+
# A copy of the default <code>IRB.conf[:USE_AUTOCOMPLETE]</code>
|
192
|
+
attr_reader :use_autocomplete
|
188
193
|
# A copy of the default <code>IRB.conf[:INSPECT_MODE]</code>
|
189
194
|
attr_reader :inspect_mode
|
190
195
|
|
191
196
|
# A copy of the default <code>IRB.conf[:PROMPT_MODE]</code>
|
192
197
|
attr_reader :prompt_mode
|
193
|
-
# Standard IRB prompt
|
198
|
+
# Standard IRB prompt.
|
194
199
|
#
|
195
200
|
# See IRB@Customizing+the+IRB+Prompt for more information.
|
196
201
|
attr_accessor :prompt_i
|
197
|
-
# IRB prompt for continuated strings
|
202
|
+
# IRB prompt for continuated strings.
|
198
203
|
#
|
199
204
|
# See IRB@Customizing+the+IRB+Prompt for more information.
|
200
205
|
attr_accessor :prompt_s
|
201
|
-
# IRB prompt for continuated statement (e.g. immediately after an +if+)
|
206
|
+
# IRB prompt for continuated statement. (e.g. immediately after an +if+)
|
202
207
|
#
|
203
208
|
# See IRB@Customizing+the+IRB+Prompt for more information.
|
204
209
|
attr_accessor :prompt_c
|
@@ -238,6 +243,9 @@ module IRB
|
|
238
243
|
#
|
239
244
|
# If set to +false+, <code>^D</code> will quit irb.
|
240
245
|
attr_accessor :ignore_eof
|
246
|
+
# Specify the installation locations of the ri file to be displayed in the
|
247
|
+
# document dialog.
|
248
|
+
attr_accessor :extra_doc_dirs
|
241
249
|
# Whether to echo the return value to output or not.
|
242
250
|
#
|
243
251
|
# Uses <code>IRB.conf[:ECHO]</code> if available, or defaults to +true+.
|
@@ -249,7 +257,7 @@ module IRB
|
|
249
257
|
# puts "omg"
|
250
258
|
# # omg
|
251
259
|
attr_accessor :echo
|
252
|
-
# Whether to echo for assignment expressions
|
260
|
+
# Whether to echo for assignment expressions.
|
253
261
|
#
|
254
262
|
# If set to +false+, the value of assignment will not be shown.
|
255
263
|
#
|
@@ -261,13 +269,28 @@ module IRB
|
|
261
269
|
#
|
262
270
|
# a = "omg"
|
263
271
|
# #=> omg
|
272
|
+
#
|
264
273
|
# a = "omg" * 10
|
265
274
|
# #=> omgomgomgomgomgomgomg...
|
275
|
+
#
|
266
276
|
# IRB.CurrentContext.echo_on_assignment = false
|
267
277
|
# a = "omg"
|
278
|
+
#
|
268
279
|
# IRB.CurrentContext.echo_on_assignment = true
|
269
|
-
# a = "omg"
|
280
|
+
# a = "omg" * 10
|
270
281
|
# #=> omgomgomgomgomgomgomgomgomgomg
|
282
|
+
#
|
283
|
+
# To set the behaviour of showing on assignment in irb:
|
284
|
+
#
|
285
|
+
# IRB.conf[:ECHO_ON_ASSIGNMENT] = :truncate or true or false
|
286
|
+
#
|
287
|
+
# or
|
288
|
+
#
|
289
|
+
# irb_context.echo_on_assignment = :truncate or true or false
|
290
|
+
#
|
291
|
+
# or
|
292
|
+
#
|
293
|
+
# IRB.CurrentContext.echo_on_assignment = :truncate or true or false
|
271
294
|
attr_accessor :echo_on_assignment
|
272
295
|
# Whether a newline is put before multiline output.
|
273
296
|
#
|
@@ -311,6 +334,8 @@ module IRB
|
|
311
334
|
alias use_readline? use_singleline
|
312
335
|
# Alias for #use_colorize
|
313
336
|
alias use_colorize? use_colorize
|
337
|
+
# Alias for #use_autocomplete
|
338
|
+
alias use_autocomplete? use_autocomplete
|
314
339
|
# Alias for #rc
|
315
340
|
alias rc? rc
|
316
341
|
alias ignore_sigint? ignore_sigint
|
@@ -366,6 +391,7 @@ module IRB
|
|
366
391
|
@prompt_c = pconf[:PROMPT_C]
|
367
392
|
@prompt_n = pconf[:PROMPT_N]
|
368
393
|
@return_format = pconf[:RETURN]
|
394
|
+
@return_format = "%s\n" if @return_format == nil
|
369
395
|
if ai = pconf.include?(:AUTO_INDENT)
|
370
396
|
@auto_indent_mode = ai
|
371
397
|
else
|
@@ -458,6 +484,8 @@ module IRB
|
|
458
484
|
# Exits the current session, see IRB.irb_exit
|
459
485
|
def exit(ret = 0)
|
460
486
|
IRB.irb_exit(@irb, ret)
|
487
|
+
rescue UncaughtThrowError
|
488
|
+
super
|
461
489
|
end
|
462
490
|
|
463
491
|
NOPRINTING_IVARS = ["@last_value"] # :nodoc:
|
data/lib/irb/init.rb
CHANGED
@@ -45,11 +45,13 @@ module IRB # :nodoc:
|
|
45
45
|
|
46
46
|
@CONF[:USE_SINGLELINE] = false unless defined?(ReadlineInputMethod)
|
47
47
|
@CONF[:USE_COLORIZE] = !ENV['NO_COLOR']
|
48
|
+
@CONF[:USE_AUTOCOMPLETE] = true
|
48
49
|
@CONF[:INSPECT_MODE] = true
|
49
50
|
@CONF[:USE_TRACER] = false
|
50
51
|
@CONF[:USE_LOADER] = false
|
51
52
|
@CONF[:IGNORE_SIGINT] = true
|
52
53
|
@CONF[:IGNORE_EOF] = false
|
54
|
+
@CONF[:EXTRA_DOC_DIRS] = []
|
53
55
|
@CONF[:ECHO] = nil
|
54
56
|
@CONF[:ECHO_ON_ASSIGNMENT] = nil
|
55
57
|
@CONF[:VERBOSE] = nil
|
@@ -256,6 +258,9 @@ module IRB # :nodoc:
|
|
256
258
|
@CONF[:USE_MULTILINE] = true
|
257
259
|
when "--nomultiline", "--noreidline"
|
258
260
|
@CONF[:USE_MULTILINE] = false
|
261
|
+
when /^--extra-doc-dir(?:=(.+))?/
|
262
|
+
opt = $1 || argv.shift
|
263
|
+
@CONF[:EXTRA_DOC_DIRS] << opt
|
259
264
|
when "--echo"
|
260
265
|
@CONF[:ECHO] = true
|
261
266
|
when "--noecho"
|
@@ -274,6 +279,10 @@ module IRB # :nodoc:
|
|
274
279
|
@CONF[:USE_COLORIZE] = true
|
275
280
|
when "--nocolorize"
|
276
281
|
@CONF[:USE_COLORIZE] = false
|
282
|
+
when "--autocomplete"
|
283
|
+
@CONF[:USE_AUTOCOMPLETE] = true
|
284
|
+
when "--noautocomplete"
|
285
|
+
@CONF[:USE_AUTOCOMPLETE] = false
|
277
286
|
when /^--prompt-mode(?:=(.+))?/, /^--prompt(?:=(.+))?/
|
278
287
|
opt = $1 || argv.shift
|
279
288
|
prompt_mode = opt.upcase.tr("-", "_").intern
|