[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]