summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortomoya ishida <tomoyapenguin@gmail.com>2023-05-28 00:07:25 +0900
committergit <svn-admin@ruby-lang.org>2023-05-27 15:07:29 +0000
commitcf0b9e0db04925fc7bb31366b4dc053beab0bd57 (patch)
tree1839e7911cdb25ade6212810d26835e1f8a5bbf3
parent5d137a7f77ce1b4ca3514565de41fe8a2cf611a4 (diff)
[ruby/reline] Fix scrolldown condition in dialog rendering
(https://github.com/ruby/reline/pull/541) https://github.com/ruby/reline/commit/ad6faada3f
-rw-r--r--lib/reline/line_editor.rb2
-rw-r--r--test/reline/yamatanooroti/test_rendering.rb19
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb
index 2e84ca4d0c..e8b83e2a6e 100644
--- a/lib/reline/line_editor.rb
+++ b/lib/reline/line_editor.rb
@@ -724,7 +724,7 @@ class Reline::LineEditor
ymax = ymax.clamp(screen_y_range.begin, screen_y_range.end)
dialog_y = @first_line_started_from + @started_from
cursor_y = dialog_y
- if @highest_in_all < ymax
+ if @highest_in_all <= ymax
scroll_down(ymax - cursor_y)
move_cursor_up(ymax - cursor_y)
end
diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb
index 1a0f8767ee..d2053b3d85 100644
--- a/test/reline/yamatanooroti/test_rendering.rb
+++ b/test/reline/yamatanooroti/test_rendering.rb
@@ -957,6 +957,25 @@ begin
EOC
end
+ def test_dialog_scroll_pushup_condition
+ start_terminal(10, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --autocomplete}, startup_message: 'Multiline REPL.')
+ write("\n" * 10)
+ write("if 1\n sSt\nend")
+ write("\C-p\C-h\C-e")
+ assert_screen(<<~'EOC')
+ prompt>
+ prompt>
+ prompt>
+ prompt>
+ prompt>
+ prompt>
+ prompt> if 1
+ prompt> St
+ prompt> enString
+ Struct
+ EOC
+ end
+
def test_simple_dialog_with_scroll_screen
start_terminal(5, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog simple}, startup_message: 'Multiline REPL.')
write("if 1\n 2\n 3\n 4\n 5\n 6")