diff --git a/Cargo.lock b/Cargo.lock index 779c03156..a31595487 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1912,7 +1912,7 @@ dependencies = [ [[package]] name = "nu" -version = "0.1.3" +version = "0.2.0" dependencies = [ "adhoc_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "ansi_term 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/src/plugins/textview.rs b/src/plugins/textview.rs index 5a9a011df..99f7cf0b2 100644 --- a/src/plugins/textview.rs +++ b/src/plugins/textview.rs @@ -151,13 +151,12 @@ fn scroll_view_lines_if_needed(draw_commands: Vec, use_color_buffer // Only scroll if needed if max_bottom_line > height as usize { - loop { - #[cfg(feature = "rawkey")] - { + #[cfg(feature = "rawkey")] + { + let rawkey = rawkey::RawKey::new(); + loop { use std::{thread, time::Duration}; - let rawkey = rawkey::RawKey::new(); - if rawkey.is_pressed(rawkey::KeyCode::Escape) { break; } @@ -194,12 +193,24 @@ fn scroll_view_lines_if_needed(draw_commands: Vec, use_color_buffer paint_textview(&draw_commands, starting_row, use_color_buffer); } thread::sleep(Duration::from_millis(50)); + let new_size = terminal.terminal_size(); + if size != new_size { + size = new_size; + let _ = terminal.clear(crossterm::ClearType::All); + max_bottom_line = + paint_textview(&draw_commands, starting_row, use_color_buffer); + } } + let _ = cursor.show(); - #[cfg(not(feature = "rawkey"))] - { - use crossterm::{InputEvent, KeyEvent}; + #[allow(unused)] + let screen = RawScreen::disable_raw_mode(); + } + #[cfg(not(feature = "rawkey"))] + { + use crossterm::{InputEvent, KeyEvent}; + loop { if let Some(ref mut sync_stdin) = sync_stdin { if let Some(ev) = sync_stdin.next() { match ev { @@ -255,25 +266,23 @@ fn scroll_view_lines_if_needed(draw_commands: Vec, use_color_buffer } } } - } - let new_size = terminal.terminal_size(); - if size != new_size { - size = new_size; - let _ = terminal.clear(crossterm::ClearType::All); - max_bottom_line = - paint_textview(&draw_commands, starting_row, use_color_buffer); + let new_size = terminal.terminal_size(); + if size != new_size { + size = new_size; + let _ = terminal.clear(crossterm::ClearType::All); + max_bottom_line = + paint_textview(&draw_commands, starting_row, use_color_buffer); + } } + let _ = cursor.show(); + + #[allow(unused)] + let screen = RawScreen::disable_raw_mode(); } } } - let cursor = cursor(); - let _ = cursor.show(); - - #[allow(unused)] - let screen = RawScreen::disable_raw_mode(); - println!(""); }