зеркало из https://github.com/github/ruby.git
[ruby/reline] Support longer than screen height on Windows
https://github.com/ruby/reline/commit/2a97ca9362
This commit is contained in:
Родитель
0158ba7e51
Коммит
cdf2790aa0
|
@ -233,7 +233,9 @@ class Reline::Windows
|
|||
|
||||
def self.move_cursor_up(val)
|
||||
if val > 0
|
||||
@@SetConsoleCursorPosition.call(@@hConsoleHandle, (cursor_pos.y - val) * 65536 + cursor_pos.x)
|
||||
y = cursor_pos.y - val
|
||||
y = 0 if y < 0
|
||||
@@SetConsoleCursorPosition.call(@@hConsoleHandle, y * 65536 + cursor_pos.x)
|
||||
elsif val < 0
|
||||
move_cursor_down(-val)
|
||||
end
|
||||
|
@ -241,6 +243,9 @@ class Reline::Windows
|
|||
|
||||
def self.move_cursor_down(val)
|
||||
if val > 0
|
||||
screen_height = get_screen_size.first
|
||||
y = cursor_pos.y + val
|
||||
y = screen_height - 1 if y > (screen_height - 1)
|
||||
@@SetConsoleCursorPosition.call(@@hConsoleHandle, (cursor_pos.y + val) * 65536 + cursor_pos.x)
|
||||
elsif val < 0
|
||||
move_cursor_up(-val)
|
||||
|
@ -257,6 +262,8 @@ class Reline::Windows
|
|||
|
||||
def self.scroll_down(val)
|
||||
return if val.zero?
|
||||
screen_height = get_screen_size.first
|
||||
val = screen_height - 1 if val > (screen_height - 1)
|
||||
scroll_rectangle = [0, val, get_screen_size.last, get_screen_size.first].pack('s4')
|
||||
destination_origin = 0 # y * 65536 + x
|
||||
fill = [' '.ord, 0].pack('SS')
|
||||
|
|
|
@ -426,6 +426,7 @@ begin
|
|||
end
|
||||
|
||||
def test_enable_bracketed_paste
|
||||
omit if Reline::IOGate.win?
|
||||
write_inputrc <<~LINES
|
||||
set enable-bracketed-paste on
|
||||
LINES
|
||||
|
|
Загрузка…
Ссылка в новой задаче