mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +02:00

(https://github.com/ruby/reline/pull/614)
* Re-architecture LineEditor's internal state and rendering
* Fix test related to LineEditor re-architecture
* Bump to 0.5.0.pre.1
* Hide cursor only when updating screen. Frequent hide&show makes cursor flickering.
* Simplify rerender call from reline.rb
* Simplify handle_cleared
It only need to clear screen. line_editor.rerender will be called later.
* Add description of updating pasting_state inserts continuous_insertion_buffer
* Use meaningful block parameter
Co-authored-by: Stan Lo <stan001212@gmail.com>
* Fix use of `@cursor_y`
Fix bug updating `@cursor_y`. Do not use `@cursor_y` while updating dialog because it is not current cursor position but cursor position at last rendered time.
* Remove useless instance_variable_set in test
These instance variables are already removed from LineEditor
* Always initialize instance variables to avoid ruby 2.7 warning, remove unused instance variable
* Call update_dialogs from reline.rb before first render
* Combine state representing rendered screen information into `@rendered_screen`
* Rename editor_cursor_ to wrapped_cursor
It represents cursor position of word wrapped whole content
* Remove unused code, tweak, add comment
---------
3fa376217d
Co-authored-by: Stan Lo <stan001212@gmail.com>
40 lines
911 B
Ruby
40 lines
911 B
Ruby
require_relative 'helper'
|
|
|
|
class Reline::MacroTest < Reline::TestCase
|
|
def setup
|
|
Reline.send(:test_mode)
|
|
@config = Reline::Config.new
|
|
@encoding = Reline.core.encoding
|
|
@line_editor = Reline::LineEditor.new(@config, @encoding)
|
|
@output = @line_editor.output = File.open(IO::NULL, "w")
|
|
end
|
|
|
|
def teardown
|
|
@output.close
|
|
Reline.test_reset
|
|
end
|
|
|
|
def input_key(char, combined_char = char, with_meta = false)
|
|
@line_editor.input_key(Reline::Key.new(char, combined_char, with_meta))
|
|
end
|
|
|
|
def input(str)
|
|
str.each_byte {|c| input_key(c)}
|
|
end
|
|
|
|
def test_simple_input
|
|
input('abc')
|
|
assert_equal 'abc', @line_editor.line
|
|
end
|
|
|
|
def test_alias
|
|
class << @line_editor
|
|
alias delete_char ed_delete_prev_char
|
|
end
|
|
input('abc')
|
|
assert_nothing_raised(ArgumentError) {
|
|
input_key(:delete_char)
|
|
}
|
|
assert_equal 'ab', @line_editor.line
|
|
end
|
|
end
|