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

ruby-changes:70902

From: aycabta <ko1@a...>
Date: Sun, 16 Jan 2022 22:09:46 +0900 (JST)
Subject: [ruby-changes:70902] f94a2adf6a (master): [ruby/reline] Clear dialog when adding new line to end of buffer

https://git.ruby-lang.org/ruby.git/commit/?id=f94a2adf6a

From f94a2adf6a45e93d12c63a9b4ef3e21d9b7e5063 Mon Sep 17 00:00:00 2001
From: aycabta <aycabta@g...>
Date: Wed, 5 Jan 2022 21:18:59 +0900
Subject: [ruby/reline] Clear dialog when adding new line to end of buffer

https://github.com/ruby/reline/commit/7d38454327
---
 lib/reline/line_editor.rb                   |  5 +++++
 test/reline/yamatanooroti/test_rendering.rb | 17 +++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb
index dc0dcc6bbca..295af526fe9 100644
--- a/lib/reline/line_editor.rb
+++ b/lib/reline/line_editor.rb
@@ -466,6 +466,11 @@ class Reline::LineEditor https://github.com/ruby/ruby/blob/trunk/lib/reline/line_editor.rb#L466
     new_highest_in_this = calculate_height_by_width(prompt_width + calculate_width(@line.nil? ? '' : @line))
     rendered = false
     if @add_newline_to_end_of_buffer
+      @dialogs.each do |dialog|
+        clear_each_dialog(dialog)
+        dialog.contents = nil
+        dialog.trap_key = nil
+      end
       rerender_added_newline(prompt, prompt_width)
       @add_newline_to_end_of_buffer = false
     else
diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb
index a1aab6bfee6..bb0ac4e8606 100644
--- a/test/reline/yamatanooroti/test_rendering.rb
+++ b/test/reline/yamatanooroti/test_rendering.rb
@@ -1271,6 +1271,23 @@ begin https://github.com/ruby/ruby/blob/trunk/test/reline/yamatanooroti/test_rendering.rb#L1271
       EOC
     end
 
+    def test_clear_dialog_when_adding_new_line_to_end_of_buffer
+      start_terminal(10, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --autocomplete}, startup_message: 'Multiline REPL.')
+      write("class A\n  def a\n    3\n  end\nend")
+      write("\n")
+      write("class S")
+      write("\n")
+      write("  3")
+      close
+      assert_screen(<<~'EOC')
+        prompt>   end
+        prompt> end
+        => :a
+        prompt> class S
+        prompt>   3
+      EOC
+    end
+
     def write_inputrc(content)
       File.open(@inputrc_file, 'w') do |f|
         f.write content
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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