summaryrefslogtreecommitdiff
path: root/lib/reline/general_io.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/reline/general_io.rb')
-rw-r--r--lib/reline/general_io.rb45
1 files changed, 31 insertions, 14 deletions
diff --git a/lib/reline/general_io.rb b/lib/reline/general_io.rb
index 8c8e22d2e6..d52151ad3c 100644
--- a/lib/reline/general_io.rb
+++ b/lib/reline/general_io.rb
@@ -1,12 +1,25 @@
-require 'timeout'
+require 'io/wait'
class Reline::GeneralIO
- def self.reset
+ RESET_COLOR = '' # Do not send color reset sequence
+
+ def self.reset(encoding: nil)
@@pasting = false
+ if encoding
+ @@encoding = encoding
+ elsif defined?(@@encoding)
+ remove_class_variable(:@@encoding)
+ end
end
def self.encoding
- RUBY_PLATFORM =~ /mswin|mingw/ ? Encoding::UTF_8 : Encoding::default_external
+ if defined?(@@encoding)
+ @@encoding
+ elsif RUBY_PLATFORM =~ /mswin|mingw/
+ Encoding::UTF_8
+ else
+ Encoding::default_external
+ end
end
def self.win?
@@ -17,18 +30,24 @@ class Reline::GeneralIO
end
@@buf = []
+ @@input = STDIN
def self.input=(val)
@@input = val
end
- def self.getc
+ def self.with_raw_input
+ yield
+ end
+
+ def self.getc(_timeout_second)
unless @@buf.empty?
return @@buf.shift
end
c = nil
loop do
- result = select([@@input], [], [], 0.1)
+ Reline.core.line_editor.handle_signal
+ result = @@input.wait_readable(0.1)
next if result.nil?
c = @@input.read(1)
break
@@ -41,13 +60,19 @@ class Reline::GeneralIO
end
def self.get_screen_size
- [1, 1]
+ [24, 80]
end
def self.cursor_pos
Reline::CursorPos.new(1, 1)
end
+ def self.hide_cursor
+ end
+
+ def self.show_cursor
+ end
+
def self.move_cursor_column(val)
end
@@ -78,14 +103,6 @@ class Reline::GeneralIO
@@pasting
end
- def self.start_pasting
- @@pasting = true
- end
-
- def self.finish_pasting
- @@pasting = false
- end
-
def self.prep
end