diff --git a/lib/irb/completion.rb b/lib/irb/completion.rb index af3b69eb2..7b9c1bbbd 100644 --- a/lib/irb/completion.rb +++ b/lib/irb/completion.rb @@ -406,7 +406,13 @@ def retrieve_completion_data(input, bind:, doc_namespace:) 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 0625c9697..348cd4b6d 100644 --- a/test/irb/test_completion.rb +++ b/test/irb/test_completion.rb @@ -204,6 +204,13 @@ def test_complete_constants 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 a53dc83ac..f698466e4 100644 --- a/test/irb/yamatanooroti/test_rendering.rb +++ b/test/irb/yamatanooroti/test_rendering.rb @@ -232,7 +232,8 @@ def test_autocomplete_with_showdoc_in_gaps_on_narrow_screen_right 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 @@ def test_autocomplete_with_showdoc_in_gaps_on_narrow_screen_left 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