[ruby/irb] Allow disabling autocompletion with

`IRB_USE_AUTOCOMPLETE=false`
(https://github.com/ruby/irb/pull/469)

* Allow using IRB_USE_AUTOCOMPLETE=false to disable autocompletion

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 #445), I
think we should allow disabling it with a simple `IRB_USE_AUTOCOMPLETE=false`.

* Mention some env var configs in the README
This commit is contained in:
Stan Lo 2022-12-06 00:53:28 +00:00 коммит произвёл git
Родитель e31d645da5
Коммит 9aa18f61f2
3 изменённых файлов: 34 добавлений и 1 удалений

Просмотреть файл

@ -54,6 +54,15 @@ see [Building Ruby](doc/contributing/building_ruby.md)
https://www.ruby-lang.org/
## Configuration
### Environment Variables
- `NO_COLOR`: Assigning a value to it disables IRB's colorization.
- `IRB_USE_AUTOCOMPLETE`: Setting it to `false` disables IRB's autocompletion.
- `EDITOR`: Its value would be used to open files by the `edit` command.
- `IRBRC`: The file specified would be evaluated as IRB's rc-file.
## Documentation
- [English](https://docs.ruby-lang.org/en/master/index.html)

Просмотреть файл

@ -45,7 +45,7 @@ module IRB # :nodoc:
@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

Просмотреть файл

@ -96,6 +96,30 @@ module TestIRB
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)