[ruby/reline] Enter newline if cursor position is middle of input
(https://github.com/ruby/reline/pull/802) * Enter newline if cursor position is middle of input * Add ed_force_submit to allow input confirmation on non-final lines https://github.com/ruby/reline/commit/8ef534e904
This commit is contained in:
parent
31905d9e23
commit
5698f4f2e1
@ -1673,24 +1673,22 @@ class Reline::LineEditor
|
|||||||
finish
|
finish
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if @line_index == (@buffer_of_lines.size - 1)
|
if @line_index == @buffer_of_lines.size - 1 && confirm_multiline_termination
|
||||||
if confirm_multiline_termination
|
|
||||||
finish
|
finish
|
||||||
else
|
else
|
||||||
key_newline(key)
|
key_newline(key)
|
||||||
end
|
end
|
||||||
else
|
|
||||||
# should check confirm_multiline_termination to finish?
|
|
||||||
@line_index = @buffer_of_lines.size - 1
|
|
||||||
@byte_pointer = current_line.bytesize
|
|
||||||
finish
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
finish
|
finish
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private def ed_force_submit(_key)
|
||||||
|
process_insert(force: true)
|
||||||
|
finish
|
||||||
|
end
|
||||||
|
|
||||||
private def em_delete_prev_char(key, arg: 1)
|
private def em_delete_prev_char(key, arg: 1)
|
||||||
arg.times do
|
arg.times do
|
||||||
if @byte_pointer == 0 and @line_index > 0
|
if @byte_pointer == 0 and @line_index > 0
|
||||||
|
@ -813,13 +813,30 @@ begin
|
|||||||
close
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_terminate_in_the_middle_of_lines
|
def test_newline_in_the_middle_of_lines
|
||||||
start_terminal(5, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.')
|
start_terminal(5, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.')
|
||||||
write("def hoge\n 1\n 2\n 3\n 4\nend\n")
|
write("def hoge\n 1\n 2\n 3\n 4\nend\n")
|
||||||
write("\C-p\C-p\C-p\C-e\n")
|
write("\C-p\C-p\C-p\C-e\n")
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
|
prompt> def hoge
|
||||||
|
prompt> 1
|
||||||
|
prompt> 2
|
||||||
prompt> 3
|
prompt> 3
|
||||||
prompt> 4
|
prompt>
|
||||||
|
EOC
|
||||||
|
close
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_ed_force_submit_in_the_middle_of_lines
|
||||||
|
write_inputrc <<~LINES
|
||||||
|
"\\C-a": ed_force_submit
|
||||||
|
LINES
|
||||||
|
start_terminal(5, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.')
|
||||||
|
write("def hoge\nend")
|
||||||
|
write("\C-p\C-a")
|
||||||
|
assert_screen(<<~EOC)
|
||||||
|
Multiline REPL.
|
||||||
|
prompt> def hoge
|
||||||
prompt> end
|
prompt> end
|
||||||
=> :hoge
|
=> :hoge
|
||||||
prompt>
|
prompt>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user