[ruby/reline] Fix rendering bug of nomultiline prompt
(https://github.com/ruby/reline/pull/730) Fix bug of `print('a'*10); Reline.readline('>')` wrong rendering https://github.com/ruby/reline/commit/c0469a12b9
This commit is contained in:
parent
94b87084a6
commit
17a4c7cfcf
@ -331,7 +331,7 @@ module Reline
|
||||
end
|
||||
end
|
||||
|
||||
line_editor.print_nomultiline_prompt(prompt)
|
||||
line_editor.print_nomultiline_prompt
|
||||
line_editor.update_dialogs
|
||||
line_editor.rerender
|
||||
|
||||
|
@ -490,13 +490,9 @@ class Reline::LineEditor
|
||||
@output.puts lines.map { |l| "#{l}\r\n" }.join
|
||||
end
|
||||
|
||||
def print_nomultiline_prompt(prompt)
|
||||
return unless prompt && !@is_multiline
|
||||
|
||||
def print_nomultiline_prompt
|
||||
# Readline's test `TestRelineAsReadline#test_readline` requires first output to be prompt, not cursor reset escape sequence.
|
||||
@rendered_screen.lines = [[[0, Reline::Unicode.calculate_width(prompt, true), prompt]]]
|
||||
@rendered_screen.cursor_y = 0
|
||||
@output.write prompt
|
||||
@output.write @prompt if @prompt && !@is_multiline
|
||||
end
|
||||
|
||||
def render_differential
|
||||
|
@ -1823,6 +1823,24 @@ begin
|
||||
EOC
|
||||
end
|
||||
|
||||
def test_print_before_readline
|
||||
code = <<~RUBY
|
||||
puts 'Multiline REPL.'
|
||||
2.times do
|
||||
print 'a' * 10
|
||||
Reline.readline '>'
|
||||
end
|
||||
RUBY
|
||||
start_terminal(6, 30, ['ruby', "-I#{@pwd}/lib", '-rreline', '-e', code], startup_message: 'Multiline REPL.')
|
||||
write "x\n"
|
||||
close
|
||||
assert_screen(<<~EOC)
|
||||
Multiline REPL.
|
||||
>x
|
||||
>
|
||||
EOC
|
||||
end
|
||||
|
||||
def test_thread_safe
|
||||
start_terminal(6, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --auto-indent}, startup_message: 'Multiline REPL.')
|
||||
write("[Thread.new{Reline.readline'>'},Thread.new{Reline.readmultiline('>'){true}}].map(&:join).size\n")
|
||||
|
Loading…
x
Reference in New Issue
Block a user