aboutsummaryrefslogtreecommitdiff
path: root/src/client/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/mod.rs')
-rw-r--r--src/client/mod.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/client/mod.rs b/src/client/mod.rs
index fd92d188..b153dd93 100644
--- a/src/client/mod.rs
+++ b/src/client/mod.rs
@@ -1442,6 +1442,9 @@ async fn run_client_loop(
) {
state.request_repaint();
}
+ if crate::raw_input::events_require_host_terminal_appearance_query(&events) {
+ query_host_terminal_appearance();
+ }
if crate::raw_input::events_require_host_terminal_theme_query(&events) {
query_host_terminal_theme();
}
@@ -2281,6 +2284,17 @@ fn resize_poll_loop(
// Logging
// ---------------------------------------------------------------------------
+#[cfg(any(not(windows), test))]
+fn query_host_terminal_appearance() {
+ let _ = write_host_terminal_appearance_query(io::stdout());
+}
+
+#[cfg(any(not(windows), test))]
+fn write_host_terminal_appearance_query(mut writer: impl io::Write) -> io::Result<()> {
+ writer.write_all(crate::terminal_theme::HOST_COLOR_SCHEME_QUERY_SEQUENCE.as_bytes())?;
+ writer.flush()
+}
+
/// Initialize logging for the client process.
fn query_host_terminal_theme() {
let _ = write_host_terminal_theme_query(io::stdout());
@@ -2673,6 +2687,13 @@ mod tests {
}
#[test]
+ fn write_host_terminal_appearance_query_emits_mode_2031_query() {
+ let mut output = Vec::new();
+ write_host_terminal_appearance_query(&mut output).unwrap();
+ assert_eq!(output, b"\x1b[?996n");
+ }
+
+ #[test]
fn write_host_terminal_theme_query_emits_osc_queries() {
let mut output = Vec::new();
write_host_terminal_theme_query(&mut output).unwrap();
@@ -2680,6 +2701,10 @@ mod tests {
output,
crate::terminal_theme::host_terminal_theme_query_sequence().as_bytes()
);
+ assert!(!output
+ .windows(crate::terminal_theme::HOST_COLOR_SCHEME_QUERY_SEQUENCE.len())
+ .any(|window| window
+ == crate::terminal_theme::HOST_COLOR_SCHEME_QUERY_SEQUENCE.as_bytes()));
}
#[test]