diff options
| author | Stan Lo <stan001212@gmail.com> | 2024-01-03 13:47:47 +0000 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2024-01-03 13:47:51 +0000 |
| commit | 66e0d92de571c357ebc50f11edffa3b65271e55c (patch) | |
| tree | d42945dcd121e67b451d5b42e408e0a5cfbddf3b | |
| parent | 73fb9c35efd64f0935bce52b18a38c2a500a972f (diff) | |
[ruby/irb] Avoid completing empty input
(https://github.com/ruby/irb/pull/832)
The candidate list for empty input is all methods + all variables +
all constants + all keywords. It's a long list that is not useful.
https://github.com/ruby/irb/commit/812dc2df7b
| -rw-r--r-- | lib/irb/completion.rb | 8 | ||||
| -rw-r--r-- | test/irb/test_completion.rb | 7 | ||||
| -rw-r--r-- | test/irb/yamatanooroti/test_rendering.rb | 6 |
3 files changed, 18 insertions, 3 deletions
diff --git a/lib/irb/completion.rb b/lib/irb/completion.rb index af3b69eb27..7b9c1bbbdd 100644 --- a/lib/irb/completion.rb +++ b/lib/irb/completion.rb @@ -406,7 +406,13 @@ module IRB else select_message(receiver, message, candidates.sort) end - + when /^\s*$/ + # empty input + if doc_namespace + nil + else + [] + end else if doc_namespace vars = (bind.local_variables | bind.eval_instance_variables).collect{|m| m.to_s} diff --git a/test/irb/test_completion.rb b/test/irb/test_completion.rb index 0625c96976..348cd4b6dc 100644 --- a/test/irb/test_completion.rb +++ b/test/irb/test_completion.rb @@ -204,6 +204,13 @@ module TestIRB end end + def test_not_completing_empty_string + assert_equal([], completion_candidates("", binding)) + assert_equal([], completion_candidates(" ", binding)) + assert_equal([], completion_candidates("\t", binding)) + assert_equal(nil, doc_namespace("", binding)) + end + def test_complete_symbol symbols = %w"UTF-16LE UTF-7".map do |enc| "K".force_encoding(enc).to_sym diff --git a/test/irb/yamatanooroti/test_rendering.rb b/test/irb/yamatanooroti/test_rendering.rb index a53dc83ac7..f698466e49 100644 --- a/test/irb/yamatanooroti/test_rendering.rb +++ b/test/irb/yamatanooroti/test_rendering.rb @@ -232,7 +232,8 @@ class IRB::RenderingTest < Yamatanooroti::TestCase puts 'start IRB' LINES start_terminal(4, 19, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB') - write("IR\C-i") + write("IR") + write("\C-i") close # This is because on macOS we display different shortcut for displaying the full doc @@ -268,7 +269,8 @@ class IRB::RenderingTest < Yamatanooroti::TestCase puts 'start IRB' LINES start_terminal(4, 12, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB') - write("IR\C-i") + write("IR") + write("\C-i") close assert_screen(<<~EOC) start IRB |
