summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Lo <[email protected]>2023-07-25 10:39:53 +0100
committergit <[email protected]>2023-07-25 09:39:58 +0000
commit377639053dfdf8037a1b3d3211071c6af1916e35 (patch)
tree6828c65a78cc568b371ccd327044b74f4ba71527
parentcf1f2e9d06a2fb699d911492425c4090e02b3eb1 (diff)
[ruby/reline] Avoid using CSI # S for scroll down
(https://github.com/ruby/reline/pull/577) https://github.com/ruby/reline/commit/b67ee4e791
-rw-r--r--lib/reline/ansi.rb5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/reline/ansi.rb b/lib/reline/ansi.rb
index 1570a99c55..d1a0e5b138 100644
--- a/lib/reline/ansi.rb
+++ b/lib/reline/ansi.rb
@@ -335,9 +335,12 @@ class Reline::ANSI
@@output.write "\e[K"
end
+ # This only works when the cursor is at the bottom of the scroll range
+ # For more details, see https://github.com/ruby/reline/pull/577#issuecomment-1646679623
def self.scroll_down(x)
return if x.zero?
- @@output.write "\e[#{x}S"
+ # We use `\n` instead of CSI + S because CSI + S would cause https://github.com/ruby/reline/issues/576
+ @@output.write "\n" * x
end
def self.clear_screen