Skip to content

Commit d76c482

Browse files
authored
Fix completion with multiline (#513)
1 parent 51b0297 commit d76c482

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

lib/reline/line_editor.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1371,8 +1371,8 @@ def editing_mode
13711371
@completion_state = CompletionState::MENU
13721372
end
13731373
if not just_show_list and target < completed
1374-
@line = preposing + completed + completion_append_character.to_s + postposing
1375-
line_to_pointer = preposing + completed + completion_append_character.to_s
1374+
@line = (preposing + completed + completion_append_character.to_s + postposing).split("\n")[@line_index] || String.new(encoding: @encoding)
1375+
line_to_pointer = (preposing + completed + completion_append_character.to_s).split("\n").last || String.new(encoding: @encoding)
13761376
@cursor_max = calculate_width(@line)
13771377
@cursor = calculate_width(line_to_pointer)
13781378
@byte_pointer = line_to_pointer.bytesize

test/reline/yamatanooroti/test_rendering.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -839,6 +839,18 @@ def test_em_set_mark_and_em_exchange_mark
839839
EOC
840840
end
841841

842+
def test_multiline_completion
843+
start_terminal(10, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --complete}, startup_message: 'Multiline REPL.')
844+
write("def hoge\n St\n St\C-p\t")
845+
close
846+
assert_screen(<<~'EOC')
847+
Multiline REPL.
848+
prompt> def hoge
849+
prompt> String
850+
prompt> St
851+
EOC
852+
end
853+
842854
def test_completion_journey_2nd_line
843855
write_inputrc <<~LINES
844856
set editing-mode vi

0 commit comments

Comments
 (0)