summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2021-10-06 02:56:14 +0900
committergit <svn-admin@ruby-lang.org>2021-10-08 10:33:22 +0900
commit374b15a84a777701f61c7cc105f7db5af27cc9ff (patch)
tree92915c070cbcb4917f986f013734d83bf2b7f479
parenta2f55679f0baed3ad99321032734f7e81e4137bc (diff)
[ruby/reline] Cut off the excess on narrow screen
https://github.com/ruby/reline/commit/972cc993ca
-rw-r--r--lib/reline/line_editor.rb4
-rw-r--r--test/reline/yamatanooroti/test_rendering.rb26
2 files changed, 30 insertions, 0 deletions
diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb
index b5bf0d1530..292a161a85 100644
--- a/lib/reline/line_editor.rb
+++ b/lib/reline/line_editor.rb
@@ -709,6 +709,10 @@ class Reline::LineEditor
end
Reline::IOGate.hide_cursor
dialog.width += @block_elem_width if dialog.scrollbar_pos
+ if dialog.column < 0
+ dialog.column = 0
+ dialog.width = @screen_size.last
+ end
reset_dialog(dialog, old_dialog)
move_cursor_down(dialog.vertical_offset)
Reline::IOGate.move_cursor_column(dialog.column)
diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb
index 0bcd70700c..78128a3fcf 100644
--- a/test/reline/yamatanooroti/test_rendering.rb
+++ b/test/reline/yamatanooroti/test_rendering.rb
@@ -1072,6 +1072,32 @@ begin
EOC
end
+ def test_dialog_narrower_than_screen
+ start_terminal(20, 11, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --autocomplete-long}, startup_message: 'Multiline REPL.')
+ write('S' + "\C-i" * 3)
+ close
+ assert_screen(<<~'EOC')
+ Multiline R
+ EPL.
+ prompt> Sym
+ String
+ Struct █
+ Symbol █
+ StopIterat█
+ SystemCall█
+ SystemExit█
+ SystemStac█
+ ScriptErro█
+ SyntaxErro█
+ Signal █
+ SizedQueue█
+ Set
+ SecureRand
+ Socket
+ StringIO
+ EOC
+ end
+
def test_rerender_argument_prompt_after_pasting
start_terminal(20, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.')
write('abcdef')