summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2021-08-22 01:47:07 +0900
committeraycabta <aycabta@gmail.com>2021-08-29 20:30:33 +0900
commitd768eeeddbcc59166e7669471e6b3672eeed230c (patch)
tree9e1a8679ba4b039b9ea94a880d2f7191f5b77321
parent02a61fe33f422d7e041531cac1a5a45a14ca5752 (diff)
[ruby/reline] Support hide/show cursor on Windows
https://github.com/ruby/reline/commit/0c870813bd
-rw-r--r--lib/reline/windows.rb11
1 files 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)