From c52bd22bb105eb638ce88289053d7d6d5e3c87d0 Mon Sep 17 00:00:00 2001 From: tompng Date: Fri, 3 Jan 2025 02:53:56 +0900 Subject: [PATCH 1/2] Fix set_pasting_state bug with bracketed paste --- lib/reline.rb | 3 +-- test/reline/yamatanooroti/test_rendering.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/reline.rb b/lib/reline.rb index 52e1e399c3..5d1fcbf8e8 100644 --- a/lib/reline.rb +++ b/lib/reline.rb @@ -341,7 +341,6 @@ def readline(prompt = '', add_hist = false) line_editor.set_signal_handlers loop do read_io(config.keyseq_timeout) { |inputs| - line_editor.set_pasting_state(io_gate.in_pasting?) inputs.each do |key| case key.method_symbol when :bracketed_paste_start @@ -350,6 +349,7 @@ def readline(prompt = '', add_hist = false) when :quoted_insert, :ed_quoted_insert key = Reline::Key.new(io_gate.read_single_char(config.keyseq_timeout), :insert_raw_char) end + line_editor.set_pasting_state(io_gate.in_pasting?) line_editor.update(key) end } @@ -357,7 +357,6 @@ def readline(prompt = '', add_hist = false) line_editor.render_finished break else - line_editor.set_pasting_state(io_gate.in_pasting?) line_editor.rerender end end diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb index 2952d3bfc8..782ad71eb9 100644 --- a/test/reline/yamatanooroti/test_rendering.rb +++ b/test/reline/yamatanooroti/test_rendering.rb @@ -550,6 +550,14 @@ def test_bracketed_paste prompt> 3 prompt> end EOC + write("\e[200~.tap do\r\t4\r\t5\rend\e[201~") + assert_screen(<<~EOC) + prompt> 3 + prompt> end.tap do + prompt> 4 + prompt> 5 + prompt> end + EOC close end From 3365941ccba359549fbe688e9c5a95ab22cd6035 Mon Sep 17 00:00:00 2001 From: tompng Date: Fri, 3 Jan 2025 02:54:51 +0900 Subject: [PATCH 2/2] Fix rendered cursor_y caching in case of rendering the screen without scroll_into_view --- lib/reline/line_editor.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb index e308fbe193..da6867fd8d 100644 --- a/lib/reline/line_editor.rb +++ b/lib/reline/line_editor.rb @@ -542,6 +542,7 @@ def render Reline::IOGate.show_cursor end Reline::IOGate.move_cursor_column new_cursor_x + new_cursor_y = new_cursor_y.clamp(0, screen_height - 1) Reline::IOGate.move_cursor_down new_cursor_y - cursor_y @rendered_screen.cursor_y = new_cursor_y ensure