Set allow_escape_code for prompt

This commit is contained in:
aycabta 2019-06-14 08:45:35 +09:00
parent f80771f0a9
commit d0e5564140

View file

@ -279,7 +279,7 @@ class Reline::LineEditor
prompt_width = calculate_width(prompt) prompt_width = calculate_width(prompt)
else else
prompt = @prompt prompt = @prompt
prompt_width = calculate_width(prompt) prompt_width = calculate_width(prompt, true)
end end
if @cleared if @cleared
Reline::IOGate.clear_screen Reline::IOGate.clear_screen
@ -289,7 +289,7 @@ class Reline::LineEditor
if @prompt_proc if @prompt_proc
prompt_list = @prompt_proc.(whole_lines, 0) prompt_list = @prompt_proc.(whole_lines, 0)
prompt = prompt_list[@line_index] prompt = prompt_list[@line_index]
prompt_width = calculate_width(prompt) prompt_width = calculate_width(prompt, true)
end end
modify_lines(whole_lines).each_with_index do |line, index| modify_lines(whole_lines).each_with_index do |line, index|
if @prompt_proc if @prompt_proc
@ -320,7 +320,7 @@ class Reline::LineEditor
if @prompt_proc if @prompt_proc
prompt_list = @prompt_proc.(new_lines, 0) prompt_list = @prompt_proc.(new_lines, 0)
prompt = prompt_list[@line_index] prompt = prompt_list[@line_index]
prompt_width = calculate_width(prompt) prompt_width = calculate_width(prompt, true)
end end
all_height = new_lines.inject(0) { |result, line| all_height = new_lines.inject(0) { |result, line|
result + calculate_height_by_width(prompt_width + calculate_width(line)) # TODO prompt_list result + calculate_height_by_width(prompt_width + calculate_width(line)) # TODO prompt_list
@ -345,7 +345,7 @@ class Reline::LineEditor
modify_lines(new_lines).each_with_index do |line, index| modify_lines(new_lines).each_with_index do |line, index|
if @prompt_proc if @prompt_proc
prompt = prompt_list[index] prompt = prompt_list[index]
prompt_width = calculate_width(prompt) prompt_width = calculate_width(prompt, true)
end end
height = render_partial(prompt, prompt_width, line, false) height = render_partial(prompt, prompt_width, line, false)
if index < (new_lines.size - 1) if index < (new_lines.size - 1)
@ -370,7 +370,7 @@ class Reline::LineEditor
end end
if @prompt_proc if @prompt_proc
prompt = prompt_list[@line_index] prompt = prompt_list[@line_index]
prompt_width = calculate_width(prompt) prompt_width = calculate_width(prompt, true)
end end
move_cursor_down(@first_line_started_from) move_cursor_down(@first_line_started_from)
calculate_nearest_cursor calculate_nearest_cursor
@ -389,10 +389,10 @@ class Reline::LineEditor
if @prompt_proc if @prompt_proc
prompt_list = @prompt_proc.(new_buffer, 0) prompt_list = @prompt_proc.(new_buffer, 0)
prompt = prompt_list[@line_index] prompt = prompt_list[@line_index]
prompt_width = calculate_width(prompt) prompt_width = calculate_width(prompt, true)
end end
new_buffer.each_with_index do |line, index| new_buffer.each_with_index do |line, index|
prompt_width = calculate_width(prompt_list[index]) if @prompt_proc prompt_width = calculate_width(prompt_list[index], true) if @prompt_proc
width = prompt_width + calculate_width(line) width = prompt_width + calculate_width(line)
height = calculate_height_by_width(width) height = calculate_height_by_width(width)
back += height back += height
@ -412,7 +412,7 @@ class Reline::LineEditor
modify_lines(new_buffer).each_with_index do |line, index| modify_lines(new_buffer).each_with_index do |line, index|
if @prompt_proc if @prompt_proc
prompt = prompt_list[index] prompt = prompt_list[index]
prompt_width = calculate_width(prompt) prompt_width = calculate_width(prompt, true)
end end
render_partial(prompt, prompt_width, line, false) render_partial(prompt, prompt_width, line, false)
if index < (new_buffer.size - 1) if index < (new_buffer.size - 1)
@ -422,7 +422,7 @@ class Reline::LineEditor
move_cursor_up(back - 1) move_cursor_up(back - 1)
if @prompt_proc if @prompt_proc
prompt = prompt_list[@line_index] prompt = prompt_list[@line_index]
prompt_width = calculate_width(prompt) prompt_width = calculate_width(prompt, true)
end end
@highest_in_all = back @highest_in_all = back
@highest_in_this = calculate_height_by_width(prompt_width + @cursor_max) @highest_in_this = calculate_height_by_width(prompt_width + @cursor_max)
@ -446,7 +446,7 @@ class Reline::LineEditor
if @prompt_proc if @prompt_proc
prompt_list = @prompt_proc.(whole_lines, 0) prompt_list = @prompt_proc.(whole_lines, 0)
prompt = prompt_list[@line_index] prompt = prompt_list[@line_index]
prompt_width = calculate_width(prompt) prompt_width = calculate_width(prompt, true)
end end
if finished? if finished?
# Always rerender on finish because output_modifier_proc may return a different output. # Always rerender on finish because output_modifier_proc may return a different output.