diff options
| author | sigoden <sigoden@gmail.com> | 2023-03-10 07:44:34 +0800 |
|---|---|---|
| committer | sigoden <sigoden@gmail.com> | 2023-03-10 07:55:53 +0800 |
| commit | 54e6edbf2121c780c3bf297ec5e30d80f68e3763 (patch) | |
| tree | 24ef2a4be0b1547496c328c147ea59558bc59dfc /src/render/repl.rs | |
| parent | 865fb49af90a96c6fbed146c6a7ad55f516c1ec3 (diff) | |
| download | aichat-54e6edbf2121c780c3bf297ec5e30d80f68e3763.tar.gz | |
chore: recovery cursor in case of stream abort
Diffstat (limited to 'src/render/repl.rs')
| -rw-r--r-- | src/render/repl.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/render/repl.rs b/src/render/repl.rs index 80fc9a7..d7ccbc1 100644 --- a/src/render/repl.rs +++ b/src/render/repl.rs @@ -70,11 +70,16 @@ fn repl_render_stream_inner( } ReplyStreamEvent::Done => { let output = markdown_render.render_line_stateless(&buffer); - queue!(writer, style::Print(output.trim_end()), style::Print("\n"))?; - if cfg!(windows) { - queue!(writer, style::Print("\n"))?; + let trimed_output = output.trim_end(); + if !trimed_output.is_empty() { + queue!(writer, style::Print(output.trim_end()))?; + writer.flush()?; } + + let (_, row) = cursor::position()?; + queue!(writer, cursor::MoveTo(0, row), style::Print("\n\n"))?; writer.flush()?; + break; } } |
