diff options
Diffstat (limited to 'src/client/mod.rs')
| -rw-r--r-- | src/client/mod.rs | 25 |
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] |
