diff options
author | aycabta <aycabta@gmail.com> | 2019-05-13 02:26:31 +0900 |
---|---|---|
committer | aycabta <aycabta@gmail.com> | 2019-05-13 02:26:31 +0900 |
commit | 5837290af1216eaadbee3204e40ef16931da2fdb (patch) | |
tree | 6f3a5886d5b0755415aa09df0d8cfaa9516eeb1b /lib/reline.rb | |
parent | c137f015ab2283e885168f983e36e4bd2c1aa29e (diff) | |
download | ruby-5837290af1216eaadbee3204e40ef16931da2fdb.tar.gz |
Implement Reline's class methods for compatibility
- insert_text
- redisplay
- line_buffer
- point
- point=
- vi_editing_mode
- emacs_editing_mode
- vi_editing_mode?
- emacs_editing_mode?
- get_screen_size
Diffstat (limited to 'lib/reline.rb')
-rw-r--r-- | lib/reline.rb | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/lib/reline.rb b/lib/reline.rb index 66375faabd..bf8f9c3f58 100644 --- a/lib/reline.rb +++ b/lib/reline.rb @@ -84,8 +84,29 @@ module Reline @@dig_perfect_match_proc = p end + def self.insert_text(text) + @@line_editor&.insert_text(text) + self + end + + def self.redisplay + @@line_editor&.rerender + end + + def self.line_buffer + @@line_editor&.line + end + + def self.point + @@line_editor ? @@line_editor.byte_pointer : 0 + end + + def self.point=(val) + @@line_editor.byte_pointer = val + end + def self.delete_text(start = nil, length = nil) - raise NotImplementedError + @@line_editor&.delete_text(start, length) end def self.input=(val) @@ -103,6 +124,28 @@ module Reline @@output = val end + def self.vi_editing_mode + @@config.editing_mode = :vi_insert + nil + end + + def self.emacs_editing_mode + @@config.editing_mode = :emacs + nil + end + + def self.vi_editing_mode? + @@config.editing_mode_is?(:vi_insert, :vi_command) + end + + def self.emacs_editing_mode? + @@config.editing_mode_is?(:emacs) + end + + def self.get_screen_size + Reline::IO.get_screen_size + end + def retrieve_completion_block(line, byte_pointer) break_regexp = /[#{Regexp.escape(@@basic_word_break_characters)}]/ before_pointer = line.byteslice(0, byte_pointer) @@ -131,6 +174,7 @@ module Reline Reline::HISTORY << whole_buffer end + @@line_editor.reset_line if @@line_editor.whole_buffer.nil? whole_buffer end @@ -143,6 +187,7 @@ module Reline Reline::HISTORY << line.chomp end + @@line_editor.reset_line if @@line_editor.line.nil? line end @@ -189,7 +234,8 @@ module Reline key_stroke = Reline::KeyStroke.new(config) begin - while c = Reline::IO.getc + loop do + c = Reline::IO.getc key_stroke.input_to!(c)&.then { |inputs| inputs.each { |c| @@line_editor.input_key(c) |