diff options
author | aycabta <aycabta@gmail.com> | 2019-09-23 17:26:38 +0900 |
---|---|---|
committer | aycabta <aycabta@gmail.com> | 2019-09-23 17:27:01 +0900 |
commit | 934507472c92ccada3f30be183fea5066427efda (patch) | |
tree | d7c4961d2bedca5a0ac3517dc1061ff4542b1148 | |
parent | 142efba93e91209a7f336863974d4c84a969e2a3 (diff) | |
download | ruby-934507472c92ccada3f30be183fea5066427efda.tar.gz |
Retrieve key-buffer that was supposed to lose
-rw-r--r-- | lib/reline/ansi.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/reline/ansi.rb b/lib/reline/ansi.rb index 9d9f79f7b5..b12dc2f6d3 100644 --- a/lib/reline/ansi.rb +++ b/lib/reline/ansi.rb @@ -38,6 +38,15 @@ class Reline::ANSI @@buf.unshift(c) end + def self.retrieve_keybuffer + result = select([@@input], [], [], 0.1) + return if result.nil? + str = @@input.read_nonblock(1024) + str.bytes.each do |c| + @@buf.push(c) + end + end + def self.get_screen_size @@input.winsize rescue Errno::ENOTTY @@ -112,6 +121,7 @@ class Reline::ANSI end def self.prep + retrieve_keybuffer int_handle = Signal.trap('INT', 'IGNORE') otio = `stty -g`.chomp setting = ' -echo -icrnl cbreak' |