aboutsummaryrefslogtreecommitdiffstats
path: root/lib/reline/windows.rb
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-04-23 21:55:29 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-04-23 21:55:29 +0900
commitf4f66bd11c65882b86e0acf4d58f15fb596f25cf (patch)
tree34e6e50d15802ad6d8aab4f0d9d747efcd7c149d /lib/reline/windows.rb
parent89271d4a3733bc5e70e9c56b4bd12f277e699c42 (diff)
downloadruby-f4f66bd11c65882b86e0acf4d58f15fb596f25cf.tar.gz
Revert "IRB is improved with Reline and RDoc, take 2"
Accidentally merged when 89271d4a3733bc5e70e9c56b4bd12f277e699c42 "Adjusted indents".
Diffstat (limited to 'lib/reline/windows.rb')
-rw-r--r--lib/reline/windows.rb132
1 files changed, 0 insertions, 132 deletions
diff --git a/lib/reline/windows.rb b/lib/reline/windows.rb
deleted file mode 100644
index f41ec17489..0000000000
--- a/lib/reline/windows.rb
+++ /dev/null
@@ -1,132 +0,0 @@
-module Reline
- VK_LMENU = 0xA4
- STD_OUTPUT_HANDLE = -11
- @@getwch = Win32API.new('msvcrt', '_getwch', [], 'I')
- @@kbhit = Win32API.new('msvcrt', '_kbhit', [], 'I')
- @@GetKeyState = Win32API.new('user32', 'GetKeyState', ['L'], 'L')
- @@GetConsoleScreenBufferInfo = Win32API.new('kernel32', 'GetConsoleScreenBufferInfo', ['L', 'P'], 'L')
- @@SetConsoleCursorPosition = Win32API.new('kernel32', 'SetConsoleCursorPosition', ['L', 'L'], 'L')
- @@GetStdHandle = Win32API.new('kernel32', 'GetStdHandle', ['L'], 'L')
- @@FillConsoleOutputCharacter = Win32API.new('kernel32', 'FillConsoleOutputCharacter', ['L', 'L', 'L', 'L', 'P'], 'L')
- @@ScrollConsoleScreenBuffer = Win32API.new('kernel32', 'ScrollConsoleScreenBuffer', ['L', 'P', 'P', 'L', 'P'], 'L')
- @@hConsoleHandle = @@GetStdHandle.call(STD_OUTPUT_HANDLE)
- @@buf = []
-
- def getwch
- while @@kbhit.call == 0
- sleep(0.001)
- end
- result = []
- until @@kbhit.call == 0
- ret = @@getwch.call
- begin
- result.concat(ret.chr(Encoding::UTF_8).encode(Encoding.default_external).bytes)
- rescue Encoding::UndefinedConversionError
- result << ret
- result << @@getwch.call if ret == 224
- end
- end
- result
- end
-
- def getc
- unless @@buf.empty?
- return @@buf.shift
- end
- input = getwch
- alt = (@@GetKeyState.call(VK_LMENU) & 0x80) != 0
- if input.size > 1
- @@buf.concat(input)
- else # single byte
- case input[0]
- when 0x00
- getwch
- alt = false
- input = getwch
- @@buf.concat(input)
- when 0xE0
- @@buf.concat(input)
- input = getwch
- @@buf.concat(input)
- when 0x03
- @@buf.concat(input)
- else
- @@buf.concat(input)
- end
- end
- if alt
- "\e".ord
- else
- @@buf.shift
- end
- end
-
- def self.get_screen_size
- csbi = 0.chr * 24
- @@GetConsoleScreenBufferInfo.call(@@hConsoleHandle, csbi)
- csbi[0, 4].unpack('SS')
- end
-
- def self.cursor_pos
- csbi = 0.chr * 24
- @@GetConsoleScreenBufferInfo.call(@@hConsoleHandle, csbi)
- x = csbi[4, 2].unpack('s*').first
- y = csbi[6, 4].unpack('s*').first
- CursorPos.new(x, y)
- end
-
- def self.move_cursor_column(val)
- @@SetConsoleCursorPosition.call(@@hConsoleHandle, cursor_pos.y * 65536 + val)
- end
-
- def self.move_cursor_up(val)
- if val > 0
- @@SetConsoleCursorPosition.call(@@hConsoleHandle, (cursor_pos.y - val) * 65536 + cursor_pos.x)
- elsif val < 0
- move_cursor_down(-val)
- end
- end
-
- def self.move_cursor_down(val)
- if val > 0
- @@SetConsoleCursorPosition.call(@@hConsoleHandle, (cursor_pos.y + val) * 65536 + cursor_pos.x)
- elsif val < 0
- move_cursor_up(-val)
- end
- end
-
- def self.erase_after_cursor
- csbi = 0.chr * 24
- @@GetConsoleScreenBufferInfo.call(@@hConsoleHandle, csbi)
- cursor = csbi[4, 4].unpack('L').first
- written = 0.chr * 4
- @@FillConsoleOutputCharacter.call(@@hConsoleHandle, 0x20, get_screen_size.first - cursor_pos.x, cursor, written)
- end
-
- def self.scroll_down(val)
- return if val.zero?
- 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')
- @@ScrollConsoleScreenBuffer.call(@@hConsoleHandle, scroll_rectangle, nil, destination_origin, fill)
- end
-
- def self.clear_screen
- # TODO: Use FillConsoleOutputCharacter and FillConsoleOutputAttribute
- print "\e[2J"
- print "\e[1;1H"
- end
-
- def self.set_screen_size(rows, columns)
- raise NotImplementedError
- end
-
- def prep
- # do nothing
- nil
- end
-
- def deprep(otio)
- # do nothing
- end
-end