diff --git a/doc/irb/irb.rd.ja b/doc/irb/irb.rd.ja
index dd8333b59..92824a514 100644
--- a/doc/irb/irb.rd.ja
+++ b/doc/irb/irb.rd.ja
@@ -56,6 +56,8 @@ irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本
用しようとする.
--colorize 色付けを利用する.
--nocolorize 色付けを利用しない.
+ --autocomplete オートコンプリートを利用する.
+ --noautocomplete オートコンプリートを利用しない.
--prompt prompt-mode
--prompt-mode prompt-mode
プロンプトモードを切替えます. 現在定義されているプ
diff --git a/irb.gemspec b/irb.gemspec
index 881839532..f11d273f5 100644
--- a/irb.gemspec
+++ b/irb.gemspec
@@ -36,5 +36,5 @@ Gem::Specification.new do |spec|
spec.required_ruby_version = Gem::Requirement.new(">= 2.5")
- spec.add_dependency "reline", ">= 0.2.8.pre.1"
+ spec.add_dependency "reline", ">= 0.2.8.pre.3"
end
diff --git a/lib/irb.rb b/lib/irb.rb
index 661c55048..c22e6db03 100644
--- a/lib/irb.rb
+++ b/lib/irb.rb
@@ -72,6 +72,8 @@
# --nosingleline Don't use singleline editor module
# --colorize Use colorization
# --nocolorize Don't use colorization
+# --autocomplete Use autocompletion
+# --noautocomplete Don't use autocompletion
# --prompt prompt-mode/--prompt-mode prompt-mode
# Switch prompt mode. Pre-defined prompt modes are
# `default', `simple', `xmp' and `inf-ruby'
@@ -114,6 +116,7 @@
# IRB.conf[:USE_SINGLELINE] = nil
# IRB.conf[:USE_COLORIZE] = true
# IRB.conf[:USE_TRACER] = false
+# IRB.conf[:USE_AUTOCOMPLETE] = true
# IRB.conf[:IGNORE_SIGINT] = true
# IRB.conf[:IGNORE_EOF] = false
# IRB.conf[:PROMPT_MODE] = :DEFAULT
diff --git a/lib/irb/context.rb b/lib/irb/context.rb
index 0d358de6f..3827bda43 100644
--- a/lib/irb/context.rb
+++ b/lib/irb/context.rb
@@ -54,6 +54,7 @@ def initialize(irb, workspace = nil, input_method = nil)
@use_multiline = nil
end
@use_colorize = IRB.conf[:USE_COLORIZE]
+ @use_autocomplete = IRB.conf[:USE_AUTOCOMPLETE]
@verbose = IRB.conf[:VERBOSE]
@io = nil
@@ -185,6 +186,8 @@ def main
#
# A copy of the default IRB.conf[:USE_COLORIZE]
attr_reader :use_colorize
+ # A copy of the default IRB.conf[:USE_AUTOCOMPLETE]
+ attr_reader :use_autocomplete
# A copy of the default IRB.conf[:INSPECT_MODE]
attr_reader :inspect_mode
@@ -311,6 +314,8 @@ def main
alias use_readline? use_singleline
# Alias for #use_colorize
alias use_colorize? use_colorize
+ # Alias for #use_autocomplete
+ alias use_autocomplete? use_autocomplete
# Alias for #rc
alias rc? rc
alias ignore_sigint? ignore_sigint
diff --git a/lib/irb/init.rb b/lib/irb/init.rb
index 5923c54a2..3c27b4fff 100644
--- a/lib/irb/init.rb
+++ b/lib/irb/init.rb
@@ -45,6 +45,7 @@ def IRB.init_config(ap_path)
@CONF[:USE_SINGLELINE] = false unless defined?(ReadlineInputMethod)
@CONF[:USE_COLORIZE] = !ENV['NO_COLOR']
+ @CONF[:USE_AUTOCOMPLETE] = true
@CONF[:INSPECT_MODE] = true
@CONF[:USE_TRACER] = false
@CONF[:USE_LOADER] = false
@@ -274,6 +275,10 @@ def IRB.parse_opts(argv: ::ARGV)
@CONF[:USE_COLORIZE] = true
when "--nocolorize"
@CONF[:USE_COLORIZE] = false
+ when "--autocomplete"
+ @CONF[:USE_AUTOCOMPLETE] = true
+ when "--noautocomplete"
+ @CONF[:USE_AUTOCOMPLETE] = false
when /^--prompt-mode(?:=(.+))?/, /^--prompt(?:=(.+))?/
opt = $1 || argv.shift
prompt_mode = opt.upcase.tr("-", "_").intern
diff --git a/lib/irb/input-method.rb b/lib/irb/input-method.rb
index 4d55e4ef3..3dec9d0ce 100644
--- a/lib/irb/input-method.rb
+++ b/lib/irb/input-method.rb
@@ -295,6 +295,10 @@ def initialize
end
end
Reline.dig_perfect_match_proc = IRB::InputCompletor::PerfectMatchedProc
+ Reline.autocompletion = IRB.conf[:USE_AUTOCOMPLETE]
+ if IRB.conf[:USE_AUTOCOMPLETE]
+ Reline.add_dialog_proc(:show_doc, SHOW_DOC_DIALOG, Reline::DEFAULT_DIALOG_CONTEXT)
+ end
end
def check_termination(&block)
@@ -361,7 +365,6 @@ def gets
Reline.output = @stdout
Reline.prompt_proc = @prompt_proc
Reline.auto_indent_proc = @auto_indent_proc if @auto_indent_proc
- Reline.add_dialog_proc(:show_doc, SHOW_DOC_DIALOG, Reline::DEFAULT_DIALOG_CONTEXT)
if l = readmultiline(@prompt, false, &@check_termination_proc)
HISTORY.push(l) if !l.empty?
@line[@line_no += 1] = l + "\n"
diff --git a/lib/irb/lc/help-message b/lib/irb/lc/help-message
index 9c3ea859a..30f49947d 100644
--- a/lib/irb/lc/help-message
+++ b/lib/irb/lc/help-message
@@ -30,6 +30,8 @@ Usage: irb.rb [options] [programfile] [arguments]
--nosingleline Don't use singleline editor module
--colorize Use colorization
--nocolorize Don't use colorization
+ --autocomplete Use autocompletion
+ --noautocomplete Don't use autocompletion
--prompt prompt-mode/--prompt-mode prompt-mode
Switch prompt mode. Pre-defined prompt modes are
`default', `simple', `xmp' and `inf-ruby'
diff --git a/lib/irb/lc/ja/help-message b/lib/irb/lc/ja/help-message
index 9794a8e24..238535afb 100644
--- a/lib/irb/lc/ja/help-message
+++ b/lib/irb/lc/ja/help-message
@@ -29,6 +29,8 @@ Usage: irb.rb [options] [programfile] [arguments]
--nosingleline シングルラインエディタを利用しない.
--colorize 色付けを利用する.
--nocolorize 色付けを利用しない.
+ --autocomplete オートコンプリートを利用する.
+ --noautocomplete オートコンプリートを利用しない.
--prompt prompt-mode/--prompt-mode prompt-mode
プロンプトモードを切替えます. 現在定義されているプ
ロンプトモードは, default, simple, xmp, inf-rubyが
diff --git a/man/irb.1 b/man/irb.1
index f0a720fbd..a7f2ce422 100644
--- a/man/irb.1
+++ b/man/irb.1
@@ -18,6 +18,7 @@
.Op Fl - Ns Oo no Oc Ns singleline
.Op Fl - Ns Oo no Oc Ns echo
.Op Fl - Ns Oo no Oc Ns colorize
+.Op Fl - Ns Oo no Oc Ns autocomplete
.Op Fl - Ns Oo no Oc Ns verbose
.Op Fl -prompt Ar mode
.Op Fl -prompt-mode Ar mode
@@ -118,6 +119,13 @@ Use colorization.
Don't use colorization.
.Pp
.Pp
+.It Fl -autocomplete
+Use autocompletion.
+.Pp
+.It Fl -noautocomplete
+Don't use autocompletion.
+.Pp
+.Pp
.It Fl -verbose
Show details.
.Pp
diff --git a/test/irb/test_context.rb b/test/irb/test_context.rb
index 71e8ad1c0..56878af63 100644
--- a/test/irb/test_context.rb
+++ b/test/irb/test_context.rb
@@ -159,6 +159,7 @@ def test_eval_object_without_inspect_method
def test_default_config
assert_equal(true, @context.use_colorize?)
+ assert_equal(true, @context.use_autocomplete?)
end
def test_assignment_expression
diff --git a/test/irb/yamatanooroti/test_rendering.rb b/test/irb/yamatanooroti/test_rendering.rb
index 8f55b38a9..bacc26b31 100644
--- a/test/irb/yamatanooroti/test_rendering.rb
+++ b/test/irb/yamatanooroti/test_rendering.rb
@@ -29,7 +29,7 @@ def test_launch
write_irbrc <<~'LINES'
puts 'start IRB'
LINES
- start_terminal(25, 80, %W{ruby -I#{@pwd}/lib -I#{@pwd}/../reline/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
+ start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
write(<<~EOC)
'Hello, World!'
EOC
@@ -46,7 +46,7 @@ def test_multiline_paste
write_irbrc <<~'LINES'
puts 'start IRB'
LINES
- start_terminal(25, 80, %W{ruby -I#{@pwd}/lib -I#{@pwd}/../reline/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
+ start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
write(<<~EOC)
class A
def inspect; '#'; end
@@ -85,7 +85,7 @@ def test_evaluate_each_toplevel_statement_by_multiline_paste
write_irbrc <<~'LINES'
puts 'start IRB'
LINES
- start_terminal(40, 80, %W{ruby -I#{@pwd}/lib -I#{@pwd}/../reline/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
+ start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
write(<<~EOC)
class A
def inspect; '#'; end