aboutsummaryrefslogtreecommitdiffstats
path: root/src/screen.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-03-09 01:58:27 -0500
committerJesse Luehrs <doy@tozt.net>2021-03-09 01:58:27 -0500
commitf8555701c71847a953bc21c602b6a070b757a107 (patch)
tree57238e2402d9e5e0ac171f0c297a88e40d8092a5 /src/screen.rs
parentc9b957bcdfcd1cedbd8a1f3c5e16d1e4382b54c2 (diff)
downloadvt100-rust-f8555701c71847a953bc21c602b6a070b757a107.tar.gz
vt100-rust-f8555701c71847a953bc21c602b6a070b757a107.zip
add Screen::state_formatted and Screen::state_diff
Diffstat (limited to 'src/screen.rs')
-rw-r--r--src/screen.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/screen.rs b/src/screen.rs
index 9affeef..300e05d 100644
--- a/src/screen.rs
+++ b/src/screen.rs
@@ -226,6 +226,32 @@ impl Screen {
}
}
+ /// Return escape codes sufficient to reproduce the entire contents of the
+ /// current terminal state. This is a convenience wrapper around
+ /// `contents_formatted`, `input_mode_formatted`, and `title_formatted`.
+ #[must_use]
+ pub fn state_formatted(&self) -> Vec<u8> {
+ let mut contents = vec![];
+ self.write_contents_formatted(&mut contents);
+ self.write_input_mode_formatted(&mut contents);
+ self.write_title_formatted(&mut contents);
+ contents
+ }
+
+ /// Return escape codes sufficient to turn the terminal state of the
+ /// screen `prev` into the current terminal state. This is a convenience
+ /// wrapper around `contents_diff`, `input_mode_diff`, `title_diff`, and
+ /// `bells_diff`.
+ #[must_use]
+ pub fn state_diff(&self, prev: &Self) -> Vec<u8> {
+ let mut contents = vec![];
+ self.write_contents_diff(&mut contents, prev);
+ self.write_input_mode_diff(&mut contents, prev);
+ self.write_title_diff(&mut contents, prev);
+ self.write_bells_diff(&mut contents, prev);
+ contents
+ }
+
/// Returns the formatted visible contents of the terminal.
///
/// Formatting information will be included inline as terminal escape