From cd7166cc8fff8d7316634a665975d4f4e21dde61 Mon Sep 17 00:00:00 2001 From: tomoya ishida Date: Thu, 6 Jul 2023 01:33:42 +0900 Subject: [PATCH] [ruby/reline] Fix wrong byte_pointer passed to auto_indent_proc (https://github.com/ruby/reline/pull/562) https://github.com/ruby/reline/commit/4348354604 --- lib/reline/line_editor.rb | 2 +- test/reline/yamatanooroti/test_rendering.rb | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb index 36375eee81..404a595f9c 100644 --- a/lib/reline/line_editor.rb +++ b/lib/reline/line_editor.rb @@ -1645,7 +1645,7 @@ class Reline::LineEditor @line = ' ' * new_indent + @line.lstrip new_indent = nil - result = @auto_indent_proc.(new_lines[0..-2], @line_index - 1, (new_lines[-2].size + 1), false) + result = @auto_indent_proc.(new_lines[0..-2], @line_index - 1, (new_lines[@line_index - 1].bytesize + 1), false) if result new_indent = result end diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb index d2053b3d85..b1a7bf7cdc 100644 --- a/test/reline/yamatanooroti/test_rendering.rb +++ b/test/reline/yamatanooroti/test_rendering.rb @@ -731,6 +731,24 @@ begin EOC end + def test_auto_indent_multibyte_insert_line + start_terminal(10, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --auto-indent}, startup_message: 'Multiline REPL.') + write "if true\n" + write "あいうえお\n" + 4.times { write "\C-b\C-b\C-b\C-b\e\r" } + close + assert_screen(<<~EOC) + Multiline REPL. + prompt> if true + prompt> あ + prompt> い + prompt> う + prompt> え + prompt> お + prompt> + EOC + end + def test_newline_after_wrong_indent start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --auto-indent}, startup_message: 'Multiline REPL.') write "if 1\n aa"