Skip to content

Commit

Permalink
Allow using IRB_USE_AUTOCOMPLETE=false to disable autocompletion
Browse files Browse the repository at this point in the history
Currently, the only 2 ways to disable autocompletion are:

1. Create `.irbrc` and set `IRB.conf[:USE_AUTOCOMPLETE] = false`
2. Add the `--noautocomplete` flag when using the `irb` executable

Both of them are less convenient than setting a env var and are
lesser known to devs.

And given the number of problems the autocompletion has (see ruby#445), I
think we should allow disabling it with a simple `IRB_USE_AUTOCOMPLETE=false`.
  • Loading branch information
st0012 committed Dec 6, 2022
1 parent 8e6f90b commit 99bd25d
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/irb/init.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def IRB.init_config(ap_path)

@CONF[:USE_SINGLELINE] = false unless defined?(ReadlineInputMethod)
@CONF[:USE_COLORIZE] = (nc = ENV['NO_COLOR']).nil? || nc.empty?
@CONF[:USE_AUTOCOMPLETE] = true
@CONF[:USE_AUTOCOMPLETE] = !(ENV.fetch("IRB_USE_AUTOCOMPLETE", "true") == "false")
@CONF[:INSPECT_MODE] = true
@CONF[:USE_TRACER] = false
@CONF[:USE_LOADER] = false
Expand Down
24 changes: 24 additions & 0 deletions test/irb/test_init.rb
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,30 @@ def test_no_color_environment_variable
IRB.conf[:USE_COLORIZE] = orig_use_colorize
end

def test_use_autocomplete_environment_variable
orig_use_autocomplete_env = ENV['IRB_USE_AUTOCOMPLETE']
orig_use_autocomplete_conf = IRB.conf[:USE_AUTOCOMPLETE]

ENV['IRB_USE_AUTOCOMPLETE'] = nil
IRB.setup(__FILE__)
assert IRB.conf[:USE_AUTOCOMPLETE]

ENV['IRB_USE_AUTOCOMPLETE'] = ''
IRB.setup(__FILE__)
assert IRB.conf[:USE_AUTOCOMPLETE]

ENV['IRB_USE_AUTOCOMPLETE'] = 'false'
IRB.setup(__FILE__)
refute IRB.conf[:USE_AUTOCOMPLETE]

ENV['IRB_USE_AUTOCOMPLETE'] = 'true'
IRB.setup(__FILE__)
assert IRB.conf[:USE_AUTOCOMPLETE]
ensure
ENV["IRB_USE_AUTOCOMPLETE"] = orig_use_autocomplete_env
IRB.conf[:USE_AUTOCOMPLETE] = orig_use_autocomplete_conf
end

def test_noscript
argv = %w[--noscript -- -f]
IRB.setup(eval("__FILE__"), argv: argv)
Expand Down

0 comments on commit 99bd25d

Please sign in to comment.