mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/reline] Show all lines higher than the screen when finished
On Unix-like OSes, logs prior to the screen are not editable. When the code
is higher than the screen, the code is only shown on the screen until input
is finished, but when it is finished, all lines are outputted.
8cd9132a39
This commit is contained in:
parent
03523fdafb
commit
bd0f8b36fd
1 changed files with 13 additions and 0 deletions
|
@ -388,6 +388,19 @@ class Reline::LineEditor
|
|||
@cleared = false
|
||||
return
|
||||
end
|
||||
if @is_multiline and finished? and @scroll_partial_screen
|
||||
# Re-output all code higher than the screen when finished.
|
||||
Reline::IOGate.move_cursor_up(@first_line_started_from + @started_from - @scroll_partial_screen)
|
||||
Reline::IOGate.move_cursor_column(0)
|
||||
@scroll_partial_screen = nil
|
||||
prompt, prompt_width, prompt_list = check_multiline_prompt(whole_lines, prompt)
|
||||
modify_lines(whole_lines).each_with_index do |line, index|
|
||||
@output.write "#{prompt_list ? prompt_list[index] : prompt}#{line}\n"
|
||||
Reline::IOGate.erase_after_cursor
|
||||
end
|
||||
@output.flush
|
||||
return
|
||||
end
|
||||
new_highest_in_this = calculate_height_by_width(prompt_width + calculate_width(@line.nil? ? '' : @line))
|
||||
# FIXME: end of logical line sometimes breaks
|
||||
rendered = false
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue