File tree Expand file tree Collapse file tree 1 file changed +19
-5
lines changed Expand file tree Collapse file tree 1 file changed +19
-5
lines changed Original file line number Diff line number Diff line change @@ -65,12 +65,14 @@ where
65
65
used : 0 ,
66
66
context,
67
67
} ;
68
- r. prompt ( ) ;
68
+ r. prompt ( true ) ;
69
69
r
70
70
}
71
71
72
- pub fn prompt ( & mut self ) {
73
- write ! ( self . context, "\n " ) . unwrap ( ) ;
72
+ pub fn prompt ( & mut self , newline : bool ) {
73
+ if newline {
74
+ write ! ( self . context, "\n " ) . unwrap ( ) ;
75
+ }
74
76
if self . depth != 0 {
75
77
let mut depth = 1 ;
76
78
while depth <= self . depth {
@@ -156,7 +158,19 @@ where
156
158
} else if self . used < self . buffer . len ( ) {
157
159
self . buffer [ self . used ] = input;
158
160
self . used += 1 ;
159
- write ! ( self . context, "{}" , input as char ) . unwrap ( ) ;
161
+
162
+ let valid = if let Ok ( _) = core:: str:: from_utf8 ( & self . buffer [ 0 ..self . used ] ) {
163
+ true
164
+ } else {
165
+ false
166
+ } ;
167
+ if valid {
168
+ write ! ( self . context, "\r " ) . unwrap ( ) ;
169
+ self . prompt ( false ) ;
170
+ }
171
+ if let Ok ( s) = core:: str:: from_utf8 ( & self . buffer [ 0 ..self . used ] ) {
172
+ write ! ( self . context, "{}" , s) . unwrap ( ) ;
173
+ }
160
174
Outcome :: NeedMore
161
175
} else {
162
176
writeln ! ( self . context, "Buffer overflow!" ) . unwrap ( ) ;
@@ -165,7 +179,7 @@ where
165
179
match outcome {
166
180
Outcome :: CommandProcessed => {
167
181
self . used = 0 ;
168
- self . prompt ( ) ;
182
+ self . prompt ( true ) ;
169
183
}
170
184
Outcome :: NeedMore => { }
171
185
}
You can’t perform that action at this time.
0 commit comments