@@ -56,6 +56,14 @@ def initialize(config, encoding)
56
56
reset_variables ( encoding : encoding )
57
57
end
58
58
59
+ def simplified_rendering?
60
+ if finished?
61
+ false
62
+ else
63
+ not @rerender_all and not finished? and Reline ::IOGate . in_pasting?
64
+ end
65
+ end
66
+
59
67
private def check_multiline_prompt ( buffer , prompt )
60
68
if @vi_arg
61
69
prompt = "(arg: #{ @vi_arg } ) "
@@ -66,6 +74,7 @@ def initialize(config, encoding)
66
74
else
67
75
prompt = @prompt
68
76
end
77
+ return [ prompt , calculate_width ( prompt , true ) , [ prompt ] * buffer . size ] if simplified_rendering?
69
78
if @prompt_proc
70
79
prompt_list = @prompt_proc . ( buffer )
71
80
prompt_list . map! { prompt } if @vi_arg or @searching_prompt
@@ -297,6 +306,11 @@ def multiline_off
297
306
@byte_pointer = new_byte_pointer
298
307
end
299
308
309
+ def rerender_all
310
+ @rerender_all = true
311
+ rerender
312
+ end
313
+
300
314
def rerender
301
315
return if @line . nil?
302
316
if @menu_info
@@ -523,6 +537,7 @@ def rerender
523
537
end
524
538
end
525
539
Reline ::IOGate . erase_after_cursor
540
+ Reline ::IOGate . move_cursor_column ( 0 )
526
541
if with_control
527
542
# Just after rendring, so the cursor is on the last line.
528
543
if finished?
@@ -537,7 +552,7 @@ def rerender
537
552
end
538
553
539
554
private def modify_lines ( before )
540
- return before if before . nil? || before . empty?
555
+ return before if before . nil? || before . empty? || simplified_rendering?
541
556
542
557
if after = @output_modifier_proc &.call ( "#{ before . join ( "\n " ) } \n " , complete : finished? )
543
558
after . lines ( "\n " ) . map { |l | l . chomp ( '' ) }
@@ -836,7 +851,7 @@ def input_key(key)
836
851
unless completion_occurs
837
852
@completion_state = CompletionState ::NORMAL
838
853
end
839
- if @is_multiline and @auto_indent_proc
854
+ if @is_multiline and @auto_indent_proc and not simplified_rendering?
840
855
process_auto_indent
841
856
end
842
857
end
@@ -1038,6 +1053,7 @@ def finished?
1038
1053
1039
1054
def finish
1040
1055
@finished = true
1056
+ @rerender_all = true
1041
1057
@config . reset
1042
1058
end
1043
1059
0 commit comments