[ruby/irb] Add command line option to select which completor to use

(https://github.com/ruby/irb/pull/754)

* Add command line option to select which completor to use

* Add test for completor argv

https://github.com/ruby/irb/commit/1dec2708c9
This commit is contained in:
tomoya ishida 2023-11-09 22:15:22 +09:00 коммит произвёл git
Родитель ae1fad4cd7
Коммит c4efd17061
5 изменённых файлов: 33 добавлений и 0 удалений

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

@ -330,6 +330,10 @@ module IRB # :nodoc:
@CONF[:USE_AUTOCOMPLETE] = true @CONF[:USE_AUTOCOMPLETE] = true
when "--noautocomplete" when "--noautocomplete"
@CONF[:USE_AUTOCOMPLETE] = false @CONF[:USE_AUTOCOMPLETE] = false
when "--regexp-completor"
@CONF[:COMPLETOR] = :regexp
when "--type-completor"
@CONF[:COMPLETOR] = :type
when /^--prompt-mode(?:=(.+))?/, /^--prompt(?:=(.+))?/ when /^--prompt-mode(?:=(.+))?/, /^--prompt(?:=(.+))?/
opt = $1 || argv.shift opt = $1 || argv.shift
prompt_mode = opt.upcase.tr("-", "_").intern prompt_mode = opt.upcase.tr("-", "_").intern

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

@ -30,6 +30,9 @@ Usage: irb.rb [options] [programfile] [arguments]
--nocolorize Don't use color-highlighting. --nocolorize Don't use color-highlighting.
--autocomplete Use auto-completion (default). --autocomplete Use auto-completion (default).
--noautocomplete Don't use auto-completion. --noautocomplete Don't use auto-completion.
--regexp-completor
Use regexp based completion (default).
--type-completor Use type based completion.
--prompt prompt-mode, --prompt-mode prompt-mode --prompt prompt-mode, --prompt-mode prompt-mode
Set prompt mode. Pre-defined prompt modes are: Set prompt mode. Pre-defined prompt modes are:
'default', 'classic', 'simple', 'inf-ruby', 'xmp', 'null'. 'default', 'classic', 'simple', 'inf-ruby', 'xmp', 'null'.

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

@ -21,6 +21,9 @@ Usage: irb.rb [options] [programfile] [arguments]
--nocolorize 色付けを利用しない. --nocolorize 色付けを利用しない.
--autocomplete オートコンプリートを利用する. --autocomplete オートコンプリートを利用する.
--noautocomplete オートコンプリートを利用しない. --noautocomplete オートコンプリートを利用しない.
--regexp-completor
補完に正規表現を利用する.
--type-completor 補完に型情報を利用する.
--prompt prompt-mode/--prompt-mode prompt-mode --prompt prompt-mode/--prompt-mode prompt-mode
プロンプトモードを切替えます. 現在定義されているプ プロンプトモードを切替えます. 現在定義されているプ
ロンプトモードは, default, simple, xmp, inf-rubyが ロンプトモードは, default, simple, xmp, inf-rubyが

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

@ -140,6 +140,13 @@ Use autocompletion.
Don't use autocompletion. Don't use autocompletion.
.Pp .Pp
.Pp .Pp
.It Fl -regexp-completor
Use regexp based completion.
.Pp
.It Fl -type-completor
Use type based completion.
.Pp
.Pp
.It Fl -verbose .It Fl -verbose
Show details. Show details.
.Pp .Pp

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

@ -120,6 +120,22 @@ module TestIRB
IRB.conf[:USE_AUTOCOMPLETE] = orig_use_autocomplete_conf IRB.conf[:USE_AUTOCOMPLETE] = orig_use_autocomplete_conf
end end
def test_completor_setup_with_argv
orig_completor_conf = IRB.conf[:COMPLETOR]
# Default is :regexp
IRB.setup(__FILE__, argv: [])
assert_equal :regexp, IRB.conf[:COMPLETOR]
IRB.setup(__FILE__, argv: ['--type-completor'])
assert_equal :type, IRB.conf[:COMPLETOR]
IRB.setup(__FILE__, argv: ['--regexp-completor'])
assert_equal :regexp, IRB.conf[:COMPLETOR]
ensure
IRB.conf[:COMPLETOR] = orig_completor_conf
end
def test_noscript def test_noscript
argv = %w[--noscript -- -f] argv = %w[--noscript -- -f]
IRB.setup(eval("__FILE__"), argv: argv) IRB.setup(eval("__FILE__"), argv: argv)