[ruby/reline] Fix completion with multiline
(https://github.com/ruby/reline/pull/513) https://github.com/ruby/reline/commit/d76c482c5f
This commit is contained in:
parent
4782bb352e
commit
6f81e38d1d
@ -1371,8 +1371,8 @@ class Reline::LineEditor
|
|||||||
@completion_state = CompletionState::MENU
|
@completion_state = CompletionState::MENU
|
||||||
end
|
end
|
||||||
if not just_show_list and target < completed
|
if not just_show_list and target < completed
|
||||||
@line = preposing + completed + completion_append_character.to_s + postposing
|
@line = (preposing + completed + completion_append_character.to_s + postposing).split("\n")[@line_index] || String.new(encoding: @encoding)
|
||||||
line_to_pointer = preposing + completed + completion_append_character.to_s
|
line_to_pointer = (preposing + completed + completion_append_character.to_s).split("\n").last || String.new(encoding: @encoding)
|
||||||
@cursor_max = calculate_width(@line)
|
@cursor_max = calculate_width(@line)
|
||||||
@cursor = calculate_width(line_to_pointer)
|
@cursor = calculate_width(line_to_pointer)
|
||||||
@byte_pointer = line_to_pointer.bytesize
|
@byte_pointer = line_to_pointer.bytesize
|
||||||
|
@ -839,6 +839,18 @@ begin
|
|||||||
EOC
|
EOC
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_multiline_completion
|
||||||
|
start_terminal(10, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --complete}, startup_message: 'Multiline REPL.')
|
||||||
|
write("def hoge\n St\n St\C-p\t")
|
||||||
|
close
|
||||||
|
assert_screen(<<~'EOC')
|
||||||
|
Multiline REPL.
|
||||||
|
prompt> def hoge
|
||||||
|
prompt> String
|
||||||
|
prompt> St
|
||||||
|
EOC
|
||||||
|
end
|
||||||
|
|
||||||
def test_completion_journey_2nd_line
|
def test_completion_journey_2nd_line
|
||||||
write_inputrc <<~LINES
|
write_inputrc <<~LINES
|
||||||
set editing-mode vi
|
set editing-mode vi
|
||||||
|
Loading…
x
Reference in New Issue
Block a user