summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/reline/ansi.rb10
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'