From d768eeeddbcc59166e7669471e6b3672eeed230c Mon Sep 17 00:00:00 2001 From: aycabta Date: Sun, 22 Aug 2021 01:47:07 +0900 Subject: [PATCH] [ruby/reline] Support hide/show cursor on Windows https://github.com/ruby/reline/commit/0c870813bd --- lib/reline/windows.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/reline/windows.rb b/lib/reline/windows.rb index ae87b38706..9e542aa337 100644 --- a/lib/reline/windows.rb +++ b/lib/reline/windows.rb @@ -133,6 +133,7 @@ class Reline::Windows @@GetFileType = Win32API.new('kernel32', 'GetFileType', ['L'], 'L') @@GetFileInformationByHandleEx = Win32API.new('kernel32', 'GetFileInformationByHandleEx', ['L', 'I', 'P', 'L'], 'I') @@FillConsoleOutputAttribute = Win32API.new('kernel32', 'FillConsoleOutputAttribute', ['L', 'L', 'L', 'L', 'P'], 'L') + @@SetConsoleCursorInfo = Win32API.new('kernel32', 'SetConsoleCursorInfo', ['L', 'P'], 'L') @@GetConsoleMode = Win32API.new('kernel32', 'GetConsoleMode', ['L', 'P'], 'L') @@SetConsoleMode = Win32API.new('kernel32', 'SetConsoleMode', ['L', 'L'], 'L') @@ -344,11 +345,17 @@ class Reline::Windows end def self.hide_cursor - # ignored + size = 100 + visible = 0 # 0 means false + cursor_info = [size, visible].pack('Li') + @@SetConsoleCursorInfo.call(@@hConsoleHandle, cursor_info) end def self.show_cursor - # ignored + size = 100 + visible = 1 # 1 means true + cursor_info = [size, visible].pack('Li') + @@SetConsoleCursorInfo.call(@@hConsoleHandle, cursor_info) end def self.set_winch_handler(&handler)