From 2c17441816026d92a68d371f6f2c0466fcd1b92b Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 7 Mar 2021 17:33:10 -0500 Subject: also set the appropriate terminal modes --- examples/tmux.rs | 12 ++++++++++-- src/async.rs | 13 ++++++++++--- src/blocking.rs | 13 ++++++++++--- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/examples/tmux.rs b/examples/tmux.rs index e6cd21e..1bd2c3f 100644 --- a/examples/tmux.rs +++ b/examples/tmux.rs @@ -255,6 +255,8 @@ impl State { tm.clear(); let new_screen = window.vt.lock_arc().await.screen().clone(); tm.write(&new_screen.contents_formatted()); + tm.write(&new_screen.input_mode_formatted()); + tm.write(&new_screen.title_formatted()); self.draw_notifications(tm, &new_screen); tm.refresh().await.unwrap(); } @@ -263,9 +265,15 @@ impl State { let window = self.current_window(); let old_screen = window.screen.clone(); let new_screen = window.vt.lock_arc().await.screen().clone(); - let diff = new_screen.contents_diff(&old_screen); + let contents_diff = new_screen.contents_diff(&old_screen); + let input_mode_diff = new_screen.input_mode_diff(&old_screen); + let title_diff = new_screen.title_diff(&old_screen); + let bells_diff = new_screen.bells_diff(&old_screen); self.clear_notifications(tm, &old_screen); - tm.write(&diff); + tm.write(&contents_diff); + tm.write(&input_mode_diff); + tm.write(&title_diff); + tm.write(&bells_diff); self.draw_notifications(tm, &new_screen); tm.refresh().await.unwrap(); self.current_window_mut().screen = new_screen; diff --git a/src/async.rs b/src/async.rs index 5861443..92a4f30 100644 --- a/src/async.rs +++ b/src/async.rs @@ -50,9 +50,16 @@ impl Textmode { } pub async fn refresh(&mut self) -> std::io::Result<()> { - let diff = self.next().screen().contents_diff(self.cur().screen()); - self.write_stdout(&diff).await?; - self.cur_mut().process(&diff); + let diffs = &[ + self.next().screen().contents_diff(self.cur().screen()), + self.next().screen().input_mode_diff(self.cur().screen()), + self.next().screen().title_diff(self.cur().screen()), + self.next().screen().bells_diff(self.cur().screen()), + ]; + for diff in diffs { + self.write_stdout(&diff).await?; + self.cur_mut().process(&diff); + } Ok(()) } diff --git a/src/blocking.rs b/src/blocking.rs index fc608ad..538f051 100644 --- a/src/blocking.rs +++ b/src/blocking.rs @@ -44,9 +44,16 @@ impl Textmode { } pub fn refresh(&mut self) -> std::io::Result<()> { - let diff = self.next().screen().contents_diff(self.cur().screen()); - self.write_stdout(&diff)?; - self.cur_mut().process(&diff); + let diffs = &[ + self.next().screen().contents_diff(self.cur().screen()), + self.next().screen().input_mode_diff(self.cur().screen()), + self.next().screen().title_diff(self.cur().screen()), + self.next().screen().bells_diff(self.cur().screen()), + ]; + for diff in diffs { + self.write_stdout(&diff)?; + self.cur_mut().process(&diff); + } Ok(()) } -- cgit v1.2.3-54-g00ecf