aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-03-07 17:33:10 -0500
committerJesse Luehrs <doy@tozt.net>2021-03-07 17:46:02 -0500
commit2c17441816026d92a68d371f6f2c0466fcd1b92b (patch)
tree564b1f357f882aea83105d392769812426f33dbe
parent341fed83d687c5285dd074d15356e68982822903 (diff)
downloadtextmode-2c17441816026d92a68d371f6f2c0466fcd1b92b.tar.gz
textmode-2c17441816026d92a68d371f6f2c0466fcd1b92b.zip
also set the appropriate terminal modes
-rw-r--r--examples/tmux.rs12
-rw-r--r--src/async.rs13
-rw-r--r--src/blocking.rs13
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(())
}