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
6565 used : 0 ,
6666 context,
6767 } ;
68- r. prompt ( ) ;
68+ r. prompt ( true ) ;
6969 r
7070 }
7171
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+ }
7476 if self . depth != 0 {
7577 let mut depth = 1 ;
7678 while depth <= self . depth {
@@ -156,7 +158,19 @@ where
156158 } else if self . used < self . buffer . len ( ) {
157159 self . buffer [ self . used ] = input;
158160 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+ }
160174 Outcome :: NeedMore
161175 } else {
162176 writeln ! ( self . context, "Buffer overflow!" ) . unwrap ( ) ;
@@ -165,7 +179,7 @@ where
165179 match outcome {
166180 Outcome :: CommandProcessed => {
167181 self . used = 0 ;
168- self . prompt ( ) ;
182+ self . prompt ( true ) ;
169183 }
170184 Outcome :: NeedMore => { }
171185 }
You can’t perform that action at this time.
0 commit comments