summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortomoya ishida <[email protected]>2023-11-09 22:15:22 +0900
committergit <[email protected]>2023-11-09 13:15:26 +0000
commitc4efd170616c3ee82a07fda04f878120f1a97e98 (patch)
treecf900363fc04292a2b31425a0ffa68ed50647f65
parentae1fad4cd7d88b464aaebad3d5769d27ba675183 (diff)
[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
-rw-r--r--lib/irb/init.rb4
-rw-r--r--lib/irb/lc/help-message3
-rw-r--r--lib/irb/lc/ja/help-message3
-rw-r--r--man/irb.17
-rw-r--r--test/irb/test_init.rb16
5 files changed, 33 insertions, 0 deletions
diff --git a/lib/irb/init.rb b/lib/irb/init.rb
index e9111974f0..470903b451 100644
--- a/lib/irb/init.rb
+++ b/lib/irb/init.rb
@@ -330,6 +330,10 @@ module IRB # :nodoc:
@CONF[:USE_AUTOCOMPLETE] = true
when "--noautocomplete"
@CONF[:USE_AUTOCOMPLETE] = false
+ when "--regexp-completor"
+ @CONF[:COMPLETOR] = :regexp
+ when "--type-completor"
+ @CONF[:COMPLETOR] = :type
when /^--prompt-mode(?:=(.+))?/, /^--prompt(?:=(.+))?/
opt = $1 || argv.shift
prompt_mode = opt.upcase.tr("-", "_").intern
diff --git a/lib/irb/lc/help-message b/lib/irb/lc/help-message
index 7e66100be9..c7846b755d 100644
--- a/lib/irb/lc/help-message
+++ b/lib/irb/lc/help-message
@@ -30,6 +30,9 @@ Usage: irb.rb [options] [programfile] [arguments]
--nocolorize Don't use color-highlighting.
--autocomplete Use auto-completion (default).
--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
Set prompt mode. Pre-defined prompt modes are:
'default', 'classic', 'simple', 'inf-ruby', 'xmp', 'null'.
diff --git a/lib/irb/lc/ja/help-message b/lib/irb/lc/ja/help-message
index 1c15d331ea..cec339cf2f 100644
--- a/lib/irb/lc/ja/help-message
+++ b/lib/irb/lc/ja/help-message
@@ -21,6 +21,9 @@ Usage: irb.rb [options] [programfile] [arguments]
--nocolorize 色付けを利用しない.
--autocomplete オートコンプリートを利用する.
--noautocomplete オートコンプリートを利用しない.
+ --regexp-completor
+ 補完に正規表現を利用する.
+ --type-completor 補完に型情報を利用する.
--prompt prompt-mode/--prompt-mode prompt-mode
プロンプトモードを切替えます. 現在定義されているプ
ロンプトモードは, default, simple, xmp, inf-rubyが
diff --git a/man/irb.1 b/man/irb.1
index c589c99c78..93ef9b8f66 100644
--- a/man/irb.1
+++ b/man/irb.1
@@ -140,6 +140,13 @@ Use autocompletion.
Don't use autocompletion.
.Pp
.Pp
+.It Fl -regexp-completor
+Use regexp based completion.
+.Pp
+.It Fl -type-completor
+Use type based completion.
+.Pp
+.Pp
.It Fl -verbose
Show details.
.Pp
diff --git a/test/irb/test_init.rb b/test/irb/test_init.rb
index 9f3f2a1098..e330cc5e84 100644
--- a/test/irb/test_init.rb
+++ b/test/irb/test_init.rb
@@ -120,6 +120,22 @@ module TestIRB
IRB.conf[:USE_AUTOCOMPLETE] = orig_use_autocomplete_conf
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
argv = %w[--noscript -- -f]
IRB.setup(eval("__FILE__"), argv: argv)