diff options
author | aycabta <aycabta@gmail.com> | 2021-02-26 10:32:34 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-26 10:32:34 +0900 |
commit | 46825a7462e3106599c034bd77dcd3646a181539 (patch) | |
tree | 7db115b34669e3e2cadc51e28e92319ac0ee849b /lib/reline/windows.rb | |
parent | 551f1236a43ad014522d120dea1f136052879c0a (diff) |
Backport lib/reline, and lib/irb for 3.0.1 3rd (#4228)
* [ruby/irb] Suppress error when File::ALT_SEPARATOR is nil
https://github.com/ruby/irb/commit/96accf3b95
* [ruby/irb] Suppress colorize on Windows tests
https://github.com/ruby/irb/commit/5be9354cf9
* [ruby/irb] The command "irb_info" should show RUBY_PLATFORM
https://github.com/ruby/irb/commit/39d1cd874f
* [ruby/irb] Fix inverse separator condition
https://github.com/ruby/irb/commit/33f933196f
* [ruby/reline] Return 1 when char width not found
This fixes ruby/reline#261.
https://github.com/ruby/reline/commit/3cf1213014
* [ruby/reline] Avoid tripping over nil prompt
https://github.com/ruby/reline/commit/d4d9d3e3d4
* [ruby/reline] Move script files for yamatanooroti tests
https://github.com/ruby/reline/commit/03031b885d
* [ruby/reline] Add a test for suppressing crash when dynamic prompt returns empty
ref. https://github.com/ruby/reline/pull/262
https://github.com/ruby/reline/commit/b98bc3c329
* [ruby/reline] We still need support new and legacy behavior.
Revert "Support for change in Windows-specific behavior at eol"
This reverts commit cad4de6ee841b43f3f0e441626f9415c3eda0f82.
https://github.com/ruby/reline/commit/646587fc2c
* [ruby/reline] check ENABLE_VIRTUAL_TERMINAL_PROCESSING flag and switch eof processing
https://github.com/ruby/reline/commit/3535676689
* [ruby/reline] Use UTF-8 only for width calc, rest uses original encoding
I confirmed that libvterm supports only which are UTF-8, US ASCII, UK, and
DEC graphics by reading source code, so can't test this patch by
yamatanoorogi gem through vterm gem for now.
This fixes ruby/irb#190.
https://github.com/ruby/reline/commit/44596c0cc7
* [ruby/reline] fix Reline::Windows.getconsolemode buffer
use double quotes to properly convert the \000 escape sequence.
https://github.com/ruby/reline/commit/236dfe5683
* [ruby/irb] Version 1.3.4
https://github.com/ruby/irb/commit/ab9852ccc5
* [ruby/reline] Version 0.2.4
https://github.com/ruby/reline/commit/462f971bd3
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-authored-by: Eamonn Webster <eamonn.webster@gmail.com>
Co-authored-by: Yoshinao Muramatu <ysno@ac.auone-net.jp>
Co-authored-by: cremno <cremno@mail.ru>
Diffstat (limited to 'lib/reline/windows.rb')
-rw-r--r-- | lib/reline/windows.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/reline/windows.rb b/lib/reline/windows.rb index 4f5fcb74bc..6edc68e780 100644 --- a/lib/reline/windows.rb +++ b/lib/reline/windows.rb @@ -9,6 +9,10 @@ class Reline::Windows true end + def self.win_legacy_console? + @@legacy_console + end + RAW_KEYSTROKE_CONFIG = { [224, 72] => :ed_prev_history, # ↑ [224, 80] => :ed_next_history, # ↓ @@ -94,6 +98,26 @@ class Reline::Windows @@GetFileInformationByHandleEx = Win32API.new('kernel32', 'GetFileInformationByHandleEx', ['L', 'I', 'P', 'L'], 'I') @@FillConsoleOutputAttribute = Win32API.new('kernel32', 'FillConsoleOutputAttribute', ['L', 'L', 'L', 'L', 'P'], 'L') + @@GetConsoleMode = Win32API.new('kernel32', 'GetConsoleMode', ['L', 'P'], 'L') + @@SetConsoleMode = Win32API.new('kernel32', 'SetConsoleMode', ['L', 'L'], 'L') + ENABLE_VIRTUAL_TERMINAL_PROCESSING = 4 + + private_class_method def self.getconsolemode + mode = "\000\000\000\000" + @@GetConsoleMode.call(@@hConsoleHandle, mode) + mode.unpack1('L') + end + + private_class_method def self.setconsolemode(mode) + @@SetConsoleMode.call(@@hConsoleHandle, mode) + end + + @@legacy_console = (getconsolemode() & ENABLE_VIRTUAL_TERMINAL_PROCESSING == 0) + #if @@legacy_console + # setconsolemode(getconsolemode() | ENABLE_VIRTUAL_TERMINAL_PROCESSING) + # @@legacy_console = (getconsolemode() & ENABLE_VIRTUAL_TERMINAL_PROCESSING == 0) + #end + @@input_buf = [] @@output_buf = [] |