ruby-changes:63944
From: aycabta <ko1@a...>
Date: Sat, 5 Dec 2020 03:09:43 +0900 (JST)
Subject: [ruby-changes:63944] 7624f52757 (master): [ruby/reline] Forced newline insertion is not just cursor moving
https://git.ruby-lang.org/ruby.git/commit/?id=7624f52757 From 7624f5275713c3dd2d551058355d9a4544c2ef53 Mon Sep 17 00:00:00 2001 From: aycabta <aycabta@g...> Date: Sat, 21 Nov 2020 13:08:53 +0900 Subject: [ruby/reline] Forced newline insertion is not just cursor moving https://github.com/ruby/reline/commit/0e30a49d03 diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb index 868e31a..044b7c3 100644 --- a/lib/reline/line_editor.rb +++ b/lib/reline/line_editor.rb @@ -197,7 +197,7 @@ class Reline::LineEditor https://github.com/ruby/ruby/blob/trunk/lib/reline/line_editor.rb#L197 @searching_prompt = nil @first_char = true @add_newline_to_end_of_buffer = false - @just_cursor_moving = false + @just_cursor_moving = nil @cached_prompt_list = nil @prompt_cache_time = nil @eof = false @@ -246,6 +246,7 @@ class Reline::LineEditor https://github.com/ruby/ruby/blob/trunk/lib/reline/line_editor.rb#L246 @buffer_of_lines.insert(@line_index + 1, String.new(next_line, encoding: @encoding)) @previous_line_index = @line_index @line_index += 1 + @just_cursor_moving = false end private def calculate_height_by_width(width) @@ -923,6 +924,7 @@ class Reline::LineEditor https://github.com/ruby/ruby/blob/trunk/lib/reline/line_editor.rb#L924 end def input_key(key) + @just_cursor_moving = nil if key.char.nil? if @first_char @line = nil @@ -958,12 +960,16 @@ class Reline::LineEditor https://github.com/ruby/ruby/blob/trunk/lib/reline/line_editor.rb#L960 unless completion_occurs @completion_state = CompletionState::NORMAL end - unless Reline::IOGate.in_pasting? + if not Reline::IOGate.in_pasting? and @just_cursor_moving.nil? if @previous_line_index and @buffer_of_lines[@previous_line_index] == @line @just_cursor_moving = true elsif @previous_line_index.nil? and @buffer_of_lines[@line_index] == @line @just_cursor_moving = true + else + @just_cursor_moving = false end + else + @just_cursor_moving = false end if @is_multiline and @auto_indent_proc and not simplified_rendering? process_auto_indent diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb index a2af807..b82e30a 100644 --- a/test/reline/yamatanooroti/test_rendering.rb +++ b/test/reline/yamatanooroti/test_rendering.rb @@ -373,6 +373,19 @@ begin https://github.com/ruby/ruby/blob/trunk/test/reline/yamatanooroti/test_rendering.rb#L373 EOC end + def test_foced_newline_insertion + start_terminal(10, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.') + #write("def a\nend\C-p\C-e\e\C-m 3") + write("def a\nend\C-p\C-e\e\x0D") + close + assert_screen(<<~EOC) + Multiline REPL. + prompt> def a + prompt> + prompt> end + EOC + end + def test_multiline_incremental_search start_terminal(6, 25, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.') write("def a\n 8\nend\ndef b\n 3\nend\C-s8") -- cgit v0.10.2 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/